<?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>200149</bug_id>
          
          <creation_ts>2019-07-25 18:48:53 -0700</creation_ts>
          <short_desc>Add crash diagnostics for debugging unexpected zapped cells.</short_desc>
          <delta_ts>2019-08-02 11:17:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>200214</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1556000</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-07-25 18:48:53 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556001</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-07-25 18:58:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/53570112&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556005</commentid>
    <comment_count>2</comment_count>
      <attachid>374932</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-07-25 19:17:41 -0700</bug_when>
    <thetext>Created attachment 374932
proposed patch.

Let&apos;s get some testing on the EWS first.  I&apos;m still in the process of perf testing the patch locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556018</commentid>
    <comment_count>3</comment_count>
      <attachid>374938</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-07-25 21:38:59 -0700</bug_when>
    <thetext>Created attachment 374938
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556038</commentid>
    <comment_count>4</comment_count>
      <attachid>374944</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-07-25 23:50:16 -0700</bug_when>
    <thetext>Created attachment 374944
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556178</commentid>
    <comment_count>5</comment_count>
      <attachid>374944</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2019-07-26 11:46:50 -0700</bug_when>
    <thetext>Comment on attachment 374944
proposed patch.

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

r=me with some nits

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        SlotVisitor::visitChildren().  If a zapped cell is detected, we we&apos;ll crash with

grammar *we well*.  May *we will* or *we&apos;ll*.

&gt; Source/JavaScriptCore/heap/HeapCell.h:51
&gt; +    // the rest of the cell header bits in tact for crash analysis uses.

*intact*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556184</commentid>
    <comment_count>6</comment_count>
      <attachid>374944</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-07-26 11:53:04 -0700</bug_when>
    <thetext>Comment on attachment 374944
proposed patch.

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

&gt; Source/JavaScriptCore/heap/HeapCell.h:55
&gt; +        uint32_t* cellWords = reinterpret_cast_ptr&lt;uint32_t*&gt;(this);

bitwise_cast

&gt; Source/JavaScriptCore/heap/HeapCell.h:60
&gt; +    bool isZapped() const { return !*reinterpret_cast_ptr&lt;const uint32_t*&gt;(this); }

ditto

&gt; Source/JavaScriptCore/heap/SlotVisitor.cpp:293
&gt; +#if PLATFORM(MAC)

why not X86_64?

&gt; Source/JavaScriptCore/heap/SlotVisitor.cpp:852
&gt; +NEVER_INLINE void SlotVisitor::reportZappedCellAndCrash(JSCell* cell)
&gt; +{
&gt; +    MarkedBlock::Handle* foundBlock = nullptr;
&gt; +    uint32_t* cellWords = reinterpret_cast_ptr&lt;uint32_t*&gt;(this);
&gt; +
&gt; +    uintptr_t cellAddress = bitwise_cast&lt;uintptr_t&gt;(cell);
&gt; +    uintptr_t headerWord = cellWords[1];
&gt; +    uintptr_t zapReason = cellWords[2];
&gt; +    unsigned subspaceHash = 0;
&gt; +    size_t cellSize = 0;
&gt; +
&gt; +    m_heap.objectSpace().forEachBlock([&amp;] (MarkedBlock::Handle* block) {
&gt; +        if (block-&gt;contains(cell)) {
&gt; +            foundBlock = block;
&gt; +            return IterationStatus::Done;
&gt; +        }
&gt; +        return IterationStatus::Continue;
&gt; +    });
&gt; +
&gt; +    if (foundBlock) {
&gt; +        subspaceHash = bmalloc::stringHash(foundBlock-&gt;subspace()-&gt;name());
&gt; +        cellSize = foundBlock-&gt;cellSize();
&gt; +    }
&gt; +
&gt; +    RELEASE_ASSERT(!cell-&gt;isZapped(), cellAddress, headerWord, zapReason, subspaceHash, cellSize);
&gt; +}

adding all of this worries more than just crashing. Do we not think the crash alone is good enough? At least in the appendToMarkedStack case.

If you do keep it, please:
- use bitwise_cast
- Use WTF&apos;s string hash instead of bmalloc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556187</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-07-26 11:53:47 -0700</bug_when>
    <thetext>I didn&apos;t mean to clear Michael&apos;s r+, though I do have some hesitation. Last time we added a bunch of debugging code, we ended up in a worse place than just crashing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556190</commentid>
    <comment_count>8</comment_count>
      <attachid>374944</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-07-26 11:57:28 -0700</bug_when>
    <thetext>Comment on attachment 374944
proposed patch.

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

&gt; Source/JavaScriptCore/heap/SlotVisitor.cpp:851
&gt; +    RELEASE_ASSERT(!cell-&gt;isZapped(), cellAddress, headerWord, zapReason, subspaceHash, cellSize);

please make this CRASH_WITH_INFO instead. Just to avoid any chance someone raced and allocated over this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556265</commentid>
    <comment_count>9</comment_count>
      <attachid>374997</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-07-26 16:22:32 -0700</bug_when>
    <thetext>Created attachment 374997
proposed patch.

I&apos;ve applied the feedback from Michael and Saam, and added some additional tooling to dump subspace hashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556267</commentid>
    <comment_count>10</comment_count>
      <attachid>374997</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-07-26 16:25:48 -0700</bug_when>
    <thetext>Comment on attachment 374997
proposed patch.

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

&gt; Source/JavaScriptCore/heap/SlotVisitor.cpp:849
&gt; +#endif // PLATFORM(MAC)

I&apos;ll fix this comment before landing.  Should be CPU(X86_64).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556278</commentid>
    <comment_count>11</comment_count>
      <attachid>374997</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-07-26 16:39:46 -0700</bug_when>
    <thetext>Comment on attachment 374997
proposed patch.

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

r=me with a nit.

&gt; Source/JavaScriptCore/heap/SlotVisitor.cpp:834
&gt; +    m_heap.objectSpace().forEachBlock([&amp;] (MarkedBlock::Handle* block) {

This is potentially dangerous because m_blocks can be added by the main thread while the concurrent marker is working.
But maybe, it does not matter much since the crash trace itself offers much more profitable information already.
Can you add a comment about it with FIXME or invent something safer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556287</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-07-26 16:53:33 -0700</bug_when>
    <thetext>Thanks for the reviews.  Preliminary perf testing results looks promising i.e. no significant change.  I&apos;m going to go ahead and land this.  We can roll it out later if we find that it does regress performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556308</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-07-26 17:44:31 -0700</bug_when>
    <thetext>Landed in r247886: &lt;http://trac.webkit.org/r247886&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556464</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-07-28 18:32:45 -0700</bug_when>
    <thetext>[975/2287] Building CXX object Source/...sources/UnifiedSource-ee8a7a7a-7.cpp.o
In file included from DerivedSources/JavaScriptCore/unified-sources/UnifiedSource-ee8a7a7a-7.cpp:2:
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/heap/SlotVisitor.cpp: In member function ‘void JSC::SlotVisitor::reportZappedCellAndCrash(JSC::JSCell*)’:
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/heap/SlotVisitor.cpp:828:15: warning: unused variable ‘cellAddress’ [-Wunused-variable]
  828 |     uintptr_t cellAddress = bitwise_cast&lt;uintptr_t&gt;(cell);
      |               ^~~~~~~~~~~
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/heap/SlotVisitor.cpp:829:15: warning: unused variable ‘headerWord’ [-Wunused-variable]
  829 |     uintptr_t headerWord = cellWords[1];
      |               ^~~~~~~~~~
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/heap/SlotVisitor.cpp:830:15: warning: unused variable ‘zapReason’ [-Wunused-variable]
  830 |     uintptr_t zapReason = cellWords[2];
      |               ^~~~~~~~~
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/heap/SlotVisitor.cpp:831:14: warning: variable ‘subspaceHash’ set but not used [-Wunused-but-set-variable]
  831 |     unsigned subspaceHash = 0;
      |              ^~~~~~~~~~~~
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/heap/SlotVisitor.cpp:832:12: warning: variable ‘cellSize’ set but not used [-Wunused-but-set-variable]
  832 |     size_t cellSize = 0;
      |            ^~~~~~~~

So this is kinda annoying to fix.

The obvious solution is to just use the UNUSED_VARIABLE() macro for each of these in SlotVisitor.cpp. But that&apos;s annoying because the variables are passed to CRASH_WITH_INFO(), so one would expect CRASH_WITH_INFO() to use them. It does for Clang and MSVCC, but not for the fallback GCC implementation. And writing a macro that passes the __VA_ARGS__ to UNUSED_VARIABLE() doesn&apos;t seem simple. But I think we could create a macro that calls a variadic function and just does nothing with its va_list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556485</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-28 21:28:39 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 200214</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556490</commentid>
    <comment_count>16</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-07-28 21:34:06 -0700</bug_when>
    <thetext>FYI, this patch has been rolled out in r247900: &lt;https://trac.webkit.org/changeset/247900&gt; because it regresses PLT5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556492</commentid>
    <comment_count>17</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-07-28 22:46:57 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #14)
&gt; The obvious solution is to just use the UNUSED_VARIABLE() macro for each of
&gt; these in SlotVisitor.cpp. But that&apos;s annoying because the variables are
&gt; passed to CRASH_WITH_INFO(), so one would expect CRASH_WITH_INFO() to use
&gt; them. It does for Clang and MSVCC, but not for the fallback GCC
&gt; implementation. And writing a macro that passes the __VA_ARGS__ to
&gt; UNUSED_VARIABLE() doesn&apos;t seem simple. But I think we could create a macro
&gt; that calls a variadic function and just does nothing with its va_list.

FWIW, there&apos;s `WTF_LAZY_FOR_EACH_TERM` in wtf/Forward.h. I believe you could use `WTF_LAZY_FOR_EACH_TERM(UNUSED_VARIABLE,  __VA_ARGS__)`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556538</commentid>
    <comment_count>18</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-07-29 04:19:30 -0700</bug_when>
    <thetext>That seems good, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556713</commentid>
    <comment_count>19</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-07-29 14:30:36 -0700</bug_when>
    <thetext>I&apos;ll fix the CRASH_WITH_INFO unused parameters issue separately in https://bugs.webkit.org/show_bug.cgi?id=200243.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557735</commentid>
    <comment_count>20</comment_count>
      <attachid>375343</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-08-01 14:15:29 -0700</bug_when>
    <thetext>Created attachment 375343
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557736</commentid>
    <comment_count>21</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-01 14:17:34 -0700</bug_when>
    <thetext>Attachment 375343 did not pass style-queue:


ERROR: Source/JavaScriptCore/assembler/CPU.cpp:74:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/JavaScriptCore/assembler/CPU.cpp:84:  Use nullptr instead of NULL.  [readability/null] [5]
Total errors found: 2 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557737</commentid>
    <comment_count>22</comment_count>
      <attachid>375343</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-01 14:20:08 -0700</bug_when>
    <thetext>Comment on attachment 375343
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557745</commentid>
    <comment_count>23</comment_count>
      <attachid>375346</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-08-01 14:28:59 -0700</bug_when>
    <thetext>Created attachment 375346
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557818</commentid>
    <comment_count>24</comment_count>
      <attachid>375346</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-01 18:06:38 -0700</bug_when>
    <thetext>Comment on attachment 375346
patch for landing.

Attachment 375346 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/12849056

New failing tests:
mozilla-tests.yaml/js1_5/Array/regress-101964.js.mozilla-ftl-eager-no-cjit-validate-phases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557827</commentid>
    <comment_count>25</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-08-01 18:59:03 -0700</bug_when>
    <thetext>(In reply to Build Bot from comment #24)
&gt; Comment on attachment 375346 [details]
&gt; patch for landing.
&gt; 
&gt; Attachment 375346 [details] did not pass jsc-ews (mac):
&gt; Output: https://webkit-queues.webkit.org/results/12849056
&gt; 
&gt; New failing tests:
&gt; mozilla-tests.yaml/js1_5/Array/regress-101964.js.mozilla-ftl-eager-no-cjit-
&gt; validate-phases

This is unrelated. I ran this test on my slowest MacBookAir, and it runs just fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557830</commentid>
    <comment_count>26</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-08-01 18:59:37 -0700</bug_when>
    <thetext>Landed in r248143: &lt;http://trac.webkit.org/r248143&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558000</commentid>
    <comment_count>27</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-08-02 11:17:53 -0700</bug_when>
    <thetext>+ Build fix in r248162: &lt;http://trac.webkit.org/r248162&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374932</attachid>
            <date>2019-07-25 19:17:41 -0700</date>
            <delta_ts>2019-07-25 21:38:59 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-200149.patch</filename>
            <type>text/plain</type>
            <size>10557</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ3ODUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBA
CisyMDE5LTA3LTI1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgY3Jhc2ggZGlhZ25vc3RpY3MgZm9yIGRlYnVnZ2luZyB1bmV4cGVjdGVkIHphcHBlZCBjZWxs
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDE0
OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTM1NzAxMTI+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgY2hlY2sgZm9yIHphcHBlZCBjZWxs
cyBpbiBTbG90VmlzaXRvcjo6YXBwZW5kVG9NYXJrU3RhY2soKSBhbmQKKyAgICAgICAgU2xvdFZp
c2l0b3I6OnZpc2l0Q2hpbGRyZW4oKS4gIElmIGEgemFwcGVkIGNlbGwgaXMgZGV0ZWN0ZWQsIHdl
IHdlJ2xsIGNyYXNoIHdpdGgKKyAgICAgICAgc29tZSBkaWFnbm9zdGljIGluZm8uCisKKyAgICAg
ICAgVG8gZmFjaWxpdGF0ZSB0aGlzLCB3ZSd2ZSBtYWRlIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoK
KyAgICAgICAgMS4gQ2hhbmdlZCBGcmVlQ2VsbCB0byBwcmVzZXJ2ZSB0aGUgMXN0IDggYnl0ZXMu
ICBUaGlzIGlzIGZpbmUgdG8gZG8gYmVjYXVzZSBhbGwKKyAgICAgICAgICAgY2VsbHMgYXJlIGF0
IGxlYXN0IDE2IGJ5dGVzIGxvbmcuCisgICAgICAgIDIuIENoYW5nZWQgSGVhcENlbGw6OnphcCgp
IHRvIG9ubHkgemFwIHRoZSBzdHJ1Y3R1cmVJRC4gIExlYXZlIHRoZSByZXN0IG9mIHRoZQorICAg
ICAgICAgICBjZWxsIGhlYWRlciBpbmZvIGludGFjdCAoaW5jbHVkaW5nIHRoZSBjZWxsIEpTVHlw
ZSkuCisgICAgICAgIDMuIENoYW5nZWQgSGVhcENlbGw6OnphcCgpIHRvIHJlY29yZCB0aGUgcmVh
c29uIGZvciB6YXBwaW5nIHRoZSBjZWxsLiAgV2Ugc3Rhc2gKKyAgICAgICAgICAgdGhlIHJlYXNv
biBpbW1lZGlhdGVseSBhZnRlciB0aGUgZmlyc3QgOCBieXRlcy4gIFRoaXMgaXMgdGhlIHNhbWUg
bG9jYXRpb24gYXMKKyAgICAgICAgICAgRnJlZUNlbGw6OnNjcmFtYmxlZE5leHQuICBIb3dldmVy
LCBzaW5jZSBhIGNlbGwgaXMgbm90IGV4cGVjdGVkIHRvIGJlIHphcHBlZAorICAgICAgICAgICBh
bmQgb24gdGhlIGZyZWUgbGlzdCBhdCB0aGUgc2FtZSB0aW1lLCBpdCBpcyBhbHNvIGZpbmUgdG8g
ZG8gdGhpcy4KKyAgICAgICAgNC4gQWRkZWQgYSBmZXcgdXRpbGl0eSBmdW5jdGlvbnMgdG8gTWFy
a2VkQmxvY2sgZm9yIGNoZWNraW5nIGlmIGEgY2VsbCBwb2ludHMKKyAgICAgICAgICAgaW50byB0
aGUgYmxvY2suCisKKyAgICAgICAgKiBoZWFwL0ZyZWVMaXN0Lmg6CisgICAgICAgIChKU0M6OkZy
ZWVDZWxsOjpvZmZzZXRPZlNjcmFtYmxlZE5leHQpOgorICAgICAgICAqIGhlYXAvSGVhcENlbGwu
aDoKKyAgICAgICAgKEpTQzo6SGVhcENlbGw6OnphcCk6CisgICAgICAgIChKU0M6OkhlYXBDZWxs
Ojppc1phcHBlZCBjb25zdCk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAg
KiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6
OnN0YXJ0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6ZW5kIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6Y29udGFpbnMgY29uc3Qp
OgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlZXApOgorICAgICAgICAqIGhlYXAvU2xv
dFZpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6YXBwZW5kVG9NYXJrU3Rh
Y2spOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
IChKU0M6OlNsb3RWaXNpdG9yOjpyZXBvcnRaYXBwZWRDZWxsQW5kQ3Jhc2gpOgorICAgICAgICAq
IGhlYXAvU2xvdFZpc2l0b3IuaDoKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0QWxsb2NhdGVXaXRoTm9uTnVsbEFs
bG9jYXRvcik6CisKIDIwMTktMDctMjUgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgogCiAgICAgICAgIExlZ2FjeSBudW1lcmljIGxpdGVyYWxzIHNob3VsZCBub3QgcGVy
bWl0IHNlcGFyYXRvcnMgb3IgQmlnSW50CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9GcmVlTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Zy
ZWVMaXN0LmgJKHJldmlzaW9uIDI0NzgwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0ZyZWVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Myw2ICs1Myw5IEBAIHN0cnVjdCBGcmVl
Q2VsbCB7CiAgICAgICAgIHJldHVybiBkZXNjcmFtYmxlKHNjcmFtYmxlZE5leHQsIHNlY3JldCk7
CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTY3JhbWJsZWROZXh0
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZyZWVDZWxsLCBzY3JhbWJsZWROZXh0KTsgfQor
CisgICAgdWludDY0X3QgcHJlc2VydmVkQml0c0ZvckNyYXNoQW5hbHlzaXM7CiAgICAgdWludHB0
cl90IHNjcmFtYmxlZE5leHQ7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBDZWxsLmgJKHJldmlzaW9uIDI0NzgwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Nyw4ICs0NywxNyBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgSGVhcENlbGwoKSB7IH0KICAgICAKLSAgICB2b2lkIHphcCgpIHsgKnJlaW50ZXJw
cmV0X2Nhc3RfcHRyPHVpbnRwdHJfdCoqPih0aGlzKSA9IDA7IH0KLSAgICBib29sIGlzWmFwcGVk
KCkgY29uc3QgeyByZXR1cm4gISpyZWludGVycHJldF9jYXN0X3B0cjx1aW50cHRyX3QqIGNvbnN0
Kj4odGhpcyk7IH0KKyAgICAvLyBXZSdyZSBpbnRlbnRpb25hbGx5IG9ubHkgemFwcGluZyB0aGUg
Yml0cyBmb3IgdGhlIHN0cnVjdHVyZUlEIGFuZCBsZWF2aW5nCisgICAgLy8gdGhlIHJlc3Qgb2Yg
dGhlIGNlbGwgaGVhZGVyIGJpdHMgaW4gdGFjdCBmb3IgY3Jhc2ggYW5hbHlzaXMgdXNlcy4KKyAg
ICBlbnVtIFphcFJlYXNvbiA6IGludDhfdCB7IFVuc3BlY2lmaWVkLCBEZXN0cnVjdGlvbiwgU3Rv
cEFsbG9jYXRpbmcgfTsKKyAgICB2b2lkIHphcChaYXBSZWFzb24gcmVhc29uKQorICAgIHsKKyAg
ICAgICAgdWludDMyX3QqIGNlbGxXb3JkcyA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQzMl90
Kj4odGhpcyk7CisgICAgICAgIGNlbGxXb3Jkc1swXSA9IDA7CisgICAgICAgIC8vIExlYXZpbmcg
Y2VsbFdvcmRzWzFdIGFsb25lIGZvciBjcmFzaCBhbmFseXNpcyBpZiBuZWVkZWQuCisgICAgICAg
IGNlbGxXb3Jkc1syXSA9IHJlYXNvbjsKKyAgICB9CisgICAgYm9vbCBpc1phcHBlZCgpIGNvbnN0
IHsgcmV0dXJuICEqcmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgdWludDMyX3QqPih0aGlzKTsg
fQogCiAgICAgYm9vbCBpc0xpdmUoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmNwcAkocmV2aXNpb24gMjQ3ODAxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNyArMTYx
LDcgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZwogICAgICAgICAg
ICAgaWYgKE1hcmtlZEJsb2NrSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0
YUxvZygiRnJlZSBjZWxsOiAiLCBSYXdQb2ludGVyKGNlbGwpLCAiXG4iKTsKICAgICAgICAgICAg
IGlmIChtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVjdGlvbikKLSAgICAg
ICAgICAgICAgICBjZWxsLT56YXAoKTsKKyAgICAgICAgICAgICAgICBjZWxsLT56YXAoSGVhcENl
bGw6OlN0b3BBbGxvY2F0aW5nKTsKICAgICAgICAgICAgIGJsb2NrKCkuY2xlYXJOZXdseUFsbG9j
YXRlZChjZWxsKTsKICAgICAgICAgfSk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrLmgJKHJldmlzaW9uIDI0NzgwMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw2ICsxOTgs
MTAgQEAgcHVibGljOgogICAgICAgICB2b2lkIGRpZEFkZFRvRGlyZWN0b3J5KEJsb2NrRGlyZWN0
b3J5Kiwgc2l6ZV90IGluZGV4KTsKICAgICAgICAgdm9pZCBkaWRSZW1vdmVGcm9tRGlyZWN0b3J5
KCk7CiAgICAgICAgIAorICAgICAgICB2b2lkKiBzdGFydCgpIGNvbnN0IHsgcmV0dXJuICZtX2Js
b2NrLT5hdG9tcygpWzBdOyB9CisgICAgICAgIHZvaWQqIGVuZCgpIGNvbnN0IHsgcmV0dXJuICZt
X2Jsb2NrLT5hdG9tcygpW21fZW5kQXRvbV07IH0KKyAgICAgICAgYm9vbCBjb250YWlucyh2b2lk
KiBwKSBjb25zdCB7IHJldHVybiBzdGFydCgpIDw9IHAgJiYgcCA8IGVuZCgpOyB9CisKICAgICAg
ICAgdm9pZCBkdW1wU3RhdGUoUHJpbnRTdHJlYW0mKTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5l
cy5oCShyZXZpc2lvbiAyNDc4MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9ja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lk
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlCiAgICAgICAgIEpTQ2VsbCoganND
ZWxsID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oY2VsbCk7CiAgICAgICAgIGlmICghanNDZWxsLT5p
c1phcHBlZCgpKSB7CiAgICAgICAgICAgICBkZXN0cm95RnVuYyh2bSwganNDZWxsKTsKLSAgICAg
ICAgICAgIGpzQ2VsbC0+emFwKCk7CisgICAgICAgICAgICBqc0NlbGwtPnphcChIZWFwQ2VsbDo6
RGVzdHJ1Y3Rpb24pOwogICAgICAgICB9CiAgICAgfTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHJldmlzaW9uIDI0NzgwMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIlN0b3BJZk5lY2Vzc2FyeVRpbWVyLmgiCiAjaW5j
bHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlIDxibWFsbG9j
L1BlclByb2Nlc3MuaD4KICNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KICNpbmNsdWRlIDx3dGYv
TG9jay5oPgogCkBAIC0yODYsOCArMjg3LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRhaW5l
clR5cGU+CiBBTFdBWVNfSU5MSU5FIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZFRvTWFya1N0YWNr
KENvbnRhaW5lclR5cGUmIGNvbnRhaW5lciwgSlNDZWxsKiBjZWxsKQogewogICAgIEFTU0VSVCht
X2hlYXAuaXNNYXJrZWQoY2VsbCkpOworI2lmIENQVShYODZfNjQpCisgICAgaWYgKFVOTElLRUxZ
KGNlbGwtPmlzWmFwcGVkKCkpKQorICAgICAgICByZXBvcnRaYXBwZWRDZWxsQW5kQ3Jhc2goY2Vs
bCk7CisjZWxzZQogICAgIEFTU0VSVCghY2VsbC0+aXNaYXBwZWQoKSk7Ci0gICAgCisjZW5kaWYK
KwogICAgIGNvbnRhaW5lci5ub3RlTWFya2VkKCk7CiAgICAgCiAgICAgbV92aXNpdENvdW50Kys7
CkBAIC0zODUsNyArMzkxLDE3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTbG90VmlzaXRvcjo6dmlz
aXRDaGkKICAgICBkZWZhdWx0OgogICAgICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBzbyBt
dWNoIGJldHRlci4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MjQ2MgorI2lmIENQVShYODZfNjQpCisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gY2VsbC0+c3RydWN0dXJlKHZtKCkpOworICAgICAgICBpZiAoTElLRUxZKHN0cnVjdHVy
ZSkpIHsKKyAgICAgICAgICAgIGNvbnN0IE1ldGhvZFRhYmxlKiBtZXRob2RUYWJsZSA9ICZzdHJ1
Y3R1cmUtPmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZTsKKyAgICAgICAgICAgIG1ldGhvZFRhYmxl
LT52aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCksICp0aGlzKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJlcG9ydFphcHBlZENlbGxBbmRDcmFz
aChjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpKTsKKyNlbHNlCiAgICAgICAgIGNlbGwtPm1ldGhv
ZFRhYmxlKHZtKCkpLT52aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCksICp0
aGlzKTsKKyNlbmRpZgogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCkBAIC04MDQsNCArODIw
LDMzIEBAIHZvaWQgU2xvdFZpc2l0b3I6OmFkZFBhcmFsbGVsQ29uc3RyYWludFQKICAgICBtX2N1
cnJlbnRTb2x2ZXItPmFkZFBhcmFsbGVsVGFzayh0YXNrLCAqbV9jdXJyZW50Q29uc3RyYWludCk7
CiB9CiAKKyNpZiBDUFUoWDg2XzY0KQorTkVWRVJfSU5MSU5FIHZvaWQgU2xvdFZpc2l0b3I6OnJl
cG9ydFphcHBlZENlbGxBbmRDcmFzaChKU0NlbGwqIGNlbGwpCit7CisgICAgTWFya2VkQmxvY2s6
OkhhbmRsZSogZm91bmRCbG9jayA9IG51bGxwdHI7CisgICAgdWludDMyX3QqIGNlbGxXb3JkcyA9
IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQzMl90Kj4odGhpcyk7CisKKyAgICB1aW50cHRyX3Qg
Y2VsbEFkZHJlc3MgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihjZWxsKTsKKyAgICB1aW50cHRy
X3QgaGVhZGVyV29yZCA9IGNlbGxXb3Jkc1sxXTsKKyAgICB1aW50cHRyX3QgemFwUmVhc29uID0g
Y2VsbFdvcmRzWzJdOworICAgIHVuc2lnbmVkIHN1YnNwYWNlSGFzaCA9IDA7CisgICAgc2l6ZV90
IGNlbGxTaXplID0gMDsKKworICAgIG1faGVhcC5vYmplY3RTcGFjZSgpLmZvckVhY2hCbG9jayhb
Jl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7CisgICAgICAgIGlmIChibG9jay0+Y29u
dGFpbnMoY2VsbCkpIHsKKyAgICAgICAgICAgIGZvdW5kQmxvY2sgPSBibG9jazsKKyAgICAgICAg
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgfSk7CisKKyAgICBpZiAoZm91bmRC
bG9jaykgeworICAgICAgICBzdWJzcGFjZUhhc2ggPSBibWFsbG9jOjpzdHJpbmdIYXNoKGZvdW5k
QmxvY2stPnN1YnNwYWNlKCktPm5hbWUoKSk7CisgICAgICAgIGNlbGxTaXplID0gZm91bmRCbG9j
ay0+Y2VsbFNpemUoKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVCghY2VsbC0+aXNaYXBw
ZWQoKSwgY2VsbEFkZHJlc3MsIGhlYWRlcldvcmQsIHphcFJlYXNvbiwgc3Vic3BhY2VIYXNoLCBj
ZWxsU2l6ZSk7Cit9CisjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKKwogfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgJKHJldmlzaW9u
IDI0NzgwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIyNSw2ICsyMjUsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIGhhc1dv
cmsoY29uc3QgQWJzdHJhY3RMb2NrZXImKTsKICAgICBib29sIGRpZFJlYWNoVGVybWluYXRpb24o
Y29uc3QgQWJzdHJhY3RMb2NrZXImKTsKIAorI2lmIENQVShYODZfNjQpCisgICAgTkVWRVJfSU5M
SU5FIHZvaWQgcmVwb3J0WmFwcGVkQ2VsbEFuZENyYXNoKEpTQ2VsbCopOworI2VuZGlmCisKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoTWFy
a1N0YWNrKGNvbnN0IEZ1bmMmKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMjQ3ODAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDYs
NyArNTQ2LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRBbGxvY2F0ZVdpdGhObwogICAg
ICAgICAKICAgICAvLyBUaGUgb2JqZWN0IGlzIGhhbGYtYWxsb2NhdGVkOiB3ZSBoYXZlIHdoYXQg
d2Uga25vdyBpcyBhIGZyZXNoIG9iamVjdCwgYnV0CiAgICAgLy8gaXQncyBzdGlsbCBvbiB0aGUg
R0MncyBmcmVlIGxpc3QuCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdEdQUiksIHNjcmF0Y2hH
UFIpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHRHUFIsIEZyZWVDZWxsOjpvZmZzZXRPZlNj
cmFtYmxlZE5leHQoKSksIHNjcmF0Y2hHUFIpOwogICAgIHN0b3JlUHRyKHNjcmF0Y2hHUFIsIEFk
ZHJlc3MoYWxsb2NhdG9yR1BSLCBMb2NhbEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVlTGlzdCgpICsg
RnJlZUxpc3Q6Om9mZnNldE9mU2NyYW1ibGVkSGVhZCgpKSk7CiAgICAgICAgIAogICAgIGRvbmUu
bGluayh0aGlzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374938</attachid>
            <date>2019-07-25 21:38:59 -0700</date>
            <delta_ts>2019-07-25 23:50:16 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-200149.patch</filename>
            <type>text/plain</type>
            <size>10552</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ3ODUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBA
CisyMDE5LTA3LTI1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgY3Jhc2ggZGlhZ25vc3RpY3MgZm9yIGRlYnVnZ2luZyB1bmV4cGVjdGVkIHphcHBlZCBjZWxs
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDE0
OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTM1NzAxMTI+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgY2hlY2sgZm9yIHphcHBlZCBjZWxs
cyBpbiBTbG90VmlzaXRvcjo6YXBwZW5kVG9NYXJrU3RhY2soKSBhbmQKKyAgICAgICAgU2xvdFZp
c2l0b3I6OnZpc2l0Q2hpbGRyZW4oKS4gIElmIGEgemFwcGVkIGNlbGwgaXMgZGV0ZWN0ZWQsIHdl
IHdlJ2xsIGNyYXNoIHdpdGgKKyAgICAgICAgc29tZSBkaWFnbm9zdGljIGluZm8uCisKKyAgICAg
ICAgVG8gZmFjaWxpdGF0ZSB0aGlzLCB3ZSd2ZSBtYWRlIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoK
KyAgICAgICAgMS4gQ2hhbmdlZCBGcmVlQ2VsbCB0byBwcmVzZXJ2ZSB0aGUgMXN0IDggYnl0ZXMu
ICBUaGlzIGlzIGZpbmUgdG8gZG8gYmVjYXVzZSBhbGwKKyAgICAgICAgICAgY2VsbHMgYXJlIGF0
IGxlYXN0IDE2IGJ5dGVzIGxvbmcuCisgICAgICAgIDIuIENoYW5nZWQgSGVhcENlbGw6OnphcCgp
IHRvIG9ubHkgemFwIHRoZSBzdHJ1Y3R1cmVJRC4gIExlYXZlIHRoZSByZXN0IG9mIHRoZQorICAg
ICAgICAgICBjZWxsIGhlYWRlciBpbmZvIGludGFjdCAoaW5jbHVkaW5nIHRoZSBjZWxsIEpTVHlw
ZSkuCisgICAgICAgIDMuIENoYW5nZWQgSGVhcENlbGw6OnphcCgpIHRvIHJlY29yZCB0aGUgcmVh
c29uIGZvciB6YXBwaW5nIHRoZSBjZWxsLiAgV2Ugc3Rhc2gKKyAgICAgICAgICAgdGhlIHJlYXNv
biBpbW1lZGlhdGVseSBhZnRlciB0aGUgZmlyc3QgOCBieXRlcy4gIFRoaXMgaXMgdGhlIHNhbWUg
bG9jYXRpb24gYXMKKyAgICAgICAgICAgRnJlZUNlbGw6OnNjcmFtYmxlZE5leHQuICBIb3dldmVy
LCBzaW5jZSBhIGNlbGwgaXMgbm90IGV4cGVjdGVkIHRvIGJlIHphcHBlZAorICAgICAgICAgICBh
bmQgb24gdGhlIGZyZWUgbGlzdCBhdCB0aGUgc2FtZSB0aW1lLCBpdCBpcyBhbHNvIGZpbmUgdG8g
ZG8gdGhpcy4KKyAgICAgICAgNC4gQWRkZWQgYSBmZXcgdXRpbGl0eSBmdW5jdGlvbnMgdG8gTWFy
a2VkQmxvY2sgZm9yIGNoZWNraW5nIGlmIGEgY2VsbCBwb2ludHMKKyAgICAgICAgICAgaW50byB0
aGUgYmxvY2suCisKKyAgICAgICAgKiBoZWFwL0ZyZWVMaXN0Lmg6CisgICAgICAgIChKU0M6OkZy
ZWVDZWxsOjpvZmZzZXRPZlNjcmFtYmxlZE5leHQpOgorICAgICAgICAqIGhlYXAvSGVhcENlbGwu
aDoKKyAgICAgICAgKEpTQzo6SGVhcENlbGw6OnphcCk6CisgICAgICAgIChKU0M6OkhlYXBDZWxs
Ojppc1phcHBlZCBjb25zdCk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAg
KiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6
OnN0YXJ0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6ZW5kIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6Y29udGFpbnMgY29uc3Qp
OgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlZXApOgorICAgICAgICAqIGhlYXAvU2xv
dFZpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6YXBwZW5kVG9NYXJrU3Rh
Y2spOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
IChKU0M6OlNsb3RWaXNpdG9yOjpyZXBvcnRaYXBwZWRDZWxsQW5kQ3Jhc2gpOgorICAgICAgICAq
IGhlYXAvU2xvdFZpc2l0b3IuaDoKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0QWxsb2NhdGVXaXRoTm9uTnVsbEFs
bG9jYXRvcik6CisKIDIwMTktMDctMjUgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgogCiAgICAgICAgIExlZ2FjeSBudW1lcmljIGxpdGVyYWxzIHNob3VsZCBub3QgcGVy
bWl0IHNlcGFyYXRvcnMgb3IgQmlnSW50CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9GcmVlTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Zy
ZWVMaXN0LmgJKHJldmlzaW9uIDI0NzgwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0ZyZWVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Myw2ICs1Myw5IEBAIHN0cnVjdCBGcmVl
Q2VsbCB7CiAgICAgICAgIHJldHVybiBkZXNjcmFtYmxlKHNjcmFtYmxlZE5leHQsIHNlY3JldCk7
CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTY3JhbWJsZWROZXh0
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZyZWVDZWxsLCBzY3JhbWJsZWROZXh0KTsgfQor
CisgICAgdWludDY0X3QgcHJlc2VydmVkQml0c0ZvckNyYXNoQW5hbHlzaXM7CiAgICAgdWludHB0
cl90IHNjcmFtYmxlZE5leHQ7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBDZWxsLmgJKHJldmlzaW9uIDI0NzgwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Nyw4ICs0NywxNyBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgSGVhcENlbGwoKSB7IH0KICAgICAKLSAgICB2b2lkIHphcCgpIHsgKnJlaW50ZXJw
cmV0X2Nhc3RfcHRyPHVpbnRwdHJfdCoqPih0aGlzKSA9IDA7IH0KLSAgICBib29sIGlzWmFwcGVk
KCkgY29uc3QgeyByZXR1cm4gISpyZWludGVycHJldF9jYXN0X3B0cjx1aW50cHRyX3QqIGNvbnN0
Kj4odGhpcyk7IH0KKyAgICAvLyBXZSdyZSBpbnRlbnRpb25hbGx5IG9ubHkgemFwcGluZyB0aGUg
Yml0cyBmb3IgdGhlIHN0cnVjdHVyZUlEIGFuZCBsZWF2aW5nCisgICAgLy8gdGhlIHJlc3Qgb2Yg
dGhlIGNlbGwgaGVhZGVyIGJpdHMgaW4gdGFjdCBmb3IgY3Jhc2ggYW5hbHlzaXMgdXNlcy4KKyAg
ICBlbnVtIFphcFJlYXNvbiA6IGludDhfdCB7IFVuc3BlY2lmaWVkLCBEZXN0cnVjdGlvbiwgU3Rv
cEFsbG9jYXRpbmcgfTsKKyAgICB2b2lkIHphcChaYXBSZWFzb24gcmVhc29uKQorICAgIHsKKyAg
ICAgICAgdWludDMyX3QqIGNlbGxXb3JkcyA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQzMl90
Kj4odGhpcyk7CisgICAgICAgIGNlbGxXb3Jkc1swXSA9IDA7CisgICAgICAgIC8vIExlYXZpbmcg
Y2VsbFdvcmRzWzFdIGFsb25lIGZvciBjcmFzaCBhbmFseXNpcyBpZiBuZWVkZWQuCisgICAgICAg
IGNlbGxXb3Jkc1syXSA9IHJlYXNvbjsKKyAgICB9CisgICAgYm9vbCBpc1phcHBlZCgpIGNvbnN0
IHsgcmV0dXJuICEqcmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgdWludDMyX3QqPih0aGlzKTsg
fQogCiAgICAgYm9vbCBpc0xpdmUoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmNwcAkocmV2aXNpb24gMjQ3ODAxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNyArMTYx
LDcgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZwogICAgICAgICAg
ICAgaWYgKE1hcmtlZEJsb2NrSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0
YUxvZygiRnJlZSBjZWxsOiAiLCBSYXdQb2ludGVyKGNlbGwpLCAiXG4iKTsKICAgICAgICAgICAg
IGlmIChtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVjdGlvbikKLSAgICAg
ICAgICAgICAgICBjZWxsLT56YXAoKTsKKyAgICAgICAgICAgICAgICBjZWxsLT56YXAoSGVhcENl
bGw6OlN0b3BBbGxvY2F0aW5nKTsKICAgICAgICAgICAgIGJsb2NrKCkuY2xlYXJOZXdseUFsbG9j
YXRlZChjZWxsKTsKICAgICAgICAgfSk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrLmgJKHJldmlzaW9uIDI0NzgwMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw2ICsxOTgs
MTAgQEAgcHVibGljOgogICAgICAgICB2b2lkIGRpZEFkZFRvRGlyZWN0b3J5KEJsb2NrRGlyZWN0
b3J5Kiwgc2l6ZV90IGluZGV4KTsKICAgICAgICAgdm9pZCBkaWRSZW1vdmVGcm9tRGlyZWN0b3J5
KCk7CiAgICAgICAgIAorICAgICAgICB2b2lkKiBzdGFydCgpIGNvbnN0IHsgcmV0dXJuICZtX2Js
b2NrLT5hdG9tcygpWzBdOyB9CisgICAgICAgIHZvaWQqIGVuZCgpIGNvbnN0IHsgcmV0dXJuICZt
X2Jsb2NrLT5hdG9tcygpW21fZW5kQXRvbV07IH0KKyAgICAgICAgYm9vbCBjb250YWlucyh2b2lk
KiBwKSBjb25zdCB7IHJldHVybiBzdGFydCgpIDw9IHAgJiYgcCA8IGVuZCgpOyB9CisKICAgICAg
ICAgdm9pZCBkdW1wU3RhdGUoUHJpbnRTdHJlYW0mKTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5l
cy5oCShyZXZpc2lvbiAyNDc4MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9ja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lk
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlCiAgICAgICAgIEpTQ2VsbCoganND
ZWxsID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oY2VsbCk7CiAgICAgICAgIGlmICghanNDZWxsLT5p
c1phcHBlZCgpKSB7CiAgICAgICAgICAgICBkZXN0cm95RnVuYyh2bSwganNDZWxsKTsKLSAgICAg
ICAgICAgIGpzQ2VsbC0+emFwKCk7CisgICAgICAgICAgICBqc0NlbGwtPnphcChIZWFwQ2VsbDo6
RGVzdHJ1Y3Rpb24pOwogICAgICAgICB9CiAgICAgfTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHJldmlzaW9uIDI0NzgwMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDUsNiArNDUsMTAgQEAKICNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KICNpbmNsdWRlIDx3
dGYvTG9jay5oPgogCisjaWYgQ1BVKFg4Nl82NCkKKyNpbmNsdWRlIDxibWFsbG9jL1BlclByb2Nl
c3MuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShHQ19WQUxJREFU
SU9OKQpAQCAtMjg2LDggKzI5MCwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250YWluZXJUeXBl
PgogQUxXQVlTX0lOTElORSB2b2lkIFNsb3RWaXNpdG9yOjphcHBlbmRUb01hcmtTdGFjayhDb250
YWluZXJUeXBlJiBjb250YWluZXIsIEpTQ2VsbCogY2VsbCkKIHsKICAgICBBU1NFUlQobV9oZWFw
LmlzTWFya2VkKGNlbGwpKTsKKyNpZiBDUFUoWDg2XzY0KQorICAgIGlmIChVTkxJS0VMWShjZWxs
LT5pc1phcHBlZCgpKSkKKyAgICAgICAgcmVwb3J0WmFwcGVkQ2VsbEFuZENyYXNoKGNlbGwpOwor
I2Vsc2UKICAgICBBU1NFUlQoIWNlbGwtPmlzWmFwcGVkKCkpOwotICAgIAorI2VuZGlmCisKICAg
ICBjb250YWluZXIubm90ZU1hcmtlZCgpOwogICAgIAogICAgIG1fdmlzaXRDb3VudCsrOwpAQCAt
Mzg1LDcgKzM5NCwxNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2xvdFZpc2l0b3I6OnZpc2l0Q2hp
CiAgICAgZGVmYXVsdDoKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUgc28gbXVjaCBi
ZXR0ZXIuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjI0NjIKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGNlbGwtPnN0cnVjdHVyZSh2bSgpKTsKKyAgICAgICAgaWYgKExJS0VMWShzdHJ1Y3R1cmUpKSB7
CisgICAgICAgICAgICBjb25zdCBNZXRob2RUYWJsZSogbWV0aG9kVGFibGUgPSAmc3RydWN0dXJl
LT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGU7CisgICAgICAgICAgICBtZXRob2RUYWJsZS0+dmlz
aXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCAqdGhpcyk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXBvcnRaYXBwZWRDZWxsQW5kQ3Jhc2goY29u
c3RfY2FzdDxKU0NlbGwqPihjZWxsKSk7CisjZWxzZQogICAgICAgICBjZWxsLT5tZXRob2RUYWJs
ZSh2bSgpKS0+dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCAqdGhpcyk7
CisjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIApAQCAtODA0LDQgKzgyMywzMyBA
QCB2b2lkIFNsb3RWaXNpdG9yOjphZGRQYXJhbGxlbENvbnN0cmFpbnRUCiAgICAgbV9jdXJyZW50
U29sdmVyLT5hZGRQYXJhbGxlbFRhc2sodGFzaywgKm1fY3VycmVudENvbnN0cmFpbnQpOwogfQog
CisjaWYgQ1BVKFg4Nl82NCkKK05FVkVSX0lOTElORSB2b2lkIFNsb3RWaXNpdG9yOjpyZXBvcnRa
YXBwZWRDZWxsQW5kQ3Jhc2goSlNDZWxsKiBjZWxsKQoreworICAgIE1hcmtlZEJsb2NrOjpIYW5k
bGUqIGZvdW5kQmxvY2sgPSBudWxscHRyOworICAgIHVpbnQzMl90KiBjZWxsV29yZHMgPSByZWlu
dGVycHJldF9jYXN0X3B0cjx1aW50MzJfdCo+KHRoaXMpOworCisgICAgdWludHB0cl90IGNlbGxB
ZGRyZXNzID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oY2VsbCk7CisgICAgdWludHB0cl90IGhl
YWRlcldvcmQgPSBjZWxsV29yZHNbMV07CisgICAgdWludHB0cl90IHphcFJlYXNvbiA9IGNlbGxX
b3Jkc1syXTsKKyAgICB1bnNpZ25lZCBzdWJzcGFjZUhhc2ggPSAwOworICAgIHNpemVfdCBjZWxs
U2l6ZSA9IDA7CisKKyAgICBtX2hlYXAub2JqZWN0U3BhY2UoKS5mb3JFYWNoQmxvY2soWyZdIChN
YXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgeworICAgICAgICBpZiAoYmxvY2stPmNvbnRhaW5z
KGNlbGwpKSB7CisgICAgICAgICAgICBmb3VuZEJsb2NrID0gYmxvY2s7CisgICAgICAgICAgICBy
ZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOworICAgICAgICB9CisgICAgICAgIHJldHVybiBJ
dGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgIH0pOworCisgICAgaWYgKGZvdW5kQmxvY2sp
IHsKKyAgICAgICAgc3Vic3BhY2VIYXNoID0gYm1hbGxvYzo6c3RyaW5nSGFzaChmb3VuZEJsb2Nr
LT5zdWJzcGFjZSgpLT5uYW1lKCkpOworICAgICAgICBjZWxsU2l6ZSA9IGZvdW5kQmxvY2stPmNl
bGxTaXplKCk7CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlQoIWNlbGwtPmlzWmFwcGVkKCks
IGNlbGxBZGRyZXNzLCBoZWFkZXJXb3JkLCB6YXBSZWFzb24sIHN1YnNwYWNlSGFzaCwgY2VsbFNp
emUpOworfQorI2VuZGlmIC8vIENQVShYODZfNjQpCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCShyZXZpc2lvbiAyNDc4
MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjUsNiArMjI1LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYXNXb3JrKGNv
bnN0IEFic3RyYWN0TG9ja2VyJik7CiAgICAgYm9vbCBkaWRSZWFjaFRlcm1pbmF0aW9uKGNvbnN0
IEFic3RyYWN0TG9ja2VyJik7CiAKKyNpZiBDUFUoWDg2XzY0KQorICAgIE5FVkVSX0lOTElORSB2
b2lkIHJlcG9ydFphcHBlZENlbGxBbmRDcmFzaChKU0NlbGwqKTsKKyNlbmRpZgorCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaE1hcmtTdGFj
ayhjb25zdCBGdW5jJik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDI0NzgwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ2LDcgKzU0
Niw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0QWxsb2NhdGVXaXRoTm8KICAgICAgICAg
CiAgICAgLy8gVGhlIG9iamVjdCBpcyBoYWxmLWFsbG9jYXRlZDogd2UgaGF2ZSB3aGF0IHdlIGtu
b3cgaXMgYSBmcmVzaCBvYmplY3QsIGJ1dAogICAgIC8vIGl0J3Mgc3RpbGwgb24gdGhlIEdDJ3Mg
ZnJlZSBsaXN0LgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHRHUFIpLCBzY3JhdGNoR1BSKTsK
KyAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0R1BSLCBGcmVlQ2VsbDo6b2Zmc2V0T2ZTY3JhbWJs
ZWROZXh0KCkpLCBzY3JhdGNoR1BSKTsKICAgICBzdG9yZVB0cihzY3JhdGNoR1BSLCBBZGRyZXNz
KGFsbG9jYXRvckdQUiwgTG9jYWxBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3QoKSArIEZyZWVM
aXN0OjpvZmZzZXRPZlNjcmFtYmxlZEhlYWQoKSkpOwogICAgICAgICAKICAgICBkb25lLmxpbmso
dGhpcyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374944</attachid>
            <date>2019-07-25 23:50:16 -0700</date>
            <delta_ts>2019-07-26 16:22:32 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-200149.patch</filename>
            <type>text/plain</type>
            <size>10564</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ3ODUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBA
CisyMDE5LTA3LTI1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgY3Jhc2ggZGlhZ25vc3RpY3MgZm9yIGRlYnVnZ2luZyB1bmV4cGVjdGVkIHphcHBlZCBjZWxs
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDE0
OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTM1NzAxMTI+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgY2hlY2sgZm9yIHphcHBlZCBjZWxs
cyBpbiBTbG90VmlzaXRvcjo6YXBwZW5kVG9NYXJrU3RhY2soKSBhbmQKKyAgICAgICAgU2xvdFZp
c2l0b3I6OnZpc2l0Q2hpbGRyZW4oKS4gIElmIGEgemFwcGVkIGNlbGwgaXMgZGV0ZWN0ZWQsIHdl
IHdlJ2xsIGNyYXNoIHdpdGgKKyAgICAgICAgc29tZSBkaWFnbm9zdGljIGluZm8uCisKKyAgICAg
ICAgVG8gZmFjaWxpdGF0ZSB0aGlzLCB3ZSd2ZSBtYWRlIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoK
KyAgICAgICAgMS4gQ2hhbmdlZCBGcmVlQ2VsbCB0byBwcmVzZXJ2ZSB0aGUgMXN0IDggYnl0ZXMu
ICBUaGlzIGlzIGZpbmUgdG8gZG8gYmVjYXVzZSBhbGwKKyAgICAgICAgICAgY2VsbHMgYXJlIGF0
IGxlYXN0IDE2IGJ5dGVzIGxvbmcuCisgICAgICAgIDIuIENoYW5nZWQgSGVhcENlbGw6OnphcCgp
IHRvIG9ubHkgemFwIHRoZSBzdHJ1Y3R1cmVJRC4gIExlYXZlIHRoZSByZXN0IG9mIHRoZQorICAg
ICAgICAgICBjZWxsIGhlYWRlciBpbmZvIGludGFjdCAoaW5jbHVkaW5nIHRoZSBjZWxsIEpTVHlw
ZSkuCisgICAgICAgIDMuIENoYW5nZWQgSGVhcENlbGw6OnphcCgpIHRvIHJlY29yZCB0aGUgcmVh
c29uIGZvciB6YXBwaW5nIHRoZSBjZWxsLiAgV2Ugc3Rhc2gKKyAgICAgICAgICAgdGhlIHJlYXNv
biBpbW1lZGlhdGVseSBhZnRlciB0aGUgZmlyc3QgOCBieXRlcy4gIFRoaXMgaXMgdGhlIHNhbWUg
bG9jYXRpb24gYXMKKyAgICAgICAgICAgRnJlZUNlbGw6OnNjcmFtYmxlZE5leHQuICBIb3dldmVy
LCBzaW5jZSBhIGNlbGwgaXMgbm90IGV4cGVjdGVkIHRvIGJlIHphcHBlZAorICAgICAgICAgICBh
bmQgb24gdGhlIGZyZWUgbGlzdCBhdCB0aGUgc2FtZSB0aW1lLCBpdCBpcyBhbHNvIGZpbmUgdG8g
ZG8gdGhpcy4KKyAgICAgICAgNC4gQWRkZWQgYSBmZXcgdXRpbGl0eSBmdW5jdGlvbnMgdG8gTWFy
a2VkQmxvY2sgZm9yIGNoZWNraW5nIGlmIGEgY2VsbCBwb2ludHMKKyAgICAgICAgICAgaW50byB0
aGUgYmxvY2suCisKKyAgICAgICAgKiBoZWFwL0ZyZWVMaXN0Lmg6CisgICAgICAgIChKU0M6OkZy
ZWVDZWxsOjpvZmZzZXRPZlNjcmFtYmxlZE5leHQpOgorICAgICAgICAqIGhlYXAvSGVhcENlbGwu
aDoKKyAgICAgICAgKEpTQzo6SGVhcENlbGw6OnphcCk6CisgICAgICAgIChKU0M6OkhlYXBDZWxs
Ojppc1phcHBlZCBjb25zdCk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAg
KiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6
OnN0YXJ0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6ZW5kIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6Y29udGFpbnMgY29uc3Qp
OgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlZXApOgorICAgICAgICAqIGhlYXAvU2xv
dFZpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6YXBwZW5kVG9NYXJrU3Rh
Y2spOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
IChKU0M6OlNsb3RWaXNpdG9yOjpyZXBvcnRaYXBwZWRDZWxsQW5kQ3Jhc2gpOgorICAgICAgICAq
IGhlYXAvU2xvdFZpc2l0b3IuaDoKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0QWxsb2NhdGVXaXRoTm9uTnVsbEFs
bG9jYXRvcik6CisKIDIwMTktMDctMjUgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgogCiAgICAgICAgIExlZ2FjeSBudW1lcmljIGxpdGVyYWxzIHNob3VsZCBub3QgcGVy
bWl0IHNlcGFyYXRvcnMgb3IgQmlnSW50CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9GcmVlTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Zy
ZWVMaXN0LmgJKHJldmlzaW9uIDI0NzgwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0ZyZWVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Myw2ICs1Myw5IEBAIHN0cnVjdCBGcmVl
Q2VsbCB7CiAgICAgICAgIHJldHVybiBkZXNjcmFtYmxlKHNjcmFtYmxlZE5leHQsIHNlY3JldCk7
CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTY3JhbWJsZWROZXh0
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZyZWVDZWxsLCBzY3JhbWJsZWROZXh0KTsgfQor
CisgICAgdWludDY0X3QgcHJlc2VydmVkQml0c0ZvckNyYXNoQW5hbHlzaXM7CiAgICAgdWludHB0
cl90IHNjcmFtYmxlZE5leHQ7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBDZWxsLmgJKHJldmlzaW9uIDI0NzgwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Nyw4ICs0NywxNyBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgSGVhcENlbGwoKSB7IH0KICAgICAKLSAgICB2b2lkIHphcCgpIHsgKnJlaW50ZXJw
cmV0X2Nhc3RfcHRyPHVpbnRwdHJfdCoqPih0aGlzKSA9IDA7IH0KLSAgICBib29sIGlzWmFwcGVk
KCkgY29uc3QgeyByZXR1cm4gISpyZWludGVycHJldF9jYXN0X3B0cjx1aW50cHRyX3QqIGNvbnN0
Kj4odGhpcyk7IH0KKyAgICAvLyBXZSdyZSBpbnRlbnRpb25hbGx5IG9ubHkgemFwcGluZyB0aGUg
Yml0cyBmb3IgdGhlIHN0cnVjdHVyZUlEIGFuZCBsZWF2aW5nCisgICAgLy8gdGhlIHJlc3Qgb2Yg
dGhlIGNlbGwgaGVhZGVyIGJpdHMgaW4gdGFjdCBmb3IgY3Jhc2ggYW5hbHlzaXMgdXNlcy4KKyAg
ICBlbnVtIFphcFJlYXNvbiA6IGludDhfdCB7IFVuc3BlY2lmaWVkLCBEZXN0cnVjdGlvbiwgU3Rv
cEFsbG9jYXRpbmcgfTsKKyAgICB2b2lkIHphcChaYXBSZWFzb24gcmVhc29uKQorICAgIHsKKyAg
ICAgICAgdWludDMyX3QqIGNlbGxXb3JkcyA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQzMl90
Kj4odGhpcyk7CisgICAgICAgIGNlbGxXb3Jkc1swXSA9IDA7CisgICAgICAgIC8vIExlYXZpbmcg
Y2VsbFdvcmRzWzFdIGFsb25lIGZvciBjcmFzaCBhbmFseXNpcyBpZiBuZWVkZWQuCisgICAgICAg
IGNlbGxXb3Jkc1syXSA9IHJlYXNvbjsKKyAgICB9CisgICAgYm9vbCBpc1phcHBlZCgpIGNvbnN0
IHsgcmV0dXJuICEqcmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgdWludDMyX3QqPih0aGlzKTsg
fQogCiAgICAgYm9vbCBpc0xpdmUoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmNwcAkocmV2aXNpb24gMjQ3ODAxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNyArMTYx
LDcgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZwogICAgICAgICAg
ICAgaWYgKE1hcmtlZEJsb2NrSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0
YUxvZygiRnJlZSBjZWxsOiAiLCBSYXdQb2ludGVyKGNlbGwpLCAiXG4iKTsKICAgICAgICAgICAg
IGlmIChtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVjdGlvbikKLSAgICAg
ICAgICAgICAgICBjZWxsLT56YXAoKTsKKyAgICAgICAgICAgICAgICBjZWxsLT56YXAoSGVhcENl
bGw6OlN0b3BBbGxvY2F0aW5nKTsKICAgICAgICAgICAgIGJsb2NrKCkuY2xlYXJOZXdseUFsbG9j
YXRlZChjZWxsKTsKICAgICAgICAgfSk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrLmgJKHJldmlzaW9uIDI0NzgwMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw2ICsxOTgs
MTAgQEAgcHVibGljOgogICAgICAgICB2b2lkIGRpZEFkZFRvRGlyZWN0b3J5KEJsb2NrRGlyZWN0
b3J5Kiwgc2l6ZV90IGluZGV4KTsKICAgICAgICAgdm9pZCBkaWRSZW1vdmVGcm9tRGlyZWN0b3J5
KCk7CiAgICAgICAgIAorICAgICAgICB2b2lkKiBzdGFydCgpIGNvbnN0IHsgcmV0dXJuICZtX2Js
b2NrLT5hdG9tcygpWzBdOyB9CisgICAgICAgIHZvaWQqIGVuZCgpIGNvbnN0IHsgcmV0dXJuICZt
X2Jsb2NrLT5hdG9tcygpW21fZW5kQXRvbV07IH0KKyAgICAgICAgYm9vbCBjb250YWlucyh2b2lk
KiBwKSBjb25zdCB7IHJldHVybiBzdGFydCgpIDw9IHAgJiYgcCA8IGVuZCgpOyB9CisKICAgICAg
ICAgdm9pZCBkdW1wU3RhdGUoUHJpbnRTdHJlYW0mKTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5l
cy5oCShyZXZpc2lvbiAyNDc4MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9ja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lk
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlCiAgICAgICAgIEpTQ2VsbCoganND
ZWxsID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oY2VsbCk7CiAgICAgICAgIGlmICghanNDZWxsLT5p
c1phcHBlZCgpKSB7CiAgICAgICAgICAgICBkZXN0cm95RnVuYyh2bSwganNDZWxsKTsKLSAgICAg
ICAgICAgIGpzQ2VsbC0+emFwKCk7CisgICAgICAgICAgICBqc0NlbGwtPnphcChIZWFwQ2VsbDo6
RGVzdHJ1Y3Rpb24pOwogICAgICAgICB9CiAgICAgfTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHJldmlzaW9uIDI0NzgwMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDUsNiArNDUsMTAgQEAKICNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KICNpbmNsdWRlIDx3
dGYvTG9jay5oPgogCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgPGJtYWxsb2MvUGVyUHJv
Y2Vzcy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgRU5BQkxFKEdDX1ZBTElE
QVRJT04pCkBAIC0yODYsOCArMjkwLDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRhaW5lclR5
cGU+CiBBTFdBWVNfSU5MSU5FIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZFRvTWFya1N0YWNrKENv
bnRhaW5lclR5cGUmIGNvbnRhaW5lciwgSlNDZWxsKiBjZWxsKQogewogICAgIEFTU0VSVChtX2hl
YXAuaXNNYXJrZWQoY2VsbCkpOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoVU5MSUtFTFko
Y2VsbC0+aXNaYXBwZWQoKSkpCisgICAgICAgIHJlcG9ydFphcHBlZENlbGxBbmRDcmFzaChjZWxs
KTsKKyNlbHNlCiAgICAgQVNTRVJUKCFjZWxsLT5pc1phcHBlZCgpKTsKLSAgICAKKyNlbmRpZgor
CiAgICAgY29udGFpbmVyLm5vdGVNYXJrZWQoKTsKICAgICAKICAgICBtX3Zpc2l0Q291bnQrKzsK
QEAgLTM4NSw3ICszOTQsMTcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNsb3RWaXNpdG9yOjp2aXNp
dENoaQogICAgIGRlZmF1bHQ6CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIHNvIG11
Y2ggYmV0dGVyLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYyNDYyCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGNlbGwtPnN0cnVjdHVyZSh2bSgpKTsKKyAgICAgICAgaWYgKExJS0VMWShzdHJ1Y3R1
cmUpKSB7CisgICAgICAgICAgICBjb25zdCBNZXRob2RUYWJsZSogbWV0aG9kVGFibGUgPSAmc3Ry
dWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGU7CisgICAgICAgICAgICBtZXRob2RUYWJs
ZS0+dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCAqdGhpcyk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXBvcnRaYXBwZWRDZWxsQW5kQ3Jh
c2goY29uc3RfY2FzdDxKU0NlbGwqPihjZWxsKSk7CisjZWxzZQogICAgICAgICBjZWxsLT5tZXRo
b2RUYWJsZSh2bSgpKS0+dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCAq
dGhpcyk7CisjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIApAQCAtODA0LDQgKzgy
MywzMyBAQCB2b2lkIFNsb3RWaXNpdG9yOjphZGRQYXJhbGxlbENvbnN0cmFpbnRUCiAgICAgbV9j
dXJyZW50U29sdmVyLT5hZGRQYXJhbGxlbFRhc2sodGFzaywgKm1fY3VycmVudENvbnN0cmFpbnQp
OwogfQogCisjaWYgUExBVEZPUk0oTUFDKQorTkVWRVJfSU5MSU5FIHZvaWQgU2xvdFZpc2l0b3I6
OnJlcG9ydFphcHBlZENlbGxBbmRDcmFzaChKU0NlbGwqIGNlbGwpCit7CisgICAgTWFya2VkQmxv
Y2s6OkhhbmRsZSogZm91bmRCbG9jayA9IG51bGxwdHI7CisgICAgdWludDMyX3QqIGNlbGxXb3Jk
cyA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQzMl90Kj4odGhpcyk7CisKKyAgICB1aW50cHRy
X3QgY2VsbEFkZHJlc3MgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihjZWxsKTsKKyAgICB1aW50
cHRyX3QgaGVhZGVyV29yZCA9IGNlbGxXb3Jkc1sxXTsKKyAgICB1aW50cHRyX3QgemFwUmVhc29u
ID0gY2VsbFdvcmRzWzJdOworICAgIHVuc2lnbmVkIHN1YnNwYWNlSGFzaCA9IDA7CisgICAgc2l6
ZV90IGNlbGxTaXplID0gMDsKKworICAgIG1faGVhcC5vYmplY3RTcGFjZSgpLmZvckVhY2hCbG9j
ayhbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7CisgICAgICAgIGlmIChibG9jay0+
Y29udGFpbnMoY2VsbCkpIHsKKyAgICAgICAgICAgIGZvdW5kQmxvY2sgPSBibG9jazsKKyAgICAg
ICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgfSk7CisKKyAgICBpZiAoZm91
bmRCbG9jaykgeworICAgICAgICBzdWJzcGFjZUhhc2ggPSBibWFsbG9jOjpzdHJpbmdIYXNoKGZv
dW5kQmxvY2stPnN1YnNwYWNlKCktPm5hbWUoKSk7CisgICAgICAgIGNlbGxTaXplID0gZm91bmRC
bG9jay0+Y2VsbFNpemUoKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVCghY2VsbC0+aXNa
YXBwZWQoKSwgY2VsbEFkZHJlc3MsIGhlYWRlcldvcmQsIHphcFJlYXNvbiwgc3Vic3BhY2VIYXNo
LCBjZWxsU2l6ZSk7Cit9CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAkocmV2
aXNpb24gMjQ3ODAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMjI1LDYgKzIyNSwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wg
aGFzV29yayhjb25zdCBBYnN0cmFjdExvY2tlciYpOwogICAgIGJvb2wgZGlkUmVhY2hUZXJtaW5h
dGlvbihjb25zdCBBYnN0cmFjdExvY2tlciYpOwogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIE5F
VkVSX0lOTElORSB2b2lkIHJlcG9ydFphcHBlZENlbGxBbmRDcmFzaChKU0NlbGwqKTsKKyNlbmRp
ZgorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICBJdGVyYXRpb25TdGF0dXMgZm9y
RWFjaE1hcmtTdGFjayhjb25zdCBGdW5jJik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDI0NzgwMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTQ2LDcgKzU0Niw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0QWxsb2NhdGVXaXRo
Tm8KICAgICAgICAgCiAgICAgLy8gVGhlIG9iamVjdCBpcyBoYWxmLWFsbG9jYXRlZDogd2UgaGF2
ZSB3aGF0IHdlIGtub3cgaXMgYSBmcmVzaCBvYmplY3QsIGJ1dAogICAgIC8vIGl0J3Mgc3RpbGwg
b24gdGhlIEdDJ3MgZnJlZSBsaXN0LgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHRHUFIpLCBz
Y3JhdGNoR1BSKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0R1BSLCBGcmVlQ2VsbDo6b2Zm
c2V0T2ZTY3JhbWJsZWROZXh0KCkpLCBzY3JhdGNoR1BSKTsKICAgICBzdG9yZVB0cihzY3JhdGNo
R1BSLCBBZGRyZXNzKGFsbG9jYXRvckdQUiwgTG9jYWxBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxp
c3QoKSArIEZyZWVMaXN0OjpvZmZzZXRPZlNjcmFtYmxlZEhlYWQoKSkpOwogICAgICAgICAKICAg
ICBkb25lLmxpbmsodGhpcyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374997</attachid>
            <date>2019-07-26 16:22:32 -0700</date>
            <delta_ts>2019-08-01 14:15:29 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-200149.patch</filename>
            <type>text/plain</type>
            <size>27875</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ3ODgwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBA
CisyMDE5LTA3LTI2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgY3Jhc2ggZGlhZ25vc3RpY3MgZm9yIGRlYnVnZ2luZyB1bmV4cGVjdGVkIHphcHBlZCBjZWxs
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDE0
OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTM1NzAxMTI+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgY2hlY2sgZm9yIHphcHBlZCBjZWxs
cyBpbiBTbG90VmlzaXRvcjo6YXBwZW5kVG9NYXJrU3RhY2soKSBhbmQKKyAgICAgICAgU2xvdFZp
c2l0b3I6OnZpc2l0Q2hpbGRyZW4oKS4gIElmIGEgemFwcGVkIGNlbGwgaXMgZGV0ZWN0ZWQsIHdl
IHdpbGwgY3Jhc2ggd2l0aAorICAgICAgICBzb21lIGRpYWdub3N0aWMgaW5mby4KKworICAgICAg
ICBUbyBmYWNpbGl0YXRlIHRoaXMsIHdlJ3ZlIG1hZGUgdGhlIGZvbGxvd2luZyBjaGFuZ2VzOgor
ICAgICAgICAxLiBDaGFuZ2VkIEZyZWVDZWxsIHRvIHByZXNlcnZlIHRoZSAxc3QgOCBieXRlcy4g
IFRoaXMgaXMgZmluZSB0byBkbyBiZWNhdXNlIGFsbAorICAgICAgICAgICBjZWxscyBhcmUgYXQg
bGVhc3QgMTYgYnl0ZXMgbG9uZy4KKyAgICAgICAgMi4gQ2hhbmdlZCBIZWFwQ2VsbDo6emFwKCkg
dG8gb25seSB6YXAgdGhlIHN0cnVjdHVyZUlELiAgTGVhdmUgdGhlIHJlc3Qgb2YgdGhlCisgICAg
ICAgICAgIGNlbGwgaGVhZGVyIGluZm8gaW50YWN0IChpbmNsdWRpbmcgdGhlIGNlbGwgSlNUeXBl
KS4KKyAgICAgICAgMy4gQ2hhbmdlZCBIZWFwQ2VsbDo6emFwKCkgdG8gcmVjb3JkIHRoZSByZWFz
b24gZm9yIHphcHBpbmcgdGhlIGNlbGwuICBXZSBzdGFzaAorICAgICAgICAgICB0aGUgcmVhc29u
IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBmaXJzdCA4IGJ5dGVzLiAgVGhpcyBpcyB0aGUgc2FtZSBs
b2NhdGlvbiBhcworICAgICAgICAgICBGcmVlQ2VsbDo6c2NyYW1ibGVkTmV4dC4gIEhvd2V2ZXIs
IHNpbmNlIGEgY2VsbCBpcyBub3QgZXhwZWN0ZWQgdG8gYmUgemFwcGVkCisgICAgICAgICAgIGFu
ZCBvbiB0aGUgZnJlZSBsaXN0IGF0IHRoZSBzYW1lIHRpbWUsIGl0IGlzIGFsc28gZmluZSB0byBk
byB0aGlzLgorICAgICAgICA0LiBBZGRlZCBhIGZldyB1dGlsaXR5IGZ1bmN0aW9ucyB0byBNYXJr
ZWRCbG9jayBmb3IgY2hlY2tpbmcgaWYgYSBjZWxsIHBvaW50cworICAgICAgICAgICBpbnRvIHRo
ZSBibG9jay4KKyAgICAgICAgNS4gQWRkZWQgVk1JbnNwZWN0b3IgYW5kIEpTRG9sbGFyVk0gdXRp
bGl0aWVzIHRvIGR1bXAgaW4tdXNlIHN1YnNwYWNlIGhhc2hlcy4KKyAgICAgICAgNi4gQWRkZWQg
c29tZSBjb21tZW50cyB0byBkb2N1bWVudCB0aGUgaGFzaGVzIG9mIGtub3duIHN1YnNwYWNlcy4K
KworICAgICAgICAqIGhlYXAvRnJlZUxpc3QuaDoKKyAgICAgICAgKEpTQzo6RnJlZUNlbGw6Om9m
ZnNldE9mU2NyYW1ibGVkTmV4dCk6CisgICAgICAgICogaGVhcC9IZWFwQ2VsbC5oOgorICAgICAg
ICAoSlNDOjpIZWFwQ2VsbDo6emFwKToKKyAgICAgICAgKEpTQzo6SGVhcENlbGw6OmlzWmFwcGVk
IGNvbnN0KToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcpOgorICAgICAgICAqIGhlYXAvTWFy
a2VkQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3RhcnQgY29u
c3QpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjplbmQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpjb250YWlucyBjb25zdCk6CisgICAgICAg
ICogaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6
OkhhbmRsZTo6c3BlY2lhbGl6ZWRTd2VlcCk6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5o
OgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFjaFN1YnNwYWNlKToKKyAgICAgICAg
KiBoZWFwL1Nsb3RWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmFwcGVu
ZFRvTWFya1N0YWNrKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6cmVwb3J0WmFwcGVkQ2VsbEFuZENyYXNoKToK
KyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmg6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVs
cGVycy5jcHA6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdEFsbG9jYXRlV2l0
aE5vbk51bGxBbGxvY2F0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAo
SlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAo
SlNDOjpmdW5jdGlvbkR1bXBTdWJzcGFjZUhhc2hlcyk6CisgICAgICAgIChKU0M6OkpTRG9sbGFy
Vk06OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiB0b29scy9WTUluc3BlY3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OlZNSW5zcGVjdG9yOjpkdW1wU3Vic3BhY2VIYXNoZXMpOgorICAgICAgICAq
IHRvb2xzL1ZNSW5zcGVjdG9yLmg6CisKIDIwMTktMDctMjUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBVc2UgdW5hbGlnbmVkTG9hZCBmb3IgSlNS
b3BlU3RyaW5nIGZpYmVyIGFjY2Vzc2VzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9GcmVlTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Zy
ZWVMaXN0LmgJKHJldmlzaW9uIDI0Nzg4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0ZyZWVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Myw2ICs1Myw5IEBAIHN0cnVjdCBGcmVl
Q2VsbCB7CiAgICAgICAgIHJldHVybiBkZXNjcmFtYmxlKHNjcmFtYmxlZE5leHQsIHNlY3JldCk7
CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTY3JhbWJsZWROZXh0
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZyZWVDZWxsLCBzY3JhbWJsZWROZXh0KTsgfQor
CisgICAgdWludDY0X3QgcHJlc2VydmVkQml0c0ZvckNyYXNoQW5hbHlzaXM7CiAgICAgdWludHB0
cl90IHNjcmFtYmxlZE5leHQ7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBDZWxsLmgJKHJldmlzaW9uIDI0Nzg4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Nyw4ICs0NywxNyBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgSGVhcENlbGwoKSB7IH0KICAgICAKLSAgICB2b2lkIHphcCgpIHsgKnJlaW50ZXJw
cmV0X2Nhc3RfcHRyPHVpbnRwdHJfdCoqPih0aGlzKSA9IDA7IH0KLSAgICBib29sIGlzWmFwcGVk
KCkgY29uc3QgeyByZXR1cm4gISpyZWludGVycHJldF9jYXN0X3B0cjx1aW50cHRyX3QqIGNvbnN0
Kj4odGhpcyk7IH0KKyAgICAvLyBXZSdyZSBpbnRlbnRpb25hbGx5IG9ubHkgemFwcGluZyB0aGUg
Yml0cyBmb3IgdGhlIHN0cnVjdHVyZUlEIGFuZCBsZWF2aW5nCisgICAgLy8gdGhlIHJlc3Qgb2Yg
dGhlIGNlbGwgaGVhZGVyIGJpdHMgaW50YWN0IGZvciBjcmFzaCBhbmFseXNpcyB1c2VzLgorICAg
IGVudW0gWmFwUmVhc29uIDogaW50OF90IHsgVW5zcGVjaWZpZWQsIERlc3RydWN0aW9uLCBTdG9w
QWxsb2NhdGluZyB9OworICAgIHZvaWQgemFwKFphcFJlYXNvbiByZWFzb24pCisgICAgeworICAg
ICAgICB1aW50MzJfdCogY2VsbFdvcmRzID0gYml0d2lzZV9jYXN0PHVpbnQzMl90Kj4odGhpcyk7
CisgICAgICAgIGNlbGxXb3Jkc1swXSA9IDA7CisgICAgICAgIC8vIExlYXZpbmcgY2VsbFdvcmRz
WzFdIGFsb25lIGZvciBjcmFzaCBhbmFseXNpcyBpZiBuZWVkZWQuCisgICAgICAgIGNlbGxXb3Jk
c1syXSA9IHJlYXNvbjsKKyAgICB9CisgICAgYm9vbCBpc1phcHBlZCgpIGNvbnN0IHsgcmV0dXJu
ICEqYml0d2lzZV9jYXN0PGNvbnN0IHVpbnQzMl90Kj4odGhpcyk7IH0KIAogICAgIGJvb2wgaXNM
aXZlKCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5j
cHAJKHJldmlzaW9uIDI0Nzg4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcKICAgICAgICAgICAgIGlmIChNYXJrZWRCbG9j
a0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkZyZWUgY2VsbDog
IiwgUmF3UG9pbnRlcihjZWxsKSwgIlxuIik7CiAgICAgICAgICAgICBpZiAobV9hdHRyaWJ1dGVz
LmRlc3RydWN0aW9uID09IE5lZWRzRGVzdHJ1Y3Rpb24pCi0gICAgICAgICAgICAgICAgY2VsbC0+
emFwKCk7CisgICAgICAgICAgICAgICAgY2VsbC0+emFwKEhlYXBDZWxsOjpTdG9wQWxsb2NhdGlu
Zyk7CiAgICAgICAgICAgICBibG9jaygpLmNsZWFyTmV3bHlBbGxvY2F0ZWQoY2VsbCk7CiAgICAg
ICAgIH0pOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9j
ay5oCShyZXZpc2lvbiAyNDc4ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNiArMTk4LDEwIEBAIHB1YmxpYzoKICAg
ICAgICAgdm9pZCBkaWRBZGRUb0RpcmVjdG9yeShCbG9ja0RpcmVjdG9yeSosIHNpemVfdCBpbmRl
eCk7CiAgICAgICAgIHZvaWQgZGlkUmVtb3ZlRnJvbURpcmVjdG9yeSgpOwogICAgICAgICAKKyAg
ICAgICAgdm9pZCogc3RhcnQoKSBjb25zdCB7IHJldHVybiAmbV9ibG9jay0+YXRvbXMoKVswXTsg
fQorICAgICAgICB2b2lkKiBlbmQoKSBjb25zdCB7IHJldHVybiAmbV9ibG9jay0+YXRvbXMoKVtt
X2VuZEF0b21dOyB9CisgICAgICAgIGJvb2wgY29udGFpbnModm9pZCogcCkgY29uc3QgeyByZXR1
cm4gc3RhcnQoKSA8PSBwICYmIHAgPCBlbmQoKTsgfQorCiAgICAgICAgIHZvaWQgZHVtcFN0YXRl
KFByaW50U3RyZWFtJik7CiAgICAgICAgIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkocmV2aXNpb24gMjQ3
ODgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNTgsNyArMjU4LDcgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpzcGVjaWFsaXplZFN3ZQogICAgICAgICBKU0NlbGwqIGpzQ2VsbCA9IHN0YXRpY19jYXN0
PEpTQ2VsbCo+KGNlbGwpOwogICAgICAgICBpZiAoIWpzQ2VsbC0+aXNaYXBwZWQoKSkgewogICAg
ICAgICAgICAgZGVzdHJveUZ1bmModm0sIGpzQ2VsbCk7Ci0gICAgICAgICAgICBqc0NlbGwtPnph
cCgpOworICAgICAgICAgICAganNDZWxsLT56YXAoSGVhcENlbGw6OkRlc3RydWN0aW9uKTsKICAg
ICAgICAgfQogICAgIH07CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZFNwYWNlLmgJKHJldmlzaW9uIDI0Nzg4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw2ICsxMjQsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoTGl2ZUNlbGwo
SGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYpOwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaERlYWRDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIGNv
bnN0IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVh
Y2hCbG9jayhjb25zdCBGdW5jdG9yJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
dm9pZCBmb3JFYWNoU3Vic3BhY2UoY29uc3QgRnVuY3RvciYpOwogCiAgICAgdm9pZCBzaHJpbmso
KTsKICAgICB2b2lkIGZyZWVCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKik7CkBAIC0yNDAsNiAr
MjQxLDE2IEBAIHZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hEaXJlY3RvcnkoY29uc3QKICAgICB9
CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIE1hcmtlZFNwYWNlOjpmb3JF
YWNoU3Vic3BhY2UoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBmb3IgKGF1dG8gc3Vi
c3BhY2UgOiBtX3N1YnNwYWNlcykgeworICAgICAgICBpZiAoZnVuY3Rvcigqc3Vic3BhY2UpID09
IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisK
KwogQUxXQVlTX0lOTElORSBzaXplX3QgTWFya2VkU3BhY2U6Om9wdGltYWxTaXplRm9yKHNpemVf
dCBieXRlcykKIHsKICAgICBBU1NFUlQoYnl0ZXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkocmV2aXNpb24gMjQ3ODgwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODYs
OCArMjg2LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRhaW5lclR5cGU+CiBBTFdBWVNfSU5M
SU5FIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZFRvTWFya1N0YWNrKENvbnRhaW5lclR5cGUmIGNv
bnRhaW5lciwgSlNDZWxsKiBjZWxsKQogewogICAgIEFTU0VSVChtX2hlYXAuaXNNYXJrZWQoY2Vs
bCkpOworI2lmIENQVShYODZfNjQpCisgICAgaWYgKFVOTElLRUxZKGNlbGwtPmlzWmFwcGVkKCkp
KQorICAgICAgICByZXBvcnRaYXBwZWRDZWxsQW5kQ3Jhc2goY2VsbCk7CisjZWxzZQogICAgIEFT
U0VSVCghY2VsbC0+aXNaYXBwZWQoKSk7Ci0gICAgCisjZW5kaWYKKwogICAgIGNvbnRhaW5lci5u
b3RlTWFya2VkKCk7CiAgICAgCiAgICAgbV92aXNpdENvdW50Kys7CkBAIC0zODUsNyArMzkwLDE3
IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTbG90VmlzaXRvcjo6dmlzaXRDaGkKICAgICBkZWZhdWx0
OgogICAgICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBzbyBtdWNoIGJldHRlci4KICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjQ2MgorI2lm
IENQVShYODZfNjQpCisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2VsbC0+c3RydWN0
dXJlKHZtKCkpOworICAgICAgICBpZiAoTElLRUxZKHN0cnVjdHVyZSkpIHsKKyAgICAgICAgICAg
IGNvbnN0IE1ldGhvZFRhYmxlKiBtZXRob2RUYWJsZSA9ICZzdHJ1Y3R1cmUtPmNsYXNzSW5mbygp
LT5tZXRob2RUYWJsZTsKKyAgICAgICAgICAgIG1ldGhvZFRhYmxlLT52aXNpdENoaWxkcmVuKGNv
bnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCksICp0aGlzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIHJlcG9ydFphcHBlZENlbGxBbmRDcmFzaChjb25zdF9jYXN0PEpTQ2Vs
bCo+KGNlbGwpKTsKKyNlbHNlCiAgICAgICAgIGNlbGwtPm1ldGhvZFRhYmxlKHZtKCkpLT52aXNp
dENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCksICp0aGlzKTsKKyNlbmRpZgogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgCkBAIC04MDQsNCArODE5LDMzIEBAIHZvaWQgU2xvdFZp
c2l0b3I6OmFkZFBhcmFsbGVsQ29uc3RyYWludFQKICAgICBtX2N1cnJlbnRTb2x2ZXItPmFkZFBh
cmFsbGVsVGFzayh0YXNrLCAqbV9jdXJyZW50Q29uc3RyYWludCk7CiB9CiAKKyNpZiBDUFUoWDg2
XzY0KQorTkVWRVJfSU5MSU5FIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggTk9UX1RBSUxfQ0FMTEVE
IHZvaWQgU2xvdFZpc2l0b3I6OnJlcG9ydFphcHBlZENlbGxBbmRDcmFzaChKU0NlbGwqIGNlbGwp
Cit7CisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZm91bmRCbG9jayA9IG51bGxwdHI7CisgICAg
dWludDMyX3QqIGNlbGxXb3JkcyA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQzMl90Kj4odGhp
cyk7CisKKyAgICB1aW50cHRyX3QgY2VsbEFkZHJlc3MgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PihjZWxsKTsKKyAgICB1aW50cHRyX3QgaGVhZGVyV29yZCA9IGNlbGxXb3Jkc1sxXTsKKyAgICB1
aW50cHRyX3QgemFwUmVhc29uID0gY2VsbFdvcmRzWzJdOworICAgIHVuc2lnbmVkIHN1YnNwYWNl
SGFzaCA9IDA7CisgICAgc2l6ZV90IGNlbGxTaXplID0gMDsKKworICAgIG1faGVhcC5vYmplY3RT
cGFjZSgpLmZvckVhY2hCbG9jayhbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7Cisg
ICAgICAgIGlmIChibG9jay0+Y29udGFpbnMoY2VsbCkpIHsKKyAgICAgICAgICAgIGZvdW5kQmxv
Y2sgPSBibG9jazsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAg
fSk7CisKKyAgICBpZiAoZm91bmRCbG9jaykgeworICAgICAgICBzdWJzcGFjZUhhc2ggPSBTdHJp
bmdIYXNoZXI6OmNvbXB1dGVIYXNoKGZvdW5kQmxvY2stPnN1YnNwYWNlKCktPm5hbWUoKSk7Cisg
ICAgICAgIGNlbGxTaXplID0gZm91bmRCbG9jay0+Y2VsbFNpemUoKTsKKyAgICB9CisKKyAgICBD
UkFTSF9XSVRIX0lORk8oY2VsbEFkZHJlc3MsIGhlYWRlcldvcmQsIHphcFJlYXNvbiwgc3Vic3Bh
Y2VIYXNoLCBjZWxsU2l6ZSk7Cit9CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3Iu
aAkocmV2aXNpb24gMjQ3ODgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZp
c2l0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjI1LDYgKzIyNSwxMCBAQCBwcml2YXRlOgogICAg
IGJvb2wgaGFzV29yayhjb25zdCBBYnN0cmFjdExvY2tlciYpOwogICAgIGJvb2wgZGlkUmVhY2hU
ZXJtaW5hdGlvbihjb25zdCBBYnN0cmFjdExvY2tlciYpOwogCisjaWYgQ1BVKFg4Nl82NCkKKyAg
ICBORVZFUl9JTkxJTkUgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBOT1RfVEFJTF9DQUxMRUQgdm9p
ZCByZXBvcnRaYXBwZWRDZWxsQW5kQ3Jhc2goSlNDZWxsKik7CisjZW5kaWYKKwogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hNYXJrU3RhY2so
Y29uc3QgRnVuYyYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuY3BwCShyZXZpc2lvbiAyNDc4ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0Niw3ICs1NDYs
NyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdEFsbG9jYXRlV2l0aE5vCiAgICAgICAgIAog
ICAgIC8vIFRoZSBvYmplY3QgaXMgaGFsZi1hbGxvY2F0ZWQ6IHdlIGhhdmUgd2hhdCB3ZSBrbm93
IGlzIGEgZnJlc2ggb2JqZWN0LCBidXQKICAgICAvLyBpdCdzIHN0aWxsIG9uIHRoZSBHQydzIGZy
ZWUgbGlzdC4KLSAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0R1BSKSwgc2NyYXRjaEdQUik7Cisg
ICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdEdQUiwgRnJlZUNlbGw6Om9mZnNldE9mU2NyYW1ibGVk
TmV4dCgpKSwgc2NyYXRjaEdQUik7CiAgICAgc3RvcmVQdHIoc2NyYXRjaEdQUiwgQWRkcmVzcyhh
bGxvY2F0b3JHUFIsIExvY2FsQWxsb2NhdG9yOjpvZmZzZXRPZkZyZWVMaXN0KCkgKyBGcmVlTGlz
dDo6b2Zmc2V0T2ZTY3JhbWJsZWRIZWFkKCkpKTsKICAgICAgICAgCiAgICAgZG9uZS5saW5rKHRo
aXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjQ3
ODgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNjUsMjkgKzI2NSwyOSBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUg
aGVhcFR5cGUpCiAgICAgLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShzdGQ6Om1h
a2VfdW5pcXVlPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGU+KCkpCiAgICAgLCB3
ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8V2ViQXNzZW1i
bHlGdW5jdGlvbkhlYXBDZWxsVHlwZT4oKSkKICNlbmRpZgotICAgICwgcHJpbWl0aXZlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZSgiUHJpbWl0aXZlIEdpZ2FjYWdlIEF1eGlsaWFyeSIsIGhlYXAsIGF1
eGlsaWFyeUhlYXBDZWxsVHlwZS5nZXQoKSwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0
KCkpCi0gICAgLCBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiSlNWYWx1ZSBHaWdhY2Fn
ZSBBdXhpbGlhcnkiLCBoZWFwLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUuZ2V0KCksIGpzVmFsdWVH
aWdhY2FnZUFsbG9jYXRvci5nZXQoKSkKLSAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVH
aWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJJbW11dGFibGVCdXR0ZXJmbHkgR2lnYWNhZ2UgSlNDZWxs
V2l0aEludGVyaW9yUG9pbnRlcnMiLCBoZWFwLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5
cGUuZ2V0KCksIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkKLSAgICAsIGNlbGxTcGFj
ZSgiSlNDZWxsIiwgaGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgZmFzdE1hbGxvY0FsbG9j
YXRvci5nZXQoKSkKLSAgICAsIGpzVmFsdWVHaWdhY2FnZUNlbGxTcGFjZSgiSlNWYWx1ZSBHaWdh
Y2FnZSBKU0NlbGwiLCBoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBqc1ZhbHVlR2lnYWNh
Z2VBbGxvY2F0b3IuZ2V0KCkpCi0gICAgLCBkZXN0cnVjdGlibGVDZWxsU3BhY2UoIkRlc3RydWN0
aWJsZSBKU0NlbGwiLCBoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBm
YXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKQotICAgICwgc3RyaW5nU3BhY2UoIkpTU3RyaW5nIiwg
aGVhcCwgc3RyaW5nSGVhcENlbGxUeXBlLmdldCgpLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgp
KQotICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0Iiwg
aGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBmYXN0TWFsbG9jQWxs
b2NhdG9yLmdldCgpKQotICAgICwgZWFnZXJseVN3ZXB0RGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2Uo
IkVhZ2VybHkgU3dlcHQgSlNEZXN0cnVjdGlibGVPYmplY3QiLCBoZWFwLCBkZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpCi0gICAg
LCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwg
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZSkKLSAgICAs
IGZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNGdW5jdGlvbikKLSAgICAsIGludGVybmFsRnVuY3Rpb25TcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGVy
bmFsRnVuY3Rpb24pCi0gICAgLCBuYXRpdmVFeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgTmF0aXZlRXhlY3V0
YWJsZSkKLSAgICAsIHByb3BlcnR5VGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBk
ZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBQcm9wZXJ0eVRhYmxlKQotICAgICwg
c3RydWN0dXJlUmFyZURhdGFTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmVSYXJlRGF0YSkKLSAgICAsIHN0cnVj
dHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIFN0cnVjdHVyZSkKLSAgICAsIHN5bWJvbFRhYmxlU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU3ltYm9s
VGFibGUpCisgICAgLCBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJQcmltaXRpdmUg
R2lnYWNhZ2UgQXV4aWxpYXJ5IiwgaGVhcCwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlLmdldCgpLCBw
cmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDNlN2NkNzYyCisgICAg
LCBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiSlNWYWx1ZSBHaWdhY2FnZSBBdXhpbGlh
cnkiLCBoZWFwLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUuZ2V0KCksIGpzVmFsdWVHaWdhY2FnZUFs
bG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDI0MWU5NDYKKyAgICAsIGltbXV0YWJsZUJ1dHRlcmZs
eUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJJbW11dGFibGVCdXR0ZXJmbHkgR2lnYWNh
Z2UgSlNDZWxsV2l0aEludGVyaW9yUG9pbnRlcnMiLCBoZWFwLCBpbW11dGFibGVCdXR0ZXJmbHlI
ZWFwQ2VsbFR5cGUuZ2V0KCksIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFz
aDoweDdhOTQ1MzAwCisgICAgLCBjZWxsU3BhY2UoIkpTQ2VsbCIsIGhlYXAsIGNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHhhZGZiNWE3
OQorICAgICwganNWYWx1ZUdpZ2FjYWdlQ2VsbFNwYWNlKCJKU1ZhbHVlIEdpZ2FjYWdlIEpTQ2Vs
bCIsIGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRv
ci5nZXQoKSkgLy8gSGFzaDoweDJmNWIxMDJiCisgICAgLCBkZXN0cnVjdGlibGVDZWxsU3BhY2Uo
IkRlc3RydWN0aWJsZSBKU0NlbGwiLCBoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4YmZmZjNkNzMKKyAg
ICAsIHN0cmluZ1NwYWNlKCJKU1N0cmluZyIsIGhlYXAsIHN0cmluZ0hlYXBDZWxsVHlwZS5nZXQo
KSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDkwY2Y3NThmCisgICAgLCBk
ZXN0cnVjdGlibGVPYmplY3RTcGFjZSgiSlNEZXN0cnVjdGlibGVPYmplY3QiLCBoZWFwLCBkZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0
KCkpIC8vIEhhc2g6MHg0ZjVlZDdhOQorICAgICwgZWFnZXJseVN3ZXB0RGVzdHJ1Y3RpYmxlT2Jq
ZWN0U3BhY2UoIkVhZ2VybHkgU3dlcHQgSlNEZXN0cnVjdGlibGVPYmplY3QiLCBoZWFwLCBkZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0
KCkpIC8vIEhhc2g6MHg2ZWJmMjhlMgorICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNw
YWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2UpIC8vIEhhc2g6MHg3YjczMGIyMAorICAgICwgZnVuY3Rpb25T
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0Z1
bmN0aW9uKSAvLyBIYXNoOjB4ODAwZmNhNzIKKyAgICAsIGludGVybmFsRnVuY3Rpb25TcGFjZSBJ
U09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksIEludGVybmFsRnVuY3Rpb24pIC8vIEhhc2g6MHhmODQ1YzQ2NAorICAgICwgbmF0aXZlRXhl
Y3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIE5hdGl2ZUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg2NzU2N2Y5NQorICAg
ICwgcHJvcGVydHlUYWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJs
ZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFByb3BlcnR5VGFibGUpIC8vIEhhc2g6MHhjNmJjOWYx
MgorICAgICwgc3RydWN0dXJlUmFyZURhdGFTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBk
ZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmVSYXJlRGF0YSkgLy8g
SGFzaDoweGFjYTRlNjJkCisgICAgLCBzdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCho
ZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmUpIC8vIEhh
c2g6MHgxZjFiY2RjYQorICAgICwgc3ltYm9sVGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCho
ZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTeW1ib2xUYWJsZSkgLy8g
SGFzaDoweGM1MjE1YWZkCiAgICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25z
dHJhaW50cyhleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCiAgICAgLCBleGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzKGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VT
cGFjZSkKLSAgICAsIGNvZGVCbG9ja1NwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIENvZGVCbG9jaykKLSAgICAsIGZ1bmN0aW9u
RXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEZ1bmN0aW9uRXhlY3V0YWJsZSkKLSAgICAsIHByb2dyYW1FeGVj
dXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgUHJvZ3JhbUV4ZWN1dGFibGUpCi0gICAgLCB1bmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKQorICAgICwgY29k
ZUJsb2NrU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgQ29kZUJsb2NrKSAvLyBIYXNoOjB4NzdlNjZlYzkKKyAgICAsIGZ1bmN0
aW9uRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFzaDoweDVkMTU4
ZjMKKyAgICAsIHByb2dyYW1FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwg
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgUHJvZ3JhbUV4ZWN1dGFibGUpIC8v
IEhhc2g6MHg1MjdjNzdlNworICAgICwgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSBJ
U09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSkgLy8gSGFzaDoweGY2YjgyOGQ5CiAgICAgLCB2
bVR5cGUodm1UeXBlKQogICAgICwgY2xpZW50RGF0YSgwKQogICAgICwgdG9wRW50cnlGcmFtZShu
dWxscHRyKQpAQCAtMTI0MywyMiArMTI0MywyMiBAQCB2b2lkIFZNOjplbnN1cmVTaGFkb3dDaGlj
a2VuKCkKICAgICB9CiAKIAotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGJvdW5kRnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNCb3VuZEZ1bmN0
aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrRnVu
Y3Rpb25TcGFjZSwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0NhbGxi
YWNrRnVuY3Rpb24pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY3Vz
dG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlND
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhlcnJvckluc3RhbmNlU3BhY2UsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5nZXQoKSwgRXJyb3JJbnN0YW5jZSkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhuYXRpdmVTdGRGdW5jdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBKU05hdGl2ZVN0ZEZ1bmN0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHByb3h5UmV2b2tlU3BhY2UsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5n
ZXQoKSwgUHJveHlSZXZva2UpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1cod2Vha01hcFNwYWNlLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
V2Vha01hcCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrU2V0
U3BhY2UsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWFrU2V0KQot
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtPYmplY3RSZWZTcGFj
ZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWFrT2JqZWN0UmVmKQorRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJvdW5kRnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNCb3VuZEZ1bmN0aW9uKSAvLyBIYXNoOjB4ZDc5MTZkNDEKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0Z1bmN0aW9uU3BhY2Us
IGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDYWxsYmFja0Z1bmN0aW9u
KSAvLyBIYXNoOjB4ZTc2NDhlYmMKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uKSAvLyBIYXNoOjB4MTgwOTEwMDAKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhlcnJvckluc3RhbmNlU3BhY2Us
IGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgRXJyb3JJbnN0YW5jZSkgLy8g
SGFzaDoweDNmNDBkNGEKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhu
YXRpdmVTdGRGdW5jdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU05hdGl2ZVN0
ZEZ1bmN0aW9uKSAvLyBIYXNoOjB4NzBlZDYxZTQKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhwcm94eVJldm9rZVNwYWNlLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuZ2V0KCksIFByb3h5UmV2b2tlKSAvLyBIYXNoOjB4YjUwNmE5MzkKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrTWFwU3BhY2UsIGRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWFrTWFwKSAvLyBIYXNoOjB4NjYyYjEyYTMKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrU2V0U3BhY2UsIGRlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWFrU2V0KSAvLyBIYXNoOjB4NGM3
ODFiMzAKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrT2JqZWN0
UmVmU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2Vha09iamVjdFJlZikgLy8gSGFz
aDoweDhlYzY4ZjFmCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhvYmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCBkZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIE9iakNDYWxsYmFja0Z1bmN0aW9uKQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG9iakNDYWxsYmFja0Z1bmN0aW9u
U3BhY2UsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgT2JqQ0NhbGxiYWNr
RnVuY3Rpb24pIC8vIEhhc2g6MHgxMGY2MTBiOAogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5
Q29kZUJsb2NrU3BhY2UsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlLmdldCgpLCBK
U1dlYkFzc2VtYmx5Q29kZUJsb2NrKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHdlYkFzc2VtYmx5RnVuY3Rpb25TcGFjZSwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBD
ZWxsVHlwZS5nZXQoKSwgV2ViQXNzZW1ibHlGdW5jdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvblNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbikKK0RZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNl
LCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWJBc3NlbWJseUNv
ZGVCbG9jaykgLy8gSGFzaDoweDlhZDk5NWNkCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2ViQXNzZW1ibHlGdW5jdGlvblNwYWNlLCB3ZWJBc3NlbWJseUZ1bmN0aW9u
SGVhcENlbGxUeXBlLmdldCgpLCBXZWJBc3NlbWJseUZ1bmN0aW9uKSAvLyBIYXNoOjB4OGI3YzMy
ZGIKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVdy
YXBwZXJGdW5jdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBXZWJBc3NlbWJseVdy
YXBwZXJGdW5jdGlvbikgLy8gSGFzaDoweGQ0YTVmZjAxCiAjZW5kaWYKIAogI3VuZGVmIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVwpAQCAtMTI3Myw4ICsxMjczLDggQEAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKAogICAgICAgICByZXR1cm4g
Jm1fIyNuYW1lLT5zcGFjZTsgXAogICAgIH0KIAotRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklO
RV9NRU1CRVJfU0xPVyhldmFsRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBFdmFsRXhlY3V0YWJsZSkKLURZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJ
TkVfTUVNQkVSX1NMT1cobW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSwgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpCitEWU5BTUlD
X1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKGV2YWxFeGVjdXRhYmxlU3BhY2UsIGRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEV2YWxFeGVjdXRhYmxlKSAvLyBIYXNo
OjB4OTU4ZTNlOWQKK0RZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cobW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg2NTA2ZmEzYwogCiAjdW5k
ZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCShyZXZpc2lvbiAyNDc4ODAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xMzkzLDYgKzEzOTMsMTUgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKKy8vIER1bXBzIHRoZSBoYXNoZXMgb2YgYWxsIHN1YnNwYWNlcyBjdXJyZW50bHkgcmVn
aXN0ZXJlZCB3aXRoIHRoZSBWTS4KKy8vIFVzYWdlOiAkdm0uZHVtcFN1YnNwYWNlSGFzaGVzKCkK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFN1YnNwYWNl
SGFzaGVzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNSW5zcGVjdG9yOjpkdW1wU3Vic3BhY2VIYXNoZXMoJnZtKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiAvLyBHZXRzIGEgSlNEb2xsYXJWTUNhbGxG
cmFtZSBmb3IgYSBzcGVjaWZpZWQgZnJhbWUgaW5kZXguCiAvLyBVc2FnZTogdmFyIGNhbGxGcmFt
ZSA9ICR2bS5jYWxsRnJhbWUoMCkgLy8gZnJhbWUgMCBpcyB0aGUgdG9wIGZyYW1lLgogLy8gVXNh
Z2U6IHZhciBjYWxsRnJhbWUgPSAkdm0uY2FsbEZyYW1lKCkgLy8gaW1wbGllcyBmcmFtZSAwIGku
ZS4gY3VycmVudCBmcmFtZS4KQEAgLTIyMTksNiArMjIyOCw3IEBAIHZvaWQgSlNEb2xsYXJWTTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogCiAgICAgYWRkRnVuY3Rpb24odm0sICJnYyIsIGZ1bmN0
aW9uR0MsIDApOwogICAgIGFkZEZ1bmN0aW9uKHZtLCAiZWRlbkdDIiwgZnVuY3Rpb25FZGVuR0Ms
IDApOworICAgIGFkZEZ1bmN0aW9uKHZtLCAiZHVtcFN1YnNwYWNlSGFzaGVzIiwgZnVuY3Rpb25E
dW1wU3Vic3BhY2VIYXNoZXMsIDApOwogCiAgICAgYWRkRnVuY3Rpb24odm0sICJjYWxsRnJhbWUi
LCBmdW5jdGlvbkNhbGxGcmFtZSwgMSk7CiAgICAgYWRkRnVuY3Rpb24odm0sICJjb2RlQmxvY2tG
b3IiLCBmdW5jdGlvbkNvZGVCbG9ja0ZvciwgMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAJKHJldmlzaW9uIDI0Nzg4MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02
MjYsNCArNjI2LDE3IEBAIHZvaWQgVk1JbnNwZWN0b3I6OmR1bXBDZWxsTWVtb3J5VG9TdHJlYW0K
ICN1bmRlZiBJTkRFTlQKIH0KIAordm9pZCBWTUluc3BlY3Rvcjo6ZHVtcFN1YnNwYWNlSGFzaGVz
KFZNKiB2bSkKK3sKKyAgICB1bnNpZ25lZCBjb3VudCA9IDA7CisgICAgdm0tPmhlYXAub2JqZWN0
U3BhY2UoKS5mb3JFYWNoU3Vic3BhY2UoWyZdIChjb25zdCBTdWJzcGFjZSYgc3Vic3BhY2UpIC0+
IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBzdWJzcGFjZS5u
YW1lKCk7CisgICAgICAgIHVuc2lnbmVkIGhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNo
KG5hbWUpOworICAgICAgICB2b2lkKiBoYXNoQXNQdHIgPSByZWludGVycHJldF9jYXN0PHZvaWQq
PihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGhhc2gpKTsKKyAgICAgICAgZGF0YUxvZ0xuKCIgICAg
WyIsIGNvdW50KyssICJdICIsIG5hbWUsICIgSGFzaDoiLCBSYXdQb2ludGVyKGhhc2hBc1B0cikp
OworICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICB9KTsKKyAg
ICBkYXRhTG9nTG4oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuaAkocmV2aXNpb24gMjQ3ODgwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC03OCw2ICs3OCw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCBkdW1wVmFsdWUoSlNWYWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
ZHVtcENlbGxNZW1vcnkoSlNDZWxsKik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgZHVtcENlbGxNZW1vcnlUb1N0cmVhbShKU0NlbGwqLCBQcmludFN0cmVhbSYpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGR1bXBTdWJzcGFjZUhhc2hlcyhWTSopOwogCiBw
cml2YXRlOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJhdGUoY29u
c3QgRnVuY3RvciYgZnVuY3RvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Nzg4MCkKKysr
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBA
CisyMDE5LTA3LTI2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgY3Jhc2ggZGlhZ25vc3RpY3MgZm9yIGRlYnVnZ2luZyB1bmV4cGVjdGVkIHphcHBlZCBjZWxs
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDE0
OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTM1NzAxMTI+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBp
cyBhIGZlYXR1cmUgZm9yIGRlYnVnZ2luZyBjcmFzaGVzLiAgSXQgaGFzIGJlZW4gdGVzdGVkCisg
ICAgICAgIG1hbnVhbGx5IGJ5IG1vZGlmeWluZyB0aGUgY29kZSB0byBmb3JjZSBhIGNyYXNoIGF0
IHRoZSBwb2ludCBvZiBpbnRlcmVzdC4KKworICAgICAgICBBZGRlZCBzb21lIGNvbW1lbnRzIHRv
IGRvY3VtZW50IHRoZSBoYXNoZXMgb2Yga25vd24gc3Vic3BhY2VzLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1ZN
Q2xpZW50RGF0YTo6SlNWTUNsaWVudERhdGEpOgorCiAyMDE5LTA3LTI2ICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBEbyBub3QgZmlyZSByZWFkeXN0YXRlY2hh
bmdlIGV2ZW50cyBhdCBkb2N1bWVudHMgYWJvdXQgdG8gZ2V0IHJlcGxhY2VkIGJ5IGphdmFzY3Jp
cHQgVVJMcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVu
dERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNv
cmVKU0NsaWVudERhdGEuY3BwCShyZXZpc2lvbiAyNDc4ODApCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMs
OSArNDMsOSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogSlNWTUNsaWVudERhdGE6OkpTVk1DbGll
bnREYXRhKFZNJiB2bSkKICAgICA6IG1fYnVpbHRpbkZ1bmN0aW9ucyh2bSkKICAgICAsIG1fYnVp
bHRpbk5hbWVzKCZ2bSkKLSAgICAsIG1fcnVudGltZU1ldGhvZFNwYWNlIElTT19TVUJTUEFDRV9J
TklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgUnVu
dGltZU1ldGhvZCkKLSAgICAsIG1fb3V0cHV0Q29uc3RyYWludFNwYWNlKCJXZWJDb3JlIFdyYXBw
ZXIgdy8gT3V0cHV0IENvbnN0cmFpbnQiLCB2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuZ2V0KCksIHZtLmZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpCi0gICAgLCBt
X2dsb2JhbE9iamVjdE91dHB1dENvbnN0cmFpbnRTcGFjZSgiV2ViQ29yZSBHbG9iYWwgT2JqZWN0
IHcvIE91dHB1dCBDb25zdHJhaW50Iiwgdm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgdm0uZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkKKyAgICAsIG1fcnVudGltZU1ldGhvZFNw
YWNlIElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZS5nZXQoKSwgUnVudGltZU1ldGhvZCkgLy8gSGFzaDoweGY3MGM0YTg1CisgICAgLCBt
X291dHB1dENvbnN0cmFpbnRTcGFjZSgiV2ViQ29yZSBXcmFwcGVyIHcvIE91dHB1dCBDb25zdHJh
aW50Iiwgdm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCB2
bS5mYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4NzcyNGMyZTQKKyAgICAsIG1f
Z2xvYmFsT2JqZWN0T3V0cHV0Q29uc3RyYWludFNwYWNlKCJXZWJDb3JlIEdsb2JhbCBPYmplY3Qg
dy8gT3V0cHV0IENvbnN0cmFpbnQiLCB2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgp
LCB2bS5mYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4NTIyZDZlYzkKIHsKIH0K
IAo=
</data>
<flag name="review"
          id="390792"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375343</attachid>
            <date>2019-08-01 14:15:29 -0700</date>
            <delta_ts>2019-08-01 14:28:59 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-200149.patch</filename>
            <type>text/plain</type>
            <size>31435</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ4MTMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcyIEBA
CisyMDE5LTA4LTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgY3Jhc2ggZGlhZ25vc3RpY3MgZm9yIGRlYnVnZ2luZyB1bmV4cGVjdGVkIHphcHBlZCBjZWxs
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDE0
OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTM1NzAxMTI+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgY2hlY2sgZm9yIHphcHBlZCBjZWxs
cyBpbiBTbG90VmlzaXRvcjo6YXBwZW5kVG9NYXJrU3RhY2soKSBhbmQKKyAgICAgICAgU2xvdFZp
c2l0b3I6OnZpc2l0Q2hpbGRyZW4oKS4gIElmIGEgemFwcGVkIGNlbGwgaXMgZGV0ZWN0ZWQsIHdl
IHdpbGwgY3Jhc2ggd2l0aAorICAgICAgICBzb21lIGRpYWdub3N0aWMgaW5mby4KKworICAgICAg
ICBUbyBmYWNpbGl0YXRlIHRoaXMsIHdlJ3ZlIG1hZGUgdGhlIGZvbGxvd2luZyBjaGFuZ2VzOgor
ICAgICAgICAxLiBDaGFuZ2VkIEZyZWVDZWxsIHRvIHByZXNlcnZlIHRoZSAxc3QgOCBieXRlcy4g
IFRoaXMgaXMgZmluZSB0byBkbyBiZWNhdXNlIGFsbAorICAgICAgICAgICBjZWxscyBhcmUgYXQg
bGVhc3QgMTYgYnl0ZXMgbG9uZy4KKyAgICAgICAgMi4gQ2hhbmdlZCBIZWFwQ2VsbDo6emFwKCkg
dG8gb25seSB6YXAgdGhlIHN0cnVjdHVyZUlELiAgTGVhdmUgdGhlIHJlc3Qgb2YgdGhlCisgICAg
ICAgICAgIGNlbGwgaGVhZGVyIGluZm8gaW50YWN0IChpbmNsdWRpbmcgdGhlIGNlbGwgSlNUeXBl
KS4KKyAgICAgICAgMy4gQ2hhbmdlZCBIZWFwQ2VsbDo6emFwKCkgdG8gcmVjb3JkIHRoZSByZWFz
b24gZm9yIHphcHBpbmcgdGhlIGNlbGwuICBXZSBzdGFzaAorICAgICAgICAgICB0aGUgcmVhc29u
IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBmaXJzdCA4IGJ5dGVzLiAgVGhpcyBpcyB0aGUgc2FtZSBs
b2NhdGlvbiBhcworICAgICAgICAgICBGcmVlQ2VsbDo6c2NyYW1ibGVkTmV4dC4gIEhvd2V2ZXIs
IHNpbmNlIGEgY2VsbCBpcyBub3QgZXhwZWN0ZWQgdG8gYmUgemFwcGVkCisgICAgICAgICAgIGFu
ZCBvbiB0aGUgZnJlZSBsaXN0IGF0IHRoZSBzYW1lIHRpbWUsIGl0IGlzIGFsc28gZmluZSB0byBk
byB0aGlzLgorICAgICAgICA0LiBBZGRlZCBhIGZldyB1dGlsaXR5IGZ1bmN0aW9ucyB0byBNYXJr
ZWRCbG9jayBmb3IgY2hlY2tpbmcgaWYgYSBjZWxsIHBvaW50cworICAgICAgICAgICBpbnRvIHRo
ZSBibG9jay4KKyAgICAgICAgNS4gQWRkZWQgVk1JbnNwZWN0b3IgYW5kIEpTRG9sbGFyVk0gdXRp
bGl0aWVzIHRvIGR1bXAgaW4tdXNlIHN1YnNwYWNlIGhhc2hlcy4KKyAgICAgICAgNi4gQWRkZWQg
c29tZSBjb21tZW50cyB0byBkb2N1bWVudCB0aGUgaGFzaGVzIG9mIGtub3duIHN1YnNwYWNlcy4K
KyAgICAgICAgNy4gQWRkZWQgT3B0aW9uczo6ZHVtcFphcHBlZENlbGxDcmFzaERhdGEoKSB0byBt
YWtlIHRoaXMgY2hlY2sgY29uZGl0aW9uYWwuCisgICAgICAgICAgIFdlIHVzZSB0aGlzIG9wdGlv
biB0byBkaXNhYmxlIHRoaXMgY2hlY2sgZm9yIHNsb3dlciBtYWNoaW5lcyBzbyB0aGF0IHRoZWly
CisgICAgICAgICAgIFBMVDUgcGVyZm9ybWFuY2UgaXMgbm90IGltcGFjdGVkLgorCisgICAgICAg
ICogYXNzZW1ibGVyL0NQVS5jcHA6CisgICAgICAgIChKU0M6Omh3TDNDYWNoZVNpemUpOgorICAg
ICAgICAoSlNDOjpod1BoeXNpY2FsQ1BVTWF4KToKKyAgICAgICAgKiBhc3NlbWJsZXIvQ1BVLmg6
CisgICAgICAgIChKU0M6Omh3TDNDYWNoZVNpemUpOgorICAgICAgICAoSlNDOjpod1BoeXNpY2Fs
Q1BVTWF4KToKKyAgICAgICAgKiBoZWFwL0ZyZWVMaXN0Lmg6CisgICAgICAgIChKU0M6OkZyZWVD
ZWxsOjpvZmZzZXRPZlNjcmFtYmxlZE5leHQpOgorICAgICAgICAqIGhlYXAvSGVhcENlbGwuaDoK
KyAgICAgICAgKEpTQzo6SGVhcENlbGw6OnphcCk6CisgICAgICAgIChKU0M6OkhlYXBDZWxsOjpp
c1phcHBlZCBjb25zdCk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5jcHA6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAgKiBo
ZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0
YXJ0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6ZW5kIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6Y29udGFpbnMgY29uc3QpOgor
ICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlZXApOgorICAgICAgICAqIGhlYXAvTWFya2Vk
U3BhY2UuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZvckVhY2hTdWJzcGFjZSk6Cisg
ICAgICAgICogaGVhcC9TbG90VmlzaXRvci5jcHA6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9y
OjphcHBlbmRUb01hcmtTdGFjayk6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OnJlcG9ydFphcHBlZENlbGxBbmRD
cmFzaCk6CisgICAgICAgICogaGVhcC9TbG90VmlzaXRvci5oOgorICAgICAgICAqIGppdC9Bc3Nl
bWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRBbGxv
Y2F0ZVdpdGhOb25OdWxsQWxsb2NhdG9yKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3Bw
OgorICAgICAgICAoSlNDOjpPcHRpb25zOjppbml0aWFsaXplKToKKyAgICAgICAgKiBydW50aW1l
L09wdGlvbnMuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06
OlZNKToKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKEpTQzo6ZnVu
Y3Rpb25EdW1wU3Vic3BhY2VIYXNoZXMpOgorICAgICAgICAoSlNDOjpKU0RvbGxhclZNOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgICogdG9vbHMvVk1JbnNwZWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpWTUluc3BlY3Rvcjo6ZHVtcFN1YnNwYWNlSGFzaGVzKToKKyAgICAgICAgKiB0b29scy9W
TUluc3BlY3Rvci5oOgorCiAyMDE5LTA3LTMxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW5hbWUgRE9NSklUIHNhZmUvdW5zYWZlRnVuY3Rpb24gdG8gZnVuY3Rp
b25XaXRoVHlwZUNoZWNrcyBhbmQgZnVuY3Rpb25XaXRob3V0VHlwZUNoZWNrcy4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5jcHAJKHJldmlzaW9uIDI0ODExMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjYsNiArNjYsMjcgQEAgaW50IGtlcm5UQ1NNQXdhcmVOdW1iZXJPZlByb2Nlc3NvckNvcmVz
KAogICAgIH0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CisKK2ludDY0X3QgaHdMM0NhY2hlU2l6
ZSgpCit7CisgICAgaW50NjRfdCB2YWwgPSAwOworICAgIHNpemVfdCB2YWxTaXplID0gc2l6ZW9m
KHZhbCk7CisgICAgaW50IHJjID0gc3lzY3RsYnluYW1lKCJody5sM2NhY2hlc2l6ZSIsICZ2YWws
ICZ2YWxTaXplLCBOVUxMLCAwKTsKKyAgICBpZiAocmMgPCAwKQorICAgICAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gdmFsOworfQorCitpbnQzMl90IGh3UGh5c2ljYWxDUFVNYXgoKQoreworICAg
IGludDY0X3QgdmFsID0gMDsKKyAgICBzaXplX3QgdmFsU2l6ZSA9IHNpemVvZih2YWwpOworICAg
IGludCByYyA9IHN5c2N0bGJ5bmFtZSgiaHcucGh5c2ljYWxjcHVfbWF4IiwgJnZhbCwgJnZhbFNp
emUsIE5VTEwsIDApOworICAgIGlmIChyYyA8IDApCisgICAgICAgIHJldHVybiAwOworICAgIHJl
dHVybiB2YWw7Cit9CisKICNlbmRpZiAvLyAjaWYgKENQVShYODYpIHx8IENQVShYODZfNjQpKSAm
JiBPUyhEQVJXSU4pCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9DUFUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0NQVS5oCShyZXZpc2lvbiAyNDgxMTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0NQVS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ1LDEwICsxNDUsMTQg
QEAgaW5saW5lIGJvb2wgaGFzU2Vuc2libGVEb3VibGVUb0ludCgpCiBib29sIGlzS2VyblRDU01B
dmFpbGFibGUoKTsKIGJvb2wgZW5hYmxlS2VyblRDU00oKTsKIGludCBrZXJuVENTTUF3YXJlTnVt
YmVyT2ZQcm9jZXNzb3JDb3JlcygpOworaW50NjRfdCBod0wzQ2FjaGVTaXplKCk7CitpbnQzMl90
IGh3UGh5c2ljYWxDUFVNYXgoKTsKICNlbHNlCiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNLZXJuVENT
TUF2YWlsYWJsZSgpIHsgcmV0dXJuIGZhbHNlOyB9CiBBTFdBWVNfSU5MSU5FIGJvb2wgZW5hYmxl
S2VyblRDU00oKSB7IHJldHVybiBmYWxzZTsgfQogQUxXQVlTX0lOTElORSBpbnQga2VyblRDU01B
d2FyZU51bWJlck9mUHJvY2Vzc29yQ29yZXMoKSB7IHJldHVybiBXVEY6Om51bWJlck9mUHJvY2Vz
c29yQ29yZXMoKTsgfQorQUxXQVlTX0lOTElORSBpbnQ2NF90IGh3TDNDYWNoZVNpemUoKSB7IHJl
dHVybiAwOyB9CitBTFdBWVNfSU5MSU5FIGludDMyX3QgaHdQaHlzaWNhbENQVU1heCgpIHsgcmV0
dXJuIGtlcm5UQ1NNQXdhcmVOdW1iZXJPZlByb2Nlc3NvckNvcmVzKCk7IH0KICNlbmRpZgogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0ZyZWVM
aXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnJlZUxpc3Qu
aAkocmV2aXNpb24gMjQ4MTEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnJlZUxp
c3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUzLDYgKzUzLDkgQEAgc3RydWN0IEZyZWVDZWxsIHsK
ICAgICAgICAgcmV0dXJuIGRlc2NyYW1ibGUoc2NyYW1ibGVkTmV4dCwgc2VjcmV0KTsKICAgICB9
CiAgICAgCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNjcmFtYmxlZE5leHQoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoRnJlZUNlbGwsIHNjcmFtYmxlZE5leHQpOyB9CisKKyAgICB1
aW50NjRfdCBwcmVzZXJ2ZWRCaXRzRm9yQ3Jhc2hBbmFseXNpczsKICAgICB1aW50cHRyX3Qgc2Ny
YW1ibGVkTmV4dDsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBD
ZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGwu
aAkocmV2aXNpb24gMjQ4MTEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENl
bGwuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ3LDggKzQ3LDE3IEBAIHB1YmxpYzoKICAgICAKICAg
ICBIZWFwQ2VsbCgpIHsgfQogICAgIAotICAgIHZvaWQgemFwKCkgeyAqcmVpbnRlcnByZXRfY2Fz
dF9wdHI8dWludHB0cl90Kio+KHRoaXMpID0gMDsgfQotICAgIGJvb2wgaXNaYXBwZWQoKSBjb25z
dCB7IHJldHVybiAhKnJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnRwdHJfdCogY29uc3QqPih0aGlz
KTsgfQorICAgIC8vIFdlJ3JlIGludGVudGlvbmFsbHkgb25seSB6YXBwaW5nIHRoZSBiaXRzIGZv
ciB0aGUgc3RydWN0dXJlSUQgYW5kIGxlYXZpbmcKKyAgICAvLyB0aGUgcmVzdCBvZiB0aGUgY2Vs
bCBoZWFkZXIgYml0cyBpbnRhY3QgZm9yIGNyYXNoIGFuYWx5c2lzIHVzZXMuCisgICAgZW51bSBa
YXBSZWFzb24gOiBpbnQ4X3QgeyBVbnNwZWNpZmllZCwgRGVzdHJ1Y3Rpb24sIFN0b3BBbGxvY2F0
aW5nIH07CisgICAgdm9pZCB6YXAoWmFwUmVhc29uIHJlYXNvbikKKyAgICB7CisgICAgICAgIHVp
bnQzMl90KiBjZWxsV29yZHMgPSBiaXR3aXNlX2Nhc3Q8dWludDMyX3QqPih0aGlzKTsKKyAgICAg
ICAgY2VsbFdvcmRzWzBdID0gMDsKKyAgICAgICAgLy8gTGVhdmluZyBjZWxsV29yZHNbMV0gYWxv
bmUgZm9yIGNyYXNoIGFuYWx5c2lzIGlmIG5lZWRlZC4KKyAgICAgICAgY2VsbFdvcmRzWzJdID0g
cmVhc29uOworICAgIH0KKyAgICBib29sIGlzWmFwcGVkKCkgY29uc3QgeyByZXR1cm4gISpiaXR3
aXNlX2Nhc3Q8Y29uc3QgdWludDMyX3QqPih0aGlzKTsgfQogCiAgICAgYm9vbCBpc0xpdmUoKTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkocmV2
aXNpb24gMjQ4MTEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpzdG9wQWxsb2NhdGluZwogICAgICAgICAgICAgaWYgKE1hcmtlZEJsb2NrSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiRnJlZSBjZWxsOiAiLCBSYXdQ
b2ludGVyKGNlbGwpLCAiXG4iKTsKICAgICAgICAgICAgIGlmIChtX2F0dHJpYnV0ZXMuZGVzdHJ1
Y3Rpb24gPT0gTmVlZHNEZXN0cnVjdGlvbikKLSAgICAgICAgICAgICAgICBjZWxsLT56YXAoKTsK
KyAgICAgICAgICAgICAgICBjZWxsLT56YXAoSGVhcENlbGw6OlN0b3BBbGxvY2F0aW5nKTsKICAg
ICAgICAgICAgIGJsb2NrKCkuY2xlYXJOZXdseUFsbG9jYXRlZChjZWxsKTsKICAgICAgICAgfSk7
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHJl
dmlzaW9uIDI0ODExMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2Nr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw2ICsxOTgsMTAgQEAgcHVibGljOgogICAgICAgICB2
b2lkIGRpZEFkZFRvRGlyZWN0b3J5KEJsb2NrRGlyZWN0b3J5Kiwgc2l6ZV90IGluZGV4KTsKICAg
ICAgICAgdm9pZCBkaWRSZW1vdmVGcm9tRGlyZWN0b3J5KCk7CiAgICAgICAgIAorICAgICAgICB2
b2lkKiBzdGFydCgpIGNvbnN0IHsgcmV0dXJuICZtX2Jsb2NrLT5hdG9tcygpWzBdOyB9CisgICAg
ICAgIHZvaWQqIGVuZCgpIGNvbnN0IHsgcmV0dXJuICZtX2Jsb2NrLT5hdG9tcygpW21fZW5kQXRv
bV07IH0KKyAgICAgICAgYm9vbCBjb250YWlucyh2b2lkKiBwKSBjb25zdCB7IHJldHVybiBzdGFy
dCgpIDw9IHAgJiYgcCA8IGVuZCgpOyB9CisKICAgICAgICAgdm9pZCBkdW1wU3RhdGUoUHJpbnRT
dHJlYW0mKTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCShyZXZpc2lvbiAyNDgxMTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNw
ZWNpYWxpemVkU3dlCiAgICAgICAgIEpTQ2VsbCoganNDZWxsID0gc3RhdGljX2Nhc3Q8SlNDZWxs
Kj4oY2VsbCk7CiAgICAgICAgIGlmICghanNDZWxsLT5pc1phcHBlZCgpKSB7CiAgICAgICAgICAg
ICBkZXN0cm95RnVuYyh2bSwganNDZWxsKTsKLSAgICAgICAgICAgIGpzQ2VsbC0+emFwKCk7Cisg
ICAgICAgICAgICBqc0NlbGwtPnphcChIZWFwQ2VsbDo6RGVzdHJ1Y3Rpb24pOwogICAgICAgICB9
CiAgICAgfTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNw
YWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2UuaAkocmV2aXNpb24gMjQ4MTEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCw3IEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hMaXZlQ2VsbChIZWFwSXRl
cmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4gdm9pZCBmb3JFYWNoRGVhZENlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVu
Y3RvciYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEJsb2Nr
KGNvbnN0IEZ1bmN0b3ImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZv
ckVhY2hTdWJzcGFjZShjb25zdCBGdW5jdG9yJik7CiAKICAgICB2b2lkIHNocmluaygpOwogICAg
IHZvaWQgZnJlZUJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKQEAgLTI0MCw2ICsyNDEsMTYg
QEAgdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaERpcmVjdG9yeShjb25zdAogICAgIH0KIH0KIAor
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KK3ZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hTdWJz
cGFjZShjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAgIGZvciAoYXV0byBzdWJzcGFjZSA6
IG1fc3Vic3BhY2VzKSB7CisgICAgICAgIGlmIChmdW5jdG9yKCpzdWJzcGFjZSkgPT0gSXRlcmF0
aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworCiBBTFdB
WVNfSU5MSU5FIHNpemVfdCBNYXJrZWRTcGFjZTo6b3B0aW1hbFNpemVGb3Ioc2l6ZV90IGJ5dGVz
KQogewogICAgIEFTU0VSVChieXRlcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TbG90VmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvU2xvdFZpc2l0b3IuY3BwCShyZXZpc2lvbiAyNDgxMTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Niw4ICsyODYs
MTQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ29udGFpbmVyVHlwZT4KIEFMV0FZU19JTkxJTkUgdm9p
ZCBTbG90VmlzaXRvcjo6YXBwZW5kVG9NYXJrU3RhY2soQ29udGFpbmVyVHlwZSYgY29udGFpbmVy
LCBKU0NlbGwqIGNlbGwpCiB7CiAgICAgQVNTRVJUKG1faGVhcC5pc01hcmtlZChjZWxsKSk7Cisj
aWYgQ1BVKFg4Nl82NCkKKyAgICBpZiAoT3B0aW9uczo6ZHVtcFphcHBlZENlbGxDcmFzaERhdGEo
KSkgeworICAgICAgICBpZiAoVU5MSUtFTFkoY2VsbC0+aXNaYXBwZWQoKSkpCisgICAgICAgICAg
ICByZXBvcnRaYXBwZWRDZWxsQW5kQ3Jhc2goY2VsbCk7CisgICAgfQorI2VuZGlmCiAgICAgQVNT
RVJUKCFjZWxsLT5pc1phcHBlZCgpKTsKLSAgICAKKwogICAgIGNvbnRhaW5lci5ub3RlTWFya2Vk
KCk7CiAgICAgCiAgICAgbV92aXNpdENvdW50Kys7CkBAIC0zODUsNiArMzkxLDE3IEBAIEFMV0FZ
U19JTkxJTkUgdm9pZCBTbG90VmlzaXRvcjo6dmlzaXRDaGkKICAgICBkZWZhdWx0OgogICAgICAg
ICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBzbyBtdWNoIGJldHRlci4KICAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjQ2MgorI2lmIENQVShYODZf
NjQpCisgICAgICAgIGlmIChPcHRpb25zOjpkdW1wWmFwcGVkQ2VsbENyYXNoRGF0YSgpKSB7Cisg
ICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNlbGwtPnN0cnVjdHVyZSh2bSgpKTsK
KyAgICAgICAgICAgIGlmIChMSUtFTFkoc3RydWN0dXJlKSkgeworICAgICAgICAgICAgICAgIGNv
bnN0IE1ldGhvZFRhYmxlKiBtZXRob2RUYWJsZSA9ICZzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5t
ZXRob2RUYWJsZTsKKyAgICAgICAgICAgICAgICBtZXRob2RUYWJsZS0+dmlzaXRDaGlsZHJlbihj
b25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCAqdGhpcyk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXBvcnRaYXBwZWRDZWxsQW5kQ3Jhc2goY29u
c3RfY2FzdDxKU0NlbGwqPihjZWxsKSk7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBjZWxs
LT5tZXRob2RUYWJsZSh2bSgpKS0+dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+KGNl
bGwpLCAqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTgwNCw0ICs4MjEsMzMgQEAg
dm9pZCBTbG90VmlzaXRvcjo6YWRkUGFyYWxsZWxDb25zdHJhaW50VAogICAgIG1fY3VycmVudFNv
bHZlci0+YWRkUGFyYWxsZWxUYXNrKHRhc2ssICptX2N1cnJlbnRDb25zdHJhaW50KTsKIH0KIAor
I2lmIENQVShYODZfNjQpCitORVZFUl9JTkxJTkUgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBOT1Rf
VEFJTF9DQUxMRUQgdm9pZCBTbG90VmlzaXRvcjo6cmVwb3J0WmFwcGVkQ2VsbEFuZENyYXNoKEpT
Q2VsbCogY2VsbCkKK3sKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBmb3VuZEJsb2NrID0gbnVs
bHB0cjsKKyAgICB1aW50MzJfdCogY2VsbFdvcmRzID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dWlu
dDMyX3QqPih0aGlzKTsKKworICAgIHVpbnRwdHJfdCBjZWxsQWRkcmVzcyA9IGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KGNlbGwpOworICAgIHVpbnRwdHJfdCBoZWFkZXJXb3JkID0gY2VsbFdvcmRz
WzFdOworICAgIHVpbnRwdHJfdCB6YXBSZWFzb24gPSBjZWxsV29yZHNbMl07CisgICAgdW5zaWdu
ZWQgc3Vic3BhY2VIYXNoID0gMDsKKyAgICBzaXplX3QgY2VsbFNpemUgPSAwOworCisgICAgbV9o
ZWFwLm9iamVjdFNwYWNlKCkuZm9yRWFjaEJsb2NrKFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSog
YmxvY2spIHsKKyAgICAgICAgaWYgKGJsb2NrLT5jb250YWlucyhjZWxsKSkgeworICAgICAgICAg
ICAgZm91bmRCbG9jayA9IGJsb2NrOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1
czo6RG9uZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250
aW51ZTsKKyAgICB9KTsKKworICAgIGlmIChmb3VuZEJsb2NrKSB7CisgICAgICAgIHN1YnNwYWNl
SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2goZm91bmRCbG9jay0+c3Vic3BhY2UoKS0+
bmFtZSgpKTsKKyAgICAgICAgY2VsbFNpemUgPSBmb3VuZEJsb2NrLT5jZWxsU2l6ZSgpOworICAg
IH0KKworICAgIENSQVNIX1dJVEhfSU5GTyhjZWxsQWRkcmVzcywgaGVhZGVyV29yZCwgemFwUmVh
c29uLCBzdWJzcGFjZUhhc2gsIGNlbGxTaXplKTsKK30KKyNlbmRpZiAvLyBQTEFURk9STShNQUMp
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
U2xvdFZpc2l0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
bG90VmlzaXRvci5oCShyZXZpc2lvbiAyNDgxMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9TbG90VmlzaXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjcsNiArMjI3LDEwIEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBoYXNXb3JrKGNvbnN0IEFic3RyYWN0TG9ja2VyJik7CiAgICAgYm9v
bCBkaWRSZWFjaFRlcm1pbmF0aW9uKGNvbnN0IEFic3RyYWN0TG9ja2VyJik7CiAKKyNpZiBDUFUo
WDg2XzY0KQorICAgIE5FVkVSX0lOTElORSBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIE5PVF9UQUlM
X0NBTExFRCB2b2lkIHJlcG9ydFphcHBlZENlbGxBbmRDcmFzaChKU0NlbGwqKTsKKyNlbmRpZgor
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICBJdGVyYXRpb25TdGF0dXMgZm9yRWFj
aE1hcmtTdGFjayhjb25zdCBGdW5jJik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDI0ODExMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTQ2LDcgKzU0Niw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0QWxsb2NhdGVXaXRoTm8K
ICAgICAgICAgCiAgICAgLy8gVGhlIG9iamVjdCBpcyBoYWxmLWFsbG9jYXRlZDogd2UgaGF2ZSB3
aGF0IHdlIGtub3cgaXMgYSBmcmVzaCBvYmplY3QsIGJ1dAogICAgIC8vIGl0J3Mgc3RpbGwgb24g
dGhlIEdDJ3MgZnJlZSBsaXN0LgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHRHUFIpLCBzY3Jh
dGNoR1BSKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0R1BSLCBGcmVlQ2VsbDo6b2Zmc2V0
T2ZTY3JhbWJsZWROZXh0KCkpLCBzY3JhdGNoR1BSKTsKICAgICBzdG9yZVB0cihzY3JhdGNoR1BS
LCBBZGRyZXNzKGFsbG9jYXRvckdQUiwgTG9jYWxBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3Qo
KSArIEZyZWVMaXN0OjpvZmZzZXRPZlNjcmFtYmxlZEhlYWQoKSkpOwogICAgICAgICAKICAgICBk
b25lLmxpbmsodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmNwcAkocmV2aXNpb24gMjQ4MTEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNCw2ICs2MDQsMTEgQEAgdm9pZCBP
cHRpb25zOjppbml0aWFsaXplKCkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAj
ZW5kaWYKKworI2lmIENQVShYODZfNjQpICYmIE9TKERBUldJTikKKyAgICAgICAgICAgIE9wdGlv
bnM6OmR1bXBaYXBwZWRDZWxsQ3Jhc2hEYXRhKCkgPQorICAgICAgICAgICAgICAgIChod1BoeXNp
Y2FsQ1BVTWF4KCkgPj0gNCkgJiYgIChod0wzQ2FjaGVTaXplKCkgPj0gc3RhdGljX2Nhc3Q8aW50
NjRfdD4oNiAqIE1CKSk7CisjZW5kaWYKICAgICAgICAgfSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDI0ODExMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjQx
LDYgKzI0MSw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4KICAg
ICB2KGJvb2wsIHVzZUJ1bXBBbGxvY2F0b3IsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAogICAg
IHYoYm9vbCwgc3RlYWxFbXB0eUJsb2Nrc0Zyb21PdGhlckFsbG9jYXRvcnMsIHRydWUsIE5vcm1h
bCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgZWFnZXJseVVwZGF0ZVRvcENhbGxGcmFtZSwgZmFs
c2UsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYoYm9vbCwgZHVtcFphcHBlZENlbGxDcmFzaERh
dGEsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCiAgICAgdihib29sLCB1c2VPU1JF
bnRyeVRvREZHLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIHVzZU9TUkVu
dHJ5VG9GVEwsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjQ4MTEwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsMjkgKzI2NSwyOSBAQCBW
TTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCB3ZWJBc3NlbWJs
eUNvZGVCbG9ja0hlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2tIZWFwQ2VsbFR5cGU+KCkpCiAgICAgLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxU
eXBlKHN0ZDo6bWFrZV91bmlxdWU8V2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZT4oKSkK
ICNlbmRpZgotICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiUHJpbWl0aXZl
IEdpZ2FjYWdlIEF1eGlsaWFyeSIsIGhlYXAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZS5nZXQoKSwg
cHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpCi0gICAgLCBqc1ZhbHVlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZSgiSlNWYWx1ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCBhdXhpbGlh
cnlIZWFwQ2VsbFR5cGUuZ2V0KCksIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkKLSAg
ICAsIGltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJJbW11
dGFibGVCdXR0ZXJmbHkgR2lnYWNhZ2UgSlNDZWxsV2l0aEludGVyaW9yUG9pbnRlcnMiLCBoZWFw
LCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUuZ2V0KCksIGpzVmFsdWVHaWdhY2FnZUFs
bG9jYXRvci5nZXQoKSkKLSAgICAsIGNlbGxTcGFjZSgiSlNDZWxsIiwgaGVhcCwgY2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkKLSAgICAsIGpzVmFsdWVH
aWdhY2FnZUNlbGxTcGFjZSgiSlNWYWx1ZSBHaWdhY2FnZSBKU0NlbGwiLCBoZWFwLCBjZWxsSGVh
cENlbGxUeXBlLmdldCgpLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpCi0gICAgLCBk
ZXN0cnVjdGlibGVDZWxsU3BhY2UoIkRlc3RydWN0aWJsZSBKU0NlbGwiLCBoZWFwLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKQot
ICAgICwgc3RyaW5nU3BhY2UoIkpTU3RyaW5nIiwgaGVhcCwgc3RyaW5nSGVhcENlbGxUeXBlLmdl
dCgpLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKQotICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0
U3BhY2UoIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IiwgaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmdldCgpLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKQotICAgICwgZWFnZXJs
eVN3ZXB0RGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoIkVhZ2VybHkgU3dlcHQgSlNEZXN0cnVjdGli
bGVPYmplY3QiLCBoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIGZh
c3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpCi0gICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZSkKLSAgICAsIGZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNGdW5jdGlvbikKLSAgICAsIGlu
dGVybmFsRnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGVybmFsRnVuY3Rpb24pCi0gICAgLCBuYXRpdmVF
eGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgTmF0aXZlRXhlY3V0YWJsZSkKLSAgICAsIHByb3BlcnR5VGFibGVT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBQcm9wZXJ0eVRhYmxlKQotICAgICwgc3RydWN0dXJlUmFyZURhdGFTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBT
dHJ1Y3R1cmVSYXJlRGF0YSkKLSAgICAsIHN0cnVjdHVyZVNwYWNlIElTT19TVUJTUEFDRV9JTklU
KGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFN0cnVjdHVyZSkKLSAg
ICAsIHN5bWJvbFRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU3ltYm9sVGFibGUpCisgICAgLCBwcmltaXRpdmVHaWdh
Y2FnZUF1eGlsaWFyeVNwYWNlKCJQcmltaXRpdmUgR2lnYWNhZ2UgQXV4aWxpYXJ5IiwgaGVhcCwg
YXV4aWxpYXJ5SGVhcENlbGxUeXBlLmdldCgpLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvci5n
ZXQoKSkgLy8gSGFzaDoweDNlN2NkNzYyCisgICAgLCBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZSgiSlNWYWx1ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCBhdXhpbGlhcnlIZWFwQ2Vs
bFR5cGUuZ2V0KCksIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDI0
MWU5NDYKKyAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlKCJJbW11dGFibGVCdXR0ZXJmbHkgR2lnYWNhZ2UgSlNDZWxsV2l0aEludGVyaW9yUG9pbnRl
cnMiLCBoZWFwLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUuZ2V0KCksIGpzVmFsdWVH
aWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDdhOTQ1MzAwCisgICAgLCBjZWxsU3Bh
Y2UoIkpTQ2VsbCIsIGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIGZhc3RNYWxsb2NBbGxv
Y2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHhhZGZiNWE3OQorICAgICwganNWYWx1ZUdpZ2FjYWdlQ2Vs
bFNwYWNlKCJKU1ZhbHVlIEdpZ2FjYWdlIEpTQ2VsbCIsIGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDJmNWIxMDJi
CisgICAgLCBkZXN0cnVjdGlibGVDZWxsU3BhY2UoIkRlc3RydWN0aWJsZSBKU0NlbGwiLCBoZWFw
LCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBmYXN0TWFsbG9jQWxsb2NhdG9y
LmdldCgpKSAvLyBIYXNoOjB4YmZmZjNkNzMKKyAgICAsIHN0cmluZ1NwYWNlKCJKU1N0cmluZyIs
IGhlYXAsIHN0cmluZ0hlYXBDZWxsVHlwZS5nZXQoKSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQo
KSkgLy8gSGFzaDoweDkwY2Y3NThmCisgICAgLCBkZXN0cnVjdGlibGVPYmplY3RTcGFjZSgiSlNE
ZXN0cnVjdGlibGVPYmplY3QiLCBoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Z2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg0ZjVlZDdhOQorICAg
ICwgZWFnZXJseVN3ZXB0RGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2UoIkVhZ2VybHkgU3dlcHQgSlNE
ZXN0cnVjdGlibGVPYmplY3QiLCBoZWFwLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
Z2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg2ZWJmMjhlMgorICAg
ICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAs
IGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UpIC8vIEhh
c2g6MHg3YjczMGIyMAorICAgICwgZnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFw
LCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0Z1bmN0aW9uKSAvLyBIYXNoOjB4ODAwZmNhNzIK
KyAgICAsIGludGVybmFsRnVuY3Rpb25TcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGVybmFsRnVuY3Rpb24pIC8vIEhh
c2g6MHhmODQ1YzQ2NAorICAgICwgbmF0aXZlRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9J
TklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIE5hdGl2ZUV4ZWN1
dGFibGUpIC8vIEhhc2g6MHg2NzU2N2Y5NQorICAgICwgcHJvcGVydHlUYWJsZVNwYWNlIElTT19T
VUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFBy
b3BlcnR5VGFibGUpIC8vIEhhc2g6MHhjNmJjOWYxMgorICAgICwgc3RydWN0dXJlUmFyZURhdGFT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBTdHJ1Y3R1cmVSYXJlRGF0YSkgLy8gSGFzaDoweGFjYTRlNjJkCisgICAgLCBzdHJ1
Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmUpIC8vIEhhc2g6MHgxZjFiY2RjYQorICAgICwgc3ltYm9s
VGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBTeW1ib2xUYWJsZSkgLy8gSGFzaDoweGM1MjE1YWZkCiAgICAgLCBleGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cyhleGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlU3BhY2UpCiAgICAgLCBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6
ZXJzKGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSkKLSAgICAsIGNvZGVCbG9ja1NwYWNl
IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIENvZGVCbG9jaykKLSAgICAsIGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFD
RV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEZ1bmN0aW9u
RXhlY3V0YWJsZSkKLSAgICAsIHByb2dyYW1FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgUHJvZ3JhbUV4ZWN1
dGFibGUpCi0gICAgLCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFD
RV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKQorICAgICwgY29kZUJsb2NrU3BhY2UgSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgQ29kZUJsb2NrKSAv
LyBIYXNoOjB4NzdlNjZlYzkKKyAgICAsIGZ1bmN0aW9uRXhlY3V0YWJsZVNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEZ1bmN0
aW9uRXhlY3V0YWJsZSkgLy8gSGFzaDoweDVkMTU4ZjMKKyAgICAsIHByb2dyYW1FeGVjdXRhYmxl
U3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgUHJvZ3JhbUV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1MjdjNzdlNworICAgICwgdW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSkgLy8gSGFzaDoweGY2YjgyOGQ5CiAgICAgLCB2bVR5cGUodm1UeXBlKQogICAgICwgY2xpZW50
RGF0YSgwKQogICAgICwgdG9wRW50cnlGcmFtZShudWxscHRyKQpAQCAtMTI0MywyMiArMTI0Mywy
MiBAQCB2b2lkIFZNOjplbnN1cmVTaGFkb3dDaGlja2VuKCkKICAgICB9CiAKIAotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGJvdW5kRnVuY3Rpb25TcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNCb3VuZEZ1bmN0aW9uKQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrRnVuY3Rpb25TcGFjZSwgZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0NhbGxiYWNrRnVuY3Rpb24pCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25TcGFj
ZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbikK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhlcnJvckluc3RhbmNlU3Bh
Y2UsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgRXJyb3JJbnN0YW5jZSkK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhuYXRpdmVTdGRGdW5jdGlv
blNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU05hdGl2ZVN0ZEZ1bmN0aW9uKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHByb3h5UmV2b2tlU3BhY2UsIGRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgUHJveHlSZXZva2UpCi1EWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha01hcFNwYWNlLCBkZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2Vha01hcCkKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrU2V0U3BhY2UsIGRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNXZWFrU2V0KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHdlYWtPYmplY3RSZWZTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNXZWFrT2JqZWN0UmVmKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KGJvdW5kRnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNCb3VuZEZ1bmN0
aW9uKSAvLyBIYXNoOjB4ZDc5MTZkNDEKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhjYWxsYmFja0Z1bmN0aW9uU3BhY2UsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNDYWxsYmFja0Z1bmN0aW9uKSAvLyBIYXNoOjB4ZTc2NDhlYmMKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjdXN0b21HZXR0ZXJTZXR0ZXJGdW5j
dGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0N1c3RvbUdldHRlclNldHRlckZ1
bmN0aW9uKSAvLyBIYXNoOjB4MTgwOTEwMDAKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhlcnJvckluc3RhbmNlU3BhY2UsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5nZXQoKSwgRXJyb3JJbnN0YW5jZSkgLy8gSGFzaDoweDNmNDBkNGEKK0RZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhuYXRpdmVTdGRGdW5jdGlvblNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBKU05hdGl2ZVN0ZEZ1bmN0aW9uKSAvLyBIYXNoOjB4NzBlZDYx
ZTQKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhwcm94eVJldm9rZVNw
YWNlLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFByb3h5UmV2b2tlKSAv
LyBIYXNoOjB4YjUwNmE5MzkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh3ZWFrTWFwU3BhY2UsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNX
ZWFrTWFwKSAvLyBIYXNoOjB4NjYyYjEyYTMKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh3ZWFrU2V0U3BhY2UsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNXZWFrU2V0KSAvLyBIYXNoOjB4NGM3ODFiMzAKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh3ZWFrT2JqZWN0UmVmU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTV2Vha09iamVjdFJlZikgLy8gSGFzaDoweDhlYzY4ZjFmCiAjaWYgSlNDX09CSkNf
QVBJX0VOQUJMRUQKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhvYmpD
Q2FsbGJhY2tGdW5jdGlvblNwYWNlLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksIE9iakNDYWxsYmFja0Z1bmN0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKG9iakNDYWxsYmFja0Z1bmN0aW9uU3BhY2UsIGRlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5nZXQoKSwgT2JqQ0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHgxMGY2MTBi
OAogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UsIHdlYkFzc2VtYmx5
Q29kZUJsb2NrSGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5RnVuY3Rpb25T
cGFjZSwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZS5nZXQoKSwgV2ViQXNzZW1ibHlG
dW5jdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3Nl
bWJseVdyYXBwZXJGdW5jdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBXZWJBc3Nl
bWJseVdyYXBwZXJGdW5jdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyh3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNXZWJBc3NlbWJseUNvZGVCbG9jaykgLy8gSGFzaDoweDlhZDk5NWNk
CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlGdW5j
dGlvblNwYWNlLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlLmdldCgpLCBXZWJBc3Nl
bWJseUZ1bmN0aW9uKSAvLyBIYXNoOjB4OGI3YzMyZGIKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvblNwYWNlLCBjZWxsSGVh
cENlbGxUeXBlLmdldCgpLCBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbikgLy8gSGFzaDoweGQ0
YTVmZjAxCiAjZW5kaWYKIAogI3VuZGVmIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVwpAQCAtMTI3Myw4ICsxMjczLDggQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKAogICAgICAgICByZXR1cm4gJm1fIyNuYW1lLT5zcGFjZTsgXAogICAgIH0K
IAotRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhldmFsRXhlY3V0YWJs
ZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBFdmFsRXhlY3V0YWJs
ZSkKLURZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cobW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgTW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGUpCitEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJF
Ul9TTE9XKGV2YWxFeGVjdXRhYmxlU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEV2YWxFeGVjdXRhYmxlKSAvLyBIYXNoOjB4OTU4ZTNlOWQKK0RZTkFNSUNfU1BBQ0Vf
QU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cobW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSwg
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUpIC8vIEhhc2g6MHg2NTA2ZmEzYwogCiAjdW5kZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RF
RklORV9NRU1CRVJfU0xPVwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNE
b2xsYXJWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pT
RG9sbGFyVk0uY3BwCShyZXZpc2lvbiAyNDgxMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOTQsNiArMTM5NCwxNSBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorLy8gRHVtcHMgdGhlIGhhc2hlcyBv
ZiBhbGwgc3Vic3BhY2VzIGN1cnJlbnRseSByZWdpc3RlcmVkIHdpdGggdGhlIFZNLgorLy8gVXNh
Z2U6ICR2bS5kdW1wU3Vic3BhY2VIYXNoZXMoKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25EdW1wU3Vic3BhY2VIYXNoZXMoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk1JbnNwZWN0b3I6OmR1bXBTdWJzcGFjZUhh
c2hlcygmdm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9
CisKIC8vIEdldHMgYSBKU0RvbGxhclZNQ2FsbEZyYW1lIGZvciBhIHNwZWNpZmllZCBmcmFtZSBp
bmRleC4KIC8vIFVzYWdlOiB2YXIgY2FsbEZyYW1lID0gJHZtLmNhbGxGcmFtZSgwKSAvLyBmcmFt
ZSAwIGlzIHRoZSB0b3AgZnJhbWUuCiAvLyBVc2FnZTogdmFyIGNhbGxGcmFtZSA9ICR2bS5jYWxs
RnJhbWUoKSAvLyBpbXBsaWVzIGZyYW1lIDAgaS5lLiBjdXJyZW50IGZyYW1lLgpAQCAtMjIyNSw2
ICsyMjM0LDcgQEAgdm9pZCBKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAKICAg
ICBhZGRGdW5jdGlvbih2bSwgImdjIiwgZnVuY3Rpb25HQywgMCk7CiAgICAgYWRkRnVuY3Rpb24o
dm0sICJlZGVuR0MiLCBmdW5jdGlvbkVkZW5HQywgMCk7CisgICAgYWRkRnVuY3Rpb24odm0sICJk
dW1wU3Vic3BhY2VIYXNoZXMiLCBmdW5jdGlvbkR1bXBTdWJzcGFjZUhhc2hlcywgMCk7CiAKICAg
ICBhZGRGdW5jdGlvbih2bSwgImNhbGxGcmFtZSIsIGZ1bmN0aW9uQ2FsbEZyYW1lLCAxKTsKICAg
ICBhZGRGdW5jdGlvbih2bSwgImNvZGVCbG9ja0ZvciIsIGZ1bmN0aW9uQ29kZUJsb2NrRm9yLCAx
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcAko
cmV2aXNpb24gMjQ4MTEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVj
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYyNiw0ICs2MjYsMTcgQEAgdm9pZCBWTUluc3Bl
Y3Rvcjo6ZHVtcENlbGxNZW1vcnlUb1N0cmVhbQogI3VuZGVmIElOREVOVAogfQogCit2b2lkIFZN
SW5zcGVjdG9yOjpkdW1wU3Vic3BhY2VIYXNoZXMoVk0qIHZtKQoreworICAgIHVuc2lnbmVkIGNv
dW50ID0gMDsKKyAgICB2bS0+aGVhcC5vYmplY3RTcGFjZSgpLmZvckVhY2hTdWJzcGFjZShbJl0g
KGNvbnN0IFN1YnNwYWNlJiBzdWJzcGFjZSkgLT4gSXRlcmF0aW9uU3RhdHVzIHsKKyAgICAgICAg
Y29uc3QgY2hhciogbmFtZSA9IHN1YnNwYWNlLm5hbWUoKTsKKyAgICAgICAgdW5zaWduZWQgaGFz
aCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2gobmFtZSk7CisgICAgICAgIHZvaWQqIGhhc2hB
c1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oaGFz
aCkpOworICAgICAgICBkYXRhTG9nTG4oIiAgICBbIiwgY291bnQrKywgIl0gIiwgbmFtZSwgIiBI
YXNoOiIsIFJhd1BvaW50ZXIoaGFzaEFzUHRyKSk7CisgICAgICAgIHJldHVybiBJdGVyYXRpb25T
dGF0dXM6OkNvbnRpbnVlOworICAgIH0pOworICAgIGRhdGFMb2dMbigpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rv
ci5oCShyZXZpc2lvbiAyNDgxMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1J
bnNwZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc4LDYgKzc4LDcgQEAgcHVibGljOgogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGR1bXBWYWx1ZShKU1ZhbHVlKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkdW1wQ2VsbE1lbW9yeShKU0NlbGwqKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkdW1wQ2VsbE1lbW9yeVRvU3RyZWFtKEpT
Q2VsbCosIFByaW50U3RyZWFtJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
ZHVtcFN1YnNwYWNlSGFzaGVzKFZNKik7CiAKIHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0ZShjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQpJbmRleDog
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gMjQ4MTEwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDgtMDEgIE1hcmsgTGFtICA8bWFy
ay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBjcmFzaCBkaWFnbm9zdGljcyBmb3IgZGVi
dWdnaW5nIHVuZXhwZWN0ZWQgemFwcGVkIGNlbGxzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMTQ5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81
MzU3MDExMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIGEgZmVhdHVyZSBmb3IgZGVidWdnaW5nIGNy
YXNoZXMuICBJdCBoYXMgYmVlbiB0ZXN0ZWQKKyAgICAgICAgbWFudWFsbHkgYnkgbW9kaWZ5aW5n
IHRoZSBjb2RlIHRvIGZvcmNlIGEgY3Jhc2ggYXQgdGhlIHBvaW50IG9mIGludGVyZXN0LgorCisg
ICAgICAgIEFkZGVkIHNvbWUgY29tbWVudHMgdG8gZG9jdW1lbnQgdGhlIGhhc2hlcyBvZiBrbm93
biBzdWJzcGFjZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjpKU1ZNQ2xpZW50RGF0YSk6
CisKIDIwMTktMDctMzEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbmFtZSBET01KSVQgc2FmZS91bnNhZmVGdW5jdGlvbiB0byBmdW5jdGlvbldpdGhUeXBlQ2hl
Y2tzIGFuZCBmdW5jdGlvbldpdGhvdXRUeXBlQ2hlY2tzLgpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAJKHJldmlzaW9uIDI0
ODExMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw5ICs0Myw5IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiBKU1ZNQ2xpZW50RGF0YTo6SlNWTUNsaWVudERhdGEoVk0mIHZtKQogICAgIDogbV9idWlsdGlu
RnVuY3Rpb25zKHZtKQogICAgICwgbV9idWlsdGluTmFtZXMoJnZtKQotICAgICwgbV9ydW50aW1l
TWV0aG9kU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmdldCgpLCBSdW50aW1lTWV0aG9kKQotICAgICwgbV9vdXRwdXRDb25z
dHJhaW50U3BhY2UoIldlYkNvcmUgV3JhcHBlciB3LyBPdXRwdXQgQ29uc3RyYWludCIsIHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgdm0uZmFzdE1hbGxv
Y0FsbG9jYXRvci5nZXQoKSkKLSAgICAsIG1fZ2xvYmFsT2JqZWN0T3V0cHV0Q29uc3RyYWludFNw
YWNlKCJXZWJDb3JlIEdsb2JhbCBPYmplY3Qgdy8gT3V0cHV0IENvbnN0cmFpbnQiLCB2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCB2bS5mYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgp
KQorICAgICwgbV9ydW50aW1lTWV0aG9kU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBSdW50aW1lTWV0aG9kKSAv
LyBIYXNoOjB4ZjcwYzRhODUKKyAgICAsIG1fb3V0cHV0Q29uc3RyYWludFNwYWNlKCJXZWJDb3Jl
IFdyYXBwZXIgdy8gT3V0cHV0IENvbnN0cmFpbnQiLCB2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIHZtLmZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8v
IEhhc2g6MHg3NzI0YzJlNAorICAgICwgbV9nbG9iYWxPYmplY3RPdXRwdXRDb25zdHJhaW50U3Bh
Y2UoIldlYkNvcmUgR2xvYmFsIE9iamVjdCB3LyBPdXRwdXQgQ29uc3RyYWludCIsIHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIHZtLmZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkp
IC8vIEhhc2g6MHg1MjJkNmVjOQogewogfQogCg==
</data>
<flag name="review"
          id="391127"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375346</attachid>
            <date>2019-08-01 14:28:59 -0700</date>
            <delta_ts>2019-08-01 18:06:38 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-200149.patch</filename>
            <type>text/plain</type>
            <size>31438</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ4MTMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcyIEBA
CisyMDE5LTA4LTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgY3Jhc2ggZGlhZ25vc3RpY3MgZm9yIGRlYnVnZ2luZyB1bmV4cGVjdGVkIHphcHBlZCBjZWxs
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDE0
OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTM1NzAxMTI+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBBZGQgYSBjaGVjayBmb3IgemFwcGVkIGNlbGxz
IGluIFNsb3RWaXNpdG9yOjphcHBlbmRUb01hcmtTdGFjaygpIGFuZAorICAgICAgICBTbG90Vmlz
aXRvcjo6dmlzaXRDaGlsZHJlbigpLiAgSWYgYSB6YXBwZWQgY2VsbCBpcyBkZXRlY3RlZCwgd2Ug
d2lsbCBjcmFzaCB3aXRoCisgICAgICAgIHNvbWUgZGlhZ25vc3RpYyBpbmZvLgorCisgICAgICAg
IFRvIGZhY2lsaXRhdGUgdGhpcywgd2UndmUgbWFkZSB0aGUgZm9sbG93aW5nIGNoYW5nZXM6Cisg
ICAgICAgIDEuIENoYW5nZWQgRnJlZUNlbGwgdG8gcHJlc2VydmUgdGhlIDFzdCA4IGJ5dGVzLiAg
VGhpcyBpcyBmaW5lIHRvIGRvIGJlY2F1c2UgYWxsCisgICAgICAgICAgIGNlbGxzIGFyZSBhdCBs
ZWFzdCAxNiBieXRlcyBsb25nLgorICAgICAgICAyLiBDaGFuZ2VkIEhlYXBDZWxsOjp6YXAoKSB0
byBvbmx5IHphcCB0aGUgc3RydWN0dXJlSUQuICBMZWF2ZSB0aGUgcmVzdCBvZiB0aGUKKyAgICAg
ICAgICAgY2VsbCBoZWFkZXIgaW5mbyBpbnRhY3QgKGluY2x1ZGluZyB0aGUgY2VsbCBKU1R5cGUp
LgorICAgICAgICAzLiBDaGFuZ2VkIEhlYXBDZWxsOjp6YXAoKSB0byByZWNvcmQgdGhlIHJlYXNv
biBmb3IgemFwcGluZyB0aGUgY2VsbC4gIFdlIHN0YXNoCisgICAgICAgICAgIHRoZSByZWFzb24g
aW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGZpcnN0IDggYnl0ZXMuICBUaGlzIGlzIHRoZSBzYW1lIGxv
Y2F0aW9uIGFzCisgICAgICAgICAgIEZyZWVDZWxsOjpzY3JhbWJsZWROZXh0LiAgSG93ZXZlciwg
c2luY2UgYSBjZWxsIGlzIG5vdCBleHBlY3RlZCB0byBiZSB6YXBwZWQKKyAgICAgICAgICAgYW5k
IG9uIHRoZSBmcmVlIGxpc3QgYXQgdGhlIHNhbWUgdGltZSwgaXQgaXMgYWxzbyBmaW5lIHRvIGRv
IHRoaXMuCisgICAgICAgIDQuIEFkZGVkIGEgZmV3IHV0aWxpdHkgZnVuY3Rpb25zIHRvIE1hcmtl
ZEJsb2NrIGZvciBjaGVja2luZyBpZiBhIGNlbGwgcG9pbnRzCisgICAgICAgICAgIGludG8gdGhl
IGJsb2NrLgorICAgICAgICA1LiBBZGRlZCBWTUluc3BlY3RvciBhbmQgSlNEb2xsYXJWTSB1dGls
aXRpZXMgdG8gZHVtcCBpbi11c2Ugc3Vic3BhY2UgaGFzaGVzLgorICAgICAgICA2LiBBZGRlZCBz
b21lIGNvbW1lbnRzIHRvIGRvY3VtZW50IHRoZSBoYXNoZXMgb2Yga25vd24gc3Vic3BhY2VzLgor
ICAgICAgICA3LiBBZGRlZCBPcHRpb25zOjpkdW1wWmFwcGVkQ2VsbENyYXNoRGF0YSgpIHRvIG1h
a2UgdGhpcyBjaGVjayBjb25kaXRpb25hbC4KKyAgICAgICAgICAgV2UgdXNlIHRoaXMgb3B0aW9u
IHRvIGRpc2FibGUgdGhpcyBjaGVjayBmb3Igc2xvd2VyIG1hY2hpbmVzIHNvIHRoYXQgdGhlaXIK
KyAgICAgICAgICAgUExUNSBwZXJmb3JtYW5jZSBpcyBub3QgaW1wYWN0ZWQuCisKKyAgICAgICAg
KiBhc3NlbWJsZXIvQ1BVLmNwcDoKKyAgICAgICAgKEpTQzo6aHdMM0NhY2hlU2l6ZSk6CisgICAg
ICAgIChKU0M6Omh3UGh5c2ljYWxDUFVNYXgpOgorICAgICAgICAqIGFzc2VtYmxlci9DUFUuaDoK
KyAgICAgICAgKEpTQzo6aHdMM0NhY2hlU2l6ZSk6CisgICAgICAgIChKU0M6Omh3UGh5c2ljYWxD
UFVNYXgpOgorICAgICAgICAqIGhlYXAvRnJlZUxpc3QuaDoKKyAgICAgICAgKEpTQzo6RnJlZUNl
bGw6Om9mZnNldE9mU2NyYW1ibGVkTmV4dCk6CisgICAgICAgICogaGVhcC9IZWFwQ2VsbC5oOgor
ICAgICAgICAoSlNDOjpIZWFwQ2VsbDo6emFwKToKKyAgICAgICAgKEpTQzo6SGVhcENlbGw6Omlz
WmFwcGVkIGNvbnN0KToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcpOgorICAgICAgICAqIGhl
YXAvTWFya2VkQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3Rh
cnQgY29uc3QpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjplbmQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpjb250YWlucyBjb25zdCk6Cisg
ICAgICAgICogaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6TWFya2Vk
QmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZWRTd2VlcCk6CisgICAgICAgICogaGVhcC9NYXJrZWRT
cGFjZS5oOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFjaFN1YnNwYWNlKToKKyAg
ICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6
OmFwcGVuZFRvTWFya1N0YWNrKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6cmVwb3J0WmFwcGVkQ2VsbEFuZENy
YXNoKToKKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmg6CisgICAgICAgICogaml0L0Fzc2Vt
Ymx5SGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdEFsbG9j
YXRlV2l0aE5vbk51bGxBbGxvY2F0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6
CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemUpOgorICAgICAgICAqIHJ1bnRpbWUv
T3B0aW9ucy5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6
Vk0pOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5j
dGlvbkR1bXBTdWJzcGFjZUhhc2hlcyk6CisgICAgICAgIChKU0M6OkpTRG9sbGFyVk06OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiB0b29scy9WTUluc3BlY3Rvci5jcHA6CisgICAgICAgIChK
U0M6OlZNSW5zcGVjdG9yOjpkdW1wU3Vic3BhY2VIYXNoZXMpOgorICAgICAgICAqIHRvb2xzL1ZN
SW5zcGVjdG9yLmg6CisKIDIwMTktMDctMzEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbmFtZSBET01KSVQgc2FmZS91bnNhZmVGdW5jdGlvbiB0byBmdW5jdGlv
bldpdGhUeXBlQ2hlY2tzIGFuZCBmdW5jdGlvbldpdGhvdXRUeXBlQ2hlY2tzLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9DUFUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmNwcAkocmV2aXNpb24gMjQ4MTEwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9DUFUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Niw2ICs2NiwyNyBAQCBpbnQga2VyblRDU01Bd2FyZU51bWJlck9mUHJvY2Vzc29yQ29yZXMo
CiAgICAgfSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KKworaW50NjRfdCBod0wzQ2FjaGVTaXpl
KCkKK3sKKyAgICBpbnQ2NF90IHZhbCA9IDA7CisgICAgc2l6ZV90IHZhbFNpemUgPSBzaXplb2Yo
dmFsKTsKKyAgICBpbnQgcmMgPSBzeXNjdGxieW5hbWUoImh3LmwzY2FjaGVzaXplIiwgJnZhbCwg
JnZhbFNpemUsIG51bGxwdHIsIDApOworICAgIGlmIChyYyA8IDApCisgICAgICAgIHJldHVybiAw
OworICAgIHJldHVybiB2YWw7Cit9CisKK2ludDMyX3QgaHdQaHlzaWNhbENQVU1heCgpCit7Cisg
ICAgaW50NjRfdCB2YWwgPSAwOworICAgIHNpemVfdCB2YWxTaXplID0gc2l6ZW9mKHZhbCk7Cisg
ICAgaW50IHJjID0gc3lzY3RsYnluYW1lKCJody5waHlzaWNhbGNwdV9tYXgiLCAmdmFsLCAmdmFs
U2l6ZSwgbnVsbHB0ciwgMCk7CisgICAgaWYgKHJjIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIHZhbDsKK30KKwogI2VuZGlmIC8vICNpZiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82
NCkpICYmIE9TKERBUldJTikKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmgJKHJldmlzaW9uIDI0ODExMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDUsMTAgKzE0
NSwxNCBAQCBpbmxpbmUgYm9vbCBoYXNTZW5zaWJsZURvdWJsZVRvSW50KCkKIGJvb2wgaXNLZXJu
VENTTUF2YWlsYWJsZSgpOwogYm9vbCBlbmFibGVLZXJuVENTTSgpOwogaW50IGtlcm5UQ1NNQXdh
cmVOdW1iZXJPZlByb2Nlc3NvckNvcmVzKCk7CitpbnQ2NF90IGh3TDNDYWNoZVNpemUoKTsKK2lu
dDMyX3QgaHdQaHlzaWNhbENQVU1heCgpOwogI2Vsc2UKIEFMV0FZU19JTkxJTkUgYm9vbCBpc0tl
cm5UQ1NNQXZhaWxhYmxlKCkgeyByZXR1cm4gZmFsc2U7IH0KIEFMV0FZU19JTkxJTkUgYm9vbCBl
bmFibGVLZXJuVENTTSgpIHsgcmV0dXJuIGZhbHNlOyB9CiBBTFdBWVNfSU5MSU5FIGludCBrZXJu
VENTTUF3YXJlTnVtYmVyT2ZQcm9jZXNzb3JDb3JlcygpIHsgcmV0dXJuIFdURjo6bnVtYmVyT2ZQ
cm9jZXNzb3JDb3JlcygpOyB9CitBTFdBWVNfSU5MSU5FIGludDY0X3QgaHdMM0NhY2hlU2l6ZSgp
IHsgcmV0dXJuIDA7IH0KK0FMV0FZU19JTkxJTkUgaW50MzJfdCBod1BoeXNpY2FsQ1BVTWF4KCkg
eyByZXR1cm4ga2VyblRDU01Bd2FyZU51bWJlck9mUHJvY2Vzc29yQ29yZXMoKTsgfQogI2VuZGlm
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
RnJlZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GcmVl
TGlzdC5oCShyZXZpc2lvbiAyNDgxMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9G
cmVlTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTMsNiArNTMsOSBAQCBzdHJ1Y3QgRnJlZUNl
bGwgewogICAgICAgICByZXR1cm4gZGVzY3JhbWJsZShzY3JhbWJsZWROZXh0LCBzZWNyZXQpOwog
ICAgIH0KICAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2NyYW1ibGVkTmV4dCgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihGcmVlQ2VsbCwgc2NyYW1ibGVkTmV4dCk7IH0KKwor
ICAgIHVpbnQ2NF90IHByZXNlcnZlZEJpdHNGb3JDcmFzaEFuYWx5c2lzOwogICAgIHVpbnRwdHJf
dCBzY3JhbWJsZWROZXh0OwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcENlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
Q2VsbC5oCShyZXZpc2lvbiAyNDgxMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDcsOCArNDcsMTcgQEAgcHVibGljOgogICAg
IAogICAgIEhlYXBDZWxsKCkgeyB9CiAgICAgCi0gICAgdm9pZCB6YXAoKSB7ICpyZWludGVycHJl
dF9jYXN0X3B0cjx1aW50cHRyX3QqKj4odGhpcykgPSAwOyB9Ci0gICAgYm9vbCBpc1phcHBlZCgp
IGNvbnN0IHsgcmV0dXJuICEqcmVpbnRlcnByZXRfY2FzdF9wdHI8dWludHB0cl90KiBjb25zdCo+
KHRoaXMpOyB9CisgICAgLy8gV2UncmUgaW50ZW50aW9uYWxseSBvbmx5IHphcHBpbmcgdGhlIGJp
dHMgZm9yIHRoZSBzdHJ1Y3R1cmVJRCBhbmQgbGVhdmluZworICAgIC8vIHRoZSByZXN0IG9mIHRo
ZSBjZWxsIGhlYWRlciBiaXRzIGludGFjdCBmb3IgY3Jhc2ggYW5hbHlzaXMgdXNlcy4KKyAgICBl
bnVtIFphcFJlYXNvbiA6IGludDhfdCB7IFVuc3BlY2lmaWVkLCBEZXN0cnVjdGlvbiwgU3RvcEFs
bG9jYXRpbmcgfTsKKyAgICB2b2lkIHphcChaYXBSZWFzb24gcmVhc29uKQorICAgIHsKKyAgICAg
ICAgdWludDMyX3QqIGNlbGxXb3JkcyA9IGJpdHdpc2VfY2FzdDx1aW50MzJfdCo+KHRoaXMpOwor
ICAgICAgICBjZWxsV29yZHNbMF0gPSAwOworICAgICAgICAvLyBMZWF2aW5nIGNlbGxXb3Jkc1sx
XSBhbG9uZSBmb3IgY3Jhc2ggYW5hbHlzaXMgaWYgbmVlZGVkLgorICAgICAgICBjZWxsV29yZHNb
Ml0gPSByZWFzb247CisgICAgfQorICAgIGJvb2wgaXNaYXBwZWQoKSBjb25zdCB7IHJldHVybiAh
KmJpdHdpc2VfY2FzdDxjb25zdCB1aW50MzJfdCo+KHRoaXMpOyB9CiAKICAgICBib29sIGlzTGl2
ZSgpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3Bw
CShyZXZpc2lvbiAyNDgxMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRC
bG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0aW5nCiAgICAgICAgICAgICBpZiAoTWFya2VkQmxvY2tJ
bnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJGcmVlIGNlbGw6ICIs
IFJhd1BvaW50ZXIoY2VsbCksICJcbiIpOwogICAgICAgICAgICAgaWYgKG1fYXR0cmlidXRlcy5k
ZXN0cnVjdGlvbiA9PSBOZWVkc0Rlc3RydWN0aW9uKQotICAgICAgICAgICAgICAgIGNlbGwtPnph
cCgpOworICAgICAgICAgICAgICAgIGNlbGwtPnphcChIZWFwQ2VsbDo6U3RvcEFsbG9jYXRpbmcp
OwogICAgICAgICAgICAgYmxvY2soKS5jbGVhck5ld2x5QWxsb2NhdGVkKGNlbGwpOwogICAgICAg
ICB9KTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2Nr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
aAkocmV2aXNpb24gMjQ4MTEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDYgKzE5OCwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIHZvaWQgZGlkQWRkVG9EaXJlY3RvcnkoQmxvY2tEaXJlY3RvcnkqLCBzaXplX3QgaW5kZXgp
OwogICAgICAgICB2b2lkIGRpZFJlbW92ZUZyb21EaXJlY3RvcnkoKTsKICAgICAgICAgCisgICAg
ICAgIHZvaWQqIHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gJm1fYmxvY2stPmF0b21zKClbMF07IH0K
KyAgICAgICAgdm9pZCogZW5kKCkgY29uc3QgeyByZXR1cm4gJm1fYmxvY2stPmF0b21zKClbbV9l
bmRBdG9tXTsgfQorICAgICAgICBib29sIGNvbnRhaW5zKHZvaWQqIHApIGNvbnN0IHsgcmV0dXJu
IHN0YXJ0KCkgPD0gcCAmJiBwIDwgZW5kKCk7IH0KKwogICAgICAgICB2b2lkIGR1bXBTdGF0ZShQ
cmludFN0cmVhbSYpOwogICAgICAgICAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJKHJldmlzaW9uIDI0ODEx
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjU4LDcgKzI1OCw3IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6c3BlY2lhbGl6ZWRTd2UKICAgICAgICAgSlNDZWxsKiBqc0NlbGwgPSBzdGF0aWNfY2FzdDxK
U0NlbGwqPihjZWxsKTsKICAgICAgICAgaWYgKCFqc0NlbGwtPmlzWmFwcGVkKCkpIHsKICAgICAg
ICAgICAgIGRlc3Ryb3lGdW5jKHZtLCBqc0NlbGwpOwotICAgICAgICAgICAganNDZWxsLT56YXAo
KTsKKyAgICAgICAgICAgIGpzQ2VsbC0+emFwKEhlYXBDZWxsOjpEZXN0cnVjdGlvbik7CiAgICAg
ICAgIH0KICAgICB9OwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRTcGFjZS5oCShyZXZpc2lvbiAyNDgxMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNiArMTI0LDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaExpdmVDZWxsKEhl
YXBJdGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hEZWFkQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25z
dCBGdW5jdG9yJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNo
QmxvY2soY29uc3QgRnVuY3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZv
aWQgZm9yRWFjaFN1YnNwYWNlKGNvbnN0IEZ1bmN0b3ImKTsKIAogICAgIHZvaWQgc2hyaW5rKCk7
CiAgICAgdm9pZCBmcmVlQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSopOwpAQCAtMjQwLDYgKzI0
MSwxNiBAQCB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoRGlyZWN0b3J5KGNvbnN0CiAgICAgfQog
fQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFj
aFN1YnNwYWNlKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CisgICAgZm9yIChhdXRvIHN1YnNw
YWNlIDogbV9zdWJzcGFjZXMpIHsKKyAgICAgICAgaWYgKGZ1bmN0b3IoKnN1YnNwYWNlKSA9PSBJ
dGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorfQorCisK
IEFMV0FZU19JTkxJTkUgc2l6ZV90IE1hcmtlZFNwYWNlOjpvcHRpbWFsU2l6ZUZvcihzaXplX3Qg
Ynl0ZXMpCiB7CiAgICAgQVNTRVJUKGJ5dGVzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHJldmlzaW9uIDI0ODExMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg2LDgg
KzI4NiwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250YWluZXJUeXBlPgogQUxXQVlTX0lOTElO
RSB2b2lkIFNsb3RWaXNpdG9yOjphcHBlbmRUb01hcmtTdGFjayhDb250YWluZXJUeXBlJiBjb250
YWluZXIsIEpTQ2VsbCogY2VsbCkKIHsKICAgICBBU1NFUlQobV9oZWFwLmlzTWFya2VkKGNlbGwp
KTsKKyNpZiBDUFUoWDg2XzY0KQorICAgIGlmIChPcHRpb25zOjpkdW1wWmFwcGVkQ2VsbENyYXNo
RGF0YSgpKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShjZWxsLT5pc1phcHBlZCgpKSkKKyAgICAg
ICAgICAgIHJlcG9ydFphcHBlZENlbGxBbmRDcmFzaChjZWxsKTsKKyAgICB9CisjZW5kaWYKICAg
ICBBU1NFUlQoIWNlbGwtPmlzWmFwcGVkKCkpOwotICAgIAorCiAgICAgY29udGFpbmVyLm5vdGVN
YXJrZWQoKTsKICAgICAKICAgICBtX3Zpc2l0Q291bnQrKzsKQEAgLTM4NSw2ICszOTEsMTcgQEAg
QUxXQVlTX0lOTElORSB2b2lkIFNsb3RWaXNpdG9yOjp2aXNpdENoaQogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIHNvIG11Y2ggYmV0dGVyLgogICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNDYyCisjaWYgQ1BV
KFg4Nl82NCkKKyAgICAgICAgaWYgKE9wdGlvbnM6OmR1bXBaYXBwZWRDZWxsQ3Jhc2hEYXRhKCkp
IHsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2VsbC0+c3RydWN0dXJlKHZt
KCkpOworICAgICAgICAgICAgaWYgKExJS0VMWShzdHJ1Y3R1cmUpKSB7CisgICAgICAgICAgICAg
ICAgY29uc3QgTWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlID0gJnN0cnVjdHVyZS0+Y2xhc3NJbmZv
KCktPm1ldGhvZFRhYmxlOworICAgICAgICAgICAgICAgIG1ldGhvZFRhYmxlLT52aXNpdENoaWxk
cmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCksICp0aGlzKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlcG9ydFphcHBlZENlbGxBbmRDcmFz
aChjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpKTsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgICAg
IGNlbGwtPm1ldGhvZFRhYmxlKHZtKCkpLT52aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxs
Kj4oY2VsbCksICp0aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtODA0LDQgKzgyMSwz
MyBAQCB2b2lkIFNsb3RWaXNpdG9yOjphZGRQYXJhbGxlbENvbnN0cmFpbnRUCiAgICAgbV9jdXJy
ZW50U29sdmVyLT5hZGRQYXJhbGxlbFRhc2sodGFzaywgKm1fY3VycmVudENvbnN0cmFpbnQpOwog
fQogCisjaWYgQ1BVKFg4Nl82NCkKK05FVkVSX0lOTElORSBOT19SRVRVUk5fRFVFX1RPX0NSQVNI
IE5PVF9UQUlMX0NBTExFRCB2b2lkIFNsb3RWaXNpdG9yOjpyZXBvcnRaYXBwZWRDZWxsQW5kQ3Jh
c2goSlNDZWxsKiBjZWxsKQoreworICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGZvdW5kQmxvY2sg
PSBudWxscHRyOworICAgIHVpbnQzMl90KiBjZWxsV29yZHMgPSByZWludGVycHJldF9jYXN0X3B0
cjx1aW50MzJfdCo+KHRoaXMpOworCisgICAgdWludHB0cl90IGNlbGxBZGRyZXNzID0gYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4oY2VsbCk7CisgICAgdWludHB0cl90IGhlYWRlcldvcmQgPSBjZWxs
V29yZHNbMV07CisgICAgdWludHB0cl90IHphcFJlYXNvbiA9IGNlbGxXb3Jkc1syXTsKKyAgICB1
bnNpZ25lZCBzdWJzcGFjZUhhc2ggPSAwOworICAgIHNpemVfdCBjZWxsU2l6ZSA9IDA7CisKKyAg
ICBtX2hlYXAub2JqZWN0U3BhY2UoKS5mb3JFYWNoQmxvY2soWyZdIChNYXJrZWRCbG9jazo6SGFu
ZGxlKiBibG9jaykgeworICAgICAgICBpZiAoYmxvY2stPmNvbnRhaW5zKGNlbGwpKSB7CisgICAg
ICAgICAgICBmb3VuZEJsb2NrID0gYmxvY2s7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9u
U3RhdHVzOjpEb25lOworICAgICAgICB9CisgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6
OkNvbnRpbnVlOworICAgIH0pOworCisgICAgaWYgKGZvdW5kQmxvY2spIHsKKyAgICAgICAgc3Vi
c3BhY2VIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaChmb3VuZEJsb2NrLT5zdWJzcGFj
ZSgpLT5uYW1lKCkpOworICAgICAgICBjZWxsU2l6ZSA9IGZvdW5kQmxvY2stPmNlbGxTaXplKCk7
CisgICAgfQorCisgICAgQ1JBU0hfV0lUSF9JTkZPKGNlbGxBZGRyZXNzLCBoZWFkZXJXb3JkLCB6
YXBSZWFzb24sIHN1YnNwYWNlSGFzaCwgY2VsbFNpemUpOworfQorI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykKKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9TbG90VmlzaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1Nsb3RWaXNpdG9yLmgJKHJldmlzaW9uIDI0ODExMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNyw2ICsyMjcsMTAg
QEAgcHJpdmF0ZToKICAgICBib29sIGhhc1dvcmsoY29uc3QgQWJzdHJhY3RMb2NrZXImKTsKICAg
ICBib29sIGRpZFJlYWNoVGVybWluYXRpb24oY29uc3QgQWJzdHJhY3RMb2NrZXImKTsKIAorI2lm
IENQVShYODZfNjQpCisgICAgTkVWRVJfSU5MSU5FIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggTk9U
X1RBSUxfQ0FMTEVEIHZvaWQgcmVwb3J0WmFwcGVkQ2VsbEFuZENyYXNoKEpTQ2VsbCopOworI2Vu
ZGlmCisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIEl0ZXJhdGlvblN0YXR1cyBm
b3JFYWNoTWFya1N0YWNrKGNvbnN0IEZ1bmMmKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMjQ4MTEwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NDYsNyArNTQ2LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRBbGxvY2F0ZVdp
dGhObwogICAgICAgICAKICAgICAvLyBUaGUgb2JqZWN0IGlzIGhhbGYtYWxsb2NhdGVkOiB3ZSBo
YXZlIHdoYXQgd2Uga25vdyBpcyBhIGZyZXNoIG9iamVjdCwgYnV0CiAgICAgLy8gaXQncyBzdGls
bCBvbiB0aGUgR0MncyBmcmVlIGxpc3QuCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdEdQUiks
IHNjcmF0Y2hHUFIpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHRHUFIsIEZyZWVDZWxsOjpv
ZmZzZXRPZlNjcmFtYmxlZE5leHQoKSksIHNjcmF0Y2hHUFIpOwogICAgIHN0b3JlUHRyKHNjcmF0
Y2hHUFIsIEFkZHJlc3MoYWxsb2NhdG9yR1BSLCBMb2NhbEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVl
TGlzdCgpICsgRnJlZUxpc3Q6Om9mZnNldE9mU2NyYW1ibGVkSGVhZCgpKSk7CiAgICAgICAgIAog
ICAgIGRvbmUubGluayh0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuY3BwCShyZXZpc2lvbiAyNDgxMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA0LDYgKzYwNCwxMSBAQCB2
b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICNlbmRpZgorCisjaWYgQ1BVKFg4Nl82NCkgJiYgT1MoREFSV0lOKQorICAgICAgICAgICAg
T3B0aW9uczo6ZHVtcFphcHBlZENlbGxDcmFzaERhdGEoKSA9CisgICAgICAgICAgICAgICAgKGh3
UGh5c2ljYWxDUFVNYXgoKSA+PSA0KSAmJiAoaHdMM0NhY2hlU2l6ZSgpID49IHN0YXRpY19jYXN0
PGludDY0X3Q+KDYgKiBNQikpOworI2VuZGlmCiAgICAgICAgIH0pOwogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAyNDgxMTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI0MSw2ICsyNDEsNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWlu
CiAgICAgdihib29sLCB1c2VCdW1wQWxsb2NhdG9yLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwK
ICAgICB2KGJvb2wsIHN0ZWFsRW1wdHlCbG9ja3NGcm9tT3RoZXJBbGxvY2F0b3JzLCB0cnVlLCBO
b3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIGVhZ2VybHlVcGRhdGVUb3BDYWxsRnJhbWUs
IGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KGJvb2wsIGR1bXBaYXBwZWRDZWxsQ3Jh
c2hEYXRhLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgXAogICAgIHYoYm9vbCwgdXNl
T1NSRW50cnlUb0RGRywgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihib29sLCB1c2VP
U1JFbnRyeVRvRlRMLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDI0ODExMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY1LDI5ICsyNjUsMjkg
QEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgd2ViQXNz
ZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrSGVhcENlbGxUeXBlPigpKQogICAgICwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBD
ZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPFdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGU+
KCkpCiAjZW5kaWYKLSAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIlByaW1p
dGl2ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUuZ2V0
KCksIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKQotICAgICwganNWYWx1ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UoIkpTVmFsdWUgR2lnYWNhZ2UgQXV4aWxpYXJ5IiwgaGVhcCwgYXV4
aWxpYXJ5SGVhcENlbGxUeXBlLmdldCgpLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkp
Ci0gICAgLCBpbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgi
SW1tdXRhYmxlQnV0dGVyZmx5IEdpZ2FjYWdlIEpTQ2VsbFdpdGhJbnRlcmlvclBvaW50ZXJzIiwg
aGVhcCwgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlLmdldCgpLCBqc1ZhbHVlR2lnYWNh
Z2VBbGxvY2F0b3IuZ2V0KCkpCi0gICAgLCBjZWxsU3BhY2UoIkpTQ2VsbCIsIGhlYXAsIGNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkpCi0gICAgLCBqc1Zh
bHVlR2lnYWNhZ2VDZWxsU3BhY2UoIkpTVmFsdWUgR2lnYWNhZ2UgSlNDZWxsIiwgaGVhcCwgY2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKQotICAg
ICwgZGVzdHJ1Y3RpYmxlQ2VsbFNwYWNlKCJEZXN0cnVjdGlibGUgSlNDZWxsIiwgaGVhcCwgZGVz
dHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQo
KSkKLSAgICAsIHN0cmluZ1NwYWNlKCJKU1N0cmluZyIsIGhlYXAsIHN0cmluZ0hlYXBDZWxsVHlw
ZS5nZXQoKSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkKLSAgICAsIGRlc3RydWN0aWJsZU9i
amVjdFNwYWNlKCJKU0Rlc3RydWN0aWJsZU9iamVjdCIsIGhlYXAsIGRlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5nZXQoKSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkKLSAgICAsIGVh
Z2VybHlTd2VwdERlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJFYWdlcmx5IFN3ZXB0IEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0IiwgaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgp
LCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKQotICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UpCi0gICAgLCBmdW5jdGlvblNwYWNlIElTT19TVUJT
UEFDRV9JTklUKGhlYXAsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTRnVuY3Rpb24pCi0gICAg
LCBpbnRlcm5hbEZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRlcm5hbEZ1bmN0aW9uKQotICAgICwgbmF0
aXZlRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIE5hdGl2ZUV4ZWN1dGFibGUpCi0gICAgLCBwcm9wZXJ0eVRh
YmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgUHJvcGVydHlUYWJsZSkKLSAgICAsIHN0cnVjdHVyZVJhcmVEYXRhU3BhY2Ug
SVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQo
KSwgU3RydWN0dXJlUmFyZURhdGEpCi0gICAgLCBzdHJ1Y3R1cmVTcGFjZSBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJ1Y3R1cmUp
Ci0gICAgLCBzeW1ib2xUYWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0
aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFN5bWJvbFRhYmxlKQorICAgICwgcHJpbWl0aXZl
R2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiUHJpbWl0aXZlIEdpZ2FjYWdlIEF1eGlsaWFyeSIsIGhl
YXAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZS5nZXQoKSwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0
b3IuZ2V0KCkpIC8vIEhhc2g6MHgzZTdjZDc2MgorICAgICwganNWYWx1ZUdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UoIkpTVmFsdWUgR2lnYWNhZ2UgQXV4aWxpYXJ5IiwgaGVhcCwgYXV4aWxpYXJ5SGVh
cENlbGxUeXBlLmdldCgpLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6
MHgyNDFlOTQ2CisgICAgLCBpbW11dGFibGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZSgiSW1tdXRhYmxlQnV0dGVyZmx5IEdpZ2FjYWdlIEpTQ2VsbFdpdGhJbnRlcmlvclBv
aW50ZXJzIiwgaGVhcCwgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlLmdldCgpLCBqc1Zh
bHVlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg3YTk0NTMwMAorICAgICwgY2Vs
bFNwYWNlKCJKU0NlbGwiLCBoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBmYXN0TWFsbG9j
QWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4YWRmYjVhNzkKKyAgICAsIGpzVmFsdWVHaWdhY2Fn
ZUNlbGxTcGFjZSgiSlNWYWx1ZSBHaWdhY2FnZSBKU0NlbGwiLCBoZWFwLCBjZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgyZjVi
MTAyYgorICAgICwgZGVzdHJ1Y3RpYmxlQ2VsbFNwYWNlKCJEZXN0cnVjdGlibGUgSlNDZWxsIiwg
aGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgZmFzdE1hbGxvY0FsbG9j
YXRvci5nZXQoKSkgLy8gSGFzaDoweGJmZmYzZDczCisgICAgLCBzdHJpbmdTcGFjZSgiSlNTdHJp
bmciLCBoZWFwLCBzdHJpbmdIZWFwQ2VsbFR5cGUuZ2V0KCksIGZhc3RNYWxsb2NBbGxvY2F0b3Iu
Z2V0KCkpIC8vIEhhc2g6MHg5MGNmNzU4ZgorICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2Uo
IkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IiwgaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmdldCgpLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4NGY1ZWQ3YTkK
KyAgICAsIGVhZ2VybHlTd2VwdERlc3RydWN0aWJsZU9iamVjdFNwYWNlKCJFYWdlcmx5IFN3ZXB0
IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IiwgaGVhcCwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmdldCgpLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4NmViZjI4ZTIK
KyAgICAsIGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTcGFjZSBJU09fU1VCU1BBQ0VfSU5JVCho
ZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKSAv
LyBIYXNoOjB4N2I3MzBiMjAKKyAgICAsIGZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQo
aGVhcCwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNGdW5jdGlvbikgLy8gSGFzaDoweDgwMGZj
YTcyCisgICAgLCBpbnRlcm5hbEZ1bmN0aW9uU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwg
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRlcm5hbEZ1bmN0aW9uKSAv
LyBIYXNoOjB4Zjg0NWM0NjQKKyAgICAsIG5hdGl2ZUV4ZWN1dGFibGVTcGFjZSBJU09fU1VCU1BB
Q0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBOYXRpdmVF
eGVjdXRhYmxlKSAvLyBIYXNoOjB4Njc1NjdmOTUKKyAgICAsIHByb3BlcnR5VGFibGVTcGFjZSBJ
U09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBQcm9wZXJ0eVRhYmxlKSAvLyBIYXNoOjB4YzZiYzlmMTIKKyAgICAsIHN0cnVjdHVyZVJhcmVE
YXRhU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgU3RydWN0dXJlUmFyZURhdGEpIC8vIEhhc2g6MHhhY2E0ZTYyZAorICAgICwg
c3RydWN0dXJlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgU3RydWN0dXJlKSAvLyBIYXNoOjB4MWYxYmNkY2EKKyAgICAsIHN5
bWJvbFRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgU3ltYm9sVGFibGUpIC8vIEhhc2g6MHhjNTIxNWFmZAogICAgICwg
ZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHMoZXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZVNwYWNlKQogICAgICwgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZXNXaXRoRmlu
YWxpemVycyhleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3BhY2UpCi0gICAgLCBjb2RlQmxvY2tT
cGFjZSBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBDb2RlQmxvY2spCi0gICAgLCBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBGdW5j
dGlvbkV4ZWN1dGFibGUpCi0gICAgLCBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFD
RV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFByb2dyYW1F
eGVjdXRhYmxlKQotICAgICwgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSkKKyAgICAsIGNvZGVCbG9ja1NwYWNlIElTT19TVUJTUEFD
RV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIENvZGVCbG9j
aykgLy8gSGFzaDoweDc3ZTY2ZWM5CisgICAgLCBmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBG
dW5jdGlvbkV4ZWN1dGFibGUpIC8vIEhhc2g6MHg1ZDE1OGYzCisgICAgLCBwcm9ncmFtRXhlY3V0
YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIFByb2dyYW1FeGVjdXRhYmxlKSAvLyBIYXNoOjB4NTI3Yzc3ZTcKKyAgICAs
IHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwg
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUpIC8vIEhhc2g6MHhmNmI4MjhkOQogICAgICwgdm1UeXBlKHZtVHlwZSkKICAgICAsIGNs
aWVudERhdGEoMCkKICAgICAsIHRvcEVudHJ5RnJhbWUobnVsbHB0cikKQEAgLTEyNDMsMjIgKzEy
NDMsMjIgQEAgdm9pZCBWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbigpCiAgICAgfQogCiAKLURZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhib3VuZEZ1bmN0aW9uU3BhY2UsIGNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQm91bmRGdW5jdGlvbikKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0Z1bmN0aW9uU3BhY2UsIGRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDYWxsYmFja0Z1bmN0aW9uKQotRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9u
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b24pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZXJyb3JJbnN0YW5j
ZVNwYWNlLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEVycm9ySW5zdGFu
Y2UpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobmF0aXZlU3RkRnVu
Y3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNOYXRpdmVTdGRGdW5jdGlvbikK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhwcm94eVJldm9rZVNwYWNl
LCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIFByb3h5UmV2b2tlKQotRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYWtNYXBTcGFjZSwgZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYWtNYXApCi1EWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha1NldFNwYWNlLCBkZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2Vha1NldCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh3ZWFrT2JqZWN0UmVmU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTV2Vha09iamVjdFJlZikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhib3VuZEZ1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQm91bmRG
dW5jdGlvbikgLy8gSGFzaDoweGQ3OTE2ZDQxCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coY2FsbGJhY2tGdW5jdGlvblNwYWNlLCBkZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTQ2FsbGJhY2tGdW5jdGlvbikgLy8gSGFzaDoweGU3NjQ4ZWJjCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY3VzdG9tR2V0dGVyU2V0dGVy
RnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDdXN0b21HZXR0ZXJTZXR0
ZXJGdW5jdGlvbikgLy8gSGFzaDoweDE4MDkxMDAwCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coZXJyb3JJbnN0YW5jZVNwYWNlLCBkZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEVycm9ySW5zdGFuY2UpIC8vIEhhc2g6MHgzZjQwZDRhCitEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobmF0aXZlU3RkRnVuY3Rpb25TcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNOYXRpdmVTdGRGdW5jdGlvbikgLy8gSGFzaDoweDcw
ZWQ2MWU0CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cocHJveHlSZXZv
a2VTcGFjZSwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBQcm94eVJldm9r
ZSkgLy8gSGFzaDoweGI1MDZhOTM5CitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1cod2Vha01hcFNwYWNlLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTV2Vha01hcCkgLy8gSGFzaDoweDY2MmIxMmEzCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1cod2Vha1NldFNwYWNlLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTV2Vha1NldCkgLy8gSGFzaDoweDRjNzgxYjMwCitEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vha09iamVjdFJlZlNwYWNlLCBjZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBKU1dlYWtPYmplY3RSZWYpIC8vIEhhc2g6MHg4ZWM2OGYxZgogI2lmIEpTQ19P
QkpDX0FQSV9FTkFCTEVECi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
b2JqQ0NhbGxiYWNrRnVuY3Rpb25TcGFjZSwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCBPYmpDQ2FsbGJhY2tGdW5jdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhvYmpDQ2FsbGJhY2tGdW5jdGlvblNwYWNlLCBkZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUuZ2V0KCksIE9iakNDYWxsYmFja0Z1bmN0aW9uKSAvLyBIYXNoOjB4MTBm
NjEwYjgKICNlbmRpZgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlLCB3ZWJBc3Nl
bWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWJBc3NlbWJseUNvZGVCbG9jaykK
LURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUZ1bmN0
aW9uU3BhY2UsIHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUuZ2V0KCksIFdlYkFzc2Vt
Ymx5RnVuY3Rpb24pCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vi
QXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgV2Vi
QXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1cod2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSwgd2ViQXNzZW1ibHlDb2RlQmxvY2tI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2spIC8vIEhhc2g6MHg5YWQ5
OTVjZAorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5
RnVuY3Rpb25TcGFjZSwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZS5nZXQoKSwgV2Vi
QXNzZW1ibHlGdW5jdGlvbikgLy8gSGFzaDoweDhiN2MzMmRiCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TcGFjZSwgY2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24pIC8vIEhhc2g6
MHhkNGE1ZmYwMQogI2VuZGlmCiAKICN1bmRlZiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cKQEAgLTEyNzMsOCArMTI3Myw4IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVygKICAgICAgICAgcmV0dXJuICZtXyMjbmFtZS0+c3BhY2U7IFwKICAg
ICB9CiAKLURZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1coZXZhbEV4ZWN1
dGFibGVTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgRXZhbEV4ZWN1
dGFibGUpCi1EWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKG1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKQorRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9N
RU1CRVJfU0xPVyhldmFsRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBFdmFsRXhlY3V0YWJsZSkgLy8gSGFzaDoweDk1OGUzZTlkCitEWU5BTUlDX1NQ
QUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3Bh
Y2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlKSAvLyBIYXNoOjB4NjUwNmZhM2MKIAogI3VuZGVmIERZTkFNSUNfU1BBQ0VfQU5EX1NF
VF9ERUZJTkVfTUVNQkVSX1NMT1cKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L0pTRG9sbGFyVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9KU0RvbGxhclZNLmNwcAkocmV2aXNpb24gMjQ4MTEwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzk0LDYgKzEzOTQs
MTUgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuYwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKKy8vIER1bXBzIHRoZSBoYXNo
ZXMgb2YgYWxsIHN1YnNwYWNlcyBjdXJyZW50bHkgcmVnaXN0ZXJlZCB3aXRoIHRoZSBWTS4KKy8v
IFVzYWdlOiAkdm0uZHVtcFN1YnNwYWNlSGFzaGVzKCkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uRHVtcFN1YnNwYWNlSGFzaGVzKEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNSW5zcGVjdG9yOjpkdW1wU3Vic3Bh
Y2VIYXNoZXMoJnZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworfQorCiAvLyBHZXRzIGEgSlNEb2xsYXJWTUNhbGxGcmFtZSBmb3IgYSBzcGVjaWZpZWQgZnJh
bWUgaW5kZXguCiAvLyBVc2FnZTogdmFyIGNhbGxGcmFtZSA9ICR2bS5jYWxsRnJhbWUoMCkgLy8g
ZnJhbWUgMCBpcyB0aGUgdG9wIGZyYW1lLgogLy8gVXNhZ2U6IHZhciBjYWxsRnJhbWUgPSAkdm0u
Y2FsbEZyYW1lKCkgLy8gaW1wbGllcyBmcmFtZSAwIGkuZS4gY3VycmVudCBmcmFtZS4KQEAgLTIy
MjUsNiArMjIzNCw3IEBAIHZvaWQgSlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQog
CiAgICAgYWRkRnVuY3Rpb24odm0sICJnYyIsIGZ1bmN0aW9uR0MsIDApOwogICAgIGFkZEZ1bmN0
aW9uKHZtLCAiZWRlbkdDIiwgZnVuY3Rpb25FZGVuR0MsIDApOworICAgIGFkZEZ1bmN0aW9uKHZt
LCAiZHVtcFN1YnNwYWNlSGFzaGVzIiwgZnVuY3Rpb25EdW1wU3Vic3BhY2VIYXNoZXMsIDApOwog
CiAgICAgYWRkRnVuY3Rpb24odm0sICJjYWxsRnJhbWUiLCBmdW5jdGlvbkNhbGxGcmFtZSwgMSk7
CiAgICAgYWRkRnVuY3Rpb24odm0sICJjb2RlQmxvY2tGb3IiLCBmdW5jdGlvbkNvZGVCbG9ja0Zv
ciwgMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5j
cHAJKHJldmlzaW9uIDI0ODExMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUlu
c3BlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MjYsNCArNjI2LDE3IEBAIHZvaWQgVk1J
bnNwZWN0b3I6OmR1bXBDZWxsTWVtb3J5VG9TdHJlYW0KICN1bmRlZiBJTkRFTlQKIH0KIAordm9p
ZCBWTUluc3BlY3Rvcjo6ZHVtcFN1YnNwYWNlSGFzaGVzKFZNKiB2bSkKK3sKKyAgICB1bnNpZ25l
ZCBjb3VudCA9IDA7CisgICAgdm0tPmhlYXAub2JqZWN0U3BhY2UoKS5mb3JFYWNoU3Vic3BhY2Uo
WyZdIChjb25zdCBTdWJzcGFjZSYgc3Vic3BhY2UpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAg
ICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBzdWJzcGFjZS5uYW1lKCk7CisgICAgICAgIHVuc2lnbmVk
IGhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoKG5hbWUpOworICAgICAgICB2b2lkKiBo
YXNoQXNQdHIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+
KGhhc2gpKTsKKyAgICAgICAgZGF0YUxvZ0xuKCIgICAgWyIsIGNvdW50KyssICJdICIsIG5hbWUs
ICIgSGFzaDoiLCBSYXdQb2ludGVyKGhhc2hBc1B0cikpOworICAgICAgICByZXR1cm4gSXRlcmF0
aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICB9KTsKKyAgICBkYXRhTG9nTG4oKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNw
ZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNw
ZWN0b3IuaAkocmV2aXNpb24gMjQ4MTEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L1ZNSW5zcGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03OCw2ICs3OCw3IEBAIHB1YmxpYzoK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkdW1wVmFsdWUoSlNWYWx1ZSk7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZHVtcENlbGxNZW1vcnkoSlNDZWxsKik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZHVtcENlbGxNZW1vcnlUb1N0cmVh
bShKU0NlbGwqLCBQcmludFN0cmVhbSYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2
b2lkIGR1bXBTdWJzcGFjZUhhc2hlcyhWTSopOwogCiBwcml2YXRlOgogICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJhdGUoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODExMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE5LTA4LTAxICBNYXJrIExhbSAg
PG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgY3Jhc2ggZGlhZ25vc3RpY3MgZm9y
IGRlYnVnZ2luZyB1bmV4cGVjdGVkIHphcHBlZCBjZWxscy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDE0OQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNTM1NzAxMTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIGEgZmVhdHVyZSBmb3IgZGVidWdnaW5n
IGNyYXNoZXMuICBJdCBoYXMgYmVlbiB0ZXN0ZWQKKyAgICAgICAgbWFudWFsbHkgYnkgbW9kaWZ5
aW5nIHRoZSBjb2RlIHRvIGZvcmNlIGEgY3Jhc2ggYXQgdGhlIHBvaW50IG9mIGludGVyZXN0Lgor
CisgICAgICAgIEFkZGVkIHNvbWUgY29tbWVudHMgdG8gZG9jdW1lbnQgdGhlIGhhc2hlcyBvZiBr
bm93biBzdWJzcGFjZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnRE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjpKU1ZNQ2xpZW50RGF0
YSk6CisKIDIwMTktMDctMzEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbmFtZSBET01KSVQgc2FmZS91bnNhZmVGdW5jdGlvbiB0byBmdW5jdGlvbldpdGhUeXBl
Q2hlY2tzIGFuZCBmdW5jdGlvbldpdGhvdXRUeXBlQ2hlY2tzLgpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAJKHJldmlzaW9u
IDI0ODExMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERh
dGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw5ICs0Myw5IEBAIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiBKU1ZNQ2xpZW50RGF0YTo6SlNWTUNsaWVudERhdGEoVk0mIHZtKQogICAgIDogbV9idWls
dGluRnVuY3Rpb25zKHZtKQogICAgICwgbV9idWlsdGluTmFtZXMoJnZtKQotICAgICwgbV9ydW50
aW1lTWV0aG9kU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBSdW50aW1lTWV0aG9kKQotICAgICwgbV9vdXRwdXRD
b25zdHJhaW50U3BhY2UoIldlYkNvcmUgV3JhcHBlciB3LyBPdXRwdXQgQ29uc3RyYWludCIsIHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgdm0uZmFzdE1h
bGxvY0FsbG9jYXRvci5nZXQoKSkKLSAgICAsIG1fZ2xvYmFsT2JqZWN0T3V0cHV0Q29uc3RyYWlu
dFNwYWNlKCJXZWJDb3JlIEdsb2JhbCBPYmplY3Qgdy8gT3V0cHV0IENvbnN0cmFpbnQiLCB2bS5o
ZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCB2bS5mYXN0TWFsbG9jQWxsb2NhdG9yLmdl
dCgpKQorICAgICwgbV9ydW50aW1lTWV0aG9kU3BhY2UgSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBSdW50aW1lTWV0aG9k
KSAvLyBIYXNoOjB4ZjcwYzRhODUKKyAgICAsIG1fb3V0cHV0Q29uc3RyYWludFNwYWNlKCJXZWJD
b3JlIFdyYXBwZXIgdy8gT3V0cHV0IENvbnN0cmFpbnQiLCB2bS5oZWFwLCB2bS5kZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIHZtLmZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0KCkp
IC8vIEhhc2g6MHg3NzI0YzJlNAorICAgICwgbV9nbG9iYWxPYmplY3RPdXRwdXRDb25zdHJhaW50
U3BhY2UoIldlYkNvcmUgR2xvYmFsIE9iamVjdCB3LyBPdXRwdXQgQ29uc3RyYWludCIsIHZtLmhl
YXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIHZtLmZhc3RNYWxsb2NBbGxvY2F0b3IuZ2V0
KCkpIC8vIEhhc2g6MHg1MjJkNmVjOQogewogfQogCg==
</data>
<flag name="commit-queue"
          id="391162"
          type_id="3"
          status="-"
          setter="ews-watchlist"
    />
          </attachment>
      

    </bug>

</bugzilla>