<?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>194047</bug_id>
          
          <creation_ts>2019-01-30 14:13:15 -0800</creation_ts>
          <short_desc>Integrate JSC bytecode cache with WebKit</short_desc>
          <delta_ts>2019-06-04 16:17:51 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tadeu Zagallo">tzagallo</reporter>
          <assigned_to name="Tadeu Zagallo">tzagallo</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>koivisto</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1500182</commentid>
    <comment_count>0</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-01-30 14:13:15 -0800</bug_when>
    <thetext>Add the ability to the network process to generate, cache and retrieve bytecode for JavaScript files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500189</commentid>
    <comment_count>1</comment_count>
      <attachid>360620</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-01-30 14:27:39 -0800</bug_when>
    <thetext>Created attachment 360620
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500415</commentid>
    <comment_count>2</comment_count>
      <attachid>360620</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-30 21:26:43 -0800</bug_when>
    <thetext>Comment on attachment 360620
Patch

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

I would expect more SessionIDs in this patch to say which WebsiteDataStore to cache the bytecode in.  I guess we can get it from the pageID or get it the same way we get the pageID.

&gt; Source/JavaScriptCore/runtime/CodeCache.h:87
&gt;      int64_t age;
&gt; +    bool written;

Both of these could use initializer lists, or get rid of the default constructor.

&gt; Source/WebCore/loader/cache/CachedScript.cpp:117
&gt; +        memcpy(memory.get() + it.beginPosition, it.segment-&gt;data(), it.segment-&gt;size());

This seems like an unnecessary copy.

&gt; Source/WebCore/loader/cache/CachedScript.cpp:118
&gt; +    m_cachedBytecode = JSC::CachedBytecode { WTFMove(memory), size };

This is basically just a Vector&lt;uint8_t&gt;

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:850
&gt; +        Vector&lt;IPC::DerivedData&gt;* derivedData = new Vector&lt;IPC::DerivedData&gt;();

No need to call new here.  Just WTFMove an instance into the lambda capture list.

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:857
&gt; +                if (loader-&gt;hasOneRef())
&gt; +                    return;

Why?

&gt; Source/WebKit/NetworkProcess/cache/BytecodeCache.cpp:2
&gt; + * Copyright (C) 2019 Apple Inc.  All rights reserved.

There seems to be an extra space between Inc. and All.

&gt; Source/WebKit/NetworkProcess/cache/BytecodeCache.cpp:75
&gt; +    SHA1::Digest m_bodyHash;

Why SHA1?

&gt; Source/WebKit/NetworkProcess/cache/BytecodeCache.cpp:111
&gt; +        for (RefPtr&lt;Plan&gt; plan : m_plans)

Would &quot;const auto&amp;&quot; work, or do we need to keep a reference to this plan as we use it?

&gt; Source/WebKit/NetworkProcess/cache/BytecodeCache.cpp:135
&gt; +    RefPtr&lt;JSC::VM&gt; m_vm;

Ref&lt;JSC::VM&gt;

&gt; Source/WebKit/NetworkProcess/cache/BytecodeCache.cpp:144
&gt; +    m_thread = new Thread(locker, *this);

This is a memory leak.  It should be adopted.  I&apos;m also not sure you need to create a thread just for this.  I&apos;m also curious why WTF::Thread::create returns a Ref&lt;Thread&gt; but it has a comment saying it can return nullptr.  So many thread questions.

&gt; Source/WebKit/NetworkProcess/cache/BytecodeCache.h:50
&gt; +    using Plans = Vector&lt;RefPtr&lt;Plan&gt;, 8&gt;;

Can this be a Vector&lt;Ref&lt;Plan&gt;&gt;?

&gt; Source/WebKit/NetworkProcess/cache/BytecodeCache.h:55
&gt; +    static RefPtr&lt;BytecodeCache&gt; create(NetworkProcess&amp; networkProcess)

This could return a Ref&lt;BytecodeCache&gt;

&gt; Source/WebKit/NetworkProcess/cache/BytecodeCache.h:71
&gt; +    RefPtr&lt;AutomaticThread&gt; m_thread;

Can this be a Ref&lt;AutomaticThread&gt;?  Also still wondering why you need a thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501260</commentid>
    <comment_count>3</comment_count>
      <attachid>360620</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-02-01 13:41:41 -0800</bug_when>
    <thetext>Comment on attachment 360620
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/CodeCache.h:87
&gt;&gt; +    bool written;
&gt; 
&gt; Both of these could use initializer lists, or get rid of the default constructor.

I believe the default constructor is necessary for using it in the HashMap below, no?

&gt;&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:850
&gt;&gt; +        Vector&lt;IPC::DerivedData&gt;* derivedData = new Vector&lt;IPC::DerivedData&gt;();
&gt; 
&gt; No need to call new here.  Just WTFMove an instance into the lambda capture list.

That would move it multiple times.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:857
&gt;&gt; +                    return;
&gt; 
&gt; Why?

Not sure actually, this was part of the code that you had deleted and I added back. I assume that if this is the only ref to the loader, then we don&apos;t care about the response anymore?

&gt;&gt; Source/WebKit/NetworkProcess/cache/BytecodeCache.cpp:75
&gt;&gt; +    SHA1::Digest m_bodyHash;
&gt; 
&gt; Why SHA1?

That&apos;s what the NetworkCache uses.

&gt;&gt; Source/WebKit/NetworkProcess/cache/BytecodeCache.cpp:135
&gt;&gt; +    RefPtr&lt;JSC::VM&gt; m_vm;
&gt; 
&gt; Ref&lt;JSC::VM&gt;

The VM might be null if we don&apos;t have an underlying thread.

&gt;&gt; Source/WebKit/NetworkProcess/cache/BytecodeCache.cpp:144
&gt;&gt; +    m_thread = new Thread(locker, *this);
&gt; 
&gt; This is a memory leak.  It should be adopted.  I&apos;m also not sure you need to create a thread just for this.  I&apos;m also curious why WTF::Thread::create returns a Ref&lt;Thread&gt; but it has a comment saying it can return nullptr.  So many thread questions.

Oops, I copied it from the JITWorklist, I guess I should fix it there too...

&gt;&gt; Source/WebKit/NetworkProcess/cache/BytecodeCache.h:71
&gt;&gt; +    RefPtr&lt;AutomaticThread&gt; m_thread;
&gt; 
&gt; Can this be a Ref&lt;AutomaticThread&gt;?  Also still wondering why you need a thread.

I&apos;m using the thread to generate the bytecode for the script. I don&apos;t think we should block the main thread for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501856</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-02-04 09:35:21 -0800</bug_when>
    <thetext>A patch that applies to trunk would be nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501861</commentid>
    <comment_count>5</comment_count>
      <attachid>360620</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-02-04 09:42:11 -0800</bug_when>
    <thetext>Comment on attachment 360620
Patch

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

Looks generally good but lets get it apply before r+ing.

&gt;&gt;&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:850
&gt;&gt;&gt; +        Vector&lt;IPC::DerivedData&gt;* derivedData = new Vector&lt;IPC::DerivedData&gt;();
&gt;&gt; 
&gt;&gt; No need to call new here.  Just WTFMove an instance into the lambda capture list.
&gt; 
&gt; That would move it multiple times.

Please use smart pointers for memory management. Calling new (outside create() type functions that return smart pointers) is discouraged. 

auto derivedData = std::make_unique&lt;Vector&lt;IPC::DerivedData&gt;&gt;();

&gt;&gt;&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:857
&gt;&gt;&gt; +                    return;
&gt;&gt; 
&gt;&gt; Why?
&gt; 
&gt; Not sure actually, this was part of the code that you had deleted and I added back. I assume that if this is the only ref to the loader, then we don&apos;t care about the response anymore?

This lambda is then the only ref keeping the loader alive which implies there are no clients. A more stylish solution would use WeakPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502572</commentid>
    <comment_count>6</comment_count>
      <attachid>361237</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-02-05 16:08:35 -0800</bug_when>
    <thetext>Created attachment 361237
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502582</commentid>
    <comment_count>7</comment_count>
      <attachid>361242</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-02-05 16:19:55 -0800</bug_when>
    <thetext>Created attachment 361242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505029</commentid>
    <comment_count>8</comment_count>
      <attachid>361724</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-02-11 15:50:43 -0800</bug_when>
    <thetext>Created attachment 361724
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505701</commentid>
    <comment_count>9</comment_count>
      <attachid>361724</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-02-13 05:09:30 -0800</bug_when>
    <thetext>Comment on attachment 361724
Patch

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

&gt; Source/WebCore/loader/cache/CachedResource.cpp:319
&gt; +        auto* frameLoader = m_loader-&gt;frameLoader();
&gt; +        auto* frameLoaderClient = frameLoader ? &amp;frameLoader-&gt;client() : nullptr;
&gt; +        if (frameLoaderClient) {
&gt; +            m_webPageID = frameLoaderClient-&gt;pageID().valueOr(0);
&gt; +            m_webFrameID = frameLoaderClient-&gt;frameID().valueOr(0);
&gt; +        }

This is not correct. A CachedResource can have clients in multiple pages and frames.

&gt; Source/WebKit/NetworkProcess/cache/BytecodeCache.cpp:166
&gt; +    cache-&gt;retrieve(request, { webPageID,  webFrameID }, [bytecodeCache = makeRef(*this), request = WebCore::ResourceRequest { request }](auto entry, auto) {

I think you can just pass empty frameId and never pass webPageID/webFrameID around in the first place. It appears to be used for logging purposes only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528279</commentid>
    <comment_count>10</comment_count>
      <attachid>367681</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-04-17 14:52:11 -0700</bug_when>
    <thetext>Created attachment 367681
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1535346</commentid>
    <comment_count>11</comment_count>
      <attachid>369651</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-05-11 05:41:02 -0700</bug_when>
    <thetext>Created attachment 369651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1535347</commentid>
    <comment_count>12</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-05-11 05:42:20 -0700</bug_when>
    <thetext>I still need to update the ChangeLog for WebKit, and I&apos;m still running more benchmarks, but this is mostly working, so it might be nice to get some comments already if anyone wants to have a look at it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1535596</commentid>
    <comment_count>13</comment_count>
      <attachid>369724</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-05-13 05:43:46 -0700</bug_when>
    <thetext>Created attachment 369724
Patch

Rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536136</commentid>
    <comment_count>14</comment_count>
      <attachid>369724</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-05-14 10:53:24 -0700</bug_when>
    <thetext>Comment on attachment 369724
Patch

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

What&apos;s your plan for validating the performance benefit of this change?

&gt; Source/JavaScriptCore/runtime/Completion.cpp:148
&gt; +    vm.codeCache()-&gt;write(vm);

Will this write out all code in the cache? If so, can we do something more efficient to write out only the new code we just generated?

&gt; Source/WebCore/loader/cache/CachedScript.cpp:121
&gt; +    int fd = open(filename.ascii().data(), O_RDONLY | O_SHLOCK | O_NONBLOCK);

It would be nice to use WebCore::FileHandle instead of int. It&apos;s more portable, and more type-safe.

Since this fd is ultimately used in JavaScriptCore, you would need to move the FileHandle class to WTF. Since FileSystem is already in WTF, that might not be too hard.

I&apos;d suggest doing that in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536447</commentid>
    <comment_count>15</comment_count>
      <attachid>369724</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-05-15 09:22:22 -0700</bug_when>
    <thetext>Comment on attachment 369724
Patch

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

I have been testing with PLT and JetStream2, but not much luck there. I also ran some manual tests with some big scripts with short execution, and there I see a ~10% slowdown for the second request (when we generate the bytecode in the network process) and a ~65% speedup for the 3rd request onwards, once the cache has been populated.

&gt;&gt; Source/JavaScriptCore/runtime/Completion.cpp:148
&gt;&gt; +    vm.codeCache()-&gt;write(vm);
&gt; 
&gt; Will this write out all code in the cache? If so, can we do something more efficient to write out only the new code we just generated?

This will send a message to the network process for every SourceProvider that has been updated since the last call to write. The message has the metadata with what should be be cached.

&gt;&gt; Source/WebCore/loader/cache/CachedScript.cpp:121
&gt;&gt; +    int fd = open(filename.ascii().data(), O_RDONLY | O_SHLOCK | O_NONBLOCK);
&gt; 
&gt; It would be nice to use WebCore::FileHandle instead of int. It&apos;s more portable, and more type-safe.
&gt; 
&gt; Since this fd is ultimately used in JavaScriptCore, you would need to move the FileHandle class to WTF. Since FileSystem is already in WTF, that might not be too hard.
&gt; 
&gt; I&apos;d suggest doing that in a follow-up patch.

Sounds good. The reason I haven&apos;t been using the FileSystem in most places is that it doesn&apos;t allow for passing custom flags to open when mmapping a file, but I should probably add the functionality and updates the bytecode cache code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539763</commentid>
    <comment_count>16</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-05-28 15:42:58 -0700</bug_when>
    <thetext>&gt; I have been testing with PLT and JetStream2, but not much luck there. I also
&gt; ran some manual tests with some big scripts with short execution, and there
&gt; I see a ~10% slowdown for the second request (when we generate the bytecode
&gt; in the network process) and a ~65% speedup for the 3rd request onwards, once
&gt; the cache has been populated.

We need to figure out a strategy for performance testing that can tell us whether the strategy in this patch is OK, or needs improvement.

I think the ideal test would find some way to run PLT5 where iteration 1 commits entries to the cache and iteration 2 uses those cached entries. One way to do this might be just to run PLT5 with the iteration count explicitly set to 3. That way, the first run is uncached, the second run is cached (but without a bytecode cache), and the third run is fully cached (with a bytecode cache).

&gt; &gt;&gt; Source/JavaScriptCore/runtime/Completion.cpp:148
&gt; &gt;&gt; +    vm.codeCache()-&gt;write(vm);
&gt; &gt; 
&gt; &gt; Will this write out all code in the cache? If so, can we do something more efficient to write out only the new code we just generated?
&gt; 
&gt; This will send a message to the network process for every SourceProvider
&gt; that has been updated since the last call to write. The message has the
&gt; metadata with what should be be cached.

Seems potentially inefficient to iterate all CodeBlocks in the cache every time you call evaluate(). Can we do better here? Seems like we might be able to keep an explicit set of CodeBlocks with updates, or batch this iteration work with a timer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539914</commentid>
    <comment_count>17</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-05-29 02:33:01 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #16)
&gt; We need to figure out a strategy for performance testing that can tell us
&gt; whether the strategy in this patch is OK, or needs improvement.
&gt; 
&gt; I think the ideal test would find some way to run PLT5 where iteration 1
&gt; commits entries to the cache and iteration 2 uses those cached entries. One
&gt; way to do this might be just to run PLT5 with the iteration count explicitly
&gt; set to 3. That way, the first run is uncached, the second run is cached (but
&gt; without a bytecode cache), and the third run is fully cached (with a
&gt; bytecode cache).

I tried PLT5 with 3 iterations, it was not an improvement. Even the 3rd run was not faster. I think the next step is to measure how much time we spend in parsing + bytecode generation vs loading from cache + deserialization to see where are we not fast enough. We can chat about it if you have any ideas/suggestions.

&gt; Seems potentially inefficient to iterate all CodeBlocks in the cache every
&gt; time you call evaluate(). Can we do better here? Seems like we might be able
&gt; to keep an explicit set of CodeBlocks with updates, or batch this iteration
&gt; work with a timer.

Yes, we can definitely do better here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1541770</commentid>
    <comment_count>18</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-06-04 16:17:51 -0700</bug_when>
    <thetext>&gt; I tried PLT5 with 3 iterations, it was not an improvement. Even the 3rd run
&gt; was not faster.

That&apos;s really interesting! Seems to indicate that something is too slow about the WebKit version of deserialization. I&apos;d suggest focusing on the 3rd run number for now. We probably shouldn&apos;t enable this feature in WebKit until it&apos;s at least a speedup on the 3rd run.

&gt; I think the next step is to measure how much time we spend
&gt; in parsing + bytecode generation vs loading from cache + deserialization to
&gt; see where are we not fast enough. We can chat about it if you have any
&gt; ideas/suggestions.

Sounds good. One surprising detail is that we know that deserialization is a speedup in the JSC-only context.

I think the best next step is to profile the 3rd run of the PLT and look for time spent in bytecode stuff.

&gt; &gt; Seems potentially inefficient to iterate all CodeBlocks in the cache every
&gt; &gt; time you call evaluate(). Can we do better here? Seems like we might be able
&gt; &gt; to keep an explicit set of CodeBlocks with updates, or batch this iteration
&gt; &gt; work with a timer.
&gt; 
&gt; Yes, we can definitely do better here.

👍</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360620</attachid>
            <date>2019-01-30 14:27:39 -0800</date>
            <delta_ts>2019-02-05 16:08:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194047-20190130142719.patch</filename>
            <type>text/plain</type>
            <size>73044</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwNjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NWY2NjNkNDA5NDQyYTRlOGFhMGE4YTk4YWVlZmU0OWNmOWU0ZjdhLi41OGZhYWNmYjc0MzZkMzAx
MWU5Mjc2NTIwZWZlZTk0OGIzNWE1OThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxOS0wMS0zMCAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBJbnRlZ3JhdGUgSlNDIGJ5dGVjb2RlIGNhY2hlIHdpdGggV2ViS2l0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQwNDcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY2FsbGJh
Y2sgdG8gU291cmNlUHJvdmlkZXIgZm9yIGNhY2hpbmcgdGhlIGJ5dGVjb2RlLgorCisgICAgICAg
ICogcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgIChKU0M6OkNhY2hlZEJ5dGVjb2Rl
OjpDYWNoZWRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVyOjpjYWNoZUJ5
dGVjb2RlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAg
IChKU0M6OkNvZGVDYWNoZTo6d3JpdGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmg6
CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVWYWx1ZTo6U291cmNlQ29kZVZhbHVlKToKKyAgICAg
ICAgKEpTQzo6Q29kZUNhY2hlTWFwOjpmZXRjaEZyb21EaXNrSW1wbCk6CisgICAgICAgICogcnVu
dGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbHVhdGUpOgorCiAyMDE5LTAx
LTI4ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
UmVnRXhwQ29uc3RydWN0b3Igc2hvdWxkIG5vdCBoYXZlIG93biBJc29TdWJzcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDMwZTI3YzNiODdkYmIxMWQ1NGY4NGFhMTk4MWRkNzliZmM0M2ExMzYuLjgzMjhmYWQx
OGFjZmZlYTExODgxNjM0NjZmN2NkMDJjNzIzMzMwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
OCBAQAorMjAxOS0wMS0zMCAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBJbnRlZ3JhdGUgSlNDIGJ5dGVjb2RlIGNhY2hlIHdpdGggV2ViS2l0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQwNDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQ2FjaGVkQnl0ZWNv
ZGUgdG8gQ2FjaGVkU2NyaXB0LgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0RmV0Y2hlcjo6cmVxdWVzdFNjcmlwdFdp
dGhDYWNoZSBjb25zdCk6CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNl
UHJvdmlkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaDoKKyAgICAgICAg
KiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXI6OmRpZFJldHJpZXZlRGVyaXZlZERhdGFGcm9tQ2FjaGUpOgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlv
bnMuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJldHJpZXZlRGVyaXZlZERhdGFGcm9tQ2Fj
aGUpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVM
b2FkZXJPcHRpb25zOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6
bG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9hZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlOjp3ZWJQYWdlSUQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OndlYkZyYW1lSUQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6OmRpZFJldHJpZXZlRGVyaXZlZERhdGFGcm9tQ2FjaGUpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
U2NyaXB0OjpjYWNoZWRCeXRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6
OmRpZFJldHJpZXZlRGVyaXZlZERhdGFGcm9tQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRTY3JpcHQuaDoKKwogMjAxOS0wMS0yOCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0Bh
cHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gTWFrZSBXaW5kb3cgdmlydHVhbCBrZXkgY29kZSBj
b21wdXRhdGlvbiBtYXRjaCBNYWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTFhNTgzNWY5MDhmYjZhYjk1NGVjM2Jh
YTU5YmM3NDIyNDM2OGE0YS4uMmI2MmU5NjY5NGQ1ZmZhNjVmZDgzMmRlNDFlZmNhOTc0NjFiYWJl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OCBAQAorMjAxOS0wMS0zMCAgVGFkZXUgWmFnYWxsbyAg
PHR6YWdhbGxvQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRlZ3JhdGUgSlNDIGJ5dGVjb2RlIGNh
Y2hlIHdpdGggV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTQwNDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZXZlcnQgcGFydCBvZiB0aGUgY29kZSBkZWxldGVkIGluIHIyMzg5MzMsIGJ1dCBj
aGFuZ2UgaXQgdG8gcmV0cmlldmUgdGhlCisgICAgICAgIGRlcml2ZWQgZGF0YSBzeW5jaHJvbm91
c2x5LiBPdGhlcndpc2UsIHRoZSBieXRlY29kZSB3b3VsZCBub3QgYmUgYXZhaWxhYmxlCisgICAg
ICAgIGluIHRpbWUgZm9yIGV4ZWN1dGlvbi4KKworICAgICAgICBBZGRpdGlvbmFsbHkgIGEgQnl0
ZWNvZGVDYWNoZSB0byB0aGUgTmV0d29ya1Byb2Nlc3MgdG8gZ2VuZXJhdGUgYW5kIHN0b3JlCisg
ICAgICAgIGJ5dGVjb2RlIGZvciByZXF1ZXN0cy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNhY2hlQnl0ZWNvZGVGb3JSZXF1ZXN0KToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpieXRlY29kZUNhY2hlKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2Rl
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkUmV0cmlldmVDYWNoZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjpwcm9jZXNzQ2FjaGVkRW50cnlBZnRlckRpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQnl0ZWNvZGVDYWNoZS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpCeXRlY29kZUNhY2hlOjpQbGFuOjpQbGFuKToKKyAgICAgICAgKFdlYktpdDo6
Qnl0ZWNvZGVDYWNoZTo6UGxhbjo6Y29tcGlsZSk6CisgICAgICAgIChXZWJLaXQ6OkJ5dGVjb2Rl
Q2FjaGU6OlRocmVhZDo6VGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6Qnl0ZWNvZGVDYWNoZTo6
Qnl0ZWNvZGVDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OkJ5dGVjb2RlQ2FjaGU6On5CeXRlY29k
ZUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6Qnl0ZWNvZGVDYWNoZTo6Y2FjaGVCeXRlY29kZUZv
clJlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0J5dGVjb2RlQ2FjaGUu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291
cmNlUHJvdmlkZXIuaC4KKyAgICAgICAgKFdlYktpdDo6Qnl0ZWNvZGVDYWNoZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6c2FsdCBjb25zdCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2Ep
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVyaXZlZERhdGEuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKElQQzo6RGVyaXZlZERhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChJ
UEM6OkRlcml2ZWREYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZXJpdmVk
RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6RGVyaXZlZERhdGE6OkRlcml2ZWREYXRhKToK
KyAgICAgICAgKElQQzo6RGVyaXZlZERhdGE6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoSVBD
OjpEZXJpdmVkRGF0YTo6dHlwZSBjb25zdCk6CisgICAgICAgIChJUEM6OkRlcml2ZWREYXRhOjpk
YXRhIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9Mb2dnaW5nLmg6CisgICAgICAgICogU291
cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpjYWNoZUJ5dGVjb2Rl
Rm9yU2NyaXB0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46
CisKIDIwMTktMDEtMjggIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtpT1NdIE1ha2UgV2luZG93IHZpcnR1YWwga2V5IGNvZGUgY29tcHV0YXRpb24gbWF0Y2gg
TWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IGQ5NTkwZDhkMGU2MGM5ODI5NTdkNTFlMjg3YTQx
MTI5YzdkMDc4YTYuLmU4OTcyNjNlMjRlMjQ1NjkzNjJmOTVlYjJiOTU5ZWUyMzQ4NGJiMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDEtMzAgIFRhZGV1IFph
Z2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CisKKyAgICAgICAgSW50ZWdyYXRlIEpTQyBieXRl
Y29kZSBjYWNoZSB3aXRoIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk0MDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW1wbGVtZW50IExvYWRlclN0cmF0ZWd5J3MgYGNhY2hlQnl0ZWNvZGVG
b3JTY3JpcHRgIGFzIG5vLW9wLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmg6CisKIDIwMTktMDEtMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogICAKICAgICAgICAgUmVwbGFjZSBtYW55IHVzZXMgb2YgU3RyaW5nOjpmb3JtYXQg
d2l0aCBtb3JlIHR5cGUtc2FmZSBhbHRlcm5hdGl2ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaAppbmRleCBhNWU4MjViNzcyNzExNTQyOWYwYTc0ZDJl
NTE5MGIyYWRkYjNmNTllLi5iZDBhN2ViMWQ2MGNhYTczOWNiMWRiZjU4OWQ0YWIwYzhmNjQ3MDI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCkBA
IC02Nyw3ICs2NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBDYWNoZWRCeXRlY29k
ZShDYWNoZWRCeXRlY29kZSYmIG90aGVyKQogICAgICAgICB7Ci0gICAgICAgICAgICAqdGhpcyA9
IFdURk1vdmUob3RoZXIpOworICAgICAgICAgICAgbV9vd25lZCA9IG90aGVyLm1fb3duZWQ7Cisg
ICAgICAgICAgICBtX3NpemUgPSBvdGhlci5tX3NpemU7CisgICAgICAgICAgICBtX2RhdGEgPSBv
dGhlci5tX2RhdGE7CisgICAgICAgICAgICBvdGhlci5tX293bmVkID0gZmFsc2U7CiAgICAgICAg
IH0KIAogICAgICAgICBDYWNoZWRCeXRlY29kZSYgb3BlcmF0b3I9KENhY2hlZEJ5dGVjb2RlJiYg
b3RoZXIpCkBAIC0xMTMsNiArMTE2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1
YWwgdW5zaWduZWQgaGFzaCgpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBTdHJpbmdWaWV3
IHNvdXJjZSgpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBjb25zdCBDYWNoZWRCeXRlY29k
ZSogY2FjaGVkQnl0ZWNvZGUoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisgICAgICAgIHZp
cnR1YWwgdm9pZCBjYWNoZUJ5dGVjb2RlKCkgY29uc3QgeyB9CiAKICAgICAgICAgU3RyaW5nVmll
dyBnZXRSYW5nZShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0CiAgICAgICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IGI0MWU1MjY1MWYzZTdj
OWY2ZWNkZTIzZmZiOTY5OWM4OWRiNzg2NTcuLjI0N2ZiM2Y0NTA1NjQyMTkxNWRlMDU3YTMxMjQ1
M2QwNTkxNDBmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
ZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmNwcApAQCAtMTU5LDggKzE1OSwxNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29k
ZUNhY2hlOjpnZXRVbmxpbmtlZEdsb2JhbEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdgogCiB2b2lk
IENvZGVDYWNoZTo6d3JpdGUoVk0mIHZtKQogewotICAgIGZvciAoY29uc3QgYXV0byYgaXQgOiBt
X3NvdXJjZUNvZGUpCisgICAgZm9yIChhdXRvJiBpdCA6IG1fc291cmNlQ29kZSkgeworICAgICAg
ICBpZiAoaXQudmFsdWUud3JpdHRlbikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBp
dC52YWx1ZS53cml0dGVuID0gdHJ1ZTsKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGpzRHluYW1pY0Nhc3Q8VW5saW5rZWRDb2RlQmxvY2sqPih2bSwgaXQudmFsdWUuY2Vs
bC5nZXQoKSk7CisgICAgICAgIGlmICghY29kZUJsb2NrKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGl0LmtleS5zb3VyY2UoKS5wcm92aWRlcigpLmNhY2hlQnl0ZWNvZGUoKTsKKyAg
ICAgICAgLy8gRklYTUU6IE1vdmUgYHdyaXRlQ29kZUJsb2NrYCBpbnRvIGEgY3VzdG9tIFNvdXJj
ZVByb3ZpZGVyCiAgICAgICAgIHdyaXRlQ29kZUJsb2NrKHZtLCBpdC5rZXksIGl0LnZhbHVlKTsK
KyAgICB9CiB9CiAKIHZvaWQgZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvckZ1bmN0aW9ucyhW
TSYgdm0sIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgY29uc3QgU291cmNl
Q29kZSYgcGFyZW50U291cmNlLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQYXJzZXJFcnJv
ciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCmluZGV4
IDgwYzBkOTVmOWVmNzk0OTUyZTVmYmM2ODNlZTU2NjUwZTBhMDIxYWYuLmJlNDRiZGRlZTk5ZmU0
OTRlMTg4NWNhM2U3NzkxZGE2Njk0Zjg4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5oCkBAIC03NSwxNCArNzUsMTYgQEAgc3RydWN0IFNvdXJjZUNvZGVWYWx1
ZSB7CiAgICAgewogICAgIH0KIAotICAgIFNvdXJjZUNvZGVWYWx1ZShWTSYgdm0sIEpTQ2VsbCog
Y2VsbCwgaW50NjRfdCBhZ2UpCisgICAgU291cmNlQ29kZVZhbHVlKFZNJiB2bSwgSlNDZWxsKiBj
ZWxsLCBpbnQ2NF90IGFnZSwgYm9vbCB3cml0dGVuID0gZmFsc2UpCiAgICAgICAgIDogY2VsbCh2
bSwgY2VsbCkKICAgICAgICAgLCBhZ2UoYWdlKQorICAgICAgICAsIHdyaXR0ZW4od3JpdHRlbikK
ICAgICB7CiAgICAgfQogCiAgICAgU3Ryb25nPEpTQ2VsbD4gY2VsbDsKICAgICBpbnQ2NF90IGFn
ZTsKKyAgICBib29sIHdyaXR0ZW47CiB9OwogCiBjbGFzcyBDb2RlQ2FjaGVNYXAgewpAQCAtMTU0
LDcgKzE1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
ICAgIFZFUkJPU0VfTE9HKCJGb3VuZCBjYWNoZWQgQ29kZUJsb2NrIG9uIGRpc2siKTsKLSAgICAg
ICAgYWRkQ2FjaGUoa2V5LCBTb3VyY2VDb2RlVmFsdWUodm0sIHVubGlua2VkQ29kZUJsb2NrLCBt
X2FnZSkpOworICAgICAgICBhZGRDYWNoZShrZXksIFNvdXJjZUNvZGVWYWx1ZSh2bSwgdW5saW5r
ZWRDb2RlQmxvY2ssIG1fYWdlLCB0cnVlKSk7CiAgICAgICAgIHJldHVybiB1bmxpbmtlZENvZGVC
bG9jazsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh2bSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IDhhODc1Y2Q3ZTNiMDVkYzQzNjU5
ZjAxYjcwMDUyYmMxM2NjMWFlMTkuLmE0NjlkMjI0NzU2ZjBkN2QxZjk4ODBiYTI5MDIxNzA0NmM3
ZDllOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3Bw
CkBAIC0xNDIsNiArMTQyLDggQEAgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIE4KICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCisgICAgdm0uY29kZUNhY2hlKCktPndyaXRlKHZt
KTsKKwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA5Y2MzYmFlNDFhMjYxMDA0NjNhYzkyZTM5MjExYjU1NDM1OTFlYzRiLi5kNmY1ZmQ3NTdm
NmEyM2FmY2RiMDUxMzFiNDhkNDg2MzgyNmYyNTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODc5LDcgKzM4NzksNyBAQAog
CQlCQ0IxNkMxQzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzAzMDk3OUMzQkQwMDQ2Nzc0
MSAvKiBDYWNoZWRJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUJDQjE2QzIwMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMDcw
OTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMjIwOTc5QzNCRDAwNDY3NzQxIC8q
IENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwOTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVz
b3VyY2VDbGllbnRXYWxrZXIuaCAqLzsgfTsKLQkJQkNCMTZDMjQwOTc5QzNCRDAwNDY3NzQxIC8q
IENhY2hlZFNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNCMTZDMEIwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFNjcmlwdC5oICovOyB9Owor
CQlCQ0IxNkMyNDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkU2NyaXB0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwQjA5NzlDM0JEMDA0Njc3
NDEgLyogQ2FjaGVkU2NyaXB0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMjgwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFhTTFN0eWxl
U2hlZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
QjE2QzBGMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRYU0xTdHlsZVNoZWV0LmggKi87IH07CiAJ
CUJDQjE2QzJBMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZUxvYWRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMTEwOTc5QzNC
RDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCOTJENEYxMjkzNTUwQjAwQzgzODdGIC8q
IEZvbnRCYXNlbGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNCOTJENEUxMjkzNTUwQjAwQzgzODdGIC8qIEZvbnRCYXNlbGluZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNzI3Niw4ICsxNzI3
Niw4IEBACiAJCTI5QTgxMjA0MEZCQjlCNDEwMDUxMDI5MyAvKiBhY2Nlc3NpYmlsaXR5ICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkyOUFFMjEyOTIxQUI5
RUNCMDA4NjkyODMgLyogaXNvbGF0ZWR0cmVlICovLAogCQkJCUFBQTcyOEVGMTZEMUQ4QkMwMEQz
QkJDNiAvKiBpb3MgKi8sCisJCQkJMjlBRTIxMjkyMUFCOUVDQjAwODY5MjgzIC8qIGlzb2xhdGVk
dHJlZSAqLywKIAkJCQkyOUE4MTIwNTBGQkI5QjUyMDA1MTAyOTMgLyogbWFjICovLAogCQkJCTI5
ODFDQTlEMTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwICovLAog
CQkJCTI5QTgxMjE2MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaCAq
LywKQEAgLTE3Mzc0LDEwICsxNzM3NCwxMCBAQAogCQkyOUFFMjEyOTIxQUI5RUNCMDA4NjkyODMg
LyogaXNvbGF0ZWR0cmVlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKLQkJCQkyOUFFMjEyQjIxQUI5RUVCMDA4NjkyODMgLyogQVhJc29sYXRlZFRyZWUuaCAqLywK
IAkJCQkyOUFFMjEyQzIxQUI5RUVCMDA4NjkyODMgLyogQVhJc29sYXRlZFRyZWUuY3BwICovLAot
CQkJCTI5QUUyMTMzMjFBQkE0OEEwMDg2OTI4MyAvKiBBWElzb2xhdGVkVHJlZU5vZGUuaCAqLywK
KwkJCQkyOUFFMjEyQjIxQUI5RUVCMDA4NjkyODMgLyogQVhJc29sYXRlZFRyZWUuaCAqLywKIAkJ
CQkyOUFFMjEzNDIxQUJBNDhBMDA4NjkyODMgLyogQVhJc29sYXRlZFRyZWVOb2RlLmNwcCAqLywK
KwkJCQkyOUFFMjEzMzIxQUJBNDhBMDA4NjkyODMgLyogQVhJc29sYXRlZFRyZWVOb2RlLmggKi8s
CiAJCQkpOwogCQkJcGF0aCA9IGlzb2xhdGVkdHJlZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC0yODI2NSw2ICsyODI2NSw3IEBACiAJCQkJNzZDREQyRjUxMTAzREE2NjAwNjgwNTIx
IC8qIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUFD
QjIxMjE0M0U3MTI4MDA2QkNBNUYgLyogQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTI5QTgxMjM2MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQkyOTM2QkY1QzIxRDY5RTRCMDA0QThGQzkgLyogQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTQwOUM5ODUx
MTZEMERERDAwNzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMjlBODEyMzkwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzRGNkVCMTEwOEY5QTUwMDk5RDBE
QiAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NDM0LDYg
KzI4NDM1LDggQEAKIAkJCQkwN0Y0RTkzMzIwQjM1ODdGMDAyRTM4MDMgLyogQVZGb3VuZGF0aW9u
TUlNRVR5cGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzMzZGNjIxN0Y5RjY0NzAwRERE
Q0QwIC8qIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3
MDM2M0U2MTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMjlBRTIxMkQyMUFCOUVFQjAwODY5MjgzIC8qIEFYSXNvbGF0ZWRUcmVlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkyOUFFMjEzNTIxQUJBNDhBMDA4NjkyODMgLyogQVhJc29sYXRl
ZFRyZWVOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDVDMjMxRTE5OTVCNzNCMDBBNkUyRTMg
LyogQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIzODBG
QkI5QzFEMDA1MTAyOTMgLyogQVhPYmplY3RDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTFD
OUYyRjkxQUUzQkVCMDAwOTVCNjFDIC8qIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTMwMDA3LDcgKzMwMDEwLDYgQEAKIAkJCQkxQUUyQUE5ODBBMUNERDJEMDBC
NDJCMjUgLyogSlNIVE1MSW1hZ2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFN0U5
NzBBMUE4M0UzMDA3RkI4QzUgLyogSlNIVE1MSW5wdXRFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk4MzZCMDk1NjFGNUYzNEQ5MDAzQzM3MDIgLyogSlNIVE1MSW5wdXRFbGVtZW50RW50cmll
c0FQSS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMjkzNkJGNUMyMUQ2OUU0QjAwNEE4RkM5IC8qIEFj
Y2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE2MTQ4QTc5
MTJFNDFFM0IwMDQ0QTc4NCAvKiBKU0hUTUxLZXlnZW5FbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUUyQUIyMjBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTGFiZWxFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQUUyQUIyNDBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTGVnZW5k
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTQ2NCw3ICszMTQ2Niw2IEBACiAJCQkJNTE0
MDVDODkxOTBCMDE0NDAwNzU0Rjk0IC8qIFNlbGVjdGlvblJlY3RHYXRoZXJlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTQ0QjRCQjQxNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDMyRDNGRTgxOEE4NjU4NDAwRDdEQzAzIC8qIFNlbGVjdG9y
Q2hlY2tlclRlc3RGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTI5QUUyMTM1MjFBQkE0
OEEwMDg2OTI4MyAvKiBBWElzb2xhdGVkVHJlZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2
Qjk5OTk3MTgwNEQ1NDIwMEQwMTEyMSAvKiBTZWxlY3RvckNvbXBpbGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MTUwNzE1ODE2ODUwNjczMDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQzMTA3QkUyMThDQzE5REUwMENDMThFOCAvKiBTZWxlY3RvclBzZXVk
b1R5cGVNYXAuaCBpbiBIZWFkZXJzICovLApAQCAtMzI0MDAsNyArMzI0MDEsNiBAQAogCQkJCTk3
N0UyRTBGMTJGMEZDOUMwMEMxMzM4MCAvKiBYU1NBdWRpdG9yRGVsZWdhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1NDE2RkU2MTg4MTBFRjgwMDA5RkM1RiAvKiBZb3VUdWJlRW1iZWRTaGFkb3dF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTU1MTVGNTE5MTgzMEEzMDA5Njg3RDIgLyog
WW91VHViZVBsdWdpblJlcGxhY2VtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQkyOUFFMjEyRDIx
QUI5RUVCMDA4NjkyODMgLyogQVhJc29sYXRlZFRyZWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZE
NTM3MzUzMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwCmluZGV4IDdj
ODdiMjM5MzhlNDMzZTUwOGMwZmI4MGJlOWM5ZTZmZGUzODIxMDMuLmUwZjAwM2YwZGIxYjRhOGJj
YjYxYWYzYmQ4ZjU2ZDMxMzk2ZTZmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwCkBAIC01Niw2ICs1Niw3IEBAIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6cmVxdWVzdFNj
cmlwdFdpdGhDYWNoZShECiAgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0
aW9uID0gaGFzS25vd25Ob25jZSA/IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNr
aXBQb2xpY3lDaGVjayA6IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5
Q2hlY2s7CiAgICAgb3B0aW9ucy5zYW1lT3JpZ2luRGF0YVVSTEZsYWcgPSBTYW1lT3JpZ2luRGF0
YVVSTEZsYWc6OlNldDsKICAgICBvcHRpb25zLmludGVncml0eSA9IFdURk1vdmUoaW50ZWdyaXR5
KTsKKyAgICBvcHRpb25zLmRlcml2ZWRDYWNoZWREYXRhVHlwZXNUb1JldHJpZXZlID0geyAiYnl0
ZWNvZGUtY2FjaGUiIH07CiAKICAgICBhdXRvIHJlcXVlc3QgPSBjcmVhdGVQb3RlbnRpYWxBY2Nl
c3NDb250cm9sUmVxdWVzdChzb3VyY2VVUkwsIGRvY3VtZW50LCBjcm9zc09yaWdpbk1vZGUsIFdU
Rk1vdmUob3B0aW9ucykpOwogICAgIHJlcXVlc3QudXBncmFkZUluc2VjdXJlUmVxdWVzdElmTmVl
ZGVkKGRvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0Nh
Y2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9D
YWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oCmluZGV4IGFlNDQ0YzY0NTM2YjIzNWNhMTY1NzQ2
ZDk0MGExNzBiYzkxY2FlYWIuLmE1ZGJkMjJiZDM0N2NjNzM1ZTc3YzlmOWJjNjBiNmM4MWI1NzJh
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNv
dXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2Ny
aXB0U291cmNlUHJvdmlkZXIuaApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkU2NyaXB0RmV0Y2hlci5oIgorI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU291cmNl
UHJvdmlkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDUsNiArNDcsMTQgQEAgcHVi
bGljOgogCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY2Fj
aGVkU2NyaXB0LT5zY3JpcHRIYXNoKCk7IH0KICAgICBTdHJpbmdWaWV3IHNvdXJjZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fY2FjaGVkU2NyaXB0LT5zY3JpcHQoKTsgfQorICAgIGNvbnN0
IEpTQzo6Q2FjaGVkQnl0ZWNvZGUqIGNhY2hlZEJ5dGVjb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gJm1fY2FjaGVkU2NyaXB0LT5jYWNoZWRCeXRlY29kZSgpOyB9CisKKyAgICB2b2lkIGNh
Y2hlQnl0ZWNvZGUoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKG1fY2FjaGVk
U2NyaXB0LT5jYWNoZWRCeXRlY29kZSgpLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmNhY2hlQnl0ZWNv
ZGVGb3JTY3JpcHQoKm1fY2FjaGVkU2NyaXB0KTsKKyAgICB9CiAKIHByaXZhdGU6CiAgICAgQ2Fj
aGVkU2NyaXB0U291cmNlUHJvdmlkZXIoQ2FjaGVkU2NyaXB0KiBjYWNoZWRTY3JpcHQsIEpTQzo6
U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUsIFJlZjxDYWNoZWRTY3JpcHRGZXRj
aGVyPiYmIHNjcmlwdEZldGNoZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5o
CmluZGV4IGIzNWM2ZmIwZTI4NjRkNWY4ZWZjNGI4MGZhYzdhM2ZmMDQxMTE5M2UuLjJlYmYwYWYx
YjNhMjIzNGQyMGRmODI3YTQ2NjUyMWEzNzk2ZGU5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9M
b2FkZXJTdHJhdGVneS5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENhY2hlZFJlc291cmNlOworY2xhc3MgQ2FjaGVkU2NyaXB0OwogY2xhc3MgQ29udGVu
dFNlY3VyaXR5UG9saWN5OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZUxvYWRlcjsKQEAgLTcz
LDYgKzc0LDggQEAgcHVibGljOgogICAgIHVzaW5nIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxl
ciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZUVycm9yJik+OwogICAgIHZpcnR1
YWwgdm9pZCBwcmVjb25uZWN0VG8oRnJhbWVMb2FkZXImLCBjb25zdCBVUkwmLCBTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKIAorICAg
IHZpcnR1YWwgdm9pZCBjYWNoZUJ5dGVjb2RlRm9yU2NyaXB0KGNvbnN0IENhY2hlZFNjcmlwdCYp
ID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJp
Y3NFbmFibGVkKGJvb2wpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc09uTGluZSgpIGNvbnN0
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDZjMmIx
MzFjYjlhOGQyNjM0N2EwYTdjOGU1OTg1NDE5ZTM2YzU5MzMuLjQ5OWZiYzUyOGMwNzEyNjZhMzNk
YTRlNTE0YWM3NWZjZDIwNDU1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcApAQCAtODE2LDQgKzgxNiw4IEBAIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0CiAgICAgcmV0dXJuIGZyYW1lTG9hZGVyKCkgJiYgZnJh
bWVMb2FkZXIoKS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7CiB9CiAKK3ZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJldHJpZXZlRGVyaXZlZERhdGFGcm9tQ2FjaGUoY29uc3QgU3RyaW5nJiwg
U2hhcmVkQnVmZmVyJikKK3sKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaAppbmRleCA0YzMzYTUwNjkyYTM4NTMxNTIzYWJiYjM5OGViZmEyZjBmNjdlOGJjLi5jNGQ3
OTI3YjY2YmI0N2MwNzVhM2JhMWQ3NTA1YjFkZTdlOWIyNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMTA1LDYgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZXRyaWV2ZURlcml2ZWREYXRhRnJvbUNhY2hlKGNvbnN0IFN0cmluZyYgdHlwZSwgU2hhcmVkQnVm
ZmVyJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEJsb2NrQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0
aW9ucy5oCmluZGV4IDllMzA3NGRhMzIxMWQwZWU5N2I4ZWIyZWRmNDkxNjllYzVkZjJhNGEuLjlh
MzA2MGM4NGYwMDRhMzliZjBlOWI3NzI3Yjc4ZDYzZDYwZGVmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgKQEAgLTE1Miw2ICsxNTIsNyBAQCBz
dHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zIDogcHVibGljIEZldGNoT3B0aW9ucyB7CiAgICAg
T3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+IHNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOwogI2VuZGlmCiAgICAgSGFzaFNldDxIVFRQSGVhZGVy
TmFtZSwgV1RGOjpJbnRIYXNoPEhUVFBIZWFkZXJOYW1lPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRy
YWl0czxIVFRQSGVhZGVyTmFtZT4+IGh0dHBIZWFkZXJzVG9LZWVwOworICAgIFZlY3RvcjxTdHJp
bmc+IGRlcml2ZWRDYWNoZWREYXRhVHlwZXNUb1JldHJpZXZlOwogICAgIE9wdGlvbmFsPENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycz4gY3NwUmVzcG9uc2VIZWFkZXJzOwogICAg
IHVuc2lnbmVkIG1heFJlZGlyZWN0Q291bnQgeyAyMCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0ODNlY2QzYzEzZDYxZTY5YTM1OGViODFj
Y2E2ZTM2NGNjNDUyMDA5Li41MGIzNGZkMDBiOTBkY2NkMDI5MWU4NDQ4Mjg1ZDMxMGJhNTQyZmU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTc1
MSw2ICs3NTEsMTMgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkQ2FuY2VsKGNvbnN0IFJl
c291cmNlRXJyb3ImKQogICAgIG5vdGlmeURvbmUoTG9hZENvbXBsZXRpb25UeXBlOjpDYW5jZWwp
OwogfQogCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZXRyaWV2ZURlcml2ZWREYXRhRnJv
bUNhY2hlKGNvbnN0IFN0cmluZyYgdHlwZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit7CisgICAg
aWYgKG1fc3RhdGUgIT0gSW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3Jlc291
cmNlLT5kaWRSZXRyaWV2ZURlcml2ZWREYXRhRnJvbUNhY2hlKHR5cGUsIGJ1ZmZlcik7Cit9CisK
IHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6Om5vdGlmeURvbmUoTG9hZENvbXBsZXRpb25UeXBlIHR5
cGUpCiB7CiAgICAgaWYgKHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4IDcxZmUzOTIwN2VjY2I3ZmUyYWE2MjQ3Njc5
MDMzMWE3OWY1ODg4NTEuLjJmNjg1NzI5NGZjYjkyZWE4NjkwYmM2NjQ3NjVjZDQ3YWUwNGQyYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC03OSw2ICs3
OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFJldHJpZXZlRGVyaXZlZERhdGFGcm9tQ2FjaGUoY29uc3QgU3RyaW5nJiB0
eXBlLCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICAKICAgICB2b2lkIHVwZGF0ZVJlZmVy
cmVyUG9saWN5KGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFk
YWJsZUxvYWRlci5jcHAKaW5kZXggMmI3YmY0MjlkZDYyMmZjNzI3ZTEwMTMwMmVmZmVlZGQ1ZTRj
Mzg0Ny4uZDUzYjRhZDM5YmI1YzVlMzgyMjkwNmY1Yjk5YTE1OTkxOTM5Njk1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtODksNiArODksOSBAQCBU
aHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBUaHJlYWRhYmxlTG9hZGVyT3B0aW9uczo6aXNvbGF0ZWRD
b3B5KCkgY29uc3QKICAgICBjb3B5LmluaXRpYXRvckNvbnRleHQgPSB0aGlzLT5pbml0aWF0b3JD
b250ZXh0OwogICAgIGNvcHkuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9IHRoaXMtPmNsaWVudENy
ZWRlbnRpYWxQb2xpY3k7CiAgICAgY29weS5tYXhSZWRpcmVjdENvdW50ID0gdGhpcy0+bWF4UmVk
aXJlY3RDb3VudDsKKyAgICBjb3B5LmRlcml2ZWRDYWNoZWREYXRhVHlwZXNUb1JldHJpZXZlLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkodGhpcy0+ZGVyaXZlZENhY2hlZERhdGFUeXBlc1RvUmV0cmll
dmUuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGRlcml2ZWRDYWNoZWREYXRhVHlwZSA6IHRoaXMt
PmRlcml2ZWRDYWNoZWREYXRhVHlwZXNUb1JldHJpZXZlKQorICAgICAgICBjb3B5LmRlcml2ZWRD
YWNoZWREYXRhVHlwZXNUb1JldHJpZXZlLnVuY2hlY2tlZEFwcGVuZChkZXJpdmVkQ2FjaGVkRGF0
YVR5cGUuaXNvbGF0ZWRDb3B5KCkpOwogICAgIGNvcHkucHJlZmxpZ2h0UG9saWN5ID0gdGhpcy0+
cHJlZmxpZ2h0UG9saWN5OwogCiAgICAgLy8gVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDM2NmM1
ODMwZjgwOTVhY2IwZGNiNDkzYzgxNWVlNGU2NjA4YjgyNzEuLjczMGU4NTFkM2JmODI1NDA4NzYy
ZjA5ODM5ODI2ZmQ5NDJlMDYwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzE1LDYgKzMxNSwxMyBAQCB2b2lkIENhY2hlZFJlc291
cmNlOjpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRSZXNvdXJjZUxvYWRlcikKICAg
ICAgICAgICAgIGZhaWxCZWZvcmVTdGFydGluZygpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CisKKyAgICAgICAgYXV0byogZnJhbWVMb2FkZXIgPSBtX2xvYWRlci0+ZnJhbWVMb2Fk
ZXIoKTsKKyAgICAgICAgYXV0byogZnJhbWVMb2FkZXJDbGllbnQgPSBmcmFtZUxvYWRlciA/ICZm
cmFtZUxvYWRlci0+Y2xpZW50KCkgOiBudWxscHRyOworICAgICAgICBpZiAoZnJhbWVMb2FkZXJD
bGllbnQpIHsKKyAgICAgICAgICAgIG1fd2ViUGFnZUlEID0gZnJhbWVMb2FkZXJDbGllbnQtPnBh
Z2VJRCgpLnZhbHVlT3IoMCk7CisgICAgICAgICAgICBtX3dlYkZyYW1lSUQgPSBmcmFtZUxvYWRl
ckNsaWVudC0+ZnJhbWVJRCgpLnZhbHVlT3IoMCk7CisgICAgICAgIH0KICAgICAgICAgbV9zdGF0
dXMgPSBQZW5kaW5nOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuaAppbmRleCA5YjgzODQ4ZWEyMjQ5ZDU4N2EzZWQ4MWFmZjI1ZTc4NjRi
MDI5MGYyLi4wOGFkMzY3MGU2NTVmOGQ5ZDkzOWU0Y2MwNjQ2YTQyNTk0YmRhYzhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTYyLDcgKzE2
Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExvYWRpbmcoYm9vbCBiKSB7IG1fbG9hZGluZyA9
IGI7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3RpbGxOZWVkc0xvYWQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCi0gICAgU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlcigpIHsgcmV0dXJuIG1fbG9h
ZGVyLmdldCgpOyB9CisgICAgU3VicmVzb3VyY2VMb2FkZXIqIGxvYWRlcigpIGNvbnN0IHsgcmV0
dXJuIG1fbG9hZGVyLmdldCgpOyB9CisgICAgdWludDY0X3Qgd2ViUGFnZUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV93ZWJQYWdlSUQ7IH0KKyAgICB1aW50NjRfdCB3ZWJGcmFtZUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV93ZWJGcmFtZUlEOyB9CiAKICAgICBib29sIGFyZUFsbENsaWVudHNYTUxIdHRwUmVx
dWVzdHMoKSBjb25zdDsKIApAQCAtMjY5LDYgKzI3MSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50ICovLCB1
bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRlc1RvQmVTZW50ICovKSB7IH0KIAorICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXRyaWV2ZURlcml2ZWREYXRhRnJvbUNhY2hlKGNvbnN0IFN0cmluZyYg
LyogdHlwZSAqLywgU2hhcmVkQnVmZmVyJikgeyB9CisKICNpZiBVU0UoRk9VTkRBVElPTikgfHwg
VVNFKFNPVVApCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEo
U2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKQEAgLTM3NCw2ICszNzgsOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9oYXNVbmtub3duRW5jb2RpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zd2l0Y2hp
bmdDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlIHsgZmFsc2UgfTsKICAgICBib29sIG1faWdu
b3JlRm9yUmVxdWVzdENvdW50IHsgZmFsc2UgfTsKKyAgICB1aW50NjRfdCBtX3dlYlBhZ2VJRCB7
IDAgfTsKKyAgICB1aW50NjRfdCBtX3dlYkZyYW1lSUQgeyAwIH07CiAKICNpZm5kZWYgTkRFQlVH
CiAgICAgYm9vbCBtX2RlbGV0ZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCAxYmJkNDQ0NjkyMDdjMjQ2NjIyMmRkMjM1ZmEy
M2Y5YjIyZmRkYTY3Li4wMmVkOWI0NTNhMDVmNTgwN2M1MTIwNTEyYzIzYWJiOTZjYWMyMzBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtODks
NiArODksMTEgQEAgU3RyaW5nVmlldyBDYWNoZWRTY3JpcHQ6OnNjcmlwdCgpCiAgICAgcmV0dXJu
IG1fc2NyaXB0OwogfQogCitjb25zdCBKU0M6OkNhY2hlZEJ5dGVjb2RlJiBDYWNoZWRTY3JpcHQ6
OmNhY2hlZEJ5dGVjb2RlKCkKK3sKKyAgICByZXR1cm4gbV9jYWNoZWRCeXRlY29kZTsKK30KKwog
dW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkKIHsKICAgICBpZiAobV9kZWNvZGlu
Z1N0YXRlID09IE5ldmVyRGVjb2RlZCkKQEAgLTEwMyw2ICsxMDgsMTcgQEAgdm9pZCBDYWNoZWRT
Y3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIENhY2hlZFJlc291
cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEpOwogfQogCit2b2lkIENhY2hlZFNjcmlwdDo6ZGlkUmV0
cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZShjb25zdCBTdHJpbmcmIHR5cGUsIFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQoreworICAgIEFTU0VSVCh0eXBlID09ICJieXRlY29kZS1jYWNoZSIpOworICAg
IHNpemVfdCBzaXplID0gYnVmZmVyLnNpemUoKTsKKyAgICBNYWxsb2NQdHI8dWludDhfdD4gbWVt
b3J5ID0gTWFsbG9jUHRyPHVpbnQ4X3Q+OjptYWxsb2Moc2l6ZSk7CisgICAgZm9yIChjb25zdCBh
dXRvJiBpdCA6IGJ1ZmZlcikKKyAgICAgICAgbWVtY3B5KG1lbW9yeS5nZXQoKSArIGl0LmJlZ2lu
UG9zaXRpb24sIGl0LnNlZ21lbnQtPmRhdGEoKSwgaXQuc2VnbWVudC0+c2l6ZSgpKTsKKyAgICBt
X2NhY2hlZEJ5dGVjb2RlID0gSlNDOjpDYWNoZWRCeXRlY29kZSB7IFdURk1vdmUobWVtb3J5KSwg
c2l6ZSB9OworICAgIENhY2hlZFJlc291cmNlOjpkaWRSZXRyaWV2ZURlcml2ZWREYXRhRnJvbUNh
Y2hlKHR5cGUsIGJ1ZmZlcik7Cit9CisKIHZvaWQgQ2FjaGVkU2NyaXB0OjpkZXN0cm95RGVjb2Rl
ZERhdGEoKQogewogICAgIG1fc2NyaXB0ID0gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKaW5kZXggZGQ2ZmJjYzM2ODc4MTFkZjA2ZWMxY2UyODQz
MWYzODhhM2Q2MDAzYy4uNzkzNGRkY2U5MzY2OTMzM2EzZWFlMmViYTU5ZWZmNTU1ZmY2ZTE2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaApAQCAtMjYsNiAr
MjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NvdXJjZVByb3ZpZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtMzcsNiArMzgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FjaGVkU2Ny
aXB0KCk7CiAKICAgICBTdHJpbmdWaWV3IHNjcmlwdCgpOworICAgIGNvbnN0IEpTQzo6Q2FjaGVk
Qnl0ZWNvZGUmIGNhY2hlZEJ5dGVjb2RlKCk7CiAgICAgdW5zaWduZWQgc2NyaXB0SGFzaCgpOwog
CiBwcml2YXRlOgpAQCAtNDgsMTIgKzUwLDE0IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGVuY29k
aW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJl
c291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQog
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZFJldHJpZXZlRGVyaXZlZERhdGFGcm9tQ2FjaGUoY29uc3QgU3RyaW5nJiwgU2hhcmVkQnVmZmVy
JikgZmluYWw7CiAKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCiAgICAg
dm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKIAogICAg
IFN0cmluZyBtX3NjcmlwdDsKKyAgICBKU0M6OkNhY2hlZEJ5dGVjb2RlIG1fY2FjaGVkQnl0ZWNv
ZGU7CiAgICAgdW5zaWduZWQgbV9zY3JpcHRIYXNoIHsgMCB9OwogCiAgICAgZW51bSBEZWNvZGlu
Z1N0YXRlIHsgTmV2ZXJEZWNvZGVkLCBEYXRhQW5kRGVjb2RlZFN0cmluZ0hhdmVTYW1lQnl0ZXMs
IERhdGFBbmREZWNvZGVkU3RyaW5nSGF2ZURpZmZlcmVudEJ5dGVzIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCmluZGV4IDc1MzhlMWQzMjUxYzczYjU4ZmJkOTYxMzg0MDAwN2FjZjRiOWJh
YmYuLjhiMzNjY2VlZTc2ZTdjYTc4ODRhODBjMGE0NTNlNTE0MTYyZDhjY2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCkBAIC01NDMsNiArNTQzLDEyIEBAIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpCiAgICAgfSk7CiB9CiAKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNhY2hlQnl0ZWNvZGVGb3JSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgdWludDY0X3Qgd2ViUGFnZUlELCB1aW50NjRfdCB3ZWJGcmFtZUlEKQoreworICAg
IGlmIChhdXRvKiBieXRlY29kZUNhY2hlID0gbV9uZXR3b3JrUHJvY2Vzcy0+Ynl0ZWNvZGVDYWNo
ZSgpKQorICAgICAgICBieXRlY29kZUNhY2hlLT5jYWNoZUJ5dGVjb2RlRm9yUmVxdWVzdChyZXF1
ZXN0LCB3ZWJQYWdlSUQsIHdlYkZyYW1lSUQpOworfQorCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpzZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJv
b2wgZW5hYmxlZCkKIHsKICAgICBtX2NhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJs
ZWQgPSBlbmFibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDQ0YzBhNWY3MTQzNmJk
YTNjMjk0MzA5NzE2NDBiZjlmMjIzZWQ0YjguLmViM2JhZjAyMDZlZjVjNDc2YzU4YTU4MzAyODlh
MGVkZjliOTE1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTE2NSw2ICsxNjUsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJik7CiAgICAg
dm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxv
YlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwogCisg
ICAgdm9pZCBjYWNoZUJ5dGVjb2RlRm9yUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCB1aW50NjRfdCwgdWludDY0X3QpOworCiAgICAgdm9pZCBzZXRDYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wpOwogCiAgICAgdm9pZCBjcmVhdGVTb2NrZXRT
dHJlYW0oVVJMJiYsIFBBTDo6U2Vzc2lvbklELCBTdHJpbmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2
NF90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDg0
MjI4NmIxODJmNTlhMDc2YTA5NzY5NjBlZjUwNTRlZTJjOTRhY2IuLjliODcxYmQwZDU0MjhhNjYx
NjhjZmVkZGZjYjc0NzRjOTkxMTExMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgpAQCAtNTAsNiArNTAsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgQmxvYlNpemUoVVJMIHVybCkg
LT4gKHVpbnQ2NF90IHJlc3VsdFNpemUpIExlZ2FjeVN5bmMKICAgICBXcml0ZUJsb2JzVG9UZW1w
b3JhcnlGaWxlcyhWZWN0b3I8U3RyaW5nPiBibG9iVVJMcykgLT4gKFZlY3RvcjxTdHJpbmc+IGZp
bGVOYW1lcykgQXN5bmMKIAorICAgIENhY2hlQnl0ZWNvZGVGb3JSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCByZXF1ZXN0LCB1aW50NjRfdCB3ZWJQYWdlSUQsIHVpbnQ2NF90IHdlYkZy
YW1lSUQpCisKICAgICBTZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJv
b2wgZW5hYmxlZCkKIAogICAgIENyZWF0ZVNvY2tldFN0cmVhbShVUkwgdXJsLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmll
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRl
eCBlNDUzMTQyOTZjZDlmMTdhNzM0ZDUzZDFmN2Q0MmViMGE0MGE1YmQxLi41YjI5ZmU0ZTA1Njk5
MTQyMmRhMDA3YjE2NTMyNTFmOTA1MjMyMjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiQnl0ZWNvZGVDYWNoZS5oIgogI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIK
ICNpbmNsdWRlICJDaGlsZFByb2Nlc3MuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIK
QEAgLTEzMyw2ICsxMzQsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIE5ldHdvcmtDYWNoZTo6
Q2FjaGUqIGNhY2hlKCkgeyByZXR1cm4gbV9jYWNoZS5nZXQoKTsgfQorICAgIEJ5dGVjb2RlQ2Fj
aGUqIGJ5dGVjb2RlQ2FjaGUoKSB7IHJldHVybiBtX2J5dGVjb2RlQ2FjaGUuZ2V0KCk7IH0KIAog
ICAgIHZvaWQgc2V0U2Vzc2lvbihjb25zdCBQQUw6OlNlc3Npb25JRCYsIFJlZjxOZXR3b3JrU2Vz
c2lvbj4mJik7CiAgICAgTmV0d29ya1Nlc3Npb24qIG5ldHdvcmtTZXNzaW9uKGNvbnN0IFBBTDo6
U2Vzc2lvbklEJikgY29uc3Qgb3ZlcnJpZGU7CkBAIC00MzcsNiArNDM5LDcgQEAgcHJpdmF0ZToK
ICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWY8Q2FjaGVTdG9yYWdlOjpFbmdpbmU+PiBt
X2NhY2hlRW5naW5lczsKIAogICAgIFJlZlB0cjxOZXR3b3JrQ2FjaGU6OkNhY2hlPiBtX2NhY2hl
OworICAgIFJlZlB0cjxCeXRlY29kZUNhY2hlPiBtX2J5dGVjb2RlQ2FjaGU7CiAKICAgICB0eXBl
ZGVmIEhhc2hNYXA8Y29uc3QgY2hhciosIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUHJvY2Vzc1N1
cHBsZW1lbnQ+LCBQdHJIYXNoPGNvbnN0IGNoYXIqPj4gTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50
TWFwOwogICAgIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudE1hcCBtX3N1cHBsZW1lbnRzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCBjZmU1OGUxY2U5ZjdiMmUyM2ZlODdlYzcwYWFl
NmIzYjQ5YzljNThmLi45MTRlNmE2ZjkwMzM5OGZkM2ExMTM2MTI2N2U0ZDI4M2Y2ZmRlOGE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtODAsNiArODAsNyBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogICAgIGVuY29kZXIgPDwgbmVlZHNDZXJ0aWZpY2F0ZUluZm87CiAgICAgZW5jb2RlciA8
PCBpc01haW5GcmFtZU5hdmlnYXRpb247CiAgICAgZW5jb2RlciA8PCBtYXhpbXVtQnVmZmVyaW5n
VGltZTsKKyAgICBlbmNvZGVyIDw8IGRlcml2ZWRDYWNoZWREYXRhVHlwZXNUb1JldHJpZXZlOwog
CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxib29sPihzb3VyY2VPcmlnaW4pOwogICAgIGlm
IChzb3VyY2VPcmlnaW4pCkBAIC0xNzEsNiArMTcyLDggQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Jlc291
cmMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
Lm1heGltdW1CdWZmZXJpbmdUaW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LmRlcml2ZWRDYWNoZWREYXRhVHlwZXNUb1JldHJpZXZlKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCBoYXNTb3VyY2VPcmlnaW47CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShoYXNTb3VyY2VPcmlnaW4pKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5oCmluZGV4IGIwNWZmODAzZjE3MTkwYWRlMzE5Y2RhMDYzZGEwMzE0MDZlNGYzNzYuLmViN2Ex
NDdhOTg5YTViYjMwYzA0YWQ1MzdlNzQwNmMwNjMyYTlkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzLmgKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8U2FuZGJv
eEV4dGVuc2lvbj4+IHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnM7IC8vIENyZWF0ZWQgYXV0
b21hdGljYWxseSBmb3IgdGhlIHNlbmRlci4KICAgICBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4g
cmVzb3VyY2VTYW5kYm94RXh0ZW5zaW9uOyAvLyBDcmVhdGVkIGF1dG9tYXRpY2FsbHkgZm9yIHRo
ZSBzZW5kZXIuCiAgICAgU2Vjb25kcyBtYXhpbXVtQnVmZmVyaW5nVGltZTsKKyAgICBWZWN0b3I8
U3RyaW5nPiBkZXJpdmVkQ2FjaGVkRGF0YVR5cGVzVG9SZXRyaWV2ZTsKICAgICBSZWZQdHI8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+IHNvdXJjZU9yaWdpbjsKICAgICBXZWJDb3JlOjpGZXRjaE9w
dGlvbnMgb3B0aW9uczsKICAgICBPcHRpb25hbDxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnM+IGNzcFJlc3BvbnNlSGVhZGVyczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA5
ZGYwZDc2ZmFmNDIyMGM5NTNlN2ZkNWE5MmJiOGVmNmMwNDgwZjUyLi4wNmJhYzkzYWMwN2ExNDdm
NDUzMjFiNTEwYzgxYmRhYzBmMzUxYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAKICNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCisjaW5jbHVkZSAiRGVyaXZlZERhdGEuaCIKICNpbmNsdWRlICJGb3JtRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrQmxvYlJl
Z2lzdHJ5LmgiCkBAIC00OTksNyArNTAwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAg
ICAvLyBXZSB3YWl0IHRvIHJlY2VpdmUgbWVzc2FnZSBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OkNv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIGJlZm9yZSBjb250aW51aW5nIGEgbG9hZCBmb3IKICAg
ICAvLyBhIG1haW4gcmVzb3VyY2UgYmVjYXVzZSB0aGUgZW1iZWRkaW5nIGNsaWVudCBtdXN0IGRl
Y2lkZSB3aGV0aGVyIHRvIGFsbG93IHRoZSBsb2FkLgogICAgIGJvb2wgd2lsbFdhaXRGb3JDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZSA9IGlzTWFpblJlc291cmNlKCk7Ci0gICAgc2VuZChNZXNz
YWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCB3
aWxsV2FpdEZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIH0pOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgd2ls
bFdhaXRGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSwgeyB9IH0pOwogICAgIGlmICh3aWxs
V2FpdEZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKQogICAgICAgICBtX3Jlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICBlbHNlCkBA
IC04MzAsMTQgKzgzMSw0NyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmll
dmVDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OgogICAgIH0KIAogICAg
IGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgPSBpc01haW5SZXNv
dXJjZSgpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZl
UmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3Nh
Z2UgfSk7CiAKLSAgICBpZiAobmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2Up
Ci0gICAgICAgIG1fY2FjaGVFbnRyeVdhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZSA9IFdURk1vdmUoZW50cnkpOworICAgIGlmICghbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZU1lc3NhZ2UpCisgICAgICAgIHByb2Nlc3NDYWNoZWRFbnRyeUFmdGVyRGlkUmVjZWl2ZVJl
c3BvbnNlKFdURk1vdmUoZW50cnkpKTsKICAgICBlbHNlIHsKLSAgICAgICAgc2VuZFJlc3VsdEZv
ckNhY2hlRW50cnkoV1RGTW92ZShlbnRyeSkpOwotICAgICAgICBjbGVhbnVwKExvYWRSZXN1bHQ6
OlN1Y2Nlc3MpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlk
UmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2VNZXNzYWdlLCB7IH0gfSk7CisgICAgICAgIG1fY2FjaGVFbnRyeVdhaXRpbmdGb3JDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZSA9IFdURk1vdmUoZW50cnkpOworICAgIH0KK30KKwordm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnByb2Nlc3NDYWNoZWRFbnRyeUFmdGVyRGlkUmVjZWl2ZVJl
c3BvbnNlKHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBlbnRyeSkKK3sKKyAg
ICBpZiAoZW50cnktPnNvdXJjZVN0b3JhZ2VSZWNvcmQoKS5ib2R5SGFzaCAmJiAhbV9wYXJhbWV0
ZXJzLmRlcml2ZWRDYWNoZWREYXRhVHlwZXNUb1JldHJpZXZlLmlzRW1wdHkoKSkgeworICAgICAg
ICBhdXRvIGJvZHlIYXNoID0gKmVudHJ5LT5zb3VyY2VTdG9yYWdlUmVjb3JkKCkuYm9keUhhc2g7
CisgICAgICAgIGF1dG8qIGVudHJ5UHRyID0gZW50cnkucmVsZWFzZSgpOworICAgICAgICBhdXRv
IHJldHJpZXZlQ291bnQgPSBtX3BhcmFtZXRlcnMuZGVyaXZlZENhY2hlZERhdGFUeXBlc1RvUmV0
cmlldmUuc2l6ZSgpOworCisgICAgICAgIFZlY3RvcjxJUEM6OkRlcml2ZWREYXRhPiogZGVyaXZl
ZERhdGEgPSBuZXcgVmVjdG9yPElQQzo6RGVyaXZlZERhdGE+KCk7CisgICAgICAgIGZvciAoYXV0
byB0eXBlIDogbV9wYXJhbWV0ZXJzLmRlcml2ZWRDYWNoZWREYXRhVHlwZXNUb1JldHJpZXZlKSB7
CisgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBSZXRyaWV2
aW5nIGRlcml2ZWQgZGF0YSBvZiB0eXBlIFwiJXNcIiBmb3IgXCIlc1wiIiwgdHlwZS5hc2NpaSgp
LmRhdGEoKSwgb3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkp
OworICAgICAgICAgICAgTmV0d29ya0NhY2hlOjpEYXRhS2V5IGtleSB7IG9yaWdpbmFsUmVxdWVz
dCgpLmNhY2hlUGFydGl0aW9uKCksIHR5cGUsIGJvZHlIYXNoIH07CisgICAgICAgICAgICBtX2Nh
Y2hlLT5yZXRyaWV2ZURhdGEoa2V5LCBbbG9hZGVyID0gbWFrZVJlZigqdGhpcyksIGVudHJ5UHRy
LCB0eXBlLCBkZXJpdmVkRGF0YSwgcmV0cmlldmVDb3VudF0gKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBsb2FkZXItPm1fcmV0cmll
dmVkRGVyaXZlZERhdGFDb3VudCsrOworICAgICAgICAgICAgICAgIGlmIChsb2FkZXItPmhhc09u
ZVJlZigpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgaWYg
KGRhdGEpCisgICAgICAgICAgICAgICAgICAgIGRlcml2ZWREYXRhLT5hcHBlbmQoSVBDOjpEZXJp
dmVkRGF0YSB7IHR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSB7IGRhdGEsIHNpemUgfSB9KTsKKyAg
ICAgICAgICAgICAgICBpZiAobG9hZGVyLT5tX3JldHJpZXZlZERlcml2ZWREYXRhQ291bnQgPT0g
cmV0cmlldmVDb3VudCkgeworICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0
d29ya0NhY2hlOjpFbnRyeT4gZW50cnkoZW50cnlQdHIpOworICAgICAgICAgICAgICAgICAgICBs
b2FkZXItPnNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9u
c2UgeyBlbnRyeS0+cmVzcG9uc2UoKSwgZmFsc2UsICpkZXJpdmVkRGF0YX0pOworICAgICAgICAg
ICAgICAgICAgICBkZWxldGUgZGVyaXZlZERhdGE7CisgICAgICAgICAgICAgICAgICAgIGxvYWRl
ci0+c2VuZFJlc3VsdEZvckNhY2hlRW50cnkoV1RGTW92ZShlbnRyeSkpOworICAgICAgICAgICAg
ICAgICAgICBsb2FkZXItPmNsZWFudXAoTG9hZFJlc3VsdDo6U3VjY2Vzcyk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOwogICAg
IH0KKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVz
cG9uc2UgeyBlbnRyeS0+cmVzcG9uc2UoKSwgZmFsc2UsIHsgfSB9KTsKKyAgICBzZW5kUmVzdWx0
Rm9yQ2FjaGVFbnRyeShXVEZNb3ZlKGVudHJ5KSk7CisgICAgY2xlYW51cChMb2FkUmVzdWx0OjpT
dWNjZXNzKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRSZXN1bHRGb3JD
YWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBlbnRyeSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oCmluZGV4IGZiMGVlYzdlY2ZmMjFlY2ZhNGFjYjY0ZTczMGZlYmU0YjJjYmFhMjAuLjhhYTJm
NDc5ZDYyZDk3MGQyM2RjYWU5MWM3ODEyZjRhYTUxNzBmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtNDMsNiAr
NDMsMTAgQEAgY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwogfQogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIERlcml2ZWREYXRhOworfQorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CkBA
IC0xMzEsNiArMTM1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbmRSZXN1bHRGb3JDYWNoZUVu
dHJ5KHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5Pik7CiAgICAgdm9pZCB2YWxp
ZGF0ZUNhY2hlRW50cnkoc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+KTsKICAg
ICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVFbnRyeShXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+JiYpOwor
ICAgIHZvaWQgcHJvY2Vzc0NhY2hlZEVudHJ5QWZ0ZXJEaWRSZWNlaXZlUmVzcG9uc2Uoc3RkOjp1
bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+KTsKIAogICAgIGJvb2wgc2hvdWxkSW50ZXJy
dXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJik7CiAgICAg
Ym9vbCBzaG91bGRJbnRlcnJ1cHRMb2FkRm9yQ1NQRnJhbWVBbmNlc3RvcnNPclhGcmFtZU9wdGlv
bnMoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9CeXRlY29kZUNhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQnl0ZWNvZGVDYWNoZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODkzZTliNWJjYzkyZWVkOTYxNjYyMjIzZGExYjczMTJkYjczMWFjNwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQnl0ZWNvZGVDYWNoZS5jcHAK
QEAgLTAsMCArMSwxODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlQ2FjaGUuaCIK
KworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ2FjaGUuaCIKKyNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbXBsZXRp
b24uaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1BhcnNlckVycm9yLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU291cmNlQ29kZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1ZNLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBCeXRlY29kZUNhY2hlOjpQbGFuIDogcHVi
bGljIFJlZkNvdW50ZWQ8Qnl0ZWNvZGVDYWNoZTo6UGxhbj4geworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFBsYW4pOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCitwdWJsaWM6Cisg
ICAgUGxhbihTSEExOjpEaWdlc3QgYm9keUhhc2gsIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjYWNoZVBhcnRpdGlvbikKKyAgICAgICAgOiBt
X2JvZHlIYXNoKGJvZHlIYXNoKQorICAgICAgICAsIG1fc291cmNlKHNvdXJjZS5pc29sYXRlZENv
cHkoKSkKKyAgICAgICAgLCBtX3VybCh1cmwuaXNvbGF0ZWRDb3B5KCkpCisgICAgICAgICwgbV9j
YWNoZVBhcnRpdGlvbihjYWNoZVBhcnRpdGlvbi5pc29sYXRlZENvcHkoKSkKKyAgICB7CisgICAg
fQorCisgICAgdm9pZCBjb21waWxlKE5ldHdvcmtDYWNoZTo6Q2FjaGUqIGNhY2hlLCBKU0M6OlZN
JiB2bSkKKyAgICB7CisgICAgICAgIExPRyhCeXRlY29kZUNhY2hlLCAiW0J5dGVjb2RlQ2FjaGVd
W1BsYW5dIFByb2Nlc3Npbmc6ICVzIiwgbV91cmwuYXNjaWkoKS5kYXRhKCkpOworCisgICAgICAg
IEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CisgICAgICAgIEpTQzo6U291cmNlQ29kZSBz
b3VyY2VDb2RlID0gSlNDOjptYWtlU291cmNlKG1fc291cmNlLCBKU0M6OlNvdXJjZU9yaWdpbiB7
IG1fdXJsIH0pOworICAgICAgICBKU0M6OlBhcnNlckVycm9yIGVycm9yOworICAgICAgICBKU0M6
OkNhY2hlZEJ5dGVjb2RlIGNhY2hlZEJ5dGVjb2RlID0gSlNDOjpnZW5lcmF0ZUJ5dGVjb2RlKHZt
LCBzb3VyY2VDb2RlLCBlcnJvcik7CisgICAgICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpIHsKKyAg
ICAgICAgICAgIExPRyhCeXRlY29kZUNhY2hlLCAiW0J5dGVjb2RlQ2FjaGVdW1BsYW5dIEFib3J0
ZWQ6IGVycm9yIHdoZW4gZ2VuZXJhdGluZyBieXRlY29kZSIpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcGxhbiA9IG1h
a2VSZWYoKnRoaXMpLCBjYWNoZSwgY2FjaGVkQnl0ZWNvZGUgPSBXVEZNb3ZlKGNhY2hlZEJ5dGVj
b2RlKV0oKSB7CisgICAgICAgICAgICBOZXR3b3JrQ2FjaGU6OkRhdGFLZXkgZGF0YUtleSB7IHBs
YW4tPm1fY2FjaGVQYXJ0aXRpb24sICJieXRlY29kZS1jYWNoZSIsIHBsYW4tPm1fYm9keUhhc2gg
fTsKKyAgICAgICAgICAgIGNhY2hlLT5zdG9yZURhdGEoZGF0YUtleSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oY2FjaGVkQnl0ZWNvZGUuZGF0YSgpKSwgY2FjaGVkQnl0ZWNvZGUu
c2l6ZSgpKTsKKyAgICAgICAgICAgIExPRyhCeXRlY29kZUNhY2hlLCAiW0J5dGVjb2RlQ2FjaGVd
W1BsYW5dIFN0b3JlZDogJXMgKCVsZCBieXRlcykiLCBwbGFuLT5tX3VybC5hc2NpaSgpLmRhdGEo
KSwgY2FjaGVkQnl0ZWNvZGUuc2l6ZSgpKTsKKyAgICAgICAgfSk7CisgICAgfQorCitwcml2YXRl
OgorICAgIFNIQTE6OkRpZ2VzdCBtX2JvZHlIYXNoOworICAgIFN0cmluZyBtX3NvdXJjZTsKKyAg
ICBTdHJpbmcgbV91cmw7CisgICAgU3RyaW5nIG1fY2FjaGVQYXJ0aXRpb247Cit9OworCitjbGFz
cyBCeXRlY29kZUNhY2hlOjpUaHJlYWQgOiBwdWJsaWMgQXV0b21hdGljVGhyZWFkIHsKK3B1Ymxp
YzoKKyAgICBUaHJlYWQoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgQnl0ZWNvZGVDYWNo
ZSYgY2FjaGUpCisgICAgICAgIDogQXV0b21hdGljVGhyZWFkKGxvY2tlciwgY2FjaGUubV9sb2Nr
LCBjYWNoZS5tX2NvbmRpdGlvbi5jb3B5UmVmKCkpCisgICAgICAgICwgbV9jYWNoZShjYWNoZSkK
KyAgICB7CisgICAgfQorCisgICAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IG92ZXJyaWRlCisg
ICAgeworICAgICAgICByZXR1cm4gIkJ5dGVjb2RlQ2FjaGUgSGVscGVyIFRocmVhZCI7CisgICAg
fQorCitwcm90ZWN0ZWQ6CisgICAgUG9sbFJlc3VsdCBwb2xsKGNvbnN0IEFic3RyYWN0TG9ja2Vy
Jikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChtX2NhY2hlLm1fcXVldWUuaXNFbXB0eSgp
KQorICAgICAgICAgICAgcmV0dXJuIFBvbGxSZXN1bHQ6OldhaXQ7CisKKyAgICAgICAgbV9wbGFu
cyA9IFdURk1vdmUobV9jYWNoZS5tX3F1ZXVlKTsKKyAgICAgICAgcmV0dXJuIFBvbGxSZXN1bHQ6
Oldvcms7CisgICAgfQorCisgICAgV29ya1Jlc3VsdCB3b3JrKCkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3BsYW5zLmlzRW1wdHkoKSk7CisgICAgICAgIE5ldHdv
cmtDYWNoZTo6Q2FjaGUqIGNhY2hlID0gbV9jYWNoZS5tX25ldHdvcmtQcm9jZXNzLmNhY2hlKCk7
CisgICAgICAgIGlmICghY2FjaGUpCisgICAgICAgICAgICByZXR1cm4gV29ya1Jlc3VsdDo6U3Rv
cDsKKworICAgICAgICBmb3IgKFJlZlB0cjxQbGFuPiBwbGFuIDogbV9wbGFucykKKyAgICAgICAg
ICAgIHBsYW4tPmNvbXBpbGUoY2FjaGUsICptX3ZtKTsKKyAgICAgICAgbV9wbGFucy5jbGVhcigp
OworICAgICAgICByZXR1cm4gV29ya1Jlc3VsdDo6Q29udGludWU7CisgICAgfQorCitwcm90ZWN0
ZWQ6CisgICAgdm9pZCB0aHJlYWREaWRTdGFydCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBM
T0coQnl0ZWNvZGVDYWNoZSwgIltCeXRlY29kZUNhY2hlXVtUaHJlYWRdIFN0YXJ0ZWQiKTsKKyAg
ICAgICAgbV92bSA9IEpTQzo6Vk06OmNyZWF0ZSgpOworICAgICAgICBXVEY6OlRocmVhZDo6Y3Vy
cmVudCgpLmNoYW5nZVByaW9yaXR5KC0xMCk7CisgICAgfQorCisgICAgdm9pZCB0aHJlYWRJc1N0
b3BwaW5nKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEpT
Qzo6SlNMb2NrSG9sZGVyIGxvY2tlcigqbV92bSk7CisgICAgICAgIG1fdm0gPSBudWxscHRyOwor
ICAgICAgICBMT0coQnl0ZWNvZGVDYWNoZSwgIltCeXRlY29kZUNhY2hlXVtUaHJlYWRdIFN0b3Bw
ZWQiKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQnl0ZWNvZGVDYWNoZSYgbV9jYWNoZTsKKyAg
ICBQbGFucyBtX3BsYW5zOworICAgIFJlZlB0cjxKU0M6OlZNPiBtX3ZtOworfTsKKworQnl0ZWNv
ZGVDYWNoZTo6Qnl0ZWNvZGVDYWNoZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MpCisg
ICAgOiBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQorICAgICwgbV9sb2NrKEJveDxM
b2NrPjo6Y3JlYXRlKCkpCisgICAgLCBtX2NvbmRpdGlvbihBdXRvbWF0aWNUaHJlYWRDb25kaXRp
b246OmNyZWF0ZSgpKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgIG1f
dGhyZWFkID0gbmV3IFRocmVhZChsb2NrZXIsICp0aGlzKTsKK30KKworQnl0ZWNvZGVDYWNoZTo6
fkJ5dGVjb2RlQ2FjaGUoKQoreworfQorCit2b2lkIEJ5dGVjb2RlQ2FjaGU6OmNhY2hlQnl0ZWNv
ZGVGb3JSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgdWlu
dDY0X3Qgd2ViUGFnZUlELCB1aW50NjRfdCB3ZWJGcmFtZUlEKQoreworICAgIExPRyhCeXRlY29k
ZUNhY2hlLCAiW0J5dGVjb2RlQ2FjaGVdIENoZWNraW5nOiAlcyIsIHJlcXVlc3QudXJsKCkuc3Ry
aW5nKCkuYXNjaWkoKS5kYXRhKCkpOworCisgICAgaWYgKCFyZXF1ZXN0LnVybCgpLnByb3RvY29s
SXNJbkhUVFBGYW1pbHkoKSkgeworICAgICAgICBMT0coQnl0ZWNvZGVDYWNoZSwgIltCeXRlY29k
ZUNhY2hlXSBBYm9ydGVkOiByZXF1ZXN0IGluIG5vdCBodHRwKHMpIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBOZXR3b3JrQ2FjaGU6OkNhY2hlKiBjYWNoZSA9IG1fbmV0d29ya1By
b2Nlc3MuY2FjaGUoKTsKKyAgICBpZiAoIWNhY2hlKSB7CisgICAgICAgIExPRyhCeXRlY29kZUNh
Y2hlLCAiW0J5dGVjb2RlQ2FjaGVdIEFib3J0ZWQ6IGNhY2hlIGlzIG5vdCBhdmFpbGFibGUiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhY2hlLT5yZXRyaWV2ZShyZXF1ZXN0LCB7
IHdlYlBhZ2VJRCwgIHdlYkZyYW1lSUQgfSwgW2J5dGVjb2RlQ2FjaGUgPSBtYWtlUmVmKCp0aGlz
KSwgcmVxdWVzdCA9IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCB7IHJlcXVlc3QgfV0oYXV0byBl
bnRyeSwgYXV0bykgeworICAgICAgICBpZiAoIWVudHJ5KSB7CisgICAgICAgICAgICBMT0coQnl0
ZWNvZGVDYWNoZSwgIltCeXRlY29kZUNhY2hlXSBBYm9ydGVkOiB0aGUgb3JpZ2luYWwgcmVxdWVz
dCB3YXMgbm90IGNhY2hlZCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGNvbnN0IGF1dG8mIHJlY29yZCA9IGVudHJ5LT5zb3VyY2VTdG9yYWdlUmVjb3JkKCk7Cisg
ICAgICAgIGlmICghcmVjb3JkLmJvZHlIYXNoKSB7CisgICAgICAgICAgICBMT0coQnl0ZWNvZGVD
YWNoZSwgIltCeXRlY29kZUNhY2hlXSBBYm9ydGVkOiByZWNvcmQgaGFzIG5vIGJvZHlIYXNoIik7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBMT0coQnl0ZWNvZGVD
YWNoZSwgIltCeXRlY29kZUNhY2hlXSBFbnF1ZXVlZCBwbGFuIik7CisgICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKCpieXRlY29kZUNhY2hlLT5tX2xvY2spOworICAgICAgICBTdHJpbmcgc291cmNl
IHsgcmVjb3JkLmJvZHkuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVjb3JkLmJvZHku
c2l6ZSgpKSB9OworICAgICAgICBieXRlY29kZUNhY2hlLT5tX3F1ZXVlLmFwcGVuZChhZG9wdFJl
ZigqbmV3IFBsYW4geyAqcmVjb3JkLmJvZHlIYXNoLCBXVEZNb3ZlKHNvdXJjZSksIHJlcXVlc3Qu
dXJsKCkuc3RyaW5nKCksIHJlcXVlc3QuY2FjaGVQYXJ0aXRpb24oKSB9KSk7CisgICAgICAgIGJ5
dGVjb2RlQ2FjaGUtPm1fY29uZGl0aW9uLT5ub3RpZnlBbGwobG9ja2VyKTsKKyAgICB9KTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0J5dGVjb2RlQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQnl0ZWNvZGVDYWNoZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExNTYxMmMwMTA2NjJkMzgz
NDE0MGY4NjkyYjI2ZjI4ODY5MGRiNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0J5dGVjb2RlQ2FjaGUuaApAQCAtMCwwICsxLDc0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8d3RmL0F1dG9tYXRpY1RocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IFJlc291cmNlUmVxdWVzdDsKK307CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3
b3JrUHJvY2VzczsKKworY2xhc3MgQnl0ZWNvZGVDYWNoZSA6IHB1YmxpYyBSZWZDb3VudGVkPEJ5
dGVjb2RlQ2FjaGU+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCeXRlY29kZUNhY2hlKTsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKworICAgIGNsYXNzIFBsYW47CisgICAgY2xh
c3MgVGhyZWFkOworICAgIHVzaW5nIFBsYW5zID0gVmVjdG9yPFJlZlB0cjxQbGFuPiwgOD47CisK
KyAgICBmcmllbmQgY2xhc3MgVGhyZWFkOworCitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxC
eXRlY29kZUNhY2hlPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQnl0ZWNvZGVDYWNoZShuZXR3b3JrUHJv
Y2VzcykpOworICAgIH0KKworICAgIH5CeXRlY29kZUNhY2hlKCk7CisKKyAgICB2b2lkIGNhY2hl
Qnl0ZWNvZGVGb3JSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2
NF90LCB1aW50NjRfdCk7CisKK3ByaXZhdGU6CisgICAgQnl0ZWNvZGVDYWNoZShOZXR3b3JrUHJv
Y2VzcyYpOworCisgICAgTmV0d29ya1Byb2Nlc3MmIG1fbmV0d29ya1Byb2Nlc3M7CisgICAgUGxh
bnMgbV9xdWV1ZTsKKyAgICBCb3g8TG9jaz4gbV9sb2NrOworICAgIFJlZjxBdXRvbWF0aWNUaHJl
YWRDb25kaXRpb24+IG1fY29uZGl0aW9uOworICAgIFJlZlB0cjxBdXRvbWF0aWNUaHJlYWQ+IG1f
dGhyZWFkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAppbmRleCAzZTQ3ODYxZjIwZjFh
N2I4Y2ZhNmM5ZTZmOWU3NDUwYWRiNmExY2VkLi5kNmNjMjA4MWVjZTYwNDY0MzQ2NTI5MTk3YjM0
ZTAxYzQ0MzVkM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlLmgKQEAgLTEzNCw2ICsxMzQsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHJldHJpZXZlRGF0YShjb25zdCBEYXRhS2V5JiwgRnVuY3Rpb248dm9pZChjb25zdCB1aW50OF90
Kiwgc2l6ZV90KT4pOwogICAgIHZvaWQgc3RvcmVEYXRhKGNvbnN0IERhdGFLZXkmLCAgY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90KTsKKworICAgIGNvbnN0IFNhbHQmIHNhbHQoKSBjb25zdCB7
IHJldHVybiBtX3N0b3JhZ2UtPnNhbHQoKTsgfQogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4gbWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IG1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNz
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9j
ZXNzQ29jb2EubW0KaW5kZXggYzMwNmNjZTQzMDYxYzQ1MTllMjU1NWJkZDRmNDk4MjYyZjNhMTU1
MS4uNjI2OTk2YmY4ZDQ0ODg1MDI0YTZkM2NlYWYwN2YyZmEyY2I0MzI1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3ND
b2NvYS5tbQpAQCAtMTIyLDYgKzEyMiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3Jt
SW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EoY29uc3QgTmV0d29ya1Byb2Nlc3NDCiAjZW5k
aWYKIAogICAgIG1fY2FjaGUgPSBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpvcGVuKCp0aGlzLCBtX2Rp
c2tDYWNoZURpcmVjdG9yeSwgY2FjaGVPcHRpb25zKTsKKyAgICBtX2J5dGVjb2RlQ2FjaGUgPSBC
eXRlY29kZUNhY2hlOjpjcmVhdGUoKnRoaXMpOwogICAgIGlmICghbV9jYWNoZSkKICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTmV0d29ya0NhY2hlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgdGhl
IFdlYktpdCBuZXR3b3JrIGRpc2sgY2FjaGUiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRleCA3MmZi
NjU0OTAwM2Q2ZWIwYWFlZDk5YzIzZTMyMWM2M2UyYWFkMWMwLi42ZTYzMzkxYWNmYjhmMjU0MTZj
YzNkYjE4Y2YyMmI0NzM5ZDE2ZGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtMTE5LDYgKzExOSw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNz
KGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpCiAjZW5kaWYKIAogICAgIG1fY2FjaGUgPSBOZXR3
b3JrQ2FjaGU6OkNhY2hlOjpvcGVuKCp0aGlzLCBtX2Rpc2tDYWNoZURpcmVjdG9yeSwgY2FjaGVP
cHRpb25zKTsKKyAgICBtX2J5dGVjb2RlQ2FjaGUgPSBCeXRlY29kZUNhY2hlOjpjcmVhdGUoKnRo
aXMpOwogCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aC5p
c0VtcHR5KCkpIHsKICAgICAgICAgc3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyPigpLT5zZXRD
b29raWVQZXJzaXN0ZW50U3RvcmFnZShwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdl
UGF0aCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Rlcml2ZWREYXRh
LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Rlcml2ZWREYXRhLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xMDhmNzQ2YzQ3ZGUwM2EzMWIyMmI3NzUyZmVmODAxNmJjZTQ2MTBhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVyaXZlZERhdGEuY3BwCkBAIC0w
LDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
RGVyaXZlZERhdGEuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAi
RGVjb2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXIuaCIKKworbmFtZXNwYWNlIElQQyB7CisKK3Zv
aWQgRGVyaXZlZERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIEFy
Z3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlKGVuY29kZXIsIG1fdHlwZSk7CisgICAgZW5jb2Rl
ci5lbmNvZGUobV9kYXRhKTsKK30KKworYm9vbCBEZXJpdmVkRGF0YTo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIERlcml2ZWREYXRhJiBkZXJpdmVkRGF0YSkKK3sKKyAgICBpZiAoIUFyZ3VtZW50
Q29kZXI8U3RyaW5nPjo6ZGVjb2RlKGRlY29kZXIsIGRlcml2ZWREYXRhLm1fdHlwZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUoZGVyaXZlZERhdGEu
bV9kYXRhKTsKK30KKworT3B0aW9uYWw8RGVyaXZlZERhdGE+IERlcml2ZWREYXRhOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBEZXJpdmVkRGF0YSBkZXJpdmVkRGF0YTsKKyAgICBp
ZiAoIWRlY29kZShkZWNvZGVyLCBkZXJpdmVkRGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHsgZGVyaXZlZERhdGEgfTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZXJpdmVkRGF0YS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVyaXZlZERhdGEuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
NTdhNTNmZDY4MjQ3MzI1NDA3MzFhMjYxZjQwNjg2OThlOWYyNThjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVyaXZlZERhdGEuaApAQCAtMCwwICsxLDYx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBJUEMgeworCitjbGFzcyBEZWNvZGVyOworY2xhc3MgRW5jb2Rl
cjsKKworY2xhc3MgRGVyaXZlZERhdGEgeworcHVibGljOgorICAgIERlcml2ZWREYXRhKCkgPSBk
ZWZhdWx0OworCisgICAgRGVyaXZlZERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEpCisgICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgICAgICwg
bV9kYXRhKGRhdGEpCisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuICFtX2RhdGEuc2l6ZSgpOyB9CisKKyAgICBjb25zdCBTdHJpbmcmIHR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBjb25zdCBEYXRhUmVmZXJlbmNlJiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhOyB9CisKKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBEZXJpdmVkRGF0YSYpOworICAgIHN0
YXRpYyBPcHRpb25hbDxEZXJpdmVkRGF0YT4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToK
KyAgICBTdHJpbmcgbV90eXBlOworICAgIERhdGFSZWZlcmVuY2UgbV9kYXRhOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dp
bmcuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDU5Y2VlODUzMDc5
MzAwYjhiMWViMjQyN2M2M2M2MTBlNmQ2MDUxMDkuLmU3ZjczZTQ5YThmNjJkNWVjNjAxN2MyMmRh
NTQyOWZhNjFkNmE2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2lu
Zy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC00Myw2ICs0Myw3
IEBAIGV4dGVybiAiQyIgewogICAgIE0oQXV0b21hdGlvbikgXAogICAgIE0oQWN0aXZpdHlTdGF0
ZSkgXAogICAgIE0oQmFja0ZvcndhcmQpIFwKKyAgICBNKEJ5dGVjb2RlQ2FjaGUpIFwKICAgICBN
KENhY2hlU3RvcmFnZSkgXAogICAgIE0oQ29udGVudE9ic2VydmF0aW9uKSBcCiAgICAgTShDb250
ZXh0TWVudSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggNGRlMGM2ZmVmZThlYWYzY2E0YTBmZGYwN2QwNWEx
MTE3ZGFiY2IzMi4uOGM3NGE4MjYxMzRiNzFlZDFiYTdiZmRlZDc3ODMwZDMwMTc0YjA1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CkBAIC01OCw2ICs1OCw3IEBAIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dPcmlnaW5TdG9yZS5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5
CiAKK05ldHdvcmtQcm9jZXNzL2NhY2hlL0J5dGVjb2RlQ2FjaGUuY3BwCiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGVkM2Q0ZTE5M2ZhMjFlNmIxM2M0NjcwMDIyZTAwMWRlYmY4ODE3
ODcuLjQ5N2RhZGNlYTNkM2VjMmU2ZDY3NDFkNTI2YTdkZmY2YWFiNDNkNzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIzLDYgKzEy
Myw5IEBACiAJCTBGRjI0QTJEMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjI0QTJCMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMEZG
MjRBMkUxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZGMjRBMkMxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHlNZXNzYWdlcy5oICovOyB9OwogCQkwRkYyNjRBMDFBMUZGOUNDMDAxRkU3NTkgLyogUmVtb3Rl
TGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjcwN0M3OTFBMUZFRUEzMDBEQTdBNDUgLyogUmVt
b3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmggKi87IH07CisJCTE0RDAxQTcz
MjFGQTE4MDYwMEJDNTRFOSAvKiBCeXRlY29kZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQwMUE3MTIxRkExODA1MDBCQzU0RTkgLyogQnl0
ZWNvZGVDYWNoZS5oICovOyB9OworCQkxNEUyODA5NDIyMDAwQTBGMDAzQkM1N0IgLyogRGVyaXZl
ZERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
RTI4MDkyMjIwMDA5RjkwMDNCQzU3QiAvKiBEZXJpdmVkRGF0YS5oICovOyB9OworCQkxNEUyODA5
NTIyMDAwQTIyMDAzQkM1N0IgLyogRGVyaXZlZERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRFMjgwOTMyMjAwMDlGOTAwM0JDNTdCIC8qIERl
cml2ZWREYXRhLmNwcCAqLzsgfTsKIAkJMTU3MzlCQkQxQjQyMDQyRDAwRDI1OEMxIC8qIFdlYlVz
ZXJNZWRpYUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEE0MTBGNDkxOUFGN0I4MDAwMkVCQUI1IC8qIFdlYlVzZXJNZWRpYUNsaWVudC5oICov
OyB9OwogCQkxQTAwMkQ0MzE5NkIzMzcwMDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlSW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMDAy
RDQyMTk2QjMzNzAwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oICovOyB9Owog
CQkxQTAwMkQ0NDE5NkIzMzg5MDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTAwMkQzRjE5NkIzMjk0MDBC
OUFENDQgLyogX1dLU2Vzc2lvblN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE5MjUsNiArMTkyOCwxMCBAQAogCQkwRkYyNEEyQzE4NzlF
NEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHlNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKIAkJMEZGMjRBMkYxODc5RTRGRTAwM0FCRjBDIC8qIFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTA1OEM3QjFGRUE1NTg1RTExQ0EyQ0JCIC8qIENvY29hLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBu
YW1lID0gQ29jb2EuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
Q29jb2EuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQkxNEQwMUE3
MDIxRkExODA1MDBCQzU0RTkgLyogQnl0ZWNvZGVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMTREMDFBNzEyMUZBMTgwNTAwQkM1NEU5IC8qIEJ5dGVjb2RlQ2FjaGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVDYWNoZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxNEUyODA5MjIyMDAwOUY5MDAzQkM1N0IgLyogRGVyaXZl
ZERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVyaXZlZERhdGEuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRFMjgwOTMyMjAwMDlGOTAwM0JDNTdCIC8q
IERlcml2ZWREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERl
cml2ZWREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwMDJEM0UxOTZC
MzI5NDAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IF9XS1Nlc3Npb25TdGF0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUEwMDJEM0YxOTZCMzI5NDAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tTZXNzaW9uU3RhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwMDJENDIxOTZCMzM3MDAwQjlBRDQ0IC8qIF9X
S1Nlc3Npb25TdGF0ZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IF9XS1Nlc3Npb25TdGF0ZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01MzE1LDEwICs1MzIyLDEwIEBACiAJCQkJNTFDMEM5NzMxRERENzRGMDAwMzJDQUQzIC8qIElj
b25Mb2FkaW5nRGVsZWdhdGUubW0gKi8sCiAJCQkJN0E4MjFGNEIxRTJGNjY0ODAwNjA0NTc3IC8q
IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oICovLAogCQkJCTdBODIxRjREMUUy
RjY3OUUwMDYwNDU3NyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0gKi8s
Ci0JCQkJNDExMjg2RUYyMUM4QTkwQzAwM0E4NTUwIC8qIE1lZGlhQ2FwdHVyZVV0aWxpdGllcy5o
ICovLAotCQkJCTQxMTI4NkYwMjFDOEE5MEQwMDNBODU1MCAvKiBNZWRpYUNhcHR1cmVVdGlsaXRp
ZXMubW0gKi8sCiAJCQkJNTc5MDBCM0UyMUY4RjlCODAwODMxN0RFIC8qIExvYWRPcHRpbWl6ZXIu
aCAqLywKIAkJCQk1NzkwMEIzRjIxRjhGOUI4MDA4MzE3REUgLyogTG9hZE9wdGltaXplci5tbSAq
LywKKwkJCQk0MTEyODZFRjIxQzhBOTBDMDAzQTg1NTAgLyogTWVkaWFDYXB0dXJlVXRpbGl0aWVz
LmggKi8sCisJCQkJNDExMjg2RjAyMUM4QTkwRDAwM0E4NTUwIC8qIE1lZGlhQ2FwdHVyZVV0aWxp
dGllcy5tbSAqLywKIAkJCQkxQUJDM0RGNDE4OTlFNDM3MDA0RjA2MjYgLyogTmF2aWdhdGlvblN0
YXRlLmggKi8sCiAJCQkJMUFCQzNERjMxODk5RTQzNzAwNEYwNjI2IC8qIE5hdmlnYXRpb25TdGF0
ZS5tbSAqLywKIAkJCQk1QzZDRTZEMzFGNTlFQTM1MDAwN0M2Q0IgLyogUGFnZUNsaWVudEltcGxD
b2NvYS5oICovLApAQCAtNTM5NCw2ICs1NDAxLDggQEAKIAkJCQkxQUM3NTM3RTE4M0JFNTBGMDA3
MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5oICovLAogCQkJCUJDMDMyRDlEMTBGNDM3RDEwMDU4QzE1
QSAvKiBEZWNvZGVyLmNwcCAqLywKIAkJCQlCQzAzMkQ5RTEwRjQzN0QxMDA1OEMxNUEgLyogRGVj
b2Rlci5oICovLAorCQkJCTE0RTI4MDkzMjIwMDA5RjkwMDNCQzU3QiAvKiBEZXJpdmVkRGF0YS5j
cHAgKi8sCisJCQkJMTRFMjgwOTIyMjAwMDlGOTAwM0JDNTdCIC8qIERlcml2ZWREYXRhLmggKi8s
CiAJCQkJQkMwMzJEOUYxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuY3BwICovLAogCQkJCUJD
MDMyREEwMTBGNDM3RDEwMDU4QzE1QSAvKiBFbmNvZGVyLmggKi8sCiAJCQkJNDE1MUU1QzMxRkJC
OTBBOTAwRTQ3RTJEIC8qIEZvcm1EYXRhUmVmZXJlbmNlLmggKi8sCkBAIC04NzU0LDYgKzg3NjMs
OCBAQAogCQlFNDg5RDI4MjFBMEEyQkU4MDA3OEMwNkEgLyogY2FjaGUgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTE0RDAxQTcwMjFGQTE4MDUwMEJDNTRF
OSAvKiBCeXRlY29kZUNhY2hlLmNwcCAqLywKKwkJCQkxNEQwMUE3MTIxRkExODA1MDBCQzU0RTkg
LyogQnl0ZWNvZGVDYWNoZS5oICovLAogCQkJCTQxODk3RUQ2MUY0MTVEODYwMDE2RkE0MiAvKiBD
YWNoZVN0b3JhZ2VFbmdpbmUuY3BwICovLAogCQkJCTQxODk3RUQyMUY0MTVEODUwMDE2RkE0MiAv
KiBDYWNoZVN0b3JhZ2VFbmdpbmUuaCAqLywKIAkJCQk0MUM4NTgxOTFGNTEwREVFMDA2NUUwODUg
LyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwICovLApAQCAtOTAwNiw2ICs5MDE3LDcgQEAK
IAkJCQlFMTcwODc2QzE2RDZDQTY5MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJ5UHJveHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTRGNjAxNDMyMTU1QzVBQTIwMDFGQkRFMCAvKiBCbG9ja2luZ1Jlc3Bv
bnNlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU3MDUxMTFCRTQxMEU2MDA4NzRBRjEgLyog
QmxvY2tTUEkuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0RDAxQTczMjFGQTE4MDYwMEJDNTRFOSAv
KiBCeXRlY29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMwNjVGQTEyNTkzNDRFMDBF
NzEyNzggLyogQ2FjaGVNb2RlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4OTdFRDgxRjQxNUQ4
QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFG
QUJEMkExRjRERTAwMTAwNkE2Qzk3IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTkwMzAsNiArOTA0Miw3IEBACiAJCQkJQzU1RjkxNzExQzU5Njc2RTAwMjlF
OTJEIC8qIERhdGFEZXRlY3Rpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzc1Mzgw
MTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzAzMkRBNjEwRjQzN0QxMDA1OEMxNUEgLyogRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MTRFMjgwOTQyMjAwMEEwRjAwM0JDNTdCIC8qIERlcml2ZWREYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1N0RDRURBQjIxNEM2MDA5MDAxNkI4NDcgLyogRGV2aWNlSWRlbnRpdHlTUEkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA3Mjk3RjlGMUMxN0JCRUEwMTVGMDczNSAvKiBEZXZpY2VJZEhhc2hT
YWx0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM4OTFCNkMxQTY4QzMwQjAwMzBGMzg2
IC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTkxMTgsNiAr
OTEzMSw3IEBACiAJCQkJNDEzMDc1QUQxREU4NUY1ODAwMzlFQzY5IC8qIExpYldlYlJUQ1NvY2tl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFEQzQ1OUMxRTNEQkIyODAwQjExRjUxIC8qIExpYldl
YlJUQ1NvY2tldENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzMDc1QjIxREU4NUY1ODAw
MzlFQzY5IC8qIExpYldlYlJUQ1NvY2tldEZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3
OTAwQjQwMjFGOEY5QjgwMDgzMTdERSAvKiBMb2FkT3B0aW1pemVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRDEwODc2MTFEMkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU3OERDMjk4MjE1NUEwMDIwMDc0RTgxNSAvKiBMb2NhbEF1dGhlbnRpY2F0
aW9uU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RENFREFDMjE0QzYwMjcwMDE2Qjg0
NyAvKiBMb2NhbEF1dGhlbnRpY2F0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtOTkyMCw3ICs5OTM0
LDYgQEAKIAkJCQk3Qzg5RDJBNDFBNjc4ODc1MDAzQTVGREUgLyogV0tVc2VyU2NyaXB0UmVmLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzg2OTlCNTExNkFBREFBMDAyQTkyNUIgLyogV0tWaWV3Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzg2OTlCNzExNkFBREFBMDAyQTkyNUIgLyogV0tWaWV3SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAotCQkJCTU3OTAwQjQwMjFGOEY5QjgwMDgzMTdERSAvKiBM
b2FkT3B0aW1pemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDI4QTQ5NzFBRjk2NUExMDBGMTkw
QzkgLyogV0tWaWV3TGF5b3V0U3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovLAogCQkJCUJGQTYxNzlG
MTJGMEI5OUQwMDMzRTBDQSAvKiBXS1ZpZXdQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
NUUxQUZFOTE2QjIwQjc1MDA2Q0MxRjIgLyogV0tXZWJBcmNoaXZlLmggaW4gSGVhZGVycyAqLywK
QEAgLTEwNzg0LDYgKzEwNzk3LDcgQEAKIAkJCQkyRDkyQTc3RDIxMkI2QTcxMDBGNDkzRkQgLyog
Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3RTIxMkI2QTcxMDBGNDkz
RkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3RjIxMkI2
QTcxMDBGNDkzRkQgLyogRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNEUyODA5NTIy
MDAwQTIyMDAzQkM1N0IgLyogRGVyaXZlZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFC
N0Q2MTkxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2NDIyOTkxMkREMDI5MjAwQ0FBRTJDIC8qIERyYXdpbmdB
cmVhTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNjQyMzA4MTJERDA5
RUIwMENBQUUyQyAvKiBEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDUwNmQxNjZhMTVkMGU3NTkzNGQ3MjBlN2Y4ZGU2MTUy
YjE3MDVkMzEuLmI3YjM0MWEwZTNlMTVlNTJjNjZhOGQ4ZWI4ZGNiYzBlZDg3MDNmMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJXZWJVUkxTY2hlbWVUYXNrUHJv
eHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9DYWNoZWRSZXNvdXJjZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVkU2Ny
aXB0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaD4KQEAgLTI4MCw2ICsyODEsNyBAQCB2b2lkIFdlYkxv
YWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2Fk
ZXImIHJlc291cmNlTAogICAgIGxvYWRQYXJhbWV0ZXJzLmRlZmVyc0xvYWRpbmcgPSByZXNvdXJj
ZUxvYWRlci5kZWZlcnNMb2FkaW5nKCk7CiAgICAgbG9hZFBhcmFtZXRlcnMubmVlZHNDZXJ0aWZp
Y2F0ZUluZm8gPSByZXNvdXJjZUxvYWRlci5zaG91bGRJbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCk7
CiAgICAgbG9hZFBhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBtYXhpbXVtQnVmZmVy
aW5nVGltZTsKKyAgICBsb2FkUGFyYW1ldGVycy5kZXJpdmVkQ2FjaGVkRGF0YVR5cGVzVG9SZXRy
aWV2ZSA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5kZXJpdmVkQ2FjaGVkRGF0YVR5cGVzVG9S
ZXRyaWV2ZTsKICAgICBsb2FkUGFyYW1ldGVycy5vcHRpb25zID0gcmVzb3VyY2VMb2FkZXIub3B0
aW9ucygpOwogICAgIGxvYWRQYXJhbWV0ZXJzLnByZWZsaWdodFBvbGljeSA9IHJlc291cmNlTG9h
ZGVyLm9wdGlvbnMoKS5wcmVmbGlnaHRQb2xpY3k7CiAgICAgbG9hZFBhcmFtZXRlcnMuaXNIVFRQ
U1VwZ3JhZGVFbmFibGVkID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSA/IHJlc291cmNlTG9hZGVy
LmZyYW1lKCktPnNldHRpbmdzKCkuSFRUUFNVcGdyYWRlRW5hYmxlZCgpIDogZmFsc2U7CkBAIC02
NjQsNiArNjY2LDE2IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmRpZEZpbmlzaFByZWNvbm5l
Y3Rpb24odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsCiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUoZXJyb3IpKTsKIH0KIAordm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6
Y2FjaGVCeXRlY29kZUZvclNjcmlwdChjb25zdCBXZWJDb3JlOjpDYWNoZWRTY3JpcHQmIHNjcmlw
dCkKK3sKKyAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBzY3JpcHQud2ViUGFnZUlEKCk7CisgICAg
dWludDY0X3Qgd2ViRnJhbWVJRCA9IHNjcmlwdC53ZWJGcmFtZUlEKCk7CisgICAgaWYgKCF3ZWJQ
YWdlSUQgfHwgIXdlYkZyYW1lSUQpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q2FjaGVCeXRl
Y29kZUZvclJlcXVlc3Qoc2NyaXB0LnJlc291cmNlUmVxdWVzdCgpLCB3ZWJQYWdlSUQsIHdlYkZy
YW1lSUQpLCAwKTsKK30KKwogYm9vbCBXZWJMb2FkZXJTdHJhdGVneTo6aXNPbkxpbmUoKSBjb25z
dAogewogICAgIHJldHVybiBtX2lzT25MaW5lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKaW5kZXggMWVmYzkzYzAyYTNjYTJi
OWJmMGVkZjBhYTkwNWU1ZjliYjBkM2JkMy4uNzk5ZWY3N2JhMDMzZmQ1ODA4MmE5YzJiNzVlNjA1
ZDUyOTJhNjRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5oCkBAIC02OCw2ICs2OCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHByZWNvbm5lY3RUbyhXZWJDb3JlOjpGcmFtZUxvYWRlciYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6
OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90IHByZWNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpOwogCisgICAgdm9pZCBj
YWNoZUJ5dGVjb2RlRm9yU2NyaXB0KGNvbnN0IFdlYkNvcmU6OkNhY2hlZFNjcmlwdCYpIG92ZXJy
aWRlOworCiAgICAgdm9pZCBzZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVk
KGJvb2wpIGZpbmFsOwogCiAgICAgV2ViUmVzb3VyY2VMb2FkZXIqIHdlYlJlc291cmNlTG9hZGVy
Rm9ySWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIpIGNvbnN0IHsg
cmV0dXJuIG1fd2ViUmVzb3VyY2VMb2FkZXJzLmdldChpZGVudGlmaWVyKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IDEzMDlkYzczNzA4OGVjN2FlYTA2YTM3ZWRiNTIzZjFlMDM2YzE3ZjEuLjcwYjk1NDU3
NzI0ODFkNGZhNzI3OWQxNTE4ZmE1YTQxNDI4Yzg2N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRlci5oIgogCiAjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIkRlcml2ZWREYXRhLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5l
dHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgiCkBAIC0xMTAsNyArMTExLDcgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRf
dCB0b3RhbEJ5dGVzVG9CZVMKICAgICBtX2NvcmVMb2FkZXItPmRpZFNlbmREYXRhKGJ5dGVzU2Vu
dCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib29sIG5l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQordm9pZCBXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlLCBjb25zdCBWZWN0
b3I8SVBDOjpEZXJpdmVkRGF0YT4mIGRlcml2ZWREYXRhKQogewogICAgIExPRyhOZXR3b3JrLCAi
KFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UgZm9yICcl
cycuIFN0YXR1cyAlZC4iLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRh
dGEoKSwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBzdGF0dXMgPSAlZCkiLCBt
X3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCkpOwpAQCAtMTQwLDYgKzE0MSwxMCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgIH0K
IAogICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZNb3Zl
KHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IGVudHJ5IDogZGVyaXZlZERhdGEpIHsKKyAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShlbnRyeS5kYXRhKCkuZGF0YSgpLCBlbnRyeS5kYXRhKCkuc2l6ZSgpKTsKKyAg
ICAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZXRyaWV2ZURlcml2ZWREYXRhRnJvbUNhY2hlKGVudHJ5
LnR5cGUoKSwgYnVmZmVyLmdldCgpKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRf
dCBlbmNvZGVkRGF0YUxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IGM2MmQ0NGRlMGU2MTc5MjEyZDJhNzRm
ZThmYTQzYzkxYWE1YmFkYzEuLjI1M2NlMGVkMjhiNmNlNGQ0ODVkYTAyMzQxMWU2YWExNTExOWUy
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuaApAQCAtMzMsNiArMzMsNyBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNz
IERhdGFSZWZlcmVuY2U7CitjbGFzcyBEZXJpdmVkRGF0YTsKIH0KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNzYsOSArNzcsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVl
c3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
Jik7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRv
dGFsQnl0ZXNUb0JlU2VudCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZU1lc3NhZ2UpOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlLCBjb25zdCBWZWN0b3I8SVBDOjpEZXJpdmVkRGF0YT4mKTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFM
ZW5ndGgpOwotICAgIHZvaWQgZGlkUmV0cmlldmVEZXJpdmVkRGF0YShjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgZGlkRmluaXNoUmVzb3Vy
Y2VMb2FkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlk
RmFpbFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9p
ZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3Nh
Z2VzLmluCmluZGV4IDdiOTMyNTZmMDM2ZGQwNDJmNDRiYTgzYTMxOGJiN2I2NjM2ZDQxYWEuLjMw
YjAzZDA2ZDI4MjBjOGI3NmU2NDVjN2QyZTM3ZmUzZjY0OGViY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
Lm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxv
YWRlciBMZWdhY3lSZWNlaXZlciB7CiAgICAgV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVz
cG9uc2UpCiAgICAgRGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3Rh
bEJ5dGVzVG9CZVNlbnQpCi0gICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1l
c3NhZ2UpCisgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UsIFZl
Y3RvcjxJUEM6OkRlcml2ZWREYXRhPiBkYXRhKQogICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQog
ICAgIERpZEZpbmlzaFJlc291cmNlTG9hZChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgbmV0
d29ya0xvYWRNZXRyaWNzKQogICAgIERpZEZhaWxSZXNvdXJjZUxvYWQoV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1
cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCmluZGV4IDU1YjM2OTc1MzA2
NTgyMTRiYzk3OWE4NzkyYjY2MDcyNmQ4Mjk2ZGQuLmQwNmY3NWYwNjU1M2NlZjM0MjRhNTRmYzI4
Yzk2ZjFkYmExOWIzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1
cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaApAQCAtNjAsNiArNjAs
OCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHByZWNvbm5lY3RUbyhXZWJDb3JlOjpGcmFtZUxvYWRl
ciYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25u
ZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAKKyAgICB2b2lkIGNhY2hlQnl0ZWNvZGVG
b3JTY3JpcHQoY29uc3QgV2ViQ29yZTo6Q2FjaGVkU2NyaXB0JikgZmluYWwgeyB9CisKICAgICB2
b2lkIHNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoYm9vbCkgZmluYWwg
eyB9CiAKICAgICBib29sIGlzU2VyaWFsTG9hZGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzU2VyaWFsTG9hZGluZ0VuYWJsZWQ7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361237</attachid>
            <date>2019-02-05 16:08:35 -0800</date>
            <delta_ts>2019-02-05 16:19:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194047-20190205160809.patch</filename>
            <type>text/plain</type>
            <size>69893</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwOTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZWZkMzQzYWNkYjMwZDg1MjEwNjg1ODVjNmU5YTI3ZWJkZGMxMTAwLi5kNGFjNmNkMTBlNDI2YmY0
MTRlNjcyNGZkNWEwOTg2M2FmM2ZlYTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxOS0wMS0zMCAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBJbnRlZ3JhdGUgSlNDIGJ5dGVjb2RlIGNhY2hlIHdpdGggV2ViS2l0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQwNDcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY2FsbGJh
Y2sgdG8gU291cmNlUHJvdmlkZXIgZm9yIGNhY2hpbmcgdGhlIGJ5dGVjb2RlLgorCisgICAgICAg
ICogcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgIChKU0M6OkNhY2hlZEJ5dGVjb2Rl
OjpDYWNoZWRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVyOjpjYWNoZUJ5
dGVjb2RlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAg
IChKU0M6OkNvZGVDYWNoZTo6d3JpdGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmg6
CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVWYWx1ZTo6U291cmNlQ29kZVZhbHVlKToKKyAgICAg
ICAgKEpTQzo6Q29kZUNhY2hlTWFwOjpmZXRjaEZyb21EaXNrSW1wbCk6CisgICAgICAgICogcnVu
dGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbHVhdGUpOgorCiAyMDE5LTAy
LTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcncyBkb2Vz
R0MoKSBpcyBpbmNvcnJlY3QgYWJvdXQgdGhlIFNhbWVWYWx1ZSBub2RlJ3MgYmVoYXZpb3IuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggY2ZiMGVlOTQ0M2ZjNGYwYzI1Njk2MzdlYzBjYThhMDI5ZGNmMzMyMS4uZDRj
NGZiZGVjZWEyYTRlNmY0MDYxODZhNmJiNjEwNGRkZjE3ZTE1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM4IEBACisyMDE5LTAxLTMwICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29t
PgorCisgICAgICAgIEludGVncmF0ZSBKU0MgYnl0ZWNvZGUgY2FjaGUgd2l0aCBXZWJLaXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDA0NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBDYWNoZWRC
eXRlY29kZSB0byBDYWNoZWRTY3JpcHQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHRGZXRjaGVyOjpyZXF1ZXN0U2Ny
aXB0V2l0aENhY2hlIGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRT
b3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGxvYWRlci9Mb2FkZXJTdHJhdGVneS5oOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZSk6CisgICAgICAgICog
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVy
T3B0aW9ucy5oOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZy
b21DYWNoZSk6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmg6CisgICAgICAg
ICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFk
YWJsZUxvYWRlck9wdGlvbnM6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlOjpsb2FkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpsb2FkZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OndlYlBhZ2VJRCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6d2ViRnJhbWVJRCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZTo6ZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZSk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRTY3JpcHQ6OmNhY2hlZEJ5dGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNj
cmlwdDo6ZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZSk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5oOgorCiAyMDE5LTAyLTA0ICBBbnRvaW5lIFF1aW50ICA8Z3Jh
b3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGEgZGVkaWNhdGVkIHR5cGUgaW5zdGVhZCBv
ZiBpbnQzMl90IGZvciBwb2ludGVyIGlkZW50aWZpZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI4YzMyYjVlNTg5
NTFjMjQ1NGVhYmM5MjZmY2M4MTNjNTQ4Y2Y4NWIuLjQ2ZjlhNjNkOTE3ZGMzYmM2MzYzMjRkNTU4
MDE3MjFjYWZkNmE2YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjggQEAKKzIwMTktMDEtMzAgIFRh
ZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CisKKyAgICAgICAgSW50ZWdyYXRlIEpT
QyBieXRlY29kZSBjYWNoZSB3aXRoIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmV2ZXJ0IHBhcnQgb2YgdGhlIGNvZGUgZGVsZXRlZCBpbiBy
MjM4OTMzLCBidXQgY2hhbmdlIGl0IHRvIHJldHJpZXZlIHRoZQorICAgICAgICBkZXJpdmVkIGRh
dGEgc3luY2hyb25vdXNseS4gT3RoZXJ3aXNlLCB0aGUgYnl0ZWNvZGUgd291bGQgbm90IGJlIGF2
YWlsYWJsZQorICAgICAgICBpbiB0aW1lIGZvciBleGVjdXRpb24uCisKKyAgICAgICAgQWRkaXRp
b25hbGx5ICBhIEJ5dGVjb2RlQ2FjaGUgdG8gdGhlIE5ldHdvcmtQcm9jZXNzIHRvIGdlbmVyYXRl
IGFuZCBzdG9yZQorICAgICAgICBieXRlY29kZSBmb3IgcmVxdWVzdHMuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjYWNoZUJ5dGVjb2RlRm9y
UmVxdWVzdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Ynl0ZWNvZGVDYWNo
ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZFJldHJpZXZlQ2FjaGVFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cHJvY2Vzc0NhY2hlZEVudHJ5QWZ0ZXJEaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0J5dGVjb2RlQ2FjaGUuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Qnl0ZWNvZGVDYWNoZTo6UGxhbjo6UGxhbik6CisgICAg
ICAgIChXZWJLaXQ6OkJ5dGVjb2RlQ2FjaGU6OlBsYW46OmNvbXBpbGUpOgorICAgICAgICAoV2Vi
S2l0OjpCeXRlY29kZUNhY2hlOjpUaHJlYWQ6OlRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OkJ5
dGVjb2RlQ2FjaGU6OkJ5dGVjb2RlQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpCeXRlY29kZUNh
Y2hlOjp+Qnl0ZWNvZGVDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OkJ5dGVjb2RlQ2FjaGU6OmNh
Y2hlQnl0ZWNvZGVGb3JSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9C
eXRlY29kZUNhY2hlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0Nh
Y2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmguCisgICAgICAgIChXZWJLaXQ6OkJ5dGVjb2RlQ2Fj
aGU6OmNyZWF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnNhbHQgY29uc3QpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3Jr
UHJvY2Vzc0NvY29hKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9j
ZXNzU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Rlcml2ZWRE
YXRhLmNwcDogQWRkZWQuCisgICAgICAgIChJUEM6OkRlcml2ZWREYXRhOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoSVBDOjpEZXJpdmVkRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvRGVyaXZlZERhdGEuaDogQWRkZWQuCisgICAgICAgIChJUEM6OkRlcml2ZWREYXRhOjpE
ZXJpdmVkRGF0YSk6CisgICAgICAgIChJUEM6OkRlcml2ZWREYXRhOjppc0VtcHR5IGNvbnN0KToK
KyAgICAgICAgKElQQzo6RGVyaXZlZERhdGE6OnR5cGUgY29uc3QpOgorICAgICAgICAoSVBDOjpE
ZXJpdmVkRGF0YTo6ZGF0YSBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5oOgor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRG
cm9tTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6
Y2FjaGVCeXRlY29kZUZvclNjcmlwdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YkxvYWRlclN0cmF0ZWd5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
Lm1lc3NhZ2VzLmluOgorCiAyMDE5LTAyLTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBDYXB0dXJlIHN0YXRlIHNob3VsZCBiZSBtYW5hZ2VkIGNvbnNpc3Rl
bnRseSB3aGVuIGRvaW5nIHByb2Nlc3Mgc3dhcHBpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXgg
OTdkNzM2ODNiMWMzMjY0OTRlZjE0NTk1ZDQ0MzI4ZWYzNmIzNGMxZi4uNWUyNTZmMjEzMzQ1NmFk
MDg0MmY1OTFhYjY5YjA3MzE3OWEyNThhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxOS0wMS0zMCAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4K
KworICAgICAgICBJbnRlZ3JhdGUgSlNDIGJ5dGVjb2RlIGNhY2hlIHdpdGggV2ViS2l0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQwNDcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgTG9h
ZGVyU3RyYXRlZ3kncyBgY2FjaGVCeXRlY29kZUZvclNjcmlwdGAgYXMgbm8tb3AuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoKKwogMjAxOS0w
MS0zMSAgVGFrYXNoaSBLb21vcmkgIDxUYWthc2hpLktvbW9yaUBzb255LmNvbT4KIAogICAgICAg
ICBbQ3VybF0gUmVtb3ZlIHVubmVjZXNzYXJ5IG1lbWJlciBmcm9tIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJv
dmlkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaApp
bmRleCAzNzc4YmY5NDFhZDdmYWM4NjRkNmNhNzgwYTA2ZDgyODllOTFhZTRjLi5iZDBhN2ViMWQ2
MGNhYTczOWNiMWRiZjU4OWQ0YWIwYzhmNjQ3MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCkBAIC0xMTYsNiArMTE2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgaGFzaCgpIGNvbnN0ID0gMDsKICAgICAg
ICAgdmlydHVhbCBTdHJpbmdWaWV3IHNvdXJjZSgpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVh
bCBjb25zdCBDYWNoZWRCeXRlY29kZSogY2FjaGVkQnl0ZWNvZGUoKSBjb25zdCB7IHJldHVybiBu
dWxscHRyOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBjYWNoZUJ5dGVjb2RlKCkgY29uc3QgeyB9
CiAKICAgICAgICAgU3RyaW5nVmlldyBnZXRSYW5nZShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0
CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
ZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3Bw
CmluZGV4IGI0MWU1MjY1MWYzZTdjOWY2ZWNkZTIzZmZiOTY5OWM4OWRiNzg2NTcuLjI0N2ZiM2Y0
NTA1NjQyMTkxNWRlMDU3YTMxMjQ1M2QwNTkxNDBmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtMTU5LDggKzE1OSwxNyBAQCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRVbmxpbmtlZEdsb2JhbEZ1bmN0aW9uRXhl
Y3V0YWJsZShWTSYgdgogCiB2b2lkIENvZGVDYWNoZTo6d3JpdGUoVk0mIHZtKQogewotICAgIGZv
ciAoY29uc3QgYXV0byYgaXQgOiBtX3NvdXJjZUNvZGUpCisgICAgZm9yIChhdXRvJiBpdCA6IG1f
c291cmNlQ29kZSkgeworICAgICAgICBpZiAoaXQudmFsdWUud3JpdHRlbikKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICBpdC52YWx1ZS53cml0dGVuID0gdHJ1ZTsKKyAgICAgICAgVW5s
aW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGpzRHluYW1pY0Nhc3Q8VW5saW5rZWRDb2RlQmxv
Y2sqPih2bSwgaXQudmFsdWUuY2VsbC5nZXQoKSk7CisgICAgICAgIGlmICghY29kZUJsb2NrKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGl0LmtleS5zb3VyY2UoKS5wcm92aWRlcigp
LmNhY2hlQnl0ZWNvZGUoKTsKKyAgICAgICAgLy8gRklYTUU6IE1vdmUgYHdyaXRlQ29kZUJsb2Nr
YCBpbnRvIGEgY3VzdG9tIFNvdXJjZVByb3ZpZGVyCiAgICAgICAgIHdyaXRlQ29kZUJsb2NrKHZt
LCBpdC5rZXksIGl0LnZhbHVlKTsKKyAgICB9CiB9CiAKIHZvaWQgZ2VuZXJhdGVVbmxpbmtlZENv
ZGVCbG9ja0ZvckZ1bmN0aW9ucyhWTSYgdm0sIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENv
ZGVCbG9jaywgY29uc3QgU291cmNlQ29kZSYgcGFyZW50U291cmNlLCBEZWJ1Z2dlck1vZGUgZGVi
dWdnZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5oCmluZGV4IDgwYzBkOTVmOWVmNzk0OTUyZTVmYmM2ODNlZTU2NjUwZTBh
MDIxYWYuLmJlNDRiZGRlZTk5ZmU0OTRlMTg4NWNhM2U3NzkxZGE2Njk0Zjg4OWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCkBAIC03NSwxNCArNzUsMTYgQEAg
c3RydWN0IFNvdXJjZUNvZGVWYWx1ZSB7CiAgICAgewogICAgIH0KIAotICAgIFNvdXJjZUNvZGVW
YWx1ZShWTSYgdm0sIEpTQ2VsbCogY2VsbCwgaW50NjRfdCBhZ2UpCisgICAgU291cmNlQ29kZVZh
bHVlKFZNJiB2bSwgSlNDZWxsKiBjZWxsLCBpbnQ2NF90IGFnZSwgYm9vbCB3cml0dGVuID0gZmFs
c2UpCiAgICAgICAgIDogY2VsbCh2bSwgY2VsbCkKICAgICAgICAgLCBhZ2UoYWdlKQorICAgICAg
ICAsIHdyaXR0ZW4od3JpdHRlbikKICAgICB7CiAgICAgfQogCiAgICAgU3Ryb25nPEpTQ2VsbD4g
Y2VsbDsKICAgICBpbnQ2NF90IGFnZTsKKyAgICBib29sIHdyaXR0ZW47CiB9OwogCiBjbGFzcyBD
b2RlQ2FjaGVNYXAgewpAQCAtMTU0LDcgKzE1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgICAgIFZFUkJPU0VfTE9HKCJGb3VuZCBjYWNoZWQgQ29kZUJs
b2NrIG9uIGRpc2siKTsKLSAgICAgICAgYWRkQ2FjaGUoa2V5LCBTb3VyY2VDb2RlVmFsdWUodm0s
IHVubGlua2VkQ29kZUJsb2NrLCBtX2FnZSkpOworICAgICAgICBhZGRDYWNoZShrZXksIFNvdXJj
ZUNvZGVWYWx1ZSh2bSwgdW5saW5rZWRDb2RlQmxvY2ssIG1fYWdlLCB0cnVlKSk7CiAgICAgICAg
IHJldHVybiB1bmxpbmtlZENvZGVCbG9jazsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh2
bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9u
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4
IDhhODc1Y2Q3ZTNiMDVkYzQzNjU5ZjAxYjcwMDUyYmMxM2NjMWFlMTkuLmE0NjlkMjI0NzU2ZjBk
N2QxZjk4ODBiYTI5MDIxNzA0NmM3ZDllOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbXBsZXRpb24uY3BwCkBAIC0xNDIsNiArMTQyLDggQEAgSlNWYWx1ZSBldmFsdWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZSB0aGlz
VmFsdWUsIE4KICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCisgICAgdm0u
Y29kZUNhY2hlKCktPndyaXRlKHZtKTsKKwogICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ZDQ1Mzc0MTVlNjg2YTg4ODViY2E5OWQ3NTY4ZjBi
MjQyMDQ4Mzg1Li4wOTZiNjFkYTFiNTQ3ZWM1ZjkyOWFjYzE4YzI1ZDkzOTk4YzBlY2ZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0zODgzLDcgKzM4ODMsNyBAQAogCQlCQ0IxNkMxQzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVk
SW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
QjE2QzAzMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQjE2QzIwMDk3OUMzQkQwMDQ2Nzc0
MSAvKiBDYWNoZWRSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNCMTZDMDcwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZD
MjIwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwOTA5NzlDM0JE
MDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCAqLzsgfTsKLQkJQkNCMTZD
MjQwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMEIwOTc5QzNCRDAwNDY3NzQxIC8qIENh
Y2hlZFNjcmlwdC5oICovOyB9OworCQlCQ0IxNkMyNDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVk
U2NyaXB0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0IxNkMwQjA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkU2NyaXB0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMjgwOTc5QzNCRDAwNDY3
NzQxIC8qIENhY2hlZFhTTFN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzBGMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRYU0xT
dHlsZVNoZWV0LmggKi87IH07CiAJCUJDQjE2QzJBMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRS
ZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNCMTZDMTEwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlTG9hZGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCOTJE
NEYxMjkzNTUwQjAwQzgzODdGIC8qIEZvbnRCYXNlbGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCOTJENEUxMjkzNTUwQjAwQzgzODdGIC8qIEZv
bnRCYXNlbGluZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0zMDAyNSw3ICszMDAyNSw2IEBACiAJCQkJMUE4NUIxRTcwQTFCMjQwNTAwRDhDODdD
IC8qIEpTSFRNTERpcmVjdG9yeUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBODVCMkI3
MEExQjJBQzcwMEQ4Qzg3QyAvKiBKU0hUTUxEaXZFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTg1QjFFOTBBMUIyNDA1MDBEOEM4N0MgLyogSlNIVE1MRExpc3RFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKLQkJCQk3MUVBRENEODIyMDg3RTcyMDA2NUE0NUYgLyogUG9pbnRlcklELmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQTQ5NEUzNTBBMTIzNThCMDBGREFGQzEgLyogSlNIVE1MRG9jdW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDk0QkZCMEExMjJGNDQwMEZEQUZDMSAvKiBKU0hU
TUxFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzhFNjVGMTA5RjA5ODQwMDA4QTQ4RUMg
LyogSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKQEAgLTMxMDcz
LDYgKzMxMDcyLDcgQEAKIAkJCQk3MUI1QUIyNjIxRjFEOUY0MDAzNzZFNUMgLyogUG9pbnRlckNh
cHR1cmVDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTdEM0ZGMzIxNTU5OUY0MDAz
NEUzQjkgLyogUG9pbnRlckV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkIxRjcxNzBEMDBD
QUE4MDA0QUVBNjQgLyogUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3MUVBRENEODIyMDg3RTcyMDA2NUE0NUYgLyogUG9pbnRlcklELmggaW4gSGVhZGVycyAqLywK
IAkJCQkzRkY4MTNBNzFEQkE4NjQwMDA5QkYwMDEgLyogUG9pbnRlckxvY2tDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NDczMEQ5MjEyNDhGMEIzMDBEM0E5QzkgLyogUG9pbnRMaWdo
dFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcwNTk5N0ExMDdEOTc1MjAwQTUwQTdDIC8q
IFBvbGljeUNoZWNrZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmNwcAppbmRleCA3Yzg3YjIzOTM4ZTQzM2U1
MDhjMGZiODBiZTljOWU2ZmRlMzgyMTAzLi5lMGYwMDNmMGRiMWI0YThiY2I2MWFmM2JkOGY1NmQz
MTM5NmU2ZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRT
Y3JpcHRGZXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRT
Y3JpcHRGZXRjaGVyLmNwcApAQCAtNTYsNiArNTYsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRTY3JpcHQ+IENhY2hlZFNjcmlwdEZldGNoZXI6OnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUo
RAogICAgIG9wdGlvbnMuY29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbiA9IGhhc0tub3du
Tm9uY2UgPyBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpTa2lwUG9saWN5Q2hlY2sg
OiBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrOwogICAgIG9w
dGlvbnMuc2FtZU9yaWdpbkRhdGFVUkxGbGFnID0gU2FtZU9yaWdpbkRhdGFVUkxGbGFnOjpTZXQ7
CiAgICAgb3B0aW9ucy5pbnRlZ3JpdHkgPSBXVEZNb3ZlKGludGVncml0eSk7CisgICAgb3B0aW9u
cy5kZXJpdmVkQ2FjaGVkRGF0YVR5cGVzVG9SZXRyaWV2ZSA9IHsgImJ5dGVjb2RlLWNhY2hlIiB9
OwogCiAgICAgYXV0byByZXF1ZXN0ID0gY3JlYXRlUG90ZW50aWFsQWNjZXNzQ29udHJvbFJlcXVl
c3Qoc291cmNlVVJMLCBkb2N1bWVudCwgY3Jvc3NPcmlnaW5Nb2RlLCBXVEZNb3ZlKG9wdGlvbnMp
KTsKICAgICByZXF1ZXN0LnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChkb2N1bWVudCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3Vy
Y2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291
cmNlUHJvdmlkZXIuaAppbmRleCBhZTQ0NGM2NDUzNmIyMzVjYTE2NTc0NmQ5NDBhMTcwYmM5MWNh
ZWFiLi5hNWRiZDIyYmQzNDdjYzczNWU3N2M5ZjliYzYwYjZjODFiNTcyYTg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3Zp
ZGVyLmgKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5o
IgogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdEZldGNo
ZXIuaCIKKyNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
YXRlZ2llcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NvdXJjZVByb3ZpZGVyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ1LDYgKzQ3LDE0IEBAIHB1YmxpYzoKIAogICAgIHVu
c2lnbmVkIGhhc2goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NhY2hlZFNjcmlwdC0+c2Ny
aXB0SGFzaCgpOyB9CiAgICAgU3RyaW5nVmlldyBzb3VyY2UoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2NhY2hlZFNjcmlwdC0+c2NyaXB0KCk7IH0KKyAgICBjb25zdCBKU0M6OkNhY2hlZEJ5
dGVjb2RlKiBjYWNoZWRCeXRlY29kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICZtX2NhY2hl
ZFNjcmlwdC0+Y2FjaGVkQnl0ZWNvZGUoKTsgfQorCisgICAgdm9pZCBjYWNoZUJ5dGVjb2RlKCkg
Y29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChtX2NhY2hlZFNjcmlwdC0+Y2FjaGVk
Qnl0ZWNvZGUoKS5zaXplKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5jYWNoZUJ5dGVjb2RlRm9yU2NyaXB0KCpt
X2NhY2hlZFNjcmlwdCk7CisgICAgfQogCiBwcml2YXRlOgogICAgIENhY2hlZFNjcmlwdFNvdXJj
ZVByb3ZpZGVyKENhY2hlZFNjcmlwdCogY2FjaGVkU2NyaXB0LCBKU0M6OlNvdXJjZVByb3ZpZGVy
U291cmNlVHlwZSBzb3VyY2VUeXBlLCBSZWY8Q2FjaGVkU2NyaXB0RmV0Y2hlcj4mJiBzY3JpcHRG
ZXRjaGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAppbmRleCBiMzVjNmZi
MGUyODY0ZDVmOGVmYzRiODBmYWM3YTNmZjA0MTExOTNlLi4yZWJmMGFmMWIzYTIyMzRkMjBkZjgy
N2E0NjY1MjFhMzc5NmRlOTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9h
ZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3ku
aApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRS
ZXNvdXJjZTsKK2NsYXNzIENhY2hlZFNjcmlwdDsKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGlj
eTsKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CkBAIC03Myw2ICs3NCw4IEBAIHB1
YmxpYzoKICAgICB1c2luZyBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkZ1bmN0
aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VFcnJvciYpPjsKICAgICB2aXJ0dWFsIHZvaWQgcHJlY29u
bmVjdFRvKEZyYW1lTG9hZGVyJiwgY29uc3QgVVJMJiwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ks
IFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQg
Y2FjaGVCeXRlY29kZUZvclNjcmlwdChjb25zdCBDYWNoZWRTY3JpcHQmKSA9IDA7CisKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29s
KSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNPbkxpbmUoKSBjb25zdCA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA2YzJiMTMxY2I5YThkMjYzNDdh
MGE3YzhlNTk4NTQxOWUzNmM1OTMzLi40OTlmYmM1MjhjMDcxMjY2YTMzZGE0ZTUxNGFjNzVmY2Qy
MDQ1NWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTgx
Niw0ICs4MTYsOCBAQCBib29sIFJlc291cmNlTG9hZGVyOjppc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSBjb25zdAogICAgIHJldHVybiBmcmFtZUxvYWRlcigpICYmIGZyYW1lTG9hZGVyKCktPmlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOwogfQogCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRS
ZXRyaWV2ZURlcml2ZWREYXRhRnJvbUNhY2hlKGNvbnN0IFN0cmluZyYsIFNoYXJlZEJ1ZmZlciYp
Cit7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGMz
M2E1MDY5MmEzODUzMTUyM2FiYmIzOThlYmZhMmYwZjY3ZThiYy4uYzRkNzkyN2I2NmJiNDdjMDc1
YTNiYTFkNzUwNWIxZGU3ZTliMjUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmgKQEAgLTEwNSw2ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmV0cmlldmVEZXJpdmVk
RGF0YUZyb21DYWNoZShjb25zdCBTdHJpbmcmIHR5cGUsIFNoYXJlZEJ1ZmZlciYpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaAppbmRleCA5
ZTMwNzRkYTMyMTFkMGVlOTdiOGViMmVkZjQ5MTY5ZWM1ZGYyYTRhLi45YTMwNjBjODRmMDA0YTM5
YmYwZTliNzcyN2I3OGQ2M2Q2MGRlZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyT3B0aW9ucy5oCkBAIC0xNTIsNiArMTUyLDcgQEAgc3RydWN0IFJlc291cmNl
TG9hZGVyT3B0aW9ucyA6IHB1YmxpYyBGZXRjaE9wdGlvbnMgewogICAgIE9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllcjsKICNlbmRpZgogICAgIEhhc2hTZXQ8SFRUUEhlYWRlck5hbWUsIFdURjo6SW50
SGFzaDxIVFRQSGVhZGVyTmFtZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8SFRUUEhlYWRl
ck5hbWU+PiBodHRwSGVhZGVyc1RvS2VlcDsKKyAgICBWZWN0b3I8U3RyaW5nPiBkZXJpdmVkQ2Fj
aGVkRGF0YVR5cGVzVG9SZXRyaWV2ZTsKICAgICBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnM+IGNzcFJlc3BvbnNlSGVhZGVyczsKICAgICB1bnNpZ25lZCBtYXhS
ZWRpcmVjdENvdW50IHsgMjAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggNDgzZWNkM2MxM2Q2MWU2OWEzNThlYjgxY2NhNmUzNjRjYzQ1MjAw
OS4uNTBiMzRmZDAwYjkwZGNjZDAyOTFlODQ0ODI4NWQzMTBiYTU0MmZlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03NTEsNiArNzUxLDEzIEBA
IHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikK
ICAgICBub3RpZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZTo6Q2FuY2VsKTsKIH0KIAordm9pZCBT
dWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZShjb25zdCBT
dHJpbmcmIHR5cGUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIGlmIChtX3N0YXRlICE9
IEluaXRpYWxpemVkKQorICAgICAgICByZXR1cm47CisgICAgbV9yZXNvdXJjZS0+ZGlkUmV0cmll
dmVEZXJpdmVkRGF0YUZyb21DYWNoZSh0eXBlLCBidWZmZXIpOworfQorCiB2b2lkIFN1YnJlc291
cmNlTG9hZGVyOjpub3RpZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZSB0eXBlKQogewogICAgIGlm
IChyZWFjaGVkVGVybWluYWxTdGF0ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuaAppbmRleCA3MWZlMzkyMDdlY2NiN2ZlMmFhNjI0NzY3OTAzMzFhNzlmNTg4ODUx
Li4yZjY4NTcyOTRmY2I5MmVhODY5MGJjNjY0NzY1Y2Q0N2FlMDRkMmI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNzksNiArNzksNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRS
ZXRyaWV2ZURlcml2ZWREYXRhRnJvbUNhY2hlKGNvbnN0IFN0cmluZyYgdHlwZSwgU2hhcmVkQnVm
ZmVyJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdm9pZCB1cGRhdGVSZWZlcnJlclBvbGljeShjb25z
dCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFi
bGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3Bw
CmluZGV4IDJiN2JmNDI5ZGQ2MjJmYzcyN2UxMDEzMDJlZmZlZWRkNWU0YzM4NDcuLmQ1M2I0YWQz
OWJiNWM1ZTM4MjI5MDZmNWI5OWExNTk5MTkzOTY5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTg5LDYgKzg5LDkgQEAgVGhyZWFkYWJsZUxvYWRl
ck9wdGlvbnMgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAg
ICAgY29weS5pbml0aWF0b3JDb250ZXh0ID0gdGhpcy0+aW5pdGlhdG9yQ29udGV4dDsKICAgICBj
b3B5LmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPSB0aGlzLT5jbGllbnRDcmVkZW50aWFsUG9saWN5
OwogICAgIGNvcHkubWF4UmVkaXJlY3RDb3VudCA9IHRoaXMtPm1heFJlZGlyZWN0Q291bnQ7Cisg
ICAgY29weS5kZXJpdmVkQ2FjaGVkRGF0YVR5cGVzVG9SZXRyaWV2ZS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHRoaXMtPmRlcml2ZWRDYWNoZWREYXRhVHlwZXNUb1JldHJpZXZlLnNpemUoKSk7Cisg
ICAgZm9yIChhdXRvJiBkZXJpdmVkQ2FjaGVkRGF0YVR5cGUgOiB0aGlzLT5kZXJpdmVkQ2FjaGVk
RGF0YVR5cGVzVG9SZXRyaWV2ZSkKKyAgICAgICAgY29weS5kZXJpdmVkQ2FjaGVkRGF0YVR5cGVz
VG9SZXRyaWV2ZS51bmNoZWNrZWRBcHBlbmQoZGVyaXZlZENhY2hlZERhdGFUeXBlLmlzb2xhdGVk
Q29weSgpKTsKICAgICBjb3B5LnByZWZsaWdodFBvbGljeSA9IHRoaXMtPnByZWZsaWdodFBvbGlj
eTsKIAogICAgIC8vIFRocmVhZGFibGVMb2FkZXJPcHRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCAwMjVlNTU1MjcyZTBlYzQ4ZDZi
NGZlZTFlYWJhNmIxMGEyNWVjYjM5Li5jODRlNDU0MjljMGZjOTIzMTFkOGNmNzg1ZGRjMjVjZTM0
OTQ2NDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKQEAgLTMxMyw2ICszMTMsMTMgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6bG9hZChDYWNo
ZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIpCiAgICAgICAgICAgICBmYWls
QmVmb3JlU3RhcnRpbmcoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorCisgICAg
ICAgIGF1dG8qIGZyYW1lTG9hZGVyID0gbV9sb2FkZXItPmZyYW1lTG9hZGVyKCk7CisgICAgICAg
IGF1dG8qIGZyYW1lTG9hZGVyQ2xpZW50ID0gZnJhbWVMb2FkZXIgPyAmZnJhbWVMb2FkZXItPmNs
aWVudCgpIDogbnVsbHB0cjsKKyAgICAgICAgaWYgKGZyYW1lTG9hZGVyQ2xpZW50KSB7CisgICAg
ICAgICAgICBtX3dlYlBhZ2VJRCA9IGZyYW1lTG9hZGVyQ2xpZW50LT5wYWdlSUQoKS52YWx1ZU9y
KDApOworICAgICAgICAgICAgbV93ZWJGcmFtZUlEID0gZnJhbWVMb2FkZXJDbGllbnQtPmZyYW1l
SUQoKS52YWx1ZU9yKDApOworICAgICAgICB9CiAgICAgICAgIG1fc3RhdHVzID0gUGVuZGluZzsK
ICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmgKaW5kZXggOWI4Mzg0OGVhMjI0OWQ1ODdhM2VkODFhZmYyNWU3ODY0YjAyOTBmMi4uMDhhZDM2
NzBlNjU1ZjhkOWQ5MzllNGNjMDY0NmE0MjU5NGJkYWM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTE2Miw3ICsxNjIsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRMb2FkaW5nKGJvb2wgYikgeyBtX2xvYWRpbmcgPSBiOyB9CiAgICAgdmly
dHVhbCBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAg
IFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIoKSB7IHJldHVybiBtX2xvYWRlci5nZXQoKTsgfQor
ICAgIFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2xvYWRlci5n
ZXQoKTsgfQorICAgIHVpbnQ2NF90IHdlYlBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUGFn
ZUlEOyB9CisgICAgdWludDY0X3Qgd2ViRnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViRnJh
bWVJRDsgfQogCiAgICAgYm9vbCBhcmVBbGxDbGllbnRzWE1MSHR0cFJlcXVlc3RzKCkgY29uc3Q7
CiAKQEAgLTI2OSw2ICsyNzEsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2Vu
ZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8qIGJ5dGVzU2VudCAqLywgdW5zaWduZWQgbG9uZyBs
b25nIC8qIHRvdGFsQnl0ZXNUb0JlU2VudCAqLykgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmV0cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZShjb25zdCBTdHJpbmcmIC8qIHR5cGUgKi8sIFNo
YXJlZEJ1ZmZlciYpIHsgfQorCiAjaWYgVVNFKEZPVU5EQVRJT04pIHx8IFVTRShTT1VQKQogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYp
OwogI2VuZGlmCkBAIC0zNzQsNiArMzc4LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzVW5r
bm93bkVuY29kaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fc3dpdGNoaW5nQ2xpZW50c1RvUmV2
YWxpZGF0ZWRSZXNvdXJjZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lnbm9yZUZvclJlcXVlc3RD
b3VudCB7IGZhbHNlIH07CisgICAgdWludDY0X3QgbV93ZWJQYWdlSUQgeyAwIH07CisgICAgdWlu
dDY0X3QgbV93ZWJGcmFtZUlEIHsgMCB9OwogCiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgbV9k
ZWxldGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNj
cmlwdC5jcHAKaW5kZXggMWJiZDQ0NDY5MjA3YzI0NjYyMjJkZDIzNWZhMjNmOWIyMmZkZGE2Ny4u
MDJlZDliNDUzYTA1ZjU4MDdjNTEyMDUxMmMyM2FiYjk2Y2FjMjMwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTg5LDYgKzg5LDExIEBAIFN0
cmluZ1ZpZXcgQ2FjaGVkU2NyaXB0OjpzY3JpcHQoKQogICAgIHJldHVybiBtX3NjcmlwdDsKIH0K
IAorY29uc3QgSlNDOjpDYWNoZWRCeXRlY29kZSYgQ2FjaGVkU2NyaXB0OjpjYWNoZWRCeXRlY29k
ZSgpCit7CisgICAgcmV0dXJuIG1fY2FjaGVkQnl0ZWNvZGU7Cit9CisKIHVuc2lnbmVkIENhY2hl
ZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiB7CiAgICAgaWYgKG1fZGVjb2RpbmdTdGF0ZSA9PSBOZXZl
ckRlY29kZWQpCkBAIC0xMDMsNiArMTA4LDE3IEBAIHZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9h
ZGluZyhkYXRhKTsKIH0KIAordm9pZCBDYWNoZWRTY3JpcHQ6OmRpZFJldHJpZXZlRGVyaXZlZERh
dGFGcm9tQ2FjaGUoY29uc3QgU3RyaW5nJiB0eXBlLCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3sK
KyAgICBBU1NFUlQodHlwZSA9PSAiYnl0ZWNvZGUtY2FjaGUiKTsKKyAgICBzaXplX3Qgc2l6ZSA9
IGJ1ZmZlci5zaXplKCk7CisgICAgTWFsbG9jUHRyPHVpbnQ4X3Q+IG1lbW9yeSA9IE1hbGxvY1B0
cjx1aW50OF90Pjo6bWFsbG9jKHNpemUpOworICAgIGZvciAoY29uc3QgYXV0byYgaXQgOiBidWZm
ZXIpCisgICAgICAgIG1lbWNweShtZW1vcnkuZ2V0KCkgKyBpdC5iZWdpblBvc2l0aW9uLCBpdC5z
ZWdtZW50LT5kYXRhKCksIGl0LnNlZ21lbnQtPnNpemUoKSk7CisgICAgbV9jYWNoZWRCeXRlY29k
ZSA9IEpTQzo6Q2FjaGVkQnl0ZWNvZGUgeyBXVEZNb3ZlKG1lbW9yeSksIHNpemUgfTsKKyAgICBD
YWNoZWRSZXNvdXJjZTo6ZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZSh0eXBlLCBidWZm
ZXIpOworfQorCiB2b2lkIENhY2hlZFNjcmlwdDo6ZGVzdHJveURlY29kZWREYXRhKCkKIHsKICAg
ICBtX3NjcmlwdCA9IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5oCmluZGV4IGRkNmZiY2MzNjg3ODExZGYwNmVjMWNlMjg0MzFmMzg4YTNkNjAwM2Mu
Ljc5MzRkZGNlOTM2NjkzMzNhM2VhZTJlYmE1OWVmZjU1NWZmNmUxNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VQcm92aWRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM3
LDYgKzM4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNhY2hlZFNjcmlwdCgpOwogCiAgICAg
U3RyaW5nVmlldyBzY3JpcHQoKTsKKyAgICBjb25zdCBKU0M6OkNhY2hlZEJ5dGVjb2RlJiBjYWNo
ZWRCeXRlY29kZSgpOwogICAgIHVuc2lnbmVkIHNjcmlwdEhhc2goKTsKIAogcHJpdmF0ZToKQEAg
LTQ4LDEyICs1MCwxNCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZp
bmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KICAgICB2b2lkIGZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKikgZmluYWw7CisgICAgdm9pZCBkaWRSZXRyaWV2ZURlcml2
ZWREYXRhRnJvbUNhY2hlKGNvbnN0IFN0cmluZyYsIFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogCiAg
ICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0Qm9keURh
dGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWw7CiAKICAgICBTdHJpbmcgbV9zY3Jp
cHQ7CisgICAgSlNDOjpDYWNoZWRCeXRlY29kZSBtX2NhY2hlZEJ5dGVjb2RlOwogICAgIHVuc2ln
bmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKIAogICAgIGVudW0gRGVjb2RpbmdTdGF0ZSB7IE5ldmVy
RGVjb2RlZCwgRGF0YUFuZERlY29kZWRTdHJpbmdIYXZlU2FtZUJ5dGVzLCBEYXRhQW5kRGVjb2Rl
ZFN0cmluZ0hhdmVEaWZmZXJlbnRCeXRlcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApp
bmRleCA1ZGI0YjZkY2ZkYWE3MDNkODIxNDIzNzdlZTFiZjE4ZjQwZmNjYTg2Li5hMDZjYmJmOGEw
OWVhODQxZjQ4ZGQ4NmFlMGZmODBmODBkZjg3M2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcApAQCAtNTQ0LDYgKzU0NCwxMiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaQogICAgIH0p
OwogfQogCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjYWNoZUJ5dGVjb2Rl
Rm9yUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2
NF90IHdlYlBhZ2VJRCwgdWludDY0X3Qgd2ViRnJhbWVJRCkKK3sKKyAgICBpZiAoYXV0byogYnl0
ZWNvZGVDYWNoZSA9IG1fbmV0d29ya1Byb2Nlc3MtPmJ5dGVjb2RlQ2FjaGUoKSkKKyAgICAgICAg
Ynl0ZWNvZGVDYWNoZS0+Y2FjaGVCeXRlY29kZUZvclJlcXVlc3QocmVxdWVzdCwgd2ViUGFnZUlE
LCB3ZWJGcmFtZUlEKTsKK30KKwogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
c2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sIGVuYWJsZWQpCiB7
CiAgICAgbV9jYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkID0gZW5hYmxlZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA5MTRkN2JkNjg1YTA1NGFlNTNkYTQ1NjUwN2Jk
MzFiMjhkMWJhN2YwLi4wMDM4OGY4YzU1MmFhNmQyMDM0N2NkMmQ4NmIwOTA4MjBjNWFjNDdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xNjUsNiArMTY1LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYpOwogICAgIHZvaWQgd3JpdGVCbG9i
c1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKIAorICAgIHZvaWQgY2FjaGVC
eXRlY29kZUZvclJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgdWludDY0
X3QsIHVpbnQ2NF90KTsKKwogICAgIHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRy
aWNzRW5hYmxlZChib29sKTsKIAogICAgIHZvaWQgY3JlYXRlU29ja2V0U3RyZWFtKFVSTCYmLCBQ
QUw6OlNlc3Npb25JRCwgU3RyaW5nIGNhY2hlUGFydGl0aW9uLCB1aW50NjRfdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAwNDk2MDk2Mzk1YWFhOTEx
NTU4YjI2ODEwOTlmNjVmNzJiYWY1ZjI3Li4zOThlOTk1NjQ1NTRmY2ZhYzBhOTFiMWVhN2I5NTk0
NTg5NDE3MTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
QEAgLTUwLDYgKzUwLDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIEJsb2JTaXplKFVSTCB1cmwpIC0+ICh1aW50NjRfdCBy
ZXN1bHRTaXplKSBMZWdhY3lTeW5jCiAgICAgV3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoVmVj
dG9yPFN0cmluZz4gYmxvYlVSTHMpIC0+IChWZWN0b3I8U3RyaW5nPiBmaWxlTmFtZXMpIEFzeW5j
CiAKKyAgICBDYWNoZUJ5dGVjb2RlRm9yUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCwgdWludDY0X3Qgd2ViUGFnZUlELCB1aW50NjRfdCB3ZWJGcmFtZUlEKQorCiAgICAg
U2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sIGVuYWJsZWQpCiAK
ICAgICBDcmVhdGVTb2NrZXRTdHJlYW0oVVJMIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBTdHJpbmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggM2ExMjljNTIyZGZk
NDE2Mzg0NDAyMzJkNDk3ZDExMmQ5OGVlNGQ1Zi4uMDRlNzk0ZWJkZmI5OTM2ZGNjZWI2NDkyNTFh
MmMzYjVlN2I1ZmI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJB
dXhpbGlhcnlQcm9jZXNzLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVDYWNoZS5oIgogI2luY2x1ZGUg
IkNhY2hlTW9kZWwuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJO
ZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5oIgpAQCAtMTMzLDYgKzEzNCw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgTmV0d29ya0NhY2hlOjpDYWNoZSogY2FjaGUoKSB7IHJldHVybiBt
X2NhY2hlLmdldCgpOyB9CisgICAgQnl0ZWNvZGVDYWNoZSogYnl0ZWNvZGVDYWNoZSgpIHsgcmV0
dXJuIG1fYnl0ZWNvZGVDYWNoZS5nZXQoKTsgfQogCiAgICAgdm9pZCBzZXRTZXNzaW9uKGNvbnN0
IFBBTDo6U2Vzc2lvbklEJiwgUmVmPE5ldHdvcmtTZXNzaW9uPiYmKTsKICAgICBOZXR3b3JrU2Vz
c2lvbiogbmV0d29ya1Nlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmKSBjb25zdCBvdmVycmlk
ZTsKQEAgLTQzNiw2ICs0MzgsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9u
SUQsIFJlZjxDYWNoZVN0b3JhZ2U6OkVuZ2luZT4+IG1fY2FjaGVFbmdpbmVzOwogCiAgICAgUmVm
UHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7CisgICAgUmVmUHRyPEJ5dGVjb2RlQ2Fj
aGU+IG1fYnl0ZWNvZGVDYWNoZTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBjaGFyKiwg
c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudD4sIFB0ckhhc2g8Y29uc3Qg
Y2hhcio+PiBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnRNYXA7CiAgICAgTmV0d29ya1Byb2Nlc3NT
dXBwbGVtZW50TWFwIG1fc3VwcGxlbWVudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmlu
ZGV4IGNmZTU4ZTFjZTlmN2IyZTIzZmU4N2VjNzBhYWU2YjNiNDljOWM1OGYuLjkxNGU2YTZmOTAz
Mzk4ZmQzYTExMzYxMjY3ZTRkMjgzZjZmZGU4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
Y3BwCkBAIC04MCw2ICs4MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6
OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBuZWVk
c0NlcnRpZmljYXRlSW5mbzsKICAgICBlbmNvZGVyIDw8IGlzTWFpbkZyYW1lTmF2aWdhdGlvbjsK
ICAgICBlbmNvZGVyIDw8IG1heGltdW1CdWZmZXJpbmdUaW1lOworICAgIGVuY29kZXIgPDwgZGVy
aXZlZENhY2hlZERhdGFUeXBlc1RvUmV0cmlldmU7CiAKICAgICBlbmNvZGVyIDw8IHN0YXRpY19j
YXN0PGJvb2w+KHNvdXJjZU9yaWdpbik7CiAgICAgaWYgKHNvdXJjZU9yaWdpbikKQEAgLTE3MSw2
ICsxNzIsOCBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrUmVzb3VyYwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubWF4aW11bUJ1ZmZlcmluZ1RpbWUpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZGVy
aXZlZENhY2hlZERhdGFUeXBlc1RvUmV0cmlldmUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBib29sIGhhc1NvdXJjZU9yaWdpbjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc1Nv
dXJjZU9yaWdpbikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKaW5kZXggYjA1ZmY4MDNmMTcxOTBh
ZGUzMTljZGEwNjNkYTAzMTQwNmU0ZjM3Ni4uZWI3YTE0N2E5ODlhNWJiMzBjMDRhZDUzN2U3NDA2
YzA2MzJhOWRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaApAQCAtNTEsNiArNTEsNyBAQCBw
dWJsaWM6CiAgICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gcmVxdWVzdEJvZHlT
YW5kYm94RXh0ZW5zaW9uczsgLy8gQ3JlYXRlZCBhdXRvbWF0aWNhbGx5IGZvciB0aGUgc2VuZGVy
LgogICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiByZXNvdXJjZVNhbmRib3hFeHRlbnNpb247
IC8vIENyZWF0ZWQgYXV0b21hdGljYWxseSBmb3IgdGhlIHNlbmRlci4KICAgICBTZWNvbmRzIG1h
eGltdW1CdWZmZXJpbmdUaW1lOworICAgIFZlY3RvcjxTdHJpbmc+IGRlcml2ZWRDYWNoZWREYXRh
VHlwZXNUb1JldHJpZXZlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gc291
cmNlT3JpZ2luOwogICAgIFdlYkNvcmU6OkZldGNoT3B0aW9ucyBvcHRpb25zOwogICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycz4gY3NwUmVz
cG9uc2VIZWFkZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDlkZjBkNzZmYWY0MjIwYzk1M2U3ZmQ1YTky
YmI4ZWY2YzA0ODBmNTIuLmRkZGM1NmRkMWVjNjU0YjRlYjcyMDk0ZGRhMzllNmQ4NWM2NWNhMjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaCIKIAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJEZXJp
dmVkRGF0YS5oIgogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtCbG9iUmVnaXN0cnkuaCIKQEAgLTQ5OSw3ICs1MDAs
NyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAgIC8vIFdlIHdhaXQgdG8gcmVjZWl2ZSBt
ZXNzYWdlIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Ug
YmVmb3JlIGNvbnRpbnVpbmcgYSBsb2FkIGZvcgogICAgIC8vIGEgbWFpbiByZXNvdXJjZSBiZWNh
dXNlIHRoZSBlbWJlZGRpbmcgY2xpZW50IG11c3QgZGVjaWRlIHdoZXRoZXIgdG8gYWxsb3cgdGhl
IGxvYWQuCiAgICAgYm9vbCB3aWxsV2FpdEZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlID0g
aXNNYWluUmVzb3VyY2UoKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6
RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2UgfSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRp
ZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCB3aWxsV2FpdEZvckNvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlLCB7IH0gfSk7CiAgICAgaWYgKHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2UpCiAgICAgICAgIG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpOwogICAgIGVsc2UKQEAgLTgzMCwxNiArODMxLDQyIEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZXRyaWV2ZUNhY2hlRW50cnkoc3RkOjp1bmlxdWVf
cHRyPE5ldHdvcmtDYWNoZTo6CiAgICAgfQogCiAgICAgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlTWVzc2FnZSA9IGlzTWFpblJlc291cmNlKCk7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBuZWVk
c0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9KTsKIAotICAgIGlmIChuZWVkc0Nv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKLSAgICAgICAgbV9jYWNoZUVudHJ5V2Fp
dGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlID0gV1RGTW92ZShlbnRyeSk7CisgICAg
aWYgKCFuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKKyAgICAgICAgcHJv
Y2Vzc0NhY2hlZEVudHJ5QWZ0ZXJEaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShlbnRyeSkpOwog
ICAgIGVsc2UgewotICAgICAgICBzZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeShXVEZNb3ZlKGVudHJ5
KSk7Ci0gICAgICAgIGNsZWFudXAoTG9hZFJlc3VsdDo6U3VjY2Vzcyk7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25z
ZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UsIHsgfSB9KTsKKyAgICAg
ICAgbV9jYWNoZUVudHJ5V2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlID0gV1RG
TW92ZShlbnRyeSk7CiAgICAgfQogfQogCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cHJv
Y2Vzc0NhY2hlZEVudHJ5QWZ0ZXJEaWRSZWNlaXZlUmVzcG9uc2Uoc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtDYWNoZTo6RW50cnk+IGVudHJ5KQoreworICAgIGlmIChlbnRyeS0+c291cmNlU3RvcmFn
ZVJlY29yZCgpLmJvZHlIYXNoICYmICFtX3BhcmFtZXRlcnMuZGVyaXZlZENhY2hlZERhdGFUeXBl
c1RvUmV0cmlldmUuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8gYm9keUhhc2ggPSAqZW50cnkt
PnNvdXJjZVN0b3JhZ2VSZWNvcmQoKS5ib2R5SGFzaDsKKworICAgICAgICBSZWY8SVBDOjpEZXJp
dmVkRGF0YUNvbnRhaW5lcj4gZGVyaXZlZERhdGEgPSBJUEM6OkRlcml2ZWREYXRhQ29udGFpbmVy
OjpjcmVhdGUoW2xvYWRlciA9IG1ha2VSZWYoKnRoaXMpLCBlbnRyeSA9IFdURk1vdmUoZW50cnkp
XShjb25zdCBWZWN0b3I8SVBDOjpEZXJpdmVkRGF0YT4mJiBkZXJpdmVkRGF0YSkgbXV0YWJsZSB7
CisgICAgICAgICAgICBsb2FkZXItPnNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpE
aWRSZWNlaXZlUmVzcG9uc2UgeyBlbnRyeS0+cmVzcG9uc2UoKSwgZmFsc2UsIGRlcml2ZWREYXRh
fSk7CisgICAgICAgICAgICBsb2FkZXItPnNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5KFdURk1vdmUo
ZW50cnkpKTsKKyAgICAgICAgICAgIGxvYWRlci0+Y2xlYW51cChMb2FkUmVzdWx0OjpTdWNjZXNz
KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZm9yIChhdXRvIHR5cGUgOiBtX3BhcmFtZXRlcnMu
ZGVyaXZlZENhY2hlZERhdGFUeXBlc1RvUmV0cmlldmUpIHsKKyAgICAgICAgICAgIExPRyhOZXR3
b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIFJldHJpZXZpbmcgZGVyaXZlZCBkYXRhIG9mIHR5
cGUgXCIlc1wiIGZvciBcIiVzXCIiLCB0eXBlLmFzY2lpKCkuZGF0YSgpLCBvcmlnaW5hbFJlcXVl
c3QoKS51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICBOZXR3b3Jr
Q2FjaGU6OkRhdGFLZXkga2V5IHsgb3JpZ2luYWxSZXF1ZXN0KCkuY2FjaGVQYXJ0aXRpb24oKSwg
dHlwZSwgYm9keUhhc2ggfTsKKyAgICAgICAgICAgIG1fY2FjaGUtPnJldHJpZXZlRGF0YShrZXks
IFtsb2FkZXIgPSBtYWtlUmVmKCp0aGlzKSwgZGVyaXZlZERhdGEgPSBkZXJpdmVkRGF0YS5jb3B5
UmVmKCksIHR5cGVdIChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgbXV0YWJsZSB7
CisgICAgICAgICAgICAgICAgaWYgKGRhdGEpCisgICAgICAgICAgICAgICAgICAgIGRlcml2ZWRE
YXRhLT5hcHBlbmQoSVBDOjpEZXJpdmVkRGF0YSB7IHR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSB7
IGRhdGEsIHNpemUgfSB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlk
UmVjZWl2ZVJlc3BvbnNlIHsgZW50cnktPnJlc3BvbnNlKCksIGZhbHNlLCB7IH0gfSk7CisgICAg
c2VuZFJlc3VsdEZvckNhY2hlRW50cnkoV1RGTW92ZShlbnRyeSkpOworICAgIGNsZWFudXAoTG9h
ZFJlc3VsdDo6U3VjY2Vzcyk7Cit9CisKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5k
UmVzdWx0Rm9yQ2FjaGVFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4g
ZW50cnkpCiB7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGZi
MGVlYzdlY2ZmMjFlY2ZhNGFjYjY0ZTczMGZlYmU0YjJjYmFhMjAuLjdmZTljYzA3ODEyMzNmNDE2
MjkxYmY2ZjYzMDJjM2U2NGMwYjFlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtNDMsNiArNDMsMTAgQEAgY2xh
c3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogfQogCitu
YW1lc3BhY2UgSVBDIHsKK2NsYXNzIERlcml2ZWREYXRhOworfQorCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CkBAIC0xMzEsNiArMTM1
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5KHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5Pik7CiAgICAgdm9pZCB2YWxpZGF0ZUNhY2hlRW50
cnkoc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+KTsKICAgICB2b2lkIGRpc3Bh
dGNoV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
Jiwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+JiYpOworICAgIHZvaWQgcHJv
Y2Vzc0NhY2hlZEVudHJ5QWZ0ZXJEaWRSZWNlaXZlUmVzcG9uc2Uoc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtDYWNoZTo6RW50cnk+KTsKIAogICAgIGJvb2wgc2hvdWxkSW50ZXJydXB0TG9hZEZvclhG
cmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJik7CiAgICAgYm9vbCBzaG91bGRJ
bnRlcnJ1cHRMb2FkRm9yQ1NQRnJhbWVBbmNlc3RvcnNPclhGcmFtZU9wdGlvbnMoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtMTk1LDggKzIwMCw2IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzIHsgZmFsc2UgfTsKICAg
ICBzaXplX3QgbV9udW1CeXRlc1JlY2VpdmVkIHsgMCB9OwogCi0gICAgdW5zaWduZWQgbV9yZXRy
aWV2ZWREZXJpdmVkRGF0YUNvdW50IHsgMCB9OwotCiAgICAgV2ViQ29yZTo6VGltZXIgbV9idWZm
ZXJpbmdUaW1lcjsKICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKICAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9CeXRlY29kZUNh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQnl0ZWNvZGVDYWNo
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWZhOTk5MjVmNTU0MDYzNTY1ZjQ1MGQyZDZmZGYyZDk3ZmFkMzMx
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Qnl0ZWNvZGVDYWNoZS5jcHAKQEAgLTAsMCArMSwxODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Qnl0ZWNvZGVDYWNoZS5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdv
cmtDYWNoZS5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQ29tcGxldGlvbi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFs
T2JqZWN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTb3VyY2VDb2RlLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvUGFyc2VyRXJyb3IuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9WTS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW5jbHVk
ZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQnl0ZWNv
ZGVDYWNoZTo6UGxhbiA6IHB1YmxpYyBSZWZDb3VudGVkPEJ5dGVjb2RlQ2FjaGU6OlBsYW4+IHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbGFuKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKKworcHVibGljOgorICAgIFBsYW4oU0hBMTo6RGlnZXN0IGJvZHlIYXNoLCBjb25zdCBT
dHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY2FjaGVQYXJ0
aXRpb24pCisgICAgICAgIDogbV9ib2R5SGFzaChib2R5SGFzaCkKKyAgICAgICAgLCBtX3NvdXJj
ZShzb3VyY2UuaXNvbGF0ZWRDb3B5KCkpCisgICAgICAgICwgbV91cmwodXJsLmlzb2xhdGVkQ29w
eSgpKQorICAgICAgICAsIG1fY2FjaGVQYXJ0aXRpb24oY2FjaGVQYXJ0aXRpb24uaXNvbGF0ZWRD
b3B5KCkpCisgICAgeworICAgIH0KKworICAgIHZvaWQgY29tcGlsZShOZXR3b3JrQ2FjaGU6OkNh
Y2hlKiBjYWNoZSwgSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBMT0coQnl0ZWNvZGVDYWNo
ZSwgIltCeXRlY29kZUNhY2hlXVtQbGFuXSBQcm9jZXNzaW5nOiAlcyIsIG1fdXJsLmFzY2lpKCku
ZGF0YSgpKTsKKworICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodm0pOworICAgICAg
ICBKU0M6OlNvdXJjZUNvZGUgc291cmNlQ29kZSA9IEpTQzo6bWFrZVNvdXJjZShtX3NvdXJjZSwg
SlNDOjpTb3VyY2VPcmlnaW4geyBtX3VybCB9KTsKKyAgICAgICAgSlNDOjpQYXJzZXJFcnJvciBl
cnJvcjsKKyAgICAgICAgSlNDOjpDYWNoZWRCeXRlY29kZSBjYWNoZWRCeXRlY29kZSA9IEpTQzo6
Z2VuZXJhdGVCeXRlY29kZSh2bSwgc291cmNlQ29kZSwgZXJyb3IpOworICAgICAgICBpZiAoZXJy
b3IuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBMT0coQnl0ZWNvZGVDYWNoZSwgIltCeXRlY29k
ZUNhY2hlXVtQbGFuXSBBYm9ydGVkOiBlcnJvciB3aGVuIGdlbmVyYXRpbmcgYnl0ZWNvZGUiKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3BsYW4gPSBtYWtlUmVmKCp0aGlzKSwgY2FjaGUsIGNhY2hlZEJ5dGVjb2RlID0g
V1RGTW92ZShjYWNoZWRCeXRlY29kZSldKCkgeworICAgICAgICAgICAgTmV0d29ya0NhY2hlOjpE
YXRhS2V5IGRhdGFLZXkgeyBwbGFuLT5tX2NhY2hlUGFydGl0aW9uLCAiYnl0ZWNvZGUtY2FjaGUi
LCBwbGFuLT5tX2JvZHlIYXNoIH07CisgICAgICAgICAgICBjYWNoZS0+c3RvcmVEYXRhKGRhdGFL
ZXksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNhY2hlZEJ5dGVjb2RlLmRhdGEo
KSksIGNhY2hlZEJ5dGVjb2RlLnNpemUoKSk7CisgICAgICAgICAgICBMT0coQnl0ZWNvZGVDYWNo
ZSwgIltCeXRlY29kZUNhY2hlXVtQbGFuXSBTdG9yZWQ6ICVzICglbGQgYnl0ZXMpIiwgcGxhbi0+
bV91cmwuYXNjaWkoKS5kYXRhKCksIGNhY2hlZEJ5dGVjb2RlLnNpemUoKSk7CisgICAgICAgIH0p
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBTSEExOjpEaWdlc3QgbV9ib2R5SGFzaDsKKyAgICBT
dHJpbmcgbV9zb3VyY2U7CisgICAgU3RyaW5nIG1fdXJsOworICAgIFN0cmluZyBtX2NhY2hlUGFy
dGl0aW9uOworfTsKKworY2xhc3MgQnl0ZWNvZGVDYWNoZTo6VGhyZWFkIDogcHVibGljIEF1dG9t
YXRpY1RocmVhZCB7CitwdWJsaWM6CisgICAgVGhyZWFkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBs
b2NrZXIsIEJ5dGVjb2RlQ2FjaGUmIGNhY2hlKQorICAgICAgICA6IEF1dG9tYXRpY1RocmVhZChs
b2NrZXIsIGNhY2hlLm1fbG9jaywgY2FjaGUubV9jb25kaXRpb24uY29weVJlZigpKQorICAgICAg
ICAsIG1fY2FjaGUoY2FjaGUpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IGNoYXIqIG5hbWUo
KSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuICJCeXRlY29kZUNhY2hlIEhl
bHBlciBUaHJlYWQiOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIFBvbGxSZXN1bHQgcG9sbChj
b25zdCBBYnN0cmFjdExvY2tlciYpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAobV9jYWNo
ZS5tX3F1ZXVlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBQb2xsUmVzdWx0OjpXYWl0
OworCisgICAgICAgIG1fcGxhbnMgPSBXVEZNb3ZlKG1fY2FjaGUubV9xdWV1ZSk7CisgICAgICAg
IHJldHVybiBQb2xsUmVzdWx0OjpXb3JrOworICAgIH0KKworICAgIFdvcmtSZXN1bHQgd29yaygp
IG92ZXJyaWRlCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9wbGFucy5pc0VtcHR5
KCkpOworICAgICAgICBOZXR3b3JrQ2FjaGU6OkNhY2hlKiBjYWNoZSA9IG1fY2FjaGUubV9uZXR3
b3JrUHJvY2Vzcy5jYWNoZSgpOworICAgICAgICBpZiAoIWNhY2hlKQorICAgICAgICAgICAgcmV0
dXJuIFdvcmtSZXN1bHQ6OlN0b3A7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwbGFuIDog
bV9wbGFucykKKyAgICAgICAgICAgIHBsYW4tPmNvbXBpbGUoY2FjaGUsICptX3ZtKTsKKyAgICAg
ICAgbV9wbGFucy5jbGVhcigpOworICAgICAgICByZXR1cm4gV29ya1Jlc3VsdDo6Q29udGludWU7
CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCB0aHJlYWREaWRTdGFydCgpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBMT0coQnl0ZWNvZGVDYWNoZSwgIltCeXRlY29kZUNhY2hlXVtUaHJl
YWRdIFN0YXJ0ZWQiKTsKKyAgICAgICAgbV92bSA9IEpTQzo6Vk06OmNyZWF0ZSgpOworICAgICAg
ICBXVEY6OlRocmVhZDo6Y3VycmVudCgpLmNoYW5nZVByaW9yaXR5KC0xMCk7CisgICAgfQorCisg
ICAgdm9pZCB0aHJlYWRJc1N0b3BwaW5nKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcigqbV92bSk7CisgICAgICAg
IG1fdm0gPSBudWxscHRyOworICAgICAgICBMT0coQnl0ZWNvZGVDYWNoZSwgIltCeXRlY29kZUNh
Y2hlXVtUaHJlYWRdIFN0b3BwZWQiKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQnl0ZWNvZGVD
YWNoZSYgbV9jYWNoZTsKKyAgICBQbGFucyBtX3BsYW5zOworICAgIFJlZlB0cjxKU0M6OlZNPiBt
X3ZtOworfTsKKworQnl0ZWNvZGVDYWNoZTo6Qnl0ZWNvZGVDYWNoZShOZXR3b3JrUHJvY2VzcyYg
bmV0d29ya1Byb2Nlc3MpCisgICAgOiBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQor
ICAgICwgbV9sb2NrKEJveDxMb2NrPjo6Y3JlYXRlKCkpCisgICAgLCBtX2NvbmRpdGlvbihBdXRv
bWF0aWNUaHJlYWRDb25kaXRpb246OmNyZWF0ZSgpKQoreworICAgIExvY2tIb2xkZXIgbG9ja2Vy
KCptX2xvY2spOworICAgIG1fdGhyZWFkID0gYWRvcHRSZWYobmV3IFRocmVhZChsb2NrZXIsICp0
aGlzKSk7Cit9CisKK0J5dGVjb2RlQ2FjaGU6On5CeXRlY29kZUNhY2hlKCkKK3sKK30KKwordm9p
ZCBCeXRlY29kZUNhY2hlOjpjYWNoZUJ5dGVjb2RlRm9yUmVxdWVzdChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2NF90IHdlYlBhZ2VJRCwgdWludDY0X3Qgd2Vi
RnJhbWVJRCkKK3sKKyAgICBMT0coQnl0ZWNvZGVDYWNoZSwgIltCeXRlY29kZUNhY2hlXSBDaGVj
a2luZzogJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKworICAg
IGlmICghcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKKyAgICAgICAg
TE9HKEJ5dGVjb2RlQ2FjaGUsICJbQnl0ZWNvZGVDYWNoZV0gQWJvcnRlZDogcmVxdWVzdCBpbiBu
b3QgaHR0cChzKSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTmV0d29ya0NhY2hl
OjpDYWNoZSogY2FjaGUgPSBtX25ldHdvcmtQcm9jZXNzLmNhY2hlKCk7CisgICAgaWYgKCFjYWNo
ZSkgeworICAgICAgICBMT0coQnl0ZWNvZGVDYWNoZSwgIltCeXRlY29kZUNhY2hlXSBBYm9ydGVk
OiBjYWNoZSBpcyBub3QgYXZhaWxhYmxlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBjYWNoZS0+cmV0cmlldmUocmVxdWVzdCwgeyB3ZWJQYWdlSUQsICB3ZWJGcmFtZUlEIH0sIFti
eXRlY29kZUNhY2hlID0gbWFrZVJlZigqdGhpcyksIHJlcXVlc3QgPSBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgeyByZXF1ZXN0IH1dKGF1dG8gZW50cnksIGF1dG8pIHsKKyAgICAgICAgaWYgKCFl
bnRyeSkgeworICAgICAgICAgICAgTE9HKEJ5dGVjb2RlQ2FjaGUsICJbQnl0ZWNvZGVDYWNoZV0g
QWJvcnRlZDogdGhlIG9yaWdpbmFsIHJlcXVlc3Qgd2FzIG5vdCBjYWNoZWQiKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjb25zdCBhdXRvJiByZWNvcmQgPSBlbnRy
eS0+c291cmNlU3RvcmFnZVJlY29yZCgpOworICAgICAgICBpZiAoIXJlY29yZC5ib2R5SGFzaCkg
eworICAgICAgICAgICAgTE9HKEJ5dGVjb2RlQ2FjaGUsICJbQnl0ZWNvZGVDYWNoZV0gQWJvcnRl
ZDogcmVjb3JkIGhhcyBubyBib2R5SGFzaCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgTE9HKEJ5dGVjb2RlQ2FjaGUsICJbQnl0ZWNvZGVDYWNoZV0gRW5xdWV1
ZWQgcGxhbiIpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqYnl0ZWNvZGVDYWNoZS0+bV9s
b2NrKTsKKyAgICAgICAgU3RyaW5nIHNvdXJjZSB7IHJlY29yZC5ib2R5LmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHJlY29yZC5ib2R5LnNpemUoKSkgfTsKKyAgICAgICAgYnl0ZWNvZGVD
YWNoZS0+bV9xdWV1ZS5hcHBlbmQoYWRvcHRSZWYoKm5ldyBQbGFuIHsgKnJlY29yZC5ib2R5SGFz
aCwgV1RGTW92ZShzb3VyY2UpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCByZXF1ZXN0LmNhY2hl
UGFydGl0aW9uKCkgfSkpOworICAgICAgICBieXRlY29kZUNhY2hlLT5tX2NvbmRpdGlvbi0+bm90
aWZ5QWxsKGxvY2tlcik7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9CeXRlY29kZUNhY2hl
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0J5dGVjb2RlQ2FjaGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zNTIxYzAxYjc1ODIwNThiMTc0ZDQ3ODViZmMyNjhjNjYyYzhiMGJjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9CeXRlY29k
ZUNhY2hlLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0F1dG9tYXRpY1Ro
cmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0xvY2su
aD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlc291cmNlUmVxdWVzdDsKK307CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrUHJvY2VzczsKKworY2xhc3MgQnl0ZWNvZGVDYWNo
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEJ5dGVjb2RlQ2FjaGU+IHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShCeXRlY29kZUNhY2hlKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKwor
ICAgIGNsYXNzIFBsYW47CisgICAgY2xhc3MgVGhyZWFkOworICAgIHVzaW5nIFBsYW5zID0gVmVj
dG9yPFJlZjxQbGFuPiwgOD47CisKKyAgICBmcmllbmQgY2xhc3MgVGhyZWFkOworCitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxCeXRlY29kZUNhY2hlPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5l
dHdvcmtQcm9jZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQnl0ZWNv
ZGVDYWNoZShuZXR3b3JrUHJvY2VzcykpOworICAgIH0KKworICAgIH5CeXRlY29kZUNhY2hlKCk7
CisKKyAgICB2b2lkIGNhY2hlQnl0ZWNvZGVGb3JSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIHVpbnQ2NF90LCB1aW50NjRfdCk7CisKK3ByaXZhdGU6CisgICAgQnl0ZWNv
ZGVDYWNoZShOZXR3b3JrUHJvY2VzcyYpOworCisgICAgTmV0d29ya1Byb2Nlc3MmIG1fbmV0d29y
a1Byb2Nlc3M7CisgICAgUGxhbnMgbV9xdWV1ZTsKKyAgICBCb3g8TG9jaz4gbV9sb2NrOworICAg
IFJlZjxBdXRvbWF0aWNUaHJlYWRDb25kaXRpb24+IG1fY29uZGl0aW9uOworICAgIFJlZlB0cjxB
dXRvbWF0aWNUaHJlYWQ+IG1fdGhyZWFkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApp
bmRleCAzZTQ3ODYxZjIwZjFhN2I4Y2ZhNmM5ZTZmOWU3NDUwYWRiNmExY2VkLi5kNmNjMjA4MWVj
ZTYwNDY0MzQ2NTI5MTk3YjM0ZTAxYzQ0MzVkM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTEzNCw2ICsxMzQsOCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHJldHJpZXZlRGF0YShjb25zdCBEYXRhS2V5JiwgRnVuY3Rpb248
dm9pZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4pOwogICAgIHZvaWQgc3RvcmVEYXRhKGNvbnN0
IERhdGFLZXkmLCAgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKKworICAgIGNvbnN0IFNh
bHQmIHNhbHQoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UtPnNhbHQoKTsgfQogICAgIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IG1ha2VSZWRp
cmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGly
ZWN0UmVxdWVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KaW5kZXggYzMwNmNjZTQzMDYxYzQ1MTllMjU1
NWJkZDRmNDk4MjYyZjNhMTU1MS4uNjI2OTk2YmY4ZDQ0ODg1MDI0YTZkM2NlYWYwN2YyZmEyY2I0
MzI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQpAQCAtMTIyLDYgKzEyMiw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EoY29uc3QgTmV0
d29ya1Byb2Nlc3NDCiAjZW5kaWYKIAogICAgIG1fY2FjaGUgPSBOZXR3b3JrQ2FjaGU6OkNhY2hl
OjpvcGVuKCp0aGlzLCBtX2Rpc2tDYWNoZURpcmVjdG9yeSwgY2FjaGVPcHRpb25zKTsKKyAgICBt
X2J5dGVjb2RlQ2FjaGUgPSBCeXRlY29kZUNhY2hlOjpjcmVhdGUoKnRoaXMpOwogICAgIGlmICgh
bV9jYWNoZSkKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29ya0NhY2hlLCAiRmFpbGVk
IHRvIGluaXRpYWxpemUgdGhlIFdlYktpdCBuZXR3b3JrIGRpc2sgY2FjaGUiKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NT
b3VwLmNwcAppbmRleCBhMGQyYWY2NDEwNDNjYTAxZWFjNTQ1MzhmYWU0MGZhMzBjNjRlZmQ2Li4w
NDEwN2M3MmQ1Njk4ZTQyMWZlNDk5NDY0ZTA5MjQzYjEzZjAwNjJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNw
cApAQCAtMTE5LDYgKzExOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlh
bGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpCiAjZW5kaWYKIAog
ICAgIG1fY2FjaGUgPSBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpvcGVuKCp0aGlzLCBtX2Rpc2tDYWNo
ZURpcmVjdG9yeSwgY2FjaGVPcHRpb25zKTsKKyAgICBtX2J5dGVjb2RlQ2FjaGUgPSBCeXRlY29k
ZUNhY2hlOjpjcmVhdGUoKnRoaXMpOwogCiAgICAgc3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2Vy
PigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBhcmFtZXRlcnMuY29va2llQWNjZXB0UG9s
aWN5LCBPcHRpb25hbENhbGxiYWNrSUQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Rlcml2ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0Rlcml2ZWREYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOGI4NTUxZDEzZTA0Y2FmNmNhYWMzZGU5ZTNl
YWI4ZGNmZDMzNDcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRGVyaXZlZERhdGEuY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGVyaXZlZERhdGEuaCIKKworI2luY2x1ZGUgIkFyZ3Vt
ZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXIuaCIK
KworbmFtZXNwYWNlIElQQyB7CisKK3ZvaWQgRGVyaXZlZERhdGE6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAoreworICAgIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlKGVuY29k
ZXIsIG1fdHlwZSk7CisgICAgZW5jb2Rlci5lbmNvZGUobV9kYXRhKTsKK30KKworYm9vbCBEZXJp
dmVkRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIERlcml2ZWREYXRhJiBkZXJpdmVkRGF0
YSkKK3sKKyAgICBpZiAoIUFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZGVjb2RlKGRlY29kZXIsIGRl
cml2ZWREYXRhLm1fdHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZGVj
b2Rlci5kZWNvZGUoZGVyaXZlZERhdGEubV9kYXRhKTsKK30KKworT3B0aW9uYWw8RGVyaXZlZERh
dGE+IERlcml2ZWREYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBEZXJpdmVk
RGF0YSBkZXJpdmVkRGF0YTsKKyAgICBpZiAoIWRlY29kZShkZWNvZGVyLCBkZXJpdmVkRGF0YSkp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgZGVyaXZlZERhdGEg
fTsKK30KKworRGVyaXZlZERhdGFDb250YWluZXI6OkRlcml2ZWREYXRhQ29udGFpbmVyKEZpbmFs
aXplciYmIGZpbmFsaXplcikKKyAgICA6IG1fZmluYWxpemVyKFdURk1vdmUoZmluYWxpemVyKSkK
K3sKK30KKworRGVyaXZlZERhdGFDb250YWluZXI6On5EZXJpdmVkRGF0YUNvbnRhaW5lcigpCit7
CisgICAgbV9maW5hbGl6ZXIoV1RGTW92ZShtX2Rlcml2ZWREYXRhKSk7Cit9CisKK3ZvaWQgRGVy
aXZlZERhdGFDb250YWluZXI6OmFwcGVuZChjb25zdCBEZXJpdmVkRGF0YSYgZGVyaXZlZERhdGEp
Cit7CisgICAgbV9kZXJpdmVkRGF0YS5hcHBlbmQoZGVyaXZlZERhdGEpOworfQorCit9IC8vIG5h
bWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Rlcml2
ZWREYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZXJpdmVkRGF0YS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRiOTRhYjE0ZTc4ZDg2M2Q1Y2U1MTIyMTA1ZDIyOTczNGVlYjJmYWIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZXJpdmVkRGF0YS5oCkBAIC0w
LDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIElQQyB7CisKK2NsYXNzIERlY29kZXI7CitjbGFzcyBFbmNvZGVyOworCitjbGFzcyBE
ZXJpdmVkRGF0YSB7CitwdWJsaWM6CisgICAgRGVyaXZlZERhdGEoKSA9IGRlZmF1bHQ7CisKKyAg
ICBEZXJpdmVkRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSkKKyAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICAgICAgLCBtX2RhdGEoZGF0YSkK
KyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fZGF0
YS5zaXplKCk7IH0KKworICAgIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQorICAgIGNvbnN0IERhdGFSZWZlcmVuY2UmIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2RhdGE7IH0KKworICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMg
Ym9vbCBkZWNvZGUoRGVjb2RlciYsIERlcml2ZWREYXRhJik7CisgICAgc3RhdGljIE9wdGlvbmFs
PERlcml2ZWREYXRhPiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFN0cmluZyBt
X3R5cGU7CisgICAgRGF0YVJlZmVyZW5jZSBtX2RhdGE7Cit9OworCitjbGFzcyBEZXJpdmVkRGF0
YUNvbnRhaW5lciA6IHB1YmxpYyBSZWZDb3VudGVkPERlcml2ZWREYXRhQ29udGFpbmVyPiB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGVyaXZlZERhdGFDb250YWluZXIpOworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworCitwdWJsaWM6CisgICAgdXNpbmcgRmluYWxpemVyID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8RGVyaXZlZERhdGE+JiYpPjsKKworICAg
IHN0YXRpYyBSZWY8RGVyaXZlZERhdGFDb250YWluZXI+IGNyZWF0ZShGaW5hbGl6ZXImJiBmaW5h
bGl6ZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZXJpdmVkRGF0YUNv
bnRhaW5lcihXVEZNb3ZlKGZpbmFsaXplcikpKTsKKyAgICB9CisKKyAgICB+RGVyaXZlZERhdGFD
b250YWluZXIoKTsKKworICAgIHZvaWQgYXBwZW5kKGNvbnN0IERlcml2ZWREYXRhJik7CisKK3By
aXZhdGU6CisgICAgRGVyaXZlZERhdGFDb250YWluZXIoRmluYWxpemVyJiYpOworCisgICAgRmlu
YWxpemVyIG1fZmluYWxpemVyOworICAgIFZlY3RvcjxEZXJpdmVkRGF0YT4gbV9kZXJpdmVkRGF0
YTsKK307CisKK30gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRl
eCA1OWNlZTg1MzA3OTMwMGI4YjFlYjI0MjdjNjNjNjEwZTZkNjA1MTA5Li5lN2Y3M2U0OWE4ZjYy
ZDVlYzYwMTdjMjJkYTU0MjlmYTYxZDZhNmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApA
QCAtNDMsNiArNDMsNyBAQCBleHRlcm4gIkMiIHsKICAgICBNKEF1dG9tYXRpb24pIFwKICAgICBN
KEFjdGl2aXR5U3RhdGUpIFwKICAgICBNKEJhY2tGb3J3YXJkKSBcCisgICAgTShCeXRlY29kZUNh
Y2hlKSBcCiAgICAgTShDYWNoZVN0b3JhZ2UpIFwKICAgICBNKENvbnRlbnRPYnNlcnZhdGlvbikg
XAogICAgIE0oQ29udGV4dE1lbnUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGQyNTk1ZDc2YjNlOWQyNzQw
MGM1NzBmMWU4MWFkYWMxMDczMTEzMzIuLmM5ZTVkMzM1YjgwMWNhMzA2ZTFmMDlhYTIyMjk1YTcx
MTIzMGVmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNTgsNiArNTgsNyBAQCBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3BwIEBuby11bmlmeQogTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIEBuby11bmlmeQogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwIEBuby11bmlmeQogCitOZXR3b3JrUHJvY2Vzcy9jYWNoZS9CeXRlY29kZUNhY2hlLmNwcAog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4NTFiNWU2NzhjZTJkNTM3M2JiZDI2Y2Fh
ZTJmNTRhNDRkZGUyNzA4Li42YWNjZWEwYjVhZjA5ZGY2N2RkMDVmYTlkMGI3ODI0NmJiMTdkNTc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEyMyw2ICsxMjMsOSBAQAogCQkwRkYyNEEyRDE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkYyNEEyQjE4NzlFNEJDMDAzQUJG
MEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki87IH07CiAJCTBGRjI0QTJFMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRjI0QTJDMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCAqLzsgfTsKIAkJMEZGMjY0QTAxQTFGRjlDQzAwMUZF
NzU5IC8qIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3MDdDNzkxQTFGRUVBMzAw
REE3QTQ1IC8qIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oICovOyB9
OworCQkxNEQwMUE3MzIxRkExODA2MDBCQzU0RTkgLyogQnl0ZWNvZGVDYWNoZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTREMDFBNzEyMUZBMTgwNTAw
QkM1NEU5IC8qIEJ5dGVjb2RlQ2FjaGUuaCAqLzsgfTsKKwkJMTRFMjgwOTQyMjAwMEEwRjAwM0JD
NTdCIC8qIERlcml2ZWREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNEUyODA5MjIyMDAwOUY5MDAzQkM1N0IgLyogRGVyaXZlZERhdGEuaCAqLzsg
fTsKKwkJMTRFMjgwOTUyMjAwMEEyMjAwM0JDNTdCIC8qIERlcml2ZWREYXRhLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RTI4MDkzMjIwMDA5Rjkw
MDNCQzU3QiAvKiBEZXJpdmVkRGF0YS5jcHAgKi87IH07CiAJCTE1NzM5QkJEMUI0MjA0MkQwMEQy
NThDMSAvKiBXZWJVc2VyTWVkaWFDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjQ5MTlBRjdCODAwMDJFQkFCNSAvKiBXZWJVc2VyTWVk
aWFDbGllbnQuaCAqLzsgfTsKIAkJMUEwMDJENDMxOTZCMzM3MDAwQjlBRDQ0IC8qIF9XS1Nlc3Np
b25TdGF0ZUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTAwMkQ0MjE5NkIzMzcwMDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlSW50ZXJu
YWwuaCAqLzsgfTsKIAkJMUEwMDJENDQxOTZCMzM4OTAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwMDJE
M0YxOTZCMzI5NDAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xOTI1LDYgKzE5MjgsMTAgQEAKIAkJ
MEZGMjRBMkMxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTBGRjI0QTJGMTg3OUU0RkUwMDNBQkYwQyAv
KiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTEwNThDN0IxRkVBNTU4NUUxMUNBMkNCQiAvKiBDb2NvYS5mcmFtZXdvcmsg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVy
LmZyYW1ld29yazsgbmFtZSA9IENvY29hLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvY29hLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+Ijsg
fTsKKwkJMTREMDFBNzAyMUZBMTgwNTAwQkM1NEU5IC8qIEJ5dGVjb2RlQ2FjaGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnl0ZWNvZGVDYWNoZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0RDAxQTcxMjFGQTE4MDUwMEJDNTRFOSAvKiBCeXRl
Y29kZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlQ2Fj
aGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRFMjgwOTIyMjAwMDlGOTAwM0JD
NTdCIC8qIERlcml2ZWREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERl
cml2ZWREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0RTI4MDkzMjIwMDA5
RjkwMDNCQzU3QiAvKiBEZXJpdmVkRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEZXJpdmVkRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBMDAyRDNFMTk2QjMyOTQwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGUubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tTZXNzaW9uU3RhdGUubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMDAyRDNGMTk2QjMyOTQwMEI5QUQ0NCAvKiBfV0tT
ZXNzaW9uU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLU2Vzc2lv
blN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMDAyRDQyMTk2QjMzNzAw
MEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTM5MSw2ICs1Mzk4LDggQEAKIAkJCQkxQUM3NTM3RTE4M0JFNTBGMDA3
MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5oICovLAogCQkJCUJDMDMyRDlEMTBGNDM3RDEwMDU4QzE1
QSAvKiBEZWNvZGVyLmNwcCAqLywKIAkJCQlCQzAzMkQ5RTEwRjQzN0QxMDA1OEMxNUEgLyogRGVj
b2Rlci5oICovLAorCQkJCTE0RTI4MDkzMjIwMDA5RjkwMDNCQzU3QiAvKiBEZXJpdmVkRGF0YS5j
cHAgKi8sCisJCQkJMTRFMjgwOTIyMjAwMDlGOTAwM0JDNTdCIC8qIERlcml2ZWREYXRhLmggKi8s
CiAJCQkJQkMwMzJEOUYxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuY3BwICovLAogCQkJCUJD
MDMyREEwMTBGNDM3RDEwMDU4QzE1QSAvKiBFbmNvZGVyLmggKi8sCiAJCQkJNDE1MUU1QzMxRkJC
OTBBOTAwRTQ3RTJEIC8qIEZvcm1EYXRhUmVmZXJlbmNlLmggKi8sCkBAIC04NzUyLDYgKzg3NjEs
OCBAQAogCQlFNDg5RDI4MjFBMEEyQkU4MDA3OEMwNkEgLyogY2FjaGUgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTE0RDAxQTcwMjFGQTE4MDUwMEJDNTRF
OSAvKiBCeXRlY29kZUNhY2hlLmNwcCAqLywKKwkJCQkxNEQwMUE3MTIxRkExODA1MDBCQzU0RTkg
LyogQnl0ZWNvZGVDYWNoZS5oICovLAogCQkJCTQxODk3RUQ2MUY0MTVEODYwMDE2RkE0MiAvKiBD
YWNoZVN0b3JhZ2VFbmdpbmUuY3BwICovLAogCQkJCTQxODk3RUQyMUY0MTVEODUwMDE2RkE0MiAv
KiBDYWNoZVN0b3JhZ2VFbmdpbmUuaCAqLywKIAkJCQk0MUM4NTgxOTFGNTEwREVFMDA2NUUwODUg
LyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwICovLApAQCAtOTAwOSw2ICs5MDIwLDcgQEAK
IAkJCQlFMTcwODc2QzE2RDZDQTY5MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJ5UHJveHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTRGNjAxNDMyMTU1QzVBQTIwMDFGQkRFMCAvKiBCbG9ja2luZ1Jlc3Bv
bnNlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU3MDUxMTFCRTQxMEU2MDA4NzRBRjEgLyog
QmxvY2tTUEkuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0RDAxQTczMjFGQTE4MDYwMEJDNTRFOSAv
KiBCeXRlY29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMwNjVGQTEyNTkzNDRFMDBF
NzEyNzggLyogQ2FjaGVNb2RlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4OTdFRDgxRjQxNUQ4
QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFG
QUJEMkExRjRERTAwMTAwNkE2Qzk3IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTkwMjksNiArOTA0MSw3IEBACiAJCQkJQzU1RjkxNzExQzU5Njc2RTAwMjlF
OTJEIC8qIERhdGFEZXRlY3Rpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzc1Mzgw
MTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzAzMkRBNjEwRjQzN0QxMDA1OEMxNUEgLyogRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MTRFMjgwOTQyMjAwMEEwRjAwM0JDNTdCIC8qIERlcml2ZWREYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1N0RDRURBQjIxNEM2MDA5MDAxNkI4NDcgLyogRGV2aWNlSWRlbnRpdHlTUEkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA3Mjk3RjlGMUMxN0JCRUEwMTVGMDczNSAvKiBEZXZpY2VJZEhhc2hT
YWx0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM4OTFCNkMxQTY4QzMwQjAwMzBGMzg2
IC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTkxMTcsNiAr
OTEzMCw3IEBACiAJCQkJNDEzMDc1QUQxREU4NUY1ODAwMzlFQzY5IC8qIExpYldlYlJUQ1NvY2tl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFEQzQ1OUMxRTNEQkIyODAwQjExRjUxIC8qIExpYldl
YlJUQ1NvY2tldENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzMDc1QjIxREU4NUY1ODAw
MzlFQzY5IC8qIExpYldlYlJUQ1NvY2tldEZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3
OTAwQjQwMjFGOEY5QjgwMDgzMTdERSAvKiBMb2FkT3B0aW1pemVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRDEwODc2MTFEMkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU3OERDMjk4MjE1NUEwMDIwMDc0RTgxNSAvKiBMb2NhbEF1dGhlbnRpY2F0
aW9uU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RENFREFDMjE0QzYwMjcwMDE2Qjg0
NyAvKiBMb2NhbEF1dGhlbnRpY2F0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtMTA3OTYsNiArMTA4
MTAsNyBAQAogCQkJCTJEOTJBNzdEMjEyQjZBNzEwMEY0OTNGRCAvKiBDb25uZWN0aW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTJEOTJBNzdFMjEyQjZBNzEwMEY0OTNGRCAvKiBEYXRhUmVmZXJl
bmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzdGMjEyQjZBNzEwMEY0OTNGRCAvKiBE
ZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0RTI4MDk1MjIwMDBBMjIwMDNCQzU3QiAv
KiBEZXJpdmVkRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RDYxOTEyODhCOUQ5MDBD
RkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQTY0MjI5OTEyREQwMjkyMDBDQUFFMkMgLyogRHJhd2luZ0FyZWFNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2NDIzMDgxMkREMDlFQjAwQ0FBRTJDIC8qIERy
YXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5j
cHAKaW5kZXggNTA2ZDE2NmExNWQwZTc1OTM0ZDcyMGU3ZjhkZTYxNTJiMTcwNWQzMS4uYjdiMzQx
YTBlM2UxNWU1MmM2NmE4ZDhlYjhkY2JjMGVkODcwM2YyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtNDcs
NiArNDcsNyBAQAogI2luY2x1ZGUgIldlYlVSTFNjaGVtZVRhc2tQcm94eS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZUhvc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hl
ZFJlc291cmNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRTY3JpcHQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dn
aW5nS2V5cy5oPgpAQCAtMjgwLDYgKzI4MSw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNj
aGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMCiAg
ICAgbG9hZFBhcmFtZXRlcnMuZGVmZXJzTG9hZGluZyA9IHJlc291cmNlTG9hZGVyLmRlZmVyc0xv
YWRpbmcoKTsKICAgICBsb2FkUGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5mbyA9IHJlc291
cmNlTG9hZGVyLnNob3VsZEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKTsKICAgICBsb2FkUGFyYW1l
dGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA9IG1heGltdW1CdWZmZXJpbmdUaW1lOworICAgIGxv
YWRQYXJhbWV0ZXJzLmRlcml2ZWRDYWNoZWREYXRhVHlwZXNUb1JldHJpZXZlID0gcmVzb3VyY2VM
b2FkZXIub3B0aW9ucygpLmRlcml2ZWRDYWNoZWREYXRhVHlwZXNUb1JldHJpZXZlOwogICAgIGxv
YWRQYXJhbWV0ZXJzLm9wdGlvbnMgPSByZXNvdXJjZUxvYWRlci5vcHRpb25zKCk7CiAgICAgbG9h
ZFBhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5ID0gcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnBy
ZWZsaWdodFBvbGljeTsKICAgICBsb2FkUGFyYW1ldGVycy5pc0hUVFBTVXBncmFkZUVuYWJsZWQg
PSByZXNvdXJjZUxvYWRlci5mcmFtZSgpID8gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+c2V0dGlu
Z3MoKS5IVFRQU1VwZ3JhZGVFbmFibGVkKCkgOiBmYWxzZTsKQEAgLTY2NCw2ICs2NjYsMTYgQEAg
dm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6ZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBw
cmVjb25uZWN0aW9uSWRlbnRpZmllciwKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShlcnJvcikpOwogfQogCit2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpjYWNoZUJ5dGVjb2RlRm9y
U2NyaXB0KGNvbnN0IFdlYkNvcmU6OkNhY2hlZFNjcmlwdCYgc2NyaXB0KQoreworICAgIHVpbnQ2
NF90IHdlYlBhZ2VJRCA9IHNjcmlwdC53ZWJQYWdlSUQoKTsKKyAgICB1aW50NjRfdCB3ZWJGcmFt
ZUlEID0gc2NyaXB0LndlYkZyYW1lSUQoKTsKKyAgICBpZiAoIXdlYlBhZ2VJRCB8fCAhd2ViRnJh
bWVJRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDYWNoZUJ5dGVjb2RlRm9yUmVxdWVzdChz
Y3JpcHQucmVzb3VyY2VSZXF1ZXN0KCksIHdlYlBhZ2VJRCwgd2ViRnJhbWVJRCksIDApOworfQor
CiBib29sIFdlYkxvYWRlclN0cmF0ZWd5Ojppc09uTGluZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1faXNPbkxpbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuaAppbmRleCAxZWZjOTNjMDJhM2NhMmI5YmYwZWRmMGFhOTA1ZTVm
OWJiMGQzYmQzLi43OTllZjc3YmEwMzNmZDU4MDgyYTljMmI3NWU2MDVkNTI5MmE2NGZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmgKQEAgLTY4LDYgKzY4LDggQEAgcHVibGljOgogICAgIHZvaWQgcHJlY29ubmVjdFRvKFdl
YkNvcmU6OkZyYW1lTG9hZGVyJiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lk
IGRpZEZpbmlzaFByZWNvbm5lY3Rpb24odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIs
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik7CiAKKyAgICB2b2lkIGNhY2hlQnl0ZWNvZGVGb3JT
Y3JpcHQoY29uc3QgV2ViQ29yZTo6Q2FjaGVkU2NyaXB0Jikgb3ZlcnJpZGU7CisKICAgICB2b2lk
IHNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoYm9vbCkgZmluYWw7CiAK
ICAgICBXZWJSZXNvdXJjZUxvYWRlciogd2ViUmVzb3VyY2VMb2FkZXJGb3JJZGVudGlmaWVyKFJl
c291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllcikgY29uc3QgeyByZXR1cm4gbV93ZWJSZXNv
dXJjZUxvYWRlcnMuZ2V0KGlkZW50aWZpZXIpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMTMwOWRjNzM3
MDg4ZWM3YWVhMDZhMzdlZGI1MjNmMWUwMzZjMTdmMS4uNzBiOTU0NTc3MjQ4MWQ0ZmE3Mjc5ZDE1
MThmYTVhNDE0MjhjODY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgIldlYlJlc291cmNlTG9hZGVyLmgiCiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisj
aW5jbHVkZSAiRGVyaXZlZERhdGEuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9h
ZGVyTWVzc2FnZXMuaCIKQEAgLTExMCw3ICsxMTEsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVy
OjpkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0Jl
UwogICAgIG1fY29yZUxvYWRlci0+ZGlkU2VuZERhdGEoYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9C
ZVNlbnQpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZU1lc3NhZ2UpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UsIGNvbnN0IFZlY3RvcjxJUEM6OkRlcml2ZWRE
YXRhPiYgZGVyaXZlZERhdGEpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2Vi
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSBmb3IgJyVzJy4gU3RhdHVzICVkLiIs
IG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCByZXNwb25zZS5o
dHRwU3RhdHVzQ29kZSgpKTsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZl
UmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIHN0YXR1cyA9ICVkKSIsIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFt
ZXRlcnMucmVzb3VyY2VJRCwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CkBAIC0xNDAsNiAr
MTQxLDEwIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAgICAgfQogCiAgICAgbV9jb3JlTG9h
ZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFdURk1vdmUocG9saWN5RGVjaXNpb25D
b21wbGV0aW9uSGFuZGxlcikpOworICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBkZXJpdmVk
RGF0YSkgeworICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVudHJ5
LmRhdGEoKS5kYXRhKCksIGVudHJ5LmRhdGEoKS5zaXplKCkpOworICAgICAgICBtX2NvcmVMb2Fk
ZXItPmRpZFJldHJpZXZlRGVyaXZlZERhdGFGcm9tQ2FjaGUoZW50cnkudHlwZSgpLCBidWZmZXIu
Z2V0KCkpOworICAgIH0KIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVu
Z3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmgKaW5kZXggYzYyZDQ0ZGUwZTYxNzkyMTJkMmE3NGZlOGZhNDNjOTFhYTViYWRj
MS4uMjUzY2UwZWQyOGI2Y2U0ZDQ4NWRhMDIzNDExZTZhYTE1MTE5ZTI3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCkBA
IC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRGF0YVJlZmVyZW5jZTsK
K2NsYXNzIERlcml2ZWREYXRhOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Niw5ICs3
Nyw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIGRp
ZFNlbmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZW50
KTsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UsIGNvbnN0IFZl
Y3RvcjxJUEM6OkRlcml2ZWREYXRhPiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7Ci0gICAgdm9p
ZCBkaWRSZXRyaWV2ZURlcml2ZWREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCBkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdm9pZCBkaWRGYWlsUmVzb3VyY2VMb2Fk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZEJsb2NrQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KaW5kZXggN2I5
MzI1NmYwMzZkZDA0MmY0NGJhODNhMzE4YmI3YjY2MzZkNDFhYS4uMzBiMDNkMDZkMjgyMGM4Yjc2
ZTY0NWM3ZDJlMzdmZTNmNjQ4ZWJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KQEAg
LTIzLDcgKzIzLDcgQEAKIG1lc3NhZ2VzIC0+IFdlYlJlc291cmNlTG9hZGVyIExlZ2FjeVJlY2Vp
dmVyIHsKICAgICBXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSkKICAgICBEaWRT
ZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCkK
LSAgICBEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKKyAgICBEaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgYm9vbCBu
ZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSwgVmVjdG9yPElQQzo6RGVyaXZl
ZERhdGE+IGRhdGEpCiAgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkRmluaXNoUmVz
b3VyY2VMb2FkKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9hZE1ldHJpY3Mp
CiAgICAgRGlkRmFpbFJlc291cmNlTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2Vi
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXggNTViMzY5NzUzMDY1ODIxNGJjOTc5YTg3OTJi
NjYwNzI2ZDgyOTZkZC4uZDA2Zjc1ZjA2NTUzY2VmMzQyNGE1NGZjMjhjOTZmMWRiYTE5YjMxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0
L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCkBAIC02MCw2ICs2MCw4IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgcHJlY29ubmVjdFRvKFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwgY29uc3QgVVJMJiwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFu
ZGxlciYmKSBmaW5hbDsKIAorICAgIHZvaWQgY2FjaGVCeXRlY29kZUZvclNjcmlwdChjb25zdCBX
ZWJDb3JlOjpDYWNoZWRTY3JpcHQmKSBmaW5hbCB7IH0KKwogICAgIHZvaWQgc2V0Q2FwdHVyZUV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sKSBmaW5hbCB7IH0KIAogICAgIGJvb2wg
aXNTZXJpYWxMb2FkaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTZXJpYWxMb2FkaW5n
RW5hYmxlZDsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361242</attachid>
            <date>2019-02-05 16:19:55 -0800</date>
            <delta_ts>2019-02-11 15:50:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194047-20190205161930.patch</filename>
            <type>text/plain</type>
            <size>68935</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwOTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YjgzODlkMzhkOTgwZTg2ZDY3OTJmM2I4MTAzY2E5MDJhZDZmNWUyLi5jZTdkODI4YjA4YmM2NjM0
YmI1MmE3NDk2YWYyNmU0MThlNWRiMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxOS0wMS0zMCAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBJbnRlZ3JhdGUgSlNDIGJ5dGVjb2RlIGNhY2hlIHdpdGggV2ViS2l0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQwNDcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY2FsbGJh
Y2sgdG8gU291cmNlUHJvdmlkZXIgZm9yIGNhY2hpbmcgdGhlIGJ5dGVjb2RlLgorCisgICAgICAg
ICogcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgIChKU0M6OkNhY2hlZEJ5dGVjb2Rl
OjpDYWNoZWRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVyOjpjYWNoZUJ5
dGVjb2RlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAg
IChKU0M6OkNvZGVDYWNoZTo6d3JpdGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmg6
CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVWYWx1ZTo6U291cmNlQ29kZVZhbHVlKToKKyAgICAg
ICAgKEpTQzo6Q29kZUNhY2hlTWFwOjpmZXRjaEZyb21EaXNrSW1wbCk6CisgICAgICAgICogcnVu
dGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbHVhdGUpOgorCiAyMDE5LTAy
LTA1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggREZHJ3Mg
ZG9lc0dDKCkgZm9yIGEgZmV3IG1vcmUgbm9kZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWM4YjA5MTNmOGMx
ZDBjZWM4Y2E5OTczZGU2NjI3MWY1OGNkNTE4YS4uZjZhNGFjZmY3MGY3MTk0NmUyNWJjOGQwNWZl
MWU4MDgwODQxMmYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE5LTAxLTMwICBU
YWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgorCisgICAgICAgIEludGVncmF0ZSBK
U0MgYnl0ZWNvZGUgY2FjaGUgd2l0aCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBDYWNoZWRCeXRlY29kZSB0byBDYWNoZWRTY3JpcHQu
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRTY3JpcHRGZXRjaGVyOjpyZXF1ZXN0U2NyaXB0V2l0aENhY2hlIGNvbnN0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oOgorICAgICAg
ICAqIGxvYWRlci9Mb2FkZXJTdHJhdGVneS5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVE
ZXJpdmVkRGF0YUZyb21DYWNoZSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oOgorICAgICAgICAqIGxv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJj
ZUxvYWRlcjo6ZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZSk6CisgICAgICAgICogbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6Omlzb2xh
dGVkQ29weSBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpsb2FkKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlOjpsb2FkZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6
OndlYlBhZ2VJRCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6d2Vi
RnJhbWVJRCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZGlkUmV0
cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmNhY2hlZEJ5dGVj
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6ZGlkUmV0cmlldmVEZXJpdmVk
RGF0YUZyb21DYWNoZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oOgor
CiAyMDE5LTAyLTA1ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBFbmFibGUgdGhlIGF1dG9tYXRpYyBjaGVja2luZyBhbmQgcmVnZW5lcmF0aW9ucyBvZiAueGNm
aWxlbGlzdHMgZHVyaW5nIGJ1aWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0Njg4ZDU0MGM0ZDE4MDRhZTU4Y2Iw
NWRmMTIwNTc1NTBjYWE1YmUwLi4zMjQyY2UzODVhYjE4ZDNjZDg0YmJiMWNmZDQ0ZjVhYjY4ODQy
ODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE5LTAxLTMwICBUYWRldSBaYWdhbGxv
ICA8dHphZ2FsbG9AYXBwbGUuY29tPgorCisgICAgICAgIEludGVncmF0ZSBKU0MgYnl0ZWNvZGUg
Y2FjaGUgd2l0aCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5NDA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJldmVydCBwYXJ0IG9mIHRoZSBjb2RlIGRlbGV0ZWQgaW4gcjIzODkzMywgYnV0
IGNoYW5nZSBpdCB0byByZXRyaWV2ZSB0aGUKKyAgICAgICAgZGVyaXZlZCBkYXRhIHN5bmNocm9u
b3VzbHkuIE90aGVyd2lzZSwgdGhlIGJ5dGVjb2RlIHdvdWxkIG5vdCBiZSBhdmFpbGFibGUKKyAg
ICAgICAgaW4gdGltZSBmb3IgZXhlY3V0aW9uLgorCisgICAgICAgIEFkZGl0aW9uYWxseSAgYSBC
eXRlY29kZUNhY2hlIHRvIHRoZSBOZXR3b3JrUHJvY2VzcyB0byBnZW5lcmF0ZSBhbmQgc3RvcmUK
KyAgICAgICAgYnl0ZWNvZGUgZm9yIHJlcXVlc3RzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2FjaGVCeXRlY29kZUZvclJlcXVlc3QpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmJ5dGVjb2RlQ2FjaGUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNv
ZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpkaWRSZXRyaWV2ZUNhY2hlRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnByb2Nlc3NDYWNoZWRFbnRyeUFmdGVyRGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9CeXRlY29kZUNhY2hlLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OkJ5dGVjb2RlQ2FjaGU6OlBsYW46OlBsYW4pOgorICAgICAgICAoV2ViS2l0
OjpCeXRlY29kZUNhY2hlOjpQbGFuOjpjb21waWxlKToKKyAgICAgICAgKFdlYktpdDo6Qnl0ZWNv
ZGVDYWNoZTo6VGhyZWFkOjpUaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpCeXRlY29kZUNhY2hl
OjpCeXRlY29kZUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6Qnl0ZWNvZGVDYWNoZTo6fkJ5dGVj
b2RlQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpCeXRlY29kZUNhY2hlOjpjYWNoZUJ5dGVjb2Rl
Rm9yUmVxdWVzdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQnl0ZWNvZGVDYWNo
ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRT
b3VyY2VQcm92aWRlci5oLgorICAgICAgICAoV2ViS2l0OjpCeXRlY29kZUNhY2hlOjpjcmVhdGUp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpzYWx0IGNvbnN0KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2Nv
YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0
d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZXJpdmVkRGF0YS5jcHA6IEFk
ZGVkLgorICAgICAgICAoSVBDOjpEZXJpdmVkRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KElQQzo6RGVyaXZlZERhdGE6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Rlcml2
ZWREYXRhLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpEZXJpdmVkRGF0YTo6RGVyaXZlZERhdGEp
OgorICAgICAgICAoSVBDOjpEZXJpdmVkRGF0YTo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChJ
UEM6OkRlcml2ZWREYXRhOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKElQQzo6RGVyaXZlZERhdGE6
OmRhdGEgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0xvZ2dpbmcuaDoKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OmNhY2hlQnl0ZWNv
ZGVGb3JTY3JpcHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5p
bjoKKwogMjAxOS0wMi0wNSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXByb2R1Y2libGUgY3Jhc2ggdW5kZXIgV0tTaGFyZVNoZWV0IHByZXNlbnRX
aXRoUGFyYW1ldGVycyB3aGVuIGNhbmNlbGxpbmcgYSBzaGFyZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpp
bmRleCA5N2Q3MzY4M2IxYzMyNjQ5NGVmMTQ1OTVkNDQzMjhlZjM2YjM0YzFmLi41ZTI1NmYyMTMz
NDU2YWQwODQyZjU5MWFiNjliMDczMTc5YTI1OGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDE5LTAxLTMwICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUu
Y29tPgorCisgICAgICAgIEludGVncmF0ZSBKU0MgYnl0ZWNvZGUgY2FjaGUgd2l0aCBXZWJLaXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDA0Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dCBMb2FkZXJTdHJhdGVneSdzIGBjYWNoZUJ5dGVjb2RlRm9yU2NyaXB0YCBhcyBuby1vcC4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oOgorCiAy
MDE5LTAxLTMxICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgogCiAg
ICAgICAgIFtDdXJsXSBSZW1vdmUgdW5uZWNlc3NhcnkgbWVtYmVyIGZyb20gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3Vy
Y2VQcm92aWRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRl
ci5oCmluZGV4IDM3NzhiZjk0MWFkN2ZhYzg2NGQ2Y2E3ODBhMDZkODI4OWU5MWFlNGMuLmJkMGE3
ZWIxZDYwY2FhNzM5Y2IxZGJmNTg5ZDRhYjBjOGY2NDcwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmgKQEAgLTExNiw2ICsxMTYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBoYXNoKCkgY29uc3QgPSAwOwog
ICAgICAgICB2aXJ0dWFsIFN0cmluZ1ZpZXcgc291cmNlKCkgY29uc3QgPSAwOwogICAgICAgICB2
aXJ0dWFsIGNvbnN0IENhY2hlZEJ5dGVjb2RlKiBjYWNoZWRCeXRlY29kZSgpIGNvbnN0IHsgcmV0
dXJuIG51bGxwdHI7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGNhY2hlQnl0ZWNvZGUoKSBjb25z
dCB7IH0KIAogICAgICAgICBTdHJpbmdWaWV3IGdldFJhbmdlKGludCBzdGFydCwgaW50IGVuZCkg
Y29uc3QKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNo
ZS5jcHAKaW5kZXggYjQxZTUyNjUxZjNlN2M5ZjZlY2RlMjNmZmI5Njk5Yzg5ZGI3ODY1Ny4uMjQ3
ZmIzZjQ1MDU2NDIxOTE1ZGUwNTdhMzEyNDUzZDA1OTE0MGYxZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC0xNTksOCArMTU5LDE3IEBAIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldFVubGlua2VkR2xvYmFsRnVuY3Rp
b25FeGVjdXRhYmxlKFZNJiB2CiAKIHZvaWQgQ29kZUNhY2hlOjp3cml0ZShWTSYgdm0pCiB7Ci0g
ICAgZm9yIChjb25zdCBhdXRvJiBpdCA6IG1fc291cmNlQ29kZSkKKyAgICBmb3IgKGF1dG8mIGl0
IDogbV9zb3VyY2VDb2RlKSB7CisgICAgICAgIGlmIChpdC52YWx1ZS53cml0dGVuKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIGl0LnZhbHVlLndyaXR0ZW4gPSB0cnVlOworICAgICAg
ICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0ganNEeW5hbWljQ2FzdDxVbmxpbmtlZENv
ZGVCbG9jayo+KHZtLCBpdC52YWx1ZS5jZWxsLmdldCgpKTsKKyAgICAgICAgaWYgKCFjb2RlQmxv
Y2spCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaXQua2V5LnNvdXJjZSgpLnByb3Zp
ZGVyKCkuY2FjaGVCeXRlY29kZSgpOworICAgICAgICAvLyBGSVhNRTogTW92ZSBgd3JpdGVDb2Rl
QmxvY2tgIGludG8gYSBjdXN0b20gU291cmNlUHJvdmlkZXIKICAgICAgICAgd3JpdGVDb2RlQmxv
Y2sodm0sIGl0LmtleSwgaXQudmFsdWUpOworICAgIH0KIH0KIAogdm9pZCBnZW5lcmF0ZVVubGlu
a2VkQ29kZUJsb2NrRm9yRnVuY3Rpb25zKFZNJiB2bSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlu
a2VkQ29kZUJsb2NrLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJlbnRTb3VyY2UsIERlYnVnZ2VyTW9k
ZSBkZWJ1Z2dlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZUNhY2hlLmgKaW5kZXggODBjMGQ5NWY5ZWY3OTQ5NTJlNWZiYzY4M2VlNTY2
NTBlMGEwMjFhZi4uYmU0NGJkZGVlOTlmZTQ5NGUxODg1Y2EzZTc3OTFkYTY2OTRmODg5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKQEAgLTc1LDE0ICs3NSwx
NiBAQCBzdHJ1Y3QgU291cmNlQ29kZVZhbHVlIHsKICAgICB7CiAgICAgfQogCi0gICAgU291cmNl
Q29kZVZhbHVlKFZNJiB2bSwgSlNDZWxsKiBjZWxsLCBpbnQ2NF90IGFnZSkKKyAgICBTb3VyY2VD
b2RlVmFsdWUoVk0mIHZtLCBKU0NlbGwqIGNlbGwsIGludDY0X3QgYWdlLCBib29sIHdyaXR0ZW4g
PSBmYWxzZSkKICAgICAgICAgOiBjZWxsKHZtLCBjZWxsKQogICAgICAgICAsIGFnZShhZ2UpCisg
ICAgICAgICwgd3JpdHRlbih3cml0dGVuKQogICAgIHsKICAgICB9CiAKICAgICBTdHJvbmc8SlND
ZWxsPiBjZWxsOwogICAgIGludDY0X3QgYWdlOworICAgIGJvb2wgd3JpdHRlbjsKIH07CiAKIGNs
YXNzIENvZGVDYWNoZU1hcCB7CkBAIC0xNTQsNyArMTU2LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgVkVSQk9TRV9MT0coIkZvdW5kIGNhY2hlZCBD
b2RlQmxvY2sgb24gZGlzayIpOwotICAgICAgICBhZGRDYWNoZShrZXksIFNvdXJjZUNvZGVWYWx1
ZSh2bSwgdW5saW5rZWRDb2RlQmxvY2ssIG1fYWdlKSk7CisgICAgICAgIGFkZENhY2hlKGtleSwg
U291cmNlQ29kZVZhbHVlKHZtLCB1bmxpbmtlZENvZGVCbG9jaywgbV9hZ2UsIHRydWUpKTsKICAg
ICAgICAgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrOwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BB
UkFNKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBs
ZXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAK
aW5kZXggOGE4NzVjZDdlM2IwNWRjNDM2NTlmMDFiNzAwNTJiYzEzY2MxYWUxOS4uYTQ2OWQyMjQ3
NTZmMGQ3ZDFmOTg4MGJhMjkwMjE3MDQ2YzdkOWU5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKQEAgLTE0Miw2ICsxNDIsOCBAQCBKU1ZhbHVlIGV2
YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVl
IHRoaXNWYWx1ZSwgTgogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKKyAg
ICB2bS5jb2RlQ2FjaGUoKS0+d3JpdGUodm0pOworCiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRhYjExMTQzN2JkNWMzNzk5ZWJmMGJhZDFh
NDEyMTAxN2ZkZWYxOTcuLjNhNTk4Mjc0MjQ1ZWIzMWEwZGE0YWNhZmVhNTMwZTFkOWMzMGMzMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTM4ODMsNyArMzg4Myw3IEBACiAJCUJDQjE2QzFDMDk3OUMzQkQwMDQ2Nzc0MSAvKiBD
YWNoZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNCMTZDMDMwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZEltYWdlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMjAwOTc5QzNCRDAw
NDY3NzQxIC8qIENhY2hlZFJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwNzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3Vy
Y2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlC
Q0IxNkMyMjA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzA5MDk3
OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oICovOyB9OwotCQlC
Q0IxNkMyNDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkU2NyaXB0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwQjA5NzlDM0JEMDA0Njc3NDEg
LyogQ2FjaGVkU2NyaXB0LmggKi87IH07CisJCUJDQjE2QzI0MDk3OUMzQkQwMDQ2Nzc0MSAvKiBD
YWNoZWRTY3JpcHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDQjE2QzBCMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRTY3JpcHQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0IxNkMyODA5NzlDM0JE
MDA0Njc3NDEgLyogQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMEYwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hl
ZFhTTFN0eWxlU2hlZXQuaCAqLzsgfTsKIAkJQkNCMTZDMkEwOTc5QzNCRDAwNDY3NzQxIC8qIENh
Y2hlZFJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0IxNkMxMTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlC
Q0I5MkQ0RjEyOTM1NTBCMDBDODM4N0YgLyogRm9udEJhc2VsaW5lLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0I5MkQ0RTEyOTM1NTBCMDBDODM4N0Yg
LyogRm9udEJhc2VsaW5lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNj
cmlwdEZldGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0
RmV0Y2hlci5jcHAKaW5kZXggN2M4N2IyMzkzOGU0MzNlNTA4YzBmYjgwYmU5YzllNmZkZTM4MjEw
My4uZTBmMDAzZjBkYjFiNGE4YmNiNjFhZjNiZDhmNTZkMzEzOTZlNmYzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKQEAgLTU2
LDYgKzU2LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBDYWNoZWRTY3Jp
cHRGZXRjaGVyOjpyZXF1ZXN0U2NyaXB0V2l0aENhY2hlKEQKICAgICBvcHRpb25zLmNvbnRlbnRT
ZWN1cml0eVBvbGljeUltcG9zaXRpb24gPSBoYXNLbm93bk5vbmNlID8gQ29udGVudFNlY3VyaXR5
UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNoZWNrIDogQ29udGVudFNlY3VyaXR5UG9saWN5
SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjazsKICAgICBvcHRpb25zLnNhbWVPcmlnaW5EYXRhVVJM
RmxhZyA9IFNhbWVPcmlnaW5EYXRhVVJMRmxhZzo6U2V0OwogICAgIG9wdGlvbnMuaW50ZWdyaXR5
ID0gV1RGTW92ZShpbnRlZ3JpdHkpOworICAgIG9wdGlvbnMuZGVyaXZlZENhY2hlZERhdGFUeXBl
c1RvUmV0cmlldmUgPSB7ICJieXRlY29kZS1jYWNoZSIgfTsKIAogICAgIGF1dG8gcmVxdWVzdCA9
IGNyZWF0ZVBvdGVudGlhbEFjY2Vzc0NvbnRyb2xSZXF1ZXN0KHNvdXJjZVVSTCwgZG9jdW1lbnQs
IGNyb3NzT3JpZ2luTW9kZSwgV1RGTW92ZShvcHRpb25zKSk7CiAgICAgcmVxdWVzdC51cGdyYWRl
SW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQoZG9jdW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgKaW5kZXggYWU0
NDRjNjQ1MzZiMjM1Y2ExNjU3NDZkOTQwYTE3MGJjOTFjYWVhYi4uYTVkYmQyMmJkMzQ3Y2M3MzVl
NzdjOWY5YmM2MGI2YzgxYjU3MmE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oCkBAIC0yOSw2ICsyOSw4IEBA
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJDYWNoZWRTY3Jp
cHQuaCIKICNpbmNsdWRlICJDYWNoZWRTY3JpcHRGZXRjaGVyLmgiCisjaW5jbHVkZSAiTG9hZGVy
U3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9Tb3VyY2VQcm92aWRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00NSw2ICs0NywxNCBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9jYWNoZWRTY3JpcHQtPnNjcmlwdEhhc2goKTsgfQogICAgIFN0cmlu
Z1ZpZXcgc291cmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jYWNoZWRTY3JpcHQtPnNj
cmlwdCgpOyB9CisgICAgY29uc3QgSlNDOjpDYWNoZWRCeXRlY29kZSogY2FjaGVkQnl0ZWNvZGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAmbV9jYWNoZWRTY3JpcHQtPmNhY2hlZEJ5dGVjb2Rl
KCk7IH0KKworICAgIHZvaWQgY2FjaGVCeXRlY29kZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgewor
ICAgICAgICBpZiAobV9jYWNoZWRTY3JpcHQtPmNhY2hlZEJ5dGVjb2RlKCkuc2l6ZSgpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3Ry
YXRlZ3koKS0+Y2FjaGVCeXRlY29kZUZvclNjcmlwdCgqbV9jYWNoZWRTY3JpcHQpOworICAgIH0K
IAogcHJpdmF0ZToKICAgICBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcihDYWNoZWRTY3JpcHQq
IGNhY2hlZFNjcmlwdCwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNlVHlwZSwg
UmVmPENhY2hlZFNjcmlwdEZldGNoZXI+JiYgc2NyaXB0RmV0Y2hlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xvYWRlclN0cmF0ZWd5LmgKaW5kZXggYjM1YzZmYjBlMjg2NGQ1ZjhlZmM0YjgwZmFjN2Ez
ZmYwNDExMTkzZS4uMmViZjBhZjFiM2EyMjM0ZDIwZGY4MjdhNDY2NTIxYTM3OTZkZTkzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CitjbGFzcyBDYWNoZWRT
Y3JpcHQ7CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7CiBjbGFzcyBGcmFtZTsKIGNsYXNz
IEZyYW1lTG9hZGVyOwpAQCAtNzMsNiArNzQsOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUHJlY29u
bmVjdENvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNl
RXJyb3ImKT47CiAgICAgdmlydHVhbCB2b2lkIHByZWNvbm5lY3RUbyhGcmFtZUxvYWRlciYsIGNv
bnN0IFVSTCYsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlvbkhh
bmRsZXImJikgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIGNhY2hlQnl0ZWNvZGVGb3JTY3JpcHQo
Y29uc3QgQ2FjaGVkU2NyaXB0JikgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIHNldENhcHR1cmVF
eHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoYm9vbCkgPSAwOwogCiAgICAgdmlydHVhbCBi
b29sIGlzT25MaW5lKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAKaW5kZXggNmMyYjEzMWNiOWE4ZDI2MzQ3YTBhN2M4ZTU5ODU0MTllMzZjNTkzMy4u
NDk5ZmJjNTI4YzA3MTI2NmEzM2RhNGU1MTRhYzc1ZmNkMjA0NTVkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04MTYsNCArODE2LDggQEAgYm9vbCBSZXNv
dXJjZUxvYWRlcjo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKICAgICByZXR1cm4g
ZnJhbWVMb2FkZXIoKSAmJiBmcmFtZUxvYWRlcigpLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQo
KTsKIH0KIAordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21D
YWNoZShjb25zdCBTdHJpbmcmLCBTaGFyZWRCdWZmZXImKQoreworfQorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRjMzNhNTA2OTJhMzg1MzE1MjNhYmJiMzk4
ZWJmYTJmMGY2N2U4YmMuLmM0ZDc5MjdiNjZiYjQ3YzA3NWEzYmExZDc1MDViMWRlN2U5YjI1MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0xMDUsNiArMTA1LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJldHJpZXZlRGVyaXZlZERhdGFGcm9tQ2FjaGUoY29uc3QgU3Ry
aW5nJiB0eXBlLCBTaGFyZWRCdWZmZXImKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlk
QmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgKaW5kZXggOWUzMDc0ZGEzMjExZDBlZTk3YjhlYjJl
ZGY0OTE2OWVjNWRmMmE0YS4uOWEzMDYwYzg0ZjAwNGEzOWJmMGU5Yjc3MjdiNzhkNjNkNjBkZWY5
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9u
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaApA
QCAtMTUyLDYgKzE1Miw3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMgOiBwdWJsaWMg
RmV0Y2hPcHRpb25zIHsKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllcj4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CiAjZW5kaWYKICAg
ICBIYXNoU2V0PEhUVFBIZWFkZXJOYW1lLCBXVEY6OkludEhhc2g8SFRUUEhlYWRlck5hbWU+LCBX
VEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPEhUVFBIZWFkZXJOYW1lPj4gaHR0cEhlYWRlcnNUb0tl
ZXA7CisgICAgVmVjdG9yPFN0cmluZz4gZGVyaXZlZENhY2hlZERhdGFUeXBlc1RvUmV0cmlldmU7
CiAgICAgT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBjc3BS
ZXNwb25zZUhlYWRlcnM7CiAgICAgdW5zaWduZWQgbWF4UmVkaXJlY3RDb3VudCB7IDIwIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDQ4M2Vj
ZDNjMTNkNjFlNjlhMzU4ZWI4MWNjYTZlMzY0Y2M0NTIwMDkuLjUwYjM0ZmQwMGI5MGRjY2QwMjkx
ZTg0NDgyODVkMzEwYmE1NDJmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcApAQCAtNzUxLDYgKzc1MSwxMyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVy
OjpkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpCiAgICAgbm90aWZ5RG9uZShMb2FkQ29t
cGxldGlvblR5cGU6OkNhbmNlbCk7CiB9CiAKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJl
dHJpZXZlRGVyaXZlZERhdGFGcm9tQ2FjaGUoY29uc3QgU3RyaW5nJiB0eXBlLCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK3sKKyAgICBpZiAobV9zdGF0ZSAhPSBJbml0aWFsaXplZCkKKyAgICAgICAg
cmV0dXJuOworICAgIG1fcmVzb3VyY2UtPmRpZFJldHJpZXZlRGVyaXZlZERhdGFGcm9tQ2FjaGUo
dHlwZSwgYnVmZmVyKTsKK30KKwogdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6bm90aWZ5RG9uZShM
b2FkQ29tcGxldGlvblR5cGUgdHlwZSkKIHsKICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKaW5kZXggNzFmZTM5
MjA3ZWNjYjdmZTJhYTYyNDc2NzkwMzMxYTc5ZjU4ODg1MS4uMmY2ODU3Mjk0ZmNiOTJlYTg2OTBi
YzY2NDc2NWNkNDdhZTA0ZDJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmgKQEAgLTc5LDYgKzc5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZhaWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbENhbmNlbChjb25zdCBS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21D
YWNoZShjb25zdCBTdHJpbmcmIHR5cGUsIFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIAog
ICAgIHZvaWQgdXBkYXRlUmVmZXJyZXJQb2xpY3koY29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCAyYjdiZjQyOWRkNjIyZmM3
MjdlMTAxMzAyZWZmZWVkZDVlNGMzODQ3Li5kNTNiNGFkMzliYjVjNWUzODIyOTA2ZjViOTlhMTU5
OTE5Mzk2OTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3Bw
CkBAIC04OSw2ICs4OSw5IEBAIFRocmVhZGFibGVMb2FkZXJPcHRpb25zIFRocmVhZGFibGVMb2Fk
ZXJPcHRpb25zOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIGNvcHkuaW5pdGlhdG9yQ29udGV4
dCA9IHRoaXMtPmluaXRpYXRvckNvbnRleHQ7CiAgICAgY29weS5jbGllbnRDcmVkZW50aWFsUG9s
aWN5ID0gdGhpcy0+Y2xpZW50Q3JlZGVudGlhbFBvbGljeTsKICAgICBjb3B5Lm1heFJlZGlyZWN0
Q291bnQgPSB0aGlzLT5tYXhSZWRpcmVjdENvdW50OworICAgIGNvcHkuZGVyaXZlZENhY2hlZERh
dGFUeXBlc1RvUmV0cmlldmUucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0aGlzLT5kZXJpdmVkQ2Fj
aGVkRGF0YVR5cGVzVG9SZXRyaWV2ZS5zaXplKCkpOworICAgIGZvciAoYXV0byYgZGVyaXZlZENh
Y2hlZERhdGFUeXBlIDogdGhpcy0+ZGVyaXZlZENhY2hlZERhdGFUeXBlc1RvUmV0cmlldmUpCisg
ICAgICAgIGNvcHkuZGVyaXZlZENhY2hlZERhdGFUeXBlc1RvUmV0cmlldmUudW5jaGVja2VkQXBw
ZW5kKGRlcml2ZWRDYWNoZWREYXRhVHlwZS5pc29sYXRlZENvcHkoKSk7CiAgICAgY29weS5wcmVm
bGlnaHRQb2xpY3kgPSB0aGlzLT5wcmVmbGlnaHRQb2xpY3k7CiAKICAgICAvLyBUaHJlYWRhYmxl
TG9hZGVyT3B0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAKaW5kZXggMDI1ZTU1NTI3MmUwZWM0OGQ2YjRmZWUxZWFiYTZiMTBhMjVlY2IzOS4u
Yzg0ZTQ1NDI5YzBmYzkyMzExZDhjZjc4NWRkYzI1Y2UzNDk0NjQ3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zMTMsNiArMzEzLDEz
IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hl
ZFJlc291cmNlTG9hZGVyKQogICAgICAgICAgICAgZmFpbEJlZm9yZVN0YXJ0aW5nKCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKworICAgICAgICBhdXRvKiBmcmFtZUxvYWRlciA9
IG1fbG9hZGVyLT5mcmFtZUxvYWRlcigpOworICAgICAgICBhdXRvKiBmcmFtZUxvYWRlckNsaWVu
dCA9IGZyYW1lTG9hZGVyID8gJmZyYW1lTG9hZGVyLT5jbGllbnQoKSA6IG51bGxwdHI7CisgICAg
ICAgIGlmIChmcmFtZUxvYWRlckNsaWVudCkgeworICAgICAgICAgICAgbV93ZWJQYWdlSUQgPSBm
cmFtZUxvYWRlckNsaWVudC0+cGFnZUlEKCkudmFsdWVPcigwKTsKKyAgICAgICAgICAgIG1fd2Vi
RnJhbWVJRCA9IGZyYW1lTG9hZGVyQ2xpZW50LT5mcmFtZUlEKCkudmFsdWVPcigwKTsKKyAgICAg
ICAgfQogICAgICAgICBtX3N0YXR1cyA9IFBlbmRpbmc7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGM4Zjc4ODA1YTg0OTMz
YzkzNmVkN2IyZTM3ZjFkOTU0YmUwOTVhMmIuLmFhMjdhMTU2MWJhOWYwYjVkNjZiYTMxNDg1MzIy
ODAyMjFiOTA2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oCkBAIC0xNjIsNyArMTYyLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TG9hZGluZyhi
b29sIGIpIHsgbV9sb2FkaW5nID0gYjsgfQogICAgIHZpcnR1YWwgYm9vbCBzdGlsbE5lZWRzTG9h
ZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBTdWJyZXNvdXJjZUxvYWRlciogbG9h
ZGVyKCkgeyByZXR1cm4gbV9sb2FkZXIuZ2V0KCk7IH0KKyAgICBTdWJyZXNvdXJjZUxvYWRlciog
bG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkZXIuZ2V0KCk7IH0KKyAgICB1aW50NjRfdCB3
ZWJQYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3dlYlBhZ2VJRDsgfQorICAgIHVpbnQ2NF90IHdl
YkZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX3dlYkZyYW1lSUQ7IH0KIAogICAgIGJvb2wgYXJl
QWxsQ2xpZW50c1hNTEh0dHBSZXF1ZXN0cygpIGNvbnN0OwogCkBAIC0yNjksNiArMjcxLDggQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9u
ZyAvKiBieXRlc1NlbnQgKi8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNl
bnQgKi8pIHsgfQogCisgICAgdmlydHVhbCB2b2lkIGRpZFJldHJpZXZlRGVyaXZlZERhdGFGcm9t
Q2FjaGUoY29uc3QgU3RyaW5nJiAvKiB0eXBlICovLCBTaGFyZWRCdWZmZXImKSB7IH0KKwogI2lm
IFVTRShGT1VOREFUSU9OKSB8fCBVU0UoU09VUCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRy
eVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKICNlbmRpZgpAQCAtMzc0LDYgKzM3
OCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc1Vua25vd25FbmNvZGluZyB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX3N3aXRjaGluZ0NsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9pZ25vcmVGb3JSZXF1ZXN0Q291bnQgeyBmYWxzZSB9OworICAgIHVp
bnQ2NF90IG1fd2ViUGFnZUlEIHsgMCB9OworICAgIHVpbnQ2NF90IG1fd2ViRnJhbWVJRCB7IDAg
fTsKIAogI2lmbmRlZiBOREVCVUcKICAgICBib29sIG1fZGVsZXRlZCB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IDFiYmQ0NDQ2
OTIwN2MyNDY2MjIyZGQyMzVmYTIzZjliMjJmZGRhNjcuLjAyZWQ5YjQ1M2EwNWY1ODA3YzUxMjA1
MTJjMjNhYmI5NmNhYzIzMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTY3JpcHQuY3BwCkBAIC04OSw2ICs4OSwxMSBAQCBTdHJpbmdWaWV3IENhY2hlZFNjcmlwdDo6
c2NyaXB0KCkKICAgICByZXR1cm4gbV9zY3JpcHQ7CiB9CiAKK2NvbnN0IEpTQzo6Q2FjaGVkQnl0
ZWNvZGUmIENhY2hlZFNjcmlwdDo6Y2FjaGVkQnl0ZWNvZGUoKQoreworICAgIHJldHVybiBtX2Nh
Y2hlZEJ5dGVjb2RlOworfQorCiB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQog
ewogICAgIGlmIChtX2RlY29kaW5nU3RhdGUgPT0gTmV2ZXJEZWNvZGVkKQpAQCAtMTAzLDYgKzEw
OCwxNyBAQCB2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRh
dGEpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSk7CiB9CiAKK3ZvaWQg
Q2FjaGVkU2NyaXB0OjpkaWRSZXRyaWV2ZURlcml2ZWREYXRhRnJvbUNhY2hlKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit7CisgICAgQVNTRVJUKHR5cGUgPT0gImJ5
dGVjb2RlLWNhY2hlIik7CisgICAgc2l6ZV90IHNpemUgPSBidWZmZXIuc2l6ZSgpOworICAgIE1h
bGxvY1B0cjx1aW50OF90PiBtZW1vcnkgPSBNYWxsb2NQdHI8dWludDhfdD46Om1hbGxvYyhzaXpl
KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0IDogYnVmZmVyKQorICAgICAgICBtZW1jcHkobWVt
b3J5LmdldCgpICsgaXQuYmVnaW5Qb3NpdGlvbiwgaXQuc2VnbWVudC0+ZGF0YSgpLCBpdC5zZWdt
ZW50LT5zaXplKCkpOworICAgIG1fY2FjaGVkQnl0ZWNvZGUgPSBKU0M6OkNhY2hlZEJ5dGVjb2Rl
IHsgV1RGTW92ZShtZW1vcnkpLCBzaXplIH07CisgICAgQ2FjaGVkUmVzb3VyY2U6OmRpZFJldHJp
ZXZlRGVyaXZlZERhdGFGcm9tQ2FjaGUodHlwZSwgYnVmZmVyKTsKK30KKwogdm9pZCBDYWNoZWRT
Y3JpcHQ6OmRlc3Ryb3lEZWNvZGVkRGF0YSgpCiB7CiAgICAgbV9zY3JpcHQgPSBTdHJpbmcoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCBkZDZmYmNj
MzY4NzgxMWRmMDZlYzFjZTI4NDMxZjM4OGEzZDYwMDNjLi43OTM0ZGRjZTkzNjY5MzMzYTNlYWUy
ZWJhNTllZmY1NTVmZjZlMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNh
Y2hlZFJlc291cmNlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU291cmNlUHJvdmlkZXIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNyw2ICszOCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5DYWNoZWRTY3JpcHQoKTsKIAogICAgIFN0cmluZ1ZpZXcgc2NyaXB0KCk7Cisg
ICAgY29uc3QgSlNDOjpDYWNoZWRCeXRlY29kZSYgY2FjaGVkQnl0ZWNvZGUoKTsKICAgICB1bnNp
Z25lZCBzY3JpcHRIYXNoKCk7CiAKIHByaXZhdGU6CkBAIC00OCwxMiArNTAsMTQgQEAgcHJpdmF0
ZToKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVz
b3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9kZWNvZGVyLmdldCgpOyB9CiAgICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciop
IGZpbmFsOworICAgIHZvaWQgZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZShjb25zdCBT
dHJpbmcmLCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKIAogICAgIHZvaWQgZGVzdHJveURlY29kZWRE
YXRhKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNv
dXJjZSYpIGZpbmFsOwogCiAgICAgU3RyaW5nIG1fc2NyaXB0OworICAgIEpTQzo6Q2FjaGVkQnl0
ZWNvZGUgbV9jYWNoZWRCeXRlY29kZTsKICAgICB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07
CiAKICAgICBlbnVtIERlY29kaW5nU3RhdGUgeyBOZXZlckRlY29kZWQsIERhdGFBbmREZWNvZGVk
U3RyaW5nSGF2ZVNhbWVCeXRlcywgRGF0YUFuZERlY29kZWRTdHJpbmdIYXZlRGlmZmVyZW50Qnl0
ZXMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYjk4MjhkYzQzMWE0NWUyOWVm
ODkyNWQ3NzlhMzc4NGE0YzJmNzFhNC4uN2I5N2JiOWJiODg1ZWM3N2M3NmI1YzM5NDIwMTkwZjk0
ZTMyYWQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTU2OCw2ICs1NjgsMTIg
QEAgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmJsb2JSZWdpc3RyeSgpCiAgICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtC
bG9iUmVnaXN0cnkoKS5ibG9iUmVnaXN0cnkoKTsKIH0KIAordm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y2FjaGVCeXRlY29kZUZvclJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1aW50NjRfdCB3ZWJQYWdlSUQsIHVpbnQ2NF90IHdlYkZy
YW1lSUQpCit7CisgICAgaWYgKGF1dG8qIGJ5dGVjb2RlQ2FjaGUgPSBtX25ldHdvcmtQcm9jZXNz
LT5ieXRlY29kZUNhY2hlKCkpCisgICAgICAgIGJ5dGVjb2RlQ2FjaGUtPmNhY2hlQnl0ZWNvZGVG
b3JSZXF1ZXN0KHJlcXVlc3QsIHdlYlBhZ2VJRCwgd2ViRnJhbWVJRCk7Cit9CisKIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogICAgIG1fY2FwdHVyZUV4dHJhTmV0d29ya0xv
YWRNZXRyaWNzRW5hYmxlZCA9IGVuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXgg
YTNjYWU4ODA4YzU1MzYwNTg4ODM2MmE3ZTcyY2NjNjk4MTYwYzM0My4uNjRiNDZkNGQ2YTE0OTFi
NjcwMmIwYTk2Y2U1ZDk0OTMyODk0MzJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAt
MTcwLDYgKzE3MCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25z
dCBVUkwmKTsKICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmKT4mJik7CiAKKyAgICB2b2lkIGNhY2hlQnl0ZWNvZGVGb3JSZXF1ZXN0KGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2NF90LCB1aW50NjRfdCk7CisKICAgICB2b2lkIHNl
dENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoYm9vbCk7CiAKICAgICB2b2lk
IGNyZWF0ZVNvY2tldFN0cmVhbShVUkwmJiwgUEFMOjpTZXNzaW9uSUQsIFN0cmluZyBjYWNoZVBh
cnRpdGlvbiwgdWludDY0X3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggNjdhZmFiYjYyMDVlNGQzZGM5MTQ2ZTRlMTQxNzk5NjlmMGRmNTIzZi4uMzYx
NjNlOTlmOWE4NmUyOTFhNmQwYjU2YWMwZGU0NTI3ODY3MDdiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC01MCw2ICs1MCw4IEBAIG1lc3NhZ2VzIC0+
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBCbG9i
U2l6ZShVUkwgdXJsKSAtPiAodWludDY0X3QgcmVzdWx0U2l6ZSkgTGVnYWN5U3luYwogICAgIFdy
aXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxzKSAtPiAoVmVj
dG9yPFN0cmluZz4gZmlsZU5hbWVzKSBBc3luYwogCisgICAgQ2FjaGVCeXRlY29kZUZvclJlcXVl
c3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHVpbnQ2NF90IHdlYlBhZ2VJRCwg
dWludDY0X3Qgd2ViRnJhbWVJRCkKKwogICAgIFNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogCiAgICAgQ3JlYXRlU29ja2V0U3RyZWFtKFVSTCB1
cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIGNhY2hlUGFydGl0aW9uLCB1aW50
NjRfdCBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCmluZGV4IGQzNjllOGFkYThmMDljZWIxYzliMjc1NjNkNTdkNDgwNjQxZWQ2ODEu
LjhjMmRmZGNjYzRlMzM3M2IwMjg0N2FkMzA4OGEwOTJhMGViZTQ2NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzcy5oIgorI2luY2x1ZGUg
IkJ5dGVjb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJDYWNoZU1vZGVsLmgiCiAjaW5jbHVkZSAiRG93
bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Jsb2JSZWdpc3RyeS5oIgpAQCAtMTM0
LDYgKzEzNSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgTmV0d29ya0NhY2hlOjpDYWNoZSog
Y2FjaGUoKSB7IHJldHVybiBtX2NhY2hlLmdldCgpOyB9CisgICAgQnl0ZWNvZGVDYWNoZSogYnl0
ZWNvZGVDYWNoZSgpIHsgcmV0dXJuIG1fYnl0ZWNvZGVDYWNoZS5nZXQoKTsgfQogCiAgICAgdm9p
ZCBzZXRTZXNzaW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgUmVmPE5ldHdvcmtTZXNzaW9uPiYm
KTsKICAgICBOZXR3b3JrU2Vzc2lvbiogbmV0d29ya1Nlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9u
SUQmKSBjb25zdCBvdmVycmlkZTsKQEAgLTQzOSw2ICs0NDEsNyBAQCBwcml2YXRlOgogICAgIEhh
c2hNYXA8UEFMOjpTZXNzaW9uSUQsIFJlZjxDYWNoZVN0b3JhZ2U6OkVuZ2luZT4+IG1fY2FjaGVF
bmdpbmVzOwogCiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7CisgICAg
UmVmUHRyPEJ5dGVjb2RlQ2FjaGU+IG1fYnl0ZWNvZGVDYWNoZTsKIAogICAgIHR5cGVkZWYgSGFz
aE1hcDxjb25zdCBjaGFyKiwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVu
dD4sIFB0ckhhc2g8Y29uc3QgY2hhcio+PiBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnRNYXA7CiAg
ICAgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50TWFwIG1fc3VwcGxlbWVudHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuY3BwCmluZGV4IGNmZTU4ZTFjZTlmN2IyZTIzZmU4N2VjNzBhYWU2YjNiNDlj
OWM1OGYuLjkxNGU2YTZmOTAzMzk4ZmQzYTExMzYxMjY3ZTRkMjgzZjZmZGU4YTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC04MCw2ICs4MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAg
ICAgZW5jb2RlciA8PCBuZWVkc0NlcnRpZmljYXRlSW5mbzsKICAgICBlbmNvZGVyIDw8IGlzTWFp
bkZyYW1lTmF2aWdhdGlvbjsKICAgICBlbmNvZGVyIDw8IG1heGltdW1CdWZmZXJpbmdUaW1lOwor
ICAgIGVuY29kZXIgPDwgZGVyaXZlZENhY2hlZERhdGFUeXBlc1RvUmV0cmlldmU7CiAKICAgICBl
bmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KHNvdXJjZU9yaWdpbik7CiAgICAgaWYgKHNvdXJj
ZU9yaWdpbikKQEAgLTE3MSw2ICsxNzIsOCBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrUmVzb3VyYwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubWF4aW11
bUJ1ZmZlcmluZ1RpbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuZGVyaXZlZENhY2hlZERhdGFUeXBlc1RvUmV0cmlldmUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBib29sIGhhc1NvdXJjZU9yaWdpbjsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGhhc1NvdXJjZU9yaWdpbikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKaW5k
ZXggYjA1ZmY4MDNmMTcxOTBhZGUzMTljZGEwNjNkYTAzMTQwNmU0ZjM3Ni4uZWI3YTE0N2E5ODlh
NWJiMzBjMDRhZDUzN2U3NDA2YzA2MzJhOWRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaApA
QCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5z
aW9uPj4gcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uczsgLy8gQ3JlYXRlZCBhdXRvbWF0aWNh
bGx5IGZvciB0aGUgc2VuZGVyLgogICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiByZXNvdXJj
ZVNhbmRib3hFeHRlbnNpb247IC8vIENyZWF0ZWQgYXV0b21hdGljYWxseSBmb3IgdGhlIHNlbmRl
ci4KICAgICBTZWNvbmRzIG1heGltdW1CdWZmZXJpbmdUaW1lOworICAgIFZlY3RvcjxTdHJpbmc+
IGRlcml2ZWRDYWNoZWREYXRhVHlwZXNUb1JldHJpZXZlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbj4gc291cmNlT3JpZ2luOwogICAgIFdlYkNvcmU6OkZldGNoT3B0aW9ucyBv
cHRpb25zOwogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycz4gY3NwUmVzcG9uc2VIZWFkZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDQ4Y2JkZGFh
NDgwZjExZjJjMGI1MmM2Y2NhZTg5ODA3ZTI1NGRlOTEuLmM1ZjZlMDg0NjYyM2VlMTUyYmE2ZjBj
YTVkYzBkZmI3NTk0Mjg5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKIAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKKyNpbmNsdWRlICJEZXJpdmVkRGF0YS5oIgogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZS5oIgpAQCAt
NDkzLDcgKzQ5NCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgLy8gV2Ugd2FpdCB0
byByZWNlaXZlIG1lc3NhZ2UgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZSBiZWZvcmUgY29udGludWluZyBhIGxvYWQgZm9yCiAgICAgLy8gYSBtYWluIHJl
c291cmNlIGJlY2F1c2UgdGhlIGVtYmVkZGluZyBjbGllbnQgbXVzdCBkZWNpZGUgd2hldGhlciB0
byBhbGxvdyB0aGUgbG9hZC4KICAgICBib29sIHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2UgPSBpc01haW5SZXNvdXJjZSgpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgd2lsbFdhaXRGb3JDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZSB9KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJj
ZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIHdpbGxXYWl0Rm9yQ29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2UsIHsgfSB9KTsKICAgICBpZiAod2lsbFdhaXRGb3JDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZSkKICAgICAgICAgbV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgZWxzZQpAQCAtODI0LDE2ICs4MjUs
NDIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJldHJpZXZlQ2FjaGVFbnRyeShz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjoKICAgICB9CiAKICAgICBib29sIG5lZWRzQ29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlID0gaXNNYWluUmVzb3VyY2UoKTsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVz
cG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0pOwogCi0gICAg
aWYgKG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQotICAgICAgICBtX2Nh
Y2hlRW50cnlXYWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgPSBXVEZNb3ZlKGVu
dHJ5KTsKKyAgICBpZiAoIW5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQor
ICAgICAgICBwcm9jZXNzQ2FjaGVkRW50cnlBZnRlckRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3Zl
KGVudHJ5KSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5KFdU
Rk1vdmUoZW50cnkpKTsKLSAgICAgICAgY2xlYW51cChMb2FkUmVzdWx0OjpTdWNjZXNzKTsKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25z
ZSB7IHJlc3BvbnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSwgeyB9
IH0pOworICAgICAgICBtX2NhY2hlRW50cnlXYWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2UgPSBXVEZNb3ZlKGVudHJ5KTsKICAgICB9CiB9CiAKK3ZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpwcm9jZXNzQ2FjaGVkRW50cnlBZnRlckRpZFJlY2VpdmVSZXNwb25zZShzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gZW50cnkpCit7CisgICAgaWYgKGVudHJ5LT5z
b3VyY2VTdG9yYWdlUmVjb3JkKCkuYm9keUhhc2ggJiYgIW1fcGFyYW1ldGVycy5kZXJpdmVkQ2Fj
aGVkRGF0YVR5cGVzVG9SZXRyaWV2ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBib2R5SGFz
aCA9ICplbnRyeS0+c291cmNlU3RvcmFnZVJlY29yZCgpLmJvZHlIYXNoOworCisgICAgICAgIFJl
ZjxJUEM6OkRlcml2ZWREYXRhQ29udGFpbmVyPiBkZXJpdmVkRGF0YSA9IElQQzo6RGVyaXZlZERh
dGFDb250YWluZXI6OmNyZWF0ZShbbG9hZGVyID0gbWFrZVJlZigqdGhpcyksIGVudHJ5ID0gV1RG
TW92ZShlbnRyeSldKGNvbnN0IFZlY3RvcjxJUEM6OkRlcml2ZWREYXRhPiYmIGRlcml2ZWREYXRh
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGxvYWRlci0+c2VuZChNZXNzYWdlczo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IGVudHJ5LT5yZXNwb25zZSgpLCBmYWxzZSwg
ZGVyaXZlZERhdGF9KTsKKyAgICAgICAgICAgIGxvYWRlci0+c2VuZFJlc3VsdEZvckNhY2hlRW50
cnkoV1RGTW92ZShlbnRyeSkpOworICAgICAgICAgICAgbG9hZGVyLT5jbGVhbnVwKExvYWRSZXN1
bHQ6OlN1Y2Nlc3MpOworICAgICAgICB9KTsKKworICAgICAgICBmb3IgKGF1dG8gdHlwZSA6IG1f
cGFyYW1ldGVycy5kZXJpdmVkQ2FjaGVkRGF0YVR5cGVzVG9SZXRyaWV2ZSkgeworICAgICAgICAg
ICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2VzcykgUmV0cmlldmluZyBkZXJpdmVk
IGRhdGEgb2YgdHlwZSBcIiVzXCIgZm9yIFwiJXNcIiIsIHR5cGUuYXNjaWkoKS5kYXRhKCksIG9y
aWdpbmFsUmVxdWVzdCgpLnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIE5ldHdvcmtDYWNoZTo6RGF0YUtleSBrZXkgeyBvcmlnaW5hbFJlcXVlc3QoKS5jYWNoZVBh
cnRpdGlvbigpLCB0eXBlLCBib2R5SGFzaCB9OworICAgICAgICAgICAgbV9jYWNoZS0+cmV0cmll
dmVEYXRhKGtleSwgW2xvYWRlciA9IG1ha2VSZWYoKnRoaXMpLCBkZXJpdmVkRGF0YSA9IGRlcml2
ZWREYXRhLmNvcHlSZWYoKSwgdHlwZV0gKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXpl
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAoZGF0YSkKKyAgICAgICAgICAgICAgICAg
ICAgZGVyaXZlZERhdGEtPmFwcGVuZChJUEM6OkRlcml2ZWREYXRhIHsgdHlwZSwgSVBDOjpEYXRh
UmVmZXJlbmNlIHsgZGF0YSwgc2l6ZSB9IH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyBlbnRyeS0+cmVzcG9uc2UoKSwgZmFsc2UsIHsg
fSB9KTsKKyAgICBzZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeShXVEZNb3ZlKGVudHJ5KSk7CisgICAg
Y2xlYW51cChMb2FkUmVzdWx0OjpTdWNjZXNzKTsKK30KKwogdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2Fj
aGU6OkVudHJ5PiBlbnRyeSkKIHsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgKaW5kZXggZTdjY2I4MWZiNGY5YWE0YjY2NTk0MTI3OWRkMmRlOTc2Yzc3OWViNC4uNTFjZmU5
OWQyYmE0YmNkMWRhYTQ5OTM4MmZiN2Y3NDRjZjBhMTBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC00Myw2ICs0
MywxMCBAQCBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiB9CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGVyaXZlZERhdGE7Cit9CisKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKQEAg
LTEzMSw2ICsxMzUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZFJlc3VsdEZvckNhY2hlRW50
cnkoc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+KTsKICAgICB2b2lkIHZhbGlk
YXRlQ2FjaGVFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4pOwogICAg
IHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZUVudHJ5KFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4mJik7Cisg
ICAgdm9pZCBwcm9jZXNzQ2FjaGVkRW50cnlBZnRlckRpZFJlY2VpdmVSZXNwb25zZShzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4pOwogCiAgICAgYm9vbCBzaG91bGRJbnRlcnJ1
cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmKTsKICAgICBi
b29sIHNob3VsZEludGVycnVwdExvYWRGb3JDU1BGcmFtZUFuY2VzdG9yc09yWEZyYW1lT3B0aW9u
cyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0xOTUsOCArMjAwLDYgQEAg
cHJpdmF0ZToKICAgICBib29sIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgeyBm
YWxzZSB9OwogICAgIHNpemVfdCBtX251bUJ5dGVzUmVjZWl2ZWQgeyAwIH07CiAKLSAgICB1bnNp
Z25lZCBtX3JldHJpZXZlZERlcml2ZWREYXRhQ291bnQgeyAwIH07Ci0KICAgICBXZWJDb3JlOjpU
aW1lciBtX2J1ZmZlcmluZ1RpbWVyOwogICAgIFJlZlB0cjxOZXR3b3JrQ2FjaGU6OkNhY2hlPiBt
X2NhY2hlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0J5dGVjb2RlQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9C
eXRlY29kZUNhY2hlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZmE5OTkyNWY1NTQwNjM1NjVmNDUwZDJkNmZk
ZjJkOTdmYWQzMzE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9CeXRlY29kZUNhY2hlLmNwcApAQCAtMCwwICsxLDE4NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJCeXRlY29kZUNhY2hlLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5j
bHVkZSAiTmV0d29ya0NhY2hlLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9Db21wbGV0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNHbG9iYWxPYmplY3QuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1NvdXJjZUNv
ZGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9QYXJzZXJFcnJvci5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1ZNLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3Qu
aD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBCeXRlY29kZUNhY2hlOjpQbGFuIDogcHVibGljIFJlZkNvdW50ZWQ8Qnl0ZWNvZGVDYWNo
ZTo6UGxhbj4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBsYW4pOworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworCitwdWJsaWM6CisgICAgUGxhbihTSEExOjpEaWdlc3QgYm9keUhh
c2gsIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBjYWNoZVBhcnRpdGlvbikKKyAgICAgICAgOiBtX2JvZHlIYXNoKGJvZHlIYXNoKQorICAgICAg
ICAsIG1fc291cmNlKHNvdXJjZS5pc29sYXRlZENvcHkoKSkKKyAgICAgICAgLCBtX3VybCh1cmwu
aXNvbGF0ZWRDb3B5KCkpCisgICAgICAgICwgbV9jYWNoZVBhcnRpdGlvbihjYWNoZVBhcnRpdGlv
bi5pc29sYXRlZENvcHkoKSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlKE5ldHdv
cmtDYWNoZTo6Q2FjaGUqIGNhY2hlLCBKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIExPRyhC
eXRlY29kZUNhY2hlLCAiW0J5dGVjb2RlQ2FjaGVdW1BsYW5dIFByb2Nlc3Npbmc6ICVzIiwgbV91
cmwuYXNjaWkoKS5kYXRhKCkpOworCisgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih2
bSk7CisgICAgICAgIEpTQzo6U291cmNlQ29kZSBzb3VyY2VDb2RlID0gSlNDOjptYWtlU291cmNl
KG1fc291cmNlLCBKU0M6OlNvdXJjZU9yaWdpbiB7IG1fdXJsIH0pOworICAgICAgICBKU0M6OlBh
cnNlckVycm9yIGVycm9yOworICAgICAgICBKU0M6OkNhY2hlZEJ5dGVjb2RlIGNhY2hlZEJ5dGVj
b2RlID0gSlNDOjpnZW5lcmF0ZUJ5dGVjb2RlKHZtLCBzb3VyY2VDb2RlLCBlcnJvcik7CisgICAg
ICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIExPRyhCeXRlY29kZUNhY2hl
LCAiW0J5dGVjb2RlQ2FjaGVdW1BsYW5dIEFib3J0ZWQ6IGVycm9yIHdoZW4gZ2VuZXJhdGluZyBi
eXRlY29kZSIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbcGxhbiA9IG1ha2VSZWYoKnRoaXMpLCBjYWNoZSwgY2FjaGVk
Qnl0ZWNvZGUgPSBXVEZNb3ZlKGNhY2hlZEJ5dGVjb2RlKV0oKSB7CisgICAgICAgICAgICBOZXR3
b3JrQ2FjaGU6OkRhdGFLZXkgZGF0YUtleSB7IHBsYW4tPm1fY2FjaGVQYXJ0aXRpb24sICJieXRl
Y29kZS1jYWNoZSIsIHBsYW4tPm1fYm9keUhhc2ggfTsKKyAgICAgICAgICAgIGNhY2hlLT5zdG9y
ZURhdGEoZGF0YUtleSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oY2FjaGVkQnl0
ZWNvZGUuZGF0YSgpKSwgY2FjaGVkQnl0ZWNvZGUuc2l6ZSgpKTsKKyAgICAgICAgICAgIExPRyhC
eXRlY29kZUNhY2hlLCAiW0J5dGVjb2RlQ2FjaGVdW1BsYW5dIFN0b3JlZDogJXMgKCVsZCBieXRl
cykiLCBwbGFuLT5tX3VybC5hc2NpaSgpLmRhdGEoKSwgY2FjaGVkQnl0ZWNvZGUuc2l6ZSgpKTsK
KyAgICAgICAgfSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFNIQTE6OkRpZ2VzdCBtX2JvZHlI
YXNoOworICAgIFN0cmluZyBtX3NvdXJjZTsKKyAgICBTdHJpbmcgbV91cmw7CisgICAgU3RyaW5n
IG1fY2FjaGVQYXJ0aXRpb247Cit9OworCitjbGFzcyBCeXRlY29kZUNhY2hlOjpUaHJlYWQgOiBw
dWJsaWMgQXV0b21hdGljVGhyZWFkIHsKK3B1YmxpYzoKKyAgICBUaHJlYWQoY29uc3QgQWJzdHJh
Y3RMb2NrZXImIGxvY2tlciwgQnl0ZWNvZGVDYWNoZSYgY2FjaGUpCisgICAgICAgIDogQXV0b21h
dGljVGhyZWFkKGxvY2tlciwgY2FjaGUubV9sb2NrLCBjYWNoZS5tX2NvbmRpdGlvbi5jb3B5UmVm
KCkpCisgICAgICAgICwgbV9jYWNoZShjYWNoZSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3Qg
Y2hhciogbmFtZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gIkJ5dGVj
b2RlQ2FjaGUgSGVscGVyIFRocmVhZCI7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgUG9sbFJl
c3VsdCBwb2xsKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IGlmIChtX2NhY2hlLm1fcXVldWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIFBvbGxS
ZXN1bHQ6OldhaXQ7CisKKyAgICAgICAgbV9wbGFucyA9IFdURk1vdmUobV9jYWNoZS5tX3F1ZXVl
KTsKKyAgICAgICAgcmV0dXJuIFBvbGxSZXN1bHQ6Oldvcms7CisgICAgfQorCisgICAgV29ya1Jl
c3VsdCB3b3JrKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Bs
YW5zLmlzRW1wdHkoKSk7CisgICAgICAgIE5ldHdvcmtDYWNoZTo6Q2FjaGUqIGNhY2hlID0gbV9j
YWNoZS5tX25ldHdvcmtQcm9jZXNzLmNhY2hlKCk7CisgICAgICAgIGlmICghY2FjaGUpCisgICAg
ICAgICAgICByZXR1cm4gV29ya1Jlc3VsdDo6U3RvcDsKKworICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIHBsYW4gOiBtX3BsYW5zKQorICAgICAgICAgICAgcGxhbi0+Y29tcGlsZShjYWNoZSwgKm1f
dm0pOworICAgICAgICBtX3BsYW5zLmNsZWFyKCk7CisgICAgICAgIHJldHVybiBXb3JrUmVzdWx0
OjpDb250aW51ZTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHRocmVhZERpZFN0YXJ0
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIExPRyhCeXRlY29kZUNhY2hlLCAiW0J5dGVjb2Rl
Q2FjaGVdW1RocmVhZF0gU3RhcnRlZCIpOworICAgICAgICBtX3ZtID0gSlNDOjpWTTo6Y3JlYXRl
KCk7CisgICAgICAgIFdURjo6VGhyZWFkOjpjdXJyZW50KCkuY2hhbmdlUHJpb3JpdHkoLTEwKTsK
KyAgICB9CisKKyAgICB2b2lkIHRocmVhZElzU3RvcHBpbmcoY29uc3QgQWJzdHJhY3RMb2NrZXIm
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKCptX3Zt
KTsKKyAgICAgICAgbV92bSA9IG51bGxwdHI7CisgICAgICAgIExPRyhCeXRlY29kZUNhY2hlLCAi
W0J5dGVjb2RlQ2FjaGVdW1RocmVhZF0gU3RvcHBlZCIpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBCeXRlY29kZUNhY2hlJiBtX2NhY2hlOworICAgIFBsYW5zIG1fcGxhbnM7CisgICAgUmVmUHRy
PEpTQzo6Vk0+IG1fdm07Cit9OworCitCeXRlY29kZUNhY2hlOjpCeXRlY29kZUNhY2hlKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcykKKyAgICA6IG1fbmV0d29ya1Byb2Nlc3MobmV0d29y
a1Byb2Nlc3MpCisgICAgLCBtX2xvY2soQm94PExvY2s+OjpjcmVhdGUoKSkKKyAgICAsIG1fY29u
ZGl0aW9uKEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6Y3JlYXRlKCkpCit7CisgICAgTG9ja0hv
bGRlciBsb2NrZXIoKm1fbG9jayk7CisgICAgbV90aHJlYWQgPSBhZG9wdFJlZihuZXcgVGhyZWFk
KGxvY2tlciwgKnRoaXMpKTsKK30KKworQnl0ZWNvZGVDYWNoZTo6fkJ5dGVjb2RlQ2FjaGUoKQor
eworfQorCit2b2lkIEJ5dGVjb2RlQ2FjaGU6OmNhY2hlQnl0ZWNvZGVGb3JSZXF1ZXN0KGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgdWludDY0X3Qgd2ViUGFnZUlELCB1
aW50NjRfdCB3ZWJGcmFtZUlEKQoreworICAgIExPRyhCeXRlY29kZUNhY2hlLCAiW0J5dGVjb2Rl
Q2FjaGVdIENoZWNraW5nOiAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRh
KCkpOworCisgICAgaWYgKCFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkg
eworICAgICAgICBMT0coQnl0ZWNvZGVDYWNoZSwgIltCeXRlY29kZUNhY2hlXSBBYm9ydGVkOiBy
ZXF1ZXN0IGluIG5vdCBodHRwKHMpIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBO
ZXR3b3JrQ2FjaGU6OkNhY2hlKiBjYWNoZSA9IG1fbmV0d29ya1Byb2Nlc3MuY2FjaGUoKTsKKyAg
ICBpZiAoIWNhY2hlKSB7CisgICAgICAgIExPRyhCeXRlY29kZUNhY2hlLCAiW0J5dGVjb2RlQ2Fj
aGVdIEFib3J0ZWQ6IGNhY2hlIGlzIG5vdCBhdmFpbGFibGUiKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGNhY2hlLT5yZXRyaWV2ZShyZXF1ZXN0LCB7IHdlYlBhZ2VJRCwgIHdlYkZy
YW1lSUQgfSwgW2J5dGVjb2RlQ2FjaGUgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdCA9IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCB7IHJlcXVlc3QgfV0oYXV0byBlbnRyeSwgYXV0bykgeworICAg
ICAgICBpZiAoIWVudHJ5KSB7CisgICAgICAgICAgICBMT0coQnl0ZWNvZGVDYWNoZSwgIltCeXRl
Y29kZUNhY2hlXSBBYm9ydGVkOiB0aGUgb3JpZ2luYWwgcmVxdWVzdCB3YXMgbm90IGNhY2hlZCIp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbnN0IGF1dG8mIHJl
Y29yZCA9IGVudHJ5LT5zb3VyY2VTdG9yYWdlUmVjb3JkKCk7CisgICAgICAgIGlmICghcmVjb3Jk
LmJvZHlIYXNoKSB7CisgICAgICAgICAgICBMT0coQnl0ZWNvZGVDYWNoZSwgIltCeXRlY29kZUNh
Y2hlXSBBYm9ydGVkOiByZWNvcmQgaGFzIG5vIGJvZHlIYXNoIik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBMT0coQnl0ZWNvZGVDYWNoZSwgIltCeXRlY29kZUNh
Y2hlXSBFbnF1ZXVlZCBwbGFuIik7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCpieXRlY29k
ZUNhY2hlLT5tX2xvY2spOworICAgICAgICBTdHJpbmcgc291cmNlIHsgcmVjb3JkLmJvZHkuZGF0
YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVjb3JkLmJvZHkuc2l6ZSgpKSB9OworICAgICAg
ICBieXRlY29kZUNhY2hlLT5tX3F1ZXVlLmFwcGVuZChhZG9wdFJlZigqbmV3IFBsYW4geyAqcmVj
b3JkLmJvZHlIYXNoLCBXVEZNb3ZlKHNvdXJjZSksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIHJl
cXVlc3QuY2FjaGVQYXJ0aXRpb24oKSB9KSk7CisgICAgICAgIGJ5dGVjb2RlQ2FjaGUtPm1fY29u
ZGl0aW9uLT5ub3RpZnlBbGwobG9ja2VyKTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0J5
dGVjb2RlQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQnl0ZWNv
ZGVDYWNoZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1MjFjMDFiNzU4MjA1OGIxNzRkNDc4NWJmYzI2OGM2NjJj
OGIwYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0J5dGVjb2RlQ2FjaGUuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYv
QXV0b21hdGljVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRl
IDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworfTsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtQcm9jZXNzOworCitjbGFzcyBC
eXRlY29kZUNhY2hlIDogcHVibGljIFJlZkNvdW50ZWQ8Qnl0ZWNvZGVDYWNoZT4geworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlQ2FjaGUpOworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworCisgICAgY2xhc3MgUGxhbjsKKyAgICBjbGFzcyBUaHJlYWQ7CisgICAgdXNpbmcg
UGxhbnMgPSBWZWN0b3I8UmVmPFBsYW4+LCA4PjsKKworICAgIGZyaWVuZCBjbGFzcyBUaHJlYWQ7
CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEJ5dGVjb2RlQ2FjaGU+IGNyZWF0ZShOZXR3b3Jr
UHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBCeXRlY29kZUNhY2hlKG5ldHdvcmtQcm9jZXNzKSk7CisgICAgfQorCisgICAgfkJ5dGVj
b2RlQ2FjaGUoKTsKKworICAgIHZvaWQgY2FjaGVCeXRlY29kZUZvclJlcXVlc3QoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgdWludDY0X3QsIHVpbnQ2NF90KTsKKworcHJpdmF0ZToK
KyAgICBCeXRlY29kZUNhY2hlKE5ldHdvcmtQcm9jZXNzJik7CisKKyAgICBOZXR3b3JrUHJvY2Vz
cyYgbV9uZXR3b3JrUHJvY2VzczsKKyAgICBQbGFucyBtX3F1ZXVlOworICAgIEJveDxMb2NrPiBt
X2xvY2s7CisgICAgUmVmPEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbj4gbV9jb25kaXRpb247Cisg
ICAgUmVmUHRyPEF1dG9tYXRpY1RocmVhZD4gbV90aHJlYWQ7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5oCmluZGV4IDNlNDc4NjFmMjBmMWE3YjhjZmE2YzllNmY5ZTc0NTBhZGI2YTFjZWQu
LmQ2Y2MyMDgxZWNlNjA0NjQzNDY1MjkxOTdiMzRlMDFjNDQzNWQzZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtMTM0LDYg
KzEzNCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmV0cmlldmVEYXRhKGNvbnN0IERhdGFLZXkm
LCBGdW5jdGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPik7CiAgICAgdm9pZCBzdG9y
ZURhdGEoY29uc3QgRGF0YUtleSYsICBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOworCisg
ICAgY29uc3QgU2FsdCYgc2FsdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS0+c2FsdCgpOyB9
CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlRW50cnkoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gbWFrZVJlZGlyZWN0RW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVkaXJlY3RSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQppbmRleCBjMzA2Y2NlNDMw
NjFjNDUxOWUyNTU1YmRkNGY0OTgyNjJmM2ExNTUxLi42MjY5OTZiZjhkNDQ4ODUwMjRhNmQzY2Vh
ZjA3ZjJmYTJjYjQzMjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCkBAIC0xMjIsNiArMTIyLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2Nv
YShjb25zdCBOZXR3b3JrUHJvY2Vzc0MKICNlbmRpZgogCiAgICAgbV9jYWNoZSA9IE5ldHdvcmtD
YWNoZTo6Q2FjaGU6Om9wZW4oKnRoaXMsIG1fZGlza0NhY2hlRGlyZWN0b3J5LCBjYWNoZU9wdGlv
bnMpOworICAgIG1fYnl0ZWNvZGVDYWNoZSA9IEJ5dGVjb2RlQ2FjaGU6OmNyZWF0ZSgqdGhpcyk7
CiAgICAgaWYgKCFtX2NhY2hlKQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrQ2Fj
aGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgV2ViS2l0IG5ldHdvcmsgZGlzayBjYWNoZSIp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrUHJvY2Vzc1NvdXAuY3BwCmluZGV4IGEwZDJhZjY0MTA0M2NhMDFlYWM1NDUzOGZhZTQwZmEz
MGM2NGVmZDYuLjA0MTA3YzcyZDU2OThlNDIxZmU0OTk0NjRlMDkyNDNiMTNmMDA2MmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1Nv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJv
Y2Vzc1NvdXAuY3BwCkBAIC0xMTksNiArMTE5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxh
dGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkK
ICNlbmRpZgogCiAgICAgbV9jYWNoZSA9IE5ldHdvcmtDYWNoZTo6Q2FjaGU6Om9wZW4oKnRoaXMs
IG1fZGlza0NhY2hlRGlyZWN0b3J5LCBjYWNoZU9wdGlvbnMpOworICAgIG1fYnl0ZWNvZGVDYWNo
ZSA9IEJ5dGVjb2RlQ2FjaGU6OmNyZWF0ZSgqdGhpcyk7CiAKICAgICBzdXBwbGVtZW50PFdlYkNv
b2tpZU1hbmFnZXI+KCktPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocGFyYW1ldGVycy5jb29r
aWVBY2NlcHRQb2xpY3ksIE9wdGlvbmFsQ2FsbGJhY2tJRCgpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVyaXZlZERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRGVyaXZlZERhdGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4Yjg1NTFkMTNlMDRjYWY2
Y2FhYzNkZTllM2VhYjhkY2ZkMzM0NzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9EZXJpdmVkRGF0YS5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEZXJpdmVkRGF0YS5oIgorCisjaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAi
RW5jb2Rlci5oIgorCituYW1lc3BhY2UgSVBDIHsKKwordm9pZCBEZXJpdmVkRGF0YTo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgQXJndW1lbnRDb2RlcjxTdHJpbmc+Ojpl
bmNvZGUoZW5jb2RlciwgbV90eXBlKTsKKyAgICBlbmNvZGVyLmVuY29kZShtX2RhdGEpOworfQor
Citib29sIERlcml2ZWREYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRGVyaXZlZERhdGEm
IGRlcml2ZWREYXRhKQoreworICAgIGlmICghQXJndW1lbnRDb2RlcjxTdHJpbmc+OjpkZWNvZGUo
ZGVjb2RlciwgZGVyaXZlZERhdGEubV90eXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiBkZWNvZGVyLmRlY29kZShkZXJpdmVkRGF0YS5tX2RhdGEpOworfQorCitPcHRpb25h
bDxEZXJpdmVkRGF0YT4gRGVyaXZlZERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIERlcml2ZWREYXRhIGRlcml2ZWREYXRhOworICAgIGlmICghZGVjb2RlKGRlY29kZXIsIGRl
cml2ZWREYXRhKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4geyBk
ZXJpdmVkRGF0YSB9OworfQorCitEZXJpdmVkRGF0YUNvbnRhaW5lcjo6RGVyaXZlZERhdGFDb250
YWluZXIoRmluYWxpemVyJiYgZmluYWxpemVyKQorICAgIDogbV9maW5hbGl6ZXIoV1RGTW92ZShm
aW5hbGl6ZXIpKQoreworfQorCitEZXJpdmVkRGF0YUNvbnRhaW5lcjo6fkRlcml2ZWREYXRhQ29u
dGFpbmVyKCkKK3sKKyAgICBtX2ZpbmFsaXplcihXVEZNb3ZlKG1fZGVyaXZlZERhdGEpKTsKK30K
Kwordm9pZCBEZXJpdmVkRGF0YUNvbnRhaW5lcjo6YXBwZW5kKGNvbnN0IERlcml2ZWREYXRhJiBk
ZXJpdmVkRGF0YSkKK3sKKyAgICBtX2Rlcml2ZWREYXRhLmFwcGVuZChkZXJpdmVkRGF0YSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvRGVyaXZlZERhdGEuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Rlcml2ZWRE
YXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGI5NGFiMTRlNzhkODYzZDVjZTUxMjIxMDVkMjI5NzM0ZWViMmZh
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Rlcml2ZWRE
YXRhLmgKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgSVBDIHsKKworY2xhc3MgRGVjb2RlcjsKK2NsYXNzIEVuY29kZXI7
CisKK2NsYXNzIERlcml2ZWREYXRhIHsKK3B1YmxpYzoKKyAgICBEZXJpdmVkRGF0YSgpID0gZGVm
YXVsdDsKKworICAgIERlcml2ZWREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhKQorICAgICAgICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1f
ZGF0YShkYXRhKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiAhbV9kYXRhLnNpemUoKTsgfQorCisgICAgY29uc3QgU3RyaW5nJiB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9CisgICAgY29uc3QgRGF0YVJlZmVyZW5jZSYgZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YTsgfQorCisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owor
ICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgRGVyaXZlZERhdGEmKTsKKyAgICBzdGF0
aWMgT3B0aW9uYWw8RGVyaXZlZERhdGE+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6Cisg
ICAgU3RyaW5nIG1fdHlwZTsKKyAgICBEYXRhUmVmZXJlbmNlIG1fZGF0YTsKK307CisKK2NsYXNz
IERlcml2ZWREYXRhQ29udGFpbmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RGVyaXZlZERhdGFDb250
YWluZXI+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEZXJpdmVkRGF0YUNvbnRhaW5lcik7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisKK3B1YmxpYzoKKyAgICB1c2luZyBGaW5h
bGl6ZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxEZXJpdmVkRGF0YT4m
Jik+OworCisgICAgc3RhdGljIFJlZjxEZXJpdmVkRGF0YUNvbnRhaW5lcj4gY3JlYXRlKEZpbmFs
aXplciYmIGZpbmFsaXplcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERl
cml2ZWREYXRhQ29udGFpbmVyKFdURk1vdmUoZmluYWxpemVyKSkpOworICAgIH0KKworICAgIH5E
ZXJpdmVkRGF0YUNvbnRhaW5lcigpOworCisgICAgdm9pZCBhcHBlbmQoY29uc3QgRGVyaXZlZERh
dGEmKTsKKworcHJpdmF0ZToKKyAgICBEZXJpdmVkRGF0YUNvbnRhaW5lcihGaW5hbGl6ZXImJik7
CisKKyAgICBGaW5hbGl6ZXIgbV9maW5hbGl6ZXI7CisgICAgVmVjdG9yPERlcml2ZWREYXRhPiBt
X2Rlcml2ZWREYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9n
Z2luZy5oCmluZGV4IDU5Y2VlODUzMDc5MzAwYjhiMWViMjQyN2M2M2M2MTBlNmQ2MDUxMDkuLmU3
ZjczZTQ5YThmNjJkNWVjNjAxN2MyMmRhNTQyOWZhNjFkNmE2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
TG9nZ2luZy5oCkBAIC00Myw2ICs0Myw3IEBAIGV4dGVybiAiQyIgewogICAgIE0oQXV0b21hdGlv
bikgXAogICAgIE0oQWN0aXZpdHlTdGF0ZSkgXAogICAgIE0oQmFja0ZvcndhcmQpIFwKKyAgICBN
KEJ5dGVjb2RlQ2FjaGUpIFwKICAgICBNKENhY2hlU3RvcmFnZSkgXAogICAgIE0oQ29udGVudE9i
c2VydmF0aW9uKSBcCiAgICAgTShDb250ZXh0TWVudSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggYjM5ZDI2
NGM4ZjhmNjU3NjQzOWNkY2RhZjQ1YzdjYWE3MWU1YjliZS4uNzA0ZGQ3OWYxNDg1YmY2MWVmOWE3
ZDA2YmQ3YzU3YmU0YTBkMmRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC01OSw2ICs1OSw3IEBAIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHAgQG5vLXVuaWZ5CiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgQG5v
LXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiAKK05ldHdvcmtQcm9jZXNzL2NhY2hlL0J5dGVjb2Rl
Q2FjaGUuY3BwCiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE5ZmY2YzBhY2NhMDYw
YTFhY2Y0M2QzNjQ2MTg5ODhlMjliMTdhMzcuLjg5OWQ2OThkZjY3YTk3YTk2NjczNDE0MmQzZDJl
M2FhZGVkZTY5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTIzLDYgKzEyMyw5IEBACiAJCTBGRjI0QTJEMTg3OUU0QkMwMDNBQkYw
QyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjI0QTJCMTg3
OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLzsgfTsKIAkJMEZGMjRBMkUxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGMjRBMkMxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oICovOyB9OwogCQkwRkYyNjRBMDFB
MUZGOUNDMDAxRkU3NTkgLyogUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRh
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjcwN0M3
OTFBMUZFRUEzMDBEQTdBNDUgLyogUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VE
YXRhLmggKi87IH07CisJCTE0RDAxQTczMjFGQTE4MDYwMEJDNTRFOSAvKiBCeXRlY29kZUNhY2hl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQwMUE3
MTIxRkExODA1MDBCQzU0RTkgLyogQnl0ZWNvZGVDYWNoZS5oICovOyB9OworCQkxNEUyODA5NDIy
MDAwQTBGMDAzQkM1N0IgLyogRGVyaXZlZERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RTI4MDkyMjIwMDA5RjkwMDNCQzU3QiAvKiBEZXJpdmVk
RGF0YS5oICovOyB9OworCQkxNEUyODA5NTIyMDAwQTIyMDAzQkM1N0IgLyogRGVyaXZlZERhdGEu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRFMjgw
OTMyMjAwMDlGOTAwM0JDNTdCIC8qIERlcml2ZWREYXRhLmNwcCAqLzsgfTsKIAkJMTU3MzlCQkQx
QjQyMDQyRDAwRDI1OEMxIC8qIFdlYlVzZXJNZWRpYUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGNDkxOUFGN0I4MDAwMkVCQUI1IC8q
IFdlYlVzZXJNZWRpYUNsaWVudC5oICovOyB9OwogCQkxQTAwMkQ0MzE5NkIzMzcwMDBCOUFENDQg
LyogX1dLU2Vzc2lvblN0YXRlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBMDAyRDQyMTk2QjMzNzAwMEI5QUQ0NCAvKiBfV0tTZXNzaW9u
U3RhdGVJbnRlcm5hbC5oICovOyB9OwogCQkxQTAwMkQ0NDE5NkIzMzg5MDBCOUFENDQgLyogX1dL
U2Vzc2lvblN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTAwMkQzRjE5NkIzMjk0MDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE5MjcsNiArMTkz
MCwxMCBAQAogCQkwRkYyNEEyQzE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMu
aDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMEZGMjRBMkYxODc5RTRG
RTAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTA1OEM3QjFGRUE1NTg1RTExQ0EyQ0JCIC8qIENvY29h
LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29jb2EuZnJhbWV3b3JrOyBwYXRoID0gL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29jb2EuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxh
YnNvbHV0ZT4iOyB9OworCQkxNEQwMUE3MDIxRkExODA1MDBCQzU0RTkgLyogQnl0ZWNvZGVDYWNo
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZUNhY2hl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTREMDFBNzEyMUZBMTgwNTAwQkM1
NEU5IC8qIEJ5dGVjb2RlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Qnl0ZWNvZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEUyODA5MjIy
MDAwOUY5MDAzQkM1N0IgLyogRGVyaXZlZERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGVyaXZlZERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRF
MjgwOTMyMjAwMDlGOTAwM0JDNTdCIC8qIERlcml2ZWREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlcml2ZWREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUEwMDJEM0UxOTZCMzI5NDAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1Nlc3Npb25TdGF0
ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwMDJEM0YxOTZCMzI5NDAwQjlB
RDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBfV0tTZXNzaW9uU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwMDJE
NDIxOTZCMzM3MDAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZUludGVybmFsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1Nlc3Npb25TdGF0ZUludGVybmFsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NDAwLDYgKzU0MDcsOCBAQAogCQkJCTFBQzc1MzdF
MTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmggKi8sCiAJCQkJQkMwMzJEOUQxMEY0
MzdEMTAwNThDMTVBIC8qIERlY29kZXIuY3BwICovLAogCQkJCUJDMDMyRDlFMTBGNDM3RDEwMDU4
QzE1QSAvKiBEZWNvZGVyLmggKi8sCisJCQkJMTRFMjgwOTMyMjAwMDlGOTAwM0JDNTdCIC8qIERl
cml2ZWREYXRhLmNwcCAqLywKKwkJCQkxNEUyODA5MjIyMDAwOUY5MDAzQkM1N0IgLyogRGVyaXZl
ZERhdGEuaCAqLywKIAkJCQlCQzAzMkQ5RjEwRjQzN0QxMDA1OEMxNUEgLyogRW5jb2Rlci5jcHAg
Ki8sCiAJCQkJQkMwMzJEQTAxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuaCAqLywKIAkJCQk0
MTUxRTVDMzFGQkI5MEE5MDBFNDdFMkQgLyogRm9ybURhdGFSZWZlcmVuY2UuaCAqLywKQEAgLTg3
NzcsNiArODc4Niw4IEBACiAJCUU0ODlEMjgyMUEwQTJCRTgwMDc4QzA2QSAvKiBjYWNoZSAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMTREMDFBNzAyMUZB
MTgwNTAwQkM1NEU5IC8qIEJ5dGVjb2RlQ2FjaGUuY3BwICovLAorCQkJCTE0RDAxQTcxMjFGQTE4
MDUwMEJDNTRFOSAvKiBCeXRlY29kZUNhY2hlLmggKi8sCiAJCQkJNDE4OTdFRDYxRjQxNUQ4NjAw
MTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5jcHAgKi8sCiAJCQkJNDE4OTdFRDIxRjQxNUQ4
NTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5oICovLAogCQkJCTQxQzg1ODE5MUY1MTBE
RUUwMDY1RTA4NSAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgKi8sCkBAIC05MDM1LDYg
KzkwNDYsNyBAQAogCQkJCUUxNzA4NzZDMTZENkNBNjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cnlQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEY2MDE0MzIxNTVDNUFBMjAwMUZCREUwIC8qIEJs
b2NraW5nUmVzcG9uc2VNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTcwNTExMUJFNDEwRTYw
MDg3NEFGMSAvKiBCbG9ja1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTREMDFBNzMyMUZBMTgw
NjAwQkM1NEU5IC8qIEJ5dGVjb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzA2NUZB
MTI1OTM0NEUwMEU3MTI3OCAvKiBDYWNoZU1vZGVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTg5
N0VEODFGNDE1RDhBMDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MUZBQkQyQTFGNERFMDAxMDA2QTZDOTcgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTA1NSw2ICs5MDY3LDcgQEAKIAkJCQlDNTVGOTE3MTFD
NTk2NzZFMDAyOUU5MkQgLyogRGF0YURldGVjdGlvblJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFDNzUzODAxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMDMyREE2MTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkxNEUyODA5NDIyMDAwQTBGMDAzQkM1N0IgLyogRGVyaXZlZERhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU3RENFREFCMjE0QzYwMDkwMDE2Qjg0NyAvKiBEZXZpY2VJZGVudGl0
eVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcyOTdGOUYxQzE3QkJFQTAxNUYwNzM1IC8qIERl
dmljZUlkSGFzaFNhbHRTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4Mzg5MUI2QzFBNjhD
MzBCMDAzMEYzODYgLyogRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCBpbiBIZWFkZXJzICovLApA
QCAtOTE0NCw2ICs5MTU3LDcgQEAKIAkJCQk0MTMwNzVBRDFERTg1RjU4MDAzOUVDNjkgLyogTGli
V2ViUlRDU29ja2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURDNDU5QzFFM0RCQjI4MDBCMTFG
NTEgLyogTGliV2ViUlRDU29ja2V0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTMwNzVC
MjFERTg1RjU4MDAzOUVDNjkgLyogTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTc5MDBCNDAyMUY4RjlCODAwODMxN0RFIC8qIExvYWRPcHRpbWl6ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJEMTA4NzYxMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVy
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc4REMyOTgyMTU1QTAwMjAwNzRFODE1IC8qIExvY2Fs
QXV0aGVudGljYXRpb25Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQUMyMTRD
NjAyNzAwMTZCODQ3IC8qIExvY2FsQXV0aGVudGljYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MDgyNSw2ICsxMDgzOSw3IEBACiAJCQkJMkQ5MkE3N0QyMTJCNkE3MTAwRjQ5M0ZEIC8qIENvbm5l
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3N0UyMTJCNkE3MTAwRjQ5M0ZEIC8q
IERhdGFSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3N0YyMTJCNkE3MTAw
RjQ5M0ZEIC8qIERlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTRFMjgwOTUyMjAwMEEy
MjAwM0JDNTdCIC8qIERlcml2ZWREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjdENjE5
MTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBNjQyMjk5MTJERDAyOTIwMENBQUUyQyAvKiBEcmF3aW5nQXJlYU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTY0MjMwODEyREQwOUVCMDBD
QUFFMkMgLyogRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcAppbmRleCA1MDZkMTY2YTE1ZDBlNzU5MzRkNzIwZTdmOGRlNjE1MmIxNzA1
ZDMxLi5iN2IzNDFhMGUzZTE1ZTUyYzY2YThkOGViOGRjYmMwZWQ4NzAzZjJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
Y3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lVGFza1Byb3h5Lmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvQ2FjaGVkUmVzb3VyY2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZFNjcmlwdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlh
Z25vc3RpY0xvZ2dpbmdLZXlzLmg+CkBAIC0yODAsNiArMjgxLDcgQEAgdm9pZCBXZWJMb2FkZXJT
dHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiBy
ZXNvdXJjZUwKICAgICBsb2FkUGFyYW1ldGVycy5kZWZlcnNMb2FkaW5nID0gcmVzb3VyY2VMb2Fk
ZXIuZGVmZXJzTG9hZGluZygpOwogICAgIGxvYWRQYXJhbWV0ZXJzLm5lZWRzQ2VydGlmaWNhdGVJ
bmZvID0gcmVzb3VyY2VMb2FkZXIuc2hvdWxkSW5jbHVkZUNlcnRpZmljYXRlSW5mbygpOwogICAg
IGxvYWRQYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gbWF4aW11bUJ1ZmZlcmluZ1Rp
bWU7CisgICAgbG9hZFBhcmFtZXRlcnMuZGVyaXZlZENhY2hlZERhdGFUeXBlc1RvUmV0cmlldmUg
PSByZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuZGVyaXZlZENhY2hlZERhdGFUeXBlc1RvUmV0cmll
dmU7CiAgICAgbG9hZFBhcmFtZXRlcnMub3B0aW9ucyA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMo
KTsKICAgICBsb2FkUGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3kgPSByZXNvdXJjZUxvYWRlci5v
cHRpb25zKCkucHJlZmxpZ2h0UG9saWN5OwogICAgIGxvYWRQYXJhbWV0ZXJzLmlzSFRUUFNVcGdy
YWRlRW5hYmxlZCA9IHJlc291cmNlTG9hZGVyLmZyYW1lKCkgPyByZXNvdXJjZUxvYWRlci5mcmFt
ZSgpLT5zZXR0aW5ncygpLkhUVFBTVXBncmFkZUVuYWJsZWQoKSA6IGZhbHNlOwpAQCAtNjY0LDYg
KzY2NiwxNiBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpkaWRGaW5pc2hQcmVjb25uZWN0aW9u
KHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLAogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKGVycm9yKSk7CiB9CiAKK3ZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmNhY2hl
Qnl0ZWNvZGVGb3JTY3JpcHQoY29uc3QgV2ViQ29yZTo6Q2FjaGVkU2NyaXB0JiBzY3JpcHQpCit7
CisgICAgdWludDY0X3Qgd2ViUGFnZUlEID0gc2NyaXB0LndlYlBhZ2VJRCgpOworICAgIHVpbnQ2
NF90IHdlYkZyYW1lSUQgPSBzY3JpcHQud2ViRnJhbWVJRCgpOworICAgIGlmICghd2ViUGFnZUlE
IHx8ICF3ZWJGcmFtZUlEKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNhY2hlQnl0ZWNvZGVG
b3JSZXF1ZXN0KHNjcmlwdC5yZXNvdXJjZVJlcXVlc3QoKSwgd2ViUGFnZUlELCB3ZWJGcmFtZUlE
KSwgMCk7Cit9CisKIGJvb2wgV2ViTG9hZGVyU3RyYXRlZ3k6OmlzT25MaW5lKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9pc09uTGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4IDFlZmM5M2MwMmEzY2EyYjliZjBl
ZGYwYWE5MDVlNWY5YmIwZDNiZDMuLjc5OWVmNzdiYTAzM2ZkNTgwODJhOWMyYjc1ZTYwNWQ1Mjky
YTY0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuaApAQCAtNjgsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVj
b25uZWN0VG8oV2ViQ29yZTo6RnJhbWVMb2FkZXImLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OwogICAgIHZvaWQgZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVjb25uZWN0aW9u
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKIAorICAgIHZvaWQgY2FjaGVC
eXRlY29kZUZvclNjcmlwdChjb25zdCBXZWJDb3JlOjpDYWNoZWRTY3JpcHQmKSBvdmVycmlkZTsK
KwogICAgIHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29s
KSBmaW5hbDsKIAogICAgIFdlYlJlc291cmNlTG9hZGVyKiB3ZWJSZXNvdXJjZUxvYWRlckZvcklk
ZW50aWZpZXIoUmVzb3VyY2VMb2FkSWRlbnRpZmllciBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVy
biBtX3dlYlJlc291cmNlTG9hZGVycy5nZXQoaWRlbnRpZmllcik7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRl
eCBiZjg4ZmRhMzAwN2UxNjRmZjM4YTk1MjJhYmI4MWZlZmQ3ZTlmODUyLi4yYjc3MTE1MjM1ZDJm
NjhmNDc5ZTZjYmNmYjA0OTgzOTI5YjhkYmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXIuaCIKIAogI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKKyNpbmNsdWRlICJEZXJpdmVkRGF0YS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJOZXR3b3Jr
UmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgpAQCAtMTEwLDcgKzExMSw3IEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkZXI6OmRpZFNlbmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90
YWxCeXRlc1RvQmVTCiAgICAgbV9jb3JlTG9hZGVyLT5kaWRTZW5kRGF0YShieXRlc1NlbnQsIHRv
dGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vbCBuZWVkc0Nv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9v
bCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSwgY29uc3QgVmVjdG9yPElQ
Qzo6RGVyaXZlZERhdGE+JiBkZXJpdmVkRGF0YSkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQ
cm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlIGZvciAnJXMnLiBT
dGF0dXMgJWQuIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCks
IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImRpZFJlY2VpdmVSZXNwb25zZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgc3RhdHVzID0gJWQpIiwgbV90cmFj
a2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3Ry
YWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlELCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsK
QEAgLTE0MCw2ICsxNDEsMTAgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib28KICAgICB9CiAKICAg
ICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgV1RGTW92ZShwb2xp
Y3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBlbnRy
eSA6IGRlcml2ZWREYXRhKSB7CisgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZW50cnkuZGF0YSgpLmRhdGEoKSwgZW50cnkuZGF0YSgpLnNpemUoKSk7CisgICAgICAg
IG1fY29yZUxvYWRlci0+ZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZShlbnRyeS50eXBl
KCksIGJ1ZmZlci5nZXQoKSk7CisgICAgfQogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5j
b2RlZERhdGFMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuaAppbmRleCA3ZmQ3ODMyMjMzYTM2MmMyM2E5MDRmYzE1ZWYz
NGNhNjRhOTY3ZWFlLi41NGYwNWQ5MjFmMGFjMjc5NWMzZDY2OTRhMmI2ZjMwZDcyY2NiZGM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBEYXRh
UmVmZXJlbmNlOworY2xhc3MgRGVyaXZlZERhdGE7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTc2LDkgKzc3LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwog
ICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5
dGVzVG9CZVNlbnQpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2Fn
ZSwgY29uc3QgVmVjdG9yPElQQzo6RGVyaXZlZERhdGE+Jik7CiAgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3Ro
KTsKLSAgICB2b2lkIGRpZFJldHJpZXZlRGVyaXZlZERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIGRpZEZpbmlzaFJlc291cmNlTG9h
ZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxS
ZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlk
QmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5p
bgppbmRleCA3YjkzMjU2ZjAzNmRkMDQyZjQ0YmE4M2EzMThiYjdiNjYzNmQ0MWFhLi4zMGIwM2Qw
NmQyODIwYzhiNzZlNjQ1YzdkMmUzN2ZlM2Y2NDhlYmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNz
YWdlcy5pbgpAQCAtMjMsNyArMjMsNyBAQAogbWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VMb2FkZXIg
TGVnYWN5UmVjZWl2ZXIgewogICAgIFdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNl
KQogICAgIERpZFNlbmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRl
c1RvQmVTZW50KQotICAgIERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdl
KQorICAgIERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlLCBWZWN0b3I8
SVBDOjpEZXJpdmVkRGF0YT4gZGF0YSkKICAgICBEaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKICAgICBE
aWRGaW5pc2hSZXNvdXJjZUxvYWQoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtM
b2FkTWV0cmljcykKICAgICBEaWRGYWlsUmVzb3VyY2VMb2FkKFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0
L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRleCA1NWIzNjk3NTMwNjU4MjE0
YmM5NzlhODc5MmI2NjA3MjZkODI5NmRkLi5kMDZmNzVmMDY1NTNjZWYzNDI0YTU0ZmMyOGM5NmYx
ZGJhMTliMzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0
L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2Vi
Q29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKQEAgLTYwLDYgKzYwLDggQEAg
cHVibGljOgogCiAgICAgdm9pZCBwcmVjb25uZWN0VG8oV2ViQ29yZTo6RnJhbWVMb2FkZXImLCBj
b25zdCBVUkwmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENv
bXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogCisgICAgdm9pZCBjYWNoZUJ5dGVjb2RlRm9yU2Ny
aXB0KGNvbnN0IFdlYkNvcmU6OkNhY2hlZFNjcmlwdCYpIGZpbmFsIHsgfQorCiAgICAgdm9pZCBz
ZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wpIGZpbmFsIHsgfQog
CiAgICAgYm9vbCBpc1NlcmlhbExvYWRpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1Nl
cmlhbExvYWRpbmdFbmFibGVkOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361724</attachid>
            <date>2019-02-11 15:50:43 -0800</date>
            <delta_ts>2019-04-17 14:52:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194047-20190212005012.patch</filename>
            <type>text/plain</type>
            <size>71169</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZGViMDEwNTU5NGM0Zjk2ODI5NTAzOTk4NTlhZTJjZWVlZTcxYzZmLi42Y2Q3N2YyZGI4YWUwNTcz
NTU3ZmMxMDY5YzJkNjhlMTFjMTdkNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxOS0wMi0xMSAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBJbnRlZ3JhdGUgSlNDIGJ5dGVjb2RlIGNhY2hlIHdpdGggV2ViS2l0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQwNDcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY2FsbGJh
Y2sgdG8gU291cmNlUHJvdmlkZXIgZm9yIGNhY2hpbmcgdGhlIGJ5dGVjb2RlLgorCisgICAgICAg
ICogcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVy
OjpjYWNoZUJ5dGVjb2RlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNw
cDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkVmVjdG9yOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAo
SlNDOjpDYWNoZWRCaXRWZWN0b3I6OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hl
ZEJpZ0ludDo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6
CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6d3JpdGUpOgorICAgICAgICAoSlNDOjpnZW5lcmF0
ZVVubGlua2VkQ29kZUJsb2NrRm9yRnVuY3Rpb25zKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVD
YWNoZS5oOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlVmFsdWU6OlNvdXJjZUNvZGVWYWx1ZSk6
CisgICAgICAgIChKU0M6OkNvZGVDYWNoZU1hcDo6ZmV0Y2hGcm9tRGlza0ltcGwpOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKwog
MjAxOS0wMi0wNyAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeCBBYnMoTmVnKHgpKSAtPiBBYnMoeCkgb3B0aW1pemF0aW9uIGluIEIzUmVkdWNlU3Ry
ZW5ndGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA2MmVlMmU4NjE2OTRjMGI2MjQ1MzAwOWMwOGNmOTY4MDUyYzM1
NDIzLi41OTUxMTA5OTE1NGUxMjM0ODVmZDMxOGU4ZjhhNWIzYmY3MGY4OThmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzggQEAKKzIwMTktMDItMTEgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0Bh
cHBsZS5jb20+CisKKyAgICAgICAgSW50ZWdyYXRlIEpTQyBieXRlY29kZSBjYWNoZSB3aXRoIFdl
YktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0
MDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IENhY2hlZEJ5dGVjb2RlIHRvIENhY2hlZFNjcmlwdC4KKworICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRTY3Jp
cHRGZXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdEZldGNoZXI6OnJl
cXVlc3RTY3JpcHRXaXRoQ2FjaGUgY29uc3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NhY2hl
ZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogbG9hZGVyL0xvYWRlclN0cmF0ZWd5
Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZXRyaWV2ZURlcml2ZWREYXRhRnJvbUNhY2hlKToKKyAg
ICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZXRyaWV2ZURlcml2
ZWREYXRhRnJvbUNhY2hlKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlTG9hZGVyT3B0aW9uczo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6OmxvYWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmxvYWRlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6d2ViUGFnZUlEIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp3ZWJGcmFtZUlEIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpkaWRSZXRyaWV2ZURlcml2ZWREYXRhRnJvbUNhY2hl
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFNjcmlwdDo6Y2FjaGVkQnl0ZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkU2NyaXB0OjpkaWRSZXRyaWV2ZURlcml2ZWREYXRhRnJvbUNhY2hlKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisKIDIwMTktMDItMDggIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBUaGUgdXNlZCBjb250YWluaW5n
IGJsb2NrIHdpZHRoIHZhbHVlIGlzIG9wdGlvbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVlNWY5ODNiN2RlMjU3
NzAxMWMzZDgyMzA3Y2RmYzAyMWNjOTFlMGIuLjY3NTUzNjcwOGMxOTVhM2RjYTJkZTMzMmE3Mzgx
ODA1YWQ2ZWVkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEgQEAKKzIwMTktMDItMTEgIFRhZGV1
IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CisKKyAgICAgICAgSW50ZWdyYXRlIEpTQyBi
eXRlY29kZSBjYWNoZSB3aXRoIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmV2ZXJ0IHBhcnQgb2YgdGhlIGNvZGUgZGVsZXRlZCBpbiByMjM4
OTMzLCBidXQgY2hhbmdlIGl0IHRvIHJldHJpZXZlIHRoZQorICAgICAgICBkZXJpdmVkIGRhdGEg
c3luY2hyb25vdXNseS4gT3RoZXJ3aXNlLCB0aGUgYnl0ZWNvZGUgd291bGQgbm90IGJlIGF2YWls
YWJsZQorICAgICAgICBpbiB0aW1lIGZvciBleGVjdXRpb24uCisKKyAgICAgICAgQWRkaXRpb25h
bGx5ICBhIEJ5dGVjb2RlQ2FjaGUgdG8gdGhlIE5ldHdvcmtQcm9jZXNzIHRvIGdlbmVyYXRlIGFu
ZCBzdG9yZQorICAgICAgICBieXRlY29kZSBmb3IgcmVxdWVzdHMuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjYWNoZUJ5dGVjb2RlRm9yUmVx
dWVzdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Ynl0ZWNvZGVDYWNoZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkUmV0cmlldmVDYWNoZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjpwcm9jZXNzQ2FjaGVkRW50cnlBZnRlckRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQnl0ZWNvZGVDYWNoZS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpCeXRlY29kZUNhY2hlOjpQbGFuOjpQbGFuKToKKyAgICAgICAgKFdlYktpdDo6Qnl0
ZWNvZGVDYWNoZTo6UGxhbjo6Y29tcGlsZSk6CisgICAgICAgIChXZWJLaXQ6OkJ5dGVjb2RlQ2Fj
aGU6OlRocmVhZDo6VGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6Qnl0ZWNvZGVDYWNoZTo6Qnl0
ZWNvZGVDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OkJ5dGVjb2RlQ2FjaGU6On5CeXRlY29kZUNh
Y2hlKToKKyAgICAgICAgKFdlYktpdDo6Qnl0ZWNvZGVDYWNoZTo6Y2FjaGVCeXRlY29kZUZvclJl
cXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0J5dGVjb2RlQ2FjaGUuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNl
UHJvdmlkZXIuaC4KKyAgICAgICAgKFdlYktpdDo6Qnl0ZWNvZGVDYWNoZTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6c2FsdCBjb25zdCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQ
cm9jZXNzKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVyaXZlZERhdGEuY3BwOiBBZGRlZC4K
KyAgICAgICAgKElQQzo6RGVyaXZlZERhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChJUEM6
OkRlcml2ZWREYXRhOjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpEZXJpdmVkRGF0YUNvbnRhaW5l
cjo6RGVyaXZlZERhdGFDb250YWluZXIpOgorICAgICAgICAoSVBDOjpEZXJpdmVkRGF0YUNvbnRh
aW5lcjo6fkRlcml2ZWREYXRhQ29udGFpbmVyKToKKyAgICAgICAgKElQQzo6RGVyaXZlZERhdGFD
b250YWluZXI6OmFwcGVuZCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Rlcml2ZWREYXRhLmg6
IEFkZGVkLgorICAgICAgICAoSVBDOjpEZXJpdmVkRGF0YTo6RGVyaXZlZERhdGEpOgorICAgICAg
ICAoSVBDOjpEZXJpdmVkRGF0YTo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChJUEM6OkRlcml2
ZWREYXRhOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKElQQzo6RGVyaXZlZERhdGE6OmRhdGEgY29u
c3QpOgorICAgICAgICAoSVBDOjpEZXJpdmVkRGF0YUNvbnRhaW5lcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9Mb2dnaW5nLmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9h
ZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpjYWNoZUJ5dGVjb2RlRm9yU2NyaXB0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisKIDIwMTktMDItMDggIEtl
aXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVp
bGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCA5N2Q3MzY4M2IxYzMyNjQ5NGVmMTQ1OTVk
NDQzMjhlZjM2YjM0YzFmLi40MTA5YjUzNWIzZTM3MjYyMGQyOGJlNWRhZTZmZGUwMjkwYWUyOTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTAyLTExICBUYWRl
dSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgorCisgICAgICAgIEludGVncmF0ZSBKU0Mg
Ynl0ZWNvZGUgY2FjaGUgd2l0aCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5NDA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBMb2FkZXJTdHJhdGVneSdzIGBjYWNoZUJ5dGVj
b2RlRm9yU2NyaXB0YCBhcyBuby1vcC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJl
c291cmNlTG9hZFNjaGVkdWxlci5oOgorCiAyMDE5LTAxLTMxICBUYWthc2hpIEtvbW9yaSAgPFRh
a2FzaGkuS29tb3JpQHNvbnkuY29tPgogCiAgICAgICAgIFtDdXJsXSBSZW1vdmUgdW5uZWNlc3Nh
cnkgbWVtYmVyIGZyb20gTmV0d29ya1N0b3JhZ2VTZXNzaW9uLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCmluZGV4IDM3NzhiZjk0MWFkN2ZhYzg2NGQ2
Y2E3ODBhMDZkODI4OWU5MWFlNGMuLmJkMGE3ZWIxZDYwY2FhNzM5Y2IxZGJmNTg5ZDRhYjBjOGY2
NDcwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJv
dmlkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVy
LmgKQEAgLTExNiw2ICsxMTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCB1
bnNpZ25lZCBoYXNoKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIFN0cmluZ1ZpZXcgc291
cmNlKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIGNvbnN0IENhY2hlZEJ5dGVjb2RlKiBj
YWNoZWRCeXRlY29kZSgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICAgICAgdmlydHVh
bCB2b2lkIGNhY2hlQnl0ZWNvZGUoKSBjb25zdCB7IH0KIAogICAgICAgICBTdHJpbmdWaWV3IGdl
dFJhbmdlKGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKICAgICAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IDQzNTgxNzFlNmMzM2Y1
ZGJhZWEwNWVjM2NmZWJkMWU1YzY0Mzk1ZDEuLjY2OGYwNWUwNGUxZGEyNDRjOWMwODNhMDBhYjQ4
NGFiMmI2YWJjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
Y2hlZFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRU
eXBlcy5jcHAKQEAgLTQ3MSw2ICs0NzEsOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUuLi4gQXJncz4KICAgICB2b2lkIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U291
cmNlVHlwZTxUPiwgSW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mIHZlY3RvciwgQXJn
cy4uLiBhcmdzKSBjb25zdAogICAgIHsKKyAgICAgICAgaWYgKCFtX3NpemUpCisgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIHZlY3Rvci5yZXNpemVUb0ZpdChtX3NpemUpOwogICAgICAgICBj
b25zdCBUKiBidWZmZXIgPSB0aGlzLT50ZW1wbGF0ZSBidWZmZXI8VD4oKTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQpAQCAtNzQ2LDYgKzc0OCw4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZGVjb2RlKERlY29kZXImLCBCaXRWZWN0b3ImIGJpdFZlY3Rvcikg
Y29uc3QKICAgICB7CisgICAgICAgIGlmICghbV9zaXplKQorICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBiaXRWZWN0b3IuZW5zdXJlU2l6ZShtX3NpemUpOwogICAgICAgICBtZW1jcHkoYml0
VmVjdG9yLmJpdHMoKSwgdGhpcy0+YnVmZmVyKCksIG1fc2l6ZSk7CiAgICAgfQpAQCAtMTAzNyw3
ICsxMDQxLDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgSlNCaWdJbnQqIGJpZ0ludCA9IEpT
QmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKGRlY29kZXIudm0oKSwgbV9sZW5ndGgp
OwogICAgICAgICBiaWdJbnQtPnNldFNpZ24obV9zaWduKTsKLSAgICAgICAgbWVtY3B5KGJpZ0lu
dC0+ZGF0YVN0b3JhZ2UoKSwgdGhpcy0+YnVmZmVyKCksIHNpemVvZihKU0JpZ0ludDo6RGlnaXQp
ICogbV9sZW5ndGgpOworICAgICAgICBpZiAobV9sZW5ndGgpCisgICAgICAgICAgICBtZW1jcHko
YmlnSW50LT5kYXRhU3RvcmFnZSgpLCB0aGlzLT5idWZmZXIoKSwgc2l6ZW9mKEpTQmlnSW50OjpE
aWdpdCkgKiBtX2xlbmd0aCk7CiAgICAgICAgIHJldHVybiBiaWdJbnQ7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCBiNDFlNTI2NTFm
M2U3YzlmNmVjZGUyM2ZmYjk2OTljODlkYjc4NjU3Li5mYWI1NDU1NjliNGIxMTliMGZjOTU0M2Zl
MGViZjIzZjM5MTQ2ZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVD
YWNoZS5jcHAKQEAgLTE1OSw4ICsxNTksMTcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IENvZGVDYWNoZTo6Z2V0VW5saW5rZWRHbG9iYWxGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHYKIAog
dm9pZCBDb2RlQ2FjaGU6OndyaXRlKFZNJiB2bSkKIHsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGl0
IDogbV9zb3VyY2VDb2RlKQorICAgIGZvciAoYXV0byYgaXQgOiBtX3NvdXJjZUNvZGUpIHsKKyAg
ICAgICAgaWYgKGl0LnZhbHVlLndyaXR0ZW4pCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgaXQudmFsdWUud3JpdHRlbiA9IHRydWU7CisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBqc0R5bmFtaWNDYXN0PFVubGlua2VkQ29kZUJsb2NrKj4odm0sIGl0LnZhbHVl
LmNlbGwuZ2V0KCkpOworICAgICAgICBpZiAoIWNvZGVCbG9jaykKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBpdC5rZXkuc291cmNlKCkucHJvdmlkZXIoKS5jYWNoZUJ5dGVjb2RlKCk7
CisgICAgICAgIC8vIEZJWE1FOiBNb3ZlIGB3cml0ZUNvZGVCbG9ja2AgaW50byBhIGN1c3RvbSBT
b3VyY2VQcm92aWRlcgogICAgICAgICB3cml0ZUNvZGVCbG9jayh2bSwgaXQua2V5LCBpdC52YWx1
ZSk7CisgICAgfQogfQogCiB2b2lkIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JGdW5jdGlv
bnMoVk0mIHZtLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIGNvbnN0IFNv
dXJjZUNvZGUmIHBhcmVudFNvdXJjZSwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUGFyc2Vy
RXJyb3ImIGVycm9yKQpAQCAtMTcwLDcgKzE3OSw3IEBAIHZvaWQgZ2VuZXJhdGVVbmxpbmtlZENv
ZGVCbG9ja0ZvckZ1bmN0aW9ucyhWTSYgdm0sIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENv
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0gdW5saW5rZWRFeGVjdXRhYmxlLT5saW5rKHZtLCBwYXJlbnRTb3VyY2UpOwotICAg
ICAgICBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UgPSBleGVjdXRhYmxlLT5zb3VyY2UoKTsKKyAg
ICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBleGVjdXRhYmxlLT5zb3VyY2UoKTsKICAgICAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayA9IHVu
bGlua2VkRXhlY3V0YWJsZS0+dW5saW5rZWRDb2RlQmxvY2tGb3Iodm0sIHNvdXJjZSwgY29uc3Ry
dWN0b3JLaW5kLCBkZWJ1Z2dlck1vZGUsIGVycm9yLCB1bmxpbmtlZEV4ZWN1dGFibGUtPnBhcnNl
TW9kZSgpKTsKICAgICAgICAgaWYgKHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spCiAgICAgICAg
ICAgICBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrRm9yRnVuY3Rpb25zKHZtLCB1bmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrLCBzb3VyY2UsIGRlYnVnZ2VyTW9kZSwgZXJyb3IpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAppbmRleCA4MGMwZDk1ZjllZjc5NDk1MmU1
ZmJjNjgzZWU1NjY1MGUwYTAyMWFmLi5iZTQ0YmRkZWU5OWZlNDk0ZTE4ODVjYTNlNzc5MWRhNjY5
NGY4ODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2Fj
aGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaApAQCAt
NzUsMTQgKzc1LDE2IEBAIHN0cnVjdCBTb3VyY2VDb2RlVmFsdWUgewogICAgIHsKICAgICB9CiAK
LSAgICBTb3VyY2VDb2RlVmFsdWUoVk0mIHZtLCBKU0NlbGwqIGNlbGwsIGludDY0X3QgYWdlKQor
ICAgIFNvdXJjZUNvZGVWYWx1ZShWTSYgdm0sIEpTQ2VsbCogY2VsbCwgaW50NjRfdCBhZ2UsIGJv
b2wgd3JpdHRlbiA9IGZhbHNlKQogICAgICAgICA6IGNlbGwodm0sIGNlbGwpCiAgICAgICAgICwg
YWdlKGFnZSkKKyAgICAgICAgLCB3cml0dGVuKHdyaXR0ZW4pCiAgICAgewogICAgIH0KIAogICAg
IFN0cm9uZzxKU0NlbGw+IGNlbGw7CiAgICAgaW50NjRfdCBhZ2U7CisgICAgYm9vbCB3cml0dGVu
OwogfTsKIAogY2xhc3MgQ29kZUNhY2hlTWFwIHsKQEAgLTE1NCw3ICsxNTYsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBWRVJCT1NFX0xPRygiRm91
bmQgY2FjaGVkIENvZGVCbG9jayBvbiBkaXNrIik7Ci0gICAgICAgIGFkZENhY2hlKGtleSwgU291
cmNlQ29kZVZhbHVlKHZtLCB1bmxpbmtlZENvZGVCbG9jaywgbV9hZ2UpKTsKKyAgICAgICAgYWRk
Q2FjaGUoa2V5LCBTb3VyY2VDb2RlVmFsdWUodm0sIHVubGlua2VkQ29kZUJsb2NrLCBtX2FnZSwg
dHJ1ZSkpOwogICAgICAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2s7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0odm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21w
bGV0aW9uLmNwcAppbmRleCA4YTg3NWNkN2UzYjA1ZGM0MzY1OWYwMWI3MDA1MmJjMTNjYzFhZTE5
Li5hNDY5ZDIyNDc1NmYwZDdkMWY5ODgwYmEyOTAyMTcwNDZjN2Q5ZTliIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtMTQyLDYgKzE0Miw4IEBA
IEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIEpTVmFsdWUgdGhpc1ZhbHVlLCBOCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
ICAgIH0KIAorICAgIHZtLmNvZGVDYWNoZSgpLT53cml0ZSh2bSk7CisKICAgICBSRUxFQVNFX0FT
U0VSVChyZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMWU4Yjg4MzQzYWFlY2Zl
MjY4MmQxOTljODkzZDE3MzVjZWRiODU5NS4uMjU1MGU1MzIwNjE0M2RiOTJmOWRmNWI2NDYzODhj
NmNmY2ViYjU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMzg4Niw3ICszODg2LDcgQEAKIAkJQkNCMTZDMUMwOTc5QzNCRDAw
NDY3NzQxIC8qIENhY2hlZEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0IxNkMwMzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0IxNkMy
MDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzA3MDk3OUMzQkQwMDQ2Nzc0MSAvKiBD
YWNoZWRSZXNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUJDQjE2QzIyMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZUNsaWVu
dFdhbGtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNCMTZDMDkwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgg
Ki87IH07Ci0JCUJDQjE2QzI0MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRTY3JpcHQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzBCMDk3OUMz
QkQwMDQ2Nzc0MSAvKiBDYWNoZWRTY3JpcHQuaCAqLzsgfTsKKwkJQkNCMTZDMjQwOTc5QzNCRDAw
NDY3NzQxIC8qIENhY2hlZFNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNCMTZDMEIwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFNjcmlwdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQjE2
QzI4MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRYU0xTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwRjA5NzlDM0JEMDA0Njc3
NDEgLyogQ2FjaGVkWFNMU3R5bGVTaGVldC5oICovOyB9OwogCQlCQ0IxNkMyQTA5NzlDM0JEMDA0
Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzExMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRS
ZXNvdXJjZUxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUJDQjkyRDRGMTI5MzU1MEIwMEM4Mzg3RiAvKiBGb250QmFzZWxpbmUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjkyRDRFMTI5MzU1
MEIwMEM4Mzg3RiAvKiBGb250QmFzZWxpbmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9D
YWNoZWRTY3JpcHRGZXRjaGVyLmNwcAppbmRleCA3Yzg3YjIzOTM4ZTQzM2U1MDhjMGZiODBiZTlj
OWU2ZmRlMzgyMTAzLi5lMGYwMDNmMGRiMWI0YThiY2I2MWFmM2JkOGY1NmQzMTM5NmU2ZjM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVy
LmNwcApAQCAtNTYsNiArNTYsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+
IENhY2hlZFNjcmlwdEZldGNoZXI6OnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoRAogICAgIG9wdGlv
bnMuY29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbiA9IGhhc0tub3duTm9uY2UgPyBDb250
ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpTa2lwUG9saWN5Q2hlY2sgOiBDb250ZW50U2Vj
dXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrOwogICAgIG9wdGlvbnMuc2FtZU9y
aWdpbkRhdGFVUkxGbGFnID0gU2FtZU9yaWdpbkRhdGFVUkxGbGFnOjpTZXQ7CiAgICAgb3B0aW9u
cy5pbnRlZ3JpdHkgPSBXVEZNb3ZlKGludGVncml0eSk7CisgICAgb3B0aW9ucy5kZXJpdmVkQ2Fj
aGVkRGF0YVR5cGVzVG9SZXRyaWV2ZSA9IHsgImJ5dGVjb2RlLWNhY2hlIiB9OwogCiAgICAgYXV0
byByZXF1ZXN0ID0gY3JlYXRlUG90ZW50aWFsQWNjZXNzQ29udHJvbFJlcXVlc3Qoc291cmNlVVJM
LCBkb2N1bWVudCwgY3Jvc3NPcmlnaW5Nb2RlLCBXVEZNb3ZlKG9wdGlvbnMpKTsKICAgICByZXF1
ZXN0LnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChkb2N1bWVudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIu
aAppbmRleCBhZTQ0NGM2NDUzNmIyMzVjYTE2NTc0NmQ5NDBhMTcwYmM5MWNhZWFiLi5hNWRiZDIy
YmQzNDdjYzczNWU3N2M5ZjliYzYwYjZjODFiNTcyYTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgKQEAgLTI5
LDYgKzI5LDggQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUg
IkNhY2hlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdEZldGNoZXIuaCIKKyNpbmNs
dWRlICJMb2FkZXJTdHJhdGVneS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NvdXJjZVByb3ZpZGVyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTQ1LDYgKzQ3LDE0IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIGhhc2go
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NhY2hlZFNjcmlwdC0+c2NyaXB0SGFzaCgpOyB9
CiAgICAgU3RyaW5nVmlldyBzb3VyY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NhY2hl
ZFNjcmlwdC0+c2NyaXB0KCk7IH0KKyAgICBjb25zdCBKU0M6OkNhY2hlZEJ5dGVjb2RlKiBjYWNo
ZWRCeXRlY29kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICZtX2NhY2hlZFNjcmlwdC0+Y2Fj
aGVkQnl0ZWNvZGUoKTsgfQorCisgICAgdm9pZCBjYWNoZUJ5dGVjb2RlKCkgY29uc3Qgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIGlmIChtX2NhY2hlZFNjcmlwdC0+Y2FjaGVkQnl0ZWNvZGUoKS5z
aXplKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5sb2FkZXJTdHJhdGVneSgpLT5jYWNoZUJ5dGVjb2RlRm9yU2NyaXB0KCptX2NhY2hlZFNjcmlw
dCk7CisgICAgfQogCiBwcml2YXRlOgogICAgIENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyKENh
Y2hlZFNjcmlwdCogY2FjaGVkU2NyaXB0LCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBz
b3VyY2VUeXBlLCBSZWY8Q2FjaGVkU2NyaXB0RmV0Y2hlcj4mJiBzY3JpcHRGZXRjaGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAppbmRleCBiMzVjNmZiMGUyODY0ZDVmOGVm
YzRiODBmYWM3YTNmZjA0MTExOTNlLi4yZWJmMGFmMWIzYTIyMzRkMjBkZjgyN2E0NjY1MjFhMzc5
NmRlOTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3ku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtMzUsNiAr
MzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKK2Ns
YXNzIENhY2hlZFNjcmlwdDsKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeTsKIGNsYXNzIEZy
YW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CkBAIC03Myw2ICs3NCw4IEBAIHB1YmxpYzoKICAgICB1
c2luZyBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29u
c3QgUmVzb3VyY2VFcnJvciYpPjsKICAgICB2aXJ0dWFsIHZvaWQgcHJlY29ubmVjdFRvKEZyYW1l
TG9hZGVyJiwgY29uc3QgVVJMJiwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RD
b21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgY2FjaGVCeXRlY29k
ZUZvclNjcmlwdChjb25zdCBDYWNoZWRTY3JpcHQmKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQg
c2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNPbkxpbmUoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA2YzJiMTMxY2I5YThkMjYzNDdhMGE3YzhlNTk4NTQx
OWUzNmM1OTMzLi40OTlmYmM1MjhjMDcxMjY2YTMzZGE0ZTUxNGFjNzVmY2QyMDQ1NWQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTgxNiw0ICs4MTYsOCBA
QCBib29sIFJlc291cmNlTG9hZGVyOjppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdAog
ICAgIHJldHVybiBmcmFtZUxvYWRlcigpICYmIGZyYW1lTG9hZGVyKCktPmlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpOwogfQogCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZXRyaWV2ZURlcml2
ZWREYXRhRnJvbUNhY2hlKGNvbnN0IFN0cmluZyYsIFNoYXJlZEJ1ZmZlciYpCit7Cit9CisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGMzM2E1MDY5MmEzODUz
MTUyM2FiYmIzOThlYmZhMmYwZjY3ZThiYy4uYzRkNzkyN2I2NmJiNDdjMDc1YTNiYTFkNzUwNWIx
ZGU3ZTliMjUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTEw
NSw2ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21DYWNo
ZShjb25zdCBTdHJpbmcmIHR5cGUsIFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaAppbmRleCA5ZTMwNzRkYTMyMTFk
MGVlOTdiOGViMmVkZjQ5MTY5ZWM1ZGYyYTRhLi45YTMwNjBjODRmMDA0YTM5YmYwZTliNzcyN2I3
OGQ2M2Q2MGRlZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXJPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
T3B0aW9ucy5oCkBAIC0xNTIsNiArMTUyLDcgQEAgc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9u
cyA6IHB1YmxpYyBGZXRjaE9wdGlvbnMgewogICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsK
ICNlbmRpZgogICAgIEhhc2hTZXQ8SFRUUEhlYWRlck5hbWUsIFdURjo6SW50SGFzaDxIVFRQSGVh
ZGVyTmFtZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8SFRUUEhlYWRlck5hbWU+PiBodHRw
SGVhZGVyc1RvS2VlcDsKKyAgICBWZWN0b3I8U3RyaW5nPiBkZXJpdmVkQ2FjaGVkRGF0YVR5cGVz
VG9SZXRyaWV2ZTsKICAgICBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnM+IGNzcFJlc3BvbnNlSGVhZGVyczsKICAgICB1bnNpZ25lZCBtYXhSZWRpcmVjdENvdW50
IHsgMjAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAK
aW5kZXggNDgzZWNkM2MxM2Q2MWU2OWEzNThlYjgxY2NhNmUzNjRjYzQ1MjAwOS4uNTBiMzRmZDAw
YjkwZGNjZDAyOTFlODQ0ODI4NWQzMTBiYTU0MmZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03NTEsNiArNzUxLDEzIEBAIHZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikKICAgICBub3RpZnlE
b25lKExvYWRDb21wbGV0aW9uVHlwZTo6Q2FuY2VsKTsKIH0KIAordm9pZCBTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZShjb25zdCBTdHJpbmcmIHR5cGUs
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIGlmIChtX3N0YXRlICE9IEluaXRpYWxpemVk
KQorICAgICAgICByZXR1cm47CisgICAgbV9yZXNvdXJjZS0+ZGlkUmV0cmlldmVEZXJpdmVkRGF0
YUZyb21DYWNoZSh0eXBlLCBidWZmZXIpOworfQorCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpu
b3RpZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZSB0eXBlKQogewogICAgIGlmIChyZWFjaGVkVGVy
bWluYWxTdGF0ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApp
bmRleCA3MWZlMzkyMDdlY2NiN2ZlMmFhNjI0NzY3OTAzMzFhNzlmNTg4ODUxLi4yZjY4NTcyOTRm
Y2I5MmVhODY5MGJjNjY0NzY1Y2Q0N2FlMDRkMmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNzksNiArNzksNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsQ2Fu
Y2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNlbChj
b25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZXRyaWV2ZURlcml2
ZWREYXRhRnJvbUNhY2hlKGNvbnN0IFN0cmluZyYgdHlwZSwgU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7CiAgICAgCiAgICAgdm9pZCB1cGRhdGVSZWZlcnJlclBvbGljeShjb25zdCBTdHJpbmcmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDJiN2Jm
NDI5ZGQ2MjJmYzcyN2UxMDEzMDJlZmZlZWRkNWU0YzM4NDcuLmQ1M2I0YWQzOWJiNWM1ZTM4MjI5
MDZmNWI5OWExNTk5MTkzOTY5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
aHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJs
ZUxvYWRlci5jcHAKQEAgLTg5LDYgKzg5LDkgQEAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMgVGhy
ZWFkYWJsZUxvYWRlck9wdGlvbnM6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgY29weS5pbml0
aWF0b3JDb250ZXh0ID0gdGhpcy0+aW5pdGlhdG9yQ29udGV4dDsKICAgICBjb3B5LmNsaWVudENy
ZWRlbnRpYWxQb2xpY3kgPSB0aGlzLT5jbGllbnRDcmVkZW50aWFsUG9saWN5OwogICAgIGNvcHku
bWF4UmVkaXJlY3RDb3VudCA9IHRoaXMtPm1heFJlZGlyZWN0Q291bnQ7CisgICAgY29weS5kZXJp
dmVkQ2FjaGVkRGF0YVR5cGVzVG9SZXRyaWV2ZS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRoaXMt
PmRlcml2ZWRDYWNoZWREYXRhVHlwZXNUb1JldHJpZXZlLnNpemUoKSk7CisgICAgZm9yIChhdXRv
JiBkZXJpdmVkQ2FjaGVkRGF0YVR5cGUgOiB0aGlzLT5kZXJpdmVkQ2FjaGVkRGF0YVR5cGVzVG9S
ZXRyaWV2ZSkKKyAgICAgICAgY29weS5kZXJpdmVkQ2FjaGVkRGF0YVR5cGVzVG9SZXRyaWV2ZS51
bmNoZWNrZWRBcHBlbmQoZGVyaXZlZENhY2hlZERhdGFUeXBlLmlzb2xhdGVkQ29weSgpKTsKICAg
ICBjb3B5LnByZWZsaWdodFBvbGljeSA9IHRoaXMtPnByZWZsaWdodFBvbGljeTsKIAogICAgIC8v
IFRocmVhZGFibGVMb2FkZXJPcHRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBkMjllNGFkMWZhZTBiNDVmYWYzZTk4YjJmMWM5MTg4
ZDcyMWY4NzY3Li5kYTlmNzBlZWVhYzIwNmFjM2E1ODcwNTk1MjIzYjBiMGRlOGZhZWNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTMx
MCw2ICszMTAsMTMgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxv
YWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIpCiAgICAgICAgICAgICBmYWlsQmVmb3JlU3RhcnRp
bmcoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorCisgICAgICAgIGF1dG8qIGZy
YW1lTG9hZGVyID0gbV9sb2FkZXItPmZyYW1lTG9hZGVyKCk7CisgICAgICAgIGF1dG8qIGZyYW1l
TG9hZGVyQ2xpZW50ID0gZnJhbWVMb2FkZXIgPyAmZnJhbWVMb2FkZXItPmNsaWVudCgpIDogbnVs
bHB0cjsKKyAgICAgICAgaWYgKGZyYW1lTG9hZGVyQ2xpZW50KSB7CisgICAgICAgICAgICBtX3dl
YlBhZ2VJRCA9IGZyYW1lTG9hZGVyQ2xpZW50LT5wYWdlSUQoKS52YWx1ZU9yKDApOworICAgICAg
ICAgICAgbV93ZWJGcmFtZUlEID0gZnJhbWVMb2FkZXJDbGllbnQtPmZyYW1lSUQoKS52YWx1ZU9y
KDApOworICAgICAgICB9CiAgICAgICAgIG1fc3RhdHVzID0gUGVuZGluZzsKICAgICB9KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggYWE4
NTMwZDgwZTFhZTI3NjlhZmI5M2VkZmE2NDM0MmUxNWFlODUxNy4uNjU3MTcwYzA1ZDZmZDRkMDIx
ZGZiMTY1MTcxMjBiZTJjOWJkOTE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmgKQEAgLTE2Miw3ICsxNjIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRMb2FkaW5nKGJvb2wgYikgeyBtX2xvYWRpbmcgPSBiOyB9CiAgICAgdmlydHVhbCBib29sIHN0
aWxsTmVlZHNMb2FkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIFN1YnJlc291cmNl
TG9hZGVyKiBsb2FkZXIoKSB7IHJldHVybiBtX2xvYWRlci5nZXQoKTsgfQorICAgIFN1YnJlc291
cmNlTG9hZGVyKiBsb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2xvYWRlci5nZXQoKTsgfQorICAg
IHVpbnQ2NF90IHdlYlBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUGFnZUlEOyB9CisgICAg
dWludDY0X3Qgd2ViRnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViRnJhbWVJRDsgfQogCiAg
ICAgYm9vbCBhcmVBbGxDbGllbnRzWE1MSHR0cFJlcXVlc3RzKCkgY29uc3Q7CiAKQEAgLTI2Nyw2
ICsyNjksOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWdu
ZWQgbG9uZyBsb25nIC8qIGJ5dGVzU2VudCAqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qIHRvdGFs
Qnl0ZXNUb0JlU2VudCAqLykgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmV0cmlldmVEZXJp
dmVkRGF0YUZyb21DYWNoZShjb25zdCBTdHJpbmcmIC8qIHR5cGUgKi8sIFNoYXJlZEJ1ZmZlciYp
IHsgfQorCiAjaWYgVVNFKEZPVU5EQVRJT04pIHx8IFVTRShTT1VQKQogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYpOwogI2VuZGlmCkBA
IC0zNzAsNiArMzc0LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzVW5rbm93bkVuY29kaW5n
IHsgZmFsc2UgfTsKICAgICBib29sIG1fc3dpdGNoaW5nQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNv
dXJjZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lnbm9yZUZvclJlcXVlc3RDb3VudCB7IGZhbHNl
IH07CisgICAgdWludDY0X3QgbV93ZWJQYWdlSUQgeyAwIH07CisgICAgdWludDY0X3QgbV93ZWJG
cmFtZUlEIHsgMCB9OwogCiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgbV9kZWxldGVkIHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5k
ZXggMWJiZDQ0NDY5MjA3YzI0NjYyMjJkZDIzNWZhMjNmOWIyMmZkZGE2Ny4uMDJlZDliNDUzYTA1
ZjU4MDdjNTEyMDUxMmMyM2FiYjk2Y2FjMjMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTg5LDYgKzg5LDExIEBAIFN0cmluZ1ZpZXcgQ2Fj
aGVkU2NyaXB0OjpzY3JpcHQoKQogICAgIHJldHVybiBtX3NjcmlwdDsKIH0KIAorY29uc3QgSlND
OjpDYWNoZWRCeXRlY29kZSYgQ2FjaGVkU2NyaXB0OjpjYWNoZWRCeXRlY29kZSgpCit7CisgICAg
cmV0dXJuIG1fY2FjaGVkQnl0ZWNvZGU7Cit9CisKIHVuc2lnbmVkIENhY2hlZFNjcmlwdDo6c2Ny
aXB0SGFzaCgpCiB7CiAgICAgaWYgKG1fZGVjb2RpbmdTdGF0ZSA9PSBOZXZlckRlY29kZWQpCkBA
IC0xMDMsNiArMTA4LDE3IEBAIHZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciogZGF0YSkKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhKTsK
IH0KIAordm9pZCBDYWNoZWRTY3JpcHQ6OmRpZFJldHJpZXZlRGVyaXZlZERhdGFGcm9tQ2FjaGUo
Y29uc3QgU3RyaW5nJiB0eXBlLCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3sKKyAgICBBU1NFUlQo
dHlwZSA9PSAiYnl0ZWNvZGUtY2FjaGUiKTsKKyAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci5zaXpl
KCk7CisgICAgTWFsbG9jUHRyPHVpbnQ4X3Q+IG1lbW9yeSA9IE1hbGxvY1B0cjx1aW50OF90Pjo6
bWFsbG9jKHNpemUpOworICAgIGZvciAoY29uc3QgYXV0byYgaXQgOiBidWZmZXIpCisgICAgICAg
IG1lbWNweShtZW1vcnkuZ2V0KCkgKyBpdC5iZWdpblBvc2l0aW9uLCBpdC5zZWdtZW50LT5kYXRh
KCksIGl0LnNlZ21lbnQtPnNpemUoKSk7CisgICAgbV9jYWNoZWRCeXRlY29kZSA9IEpTQzo6Q2Fj
aGVkQnl0ZWNvZGUgeyBXVEZNb3ZlKG1lbW9yeSksIHNpemUgfTsKKyAgICBDYWNoZWRSZXNvdXJj
ZTo6ZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZSh0eXBlLCBidWZmZXIpOworfQorCiB2
b2lkIENhY2hlZFNjcmlwdDo6ZGVzdHJveURlY29kZWREYXRhKCkKIHsKICAgICBtX3NjcmlwdCA9
IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCmlu
ZGV4IGRkNmZiY2MzNjg3ODExZGYwNmVjMWNlMjg0MzFmMzg4YTNkNjAwM2MuLjc5MzRkZGNlOTM2
NjkzMzNhM2VhZTJlYmE1OWVmZjU1NWZmNmUxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VQcm92aWRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM3LDYgKzM4LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfkNhY2hlZFNjcmlwdCgpOwogCiAgICAgU3RyaW5nVmlldyBz
Y3JpcHQoKTsKKyAgICBjb25zdCBKU0M6OkNhY2hlZEJ5dGVjb2RlJiBjYWNoZWRCeXRlY29kZSgp
OwogICAgIHVuc2lnbmVkIHNjcmlwdEhhc2goKTsKIAogcHJpdmF0ZToKQEAgLTQ4LDEyICs1MCwx
NCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNv
bnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KICAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hh
cmVkQnVmZmVyKikgZmluYWw7CisgICAgdm9pZCBkaWRSZXRyaWV2ZURlcml2ZWREYXRhRnJvbUNh
Y2hlKGNvbnN0IFN0cmluZyYsIFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogCiAgICAgdm9pZCBkZXN0
cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0
IENhY2hlZFJlc291cmNlJikgZmluYWw7CiAKICAgICBTdHJpbmcgbV9zY3JpcHQ7CisgICAgSlND
OjpDYWNoZWRCeXRlY29kZSBtX2NhY2hlZEJ5dGVjb2RlOwogICAgIHVuc2lnbmVkIG1fc2NyaXB0
SGFzaCB7IDAgfTsKIAogICAgIGVudW0gRGVjb2RpbmdTdGF0ZSB7IE5ldmVyRGVjb2RlZCwgRGF0
YUFuZERlY29kZWRTdHJpbmdIYXZlU2FtZUJ5dGVzLCBEYXRhQW5kRGVjb2RlZFN0cmluZ0hhdmVE
aWZmZXJlbnRCeXRlcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBiNGQ3Y2I0
MDZjNjllODMwYzI5NDlmNTkxZjg3MmRlNjhhNjJjM2ZjLi44YWJhYWJlOWYzMDkyMzMwMjFjZjYz
ZGMxMzMwMWEzMmY2MTI5MjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNTY4
LDYgKzU2OCwxMiBAQCBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsJiBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6YmxvYlJlZ2lzdHJ5KCkKICAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vz
cy0+bmV0d29ya0Jsb2JSZWdpc3RyeSgpLmJsb2JSZWdpc3RyeSgpOwogfQogCit2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjYWNoZUJ5dGVjb2RlRm9yUmVxdWVzdChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2NF90IHdlYlBhZ2VJRCwgdWlu
dDY0X3Qgd2ViRnJhbWVJRCkKK3sKKyAgICBpZiAoYXV0byogYnl0ZWNvZGVDYWNoZSA9IG1fbmV0
d29ya1Byb2Nlc3MtPmJ5dGVjb2RlQ2FjaGUoKSkKKyAgICAgICAgYnl0ZWNvZGVDYWNoZS0+Y2Fj
aGVCeXRlY29kZUZvclJlcXVlc3QocmVxdWVzdCwgd2ViUGFnZUlELCB3ZWJGcmFtZUlEKTsKK30K
Kwogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q2FwdHVyZUV4dHJhTmV0
d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV9jYXB0dXJlRXh0
cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkID0gZW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaAppbmRleCBhM2NhZTg4MDhjNTUzNjA1ODg4MzYyYTdlNzJjY2M2OTgxNjBjMzQzLi42NGI0
NmQ0ZDZhMTQ5MWI2NzAyYjBhOTZjZTVkOTQ5MzI4OTQzMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCkBAIC0xNzAsNiArMTcwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJC
bG9iVVJMKGNvbnN0IFVSTCYpOwogICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxTdHJpbmc+JiYpPiYmKTsKIAorICAgIHZvaWQgY2FjaGVCeXRlY29kZUZvclJlcXVlc3Qo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgdWludDY0X3QsIHVpbnQ2NF90KTsKKwog
ICAgIHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sKTsK
IAogICAgIHZvaWQgY3JlYXRlU29ja2V0U3RyZWFtKFVSTCYmLCBQQUw6OlNlc3Npb25JRCwgU3Ry
aW5nIGNhY2hlUGFydGl0aW9uLCB1aW50NjRfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCA2N2FmYWJiNjIwNWU0ZDNkYzkxNDZlNGUxNDE3OTk2OWYw
ZGY1MjNmLi4zNjE2M2U5OWY5YTg2ZTI5MWE2ZDBiNTZhYzBkZTQ1Mjc4NjcwN2I1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTUwLDYgKzUwLDggQEAg
bWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIg
ewogICAgIEJsb2JTaXplKFVSTCB1cmwpIC0+ICh1aW50NjRfdCByZXN1bHRTaXplKSBMZWdhY3lT
eW5jCiAgICAgV3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoVmVjdG9yPFN0cmluZz4gYmxvYlVS
THMpIC0+IChWZWN0b3I8U3RyaW5nPiBmaWxlTmFtZXMpIEFzeW5jCiAKKyAgICBDYWNoZUJ5dGVj
b2RlRm9yUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgdWludDY0X3Qg
d2ViUGFnZUlELCB1aW50NjRfdCB3ZWJGcmFtZUlEKQorCiAgICAgU2V0Q2FwdHVyZUV4dHJhTmV0
d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sIGVuYWJsZWQpCiAKICAgICBDcmVhdGVTb2NrZXRT
dHJlYW0oVVJMIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgY2FjaGVQYXJ0
aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggMzM1YzNjYWZhZDY3MTZhMDczNjk1ZGJiM2FjYzc1
MGIyYzJjNTVjZC4uZWVmZGU5ZGNkZGY2ZGQ0ODIzMTg4YWY2ZGExMDkwZDRhOGZmMTY1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjYs
NiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNzLmgi
CisjaW5jbHVkZSAiQnl0ZWNvZGVDYWNoZS5oIgogI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKICNp
bmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrQmxvYlJlZ2lzdHJ5
LmgiCkBAIC0xMzQsNiArMTM1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBOZXR3b3JrQ2Fj
aGU6OkNhY2hlKiBjYWNoZSgpIHsgcmV0dXJuIG1fY2FjaGUuZ2V0KCk7IH0KKyAgICBCeXRlY29k
ZUNhY2hlKiBieXRlY29kZUNhY2hlKCkgeyByZXR1cm4gbV9ieXRlY29kZUNhY2hlLmdldCgpOyB9
CiAKICAgICB2b2lkIHNldFNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBSZWY8TmV0d29y
a1Nlc3Npb24+JiYpOwogICAgIE5ldHdvcmtTZXNzaW9uKiBuZXR3b3JrU2Vzc2lvbihjb25zdCBQ
QUw6OlNlc3Npb25JRCYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNDM5LDYgKzQ0MSw3IEBAIHByaXZh
dGU6CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmPENhY2hlU3RvcmFnZTo6RW5naW5l
Pj4gbV9jYWNoZUVuZ2luZXM7CiAKICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9j
YWNoZTsKKyAgICBSZWZQdHI8Qnl0ZWNvZGVDYWNoZT4gbV9ieXRlY29kZUNhY2hlOwogCiAgICAg
dHlwZWRlZiBIYXNoTWFwPGNvbnN0IGNoYXIqLCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Byb2Nl
c3NTdXBwbGVtZW50PiwgUHRySGFzaDxjb25zdCBjaGFyKj4+IE5ldHdvcmtQcm9jZXNzU3VwcGxl
bWVudE1hcDsKICAgICBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnRNYXAgbV9zdXBwbGVtZW50czsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggY2ZlNThlMWNlOWY3YjJlMjNmZTg3ZWM3
MGFhZTZiM2I0OWM5YzU4Zi4uOTE0ZTZhNmY5MDMzOThmZDNhMTEzNjEyNjdlNGQyODNmNmZkZThh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKQEAgLTgwLDYgKzgwLDcgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKICAgICBlbmNvZGVyIDw8IG5lZWRzQ2VydGlmaWNhdGVJbmZvOwogICAgIGVuY29k
ZXIgPDwgaXNNYWluRnJhbWVOYXZpZ2F0aW9uOwogICAgIGVuY29kZXIgPDwgbWF4aW11bUJ1ZmZl
cmluZ1RpbWU7CisgICAgZW5jb2RlciA8PCBkZXJpdmVkQ2FjaGVkRGF0YVR5cGVzVG9SZXRyaWV2
ZTsKIAogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4oc291cmNlT3JpZ2luKTsKICAg
ICBpZiAoc291cmNlT3JpZ2luKQpAQCAtMTcxLDYgKzE3Miw4IEBAIGJvb2wgTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtS
ZXNvdXJjCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5tYXhpbXVtQnVmZmVyaW5nVGltZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5kZXJpdmVkQ2FjaGVkRGF0YVR5cGVzVG9SZXRyaWV2
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgaGFzU291cmNlT3JpZ2luOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzU291cmNlT3JpZ2luKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuaAppbmRleCBiMDVmZjgwM2YxNzE5MGFkZTMxOWNkYTA2M2RhMDMxNDA2ZTRmMzc2Li5l
YjdhMTQ3YTk4OWE1YmIzMGMwNGFkNTM3ZTc0MDZjMDYzMmE5ZGZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycy5oCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8UmVmUHRyPFNh
bmRib3hFeHRlbnNpb24+PiByZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zOyAvLyBDcmVhdGVk
IGF1dG9tYXRpY2FsbHkgZm9yIHRoZSBzZW5kZXIuCiAgICAgUmVmUHRyPFNhbmRib3hFeHRlbnNp
b24+IHJlc291cmNlU2FuZGJveEV4dGVuc2lvbjsgLy8gQ3JlYXRlZCBhdXRvbWF0aWNhbGx5IGZv
ciB0aGUgc2VuZGVyLgogICAgIFNlY29uZHMgbWF4aW11bUJ1ZmZlcmluZ1RpbWU7CisgICAgVmVj
dG9yPFN0cmluZz4gZGVyaXZlZENhY2hlZERhdGFUeXBlc1RvUmV0cmlldmU7CiAgICAgUmVmUHRy
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBzb3VyY2VPcmlnaW47CiAgICAgV2ViQ29yZTo6RmV0
Y2hPcHRpb25zIG9wdGlvbnM7CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBjc3BSZXNwb25zZUhlYWRlcnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggZWU4ODY5NTQ4YWUyOTRhN2VjNDNhZDUwMTRlY2I0MWI3NWUyNDViYi4uYWQ0MzgxMTFiZjdi
NzNkMzVlNGFkNTY0ZTk0NmNkYTgyMDUwNGVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogCiAjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIkRlcml2ZWREYXRhLmgiCiAjaW5jbHVkZSAiRm9ybURh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nh
Y2hlLmgiCkBAIC00OTUsNyArNDk2LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICAv
LyBXZSB3YWl0IHRvIHJlY2VpdmUgbWVzc2FnZSBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OkNvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlIGJlZm9yZSBjb250aW51aW5nIGEgbG9hZCBmb3IKICAgICAv
LyBhIG1haW4gcmVzb3VyY2UgYmVjYXVzZSB0aGUgZW1iZWRkaW5nIGNsaWVudCBtdXN0IGRlY2lk
ZSB3aGV0aGVyIHRvIGFsbG93IHRoZSBsb2FkLgogICAgIGJvb2wgd2lsbFdhaXRGb3JDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZSA9IGlzTWFpblJlc291cmNlKCk7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCB3aWxs
V2FpdEZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIH0pOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgd2lsbFdh
aXRGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSwgeyB9IH0pOwogICAgIGlmICh3aWxsV2Fp
dEZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKQogICAgICAgICBtX3Jlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICBlbHNlCkBAIC04
MjYsMTYgKzgyNyw0MiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVD
YWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OgogICAgIH0KIAogICAgIGJv
b2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgPSBpc01haW5SZXNvdXJj
ZSgpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVz
cG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2Ug
fSk7CiAKLSAgICBpZiAobmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCi0g
ICAgICAgIG1fY2FjaGVFbnRyeVdhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSA9
IFdURk1vdmUoZW50cnkpOworICAgIGlmICghbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZU1lc3NhZ2UpCisgICAgICAgIHByb2Nlc3NDYWNoZWRFbnRyeUFmdGVyRGlkUmVjZWl2ZVJlc3Bv
bnNlKFdURk1vdmUoZW50cnkpKTsKICAgICBlbHNlIHsKLSAgICAgICAgc2VuZFJlc3VsdEZvckNh
Y2hlRW50cnkoV1RGTW92ZShlbnRyeSkpOwotICAgICAgICBjbGVhbnVwKExvYWRSZXN1bHQ6OlN1
Y2Nlc3MpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVj
ZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlLCB7IH0gfSk7CisgICAgICAgIG1fY2FjaGVFbnRyeVdhaXRpbmdGb3JDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSA9IFdURk1vdmUoZW50cnkpOwogICAgIH0KIH0KIAordm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnByb2Nlc3NDYWNoZWRFbnRyeUFmdGVyRGlkUmVjZWl2ZVJlc3Bv
bnNlKHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBlbnRyeSkKK3sKKyAgICBp
ZiAoZW50cnktPnNvdXJjZVN0b3JhZ2VSZWNvcmQoKS5ib2R5SGFzaCAmJiAhbV9wYXJhbWV0ZXJz
LmRlcml2ZWRDYWNoZWREYXRhVHlwZXNUb1JldHJpZXZlLmlzRW1wdHkoKSkgeworICAgICAgICBh
dXRvIGJvZHlIYXNoID0gKmVudHJ5LT5zb3VyY2VTdG9yYWdlUmVjb3JkKCkuYm9keUhhc2g7CisK
KyAgICAgICAgUmVmPElQQzo6RGVyaXZlZERhdGFDb250YWluZXI+IGRlcml2ZWREYXRhID0gSVBD
OjpEZXJpdmVkRGF0YUNvbnRhaW5lcjo6Y3JlYXRlKFtsb2FkZXIgPSBtYWtlUmVmKCp0aGlzKSwg
ZW50cnkgPSBXVEZNb3ZlKGVudHJ5KV0oY29uc3QgVmVjdG9yPElQQzo6RGVyaXZlZERhdGE+JiYg
ZGVyaXZlZERhdGEpIG11dGFibGUgeworICAgICAgICAgICAgbG9hZGVyLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgZW50cnktPnJlc3BvbnNl
KCksIGZhbHNlLCBkZXJpdmVkRGF0YX0pOworICAgICAgICAgICAgbG9hZGVyLT5zZW5kUmVzdWx0
Rm9yQ2FjaGVFbnRyeShXVEZNb3ZlKGVudHJ5KSk7CisgICAgICAgICAgICBsb2FkZXItPmNsZWFu
dXAoTG9hZFJlc3VsdDo6U3VjY2Vzcyk7CisgICAgICAgIH0pOworCisgICAgICAgIGZvciAoYXV0
byB0eXBlIDogbV9wYXJhbWV0ZXJzLmRlcml2ZWRDYWNoZWREYXRhVHlwZXNUb1JldHJpZXZlKSB7
CisgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBSZXRyaWV2
aW5nIGRlcml2ZWQgZGF0YSBvZiB0eXBlIFwiJXNcIiBmb3IgXCIlc1wiIiwgdHlwZS5hc2NpaSgp
LmRhdGEoKSwgb3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkp
OworICAgICAgICAgICAgTmV0d29ya0NhY2hlOjpEYXRhS2V5IGtleSB7IG9yaWdpbmFsUmVxdWVz
dCgpLmNhY2hlUGFydGl0aW9uKCksIHR5cGUsIGJvZHlIYXNoIH07CisgICAgICAgICAgICBtX2Nh
Y2hlLT5yZXRyaWV2ZURhdGEoa2V5LCBbbG9hZGVyID0gbWFrZVJlZigqdGhpcyksIGRlcml2ZWRE
YXRhID0gZGVyaXZlZERhdGEuY29weVJlZigpLCB0eXBlXSAoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmIChkYXRhKQorICAgICAg
ICAgICAgICAgICAgICBkZXJpdmVkRGF0YS0+YXBwZW5kKElQQzo6RGVyaXZlZERhdGEgeyB0eXBl
LCBJUEM6OkRhdGFSZWZlcmVuY2UgeyBkYXRhLCBzaXplIH0gfSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2VuZChNZXNzYWdlczo6
V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IGVudHJ5LT5yZXNwb25zZSgp
LCBmYWxzZSwgeyB9IH0pOworICAgIHNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5KFdURk1vdmUoZW50
cnkpKTsKKyAgICBjbGVhbnVwKExvYWRSZXN1bHQ6OlN1Y2Nlc3MpOworfQorCiB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6c2VuZFJlc3VsdEZvckNhY2hlRW50cnkoc3RkOjp1bmlxdWVfcHRy
PE5ldHdvcmtDYWNoZTo6RW50cnk+IGVudHJ5KQogewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVT
T1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaAppbmRleCBlN2NjYjgxZmI0ZjlhYTRiNjY1OTQxMjc5ZGQyZGU5NzZjNzc5
ZWI0Li41MWNmZTk5ZDJiYTRiY2QxZGFhNDk5MzgyZmI3Zjc0NGNmMGExMGY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgK
QEAgLTQzLDYgKzQzLDEwIEBAIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKIH0KIAorbmFtZXNwYWNlIElQQyB7CitjbGFzcyBEZXJpdmVkRGF0YTsK
K30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOwpAQCAtMTMxLDYgKzEzNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kUmVzdWx0
Rm9yQ2FjaGVFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4pOwogICAg
IHZvaWQgdmFsaWRhdGVDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVu
dHJ5Pik7CiAgICAgdm9pZCBkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZvckNhY2hlRW50cnkoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVu
dHJ5PiYmKTsKKyAgICB2b2lkIHByb2Nlc3NDYWNoZWRFbnRyeUFmdGVyRGlkUmVjZWl2ZVJlc3Bv
bnNlKHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5Pik7CiAKICAgICBib29sIHNo
b3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVS
TCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJydXB0TG9hZEZvckNTUEZyYW1lQW5jZXN0b3JzT3JY
RnJhbWVPcHRpb25zKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTE5NSw4
ICsyMDAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVk
ZW50aWFscyB7IGZhbHNlIH07CiAgICAgc2l6ZV90IG1fbnVtQnl0ZXNSZWNlaXZlZCB7IDAgfTsK
IAotICAgIHVuc2lnbmVkIG1fcmV0cmlldmVkRGVyaXZlZERhdGFDb3VudCB7IDAgfTsKLQogICAg
IFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVyaW5nVGltZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNo
ZTo6Q2FjaGU+IG1fY2FjaGU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXJlZERhdGFGb3JDYWNoZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQnl0ZWNvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0J5dGVjb2RlQ2FjaGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmYTk5OTI1ZjU1NDA2MzU2
NWY0NTBkMmQ2ZmRmMmQ5N2ZhZDMzMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0J5dGVjb2RlQ2FjaGUuY3BwCkBAIC0wLDAgKzEsMTg1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlQ2FjaGUuaCIKKworI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ2FjaGUuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
cy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbXBsZXRpb24uaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTU291cmNlQ29kZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1BhcnNlckVycm9yLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVk0uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVxdWVzdC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIEJ5dGVjb2RlQ2FjaGU6OlBsYW4gOiBwdWJsaWMgUmVmQ291bnRlZDxC
eXRlY29kZUNhY2hlOjpQbGFuPiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGxhbik7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisKK3B1YmxpYzoKKyAgICBQbGFuKFNIQTE6OkRp
Z2VzdCBib2R5SGFzaCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIGNhY2hlUGFydGl0aW9uKQorICAgICAgICA6IG1fYm9keUhhc2goYm9keUhh
c2gpCisgICAgICAgICwgbV9zb3VyY2Uoc291cmNlLmlzb2xhdGVkQ29weSgpKQorICAgICAgICAs
IG1fdXJsKHVybC5pc29sYXRlZENvcHkoKSkKKyAgICAgICAgLCBtX2NhY2hlUGFydGl0aW9uKGNh
Y2hlUGFydGl0aW9uLmlzb2xhdGVkQ29weSgpKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGNv
bXBpbGUoTmV0d29ya0NhY2hlOjpDYWNoZSogY2FjaGUsIEpTQzo6Vk0mIHZtKQorICAgIHsKKyAg
ICAgICAgTE9HKEJ5dGVjb2RlQ2FjaGUsICJbQnl0ZWNvZGVDYWNoZV1bUGxhbl0gUHJvY2Vzc2lu
ZzogJXMiLCBtX3VybC5hc2NpaSgpLmRhdGEoKSk7CisKKyAgICAgICAgSlNDOjpKU0xvY2tIb2xk
ZXIgbG9ja2VyKHZtKTsKKyAgICAgICAgSlNDOjpTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBKU0M6
Om1ha2VTb3VyY2UobV9zb3VyY2UsIEpTQzo6U291cmNlT3JpZ2luIHsgbV91cmwgfSk7CisgICAg
ICAgIEpTQzo6UGFyc2VyRXJyb3IgZXJyb3I7CisgICAgICAgIEpTQzo6Q2FjaGVkQnl0ZWNvZGUg
Y2FjaGVkQnl0ZWNvZGUgPSBKU0M6OmdlbmVyYXRlQnl0ZWNvZGUodm0sIHNvdXJjZUNvZGUsIGVy
cm9yKTsKKyAgICAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgTE9HKEJ5
dGVjb2RlQ2FjaGUsICJbQnl0ZWNvZGVDYWNoZV1bUGxhbl0gQWJvcnRlZDogZXJyb3Igd2hlbiBn
ZW5lcmF0aW5nIGJ5dGVjb2RlIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwbGFuID0gbWFrZVJlZigqdGhpcyksIGNh
Y2hlLCBjYWNoZWRCeXRlY29kZSA9IFdURk1vdmUoY2FjaGVkQnl0ZWNvZGUpXSgpIHsKKyAgICAg
ICAgICAgIE5ldHdvcmtDYWNoZTo6RGF0YUtleSBkYXRhS2V5IHsgcGxhbi0+bV9jYWNoZVBhcnRp
dGlvbiwgImJ5dGVjb2RlLWNhY2hlIiwgcGxhbi0+bV9ib2R5SGFzaCB9OworICAgICAgICAgICAg
Y2FjaGUtPnN0b3JlRGF0YShkYXRhS2V5LCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihjYWNoZWRCeXRlY29kZS5kYXRhKCkpLCBjYWNoZWRCeXRlY29kZS5zaXplKCkpOworICAgICAg
ICAgICAgTE9HKEJ5dGVjb2RlQ2FjaGUsICJbQnl0ZWNvZGVDYWNoZV1bUGxhbl0gU3RvcmVkOiAl
cyAoJWxkIGJ5dGVzKSIsIHBsYW4tPm1fdXJsLmFzY2lpKCkuZGF0YSgpLCBjYWNoZWRCeXRlY29k
ZS5zaXplKCkpOworICAgICAgICB9KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU0hBMTo6RGln
ZXN0IG1fYm9keUhhc2g7CisgICAgU3RyaW5nIG1fc291cmNlOworICAgIFN0cmluZyBtX3VybDsK
KyAgICBTdHJpbmcgbV9jYWNoZVBhcnRpdGlvbjsKK307CisKK2NsYXNzIEJ5dGVjb2RlQ2FjaGU6
OlRocmVhZCA6IHB1YmxpYyBBdXRvbWF0aWNUaHJlYWQgeworcHVibGljOgorICAgIFRocmVhZChj
b25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBCeXRlY29kZUNhY2hlJiBjYWNoZSkKKyAgICAg
ICAgOiBBdXRvbWF0aWNUaHJlYWQobG9ja2VyLCBjYWNoZS5tX2xvY2ssIGNhY2hlLm1fY29uZGl0
aW9uLmNvcHlSZWYoKSkKKyAgICAgICAgLCBtX2NhY2hlKGNhY2hlKQorICAgIHsKKyAgICB9CisK
KyAgICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJl
dHVybiAiQnl0ZWNvZGVDYWNoZSBIZWxwZXIgVGhyZWFkIjsKKyAgICB9CisKK3Byb3RlY3RlZDoK
KyAgICBQb2xsUmVzdWx0IHBvbGwoY29uc3QgQWJzdHJhY3RMb2NrZXImKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgaWYgKG1fY2FjaGUubV9xdWV1ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBy
ZXR1cm4gUG9sbFJlc3VsdDo6V2FpdDsKKworICAgICAgICBtX3BsYW5zID0gV1RGTW92ZShtX2Nh
Y2hlLm1fcXVldWUpOworICAgICAgICByZXR1cm4gUG9sbFJlc3VsdDo6V29yazsKKyAgICB9CisK
KyAgICBXb3JrUmVzdWx0IHdvcmsoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIW1fcGxhbnMuaXNFbXB0eSgpKTsKKyAgICAgICAgTmV0d29ya0NhY2hlOjpDYWNoZSog
Y2FjaGUgPSBtX2NhY2hlLm1fbmV0d29ya1Byb2Nlc3MuY2FjaGUoKTsKKyAgICAgICAgaWYgKCFj
YWNoZSkKKyAgICAgICAgICAgIHJldHVybiBXb3JrUmVzdWx0OjpTdG9wOworCisgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgcGxhbiA6IG1fcGxhbnMpCisgICAgICAgICAgICBwbGFuLT5jb21waWxl
KGNhY2hlLCAqbV92bSk7CisgICAgICAgIG1fcGxhbnMuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJu
IFdvcmtSZXN1bHQ6OkNvbnRpbnVlOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgdGhy
ZWFkRGlkU3RhcnQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgTE9HKEJ5dGVjb2RlQ2FjaGUs
ICJbQnl0ZWNvZGVDYWNoZV1bVGhyZWFkXSBTdGFydGVkIik7CisgICAgICAgIG1fdm0gPSBKU0M6
OlZNOjpjcmVhdGUoKTsKKyAgICAgICAgV1RGOjpUaHJlYWQ6OmN1cnJlbnQoKS5jaGFuZ2VQcmlv
cml0eSgtMTApOworICAgIH0KKworICAgIHZvaWQgdGhyZWFkSXNTdG9wcGluZyhjb25zdCBBYnN0
cmFjdExvY2tlciYpIG92ZXJyaWRlCisgICAgeworICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBs
b2NrZXIoKm1fdm0pOworICAgICAgICBtX3ZtID0gbnVsbHB0cjsKKyAgICAgICAgTE9HKEJ5dGVj
b2RlQ2FjaGUsICJbQnl0ZWNvZGVDYWNoZV1bVGhyZWFkXSBTdG9wcGVkIik7CisgICAgfQorCitw
cml2YXRlOgorICAgIEJ5dGVjb2RlQ2FjaGUmIG1fY2FjaGU7CisgICAgUGxhbnMgbV9wbGFuczsK
KyAgICBSZWZQdHI8SlNDOjpWTT4gbV92bTsKK307CisKK0J5dGVjb2RlQ2FjaGU6OkJ5dGVjb2Rl
Q2FjaGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzKQorICAgIDogbV9uZXR3b3JrUHJv
Y2VzcyhuZXR3b3JrUHJvY2VzcykKKyAgICAsIG1fbG9jayhCb3g8TG9jaz46OmNyZWF0ZSgpKQor
ICAgICwgbV9jb25kaXRpb24oQXV0b21hdGljVGhyZWFkQ29uZGl0aW9uOjpjcmVhdGUoKSkKK3sK
KyAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBtX3RocmVhZCA9IGFkb3B0UmVm
KG5ldyBUaHJlYWQobG9ja2VyLCAqdGhpcykpOworfQorCitCeXRlY29kZUNhY2hlOjp+Qnl0ZWNv
ZGVDYWNoZSgpCit7Cit9CisKK3ZvaWQgQnl0ZWNvZGVDYWNoZTo6Y2FjaGVCeXRlY29kZUZvclJl
cXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1aW50NjRfdCB3
ZWJQYWdlSUQsIHVpbnQ2NF90IHdlYkZyYW1lSUQpCit7CisgICAgTE9HKEJ5dGVjb2RlQ2FjaGUs
ICJbQnl0ZWNvZGVDYWNoZV0gQ2hlY2tpbmc6ICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS5h
c2NpaSgpLmRhdGEoKSk7CisKKyAgICBpZiAoIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRU
UEZhbWlseSgpKSB7CisgICAgICAgIExPRyhCeXRlY29kZUNhY2hlLCAiW0J5dGVjb2RlQ2FjaGVd
IEFib3J0ZWQ6IHJlcXVlc3QgaW4gbm90IGh0dHAocykiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIE5ldHdvcmtDYWNoZTo6Q2FjaGUqIGNhY2hlID0gbV9uZXR3b3JrUHJvY2Vzcy5j
YWNoZSgpOworICAgIGlmICghY2FjaGUpIHsKKyAgICAgICAgTE9HKEJ5dGVjb2RlQ2FjaGUsICJb
Qnl0ZWNvZGVDYWNoZV0gQWJvcnRlZDogY2FjaGUgaXMgbm90IGF2YWlsYWJsZSIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgY2FjaGUtPnJldHJpZXZlKHJlcXVlc3QsIHsgd2ViUGFn
ZUlELCAgd2ViRnJhbWVJRCB9LCBbYnl0ZWNvZGVDYWNoZSA9IG1ha2VSZWYoKnRoaXMpLCByZXF1
ZXN0ID0gV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVzdCB9XShhdXRvIGVudHJ5LCBh
dXRvKSB7CisgICAgICAgIGlmICghZW50cnkpIHsKKyAgICAgICAgICAgIExPRyhCeXRlY29kZUNh
Y2hlLCAiW0J5dGVjb2RlQ2FjaGVdIEFib3J0ZWQ6IHRoZSBvcmlnaW5hbCByZXF1ZXN0IHdhcyBu
b3QgY2FjaGVkIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY29u
c3QgYXV0byYgcmVjb3JkID0gZW50cnktPnNvdXJjZVN0b3JhZ2VSZWNvcmQoKTsKKyAgICAgICAg
aWYgKCFyZWNvcmQuYm9keUhhc2gpIHsKKyAgICAgICAgICAgIExPRyhCeXRlY29kZUNhY2hlLCAi
W0J5dGVjb2RlQ2FjaGVdIEFib3J0ZWQ6IHJlY29yZCBoYXMgbm8gYm9keUhhc2giKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIExPRyhCeXRlY29kZUNhY2hlLCAi
W0J5dGVjb2RlQ2FjaGVdIEVucXVldWVkIHBsYW4iKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIoKmJ5dGVjb2RlQ2FjaGUtPm1fbG9jayk7CisgICAgICAgIFN0cmluZyBzb3VyY2UgeyByZWNv
cmQuYm9keS5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWNvcmQuYm9keS5zaXplKCkp
IH07CisgICAgICAgIGJ5dGVjb2RlQ2FjaGUtPm1fcXVldWUuYXBwZW5kKGFkb3B0UmVmKCpuZXcg
UGxhbiB7ICpyZWNvcmQuYm9keUhhc2gsIFdURk1vdmUoc291cmNlKSwgcmVxdWVzdC51cmwoKS5z
dHJpbmcoKSwgcmVxdWVzdC5jYWNoZVBhcnRpdGlvbigpIH0pKTsKKyAgICAgICAgYnl0ZWNvZGVD
YWNoZS0+bV9jb25kaXRpb24tPm5vdGlmeUFsbChsb2NrZXIpOworICAgIH0pOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQnl0ZWNvZGVDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9CeXRlY29kZUNhY2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzUyMWMwMWI3NTgyMDU4YjE3NGQ0Nzg1
YmZjMjY4YzY2MmM4YjBiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQnl0ZWNvZGVDYWNoZS5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPHd0Zi9BdXRvbWF0aWNUaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7Cit9OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1Byb2Nlc3M7
CisKK2NsYXNzIEJ5dGVjb2RlQ2FjaGUgOiBwdWJsaWMgUmVmQ291bnRlZDxCeXRlY29kZUNhY2hl
PiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnl0ZWNvZGVDYWNoZSk7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CisKKyAgICBjbGFzcyBQbGFuOworICAgIGNsYXNzIFRocmVhZDsK
KyAgICB1c2luZyBQbGFucyA9IFZlY3RvcjxSZWY8UGxhbj4sIDg+OworCisgICAgZnJpZW5kIGNs
YXNzIFRocmVhZDsKKworcHVibGljOgorICAgIHN0YXRpYyBSZWY8Qnl0ZWNvZGVDYWNoZT4gY3Jl
YXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcykKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEJ5dGVjb2RlQ2FjaGUobmV0d29ya1Byb2Nlc3MpKTsKKyAgICB9CisK
KyAgICB+Qnl0ZWNvZGVDYWNoZSgpOworCisgICAgdm9pZCBjYWNoZUJ5dGVjb2RlRm9yUmVxdWVz
dChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRfdCwgdWludDY0X3QpOwor
Citwcml2YXRlOgorICAgIEJ5dGVjb2RlQ2FjaGUoTmV0d29ya1Byb2Nlc3MmKTsKKworICAgIE5l
dHdvcmtQcm9jZXNzJiBtX25ldHdvcmtQcm9jZXNzOworICAgIFBsYW5zIG1fcXVldWU7CisgICAg
Qm94PExvY2s+IG1fbG9jazsKKyAgICBSZWY8QXV0b21hdGljVGhyZWFkQ29uZGl0aW9uPiBtX2Nv
bmRpdGlvbjsKKyAgICBSZWZQdHI8QXV0b21hdGljVGhyZWFkPiBtX3RocmVhZDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmgKaW5kZXggM2U0Nzg2MWYyMGYxYTdiOGNmYTZjOWU2ZjllNzQ1
MGFkYjZhMWNlZC4uZDZjYzIwODFlY2U2MDQ2NDM0NjUyOTE5N2IzNGUwMWM0NDM1ZDNmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5o
CkBAIC0xMzQsNiArMTM0LDggQEAgcHVibGljOgogCiAgICAgdm9pZCByZXRyaWV2ZURhdGEoY29u
c3QgRGF0YUtleSYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgdWludDhfdCosIHNpemVfdCk+KTsKICAg
ICB2b2lkIHN0b3JlRGF0YShjb25zdCBEYXRhS2V5JiwgIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCk7CisKKyAgICBjb25zdCBTYWx0JiBzYWx0KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdl
LT5zYWx0KCk7IH0KICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IG1ha2VFbnRyeShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEVudHJ5PiBtYWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCmluZGV4
IGMzMDZjY2U0MzA2MWM0NTE5ZTI1NTViZGQ0ZjQ5ODI2MmYzYTE1NTEuLjYyNjk5NmJmOGQ0NDg4
NTAyNGE2ZDNjZWFmMDdmMmZhMmNiNDMyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KQEAgLTEyMiw2
ICsxMjIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3Jr
UHJvY2Vzc0NvY29hKGNvbnN0IE5ldHdvcmtQcm9jZXNzQwogI2VuZGlmCiAKICAgICBtX2NhY2hl
ID0gTmV0d29ya0NhY2hlOjpDYWNoZTo6b3BlbigqdGhpcywgbV9kaXNrQ2FjaGVEaXJlY3Rvcnks
IGNhY2hlT3B0aW9ucyk7CisgICAgbV9ieXRlY29kZUNhY2hlID0gQnl0ZWNvZGVDYWNoZTo6Y3Jl
YXRlKCp0aGlzKTsKICAgICBpZiAoIW1fY2FjaGUpCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE5ldHdvcmtDYWNoZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIHRoZSBXZWJLaXQgbmV0d29yayBk
aXNrIGNhY2hlIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5kZXggYTBkMmFmNjQxMDQzY2EwMWVhYzU0
NTM4ZmFlNDBmYTMwYzY0ZWZkNi4uMDQxMDdjNzJkNTY5OGU0MjFmZTQ5OTQ2NGUwOTI0M2IxM2Yw
MDYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtQcm9jZXNzU291cC5jcHAKQEAgLTExOSw2ICsxMTksNyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aQogI2VuZGlmCiAKICAgICBtX2NhY2hlID0gTmV0d29ya0NhY2hlOjpDYWNoZTo6
b3BlbigqdGhpcywgbV9kaXNrQ2FjaGVEaXJlY3RvcnksIGNhY2hlT3B0aW9ucyk7CisgICAgbV9i
eXRlY29kZUNhY2hlID0gQnl0ZWNvZGVDYWNoZTo6Y3JlYXRlKCp0aGlzKTsKIAogICAgIHN1cHBs
ZW1lbnQ8V2ViQ29va2llTWFuYWdlcj4oKS0+c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwYXJh
bWV0ZXJzLmNvb2tpZUFjY2VwdFBvbGljeSwgT3B0aW9uYWxDYWxsYmFja0lEKCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZXJpdmVkRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZXJpdmVkRGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjhiODU1
MWQxM2UwNGNhZjZjYWFjM2RlOWUzZWFiOGRjZmQzMzQ3MAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Rlcml2ZWREYXRhLmNwcApAQCAtMCwwICsxLDcxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRlcml2ZWREYXRh
LmgiCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkRlY29kZXIuaCIK
KyNpbmNsdWRlICJFbmNvZGVyLmgiCisKK25hbWVzcGFjZSBJUEMgeworCit2b2lkIERlcml2ZWRE
YXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBBcmd1bWVudENvZGVy
PFN0cmluZz46OmVuY29kZShlbmNvZGVyLCBtX3R5cGUpOworICAgIGVuY29kZXIuZW5jb2RlKG1f
ZGF0YSk7Cit9CisKK2Jvb2wgRGVyaXZlZERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBE
ZXJpdmVkRGF0YSYgZGVyaXZlZERhdGEpCit7CisgICAgaWYgKCFBcmd1bWVudENvZGVyPFN0cmlu
Zz46OmRlY29kZShkZWNvZGVyLCBkZXJpdmVkRGF0YS5tX3R5cGUpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKGRlcml2ZWREYXRhLm1fZGF0YSk7Cit9
CisKK09wdGlvbmFsPERlcml2ZWREYXRhPiBEZXJpdmVkRGF0YTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgRGVyaXZlZERhdGEgZGVyaXZlZERhdGE7CisgICAgaWYgKCFkZWNvZGUo
ZGVjb2RlciwgZGVyaXZlZERhdGEpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiB7IGRlcml2ZWREYXRhIH07Cit9CisKK0Rlcml2ZWREYXRhQ29udGFpbmVyOjpEZXJp
dmVkRGF0YUNvbnRhaW5lcihGaW5hbGl6ZXImJiBmaW5hbGl6ZXIpCisgICAgOiBtX2ZpbmFsaXpl
cihXVEZNb3ZlKGZpbmFsaXplcikpCit7Cit9CisKK0Rlcml2ZWREYXRhQ29udGFpbmVyOjp+RGVy
aXZlZERhdGFDb250YWluZXIoKQoreworICAgIG1fZmluYWxpemVyKFdURk1vdmUobV9kZXJpdmVk
RGF0YSkpOworfQorCit2b2lkIERlcml2ZWREYXRhQ29udGFpbmVyOjphcHBlbmQoY29uc3QgRGVy
aXZlZERhdGEmIGRlcml2ZWREYXRhKQoreworICAgIG1fZGVyaXZlZERhdGEuYXBwZW5kKGRlcml2
ZWREYXRhKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EZXJpdmVkRGF0YS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRGVyaXZlZERhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Yjk0YWIxNGU3OGQ4NjNkNWNlNTEyMjEwNWQy
Mjk3MzRlZWIyZmFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRGVyaXZlZERhdGEuaApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBJUEMgeworCitjbGFzcyBEZWNvZGVyOworY2xh
c3MgRW5jb2RlcjsKKworY2xhc3MgRGVyaXZlZERhdGEgeworcHVibGljOgorICAgIERlcml2ZWRE
YXRhKCkgPSBkZWZhdWx0OworCisgICAgRGVyaXZlZERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCisgICAgICAgIDogbV90eXBlKHR5cGUpCisg
ICAgICAgICwgbV9kYXRhKGRhdGEpCisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuICFtX2RhdGEuc2l6ZSgpOyB9CisKKyAgICBjb25zdCBTdHJpbmcmIHR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBjb25zdCBEYXRhUmVmZXJlbmNlJiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisKKyAgICB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBEZXJpdmVkRGF0YSYp
OworICAgIHN0YXRpYyBPcHRpb25hbDxEZXJpdmVkRGF0YT4gZGVjb2RlKERlY29kZXImKTsKKwor
cHJpdmF0ZToKKyAgICBTdHJpbmcgbV90eXBlOworICAgIERhdGFSZWZlcmVuY2UgbV9kYXRhOwor
fTsKKworY2xhc3MgRGVyaXZlZERhdGFDb250YWluZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxEZXJp
dmVkRGF0YUNvbnRhaW5lcj4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERlcml2ZWREYXRh
Q29udGFpbmVyKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKworcHVibGljOgorICAg
IHVzaW5nIEZpbmFsaXplciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPERl
cml2ZWREYXRhPiYmKT47CisKKyAgICBzdGF0aWMgUmVmPERlcml2ZWREYXRhQ29udGFpbmVyPiBj
cmVhdGUoRmluYWxpemVyJiYgZmluYWxpemVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGVyaXZlZERhdGFDb250YWluZXIoV1RGTW92ZShmaW5hbGl6ZXIpKSk7CisgICAg
fQorCisgICAgfkRlcml2ZWREYXRhQ29udGFpbmVyKCk7CisKKyAgICB2b2lkIGFwcGVuZChjb25z
dCBEZXJpdmVkRGF0YSYpOworCitwcml2YXRlOgorICAgIERlcml2ZWREYXRhQ29udGFpbmVyKEZp
bmFsaXplciYmKTsKKworICAgIEZpbmFsaXplciBtX2ZpbmFsaXplcjsKKyAgICBWZWN0b3I8RGVy
aXZlZERhdGE+IG1fZGVyaXZlZERhdGE7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggNTljZWU4NTMwNzkzMDBiOGIxZWIyNDI3YzYzYzYxMGU2
ZDYwNTEwOS4uZTdmNzNlNDlhOGY2MmQ1ZWM2MDE3YzIyZGE1NDI5ZmE2MWQ2YTZmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTQzLDYgKzQzLDcgQEAgZXh0ZXJuICJDIiB7CiAgICAg
TShBdXRvbWF0aW9uKSBcCiAgICAgTShBY3Rpdml0eVN0YXRlKSBcCiAgICAgTShCYWNrRm9yd2Fy
ZCkgXAorICAgIE0oQnl0ZWNvZGVDYWNoZSkgXAogICAgIE0oQ2FjaGVTdG9yYWdlKSBcCiAgICAg
TShDb250ZW50T2JzZXJ2YXRpb24pIFwKICAgICBNKENvbnRleHRNZW51KSBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApp
bmRleCBiMzlkMjY0YzhmOGY2NTc2NDM5Y2RjZGFmNDVjN2NhYTcxZTViOWJlLi43MDRkZDc5ZjE0
ODViZjYxZWY5YTdkMDZiZDdjNTdiZTRhMGQyZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTU5LDYgKzU5
LDcgQEAgTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmNwcCBA
bm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKIAorTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQnl0ZWNvZGVDYWNoZS5jcHAKIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZS5jcHAKIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNw
cAogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2Vh
Y2VmYzU0YjFiZjE1NDE4NTg3NGJjMjhhNmY0NzQzZTI2MDliZC4uNTY3MjU5ZWVlMGNiNDgwNWIz
MmQzZDUwZGIyMzM0Y2I0MDg4MmZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjMsNiArMTIzLDkgQEAKIAkJMEZGMjRBMkQxODc5
RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZGMjRBMkIxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkwRkYyNEEyRTE4NzlFNEJDMDAzQUJGMEMg
LyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkYyNEEyQzE4NzlFNEJDMDAzQUJG
MEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmggKi87IH07CiAJ
CTBGRjI2NEEwMUExRkY5Q0MwMDFGRTc1OSAvKiBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJm
b3JtYW5jZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNzA3Qzc5MUExRkVFQTMwMERBN0E0NSAvKiBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQ
ZXJmb3JtYW5jZURhdGEuaCAqLzsgfTsKKwkJMTREMDFBNzMyMUZBMTgwNjAwQkM1NEU5IC8qIEJ5
dGVjb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0RDAxQTcxMjFGQTE4MDUwMEJDNTRFOSAvKiBCeXRlY29kZUNhY2hlLmggKi87IH07CisJ
CTE0RTI4MDk0MjIwMDBBMEYwMDNCQzU3QiAvKiBEZXJpdmVkRGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRFMjgwOTIyMjAwMDlGOTAwM0JDNTdC
IC8qIERlcml2ZWREYXRhLmggKi87IH07CisJCTE0RTI4MDk1MjIwMDBBMjIwMDNCQzU3QiAvKiBE
ZXJpdmVkRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNEUyODA5MzIyMDAwOUY5MDAzQkM1N0IgLyogRGVyaXZlZERhdGEuY3BwICovOyB9Owog
CQkxNTczOUJCRDFCNDIwNDJEMDBEMjU4QzEgLyogV2ViVXNlck1lZGlhQ2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEY0OTE5QUY3Qjgw
MDAyRUJBQjUgLyogV2ViVXNlck1lZGlhQ2xpZW50LmggKi87IH07CiAJCTFBMDAyRDQzMTk2QjMz
NzAwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwMDJENDIxOTZCMzM3MDAwQjlBRDQ0IC8q
IF9XS1Nlc3Npb25TdGF0ZUludGVybmFsLmggKi87IH07CiAJCTFBMDAyRDQ0MTk2QjMzODkwMEI5
QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBMDAyRDNGMTk2QjMyOTQwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3Rh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MTkyNyw2ICsxOTMwLDEwIEBACiAJCTBGRjI0QTJDMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmg7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkwRkYy
NEEyRjE4NzlFNEZFMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMDU4QzdCMUZFQTU1ODVFMTFDQTJD
QkIgLyogQ29jb2EuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDb2NvYS5mcmFtZXdvcms7
IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db2NvYS5mcmFtZXdvcms7IHNvdXJj
ZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CisJCTE0RDAxQTcwMjFGQTE4MDUwMEJDNTRFOSAvKiBC
eXRlY29kZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5
dGVjb2RlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEQwMUE3MTIx
RkExODA1MDBCQzU0RTkgLyogQnl0ZWNvZGVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCeXRlY29kZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTE0RTI4MDkyMjIwMDA5RjkwMDNCQzU3QiAvKiBEZXJpdmVkRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEZXJpdmVkRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxNEUyODA5MzIyMDAwOUY5MDAzQkM1N0IgLyogRGVyaXZlZERhdGEuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVyaXZlZERhdGEuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQTAwMkQzRTE5NkIzMjk0MDBCOUFENDQgLyogX1dLU2Vz
c2lvblN0YXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dL
U2Vzc2lvblN0YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTAwMkQzRjE5
NkIzMjk0MDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IF9XS1Nlc3Npb25TdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQTAwMkQ0MjE5NkIzMzcwMDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlSW50ZXJuYWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLU2Vzc2lvblN0YXRlSW50ZXJu
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzODUsNiArNTM5Miw4IEBACiAJ
CQkJMUFDNzUzN0UxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCAqLywKIAkJCQlC
QzAzMkQ5RDEwRjQzN0QxMDA1OEMxNUEgLyogRGVjb2Rlci5jcHAgKi8sCiAJCQkJQkMwMzJEOUUx
MEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIuaCAqLywKKwkJCQkxNEUyODA5MzIyMDAwOUY5MDAz
QkM1N0IgLyogRGVyaXZlZERhdGEuY3BwICovLAorCQkJCTE0RTI4MDkyMjIwMDA5RjkwMDNCQzU3
QiAvKiBEZXJpdmVkRGF0YS5oICovLAogCQkJCUJDMDMyRDlGMTBGNDM3RDEwMDU4QzE1QSAvKiBF
bmNvZGVyLmNwcCAqLywKIAkJCQlCQzAzMkRBMDEwRjQzN0QxMDA1OEMxNUEgLyogRW5jb2Rlci5o
ICovLAogCQkJCTQxNTFFNUMzMUZCQjkwQTkwMEU0N0UyRCAvKiBGb3JtRGF0YVJlZmVyZW5jZS5o
ICovLApAQCAtODc2MSw2ICs4NzcwLDggQEAKIAkJRTQ4OUQyODIxQTBBMkJFODAwNzhDMDZBIC8q
IGNhY2hlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkx
NEQwMUE3MDIxRkExODA1MDBCQzU0RTkgLyogQnl0ZWNvZGVDYWNoZS5jcHAgKi8sCisJCQkJMTRE
MDFBNzEyMUZBMTgwNTAwQkM1NEU5IC8qIEJ5dGVjb2RlQ2FjaGUuaCAqLywKIAkJCQk0MTg5N0VE
NjFGNDE1RDg2MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCAqLywKIAkJCQk0MTg5
N0VEMjFGNDE1RDg1MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmggKi8sCiAJCQkJNDFD
ODU4MTkxRjUxMERFRTAwNjVFMDg1IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCAqLywK
QEAgLTkwMTksNiArOTAzMCw3IEBACiAJCQkJRTE3MDg3NkMxNkQ2Q0E2OTAwRjk5MjI2IC8qIEJs
b2JSZWdpc3RyeVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0RjYwMTQzMjE1NUM1QUEyMDAx
RkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NzA1
MTExQkU0MTBFNjAwODc0QUYxIC8qIEJsb2NrU1BJLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNEQw
MUE3MzIxRkExODA2MDBCQzU0RTkgLyogQnl0ZWNvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMzMDY1RkExMjU5MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxODk3RUQ4MUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxRkFCRDJBMUY0REUwMDEwMDZBNkM5NyAvKiBDYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05MDM5LDYgKzkwNTEsNyBAQAogCQkJ
CUM1NUY5MTcxMUM1OTY3NkUwMDI5RTkyRCAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUM3NTM4MDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJEQTYxMEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTE0RTI4MDk0MjIwMDBBMEYwMDNCQzU3QiAvKiBEZXJpdmVk
RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQUIyMTRDNjAwOTAwMTZCODQ3IC8qIERl
dmljZUlkZW50aXR5U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzI5N0Y5RjFDMTdCQkVBMDE1
RjA3MzUgLyogRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
ODkxQjZDMUE2OEMzMEIwMDMwRjM4NiAvKiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIGluIEhl
YWRlcnMgKi8sCkBAIC05MTI4LDYgKzkxNDEsNyBAQAogCQkJCTQxMzA3NUFEMURFODVGNTgwMDM5
RUM2OSAvKiBMaWJXZWJSVENTb2NrZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREM0NTlDMUUz
REJCMjgwMEIxMUY1MSAvKiBMaWJXZWJSVENTb2NrZXRDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxMzA3NUIyMURFODVGNTgwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1NzkwMEI0MDIxRjhGOUI4MDA4MzE3REUgLyogTG9hZE9wdGlt
aXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQxMDg3NjExRDJDNTczRTAwQjg1RjgyIC8qIExv
YWRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzhEQzI5ODIxNTVBMDAyMDA3NEU4
MTUgLyogTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
N0RDRURBQzIxNEM2MDI3MDAxNkI4NDcgLyogTG9jYWxBdXRoZW50aWNhdG9yLmggaW4gSGVhZGVy
cyAqLywKQEAgLTEwNzY2LDYgKzEwNzgwLDcgQEAKIAkJCQkyRDkyQTc3RDIxMkI2QTcxMDBGNDkz
RkQgLyogQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3RTIxMkI2QTcx
MDBGNDkzRkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3
RjIxMkI2QTcxMDBGNDkzRkQgLyogRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNEUy
ODA5NTIyMDAwQTIyMDAzQkM1N0IgLyogRGVyaXZlZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUFCN0Q2MTkxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2NDIyOTkxMkREMDI5MjAwQ0FBRTJDIC8qIERy
YXdpbmdBcmVhTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNjQyMzA4
MTJERDA5RUIwMENBQUUyQyAvKiBEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDUwNmQxNjZhMTVkMGU3NTkzNGQ3MjBlN2Y4
ZGU2MTUyYjE3MDVkMzEuLmI3YjM0MWEwZTNlMTVlNTJjNjZhOGQ4ZWI4ZGNiYzBlZDg3MDNmMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJXZWJVUkxTY2hlbWVU
YXNrUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRSZXNvdXJjZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ2Fj
aGVkU2NyaXB0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaD4KQEAgLTI4MCw2ICsyODEsNyBAQCB2b2lk
IFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVzb3Vy
Y2VMb2FkZXImIHJlc291cmNlTAogICAgIGxvYWRQYXJhbWV0ZXJzLmRlZmVyc0xvYWRpbmcgPSBy
ZXNvdXJjZUxvYWRlci5kZWZlcnNMb2FkaW5nKCk7CiAgICAgbG9hZFBhcmFtZXRlcnMubmVlZHND
ZXJ0aWZpY2F0ZUluZm8gPSByZXNvdXJjZUxvYWRlci5zaG91bGRJbmNsdWRlQ2VydGlmaWNhdGVJ
bmZvKCk7CiAgICAgbG9hZFBhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBtYXhpbXVt
QnVmZmVyaW5nVGltZTsKKyAgICBsb2FkUGFyYW1ldGVycy5kZXJpdmVkQ2FjaGVkRGF0YVR5cGVz
VG9SZXRyaWV2ZSA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5kZXJpdmVkQ2FjaGVkRGF0YVR5
cGVzVG9SZXRyaWV2ZTsKICAgICBsb2FkUGFyYW1ldGVycy5vcHRpb25zID0gcmVzb3VyY2VMb2Fk
ZXIub3B0aW9ucygpOwogICAgIGxvYWRQYXJhbWV0ZXJzLnByZWZsaWdodFBvbGljeSA9IHJlc291
cmNlTG9hZGVyLm9wdGlvbnMoKS5wcmVmbGlnaHRQb2xpY3k7CiAgICAgbG9hZFBhcmFtZXRlcnMu
aXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSA/IHJlc291cmNl
TG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuSFRUUFNVcGdyYWRlRW5hYmxlZCgpIDogZmFsc2U7
CkBAIC02NjQsNiArNjY2LDE2IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmRpZEZpbmlzaFBy
ZWNvbm5lY3Rpb24odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsCiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZXJyb3IpKTsKIH0KIAordm9pZCBXZWJMb2FkZXJTdHJh
dGVneTo6Y2FjaGVCeXRlY29kZUZvclNjcmlwdChjb25zdCBXZWJDb3JlOjpDYWNoZWRTY3JpcHQm
IHNjcmlwdCkKK3sKKyAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBzY3JpcHQud2ViUGFnZUlEKCk7
CisgICAgdWludDY0X3Qgd2ViRnJhbWVJRCA9IHNjcmlwdC53ZWJGcmFtZUlEKCk7CisgICAgaWYg
KCF3ZWJQYWdlSUQgfHwgIXdlYkZyYW1lSUQpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q2Fj
aGVCeXRlY29kZUZvclJlcXVlc3Qoc2NyaXB0LnJlc291cmNlUmVxdWVzdCgpLCB3ZWJQYWdlSUQs
IHdlYkZyYW1lSUQpLCAwKTsKK30KKwogYm9vbCBXZWJMb2FkZXJTdHJhdGVneTo6aXNPbkxpbmUo
KSBjb25zdAogewogICAgIHJldHVybiBtX2lzT25MaW5lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKaW5kZXggMWVmYzkzYzAy
YTNjYTJiOWJmMGVkZjBhYTkwNWU1ZjliYjBkM2JkMy4uNzk5ZWY3N2JhMDMzZmQ1ODA4MmE5YzJi
NzVlNjA1ZDUyOTJhNjRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCkBAIC02OCw2ICs2OCw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHByZWNvbm5lY3RUbyhXZWJDb3JlOjpGcmFtZUxvYWRlciYsIGNvbnN0IFVSTCYsIFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRs
ZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90IHBy
ZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpOwogCisgICAg
dm9pZCBjYWNoZUJ5dGVjb2RlRm9yU2NyaXB0KGNvbnN0IFdlYkNvcmU6OkNhY2hlZFNjcmlwdCYp
IG92ZXJyaWRlOworCiAgICAgdm9pZCBzZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NF
bmFibGVkKGJvb2wpIGZpbmFsOwogCiAgICAgV2ViUmVzb3VyY2VMb2FkZXIqIHdlYlJlc291cmNl
TG9hZGVyRm9ySWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIpIGNv
bnN0IHsgcmV0dXJuIG1fd2ViUmVzb3VyY2VMb2FkZXJzLmdldChpZGVudGlmaWVyKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IGJmODhmZGEzMDA3ZTE2NGZmMzhhOTUyMmFiYjgxZmVmZDdlOWY4NTIuLjJi
NzcxMTUyMzVkMmY2OGY0NzllNmNiY2ZiMDQ5ODM5MjliOGRiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRlci5oIgogCiAjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIkRlcml2ZWREYXRhLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgiCkBAIC0xMTAsNyArMTExLDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1
aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVMKICAgICBtX2NvcmVMb2FkZXItPmRpZFNlbmREYXRhKGJ5
dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBi
b29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQordm9pZCBXZWJSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlLCBjb25z
dCBWZWN0b3I8SVBDOjpEZXJpdmVkRGF0YT4mIGRlcml2ZWREYXRhKQogewogICAgIExPRyhOZXR3
b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Ug
Zm9yICclcycuIFN0YXR1cyAlZC4iLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGlu
MSgpLmRhdGEoKSwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBzdGF0dXMgPSAl
ZCkiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZy
YW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQsIHJlc3BvbnNlLmh0dHBTdGF0
dXNDb2RlKCkpOwpAQCAtMTQwLDYgKzE0MSwxMCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwog
ICAgIH0KIAogICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBX
VEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIGVudHJ5IDogZGVyaXZlZERhdGEpIHsKKyAgICAgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShlbnRyeS5kYXRhKCkuZGF0YSgpLCBlbnRyeS5kYXRhKCkuc2l6ZSgp
KTsKKyAgICAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZXRyaWV2ZURlcml2ZWREYXRhRnJvbUNhY2hl
KGVudHJ5LnR5cGUoKSwgYnVmZmVyLmdldCgpKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwg
aW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IDdmZDc4MzIyMzNhMzYyYzIz
YTkwNGZjMTVlZjM0Y2E2NGE5NjdlYWUuLjU0ZjA1ZDkyMWYwYWMyNzk1YzNkNjY5NGEyYjZmMzBk
NzJjY2JkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtMzMsNiArMzMsNyBAQAogCiBuYW1lc3BhY2UgSVBDIHsK
IGNsYXNzIERhdGFSZWZlcmVuY2U7CitjbGFzcyBEZXJpdmVkRGF0YTsKIH0KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNzYsOSArNzcsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJik7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2
NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UpOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2VNZXNzYWdlLCBjb25zdCBWZWN0b3I8SVBDOjpEZXJpdmVkRGF0YT4mKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2Rl
ZERhdGFMZW5ndGgpOwotICAgIHZvaWQgZGlkUmV0cmlldmVEZXJpdmVkRGF0YShjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgZGlkRmluaXNo
UmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZv
aWQgZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAg
ICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
Lm1lc3NhZ2VzLmluCmluZGV4IDdiOTMyNTZmMDM2ZGQwNDJmNDRiYTgzYTMxOGJiN2I2NjM2ZDQx
YWEuLjMwYjAzZDA2ZDI4MjBjOGI3NmU2NDVjN2QyZTM3ZmUzZjY0OGViY2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiBtZXNzYWdlcyAtPiBXZWJSZXNv
dXJjZUxvYWRlciBMZWdhY3lSZWNlaXZlciB7CiAgICAgV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGly
ZWN0UmVzcG9uc2UpCiAgICAgRGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRf
dCB0b3RhbEJ5dGVzVG9CZVNlbnQpCi0gICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZU1lc3NhZ2UpCisgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3Nh
Z2UsIFZlY3RvcjxJUEM6OkRlcml2ZWREYXRhPiBkYXRhKQogICAgIERpZFJlY2VpdmVEYXRhKElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVu
Z3RoKQogICAgIERpZEZpbmlzaFJlc291cmNlTG9hZChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJp
Y3MgbmV0d29ya0xvYWRNZXRyaWNzKQogICAgIERpZEZhaWxSZXNvdXJjZUxvYWQoV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2Vi
Q29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCmluZGV4IDU1YjM2
OTc1MzA2NTgyMTRiYzk3OWE4NzkyYjY2MDcyNmQ4Mjk2ZGQuLmQwNmY3NWYwNjU1M2NlZjM0MjRh
NTRmYzI4Yzk2ZjFkYmExOWIzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2Vi
Q29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaApAQCAtNjAs
NiArNjAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHByZWNvbm5lY3RUbyhXZWJDb3JlOjpGcmFt
ZUxvYWRlciYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQ
cmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAKKyAgICB2b2lkIGNhY2hlQnl0
ZWNvZGVGb3JTY3JpcHQoY29uc3QgV2ViQ29yZTo6Q2FjaGVkU2NyaXB0JikgZmluYWwgeyB9CisK
ICAgICB2b2lkIHNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoYm9vbCkg
ZmluYWwgeyB9CiAKICAgICBib29sIGlzU2VyaWFsTG9hZGluZ0VuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzU2VyaWFsTG9hZGluZ0VuYWJsZWQ7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367681</attachid>
            <date>2019-04-17 14:52:11 -0700</date>
            <delta_ts>2019-05-11 05:40:57 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-194047-20190417235149.patch</filename>
            <type>text/plain</type>
            <size>112200</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0MTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZmYyYjUwYTVjZjczODczN2UyM2Y4YjhlZDU4YzQyZDMzMWQwODA4Li5kYWFkMzU4NTA2Mzg5ZDky
NDc0YWNhYzE0NTNjM2ZhOWFkMzI5MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxOS0wNC0xNyAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBJbnRlZ3JhdGUgSlNDIGJ5dGVjb2RlIGNhY2hlIHdpdGggV2ViS2l0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQwNDcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQnl0ZWNv
ZGVDYWNoZU1ldGFkYXRhLCBhIGRhdGEgc3RydWN0dXJlIGZvciByZWNvcmRpbmcgd2hpY2ggQ29k
ZUJsb2NrcyBoYXZlCisgICAgICAgIGJlZW4gZXhlY3V0ZWQgdGhhdCBjYW4gbGF0ZXIgYmUgZmVk
IGJhY2sgaW50byBnZW5lcmF0ZShQcm9ncmFtfE1vZHVsZSlCeXRlY29kZQorICAgICAgICB0byBk
ZXRlcm1pbmUgd2hhdCB0byBnZW5lcmF0ZSBieXRlY29kZSBmb3IuCisKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQ2FjaGVNZXRhZGF0YS5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpCeXRlY29kZUNhY2hlTWV0YWRhdGE6OnJlY29yZENhY2hlZEZ1bmN0
aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVDYWNoZU1ldGFkYXRhOjpzaG91
bGRDYWNoZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQ2FjaGVNZXRhZGF0YTo6ZGVj
b2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVDYWNoZU1ldGFkYXRhOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQ2FjaGVNZXRhZGF0YS5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVDYWNoZU1ldGFkYXRhOjppc0VtcHR5IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVDYWNoZU1ldGFkYXRhOjpFbnRyeTo6RW50cnkpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUNhY2hlTWV0YWRhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlQ2FjaGVNZXRhZGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVD
YWNoZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JGdW5j
dGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmg6CisgICAgICAgICogcnVudGlt
ZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVQcm9ncmFtQnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpnZW5lcmF0ZU1vZHVsZUJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
ZXZhbHVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5oOgorCiAyMDE5LTA0LTEw
ICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBpbmNyZW1lbnRhbCBieXRlY29kZSBjYWNoZSB1cGRhdGVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE1MmJkMTRm
MzkxMTJlOTE0YjI3YzdiY2YyZTgxNWVlZjY3MDEwNTIuLjJmY2FhODk5NGQyNmE5OTdkZTFiMGIx
ZmFkNWEwM2Q2MzAyYTZmN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDQtMTcgIFRhZGV1
IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CisKKyAgICAgICAgSW50ZWdyYXRlIEpTQyBi
eXRlY29kZSBjYWNoZSB3aXRoIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQgd2hlbiByZWFkaW5nIGtlcm4uYm9vdHNl
c3Npb251dWlkLiBPdGhlcndpc2UsIHdlIGNyYXNoIHdoZW4KKyAgICAgICAgcmV0dXJuaW5nIHRo
ZSB1bmluaXRpYWxpemVkIExhenlOZXZlckRlc3Ryb3llZCB2YWx1ZS4KKworICAgICAgICAqIHd0
Zi9VVUlELmNwcDoKKyAgICAgICAgKFdURjo6Ym9vdFNlc3Npb25VVUlEU3RyaW5nKToKKwogMjAx
OS0wNC0xMCAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIERvIG5vdCBnZW5lcmF0ZSBlbXB0eSB1bmlmaWVkIHNvdXJjZXMgd2hlbiB1bmlmaWVkIGJ1
aWxkcyBhcmUgZGlzYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5MDJhNmZkMWY0OTk4MjJlMjZhYTA3NDc2
ZThiNDgxY2UyM2I5MjMxLi44NDA1ZDJkZmU0YzAzNzZmZGUwODI1NzlmMTczMjNhZGU1Mjg4ZTY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTktMDQtMTcgIFRhZGV1IFphZ2FsbG8g
IDx0emFnYWxsb0BhcHBsZS5jb20+CisKKyAgICAgICAgSW50ZWdyYXRlIEpTQyBieXRlY29kZSBj
YWNoZSB3aXRoIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk0MDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIENhY2hlZEJ5dGVjb2RlIHRvIENhY2hlZFNjcmlwdC4KKyAgICAgICAgQWRk
IHRoZSB0eXBlIG9mIHRoZSBzY3JpcHQgYmVpbmcgbG9hZGVkIGludG8gdGhlIHJlcXVlc3QgKGNs
YXNzaWMgb3IgbW9kdWxlKS4KKyAgICAgICAgTm90aWZ5IHRoZSBsb2FkZXIgd2hlbiBieXRlY29k
ZSBzaG91bGQgYmUgY2FjaGVkIGZvciB0aGUgbmV4dCByZXF1ZXN0LgorCisgICAgICAgICogU291
cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkU2NyaXB0RmV0Y2hlcjo6cmVxdWVzdE1vZHVsZVNjcmlwdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHRGZXRjaGVyOjpyZXF1ZXN0U2NyaXB0V2l0
aENhY2hlIGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVy
Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudENhY2hlZFNjcmlw
dEZldGNoZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0U291cmNlUHJvdmlk
ZXI6OmNhY2hlQnl0ZWNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0
U291cmNlUHJvdmlkZXI6OnVwZGF0ZUNhY2hlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyOjpjb21taXRDYWNoZWRCeXRlY29kZSBjb25zdCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyOjp+Q2FjaGVkU2NyaXB0U291
cmNlUHJvdmlkZXIpOgorICAgICAgICAqIGRvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVDbGFzc2ljU2NyaXB0Ojpsb2FkKToKKyAgICAgICAg
KiBkb20vU2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXI6OnJlcXVlc3RNb2R1bGVTY3Jp
cHQgY29uc3QpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQcmVsb2FkUmVxdWVzdDo6cmVzb3VyY2VSZXF1ZXN0KToK
KyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaW5r
TG9hZGVyOjpwcmVsb2FkSWZOZWVkZWQpOgorICAgICAgICAqIGxvYWRlci9Mb2FkZXJTdHJhdGVn
eS5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZSk6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZGVyT3B0aW9ucy5oOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVEZXJp
dmVkRGF0YUZyb21DYWNoZSk6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZTo6ZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZSk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRT
Y3JpcHQ6OmNhY2hlZEJ5dGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6
ZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oOgorCiAyMDE5LTA0LTA5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3RhcnRSZW5k
ZXJpbmcgbGVha3MgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlIGlmIG9mZmxpbmVSZW5kZXIg
ZXhpc3RzIGVhcmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM5MjBkZjgxOTQ3NGY1N2ZhMWUxODgwNzdmMWUyYjhh
ZDM3MjhhODEuLmIyYTQ4MjgxZWQ3MWM5NmZkMzg2NGUyYTIwMWM0MzNhMWE1OWRiMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMTktMDQtMTcgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxs
b0BhcHBsZS5jb20+CisKKyAgICAgICAgSW50ZWdyYXRlIEpTQyBieXRlY29kZSBjYWNoZSB3aXRo
IFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk0MDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmV2ZXJ0IHBhcnQgb2YgdGhlIGNvZGUgZGVsZXRlZCBpbiByMjM4OTMzLCBidXQgY2hhbmdlIGl0
IHRvIHJldHJpZXZlIHRoZQorICAgICAgICBkZXJpdmVkIGRhdGEgc3luY2hyb25vdXNseS4gT3Ro
ZXJ3aXNlLCB0aGUgYnl0ZWNvZGUgd291bGQgbm90IGJlIGF2YWlsYWJsZQorICAgICAgICBpbiB0
aW1lIGZvciBleGVjdXRpb24uCisKKyAgICAgICAgQWRkaXRpb25hbGx5IGFkZCBCeXRlY29kZUNh
Y2hlIHRvIHRoZSBOZXR3b3JrUHJvY2VzcyB0byBnZW5lcmF0ZSBhbmQgc3RvcmUKKyAgICAgICAg
Ynl0ZWNvZGUgZm9yIHJlcXVlc3RzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y2FjaGVCeXRlY29kZUZvclJlcXVlc3QpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmJ5dGVjb2RlQ2FjaGUpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5Vc2VCeXRlY29kZUNhY2hlIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
dHJpZXZlQ2FjaGVFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6bG9hZEJ5dGVjb2RlQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnByb2Nlc3NDYWNoZWRFbnRyeUFmdGVyRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9CeXRlY29kZUNhY2hlLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OkJ5dGVjb2RlQ2FjaGU6OkJ5dGVjb2RlQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpC
eXRlY29kZUNhY2hlOjp+Qnl0ZWNvZGVDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OkJ5dGVjb2Rl
Q2FjaGU6OnN0b3JlTWV0YWRhdGFGb3JSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6Qnl0ZWNv
ZGVDYWNoZTo6Ynl0ZWNvZGVGb3JSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6Qnl0ZWNvZGVD
YWNoZTo6Z2VuZXJhdGVCeXRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Qnl0ZWNvZGVDYWNoZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9D
YWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oLgorICAgICAgICAoV2ViS2l0OjpCeXRlY29kZUNh
Y2hlOjpjcmVhdGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6S2V5OjpLZXkpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzc0NvY29hKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vz
cy5zYi5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291
cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxp
emVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Rlcml2ZWREYXRhLmNw
cDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0
Y2hlci5oLgorICAgICAgICAoSVBDOjpEZXJpdmVkRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKElQQzo6RGVyaXZlZERhdGE6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Rl
cml2ZWREYXRhLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hl
ZFNjcmlwdEZldGNoZXIuaC4KKyAgICAgICAgKElQQzo6RGVyaXZlZERhdGE6OkRlcml2ZWREYXRh
KToKKyAgICAgICAgKElQQzo6RGVyaXZlZERhdGE6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAo
SVBDOjpEZXJpdmVkRGF0YTo6dHlwZSBjb25zdCk6CisgICAgICAgIChJUEM6OkRlcml2ZWREYXRh
OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9Mb2dnaW5nLmg6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
TG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpjYWNoZUJ5dGVjb2RlRm9yU2NyaXB0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2Vi
UHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjoKKwogMjAxOS0wNC0xMCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ3Jlc3Npb24ocjI0MDU2Mikg
QXVkaW8gc29tZXRpbWVzIGtlZXBzIHBsYXlpbmcgaW4gcHJldmlvdXMgcHJvY2VzcyBhZnRlciBh
IHByb2Nlc3Mtc3dhcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCAzNGUyMGE3MDZkZjU2NmYyNTIz
NTMxMDQ1ZTRhZTQxMWEyMDAxZWRiLi40ZmJmODM3MTJkZTA2MzM3NWM5NGFiNDRhMDVjNTdiMDA3
YzM2YzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA0LTE3
ICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgorCisgICAgICAgIEludGVncmF0
ZSBKU0MgYnl0ZWNvZGUgY2FjaGUgd2l0aCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBMb2FkZXJTdHJhdGVneSdzIGBjYWNo
ZUJ5dGVjb2RlRm9yU2NyaXB0YCBhcyBuby1vcC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oOgorCiAyMDE5LTA0LTA4ICBEb24gT2xtc3RlYWQg
IDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgW0NNYWtlXVtXaW5DYWlyb10gU2Vw
YXJhdGUgY29waWVkIGhlYWRlcnMgaW50byBkaWZmZXJlbnQgZGlyZWN0b3JpZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2IzODI3OGZlY2IyODc1MjgwZmUwMmQ2MzZjOTQ4NzNk
N2RkNTZlOC4uOWY3ODBiNjkxODgwYmYxZTMxMDhhMjYxNmI4Njk0NDY2Yzc0ZjRmOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc2Miw2ICs3NjIsNyBAQAogCQkxNDE0NDhDRDEz
QTE3ODM3MDBGNUJBMUEgLyogVGlueUJsb29tRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDE0NDhDQzEzQTE3ODM3MDBGNUJBMUEgLyogVGlu
eUJsb29tRmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMTQxNTAxMzMxNTRCQjEzRjAwNUQ4Qzk4IC8qIFdlYWtTZXRJbmxpbmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDE1MDEzMjE1NEJC
MTNGMDA1RDhDOTggLyogV2Vha1NldElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDIwMUQ1OTFERUNGMjZBMDA5MDRCRDMgLyogU291
cmNlQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTQyMDFENTgxREVDRjI2QTAwOTA0QkQzIC8qIFNvdXJjZUNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDI0M0NDMzIxRjI3N0RDMDA0QjI2
NEUgLyogQnl0ZWNvZGVDYWNoZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNDI0M0NDMjIxRjI3N0QyMDA0QjI2NEUgLyogQnl0ZWNvZGVD
YWNoZU1ldGFkYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMTQyOUQ3N0MwRUQyMEQ3MzAwQjg5NjE5IC8qIEludGVycHJldGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDI5RDc3QjBFRDIwRDcz
MDBCODk2MTkgLyogSW50ZXJwcmV0ZXIuaCAqLzsgfTsKIAkJMTQyOUQ4REUwRUQyMjA1QjAwQjg5
NjE5IC8qIENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQyOUQ4REMwRUQyMjA1QjAwQjg5NjE5IC8qIENhbGxGcmFtZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MjlEOTMwMEVEMjJE
NzAwMEI4OTYxOSAvKiBKSVQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0MjlEOTJFMEVEMjJENzAwMEI4OTYxOSAvKiBKSVQuaCAqLzsgfTsKQEAgLTMx
NDksNiArMzE1MCw3IEBACiAJCTE0MTUwMTMyMTU0QkIxM0YwMDVEOEM5OCAvKiBXZWFrU2V0SW5s
aW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrU2V0SW5saW5lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDIwMUQ1ODFERUNGMjZBMDA5MDRCRDMg
LyogU291cmNlQ29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VD
b2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MjEzNTlBMEE2NzdGNEYwMEE4
MTk1RSAvKiBKU0Jhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQyNDNDQzIyMUYyNzdE
MjAwNEIyNjRFIC8qIEJ5dGVjb2RlQ2FjaGVNZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCeXRlY29kZUNhY2hlTWV0YWRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMTQyNzExMzgwQTQ2MEJCQjAwODBFRUVBIC8qIEpTQmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Jhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMTQyOUQ3N0IwRUQyMEQ3MzAwQjg5NjE5IC8qIEludGVycHJldGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVycHJldGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTE0MjlEN0QzMEVEMjEyODIwMEI4OTYxOSAvKiBJbnRlcnByZXRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRlcnByZXRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03ODQ5LDYgKzc4NTEsNyBAQAogCQkJCTBG
NjM5NDUyMTVEMDcwNTEwMDZBNTk3QyAvKiBBcnJheVByb2ZpbGUuaCAqLywKIAkJCQlDMkZDQUUw
QzE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCAqLywKIAkJCQlDMkZD
QUUwRDE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVCYXNpY0Jsb2NrLmggKi8sCisJCQkJMTQy
NDNDQzIyMUYyNzdEMjAwNEIyNjRFIC8qIEJ5dGVjb2RlQ2FjaGVNZXRhZGF0YS5oICovLAogCQkJ
CTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8sCiAJ
CQkJRTNEODc3NzExRTY1QzA4OTAwQkU5NDVBIC8qIEJ5dGVjb2RlRHVtcGVyLmNwcCAqLywKIAkJ
CQlFM0Q4Nzc3MjFFNjVDMDg5MDBCRTk0NUEgLyogQnl0ZWNvZGVEdW1wZXIuaCAqLywKQEAgLTg3
MzYsNiArODczOSw3IEBACiAJCQkJMEZCN0YzOTcxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZs
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTgxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRl
cmZseUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRkNBRTExMTdBOUMyNEUwMDM0Qzcz
NSAvKiBCeXRlY29kZUJhc2ljQmxvY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTE0MjQzQ0MzMjFG
Mjc3REMwMDRCMjY0RSAvKiBCeXRlY29kZUNhY2hlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFM0Q4Nzc3NDFFNjVDMEEwMDBCRTk0NUEgLyogQnl0ZWNvZGVEdW1w
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzIzMEVEMUNFMzMwMEYxRjY4MSAvKiBCeXRl
Y29kZUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQK
aW5kZXggM2U1ODU5Y2RmNmY2NmI5YjUyNGQ3Nzc1ZTdjNWNlN2JmM2JjNTEzNS4uYTEwYjI0YjNj
NmM2Y2ZkYWJlZTZhODBjNzY5MGIzZGYyYjFjZmRjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dApAQCAtMTkyLDYgKzE5Miw3IEBAIGJ5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKIGJ5dGVj
b2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwCiBieXRlY29kZS9BcnJheVByb2ZpbGUuY3Bw
CiBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCitieXRlY29kZS9CeXRlY29kZUNhY2hl
TWV0YWRhdGEuY3BwCiBieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKIGJ5dGVjb2RlL0J5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUNhY2hlTWV0YWRhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlQ2FjaGVNZXRhZGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UwNDU4NGQ4OWM4OTI1OThlOGY0
MDM4MGY2ZTE1MmZkMmJjODFjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUNhY2hlTWV0YWRhdGEuY3BwCkBAIC0wLDAgKzEsODYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVDYWNoZU1ldGFkYXRhLmgiCisKKyNpbmNsdWRl
ICJTb3VyY2VDb2RlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIEJ5dGVjb2RlQ2FjaGVN
ZXRhZGF0YTo6cmVjb3JkQ2FjaGVkRnVuY3Rpb25Db2RlQmxvY2soY29uc3QgU291cmNlQ29kZSYg
c291cmNlQ29kZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIGF1dG8gcmVz
dWx0ID0gbV9tYXAuYWRkKHNvdXJjZUNvZGUuc3RhcnRPZmZzZXQoKSwgRW50cnkgeyB9KTsKKyAg
ICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIENvZGVGb3JDYWxsOgorICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlLm1fY29kZUZvckNhbGwgPSB0cnVlOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUu
bV9jb2RlRm9yQ29uc3RydXQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK2Jv
b2wgQnl0ZWNvZGVDYWNoZU1ldGFkYXRhOjpzaG91bGRDYWNoZShjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2VDb2RlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpIGNvbnN0Cit7CisgICAgYXV0
byBpdGVyYXRvciA9IG1fbWFwLmZpbmQoc291cmNlQ29kZS5zdGFydE9mZnNldCgpKTsKKyAgICBp
ZiAoaXRlcmF0b3IgPT0gbV9tYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgQ29kZUZvckNhbGw6CisgICAgICAgIHJldHVybiBp
dGVyYXRvci0+dmFsdWUubV9jb2RlRm9yQ2FsbDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
b2RlRm9yQ29uc3RydWN0OgorICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlLm1fY29kZUZv
ckNvbnN0cnV0OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK0J5dGVjb2RlQ2FjaGVNZXRh
ZGF0YSBCeXRlY29kZUNhY2hlTWV0YWRhdGE6OmRlY29kZShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3Qgc2l6ZSkKK3sKKyAgICBBU1NFUlQoIShzaXplICUgc2l6ZW9mKEVuY29kZWRFbnRyeSkp
KTsKKyAgICBzaXplX3QgbGVuZ3RoID0gc2l6ZSAvIHNpemVvZihFbmNvZGVkRW50cnkpOworICAg
IEVuY29kZWRFbnRyeSogZW50cmllcyA9IGJpdHdpc2VfY2FzdDxFbmNvZGVkRW50cnkqPihkYXRh
KTsKKyAgICBCeXRlY29kZUNhY2hlTWV0YWRhdGEgbWV0YWRhdGE7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQorICAgICAgICBtZXRhZGF0YS5tX21hcC5hZGQoZW50
cmllc1tpXS5rZXksIGVudHJpZXNbaV0udmFsdWUpOworICAgIHJldHVybiBtZXRhZGF0YTsKK30K
Kworc3RkOjpwYWlyPE1hbGxvY1B0cjx1aW50OF90Piwgc2l6ZV90PiBCeXRlY29kZUNhY2hlTWV0
YWRhdGE6OmVuY29kZSgpIGNvbnN0Cit7CisgICAgc2l6ZV90IHNpemUgPSBtX21hcC5zaXplKCkg
KiBzaXplb2YoRW5jb2RlZEVudHJ5KTsKKyAgICBNYWxsb2NQdHI8dWludDhfdD4gZGF0YSA9IE1h
bGxvY1B0cjx1aW50OF90Pjo6bWFsbG9jKHNpemUpOworICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7
CisgICAgZm9yIChjb25zdCBFbmNvZGVkRW50cnkmIGVudHJ5IDogbV9tYXApIHsKKyAgICAgICAg
dWludDhfdCogcHRyID0gZGF0YS5nZXQoKSArIChvZmZzZXQgKiBzaXplb2YoRW5jb2RlZEVudHJ5
KSk7CisgICAgICAgIG1lbWNweShwdHIsICZlbnRyeSwgc2l6ZW9mKGVudHJ5KSk7CisgICAgICAg
ICsrb2Zmc2V0OworICAgIH0KKyAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoV1RGTW92ZShkYXRh
KSwgc2l6ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ2FjaGVNZXRhZGF0YS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ2FjaGVNZXRhZGF0YS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjcwNDE4OTkzNjEzODYxODVjZDI1MzVmZDJjZjkyODJlZTAxZDM4Y2EKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDYWNoZU1ldGFkYXRh
LmgKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL01hbGxvY1B0ci5o
PgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
U291cmNlQ29kZTsKKworY2xhc3MgQnl0ZWNvZGVDYWNoZU1ldGFkYXRhIHsKKyAgICBjbGFzcyBF
bnRyeTsKKworICAgIHVzaW5nIEVuY29kZWRFbnRyeSA9IEtleVZhbHVlUGFpcjxpbnQsIEVudHJ5
PjsKKworcHVibGljOgorCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9tYXAu
aXNFbXB0eSgpOyB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlY29yZENhY2hlZEZ1
bmN0aW9uQ29kZUJsb2NrKGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHNob3VsZENhY2hlKGNvbnN0IFNvdXJjZUNv
ZGUmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKSBjb25zdDsKKworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBCeXRlY29kZUNhY2hlTWV0YWRhdGEgZGVjb2RlKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0ZDo6cGFpcjxNYWxsb2NQdHI8dWludDhf
dD4sIHNpemVfdD4gZW5jb2RlKCkgY29uc3Q7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNv
ZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPEJ5dGVjb2RlQ2FjaGVNZXRhZGF0
YT4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBjbGFzcyBFbnRyeSB7CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBCeXRlY29kZUNhY2hlTWV0YWRhdGE7CisKKyAgICBwdWJsaWM6Cisg
ICAgICAgIEVudHJ5KCkKKyAgICAgICAgICAgIDogbV9jb2RlRm9yQ2FsbChmYWxzZSkKKyAgICAg
ICAgICAgICwgbV9jb2RlRm9yQ29uc3RydXQoZmFsc2UpCisgICAgICAgIHsKKyAgICAgICAgfQor
CisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBtX2NvZGVGb3JDYWxsIDogMTsKKyAgICAgICAg
Ym9vbCBtX2NvZGVGb3JDb25zdHJ1dCA6IDE7CisgICAgfTsKKworICAgIEhhc2hNYXA8aW50LCBF
bnRyeT4gbV9tYXA7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgordm9pZCBCeXRl
Y29kZUNhY2hlTWV0YWRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAg
IHN0ZDo6cGFpcjxNYWxsb2NQdHI8dWludDhfdD4sIHNpemVfdD4gZGF0YSA9IGVuY29kZSgpOwor
ICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGRhdGEuc2Vjb25kKTsKKyAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRhLmZpcnN0LmdldCgpLCBkYXRhLnNlY29u
ZCwgYWxpZ25vZihFbmNvZGVkRW50cnkpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rl
cj4KK09wdGlvbmFsPEJ5dGVjb2RlQ2FjaGVNZXRhZGF0YT4gQnl0ZWNvZGVDYWNoZU1ldGFkYXRh
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICB1aW50NjRfdCBzaXplOworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgTWFsbG9jUHRyPHVpbnQ4X3Q+IGRhdGEgPSBNYWxsb2NQdHI8dWludDhfdD46Om1hbGxvYyhz
aXplKTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGEuZ2V0KCks
IHNpemUsIGFsaWdub2YoRW5jb2RlZEVudHJ5KSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIEJ5dGVjb2RlQ2FjaGVNZXRhZGF0YTo6ZGVjb2RlKGRhdGEuZ2V0KCks
IHNpemUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDkzMTM0OGQ2MjExOWYzNGUzMTA3YWEwNzMxZDVh
MmZhZTY2N2ZlMzEuLjYzZWQzMzQyMjdmOGNiZGY5MWJiNWMyYTZiNGJjNmZkNGNhZjQ4OGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29kZUNhY2hlLmgiCiAK
KyNpbmNsdWRlICJCeXRlY29kZUNhY2hlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJJbmRpcmVjdEV2
YWxFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1i
ZXJzLmg+CiAKQEAgLTE3NywxNiArMTc4LDIwIEBAIHZvaWQgQ29kZUNhY2hlOjp3cml0ZShWTSYg
dm0pCiAgICAgICAgIHdyaXRlQ29kZUJsb2NrKHZtLCBpdC5rZXksIGl0LnZhbHVlKTsKIH0KIAot
dm9pZCBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrRm9yRnVuY3Rpb25zKFZNJiB2bSwgVW5saW5r
ZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJlbnRT
b3VyY2UsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK3Zv
aWQgZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvckZ1bmN0aW9ucyhWTSYgdm0sIFVubGlua2Vk
Q29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgY29uc3QgU291cmNlQ29kZSYgcGFyZW50U291
cmNlLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0
IEJ5dGVjb2RlQ2FjaGVNZXRhZGF0YSogbWV0YWRhdGEpCiB7CiAgICAgYXV0byBnZW5lcmF0ZSA9
IFsmXShVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGNvbnN0cnVjdG9yS2luZCkgewogICAgICAgICBpZiAoY29uc3Ry
dWN0b3JLaW5kID09IENvZGVGb3JDb25zdHJ1Y3QgJiYgU291cmNlUGFyc2VNb2RlU2V0KFNvdXJj
ZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3lu
Y01ldGhvZE1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbk1vZGUpLmNvbnRhaW5z
KHVubGlua2VkRXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkpKQogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIFNvdXJjZUNvZGUgc291cmNlID0gdW5saW5rZWRFeGVjdXRhYmxlLT5saW5rZWRT
b3VyY2VDb2RlKHBhcmVudFNvdXJjZSk7CisKKyAgICAgICAgaWYgKG1ldGFkYXRhICYmICFtZXRh
ZGF0YS0+c2hvdWxkQ2FjaGUoc291cmNlLCBjb25zdHJ1Y3RvcktpbmQpKQorICAgICAgICAgICAg
cmV0dXJuOworCiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlua2VkQ29kZUJsb2NrRm9y
KHZtLCBzb3VyY2UsIGNvbnN0cnVjdG9yS2luZCwgZGVidWdnZXJNb2RlLCBlcnJvciwgdW5saW5r
ZWRFeGVjdXRhYmxlLT5wYXJzZU1vZGUoKSk7CiAgICAgICAgIGlmICh1bmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKQotICAgICAgICAgICAgZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvckZ1bmN0
aW9ucyh2bSwgdW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaywgc291cmNlLCBkZWJ1Z2dlck1vZGUs
IGVycm9yKTsKKyAgICAgICAgICAgIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JGdW5jdGlv
bnModm0sIHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2ssIHNvdXJjZSwgZGVidWdnZXJNb2RlLCBl
cnJvciwgbWV0YWRhdGEpOwogICAgIH07CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFsc28g
Z2VuZXJhdGUgQ29kZUJsb2NrcyBmb3IgQ29kZUZvckNvbnN0cnVjdApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAppbmRleCAxNmFiZDFkMDc4MzY5YWY2NjQ4MzlmYTll
MmQwNWVmODBkNDFkN2FiLi5lNTA4M2U0ZjQ2NzIwOTZmOTIxYTQ5MThlMTkwOTcwYTAwNTAyMDI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw2
ICs0Miw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBCeXRlY29kZUNhY2hlTWV0YWRh
dGE7CiBjbGFzcyBFdmFsRXhlY3V0YWJsZTsKIGNsYXNzIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU7
CiBjbGFzcyBJZGVudGlmaWVyOwpAQCAtMzAyLDE4ICszMDMsMTggQEAgVW5saW5rZWRDb2RlQmxv
Y2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUq
IGV4ZWN1dGEKICAgICByZXR1cm4gZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGw8VW5saW5r
ZWRDb2RlQmxvY2tUeXBlLCBFeGVjdXRhYmxlVHlwZT4odm0sIHNvdXJjZSwgc3RyaWN0TW9kZSwg
c2NyaXB0TW9kZSwgZGVidWdnZXJNb2RlLCBlcnJvciwgZXZhbENvbnRleHRUeXBlLCBleGVjdXRh
YmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgZXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCgpLCB2YXJpYWJsZXNVbmRlclREWiwgZXhlY3V0YWJsZSk7CiB9CiAKLXZvaWQgZ2VuZXJh
dGVVbmxpbmtlZENvZGVCbG9ja0ZvckZ1bmN0aW9ucyhWTSYsIFVubGlua2VkQ29kZUJsb2NrKiwg
Y29uc3QgU291cmNlQ29kZSYsIERlYnVnZ2VyTW9kZSwgUGFyc2VyRXJyb3ImKTsKK3ZvaWQgZ2Vu
ZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvckZ1bmN0aW9ucyhWTSYsIFVubGlua2VkQ29kZUJsb2Nr
KiwgY29uc3QgU291cmNlQ29kZSYsIERlYnVnZ2VyTW9kZSwgUGFyc2VyRXJyb3ImLCBjb25zdCBC
eXRlY29kZUNhY2hlTWV0YWRhdGEqKTsKIAogdGVtcGxhdGUgPGNsYXNzIFVubGlua2VkQ29kZUJs
b2NrVHlwZT4KIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfc2FtZTxVbmxpbmtlZENvZGVCbG9j
a1R5cGUsIFVubGlua2VkRXZhbENvZGVCbG9jaz46OnZhbHVlLCBVbmxpbmtlZENvZGVCbG9ja1R5
cGUqPgotcmVjdXJzaXZlbHlHZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJz
ZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFBhcnNl
ckVycm9yJiBlcnJvciwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFopCityZWN1cnNpdmVseUdlbmVyYXRl
VW5saW5rZWRDb2RlQmxvY2soVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFy
c2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwg
RGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBFdmFsQ29udGV4
dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJs
ZXNVbmRlclREWiwgY29uc3QgQnl0ZWNvZGVDYWNoZU1ldGFkYXRhKiBtZXRhZGF0YSkKIHsKICAg
ICBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQgPSBmYWxzZTsKICAgICBVbmxpbmtlZENvZGVC
bG9ja1R5cGUqIHVubGlua2VkQ29kZUJsb2NrID0gZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0lt
cGw8VW5saW5rZWRDb2RlQmxvY2tUeXBlPih2bSwgc291cmNlLCBzdHJpY3RNb2RlLCBzY3JpcHRN
b2RlLCBkZWJ1Z2dlck1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUsIERlcml2ZWRDb250ZXh0
VHlwZTo6Tm9uZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgdmFyaWFibGVzVW5kZXJURFopOwog
ICAgIGlmICghdW5saW5rZWRDb2RlQmxvY2spCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvckZ1bmN0aW9ucyh2bSwgdW5saW5rZWRDb2Rl
QmxvY2ssIHNvdXJjZSwgZGVidWdnZXJNb2RlLCBlcnJvcik7CisgICAgZ2VuZXJhdGVVbmxpbmtl
ZENvZGVCbG9ja0ZvckZ1bmN0aW9ucyh2bSwgdW5saW5rZWRDb2RlQmxvY2ssIHNvdXJjZSwgZGVi
dWdnZXJNb2RlLCBlcnJvciwgbWV0YWRhdGEpOwogICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9j
azsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxl
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApp
bmRleCAyNzIzN2IxYmIwOWUzYzZiNTc0NjkzMTY2NjY1NDVlYmRjYzRkMmE0Li40MzZhNTA1NGI4
ZTQ2Nzk5YjkwZjEyZmEyZTkyZjFlNWE4ZTU1NDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtOTEsNyArOTEsNyBAQCBib29sIGNoZWNrTW9k
dWxlU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJz
ZXJFcnJvciYgZQogICAgIHJldHVybiB0cnVlOwogfQogCi1SZWY8Q2FjaGVkQnl0ZWNvZGU+IGdl
bmVyYXRlUHJvZ3JhbUJ5dGVjb2RlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQ
YXJzZXJFcnJvciYgZXJyb3IpCitSZWY8Q2FjaGVkQnl0ZWNvZGU+IGdlbmVyYXRlUHJvZ3JhbUJ5
dGVjb2RlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJy
b3IsIGNvbnN0IEJ5dGVjb2RlQ2FjaGVNZXRhZGF0YSogbWV0YWRhdGEpCiB7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2sodm0pOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxl
KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CkBAIC0xMDIsMTMg
KzEwMiwxMyBAQCBSZWY8Q2FjaGVkQnl0ZWNvZGU+IGdlbmVyYXRlUHJvZ3JhbUJ5dGVjb2RlKFZN
JiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYQogICAgIERlYnVnZ2VyTW9kZSBkZWJ1
Z2dlck1vZGUgPSBEZWJ1Z2dlck9mZjsKICAgICBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRU
eXBlID0gRXZhbENvbnRleHRUeXBlOjpOb25lOwogCi0gICAgVW5saW5rZWRDb2RlQmxvY2sqIHVu
bGlua2VkQ29kZUJsb2NrID0gcmVjdXJzaXZlbHlHZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrPFVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jaz4odm0sIHNvdXJjZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9k
ZSwgZGVidWdnZXJNb2RlLCBlcnJvciwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJU
RFopOworICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHJlY3Vyc2l2
ZWx5R2VuZXJhdGVVbmxpbmtlZENvZGVCbG9jazxVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s+KHZt
LCBzb3VyY2UsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGRlYnVnZ2VyTW9kZSwgZXJyb3IsIGV2
YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaLCBtZXRhZGF0YSk7CiAgICAgaWYgKCF1
bmxpbmtlZENvZGVCbG9jaykKICAgICAgICAgcmV0dXJuIENhY2hlZEJ5dGVjb2RlOjpjcmVhdGUo
KTsKICAgICByZXR1cm4gc2VyaWFsaXplQnl0ZWNvZGUodm0sIHVubGlua2VkQ29kZUJsb2NrLCBz
b3VyY2UsIFNvdXJjZUNvZGVUeXBlOjpQcm9ncmFtVHlwZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9k
ZSwgZGVidWdnZXJNb2RlKTsKIH0KIAotUmVmPENhY2hlZEJ5dGVjb2RlPiBnZW5lcmF0ZU1vZHVs
ZUJ5dGVjb2RlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYg
ZXJyb3IpCitSZWY8Q2FjaGVkQnl0ZWNvZGU+IGdlbmVyYXRlTW9kdWxlQnl0ZWNvZGUoVk0mIHZt
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgQnl0
ZWNvZGVDYWNoZU1ldGFkYXRhKiBtZXRhZGF0YSkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2
bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6
OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKQEAgLTExOSw3ICsxMTksNyBAQCBSZWY8
Q2FjaGVkQnl0ZWNvZGU+IGdlbmVyYXRlTW9kdWxlQnl0ZWNvZGUoVk0mIHZtLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIFBhcgogICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBEZWJ1
Z2dlck9mZjsKICAgICBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlID0gRXZhbENvbnRl
eHRUeXBlOjpOb25lOwogCi0gICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2Nr
ID0gcmVjdXJzaXZlbHlHZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrPFVubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jaz4odm0sIHNvdXJjZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgZGVidWdn
ZXJNb2RlLCBlcnJvciwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFopOworICAg
IFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHJlY3Vyc2l2ZWx5R2VuZXJh
dGVVbmxpbmtlZENvZGVCbG9jazxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+KHZtLCBz
b3VyY2UsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGRlYnVnZ2VyTW9kZSwgZXJyb3IsIGV2YWxD
b250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaLCBtZXRhZGF0YSk7CiAgICAgaWYgKCF1bmxp
bmtlZENvZGVCbG9jaykKICAgICAgICAgcmV0dXJuIENhY2hlZEJ5dGVjb2RlOjpjcmVhdGUoKTsK
ICAgICByZXR1cm4gc2VyaWFsaXplQnl0ZWNvZGUodm0sIHVubGlua2VkQ29kZUJsb2NrLCBzb3Vy
Y2UsIFNvdXJjZUNvZGVUeXBlOjpNb2R1bGVUeXBlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBk
ZWJ1Z2dlck1vZGUpOwpAQCAtMTQ2LDYgKzE0Niw4IEBAIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUgdGhpc1ZhbHVlLCBO
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KIAorICAgIHZtLmNvZGVDYWNo
ZSgpLT53cml0ZSh2bSk7CisKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21wbGV0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgK
aW5kZXggZDVhMDIzMWI3ODAxNzViODg0MjBkNmFmZjRiM2MwYTUyNGVkMTg1MS4uZDNiYWViNmI5
YTgxZTgzNjgxNzUxNWM4NGM0Y2RmNjc1ZmRiM2ExOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uaApAQCAtMjgsNiArMjgsNyBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAorY2xhc3MgQnl0ZWNvZGVDYWNoZU1ldGFkYXRhOwogY2xhc3MgQ2FjaGVkQnl0ZWNvZGU7
CiBjbGFzcyBFeGNlcHRpb247CiBjbGFzcyBFeGVjU3RhdGU7CkBAIC00Miw4ICs0Myw4IEBAIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tTeW50YXgoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwg
UGFyc2VyRXJyb3ImKTsKIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tTeW50YXgoRXhlY1N0
YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUqIGV4Y2VwdGlvbiA9IDApOwogSlNfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBjaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUGFyc2VyRXJyb3ImKTsKIAotSlNfRVhQT1JUX1BSSVZBVEUgUmVmPENhY2hlZEJ5
dGVjb2RlPiBnZW5lcmF0ZVByb2dyYW1CeXRlY29kZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBQ
YXJzZXJFcnJvciYpOwotSlNfRVhQT1JUX1BSSVZBVEUgUmVmPENhY2hlZEJ5dGVjb2RlPiBnZW5l
cmF0ZU1vZHVsZUJ5dGVjb2RlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7
CitKU19FWFBPUlRfUFJJVkFURSBSZWY8Q2FjaGVkQnl0ZWNvZGU+IGdlbmVyYXRlUHJvZ3JhbUJ5
dGVjb2RlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9yJiwgY29uc3QgQnl0ZWNv
ZGVDYWNoZU1ldGFkYXRhKiA9IG51bGxwdHIpOworSlNfRVhQT1JUX1BSSVZBVEUgUmVmPENhY2hl
ZEJ5dGVjb2RlPiBnZW5lcmF0ZU1vZHVsZUJ5dGVjb2RlKFZNJiwgY29uc3QgU291cmNlQ29kZSYs
IFBhcnNlckVycm9yJiwgY29uc3QgQnl0ZWNvZGVDYWNoZU1ldGFkYXRhKiA9IG51bGxwdHIpOwog
CiBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFNv
dXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQdHI8RXhjZXB0aW9uPiYgcmV0dXJu
ZWRFeGNlcHRpb24pOwogaW5saW5lIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWUo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwIGIvU291cmNlL1dURi93dGYv
VVVJRC5jcHAKaW5kZXggODU5NjhiZjU5MTE2ZDEzY2FkOTIzOTZmMzM5ZjIwNGZlMWRjMjE1MS4u
MDZmMTQyNmUzNzM2NzJkNmI4ZjliOGY0YTMzYzkwNTFhN2I1ZjRlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvVVVJRC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVVJRC5jcHAKQEAgLTcy
LDEwICs3MiwxMiBAQCBTdHJpbmcgYm9vdFNlc3Npb25VVUlEU3RyaW5nKCkKICAgICBzdGQ6OmNh
bGxfb25jZShvbmNlS2V5LCBbXSB7CiAgICAgICAgIHNpemVfdCB1dWlkTGVuZ3RoID0gMzc7CiAg
ICAgICAgIGNoYXIgdXVpZFt1dWlkTGVuZ3RoXTsKLSAgICAgICAgaWYgKHN5c2N0bGJ5bmFtZSgi
a2Vybi5ib290c2Vzc2lvbnV1aWQiLCB1dWlkLCAmdXVpZExlbmd0aCwgbnVsbHB0ciwgMCkpCi0g
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGludCByZXN1bHQgPSBzeXNjdGxieW5hbWUoImtl
cm4uYm9vdHNlc3Npb251dWlkIiwgdXVpZCwgJnV1aWRMZW5ndGgsIG51bGxwdHIsIDApOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghcmVzdWx0KTsKICAgICAgICAgYm9vdFNlc3Npb25VVUlELmNv
bnN0cnVjdChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4odXVpZCksIHV1aWRMZW5ndGggLSAxKTsK
ICAgICB9KTsKKyNlbHNlCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbmRp
ZgogICAgIHJldHVybiBib290U2Vzc2lvblVVSUQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDIxOWM4
YjcwZGM5ZjU4OWFlZjY4NmUzYjJkYTE0NmFiMzkwZjc4MDUuLmU3NGJkODEzOTRjMzk0ZDU2MGYz
NzNiNjI4MzNlNWVlMDZlY2UwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC00MzMsNiArNDMzLDcgQEAg
YW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKIAogYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2Ny
aXB0TG9hZGVyLmNwcAogYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKK2JpbmRp
bmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmNwcAogYmluZGluZ3MvanMvQ2FsbFRy
YWNlci5jcHAKIGJpbmRpbmdzL2pzL0NvbW1vblZNLmNwcAogYmluZGluZ3MvanMvRE9NR0NPdXRw
dXRDb25zdHJhaW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDhhMDkyN2NjNjU0ZGM2MDU2ZTlhZGNjMjE2MGI5MmI2MmFm
NmQ5N2MuLjljZTZmYTE0OTM3N2EwNjY3YzI1NTFkNzI5YjkzNzQzZTdkMTY4M2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4
MjQsNyArMzgyNCw3IEBACiAJCUJDQjE2QzFDMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRJbWFn
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZD
MDMwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZEltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMjAwOTc5QzNCRDAwNDY3NzQxIC8q
IENhY2hlZFJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0IxNkMwNzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0IxNkMyMjA5
NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzA5MDk3OUMzQkQwMDQ2
Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oICovOyB9OwotCQlCQ0IxNkMyNDA5
NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkU2NyaXB0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwQjA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVk
U2NyaXB0LmggKi87IH07CisJCUJDQjE2QzI0MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRTY3Jp
cHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2
QzBCMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRTY3JpcHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0IxNkMyODA5NzlDM0JEMDA0Njc3NDEg
LyogQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNCMTZDMEYwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFhTTFN0eWxl
U2hlZXQuaCAqLzsgfTsKIAkJQkNCMTZDMkEwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291
cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0IxNkMxMTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0I5MkQ0RjEy
OTM1NTBCMDBDODM4N0YgLyogRm9udEJhc2VsaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0I5MkQ0RTEyOTM1NTBCMDBDODM4N0YgLyogRm9udEJh
c2VsaW5lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNo
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5j
cHAKaW5kZXggN2M4N2IyMzkzOGU0MzNlNTA4YzBmYjgwYmU5YzllNmZkZTM4MjEwMy4uMWIzNmJj
Mzk3N2I5ZDhkNzdmMTdiMzlhNTVlNzMyNGQzMGY3M2E2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKQEAgLTQyLDEwICs0Miwx
MCBAQCBSZWY8Q2FjaGVkU2NyaXB0RmV0Y2hlcj4gQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYgY2hhcnNldCkKIAogQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2Ny
aXB0PiBDYWNoZWRTY3JpcHRGZXRjaGVyOjpyZXF1ZXN0TW9kdWxlU2NyaXB0KERvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFN0cmluZyYmIGludGVncml0eSkgY29uc3QK
IHsKLSAgICByZXR1cm4gcmVxdWVzdFNjcmlwdFdpdGhDYWNoZShkb2N1bWVudCwgc291cmNlVVJM
LCBTdHJpbmcgeyB9LCBXVEZNb3ZlKGludGVncml0eSkpOworICAgIHJldHVybiByZXF1ZXN0U2Ny
aXB0V2l0aENhY2hlKGRvY3VtZW50LCBzb3VyY2VVUkwsIFdlYkNvcmU6OlNjcmlwdE1vZGU6Ok1v
ZHVsZSwgU3RyaW5nIHsgfSwgV1RGTW92ZShpbnRlZ3JpdHkpKTsKIH0KIAotQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBDYWNoZWRTY3JpcHRGZXRjaGVyOjpyZXF1ZXN0U2NyaXB0
V2l0aENhY2hlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0
IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBTdHJpbmcmJiBpbnRlZ3JpdHkpIGNvbnN0CitDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IENhY2hlZFNjcmlwdEZldGNoZXI6OnJlcXVl
c3RTY3JpcHRXaXRoQ2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHNvdXJjZVVS
TCwgV2ViQ29yZTo6U2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBjb25zdCBTdHJpbmcmIGNyb3NzT3Jp
Z2luTW9kZSwgU3RyaW5nJiYgaW50ZWdyaXR5KSBjb25zdAogewogICAgIGlmICghZG9jdW1lbnQu
c2V0dGluZ3MoKS5pc1NjcmlwdEVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC01Niw2ICs1Niw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gQ2FjaGVk
U2NyaXB0RmV0Y2hlcjo6cmVxdWVzdFNjcmlwdFdpdGhDYWNoZShECiAgICAgb3B0aW9ucy5jb250
ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uID0gaGFzS25vd25Ob25jZSA/IENvbnRlbnRTZWN1
cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVjayA6IENvbnRlbnRTZWN1cml0eVBv
bGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2s7CiAgICAgb3B0aW9ucy5zYW1lT3JpZ2luRGF0
YVVSTEZsYWcgPSBTYW1lT3JpZ2luRGF0YVVSTEZsYWc6OlNldDsKICAgICBvcHRpb25zLmludGVn
cml0eSA9IFdURk1vdmUoaW50ZWdyaXR5KTsKKyAgICBvcHRpb25zLnNjcmlwdE1vZGUgPSBzY3Jp
cHRNb2RlOwogCiAgICAgYXV0byByZXF1ZXN0ID0gY3JlYXRlUG90ZW50aWFsQWNjZXNzQ29udHJv
bFJlcXVlc3Qoc291cmNlVVJMLCBkb2N1bWVudCwgY3Jvc3NPcmlnaW5Nb2RlLCBXVEZNb3ZlKG9w
dGlvbnMpKTsKICAgICByZXF1ZXN0LnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChkb2N1
bWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3Jp
cHRGZXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRj
aGVyLmgKaW5kZXggZDUzOTFjNjk3ZDdjZjRmNmY1ZDQwNzljYTI3MmVmNzdlYTljYWJhNy4uOTY5
ZTY0M2IyZDg0MjhiMTAwMDVlYmE2ODJiZTVlMzhkZDc2ZjVmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuaApAQCAtMzMsNiArMzMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFNjcmlwdDsKIGNsYXNzIERvY3Vt
ZW50OworZW51bSBjbGFzcyBTY3JpcHRNb2RlIDogdWludDhfdDsKIAogY2xhc3MgQ2FjaGVkU2Ny
aXB0RmV0Y2hlciA6IHB1YmxpYyBKU0M6OlNjcmlwdEZldGNoZXIgewogcHVibGljOgpAQCAtNTQs
NyArNTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgIH0KIAotICAgIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFNjcmlwdD4gcmVxdWVzdFNjcmlwdFdpdGhDYWNoZShEb2N1bWVudCYsIGNv
bnN0IFVSTCYgc291cmNlVVJMLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgU3RyaW5n
JiYgaW50ZWdyaXR5KSBjb25zdDsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3Jp
cHQ+IHJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoRG9jdW1lbnQmLCBjb25zdCBVUkwmIHNvdXJjZVVS
TCwgU2NyaXB0TW9kZSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIFN0cmluZyYmIGlu
dGVncml0eSkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbm9uY2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92
aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDY0ZjAxOGY1NDNlOWY3MTM5ZDQ4Y2M4NTc3NTVkOGJmZGNh
MjExNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hl
ZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkNhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKwordm9pZCBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcjo6Y2FjaGVCeXRlY29kZShjb25z
dCBKU0M6OkJ5dGVjb2RlQ2FjaGVHZW5lcmF0b3ImKSBjb25zdAoreworICAgIG1fc2hvdWxkQ2Fj
aGUgPSB0cnVlOworICAgIG1faGFzVXBkYXRlcyA9IHRydWU7Cit9CisKK3ZvaWQgQ2FjaGVkU2Ny
aXB0U291cmNlUHJvdmlkZXI6OnVwZGF0ZUNhY2hlKGNvbnN0IEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqLCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQsIGNvbnN0IEpTQzo6VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayopIGNvbnN0Cit7CisgICAgaWYgKCFtX3Nob3VsZENhY2hlKQorICAgICAgICByZXR1cm47Cisg
ICAgbV9oYXNVcGRhdGVzID0gdHJ1ZTsKKyAgICBtX2J5dGVjb2RlQ2FjaGVNZXRhZGF0YS5yZWNv
cmRDYWNoZWRGdW5jdGlvbkNvZGVCbG9jayhzb3VyY2UsIGtpbmQpOworfQorCit2b2lkIENhY2hl
ZFNjcmlwdFNvdXJjZVByb3ZpZGVyOjpjb21taXRDYWNoZWRCeXRlY29kZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX2hhc1VwZGF0ZXMpCisgICAgICAgIHJldHVybjsKKyAgICBtX2hhc1VwZGF0ZXMg
PSBmYWxzZTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+Y2Fj
aGVCeXRlY29kZUZvclNjcmlwdCgqbV9jYWNoZWRTY3JpcHQsIG1fYnl0ZWNvZGVDYWNoZU1ldGFk
YXRhKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgKaW5kZXggYWU0
NDRjNjQ1MzZiMjM1Y2ExNjU3NDZkOTQwYTE3MGJjOTFjYWVhYi4uYmJiMzg4MWI5ZGZlYWUxYjUy
M2JkNTZiMzQyNTIyMDU3MmYwYTBhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksOSBA
QAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2Ny
aXB0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0RmV0Y2hlci5oIgorI2luY2x1ZGUgIkxvYWRl
clN0cmF0ZWd5LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQnl0ZWNvZGVDYWNoZU1ldGFkYXRhLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU291cmNlUHJvdmlkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAs
MTMgKzQzLDIxIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNhY2hlZFNjcmlwdFNvdXJjZVBy
b3ZpZGVyKCkKICAgICB7CisgICAgICAgIGNvbW1pdENhY2hlZEJ5dGVjb2RlKCk7CiAgICAgICAg
IG1fY2FjaGVkU2NyaXB0LT5yZW1vdmVDbGllbnQoKnRoaXMpOwogICAgIH0KIAogICAgIHVuc2ln
bmVkIGhhc2goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NhY2hlZFNjcmlwdC0+c2NyaXB0
SGFzaCgpOyB9CiAgICAgU3RyaW5nVmlldyBzb3VyY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2NhY2hlZFNjcmlwdC0+c2NyaXB0KCk7IH0KKyAgICBSZWZQdHI8SlNDOjpDYWNoZWRCeXRl
Y29kZT4gY2FjaGVkQnl0ZWNvZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NhY2hlZFNj
cmlwdC0+Y2FjaGVkQnl0ZWNvZGUoKTsgfQorICAgIHZvaWQgY29tbWl0Q2FjaGVkQnl0ZWNvZGUo
KSBjb25zdCBvdmVycmlkZTsKKworICAgIHZvaWQgY2FjaGVCeXRlY29kZShjb25zdCBKU0M6OkJ5
dGVjb2RlQ2FjaGVHZW5lcmF0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUNh
Y2hlKGNvbnN0IEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBjb25zdCBKU0M6OlNv
dXJjZUNvZGUmLCBKU0M6OkNvZGVTcGVjaWFsaXphdGlvbktpbmQsIGNvbnN0IEpTQzo6VW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayopIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgorICAgIHZv
aWQgY29tbWl0Qnl0ZWNvZGVDYWNoZSgpOworCiAgICAgQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlk
ZXIoQ2FjaGVkU2NyaXB0KiBjYWNoZWRTY3JpcHQsIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VU
eXBlIHNvdXJjZVR5cGUsIFJlZjxDYWNoZWRTY3JpcHRGZXRjaGVyPiYmIHNjcmlwdEZldGNoZXIp
CiAgICAgICAgIDogU291cmNlUHJvdmlkZXIoSlNDOjpTb3VyY2VPcmlnaW4geyBjYWNoZWRTY3Jp
cHQtPnJlc3BvbnNlKCkudXJsKCksIFdURk1vdmUoc2NyaXB0RmV0Y2hlcikgfSwgVVJMKGNhY2hl
ZFNjcmlwdC0+cmVzcG9uc2UoKS51cmwoKSksIFRleHRQb3NpdGlvbigpLCBzb3VyY2VUeXBlKQog
ICAgICAgICAsIG1fY2FjaGVkU2NyaXB0KGNhY2hlZFNjcmlwdCkKQEAgLTU0LDYgKzY1LDkgQEAg
cHJpdmF0ZToKICAgICAgICAgbV9jYWNoZWRTY3JpcHQtPmFkZENsaWVudCgqdGhpcyk7CiAgICAg
fQogCisgICAgbXV0YWJsZSBib29sIG1fc2hvdWxkQ2FjaGUgeyBmYWxzZSB9OworICAgIG11dGFi
bGUgYm9vbCBtX2hhc1VwZGF0ZXMgeyBmYWxzZSB9OworICAgIG11dGFibGUgSlNDOjpCeXRlY29k
ZUNhY2hlTWV0YWRhdGEgbV9ieXRlY29kZUNhY2hlTWV0YWRhdGE7CiAgICAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBtX2NhY2hlZFNjcmlwdDsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAKaW5kZXggZDkyN2U5NWJlMjY5YTI1
YWU0MzM2YTc0YjAwMDI3YzE3NThmZTQ4YS4uM2EyNTc3MTQwMzI1ZTE0ZTM0NDMyNjdjNDMxZmMz
ZDFiNDA5NGUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3Np
Y1NjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1Njcmlw
dC5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIExvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6ZXhl
Y3V0ZShTY3JpcHRFbGVtZW50JiBzY3JpcHRFbGVtZW50KQogYm9vbCBMb2FkYWJsZUNsYXNzaWNT
Y3JpcHQ6OmxvYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHNvdXJjZVVSTCkKIHsK
ICAgICBBU1NFUlQoIW1fY2FjaGVkU2NyaXB0KTsKLSAgICBtX2NhY2hlZFNjcmlwdCA9IHJlcXVl
c3RTY3JpcHRXaXRoQ2FjaGUoZG9jdW1lbnQsIHNvdXJjZVVSTCwgY3Jvc3NPcmlnaW5Nb2RlKCks
IFN0cmluZyB7IG1faW50ZWdyaXR5IH0pOworICAgIG1fY2FjaGVkU2NyaXB0ID0gcmVxdWVzdFNj
cmlwdFdpdGhDYWNoZShkb2N1bWVudCwgc291cmNlVVJMLCBXZWJDb3JlOjpTY3JpcHRNb2RlOjpD
bGFzc2ljLCBjcm9zc09yaWdpbk1vZGUoKSwgU3RyaW5nIHsgbV9pbnRlZ3JpdHkgfSk7CiAgICAg
aWYgKCFtX2NhY2hlZFNjcmlwdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fY2FjaGVk
U2NyaXB0LT5hZGRDbGllbnQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEVsZW1lbnRDYWNoZWRTY3JpcHRGZXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50Q2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKaW5kZXggODQzZGEyMDMxMjNj
MTI4M2MwODliMzk2YmI2MmI5YWU0YmQzNmM2Yi4uNWNjMmYxOWUxMTg1MzY2MmY1MTY3ZThjODYz
Mzk2OGVhNTM1ZTMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1l
bnRDYWNoZWRTY3JpcHRGZXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBAIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gU2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNo
ZXI6OnJlcXVlc3RNb2R1CiAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwt
ZHluYW1pYy1pbXBvcnQvYmxvYi9tYXN0ZXIvSFRNTCBJbnRlZ3JhdGlvbi5tZAogICAgIC8vIElm
IHRoZSBmZXRjaGVyIGlzIG5vdCBtb2R1bGUgc2NyaXB0LCBjcmVkZW50aWFsIG1vZGUgaXMgYWx3
YXlzICJvbWl0Ii4KIAotICAgIHJldHVybiByZXF1ZXN0U2NyaXB0V2l0aENhY2hlKGRvY3VtZW50
LCBzb3VyY2VVUkwsIGlzQ2xhc3NpY1NjcmlwdCgpID8gIm9taXQiX3MgOiBtX2Nyb3NzT3JpZ2lu
TW9kZSwgV1RGTW92ZShpbnRlZ3JpdHkpKTsKKyAgICByZXR1cm4gcmVxdWVzdFNjcmlwdFdpdGhD
YWNoZShkb2N1bWVudCwgc291cmNlVVJMLCBpc0NsYXNzaWNTY3JpcHQoKSA/IFdlYkNvcmU6OlNj
cmlwdE1vZGU6OkNsYXNzaWMgOiBXZWJDb3JlOjpTY3JpcHRNb2RlOjpNb2R1bGUsIGlzQ2xhc3Np
Y1NjcmlwdCgpID8gIm9taXQiX3MgOiBtX2Nyb3NzT3JpZ2luTW9kZSwgV1RGTW92ZShpbnRlZ3Jp
dHkpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFJlc291cmNlUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxS
ZXNvdXJjZVByZWxvYWRlci5jcHAKaW5kZXggM2QwMDZhYjA0YmY1Mjg3NjRmOWYwYzg0NGFiZjQ2
ZTBkNjM2MzFmZi4uNzQ4YTMxZmUyN2VkMmIzZWM2MTdlZTljNGM0ZmQyMzU5MzZiNWM2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2Fk
ZXIuY3BwCkBAIC01Myw2ICs1MywxMiBAQCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgUHJlbG9hZFJl
cXVlc3Q6OnJlc291cmNlUmVxdWVzdChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgUmVzb3VyY2VM
b2FkZXJPcHRpb25zIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hl
ZFJlc291cmNlT3B0aW9ucygpOwogICAgIGlmIChza2lwQ29udGVudFNlY3VyaXR5UG9saWN5Q2hl
Y2spCiAgICAgICAgIG9wdGlvbnMuY29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbiA9IENv
bnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVjazsKKyAgICBpZiAo
bV9yZXNvdXJjZVR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlNjcmlwdCkgeworICAgICAg
ICBpZiAobV9tb2R1bGVTY3JpcHQgPT0gTW9kdWxlU2NyaXB0OjpZZXMpCisgICAgICAgICAgICBv
cHRpb25zLnNjcmlwdE1vZGUgPSBTY3JpcHRNb2RlOjpNb2R1bGU7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG9wdGlvbnMuc2NyaXB0TW9kZSA9IFNjcmlwdE1vZGU6OkNsYXNzaWM7CisgICAg
fQogCiAgICAgU3RyaW5nIGNyb3NzT3JpZ2luTW9kZSA9IG1fY3Jvc3NPcmlnaW5Nb2RlOwogICAg
IGlmIChtX21vZHVsZVNjcmlwdCA9PSBNb2R1bGVTY3JpcHQ6OlllcykgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IDlmNTVhZThhMzI1YjdlM2ZmMzE1YTQ2MTZhNTQxNWU5
MWI3MTY0NzcuLjc0ZWEyZTM5OGZlZDlkMzhmYzgyYjVjNDIyY2NjNDZlZGMyODE4ZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAgLTI0Nyw2ICsyNDcsOSBAQCBzdGQ6OnVu
aXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudD4gTGlua0xvYWRlcjo6cHJlbG9hZElm
TmVlZGVkKGNvbnN0IExpbgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gb3B0
aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25z
KCk7CisgICAgaWYgKHR5cGUudmFsdWUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6U2NyaXB0
KQorICAgICAgICBvcHRpb25zLnNjcmlwdE1vZGUgPSBTY3JpcHRNb2RlOjpDbGFzc2ljOworCiAg
ICAgYXV0byBsaW5rUmVxdWVzdCA9IGNyZWF0ZVBvdGVudGlhbEFjY2Vzc0NvbnRyb2xSZXF1ZXN0
KGRvY3VtZW50LmNvbXBsZXRlVVJMKGhyZWYpLCBkb2N1bWVudCwgY3Jvc3NPcmlnaW5Nb2RlLCBX
VEZNb3ZlKG9wdGlvbnMpKTsKICAgICBsaW5rUmVxdWVzdC5zZXRQcmlvcml0eShDYWNoZWRSZXNv
dXJjZTo6ZGVmYXVsdFByaW9yaXR5Rm9yUmVzb3VyY2VUeXBlKHR5cGUudmFsdWUoKSkpOwogICAg
IGxpbmtSZXF1ZXN0LnNldEluaXRpYXRvcigibGluayIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9h
ZGVyU3RyYXRlZ3kuaAppbmRleCBiMzVjNmZiMGUyODY0ZDVmOGVmYzRiODBmYWM3YTNmZjA0MTEx
OTNlLi5kZGVkMzNiNjQ4ZjA4MDE4N2VkODlhMGMwYWRiNjhiOTlmMjlmYzk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTIsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw5ICszMiwxNCBAQAogI2luY2x1
ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCituYW1lc3Bh
Y2UgSlNDIHsKK2NsYXNzIEJ5dGVjb2RlQ2FjaGVNZXRhZGF0YTsKK307CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CitjbGFzcyBDYWNoZWRTY3JpcHQ7CiBj
bGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9h
ZGVyOwpAQCAtNzMsNiArNzgsOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUHJlY29ubmVjdENvbXBs
ZXRpb25IYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlRXJyb3ImKT47
CiAgICAgdmlydHVhbCB2b2lkIHByZWNvbm5lY3RUbyhGcmFtZUxvYWRlciYsIGNvbnN0IFVSTCYs
IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJikg
PSAwOwogCisgICAgdmlydHVhbCB2b2lkIGNhY2hlQnl0ZWNvZGVGb3JTY3JpcHQoY29uc3QgQ2Fj
aGVkU2NyaXB0JiwgY29uc3QgSlNDOjpCeXRlY29kZUNhY2hlTWV0YWRhdGEmKSA9IDA7CisKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChi
b29sKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNPbkxpbmUoKSBjb25zdCA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA1NDg5OGVmZTEyNmUyZTUz
OWNkMzFjOTRmYzg3YjI1NTcwNmRmYTNiLi41NGFjM2YwOGFkMjJhNjZhYjM4OTNlMjYxYmE2Zjg5
YzVlZDk3NzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA3IEdyYWhhbSBEZW5u
aXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtODE4LDQg
KzgxOCw4IEBAIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
IGNvbnN0CiAgICAgcmV0dXJuIGZyYW1lTG9hZGVyKCkgJiYgZnJhbWVMb2FkZXIoKS0+aXNBbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkKCk7CiB9CiAKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJldHJp
ZXZlRGVyaXZlZERhdGFGcm9tQ2FjaGUoY29uc3QgU3RyaW5nJiwgU2hhcmVkQnVmZmVyJikKK3sK
K30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA5YTgzZmNl
ODZjNzZmNjI3NTYyODM2ZmI0MDVhMzA1ODM4Yjg2Yzk2Li42ZjljZWMxNzMzNWM0MTIxYjk0OTAz
YzMyODViOWE1MzAxMGViZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTEwNiw2ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmV0cmlldmVEZXJpdmVkRGF0
YUZyb21DYWNoZShjb25zdCBTdHJpbmcmIHR5cGUsIFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaAppbmRleCA5ZTMw
NzRkYTMyMTFkMGVlOTdiOGViMmVkZjQ5MTY5ZWM1ZGYyYTRhLi40ZTAxMDY0NTQ0YTM2ZmNkMDcx
MDc0NDU4YTllY2FlMDM2NjczNmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXJPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyT3B0aW9ucy5oCkBAIC0xMjcsNiArMTI3LDEyIEBAIGVudW0gY2xhc3MgTG9hZGVk
RnJvbU9wYXF1ZVNvdXJjZSA6IHVpbnQ4X3QgewogICAgIE5vCiB9OwogCitlbnVtIGNsYXNzIFNj
cmlwdE1vZGUgOiB1aW50OF90IHsKKyAgICBOb25lLAorICAgIENsYXNzaWMsCisgICAgTW9kdWxl
LAorfTsKKwogc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyA6IHB1YmxpYyBGZXRjaE9wdGlv
bnMgewogICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucygpIHsgfQogCkBAIC0xNzIsNiArMTc4LDcg
QEAgc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyA6IHB1YmxpYyBGZXRjaE9wdGlvbnMgewog
ICAgIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSB7IENsaWVu
dENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzIH07CiAgICAg
UHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSB7IFByZWZsaWdodFBvbGljeTo6Q29uc2lk
ZXIgfTsKICAgICBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVTb3VyY2Ug
eyBMb2FkZWRGcm9tT3BhcXVlU291cmNlOjpObyB9OworICAgIFNjcmlwdE1vZGUgc2NyaXB0TW9k
ZSB7IFNjcmlwdE1vZGU6Ok5vbmUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDIzZGUxNTQ0
OWEwNWVjMTQ5MzI5MjJjY2JjMzc0NDNkNDcwM2Q5OGIuLmVkNmUyMjUyMzQ1YzYxMjdhMjUxZTcz
OWJkMzRmY2IwOWYzMzgzODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcApAQCAtNzUzLDYgKzc1MywxMyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpk
aWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpCiAgICAgbm90aWZ5RG9uZShMb2FkQ29tcGxl
dGlvblR5cGU6OkNhbmNlbCk7CiB9CiAKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJldHJp
ZXZlRGVyaXZlZERhdGFGcm9tQ2FjaGUoY29uc3QgU3RyaW5nJiB0eXBlLCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK3sKKyAgICBpZiAobV9zdGF0ZSAhPSBJbml0aWFsaXplZCkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fcmVzb3VyY2UtPmRpZFJldHJpZXZlRGVyaXZlZERhdGFGcm9tQ2FjaGUodHlw
ZSwgYnVmZmVyKTsKK30KKwogdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6bm90aWZ5RG9uZShMb2Fk
Q29tcGxldGlvblR5cGUgdHlwZSkKIHsKICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKaW5kZXggZGVjOGQwYmFj
Y2NmN2I1ODVlOGI3ZDA4ZjdjNWJkOTJkNjIxMjcwYy4uYWY0NDBkYTczMjYxMTkwMWU1ODU3YjMy
MjA0MjAxYTRjNjNlYzBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC03OSw2ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJldHJpZXZlRGVyaXZlZERhdGFGcm9tQ2Fj
aGUoY29uc3QgU3RyaW5nJiB0eXBlLCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICAKICAg
ICB2b2lkIHVwZGF0ZVJlZmVycmVyUG9saWN5KGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMmI3YmY0MjlkZDYyMmZjNzI3
ZTEwMTMwMmVmZmVlZGQ1ZTRjMzg0Ny4uNjU3NDYwNmMwMDZlYzc1NjFjMTZhZWY1YTFmZjIwODdk
MjZiZTlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcApA
QCAtOTAsNiArOTAsNyBAQCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBUaHJlYWRhYmxlTG9hZGVy
T3B0aW9uczo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICBjb3B5LmNsaWVudENyZWRlbnRpYWxQ
b2xpY3kgPSB0aGlzLT5jbGllbnRDcmVkZW50aWFsUG9saWN5OwogICAgIGNvcHkubWF4UmVkaXJl
Y3RDb3VudCA9IHRoaXMtPm1heFJlZGlyZWN0Q291bnQ7CiAgICAgY29weS5wcmVmbGlnaHRQb2xp
Y3kgPSB0aGlzLT5wcmVmbGlnaHRQb2xpY3k7CisgICAgY29weS5zY3JpcHRNb2RlID0gdGhpcy0+
c2NyaXB0TW9kZTsKIAogICAgIC8vIFRocmVhZGFibGVMb2FkZXJPcHRpb25zCiAgICAgY29weS5j
b250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCA9IHRoaXMtPmNvbnRlbnRTZWN1cml0eVBv
bGljeUVuZm9yY2VtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaAppbmRleCBhYTg1MzBkODBlMWFlMjc2OWFmYjkzZWRmYTY0MzQyZTE1YWU4NTE3Li5i
YTZmOWY3ZDZkZDM2MWFjZjllYjYwMWI4N2Q3OTlhZDEyYTBjYmMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMjY3LDYgKzI2Nyw4IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcg
LyogYnl0ZXNTZW50ICovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRlc1RvQmVTZW50
ICovKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBkaWRSZXRyaWV2ZURlcml2ZWREYXRhRnJvbUNh
Y2hlKGNvbnN0IFN0cmluZyYgLyogdHlwZSAqLywgU2hhcmVkQnVmZmVyJikgeyB9CisKICNpZiBV
U0UoRk9VTkRBVElPTikgfHwgVVNFKFNPVVApCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlS
ZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggMWJiZDQ0NDY5MjA3YzI0NjYy
MjJkZDIzNWZhMjNmOWIyMmZkZGE2Ny4uODMxZGE0MGM1ZWY2NTJmZjg3NDZkODI3ZTNlZTI3NGZm
N2I4Zjg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNj
cmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5j
cHAKQEAgLTMsNyArMyw3IEBACiAgICAgQ29weXJpZ2h0IChDKSAyMDAxIERpcmsgTXVlbGxlciAo
bXVlbGxlckBrZGUub3JnKQogICAgIENvcHlyaWdodCAoQykgMjAwMiBXYWxkbyBCYXN0aWFuIChi
YXN0aWFuQGtkZS5vcmcpCiAgICAgQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgKHNh
bS53ZWluaWdAZ21haWwuY29tKQotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtODksNiArODksMTEgQEAgU3Ry
aW5nVmlldyBDYWNoZWRTY3JpcHQ6OnNjcmlwdCgpCiAgICAgcmV0dXJuIG1fc2NyaXB0OwogfQog
CitSZWZQdHI8SlNDOjpDYWNoZWRCeXRlY29kZT4gQ2FjaGVkU2NyaXB0OjpjYWNoZWRCeXRlY29k
ZSgpCit7CisgICAgcmV0dXJuIG1fY2FjaGVkQnl0ZWNvZGU7Cit9CisKIHVuc2lnbmVkIENhY2hl
ZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiB7CiAgICAgaWYgKG1fZGVjb2RpbmdTdGF0ZSA9PSBOZXZl
ckRlY29kZWQpCkBAIC0xMDMsNiArMTA4LDE3IEBAIHZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9h
ZGluZyhkYXRhKTsKIH0KIAordm9pZCBDYWNoZWRTY3JpcHQ6OmRpZFJldHJpZXZlRGVyaXZlZERh
dGFGcm9tQ2FjaGUoY29uc3QgU3RyaW5nJiB0eXBlLCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3sK
KyAgICBBU1NFUlQodHlwZSA9PSAiYnl0ZWNvZGUtY2FjaGUiKTsKKyAgICBzaXplX3Qgc2l6ZSA9
IGJ1ZmZlci5zaXplKCk7CisgICAgTWFsbG9jUHRyPHVpbnQ4X3Q+IG1lbW9yeSA9IE1hbGxvY1B0
cjx1aW50OF90Pjo6bWFsbG9jKHNpemUpOworICAgIGZvciAoY29uc3QgYXV0byYgaXQgOiBidWZm
ZXIpCisgICAgICAgIG1lbWNweShtZW1vcnkuZ2V0KCkgKyBpdC5iZWdpblBvc2l0aW9uLCBpdC5z
ZWdtZW50LT5kYXRhKCksIGl0LnNlZ21lbnQtPnNpemUoKSk7CisgICAgbV9jYWNoZWRCeXRlY29k
ZSA9IEpTQzo6Q2FjaGVkQnl0ZWNvZGU6OmNyZWF0ZShXVEZNb3ZlKG1lbW9yeSksIHNpemUsIHsg
fSk7CisgICAgQ2FjaGVkUmVzb3VyY2U6OmRpZFJldHJpZXZlRGVyaXZlZERhdGFGcm9tQ2FjaGUo
dHlwZSwgYnVmZmVyKTsKK30KKwogdm9pZCBDYWNoZWRTY3JpcHQ6OmRlc3Ryb3lEZWNvZGVkRGF0
YSgpCiB7CiAgICAgbV9zY3JpcHQgPSBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCBkZDZmYmNjMzY4NzgxMWRmMDZlYzFjZTI4NDMxZjM4
OGEzZDYwMDNjLi41OGJiMjAzNGI0MjM2NzI4OTM3MTk3NmI5OTkyNjU2ZGQ2MDBkZmM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCkBAIC0yLDcgKzIsNyBA
QAogICAgIENvcHlyaWdodCAoQykgMTk5OCBMYXJzIEtub2xsIChrbm9sbEBtcGktaGQubXBnLmRl
KQogICAgIENvcHlyaWdodCAoQykgMjAwMSBEaXJrIE11ZWxsZXIgPG11ZWxsZXJAa2RlLm9yZz4K
ICAgICBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5j
b20pCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
CiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU291cmNl
UHJvdmlkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNyw2ICszOCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5DYWNoZWRTY3JpcHQoKTsKIAogICAgIFN0cmluZ1ZpZXcgc2Ny
aXB0KCk7CisgICAgUmVmUHRyPEpTQzo6Q2FjaGVkQnl0ZWNvZGU+IGNhY2hlZEJ5dGVjb2RlKCk7
CiAgICAgdW5zaWduZWQgc2NyaXB0SGFzaCgpOwogCiBwcml2YXRlOgpAQCAtNDgsMTIgKzUwLDE0
IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29u
c3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQogICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJldHJpZXZlRGVyaXZlZERhdGFGcm9tQ2Fj
aGUoY29uc3QgU3RyaW5nJiwgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAKICAgICB2b2lkIGRlc3Ry
b3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3Qg
Q2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NjcmlwdDsKKyAgICBSZWZQ
dHI8SlNDOjpDYWNoZWRCeXRlY29kZT4gbV9jYWNoZWRCeXRlY29kZTsKICAgICB1bnNpZ25lZCBt
X3NjcmlwdEhhc2ggeyAwIH07CiAKICAgICBlbnVtIERlY29kaW5nU3RhdGUgeyBOZXZlckRlY29k
ZWQsIERhdGFBbmREZWNvZGVkU3RyaW5nSGF2ZVNhbWVCeXRlcywgRGF0YUFuZERlY29kZWRTdHJp
bmdIYXZlRGlmZmVyZW50Qnl0ZXMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXgg
Y2FiNDM0ZWJmZGYxZTRlZDZkYjRmOWY1MDMzYWYzOTJlZTc4M2E4Yi4uNzRlZmEyNTM2MWRmMGMw
YjUyMTI3MjA0NWE4YzBjMTU2Y2VkN2E3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
QEAgLTU4OCw2ICs1ODgsMTIgQEAgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCYgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmJsb2JSZWdpc3RyeSgpCiAgICAgcmV0dXJuIG1fbmV0d29y
a1Byb2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5ibG9iUmVnaXN0cnkoKTsKIH0KIAordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2FjaGVCeXRlY29kZUZvclJlcXVlc3Qo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBKU0M6OkJ5dGVj
b2RlQ2FjaGVNZXRhZGF0YSYgbWV0YWRhdGEpCit7CisgICAgaWYgKGF1dG8qIGJ5dGVjb2RlQ2Fj
aGUgPSBtX25ldHdvcmtQcm9jZXNzLT5ieXRlY29kZUNhY2hlKCkpCisgICAgICAgIGJ5dGVjb2Rl
Q2FjaGUtPnN0b3JlTWV0YWRhdGFGb3JSZXF1ZXN0KHJlcXVlc3QsIG1ldGFkYXRhKTsKK30KKwog
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV9jYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkID0gZW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aAppbmRleCA5OGNmNDQ3ODcwNTU5NGM3YzU2ZDg2ZGVjNDNmNmQ3ZmJhMmIzODkzLi43Nzg4ODM5
NTY1ZmM1NDFmYTFjZGE1OTY3Njc3NzIxZTc3NDdlMTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCkBAIC0xODQsNiArMTg0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJCbG9i
VVJMKGNvbnN0IFVSTCYpOwogICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxTdHJpbmc+JiYpPiYmKTsKIAorICAgIHZvaWQgY2FjaGVCeXRlY29kZUZvclJlcXVlc3QoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgSlNDOjpCeXRlY29kZUNhY2hlTWV0
YWRhdGEmKTsKKwogICAgIHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5h
YmxlZChib29sKTsKIAogICAgIHZvaWQgY3JlYXRlU29ja2V0U3RyZWFtKFVSTCYmLCBQQUw6OlNl
c3Npb25JRCwgU3RyaW5nIGNhY2hlUGFydGl0aW9uLCB1aW50NjRfdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAxNmVkMzRhZDk4Nzg5MDQxODM3MWEz
OWNhZGU2NDg2ZjM3MWQ2Y2UzLi4xZWIzZjQ5ZGJmN2VhNzU4NGRlZDBjOGRkMTNjZjYzYzA3ZGY5
MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTQ5
LDYgKzQ5LDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogICAgIEJsb2JTaXplKFVSTCB1cmwpIC0+ICh1aW50NjRfdCByZXN1bHRT
aXplKSBTeW5jaHJvbm91cwogICAgIFdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFZlY3RvcjxT
dHJpbmc+IGJsb2JVUkxzKSAtPiAoVmVjdG9yPFN0cmluZz4gZmlsZU5hbWVzKSBBc3luYwogCisg
ICAgQ2FjaGVCeXRlY29kZUZvclJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QsIEpTQzo6Qnl0ZWNvZGVDYWNoZU1ldGFkYXRhIG1ldGFkYXRhKQorCiAgICAgU2V0Q2FwdHVy
ZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sIGVuYWJsZWQpCiAKICAgICBDcmVh
dGVTb2NrZXRTdHJlYW0oVVJMIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcg
Y2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggN2FlNDk0NjhhOGQ0NGIxMjhiM2Y0
Mjc5OTA5M2I0YmU1MzgzZTdjZC4uZDcwYmRkODk2ZWRmYTk3NDZlOTdmODkyZmEyZGFlZTE3YmIw
NjRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBdXhpbGlhcnlQ
cm9jZXNzLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVDYWNoZS5oIgogI2luY2x1ZGUgIkNhY2hlTW9k
ZWwuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrQmxv
YlJlZ2lzdHJ5LmgiCkBAIC0xNTcsNiArMTU4LDcgQEAgcHVibGljOgogICAgIERvd25sb2FkTWFu
YWdlciYgZG93bmxvYWRNYW5hZ2VyKCk7CiAKICAgICBOZXR3b3JrQ2FjaGU6OkNhY2hlKiBjYWNo
ZSgpIHsgcmV0dXJuIG1fY2FjaGUuZ2V0KCk7IH0KKyAgICBCeXRlY29kZUNhY2hlKiBieXRlY29k
ZUNhY2hlKCkgeyByZXR1cm4gbV9ieXRlY29kZUNhY2hlLmdldCgpOyB9CiAKICAgICB2b2lkIHNl
dFNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBSZWY8TmV0d29ya1Nlc3Npb24+JiYpOwog
ICAgIE5ldHdvcmtTZXNzaW9uKiBuZXR3b3JrU2Vzc2lvbihjb25zdCBQQUw6OlNlc3Npb25JRCYp
IGNvbnN0IG92ZXJyaWRlOwpAQCAtNDc3LDYgKzQ3OSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1h
cDxQQUw6OlNlc3Npb25JRCwgUmVmPENhY2hlU3RvcmFnZTo6RW5naW5lPj4gbV9jYWNoZUVuZ2lu
ZXM7CiAKICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKKyAgICBSZWZQ
dHI8Qnl0ZWNvZGVDYWNoZT4gbV9ieXRlY29kZUNhY2hlOwogCiAgICAgdHlwZWRlZiBIYXNoTWFw
PGNvbnN0IGNoYXIqLCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50Piwg
UHRySGFzaDxjb25zdCBjaGFyKj4+IE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudE1hcDsKICAgICBO
ZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnRNYXAgbV9zdXBwbGVtZW50czsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycy5jcHAKaW5kZXggNThhYWNiOTkzZGI5OGFjY2RhNjUyMmQ5NTY0YzllYWE4OTRiZGE4
MS4uZTFmNWY3MDQ1OTMzODlmNWQxOWE0NmI4ZTYwOWVjZjQ4OWUxYWQ4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5jcHAKQEAgLTk2LDYgKzk2LDggQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBl
bmNvZGVyIDw8IGZyYW1lQW5jZXN0b3JPcmlnaW5zOwogICAgIGVuY29kZXIgPDwgaXNIVFRQU1Vw
Z3JhZGVFbmFibGVkOwogCisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHNjcmlwdE1vZGUpOworCiAj
aWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBlbmNvZGVyIDw8IG1haW5Eb2N1bWVu
dFVSTDsKICAgICBlbmNvZGVyIDw8IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CkBA
IC0yMTIsNiArMjE0LDkgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Jlc291cmMKICAgICBpZiAoIWlzSFRU
UFNVcGdyYWRlRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3VsdC5pc0hU
VFBTVXBncmFkZUVuYWJsZWQgPSAqaXNIVFRQU1VwZ3JhZGVFbmFibGVkOworCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LnNjcmlwdE1vZGUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5tYWluRG9jdW1lbnRVUkwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5o
CmluZGV4IGIwNWZmODAzZjE3MTkwYWRlMzE5Y2RhMDYzZGEwMzE0MDZlNGYzNzYuLjFkYmNjODUz
YjE3YWYyNDFiZjJmMjdiOTY2ODk0MTY3NmZlNjU0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoT3B0aW9ucy5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAKQEAgLTYwLDYgKzYxLDcg
QEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkRW5hYmxlQ3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGlj
eSB7IGZhbHNlIH07CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+
IGZyYW1lQW5jZXN0b3JPcmlnaW5zOwogICAgIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkIHsg
ZmFsc2UgfTsKKyAgICBXZWJDb3JlOjpTY3JpcHRNb2RlIHNjcmlwdE1vZGUgeyBXZWJDb3JlOjpT
Y3JpcHRNb2RlOjpOb25lIH07CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAg
IFVSTCBtYWluRG9jdW1lbnRVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNGFjNGZmYTJjMGZiOGY1YmVl
OWE5NDZlZjJiNGFiNWQ4ZTJhZGVmMi4uYjg1NDYyOGQ2NWYwOTNlY2I5NjVlMDQyNTA5MWQ4ZjJh
ZTQ0YzYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIk5ldHdv
cmtSZXNvdXJjZUxvYWRlci5oIgogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1
ZGUgIkRlcml2ZWREYXRhLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlLmgiCkBAIC05OSw2ICsxMDAs
NyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcgogICAgICwgbV9pc0FsbG93ZWRUb0Fza1VzZXJG
b3JDcmVkZW50aWFscyB7IG1fcGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENs
aWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzIH0KICAgICAs
IG1fYnVmZmVyaW5nVGltZXIgeyAqdGhpcywgJk5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVy
aW5nVGltZXJGaXJlZCB9CiAgICAgLCBtX2NhY2hlIHsgc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwo
KSA/IG51bGxwdHIgOiBjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkuY2FjaGUoKSB9CisgICAg
LCBtX2J5dGVjb2RlQ2FjaGUgeyBzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpID8gbnVsbHB0ciA6
IGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5ieXRlY29kZUNhY2hlKCkgfQogICAgICwgbV9z
aG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MobV9jb25uZWN0aW9uLT5jYXB0dXJl
RXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKCkpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKQEAgLTE0Myw2ICsxNDUsMTggQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmNhblVzZUNhY2hlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhblVzZUJ5
dGVjb2RlQ2FjaGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAoreworICAg
IGlmICghbV9ieXRlY29kZUNhY2hlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJU
KCFzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKTsKKworICAgIGlmICghY2FuVXNlQ2FjaGUocmVx
dWVzdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBi
b29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuVXNlQ2FjaGVkUmVkaXJlY3QoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAogewogICAgIGlmICghY2FuVXNlQ2FjaGUocmVx
dWVzdCkgfHwgbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbikKQEAgLTQ2MywxMSAr
NDc3LDE3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgLy8gV2Ugd2FpdCB0byByZWNl
aXZlIG1lc3NhZ2UgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSBiZWZvcmUgY29udGludWluZyBhIGxvYWQgZm9yCiAgICAgLy8gYSBtYWluIHJlc291cmNl
IGJlY2F1c2UgdGhlIGVtYmVkZGluZyBjbGllbnQgbXVzdCBkZWNpZGUgd2hldGhlciB0byBhbGxv
dyB0aGUgbG9hZC4KICAgICBib29sIHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2UgPSBpc01haW5SZXNvdXJjZSgpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9h
ZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgd2lsbFdhaXRGb3JDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSB9KTsKLSAgICBpZiAod2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZSkKKyAgICBpZiAod2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZSkgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2
ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2UsIHsgfSB9KTsKICAgICAgICAgbV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgZWxzZQotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihQb2xpY3lBY3Rpb246OlVzZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbG9hZEJ5dGVjb2Rl
Q2FjaGUocmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUsIFtsb2FkZXIgPSBtYWtlUmVm
KCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
cmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKV0oVmVjdG9yPElQQzo6RGVyaXZlZERhdGE+JiYg
ZGVyaXZlZERhdGEpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGxvYWRlci0+aGFzT25lUmVm
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgbG9hZGVyLT5zZW5kKE1l
c3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2Us
IGZhbHNlLCBXVEZNb3ZlKGRlcml2ZWREYXRhKSB9KTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFBvbGljeUFjdGlvbjo6VXNlKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCkBAIC04MDQsMTQgKzgy
NCwzOSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVDYWNoZUVudHJ5
KHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OgogICAgIH0KIAogICAgIGJvb2wgbmVlZHND
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgPSBpc01haW5SZXNvdXJjZSgpOwotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyBy
ZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSk7CiAKLSAg
ICBpZiAobmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCi0gICAgICAgIG1f
Y2FjaGVFbnRyeVdhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSA9IFdURk1vdmUo
ZW50cnkpOworICAgIGlmICghbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2Up
CisgICAgICAgIHByb2Nlc3NDYWNoZWRFbnRyeUFmdGVyRGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1v
dmUoZW50cnkpKTsKICAgICBlbHNlIHsKLSAgICAgICAgc2VuZFJlc3VsdEZvckNhY2hlRW50cnko
V1RGTW92ZShlbnRyeSkpOwotICAgICAgICBjbGVhbnVwKExvYWRSZXN1bHQ6OlN1Y2Nlc3MpOwor
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3Bv
bnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlLCB7
IH0gfSk7CisgICAgICAgIG1fY2FjaGVFbnRyeVdhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZSA9IFdURk1vdmUoZW50cnkpOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmxvYWRCeXRlY29kZUNhY2hlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPElQQzo6RGVyaXZlZERhdGE+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIGlmICghYnVmZmVyIHx8IG1fcGFyYW1ldGVycy5zY3JpcHRNb2Rl
ID09IFdlYkNvcmU6OlNjcmlwdE1vZGU6Ok5vbmUgfHwgIWNhblVzZUJ5dGVjb2RlQ2FjaGUob3Jp
Z2luYWxSZXF1ZXN0KCkpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAg
ICAgIHJldHVybjsKICAgICB9CisKKyAgICBtX2J5dGVjb2RlQ2FjaGUtPmJ5dGVjb2RlRm9yUmVx
dWVzdChvcmlnaW5hbFJlcXVlc3QoKSwgbV9wYXJhbWV0ZXJzLnNjcmlwdE1vZGUsIGJ1ZmZlciwg
W2xvYWRlciA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgbXV0YWJs
ZSB7CisgICAgICAgIFZlY3RvcjxJUEM6OkRlcml2ZWREYXRhPiBkZXJpdmVkRGF0YTsKKyAgICAg
ICAgaWYgKGRhdGEpCisgICAgICAgICAgICBkZXJpdmVkRGF0YS5hcHBlbmQoSVBDOjpEZXJpdmVk
RGF0YSB7ICJieXRlY29kZS1jYWNoZSIsIElQQzo6RGF0YVJlZmVyZW5jZSB7IGRhdGEsIHNpemUg
fSB9KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShkZXJpdmVkRGF0YSkpOwor
ICAgIH0pOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cHJvY2Vzc0NhY2hlZEVu
dHJ5QWZ0ZXJEaWRSZWNlaXZlUmVzcG9uc2Uoc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6
RW50cnk+IGVudHJ5KQoreworICAgIGxvYWRCeXRlY29kZUNhY2hlKGVudHJ5LT5yZXNwb25zZSgp
LCBlbnRyeS0+YnVmZmVyKCksIFtsb2FkZXIgPSBtYWtlUmVmKCp0aGlzKSwgZW50cnkgPSBXVEZN
b3ZlKGVudHJ5KV0oVmVjdG9yPElQQzo6RGVyaXZlZERhdGE+JiYgZGVyaXZlZERhdGEpIG11dGFi
bGUgeworICAgICAgICBpZiAobG9hZGVyLT5oYXNPbmVSZWYoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgbG9hZGVyLT5zZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlk
UmVjZWl2ZVJlc3BvbnNlIHsgZW50cnktPnJlc3BvbnNlKCksIGZhbHNlLCBXVEZNb3ZlKGRlcml2
ZWREYXRhKSB9KTsKKyAgICAgICAgbG9hZGVyLT5zZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeShXVEZN
b3ZlKGVudHJ5KSk7CisgICAgICAgIGxvYWRlci0+Y2xlYW51cChMb2FkUmVzdWx0OjpTdWNjZXNz
KTsKKyAgICB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRSZXN1bHRG
b3JDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBlbnRyeSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCmluZGV4IDViZWU5ZTI2OWMwMjQxZDRmYjg0MTIwZGRhNmViYTQ1MTZhMTAxNDYuLjJi
N2E5OGIzMzQ3MGM1MWJkZWRiN2Y0YjM5YmUwMjhlZTMxMjRiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJCeXRlY29kZUNhY2hlLmgi
CiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNp
bmNsdWRlICJOZXR3b3JrQ2FjaGUuaCIKQEAgLTQzLDYgKzQ0LDEwIEBAIGNsYXNzIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIH0KIAorbmFtZXNwYWNlIElQ
QyB7CitjbGFzcyBEZXJpdmVkRGF0YTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwpAQCAtMTIxLDYgKzEyNiw3IEBAIHByaXZh
dGU6CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcjsgfQogCiAgICAgYm9vbCBjYW5V
c2VDYWNoZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKKyAgICBib29s
IGNhblVzZUJ5dGVjb2RlQ2FjaGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29u
c3Q7CiAgICAgYm9vbCBjYW5Vc2VDYWNoZWRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKSBjb25zdDsKIAogICAgIHZvaWQgdHJ5U3RvcmVBc0NhY2hlRW50cnkoKTsKQEAg
LTEyOSw2ICsxMzUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZFJlc3VsdEZvckNhY2hlRW50
cnkoc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+KTsKICAgICB2b2lkIHZhbGlk
YXRlQ2FjaGVFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4pOwogICAg
IHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZUVudHJ5KFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4mJik7Cisg
ICAgdm9pZCBsb2FkQnl0ZWNvZGVDYWNoZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPElQQzo6RGVyaXZlZERhdGE+JiYpPiYmKTsKKyAgICB2b2lkIHByb2Nlc3NDYWNoZWRF
bnRyeUFmdGVyRGlkUmVjZWl2ZVJlc3BvbnNlKHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6
OkVudHJ5Pik7CiAKICAgICBib29sIHNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25z
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJydXB0TG9h
ZEZvckNTUEZyYW1lQW5jZXN0b3JzT3JYRnJhbWVPcHRpb25zKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKTsKQEAgLTE5MiwxMCArMjAwLDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
aXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgeyBmYWxzZSB9OwogICAgIHNpemVfdCBt
X251bUJ5dGVzUmVjZWl2ZWQgeyAwIH07CiAKLSAgICB1bnNpZ25lZCBtX3JldHJpZXZlZERlcml2
ZWREYXRhQ291bnQgeyAwIH07Ci0KICAgICBXZWJDb3JlOjpUaW1lciBtX2J1ZmZlcmluZ1RpbWVy
OwogICAgIFJlZlB0cjxOZXR3b3JrQ2FjaGU6OkNhY2hlPiBtX2NhY2hlOworICAgIFJlZlB0cjxC
eXRlY29kZUNhY2hlPiBtX2J5dGVjb2RlQ2FjaGU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0
d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFs
aWRhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Qnl0ZWNvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0J5
dGVjb2RlQ2FjaGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3Yjg0NzkxMDcwNjkzMWYwYmJmODQwYWRjZjU3
YTFmNTgzZGFhYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0J5dGVjb2RlQ2FjaGUuY3BwCkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkJ5dGVjb2RlQ2FjaGUuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJOZXR3b3JrQ2FjaGUuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0J5dGVjb2RlQ2FjaGVNZXRhZGF0YS5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0NvbXBsZXRpb24uaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0ds
b2JhbE9iamVjdC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU291cmNlQ29kZS5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1BhcnNlckVycm9yLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvVk0uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIGNvbnN0ZXhwciBjb25z
dCBjaGFyKiBieXRlY29kZUNhY2hlS2V5ID0gImJ5dGVjb2RlLWNhY2hlIjsKK3N0YXRpYyBjb25z
dGV4cHIgY29uc3QgY2hhciogYnl0ZWNvZGVNZXRhZGF0YUtleSA9ICJieXRlY29kZS1tZXRhZGF0
YSI7CisKK0J5dGVjb2RlQ2FjaGU6OkJ5dGVjb2RlQ2FjaGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdv
cmtQcm9jZXNzKQorICAgIDogbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykKKyAgICAs
IG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkJ5dGVjb2Rl
Q2FjaGUiKSkKK3sKK30KKworQnl0ZWNvZGVDYWNoZTo6fkJ5dGVjb2RlQ2FjaGUoKQoreworICAg
IEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcigqbV92bSk7CisgICAgbV92bSA9IG51bGxwdHI7Cit9
CisKK3ZvaWQgQnl0ZWNvZGVDYWNoZTo6c3RvcmVNZXRhZGF0YUZvclJlcXVlc3QoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBKU0M6OkJ5dGVjb2RlQ2FjaGVN
ZXRhZGF0YSYgbWV0YWRhdGEpCit7CisgICAgTE9HKEJ5dGVjb2RlQ2FjaGUsICJbQnl0ZWNvZGVD
YWNoZV0gc3RvcmVNZXRhZGF0YUZvclJlcXVlc3QgLSBDaGVja2luZzogJXMiLCByZXF1ZXN0LnVy
bCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKworICAgIE5ldHdvcmtDYWNoZTo6Q2FjaGUq
IGNhY2hlID0gbV9uZXR3b3JrUHJvY2Vzcy5jYWNoZSgpOworICAgIGlmICghY2FjaGUpIHsKKyAg
ICAgICAgTE9HKEJ5dGVjb2RlQ2FjaGUsICJbQnl0ZWNvZGVDYWNoZV0gQ2Fubm90IHN0b3JlIG1l
dGFkYXRhOiBjYWNoZSBpcyBub3QgYXZhaWxhYmxlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBOZXR3b3JrQ2FjaGU6OkRhdGFLZXkgZGF0YUtleSB7IHJlcXVlc3QuY2FjaGVQYXJ0
aXRpb24oKSwgYnl0ZWNvZGVNZXRhZGF0YUtleSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSB9Owor
ICAgIHN0ZDo6cGFpcjxNYWxsb2NQdHI8dWludDhfdD4sIHNpemVfdD4gZW5jb2RlZE1ldGFkYXRh
ID0gbWV0YWRhdGEuZW5jb2RlKCk7CisgICAgY2FjaGUtPnN0b3JlRGF0YShkYXRhS2V5LCBlbmNv
ZGVkTWV0YWRhdGEuZmlyc3QuZ2V0KCksIGVuY29kZWRNZXRhZGF0YS5zZWNvbmQpOworfQorCit2
b2lkIEJ5dGVjb2RlQ2FjaGU6OmJ5dGVjb2RlRm9yUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OlNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYm9keSwgQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sK
KyAgICBMT0coQnl0ZWNvZGVDYWNoZSwgIltCeXRlY29kZUNhY2hlXSBieXRlY29kZUZvclJlcXVl
c3QgLSBDaGVja2luZzogJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgp
KTsKKworICAgIE5ldHdvcmtDYWNoZTo6Q2FjaGUqIGNhY2hlID0gbV9uZXR3b3JrUHJvY2Vzcy5j
YWNoZSgpOworICAgIGlmICghY2FjaGUpIHsKKyAgICAgICAgTE9HKEJ5dGVjb2RlQ2FjaGUsICJb
Qnl0ZWNvZGVDYWNoZV0gQ2Fubm90IGdlbmVyYXRlIGJ5dGVjb2RlIGZvciByZXF1ZXN0OiBjYWNo
ZSBpcyBub3QgYXZhaWxhYmxlIik7CisgICAgICAgIGNhbGxiYWNrKG51bGxwdHIsIDApOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgTmV0d29ya0NhY2hlOjpEYXRhS2V5IGNhY2hlS2V5
IHsgcmVxdWVzdC5jYWNoZVBhcnRpdGlvbigpLCBieXRlY29kZUNhY2hlS2V5LCByZXF1ZXN0LnVy
bCgpLnN0cmluZygpIH07CisgICAgY2FjaGUtPnJldHJpZXZlRGF0YShjYWNoZUtleSwgW3Byb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
cmVxdWVzdCA9IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCB7IHJlcXVlc3QgfSwgYm9keSA9IFdU
Rk1vdmUoYm9keSksIHNjcmlwdE1vZGVdKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXpl
KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIExPRyhCeXRlY29k
ZUNhY2hlLCAiW0J5dGVjb2RlQ2FjaGVdIFJldHVybmluZyBieXRlY29kZSBmcm9tIGRpc2sgY2Fj
aGUiKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKGRhdGEsIHNpemUpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgTmV0d29ya0NhY2hlOjpDYWNoZSogY2FjaGUgPSBw
cm90ZWN0ZWRUaGlzLT5tX25ldHdvcmtQcm9jZXNzLmNhY2hlKCk7CisgICAgICAgIGlmICghY2Fj
aGUpIHsKKyAgICAgICAgICAgIExPRyhCeXRlY29kZUNhY2hlLCAiW0J5dGVjb2RlQ2FjaGVdIENh
bm5vdCBnZW5lcmF0ZSBieXRlY29kZSBmb3IgcmVxdWVzdDogY2FjaGUgaXMgbm90IGF2YWlsYWJs
ZSIpOworICAgICAgICAgICAgY2FsbGJhY2sobnVsbHB0ciwgMCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBOZXR3b3JrQ2FjaGU6OkRhdGFLZXkgbWV0YWRhdGFL
ZXkgeyByZXF1ZXN0LmNhY2hlUGFydGl0aW9uKCksIGJ5dGVjb2RlTWV0YWRhdGFLZXksIHJlcXVl
c3QudXJsKCkuc3RyaW5nKCkgfTsKKyAgICAgICAgY2FjaGUtPnJldHJpZXZlRGF0YShtZXRhZGF0
YUtleSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spLCByZXF1ZXN0ID0gV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHsg
cmVxdWVzdCB9LCBib2R5ID0gV1RGTW92ZShib2R5KSwgc2NyaXB0TW9kZV0oY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFkYXRhKSB7
CisgICAgICAgICAgICAgICAgTE9HKEJ5dGVjb2RlQ2FjaGUsICJbQnl0ZWNvZGVDYWNoZV0gRGlk
IG5vdCBmaW5kIGJ5dGVjb2RlIG9yIG1ldGFkYXRhIGZvciAlcyIsIHJlcXVlc3QudXJsKCkuc3Ry
aW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGxwdHIs
IDApOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgTmV0d29ya0NhY2hlOjpDYWNoZSogY2FjaGUgPSBwcm90ZWN0ZWRUaGlzLT5tX25ldHdvcmtQ
cm9jZXNzLmNhY2hlKCk7CisgICAgICAgICAgICBpZiAoIWNhY2hlKSB7CisgICAgICAgICAgICAg
ICAgTE9HKEJ5dGVjb2RlQ2FjaGUsICJbQnl0ZWNvZGVDYWNoZV0gQ2Fubm90IGdlbmVyYXRlIGJ5
dGVjb2RlIGZvciByZXF1ZXN0OiBjYWNoZSBpcyBub3QgYXZhaWxhYmxlIik7CisgICAgICAgICAg
ICAgICAgY2FsbGJhY2sobnVsbHB0ciwgMCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBMT0coQnl0ZWNvZGVDYWNoZSwgIltCeXRlY29kZUNh
Y2hlXSBGb3VuZCBtZXRhZGF0YSwgZ2VuZXJhdGluZyBieXRlY29kZSIpOworICAgICAgICAgICAg
cHJvdGVjdGVkVGhpcy0+Z2VuZXJhdGVCeXRlY29kZShyZXF1ZXN0LCBzY3JpcHRNb2RlLCBib2R5
LCBKU0M6OkJ5dGVjb2RlQ2FjaGVNZXRhZGF0YTo6ZGVjb2RlKGRhdGEsIHNpemUpLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIEJ5dGVjb2RlQ2Fj
aGU6OmdlbmVyYXRlQnl0ZWNvZGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJD
b3JlOjpTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGJvZHksIEpTQzo6Qnl0ZWNvZGVDYWNoZU1ldGFkYXRhJiYgbWV0YWRhdGEsIENhbGxiYWNrJiYg
Y2FsbGJhY2spCit7CisgICAgTmV0d29ya0NhY2hlOjpDYWNoZSogY2FjaGUgPSBtX25ldHdvcmtQ
cm9jZXNzLmNhY2hlKCk7CisgICAgaWYgKCFjYWNoZSkgeworICAgICAgICBMT0coQnl0ZWNvZGVD
YWNoZSwgIltCeXRlY29kZUNhY2hlXSBDYW5ub3Qgc3RvcmUgYnl0ZWNvZGU6IGNhY2hlIGlzIG5v
dCBhdmFpbGFibGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fd29ya1F1ZXVl
LT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBib2R5ID0g
V1RGTW92ZShib2R5KSwgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IHJlcXVlc3QgfSwgbWV0
YWRhdGEgPSBXVEZNb3ZlKG1ldGFkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
c2NyaXB0TW9kZSwgY2FjaGVdKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghbV92bSkKKyAgICAg
ICAgICAgIG1fdm0gPSBKU0M6OlZNOjpjcmVhdGUoKTsKKworICAgICAgICBSZWZQdHI8SlNDOjpD
YWNoZWRCeXRlY29kZT4gY2FjaGVkQnl0ZWNvZGU7CisgICAgICAgIHsKKyAgICAgICAgICAgIEpT
Qzo6SlNMb2NrSG9sZGVyIGxvY2tlcigqbV92bSk7CisgICAgICAgICAgICBKU0M6OlNvdXJjZUNv
ZGUgc291cmNlQ29kZSA9IEpTQzo6bWFrZVNvdXJjZShTdHJpbmcoYm9keS0+ZGF0YSgpLCBib2R5
LT5zaXplKCkpLCBKU0M6OlNvdXJjZU9yaWdpbiB7IHJlcXVlc3QudXJsKCkuc3RyaW5nKCkgfSk7
CisgICAgICAgICAgICBKU0M6OlBhcnNlckVycm9yIGVycm9yOworICAgICAgICAgICAgc3dpdGNo
IChzY3JpcHRNb2RlKSB7CisgICAgICAgICAgICBjYXNlIFdlYkNvcmU6OlNjcmlwdE1vZGU6OkNs
YXNzaWM6CisgICAgICAgICAgICAgICAgY2FjaGVkQnl0ZWNvZGUgPSBKU0M6OmdlbmVyYXRlUHJv
Z3JhbUJ5dGVjb2RlKCptX3ZtLCBzb3VyY2VDb2RlLCBlcnJvciwgJm1ldGFkYXRhKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2ViQ29yZTo6U2NyaXB0TW9kZTo6
TW9kdWxlOgorICAgICAgICAgICAgICAgIGNhY2hlZEJ5dGVjb2RlID0gSlNDOjpnZW5lcmF0ZU1v
ZHVsZUJ5dGVjb2RlKCptX3ZtLCBzb3VyY2VDb2RlLCBlcnJvciwgJm1ldGFkYXRhKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0IH0s
IGNhY2hlZEJ5dGVjb2RlID0gV1RGTW92ZShjYWNoZWRCeXRlY29kZSksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksIGNhY2hlXSgpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbGJhY2so
Y2FjaGVkQnl0ZWNvZGUtPmRhdGEoKSwgY2FjaGVkQnl0ZWNvZGUtPnNpemUoKSk7CisgICAgICAg
ICAgICBOZXR3b3JrQ2FjaGU6OkRhdGFLZXkgY2FjaGVLZXkgeyByZXF1ZXN0LmNhY2hlUGFydGl0
aW9uKCksIGJ5dGVjb2RlQ2FjaGVLZXksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkgfTsKKyAgICAg
ICAgICAgIGNhY2hlLT5zdG9yZURhdGEoY2FjaGVLZXksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGNhY2hlZEJ5dGVjb2RlLT5kYXRhKCkpLCBjYWNoZWRCeXRlY29kZS0+c2l6ZSgp
KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9CeXRlY29kZUNhY2hl
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0J5dGVjb2RlQ2FjaGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNGJlY2U3YjBhYWYyOTEzMTcxMGJmZGIzYTlkMjU3MWMxYjYzOTcwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9CeXRlY29k
ZUNhY2hlLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CisKK25hbWVzcGFjZSBKU0Mgewor
Y2xhc3MgQnl0ZWNvZGVDYWNoZU1ldGFkYXRhOworY2xhc3MgVk07Cit9OworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBTaGFyZWRCdWZmZXI7Citl
bnVtIGNsYXNzIFNjcmlwdE1vZGUgOiB1aW50OF90OworfTsKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIE5ldHdvcmtQcm9jZXNzOworCitjbGFzcyBCeXRlY29kZUNhY2hlIDogcHVibGlj
IFJlZkNvdW50ZWQ8Qnl0ZWNvZGVDYWNoZT4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJ5
dGVjb2RlQ2FjaGUpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxCeXRlY29kZUNhY2hlPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdv
cmtQcm9jZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQnl0ZWNvZGVD
YWNoZShuZXR3b3JrUHJvY2VzcykpOworICAgIH0KKworICAgIH5CeXRlY29kZUNhY2hlKCk7CisK
KyAgICB2b2lkIHN0b3JlTWV0YWRhdGFGb3JSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IEpTQzo6Qnl0ZWNvZGVDYWNoZU1ldGFkYXRhJik7CisKKyAgICB1c2lu
ZyBDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgdWludDhfdCosIHNpemVf
dCk+OworICAgIHZvaWQgYnl0ZWNvZGVGb3JSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIFdlYkNvcmU6OlNjcmlwdE1vZGUsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+LCBDYWxsYmFjayYmKTsKKworcHJpdmF0ZToKKyAgICBCeXRlY29kZUNhY2hlKE5ldHdvcmtQ
cm9jZXNzJik7CisKKyAgICB2b2lkIGdlbmVyYXRlQnl0ZWNvZGUoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2NyaXB0TW9kZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4sIEpTQzo6Qnl0ZWNvZGVDYWNoZU1ldGFkYXRhJiYsIENhbGxiYWNrJiYpOworCisg
ICAgTmV0d29ya1Byb2Nlc3MmIG1fbmV0d29ya1Byb2Nlc3M7CisgICAgUmVmUHRyPEpTQzo6Vk0+
IG1fdm07CisgICAgUmVmPFdvcmtRdWV1ZT4gbV93b3JrUXVldWU7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5oCmluZGV4IGM3ZjM4NmIzZDdjMzE0NTU4MGYyYWMwZTBlMzUyZWE2Yjg3MTU1
YzEuLmZmZDE5MDViODRmMTQyOGIyNDZlOGE4YjhkODExNTc4ZDI4ZDU4NzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtMTMw
LDcgKzEzMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmV0cmlldmVEYXRhKGNvbnN0IERhdGFL
ZXkmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPik7CiAgICAgdm9pZCBz
dG9yZURhdGEoY29uc3QgRGF0YUtleSYsICBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOwot
ICAgIAorCiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlRW50cnkoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gbWFrZVJlZGlyZWN0RW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVkaXJlY3RSZXF1ZXN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuY3BwCmluZGV4IDhmYTgxZDEwOWE0Yzcz
Y2QwYjMxOTViODhmZjVlM2RiMTU3YzM4ZTYuLmQ4MDRiYWUxMjg5N2Q0M2FiODU0NWE4MWJjOTY4
ODcxZTQyNmExMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NCw3ICs2NCw3IEBAIEtleTo6S2V5KFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKIEtleTo6S2V5KGNvbnN0IERhdGFLZXkmIGRh
dGFLZXksIGNvbnN0IFNhbHQmIHNhbHQpCiAgICAgOiBtX3BhcnRpdGlvbihkYXRhS2V5LnBhcnRp
dGlvbikKICAgICAsIG1fdHlwZShkYXRhS2V5LnR5cGUpCi0gICAgLCBtX2lkZW50aWZpZXIoaGFz
aEFzU3RyaW5nKGRhdGFLZXkuaWRlbnRpZmllcikpCisgICAgLCBtX2lkZW50aWZpZXIoZGF0YUtl
eS5pZGVudGlmaWVyKQogICAgICwgbV9oYXNoKGNvbXB1dGVIYXNoKHNhbHQpKQogICAgICwgbV9w
YXJ0aXRpb25IYXNoKGNvbXB1dGVQYXJ0aXRpb25IYXNoKHNhbHQpKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmgKaW5kZXgg
MjkxNWIyMTRiMzJlY2E0Nzk1MTM4NDlmMTJiN2M0ZGJjN2YzZDU0OS4uNzE0Zjk5OGViYmNkYWIy
ZTVhZmM3ZmI0NGFhOGVkMjgyMDQyMzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNyArMzcsNyBAQCBu
YW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIHN0cnVjdCBEYXRhS2V5IHsKICAgICBTdHJpbmcgcGFy
dGl0aW9uOwogICAgIFN0cmluZyB0eXBlOwotICAgIFNIQTE6OkRpZ2VzdCBpZGVudGlmaWVyOwor
ICAgIFN0cmluZyBpZGVudGlmaWVyOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1t
CmluZGV4IGM4YWQ3M2U2MWYzMTE5MTMyNDdjMjNiYzk4NzdjZDZiNWIzYzFjMDUuLmE2ZWU0Yzll
NjIxNmM5N2YwODk0NGQ2NmUyODdlMzM2MjA3MGVhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xMTksNiArMTE5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
TmV0d29ya1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3b3JrUHJvY2Vzc0MKICNlbmRpZgogCiAgICAg
bV9jYWNoZSA9IE5ldHdvcmtDYWNoZTo6Q2FjaGU6Om9wZW4oKnRoaXMsIG1fZGlza0NhY2hlRGly
ZWN0b3J5LCBjYWNoZU9wdGlvbnMpOworICAgIG1fYnl0ZWNvZGVDYWNoZSA9IEJ5dGVjb2RlQ2Fj
aGU6OmNyZWF0ZSgqdGhpcyk7CiAgICAgaWYgKCFtX2NhY2hlKQogICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihOZXR3b3JrQ2FjaGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgV2ViS2l0IG5l
dHdvcmsgZGlzayBjYWNoZSIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vz
cy5zYi5pbgppbmRleCAwNmExM2Q0YTNmMmI1OGE1NWY1ZjI3MmVmYjRkOGYzNGQ4ODZkYzUwLi5m
NWFiODgxNjk0NThlNDgwZDRiN2IzN2UwM2M1ZmFmYmM0ZTNiYjVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9j
ZXNzLnNiLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBs
ZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4KQEAgLTEsNCArMSw0IEBACi07IENvcHlyaWdo
dCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKzsgQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogOwogOyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKIDsgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw2ICszOCw3IEBACiAgICAgICAgICJody5hdmFp
bGNwdSIKICAgICAgICAgImh3Lm5jcHUiCiAgICAgICAgICJody5tb2RlbCIKKyAgICAgICAgImtl
cm4uYm9vdHNlc3Npb251dWlkIgogICAgICAgICAia2Vybi5tZW1vcnlzdGF0dXNfbGV2ZWwiCiAg
ICAgICAgICJ2bS5mb290cHJpbnRfc3VzcGVuZCIpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCmluZGV4IDNj
YWI1MDY5OGMwZTI4MGM5ZTA5YzE1YmUwZmRjZGJhMzhlMmI5YmMuLmVlMjE0NmRiOWE0MzZhY2Y4
N2I3MGI5Y2JhYzY4NTU2NTZlYjc1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0xMTgsNiArMTE4
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nl
c3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKICNlbmRpZgogCiAgICAgbV9jYWNoZSA9IE5l
dHdvcmtDYWNoZTo6Q2FjaGU6Om9wZW4oKnRoaXMsIG1fZGlza0NhY2hlRGlyZWN0b3J5LCBjYWNo
ZU9wdGlvbnMpOworICAgIG1fYnl0ZWNvZGVDYWNoZSA9IEJ5dGVjb2RlQ2FjaGU6OmNyZWF0ZSgq
dGhpcyk7CiAKICAgICBzdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXI+KCktPnNldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kocGFyYW1ldGVycy5jb29raWVBY2NlcHRQb2xpY3ksIE9wdGlvbmFsQ2Fs
bGJhY2tJRCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVy
aXZlZERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVyaXZlZERhdGEuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjEwOGY3NDZjNDdkZTAzYTMxYjIyYjc3NTJmZWY4MDE2YmNlNDYxMGEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZXJpdmVkRGF0YS5j
cHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJEZXJpdmVkRGF0YS5oIgorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNp
bmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiRW5jb2Rlci5oIgorCituYW1lc3BhY2UgSVBD
IHsKKwordm9pZCBEZXJpdmVkRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGUoZW5jb2RlciwgbV90eXBlKTsKKyAg
ICBlbmNvZGVyLmVuY29kZShtX2RhdGEpOworfQorCitib29sIERlcml2ZWREYXRhOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgRGVyaXZlZERhdGEmIGRlcml2ZWREYXRhKQoreworICAgIGlmICgh
QXJndW1lbnRDb2RlcjxTdHJpbmc+OjpkZWNvZGUoZGVjb2RlciwgZGVyaXZlZERhdGEubV90eXBl
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBkZWNvZGVyLmRlY29kZShkZXJp
dmVkRGF0YS5tX2RhdGEpOworfQorCitPcHRpb25hbDxEZXJpdmVkRGF0YT4gRGVyaXZlZERhdGE6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIERlcml2ZWREYXRhIGRlcml2ZWREYXRh
OworICAgIGlmICghZGVjb2RlKGRlY29kZXIsIGRlcml2ZWREYXRhKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4geyBkZXJpdmVkRGF0YSB9OworfQorCit9IC8vIG5h
bWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Rlcml2
ZWREYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZXJpdmVkRGF0YS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY4MTQxYWQwY2FhZjhlMTdlZTE2NzhmNzk2NzlhMzQ2NDQyMmI0OGEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZXJpdmVkRGF0YS5oCkBAIC0w
LDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIElQQyB7CisKK2NsYXNzIERlY29kZXI7CitjbGFzcyBFbmNvZGVyOworCitjbGFzcyBE
ZXJpdmVkRGF0YSB7CitwdWJsaWM6CisgICAgRGVyaXZlZERhdGEoKSA9IGRlZmF1bHQ7CisKKyAg
ICBEZXJpdmVkRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSkKKyAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICAgICAgLCBtX2RhdGEoZGF0YSkK
KyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fZGF0
YS5zaXplKCk7IH0KKworICAgIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQorICAgIGNvbnN0IERhdGFSZWZlcmVuY2UmIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2RhdGE7IH0KKworICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMg
Ym9vbCBkZWNvZGUoRGVjb2RlciYsIERlcml2ZWREYXRhJik7CisgICAgc3RhdGljIE9wdGlvbmFs
PERlcml2ZWREYXRhPiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFN0cmluZyBt
X3R5cGU7CisgICAgRGF0YVJlZmVyZW5jZSBtX2RhdGE7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJ
UEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggNGM1Y2M2NzQ0MWYyYjAxYmE0OWVhZGFi
NGQ0MWYzZTkwODFmODk3ZC4uY2NiNDQ5MDYyNTIwZTY0NDdjNjNjYzNjZmI3NTdlYTZiOGQxY2Vm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTQzLDYgKzQzLDcgQEAgZXh0ZXJuICJD
IiB7CiAgICAgTShBdXRvbWF0aW9uKSBcCiAgICAgTShBY3Rpdml0eVN0YXRlKSBcCiAgICAgTShC
YWNrRm9yd2FyZCkgXAorICAgIE0oQnl0ZWNvZGVDYWNoZSkgXAogICAgIE0oQ2FjaGVTdG9yYWdl
KSBcCiAgICAgTShDb250ZW50T2JzZXJ2YXRpb24pIFwKICAgICBNKENvbnRleHRNZW51KSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBhODg1YmIwNjJjZWY4
YjUxYWQ5NzU2MzBiNTI4NTRmNTA0ZDE1YTRhLi5hMTQyNWRmZmI1NGJiMTUyZWU2YThmZGYyZWE3
MGU0NmZlYTc4NzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
QEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MDUs
NiArNDA1LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgc3BlY2lhbF9jYXNl
cyA9IHsKICAgICAgICAgJ0lQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSc6IFsnIlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCInLCAnIkRhdGFSZWZlcmVuY2UuaCInXSwKICAgICAgICAg
J01hY2hTZW5kUmlnaHQnOiBbJzx3dGYvTWFjaFNlbmRSaWdodC5oPiddLAorICAgICAgICAnSlND
OjpCeXRlY29kZUNhY2hlTWV0YWRhdGEnOiBbJzxKYXZhU2NyaXB0Q29yZS9CeXRlY29kZUNhY2hl
TWV0YWRhdGEuaD4nXSwKICAgICAgICAgJ0pTQzo6TWVzc2FnZUxldmVsJzogWyc8SmF2YVNjcmlw
dENvcmUvQ29uc29sZVR5cGVzLmg+J10sCiAgICAgICAgICdKU0M6Ok1lc3NhZ2VTb3VyY2UnOiBb
JzxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4nXSwKICAgICAgICAgJ0luc3BlY3Rvcjo6
SW5zcGVjdG9yVGFyZ2V0VHlwZSc6IFsnPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclRhcmdldC5o
PiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggODAzYjU3Njg4YzAzZDRlODA2OTgzODllODVjYjU5ZWM5ZmI3
MTczNS4uYTIzODY3NDZiYzA1YmQ4YTZmOWVhMjBiNDg5NzFiOWJlYWQwNzU3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC02NSw2ICs2NSw3IEBAIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dP
cmlnaW5TdG9yZS5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiAKK05l
dHdvcmtQcm9jZXNzL2NhY2hlL0J5dGVjb2RlQ2FjaGUuY3BwCiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZS5jcHAKIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGU1MzBiMzhjYWY3YjJkMWVkOTIxYzk0NzdlM2I3N2QxODk2MzFkMjQuLmVj
ZGM5NzM5Mzk1NzRmNWQyOTRjN2U5MjA3N2U5YWVmNjE1MzFiOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIyLDYgKzEyMiw5IEBA
CiAJCTBGRjI0QTJEMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRjI0QTJCMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMEZGMjRBMkUx
ODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGMjRB
MkMxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNz
YWdlcy5oICovOyB9OwogCQkwRkYyNjRBMDFBMUZGOUNDMDAxRkU3NTkgLyogUmVtb3RlTGF5ZXJU
cmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjcwN0M3OTFBMUZFRUEzMDBEQTdBNDUgLyogUmVtb3RlTGF5
ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmggKi87IH07CisJCTE0RDAxQTczMjFGQTE4
MDYwMEJDNTRFOSAvKiBCeXRlY29kZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQwMUE3MTIxRkExODA1MDBCQzU0RTkgLyogQnl0ZWNvZGVD
YWNoZS5oICovOyB9OworCQkxNEUyODA5NDIyMDAwQTBGMDAzQkM1N0IgLyogRGVyaXZlZERhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RTI4MDky
MjIwMDA5RjkwMDNCQzU3QiAvKiBEZXJpdmVkRGF0YS5oICovOyB9OworCQkxNEUyODA5NTIyMDAw
QTIyMDAzQkM1N0IgLyogRGVyaXZlZERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTRFMjgwOTMyMjAwMDlGOTAwM0JDNTdCIC8qIERlcml2ZWRE
YXRhLmNwcCAqLzsgfTsKIAkJMTU3MzlCQkQxQjQyMDQyRDAwRDI1OEMxIC8qIFdlYlVzZXJNZWRp
YUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NEE0MTBGNDkxOUFGN0I4MDAwMkVCQUI1IC8qIFdlYlVzZXJNZWRpYUNsaWVudC5oICovOyB9Owog
CQkxQTAwMkQ0MzE5NkIzMzcwMDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMDAyRDQyMTk2
QjMzNzAwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oICovOyB9OwogCQkxQTAw
MkQ0NDE5NkIzMzg5MDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTAwMkQzRjE5NkIzMjk0MDBCOUFENDQg
LyogX1dLU2Vzc2lvblN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTE5NDgsNiArMTk1MSwxMCBAQAogCQkwRkYyNEEyQzE4NzlFNEJDMDAz
QUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHlNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJMEZGMjRBMkYxODc5RTRGRTAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTA1OEM3
QjFGRUE1NTg1RTExQ0EyQ0JCIC8qIENvY29hLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0g
Q29jb2EuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29jb2Eu
ZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQkxNEQwMUE3MDIxRkEx
ODA1MDBCQzU0RTkgLyogQnl0ZWNvZGVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBCeXRlY29kZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMTREMDFBNzEyMUZBMTgwNTAwQkM1NEU5IC8qIEJ5dGVjb2RlQ2FjaGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxNEUyODA5MjIyMDAwOUY5MDAzQkM1N0IgLyogRGVyaXZlZERhdGEu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVyaXZlZERhdGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRFMjgwOTMyMjAwMDlGOTAwM0JDNTdCIC8qIERlcml2
ZWREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlcml2ZWRE
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwMDJEM0UxOTZCMzI5NDAw
QjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IF9XS1Nlc3Npb25TdGF0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUEwMDJEM0YxOTZCMzI5NDAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tTZXNzaW9uU3RhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwMDJENDIxOTZCMzM3MDAwQjlBRDQ0IC8qIF9XS1Nlc3Np
b25TdGF0ZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1Nl
c3Npb25TdGF0ZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MjM1
LDkgKzUyNDIsOSBAQAogCQkJCTVDOEREMzgxMUZFNDU1Q0EwMEYyQTU1NiAvKiBXZWJzaXRlQXV0
b3BsYXlRdWlyay5oICovLAogCQkJCTUxMUY3RDNGMUVCMUJDRUUwMEU0N0I4MyAvKiBXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycy5jcHAgKi8sCiAJCQkJNTExRjdENDAxRUIxQkNFRTAwRTQ3Qjgz
IC8qIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmggKi8sCisJCQkJRjQzMEU5NDEyMjQ3MzJB
OTAwNUZFMDUzIC8qIFdlYnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaCAqLywKIAkJCQk1QzNBRUE4
RTFGRTFGMURGMDAyMzE4RDMgLyogV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAgKi8sCiAJCQkJNUMx
MzAyNEExRkUzNDFBNzAwMEQ5QjMxIC8qIFdlYnNpdGVQb2xpY2llc0RhdGEuaCAqLywKLQkJCQlG
NDMwRTk0MTIyNDczMkE5MDA1RkUwNTMgLyogV2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGljeS5oICov
LAogCQkJCTBFREU4NTAyMjAwNEU3NDkwMDAzMDU2MCAvKiBXZWJzaXRlUG9wVXBQb2xpY3kuaCAq
LywKIAkJCQk4MzYwMzQ5RDFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFj
a2VyLmNwcCAqLywKIAkJCQk4MzYwMzQ5RTFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0
YWJhc2VUcmFja2VyLmggKi8sCkBAIC01NDY5LDYgKzU0NzYsOCBAQAogCQkJCTFBQzc1MzdFMTgz
QkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmggKi8sCiAJCQkJQkMwMzJEOUQxMEY0MzdE
MTAwNThDMTVBIC8qIERlY29kZXIuY3BwICovLAogCQkJCUJDMDMyRDlFMTBGNDM3RDEwMDU4QzE1
QSAvKiBEZWNvZGVyLmggKi8sCisJCQkJMTRFMjgwOTMyMjAwMDlGOTAwM0JDNTdCIC8qIERlcml2
ZWREYXRhLmNwcCAqLywKKwkJCQkxNEUyODA5MjIyMDAwOUY5MDAzQkM1N0IgLyogRGVyaXZlZERh
dGEuaCAqLywKIAkJCQlCQzAzMkQ5RjEwRjQzN0QxMDA1OEMxNUEgLyogRW5jb2Rlci5jcHAgKi8s
CiAJCQkJQkMwMzJEQTAxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuaCAqLywKIAkJCQk0MTUx
RTVDMzFGQkI5MEE5MDBFNDdFMkQgLyogRm9ybURhdGFSZWZlcmVuY2UuaCAqLywKQEAgLTg4ODks
NiArODg5OCw4IEBACiAJCUU0ODlEMjgyMUEwQTJCRTgwMDc4QzA2QSAvKiBjYWNoZSAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMTREMDFBNzAyMUZBMTgw
NTAwQkM1NEU5IC8qIEJ5dGVjb2RlQ2FjaGUuY3BwICovLAorCQkJCTE0RDAxQTcxMjFGQTE4MDUw
MEJDNTRFOSAvKiBCeXRlY29kZUNhY2hlLmggKi8sCiAJCQkJNDE4OTdFRDYxRjQxNUQ4NjAwMTZG
QTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5jcHAgKi8sCiAJCQkJNDE4OTdFRDIxRjQxNUQ4NTAw
MTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5oICovLAogCQkJCTQxQzg1ODE5MUY1MTBERUUw
MDY1RTA4NSAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgKi8sCkBAIC05MTQ3LDYgKzkx
NTgsNyBAQAogCQkJCUUxNzA4NzZDMTZENkNBNjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEY2MDE0MzIxNTVDNUFBMjAwMUZCREUwIC8qIEJsb2Nr
aW5nUmVzcG9uc2VNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTcwNTExMUJFNDEwRTYwMDg3
NEFGMSAvKiBCbG9ja1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTREMDFBNzMyMUZBMTgwNjAw
QkM1NEU5IC8qIEJ5dGVjb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzA2NUZBMTI1
OTM0NEUwMEU3MTI3OCAvKiBDYWNoZU1vZGVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTg5N0VE
ODFGNDE1RDhBMDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MUZBQkQyQTFGNERFMDAxMDA2QTZDOTcgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUu
aCBpbiBIZWFkZXJzICovLApAQCAtOTE2Niw2ICs5MTc4LDcgQEAKIAkJCQlDNTVGOTE3MTFDNTk2
NzZFMDAyOUU5MkQgLyogRGF0YURldGVjdGlvblJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFDNzUzODAxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMDMyREE2MTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQkxNEUyODA5NDIyMDAwQTBGMDAzQkM1N0IgLyogRGVyaXZlZERhdGEuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU3RENFREFCMjE0QzYwMDkwMDE2Qjg0NyAvKiBEZXZpY2VJZGVudGl0eVNQ
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcyOTdGOUYxQzE3QkJFQTAxNUYwNzM1IC8qIERldmlj
ZUlkSGFzaFNhbHRTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4Mzg5MUI2QzFBNjhDMzBC
MDAzMEYzODYgLyogRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAt
OTI1NSw2ICs5MjY4LDcgQEAKIAkJCQk0MTMwNzVBRDFERTg1RjU4MDAzOUVDNjkgLyogTGliV2Vi
UlRDU29ja2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURDNDU5QzFFM0RCQjI4MDBCMTFGNTEg
LyogTGliV2ViUlRDU29ja2V0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTMwNzVCMjFE
RTg1RjU4MDAzOUVDNjkgLyogTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTc5MDBCNDAyMUY4RjlCODAwODMxN0RFIC8qIExvYWRPcHRpbWl6ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJEMTA4NzYxMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTc4REMyOTgyMTU1QTAwMjAwNzRFODE1IC8qIExvY2FsQXV0
aGVudGljYXRpb25Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQUMyMTRDNjAy
NzAwMTZCODQ3IC8qIExvY2FsQXV0aGVudGljYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC05NzA5
LDYgKzk3MjMsNyBAQAogCQkJCTFBNDgzMkQxMUE5QkRDMkYwMDhCNERGRSAvKiBXZWJzaXRlRGF0
YVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1M0MyQUExQTMyNTczMDAwNEU4QzcwIC8q
IFdlYnNpdGVEYXRhU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMUY3RDQxMUVCMUJDRjUw
MEU0N0I4MyAvKiBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRjQzMEU5NDIyMjQ3MzM1RjAwNUZFMDUzIC8qIFdlYnNpdGVNZXRhVmlld3BvcnRQb2xpY3ku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBFREU4NTAzMjAwNEU3NUQwMDAzMDU2MCAvKiBXZWJzaXRl
UG9wVXBQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxNDkzODA5MjIzNDcxMDQwMDBDRDcw
NyAvKiBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNjAz
NEEwMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtOTgzNCw3ICs5ODQ5LDYgQEAKIAkJCQlCQzQwNzVGODEyNEZGMDI3MDA2OEYy
MEEgLyogV0tEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0E3MDlBNzFFM0VBMEZEMDBDQTU5
NjkgLyogV0tEYXRhRGV0ZWN0b3JUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdBNzA5QTkx
RTNFQTQwQzAwQ0E1OTY5IC8qIFdLRGF0YURldGVjdG9yVHlwZXNJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJRjQzMEU5NDIyMjQ3MzM1RjAwNUZFMDUzIC8qIFdlYnNpdGVNZXRhVmlld3Bv
cnRQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFOTRGQzE2MjAzNTFBNkQwMDk3NEJBMCAv
KiBXS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc3RUFE
NDUxN0UyQzUxQTAwMkQxOTNEIC8qIFdLRGVjbGFyYXRpb25TcGVjaWZpZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1QzM1OUMwRDIxNTQ3MzlGMDA5RTc5NDggLyogV0tEZXByZWNhdGVkLmggaW4g
SGVhZGVycyAqLywKQEAgLTEwOTE3LDYgKzEwOTMxLDcgQEAKIAkJCQkyRDkyQTc3RDIxMkI2QTcx
MDBGNDkzRkQgLyogQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3RTIx
MkI2QTcxMDBGNDkzRkQgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
RDkyQTc3RjIxMkI2QTcxMDBGNDkzRkQgLyogRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkxNEUyODA5NTIyMDAwQTIyMDAzQkM1N0IgLyogRGVyaXZlZERhdGEuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUFCN0Q2MTkxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2NDIyOTkxMkREMDI5MjAwQ0FBRTJD
IC8qIERyYXdpbmdBcmVhTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
NjQyMzA4MTJERDA5RUIwMENBQUUyQyAvKiBEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDI1Y2NjYTA1ZjU0NTNiMzAzZWVl
MDlmYWYyNjUxNmFjOWM5ZGMyMjcuLjE5OGRkYmY0OWVmOGUwYTRlZmUzYTk0YmZlY2ZlZjgwZWM0
OWM4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEyLCAyMDE1LCAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMiwgMjAxNSwgMjAxOCwgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ1LDggKzQ1LDEw
IEBACiAjaW5jbHVkZSAiV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2Vi
VVJMU2NoZW1lSGFuZGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lVGFza1Byb3h5
LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnl0ZWNvZGVDYWNoZU1ldGFkYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQ2FjaGVkUmVzb3VyY2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZFNjcmlwdC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzLmg+CkBAIC0yODAsNiArMjgyLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJh
dGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNv
dXJjZUwKICAgICBsb2FkUGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5mbyA9IHJlc291cmNl
TG9hZGVyLnNob3VsZEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKTsKICAgICBsb2FkUGFyYW1ldGVy
cy5tYXhpbXVtQnVmZmVyaW5nVGltZSA9IG1heGltdW1CdWZmZXJpbmdUaW1lOwogICAgIGxvYWRQ
YXJhbWV0ZXJzLm9wdGlvbnMgPSByZXNvdXJjZUxvYWRlci5vcHRpb25zKCk7CisgICAgbG9hZFBh
cmFtZXRlcnMuc2NyaXB0TW9kZSA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5zY3JpcHRNb2Rl
OwogICAgIGxvYWRQYXJhbWV0ZXJzLnByZWZsaWdodFBvbGljeSA9IHJlc291cmNlTG9hZGVyLm9w
dGlvbnMoKS5wcmVmbGlnaHRQb2xpY3k7CiAgICAgbG9hZFBhcmFtZXRlcnMuaXNIVFRQU1VwZ3Jh
ZGVFbmFibGVkID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSA/IHJlc291cmNlTG9hZGVyLmZyYW1l
KCktPnNldHRpbmdzKCkuSFRUUFNVcGdyYWRlRW5hYmxlZCgpIDogZmFsc2U7CiAKQEAgLTY2MSw2
ICs2NjQsMTEgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6ZGlkRmluaXNoUHJlY29ubmVjdGlv
bih1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShlcnJvcikpOwogfQogCit2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpjYWNo
ZUJ5dGVjb2RlRm9yU2NyaXB0KGNvbnN0IFdlYkNvcmU6OkNhY2hlZFNjcmlwdCYgc2NyaXB0LCBj
b25zdCBKU0M6OkJ5dGVjb2RlQ2FjaGVNZXRhZGF0YSYgbWV0YWRhdGEpCit7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDYWNo
ZUJ5dGVjb2RlRm9yUmVxdWVzdChzY3JpcHQucmVzb3VyY2VSZXF1ZXN0KCksIG1ldGFkYXRhKSwg
MCk7Cit9CisKIGJvb2wgV2ViTG9hZGVyU3RyYXRlZ3k6OmlzT25MaW5lKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9pc09uTGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4IDFlZmM5M2MwMmEzY2EyYjliZjBlZGYw
YWE5MDVlNWY5YmIwZDNiZDMuLjk1MzJmZDZjNTc0ZjdiZjgxYThjYzNiZmVkZGVlZGIyOGE1NWQ4
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyLCAyMDE1LCAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNiArMzMsMTAgQEAKICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKK25hbWVzcGFjZSBKU0Mgewor
Y2xhc3MgQnl0ZWNvZGVDYWNoZU1ldGFkYXRhOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBz
dHJ1Y3QgRmV0Y2hPcHRpb25zOwogfQpAQCAtNjgsNiArNzIsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBwcmVjb25uZWN0VG8oV2ViQ29yZTo6RnJhbWVMb2FkZXImLCBjb25zdCBVUkwmLCBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYp
IGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVjb25u
ZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKIAorICAgIHZvaWQg
Y2FjaGVCeXRlY29kZUZvclNjcmlwdChjb25zdCBXZWJDb3JlOjpDYWNoZWRTY3JpcHQmLCBjb25z
dCBKU0M6OkJ5dGVjb2RlQ2FjaGVNZXRhZGF0YSYpIG92ZXJyaWRlOworCiAgICAgdm9pZCBzZXRD
YXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wpIGZpbmFsOwogCiAgICAg
V2ViUmVzb3VyY2VMb2FkZXIqIHdlYlJlc291cmNlTG9hZGVyRm9ySWRlbnRpZmllcihSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUmVzb3VyY2VM
b2FkZXJzLmdldChpZGVudGlmaWVyKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGJmODhmZGEzMDA3ZTE2
NGZmMzhhOTUyMmFiYjgxZmVmZDdlOWY4NTIuLmMxZDljNjJkNTNkNjc1Nzc1YzAwY2VjZDA0ZmY5
NTk0ZmJhYjY0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi
V2ViUmVzb3VyY2VMb2FkZXIuaCIKIAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNs
dWRlICJEZXJpdmVkRGF0YS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXJN
ZXNzYWdlcy5oIgpAQCAtMTEwLDcgKzExMSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFNlbmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTCiAg
ICAgbV9jb3JlTG9hZGVyLT5kaWRTZW5kRGF0YShieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2Vu
dCk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlTWVzc2FnZSkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSwgY29uc3QgVmVjdG9yPElQQzo6RGVyaXZlZERhdGE+
JiBkZXJpdmVkRGF0YSkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlIGZvciAnJXMnLiBTdGF0dXMgJWQuIiwgbV9j
b3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIHJlc3BvbnNlLmh0dHBT
dGF0dXNDb2RlKCkpOwogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNw
b25zZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIiwgc3RhdHVzID0gJWQpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMu
cGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5yZXNvdXJjZUlELCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKQEAgLTE0MCw2ICsxNDEs
MTAgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib28KICAgICB9CiAKICAgICBtX2NvcmVMb2FkZXIt
PmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgV1RGTW92ZShwb2xpY3lEZWNpc2lvbkNvbXBs
ZXRpb25IYW5kbGVyKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IGRlcml2ZWREYXRh
KSB7CisgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW50cnkuZGF0
YSgpLmRhdGEoKSwgZW50cnkuZGF0YSgpLnNpemUoKSk7CisgICAgICAgIG1fY29yZUxvYWRlci0+
ZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZShlbnRyeS50eXBlKCksIGJ1ZmZlci5nZXQo
KSk7CisgICAgfQogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuaAppbmRleCA3ZmQ3ODMyMjMzYTM2MmMyM2E5MDRmYzE1ZWYzNGNhNjRhOTY3ZWFlLi4x
NGY1MjU0MjgxNWY5YTE1NTkzN2ZiNTE3N2UwY2QyYWI5MGM3ZmUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNiAr
MzMsNyBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIERhdGFSZWZlcmVuY2U7CitjbGFzcyBE
ZXJpdmVkRGF0YTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzYsOSArNzcsOCBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRTZW5kRGF0
YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOworICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29s
IG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlLCBjb25zdCBWZWN0b3I8SVBD
OjpEZXJpdmVkRGF0YT4mKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwotICAgIHZvaWQgZGlkUmV0
cmlldmVEZXJpdmVkRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYpOwogICAgIHZvaWQgZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCmluZGV4IDdiOTMyNTZmMDM2
ZGQwNDJmNDRiYTgzYTMxOGJiN2I2NjM2ZDQxYWEuLjMwYjAzZDA2ZDI4MjBjOGI3NmU2NDVjN2Qy
ZTM3ZmUzZjY0OGViY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsy
Myw3IEBACiBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UpCiAgICAgRGlkU2VuZERhdGEo
dWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpCi0gICAgRGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wg
bmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCisgICAgRGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UsIFZlY3RvcjxJUEM6OkRlcml2ZWREYXRhPiBk
YXRhKQogICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBk
YXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogICAgIERpZEZpbmlzaFJlc291cmNlTG9h
ZChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgbmV0d29ya0xvYWRNZXRyaWNzKQogICAgIERp
ZEZhaWxSZXNvdXJjZUxvYWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgppbmRl
eCA3MzZjY2FhMDRlYTA4MGNjYjlmZWFlNjczYmFmYTZjM2U4NzZlZGVlLi5mZDRmNjIwODJkYzhm
YTJhZGYxMTgzNmFhNjg4NzRkNzNhZDhjMzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCkBAIC0xLDQgKzEsNCBAQAotOyBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCis7
IENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
IDsKIDsgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiA7IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTY1LDYgKzE2NSw3IEBACiAgICAgICAg
ICJody5uY3B1IgogICAgICAgICAiaHcudmVjdG9ydW5pdCIKICAgICAgICAgImtlcm4uYm9vdGFy
Z3MiIDs7IDxyZGFyOi8vcHJvYmxlbS80NzczODAxNT4KKyAgICAgICAgImtlcm4uYm9vdHNlc3Np
b251dWlkIgogICAgICAgICAia2Vybi5ob3N0bmFtZSIKICAgICAgICAgImtlcm4ubWF4ZmlsZXNw
ZXJwcm9jIgogICAgICAgICAia2Vybi5tZW1vcnlzdGF0dXNfbGV2ZWwiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuaAppbmRleCA1NWIzNjk3NTMwNjU4MjE0YmM5NzlhODc5MmI2NjA3MjZkODI5NmRk
Li4yOTgwZWE1MTUzMTYzNjc2ZGM3ZGQ4MGI5ZDJhZTE3NTg5NzI1MTk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMTk5
OCBMYXJzIEtub2xsIChrbm9sbEBtcGktaGQubXBnLmRlKQogICAgIENvcHlyaWdodCAoQykgMjAw
MSBEaXJrIE11ZWxsZXIgPG11ZWxsZXJAa2RlLm9yZz4KLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDYtMjAwOCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA2LTIwMDgsIDIwMTUsIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICAgIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMzksNiArMzksMTAgQEAgY2xhc3MgV2ViUmVz
b3VyY2VMb2FkU2NoZWR1bGVyOwogCiBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXImIHdlYlJlc291
cmNlTG9hZFNjaGVkdWxlcigpOwogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEJ5dGVjb2RlQ2Fj
aGVNZXRhZGF0YTsKK30KKwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKQEAgLTYwLDYgKzY0LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBwcmVjb25uZWN0VG8o
V2ViQ29yZTo6RnJhbWVMb2FkZXImLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogCisgICAg
dm9pZCBjYWNoZUJ5dGVjb2RlRm9yU2NyaXB0KGNvbnN0IFdlYkNvcmU6OkNhY2hlZFNjcmlwdCYs
IGNvbnN0IEpTQzo6Qnl0ZWNvZGVDYWNoZU1ldGFkYXRhJikgZmluYWwgeyB9CisKICAgICB2b2lk
IHNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoYm9vbCkgZmluYWwgeyB9
CiAKICAgICBib29sIGlzU2VyaWFsTG9hZGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
U2VyaWFsTG9hZGluZ0VuYWJsZWQ7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369651</attachid>
            <date>2019-05-11 05:41:02 -0700</date>
            <delta_ts>2019-05-13 05:43:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194047-20190511144059.patch</filename>
            <type>text/plain</type>
            <size>178922</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1MDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
OGRiNTk5NTI1ZjY1MGNjNjBhOWQ5MTRhZjdhMmY2MzQ0ODk2MGMxLi5iNWM0NWJmMTNiNzUyOGFm
MGI5YjFlNDJkNGRhOTZkZjlkNDI1NGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDUgQEAKKzIwMTktMDUtMTEgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgSW50ZWdyYXRlIEpTQyBieXRlY29kZSBjYWNoZSB3aXRoIFdlYktpdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MDQ3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIEJ5dGVjb2RlQ2FjaGVNZXRhZGF0YSwgYSBkYXRhIHN0cnVjdHVyZSBmb3IgcmVjb3Jk
aW5nIHdoaWNoIENvZGVCbG9ja3MKKyAgICAgICAgaGF2ZSBiZWVuIGV4ZWN1dGVkIHRoYXQgY2Fu
IGxhdGVyIGJlIGZlZCBiYWNrIGludG8gZ2VuZXJhdGUoUHJvZ3JhbXxNb2R1bGUpQnl0ZWNvZGUK
KyAgICAgICAgdG8gZGV0ZXJtaW5lIHdoYXQgdG8gZ2VuZXJhdGUgYnl0ZWNvZGUgZm9yLiBJdCBh
bHNvIG1ha2VzIDIgY2hhbmdlcyB0byB0aGUgY2FjaGUgdG8KKyAgICAgICAgaW1wcm92ZSBlbmNv
ZGluZyBhbmQgZGVjb2RpbmcgcGVyZm9ybWFuY2U6CisgICAgICAgIC0gQWRkIGEgY3VzdG9tIGVu
Y29kaW5nL2RlY29kaW5nIG1ldGhvZCB0byBDYWNoZWRJbnN0cnVjdGlvblN0cmVhbS4gRm9yIGVu
Y29kaW5nLCBtYWtlCisgICAgICAgICAgQ2FjaGVJbnN0cnVjdGlvblN0cmVhbSBhIFZhcmlhYmxl
TGVuZ3RoT2JqZWN0LCBzbyB0aGF0IGl0IGNhbiBhbGxvY2F0ZSBpdHMgb3duIGJ1ZmZlciBhbmQK
KyAgICAgICAgICBjb3B5IHRoZSB3aG9sZSBzdHJlYW0gd2l0aCBhIHNpbmdsZSBtZW1jcHkuIFdo
ZW4gZGVjb2RpbmcsIGNoYW5nZSBJbnN0cnVjdGlvblN0cmVhbSBzbyB0aGF0CisgICAgICAgICAg
aXQgY2FuIHVzZSB0aGUgbW1hcGVkIG1lbW9yeSBpbnN0ZWFkIG9mIGNvcHlpbmcgdGhlIHN0cmVh
bS4KKyAgICAgICAgLSBBbGxvdyBwcm92aWRpbmcgYSBmaWxlIGRlc2NyaXB0b3Igd2hlbiBlbmNv
ZGluZywgc28gdGhhdCBpbnN0ZWFkIG9mIGFsbG9jYXRpbmcgYSBiaWcKKyAgICAgICAgICBidWZm
ZXIgYW5kIHJldHVybmluZyB0aGUgYnl0ZWNvZGUgY2FjaGUgaW4gbWVtb3J5IGF0IHRoZSBlbmQg
b2YgZW5jb2RpbmcsIHdlIHdyaXRlIHRoZQorICAgICAgICAgIGNhY2hlIHN0cmFpZ2h0IHRvIHRo
ZSBmaWxlLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAgICAgICAoLVtKU1Njcmlw
dCB3cml0ZUNhY2hlOl0pOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUv
Qnl0ZWNvZGVDYWNoZU1ldGFkYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
Q2FjaGVNZXRhZGF0YTo6cmVjb3JkQ2FjaGVkRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUNhY2hlTWV0YWRhdGE6OnNob3VsZENhY2hlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVDYWNoZU1ldGFkYXRhOjpkZWNvZGUpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUNhY2hlTWV0YWRhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVDYWNoZU1ldGFkYXRhLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUNhY2hl
TWV0YWRhdGE6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUNhY2hlTWV0
YWRhdGE6OkVudHJ5OjpFbnRyeSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQ2FjaGVNZXRhZGF0
YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVDYWNoZU1ldGFkYXRhOjpk
ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjphcHBseU1vZGlmaWNhdGlvbik6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxv
Y2spOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmNwcDoKKyAgICAgICAg
KEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Okluc3RydWN0aW9uU3RyZWFtKToKKyAgICAgICAgKEpT
Qzo6SW5zdHJ1Y3Rpb25TdHJlYW06OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
SW5zdHJ1Y3Rpb25TdHJlYW06OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1
Y3Rpb25TdHJlYW1SZWFkZXI6Okluc3RydWN0aW9uU3RyZWFtUmVhZGVyKToKKyAgICAgICAgKiBi
eXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5oOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0
cmVhbTo6fkluc3RydWN0aW9uU3RyZWFtKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJl
YW06OkJhc2VSZWY6OkJhc2VSZWYpOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6
QmFzZVJlZjo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OkJh
c2VSZWY6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVh
bTo6QmFzZVJlZjo6bmV4dCBjb25zdCk6CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFt
OjpCYXNlUmVmOjppc1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJl
YW06OkJhc2VSZWY6OnVud3JhcCBjb25zdCk6CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3Ry
ZWFtOjpiZWdpbiBjb25zdCk6CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjplbmQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6YXQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbVJlYWRlcjo6fkluc3RydWN0aW9uU3RyZWFtUmVh
ZGVyKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1SZWFkZXI6Okluc3RydWN0aW9u
U3RyZWFtUmVhZGVyKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6Oklu
c3RydWN0aW9uU3RyZWFtV3JpdGVyKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1X
cml0ZXI6Om11dGFibGVJbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0
cmVhbVdyaXRlcjo6TXV0YWJsZVJlZjo6ZnJlZXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW5z
dHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6Ok11dGFibGVSZWY6Om9wZXJhdG9yLT4pOgorICAgICAgICAo
SlNDOjpJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjo6TXV0YWJsZVJlZjo6cHRyKToKKyAgICAgICAg
KEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6Ok11dGFibGVSZWY6Om9wZXJhdG9yIFJlZik6
CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtV3JpdGVyOjpNdXRhYmxlUmVmOjp1bndy
YXApOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjo6cmVmKToKKyAgICAg
ICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6OnNlZWspOgorICAgICAgICAoSlNDOjpJ
bnN0cnVjdGlvblN0cmVhbVdyaXRlcjo6d3JpdGUpOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlv
blN0cmVhbVdyaXRlcjo6cmV3aW5kKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1X
cml0ZXI6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6
OnN3YXApOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjo6YmVnaW4pOgor
ICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjo6ZW5kKToKKyAgICAgICAgKiBi
eXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OnVwZGF0
ZVN0b3JlZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUZvckluQ29u
dGV4dDo6ZmluYWxpemUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmg6Cisg
ICAgICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXMpOgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmg6CisgICAgICAgIChK
U0M6OlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OmNyZWF0ZVRoaXMpOgorICAgICAgICAoSlNDOjpT
dGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpuZXdPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvQ2Fj
aGVkQnl0ZWNvZGUuaDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkQnl0ZWNvZGU6OmNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6OkVuY29kZXI6
OkVuY29kZXIpOgorICAgICAgICAoSlNDOjpFbmNvZGVyOjpyZWxlYXNlKToKKyAgICAgICAgKEpT
Qzo6RW5jb2Rlcjo6cmVsZWFzZU1hcHBlZCk6CisgICAgICAgIChKU0M6OkNhY2hlZEluc3RydWN0
aW9uU3RyZWFtOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRJbnN0cnVjdGlvblN0cmVh
bTo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6ZW5jb2RlQ29kZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6ZW5jb2RlRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvQ2Fj
aGVkVHlwZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChK
U0M6OmdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JGdW5jdGlvbnMpOgorICAgICAgICAoSlND
OjpzZXJpYWxpemVCeXRlY29kZSk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuaDoKKyAg
ICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVBy
b2dyYW1CeXRlY29kZSk6CisgICAgICAgIChKU0M6OmdlbmVyYXRlTW9kdWxlQnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpldmFsdWF0ZSk6CisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmg6
CisKIDIwMTktMDUtMDYgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgSlNXcmFwcGVyTWFwIHNob3VsZCBjaGVjayBpZiBleGlzdGluZyBwcm90b3R5cGUg
cHJvcGVydGllcyBhcmUgd3JhcHBlcnMgd2hlbiBjb3B5aW5nIGV4cG9ydGVkIG1ldGhvZHMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmlu
ZGV4IGM2ZDQ5Yzk0MGJiNDQ0MTk2N2UzNzVhZmQxOTk1YmRiOWI0NjUzZTYuLmJmNmIzYWI1MWY1
OTliZWUyYzU3NDBkYTQ0OGU3ZmU2MTg4ZmFkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTkt
MDUtMTEgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CisKKyAgICAgICAgSW50
ZWdyYXRlIEpTQyBieXRlY29kZSBjYWNoZSB3aXRoIFdlYktpdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MDQ3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQgd2hlbiByZWFkaW5n
IGtlcm4uYm9vdHNlc3Npb251dWlkLiBPdGhlcndpc2UsIHdlIGNyYXNoIHdoZW4KKyAgICAgICAg
cmV0dXJuaW5nIHRoZSB1bmluaXRpYWxpemVkIExhenlOZXZlckRlc3Ryb3llZCB2YWx1ZS4KKwor
ICAgICAgICAqIHd0Zi9VVUlELmNwcDoKKyAgICAgICAgKFdURjo6Ym9vdFNlc3Npb25VVUlEU3Ry
aW5nKToKKwogMjAxOS0wNS0wNiAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5j
b20+CiAKICAgICAgICAgW0pTQ10gUmVzcGVjdCBhbHJlYWR5IGRlZmluZWQgVVNFX0xMSU5UX0VN
QkVEREVEX09QQ09ERV9JRCBjb21waWxlciB2YXJpYWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNDI0Yzll
YzcwZTljMGE1NjA2ODcyMWY1Nzg5NmFlYjI3NzRhYTk3Li41Y2EyYmNkOTQ2NTdkODM0ODkwMmY4
NmZkNTlmZDEyMzM2NDNjN2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTktMDUt
MTEgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CisKKyAgICAgICAgSW50ZWdy
YXRlIEpTQyBieXRlY29kZSBjYWNoZSB3aXRoIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIENhY2hlZEJ5dGVjb2RlIHRvIENhY2hlZFNj
cmlwdC4KKyAgICAgICAgQWRkIHRoZSB0eXBlIG9mIHRoZSBzY3JpcHQgYmVpbmcgbG9hZGVkIGlu
dG8gdGhlIHJlcXVlc3QgKGNsYXNzaWMgb3IgbW9kdWxlKS4KKyAgICAgICAgTm90aWZ5IHRoZSBs
b2FkZXIgd2hlbiBieXRlY29kZSBzaG91bGQgYmUgY2FjaGVkIGZvciB0aGUgbmV4dCByZXF1ZXN0
LgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNo
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0RmV0Y2hlcjo6cmVxdWVzdE1v
ZHVsZVNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHRGZXRjaGVy
OjpyZXF1ZXN0U2NyaXB0V2l0aENhY2hlIGNvbnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9D
YWNoZWRTY3JpcHRGZXRjaGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0
U291cmNlUHJvdmlkZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
U2NyaXB0U291cmNlUHJvdmlkZXI6OmNhY2hlQnl0ZWNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXI6OnVwZGF0ZUNhY2hlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyOjpjb21taXRDYWNoZWRC
eXRlY29kZSBjb25zdCk6CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNl
UHJvdmlkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVy
Ojp+Q2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIpOgorICAgICAgICAqIGRvbS9Mb2FkYWJsZUNs
YXNzaWNTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVDbGFzc2ljU2NyaXB0
Ojpsb2FkKToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXI6
OnJlcXVlc3RNb2R1bGVTY3JpcHQgY29uc3QpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxS
ZXNvdXJjZVByZWxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmVsb2FkUmVxdWVzdDo6
cmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMaW5rTG9hZGVyOjpwcmVsb2FkSWZOZWVkZWQpOgorICAgICAgICAqIGxv
YWRlci9Mb2FkZXJTdHJhdGVneS5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVEZXJpdmVk
RGF0YUZyb21DYWNoZSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAg
ICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oOgorICAgICAgICAqIGxvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZSk6CisgICAgICAgICogbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6Omlzb2xhdGVkQ29w
eSBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21D
YWNoZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmNhY2hlZEJ5dGVjb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNjcmlwdDo6ZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZSk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oOgorCiAyMDE5LTA1LTA2ICBKYW1lcyBT
YXZhZ2UgIDxqYW1lcy5zYXZhZ2VAYXBwbGUuY29tPgogCiAgICAgICAgIEltcHJvdmUgY29vcmRp
bmF0aW9uIGZvciBjcmVhdGluZyBVSVdpbmRvdyBpbnN0YW5jZXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc1YzM3
M2QwODhmZTdiMmQxODM4ZTc2OGE4YWVhZTA5ZGE0ZWU0ZGYuLmI5MDM1MmMwNGU5MTA2MmFkNWQ2
MDlkMTQ0YTdhMjFiN2I5YjI1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI0IEBACisyMDE5LTA1
LTExICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgorCisgICAgICAgIEludGVn
cmF0ZSBKU0MgYnl0ZWNvZGUgY2FjaGUgd2l0aCBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDA0NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJldmVydCBwYXJ0IG9mIHRoZSBjb2RlIGRlbGV0
ZWQgaW4gcjIzODkzMywgYnV0IGNoYW5nZSBpdCB0byByZXRyaWV2ZSB0aGUKKyAgICAgICAgZGVy
aXZlZCBkYXRhIHN5bmNocm9ub3VzbHkuIE90aGVyd2lzZSwgdGhlIGJ5dGVjb2RlIHdvdWxkIG5v
dCBiZSBhdmFpbGFibGUKKyAgICAgICAgaW4gdGltZSBmb3IgZXhlY3V0aW9uLgorCisgICAgICAg
IEFkZGl0aW9uYWxseSBhZGQgQnl0ZWNvZGVDYWNoZSB0byB0aGUgTmV0d29ya1Byb2Nlc3MgdG8g
Z2VuZXJhdGUgYW5kIHN0b3JlCisgICAgICAgIGJ5dGVjb2RlIGZvciByZXF1ZXN0cy4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNhY2hlQnl0
ZWNvZGVGb3JSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpieXRl
Y29kZUNhY2hlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5Vc2VCeXRlY29kZUNhY2hlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJldHJp
ZXZlQ2FjaGVFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
bG9hZEJ5dGVjb2RlQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnByb2Nlc3NDYWNoZWRFbnRyeUFmdGVyRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9CeXRlY29kZUNhY2hlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OkNhY2hlRmlsZTo6Q2FjaGVGaWxlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVGaWxlOjpv
cGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZUZpbGU6On5DYWNoZUZpbGUpOgorICAg
ICAgICAoV2ViS2l0OjpDYWNoZUZpbGU6Om5hbWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZUZpbGU6OmZkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVGaWxlOjpvcGVyYXRv
ciEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpCeXRlY29kZUNhY2hlOjpQbGFuOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpCeXRlY29kZUNhY2hlOjpQbGFuOjpjb21waWxlKToKKyAgICAg
ICAgKFdlYktpdDo6Qnl0ZWNvZGVDYWNoZTo6UGxhbjo6UGxhbik6CisgICAgICAgIChXZWJLaXQ6
OkJ5dGVjb2RlQ2FjaGU6OlRocmVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6Qnl0ZWNv
ZGVDYWNoZTo6VGhyZWFkOjpUaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpCeXRlY29kZUNhY2hl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpCeXRlY29kZUNhY2hlOjpCeXRlY29kZUNhY2hl
KToKKyAgICAgICAgKFdlYktpdDo6Qnl0ZWNvZGVDYWNoZTo6fkJ5dGVjb2RlQ2FjaGUpOgorICAg
ICAgICAoV2ViS2l0OjpCeXRlY29kZUNhY2hlOjpzdG9yZU1ldGFkYXRhRm9yUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OkJ5dGVjb2RlQ2FjaGU6OmNyZWF0ZUNhY2hlRmlsZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OkJ5dGVjb2RlQ2FjaGU6OmJ5dGVjb2RlRm9yUmVxdWVzdCk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQnl0ZWNvZGVDYWNoZS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpyZXRyaWV2ZUZpbGUpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpzdG9yZUZpbGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OkNhY2hlOjpyZW1vdmVGaWxlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVLZXkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OktleTo6S2V5
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpzdG9yZUZpbGUpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnJldHJpZXZlRmlsZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6cmVtb3ZlRmlsZSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzc0NvY29h
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3Jr
UHJvY2Vzcy5zYi5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9j
ZXNzU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Rlcml2ZWRE
YXRhLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2Ny
aXB0RmV0Y2hlci5oLgorICAgICAgICAoSVBDOjpEZXJpdmVkRGF0YTo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKElQQzo6RGVyaXZlZERhdGE6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL0Rlcml2ZWREYXRhLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0NhY2hlZFNjcmlwdEZldGNoZXIuaC4KKyAgICAgICAgKElQQzo6RGVyaXZlZERhdGE6OkRlcml2
ZWREYXRhKToKKyAgICAgICAgKElQQzo6RGVyaXZlZERhdGE6OmlzRW1wdHkgY29uc3QpOgorICAg
ICAgICAoSVBDOjpEZXJpdmVkRGF0YTo6dHlwZSBjb25zdCk6CisgICAgICAgIChJUEM6OkRlcml2
ZWREYXRhOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9Mb2dnaW5nLmg6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL1dlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAg
ICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKToKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uOjpjb3B5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
YXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
bGVnYWN5RGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0Qnl0ZWNvZGVDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmxlZ2FjeURlZmF1bHRCeXRlY29kZUNhY2hlRGlyZWN0b3J5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0Ojps
ZWdhY3lXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNvcHkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Ynl0ZWNv
ZGVDYWNoZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uOjpzZXRCeXRlY29kZUNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJT
dHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTG9hZGVyU3RyYXRlZ3k6OmNhY2hlQnl0ZWNvZGVGb3JTY3JpcHQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb20u
YXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjoKKwogMjAxOS0wNS0wNiAgSmFtZXMgU2F2YWdlICA8amFt
ZXMuc2F2YWdlQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXByb3ZlIGNvb3JkaW5hdGlvbiBmb3Ig
Y3JlYXRpbmcgVUlXaW5kb3cgaW5zdGFuY2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCA2OTc5
MGU4ZTQ1ZmFkMGZjZDg5NzBmODQzNjg2NDgwNjllZWFkZDM0Li5mZjI5NmUwN2RiZDg0NzEzYmJi
OGQ2ODg1NTllYTIxZTI3MWI0YWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDE5LTA1LTExICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgorCisg
ICAgICAgIEludGVncmF0ZSBKU0MgYnl0ZWNvZGUgY2FjaGUgd2l0aCBXZWJLaXQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDA0NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBMb2FkZXJT
dHJhdGVneSdzIGBjYWNoZUJ5dGVjb2RlRm9yU2NyaXB0YCBhcyBuby1vcC4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oOgorCiAyMDE5LTA1LTAz
ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMjQ0ODgxLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1NjcmlwdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3Jp
cHQubW0KaW5kZXggYmRiZDY4MjI4M2YzNmM2NTE0Y2YyNzM2ZmZkYWEwMTJjODUxMjBjZi4uNDli
NjlmOTdhY2NmNThjYzFmN2ZmYjM2MzMyM2M3NzI3M2IzYTBhZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC0yMzQsMTAgKzIzNCwxMCBAQCAtIChCT09MKXdyaXRlQ2Fj
aGU6KFN0cmluZyYpZXJyb3IKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlQ29kZSA9IFtzZWxm
IHNvdXJjZUNvZGVdOwogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBrSlNTY3JpcHRU
eXBlTW9kdWxlOgotICAgICAgICBtX2NhY2hlZEJ5dGVjb2RlID0gSlNDOjpnZW5lcmF0ZU1vZHVs
ZUJ5dGVjb2RlKG1fdmlydHVhbE1hY2hpbmUudm0sIHNvdXJjZUNvZGUsIHBhcnNlckVycm9yKTsK
KyAgICAgICAgbV9jYWNoZWRCeXRlY29kZSA9IEpTQzo6Z2VuZXJhdGVNb2R1bGVCeXRlY29kZSht
X3ZpcnR1YWxNYWNoaW5lLnZtLCBzb3VyY2VDb2RlLCBmZCwgcGFyc2VyRXJyb3IpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIGtKU1NjcmlwdFR5cGVQcm9ncmFtOgotICAgICAgICBtX2NhY2hl
ZEJ5dGVjb2RlID0gSlNDOjpnZW5lcmF0ZVByb2dyYW1CeXRlY29kZShtX3ZpcnR1YWxNYWNoaW5l
LnZtLCBzb3VyY2VDb2RlLCBwYXJzZXJFcnJvcik7CisgICAgICAgIG1fY2FjaGVkQnl0ZWNvZGUg
PSBKU0M6OmdlbmVyYXRlUHJvZ3JhbUJ5dGVjb2RlKG1fdmlydHVhbE1hY2hpbmUudm0sIHNvdXJj
ZUNvZGUsIGZkLCBwYXJzZXJFcnJvcik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMjQ3
LDE4ICsyNDcsNiBAQCAtIChCT09MKXdyaXRlQ2FjaGU6KFN0cmluZyYpZXJyb3IKICAgICAgICAg
cmV0dXJuIE5POwogICAgIH0KIAotICAgIHNzaXplX3QgYnl0ZXNXcml0dGVuID0gd3JpdGUoZmQs
IG1fY2FjaGVkQnl0ZWNvZGUtPmRhdGEoKSwgbV9jYWNoZWRCeXRlY29kZS0+c2l6ZSgpKTsKLSAg
ICBpZiAoYnl0ZXNXcml0dGVuID09IC0xKSB7Ci0gICAgICAgIGVycm9yID0gbWFrZVN0cmluZygi
Q291bGQgbm90IHdyaXRlIGNhY2hlIGZpbGUgdG8gZGlzazogIiwgc3RyZXJyb3IoZXJybm8pKTsK
LSAgICAgICAgcmV0dXJuIE5POwotICAgIH0KLQotICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+
KGJ5dGVzV3JpdHRlbikgIT0gbV9jYWNoZWRCeXRlY29kZS0+c2l6ZSgpKSB7Ci0gICAgICAgIGZ0
cnVuY2F0ZShmZCwgMCk7Ci0gICAgICAgIGVycm9yID0gbWFrZVN0cmluZygiQ291bGQgbm90IHdy
aXRlIHRoZSBmdWxsIGNhY2hlIGZpbGUgdG8gZGlzay4gT25seSB3cm90ZSAiLCBTdHJpbmc6Om51
bWJlcihieXRlc1dyaXR0ZW4pLCAiIG9mIHRoZSBleHBlY3RlZCAiLCBTdHJpbmc6Om51bWJlciht
X2NhY2hlZEJ5dGVjb2RlLT5zaXplKCkpLCAiIGJ5dGVzLiIpOwotICAgICAgICByZXR1cm4gTk87
Ci0gICAgfQotCiAgICAgcmV0dXJuIFlFUzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBlN2RjODg3YjlhYWY4MTViYjNiODBhN2Q0MmU4YTA3Zjg5NGZkZDAzLi5mYTVmMTdm
NzZjMGQ1MjNiOWIyZGMyOWE5YmIxMDliZWE1ZDJiYzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNzYxLDYgKzc2MSw3IEBACiAJCTE0MTQ0OENEMTNBMTc4MzcwMEY1QkExQSAv
KiBUaW55Qmxvb21GaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0MTQ0OENDMTNBMTc4MzcwMEY1QkExQSAvKiBUaW55Qmxvb21GaWx0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDE1MDEz
MzE1NEJCMTNGMDA1RDhDOTggLyogV2Vha1NldElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MTUwMTMyMTU0QkIxM0YwMDVEOEM5OCAvKiBX
ZWFrU2V0SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTE0MjAxRDU5MURFQ0YyNkEwMDkwNEJEMyAvKiBTb3VyY2VDb2RlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDIwMUQ1ODFERUNGMjZB
MDA5MDRCRDMgLyogU291cmNlQ29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTE0MjQzQ0MzMjFGMjc3REMwMDRCMjY0RSAvKiBCeXRlY29kZUNh
Y2hlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0MjQzQ0MyMjFGMjc3RDIwMDRCMjY0RSAvKiBCeXRlY29kZUNhY2hlTWV0YWRhdGEuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDI5RDc3
QzBFRDIwRDczMDBCODk2MTkgLyogSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MjlENzdCMEVEMjBENzMwMEI4OTYxOSAvKiBJbnRl
cnByZXRlci5oICovOyB9OwogCQkxNDI5RDhERTBFRDIyMDVCMDBCODk2MTkgLyogQ2FsbEZyYW1l
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDI5RDhE
QzBFRDIyMDVCMDBCODk2MTkgLyogQ2FsbEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQyOUQ5MzAwRUQyMkQ3MDAwQjg5NjE5IC8qIEpJ
VC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyOUQ5
MkUwRUQyMkQ3MDAwQjg5NjE5IC8qIEpJVC5oICovOyB9OwpAQCAtMzE2NCw2ICszMTY1LDcgQEAK
IAkJMTQxNTAxMzIxNTRCQjEzRjAwNUQ4Qzk4IC8qIFdlYWtTZXRJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtTZXRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTE0MjAxRDU4MURFQ0YyNkEwMDkwNEJEMyAvKiBTb3VyY2VDb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZUNvZGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQyMTM1OUEwQTY3N0Y0RjAwQTgxOTVFIC8qIEpTQmFzZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Jhc2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDI0M0NDMjIxRjI3N0QyMDA0QjI2NEUgLyogQnl0
ZWNvZGVDYWNoZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5
dGVjb2RlQ2FjaGVNZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDI3
MTEzODBBNDYwQkJCMDA4MEVFRUEgLyogSlNCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDI5RDc3
QjBFRDIwRDczMDBCODk2MTkgLyogSW50ZXJwcmV0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW50ZXJwcmV0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTQyOUQ3RDMwRUQyMTI4MjAwQjg5NjE5IC8qIEludGVycHJldGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGVycHJldGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTc4NzIsNiArNzg3NCw3IEBACiAJCQkJMEY2Mzk0NTIxNUQwNzA1MTAw
NkE1OTdDIC8qIEFycmF5UHJvZmlsZS5oICovLAogCQkJCUMyRkNBRTBDMTdBOUMyNEUwMDM0Qzcz
NSAvKiBCeXRlY29kZUJhc2ljQmxvY2suY3BwICovLAogCQkJCUMyRkNBRTBEMTdBOUMyNEUwMDM0
QzczNSAvKiBCeXRlY29kZUJhc2ljQmxvY2suaCAqLywKKwkJCQkxNDI0M0NDMjIxRjI3N0QyMDA0
QjI2NEUgLyogQnl0ZWNvZGVDYWNoZU1ldGFkYXRhLmggKi8sCiAJCQkJMEYyMUMyN0UxNEJFQUE4
MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLywKIAkJCQlFM0Q4Nzc3MTFFNjVD
MDg5MDBCRTk0NUEgLyogQnl0ZWNvZGVEdW1wZXIuY3BwICovLAogCQkJCUUzRDg3NzcyMUU2NUMw
ODkwMEJFOTQ1QSAvKiBCeXRlY29kZUR1bXBlci5oICovLApAQCAtODc2MSw2ICs4NzY0LDcgQEAK
IAkJCQkwRkI3RjM5NzE1RUQ4RTQ2MDBGMTY3QjIgLyogQnV0dGVyZmx5LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkI3RjM5ODE1RUQ4RTQ2MDBGMTY3QjIgLyogQnV0dGVyZmx5SW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzJGQ0FFMTExN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2RlQmFz
aWNCbG9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQyNDNDQzMyMUYyNzdEQzAwNEIyNjRFIC8q
IEJ5dGVjb2RlQ2FjaGVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyN0YxNEJF
QUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUzRDg3Nzc0MUU2NUMwQTAwMEJFOTQ1QSAvKiBCeXRlY29kZUR1bXBlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTY5QTA3MjMwRUQxQ0UzMzAwRjFGNjgxIC8qIEJ5dGVjb2RlR2VuZXJhdG9yLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBmNTUzNDQ0MTM5
MGQxYTYwOGFhZTBkYzI4ZmZiZWYzMTg2ODMyOWI0Li4yNTZjNzY2NzI0ZmM1NjU3OTFhMTUxZWE1
ZjIzYmM1YjU3MzczZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTMsNiAr
MTkzLDcgQEAgYnl0ZWNvZGUvQXJpdGhQcm9maWxlLmNwcAogYnl0ZWNvZGUvQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZS5jcHAKIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKIGJ5dGVjb2RlL0J5dGVj
b2RlQmFzaWNCbG9jay5jcHAKK2J5dGVjb2RlL0J5dGVjb2RlQ2FjaGVNZXRhZGF0YS5jcHAKIGJ5
dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAogYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb24uY3BwCiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ2FjaGVNZXRhZGF0
YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDYWNoZU1ldGFk
YXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jZTA0NTg0ZDg5Yzg5MjU5OGU4ZjQwMzgwZjZlMTUyZmQyYmM4
MWM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlQ2FjaGVNZXRhZGF0YS5jcHAKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJCeXRlY29kZUNhY2hlTWV0YWRhdGEuaCIKKworI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgQnl0ZWNvZGVDYWNoZU1ldGFkYXRhOjpyZWNvcmRD
YWNoZWRGdW5jdGlvbkNvZGVCbG9jayhjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgYXV0byByZXN1bHQgPSBtX21hcC5hZGQo
c291cmNlQ29kZS5zdGFydE9mZnNldCgpLCBFbnRyeSB7IH0pOworICAgIHN3aXRjaCAoa2luZCkg
eworICAgIGNhc2UgQ29kZUZvckNhbGw6CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUu
bV9jb2RlRm9yQ2FsbCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29kZUZvckNv
bnN0cnVjdDoKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5tX2NvZGVGb3JDb25zdHJ1
dCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworYm9vbCBCeXRlY29kZUNhY2hl
TWV0YWRhdGE6OnNob3VsZENhY2hlKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCkgY29uc3QKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9t
YXAuZmluZChzb3VyY2VDb2RlLnN0YXJ0T2Zmc2V0KCkpOworICAgIGlmIChpdGVyYXRvciA9PSBt
X21hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNoIChraW5kKSB7
CisgICAgY2FzZSBDb2RlRm9yQ2FsbDoKKyAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZS5t
X2NvZGVGb3JDYWxsOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6
CisgICAgICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWUubV9jb2RlRm9yQ29uc3RydXQ7CisgICAg
ICAgIGJyZWFrOworICAgIH0KK30KKworQnl0ZWNvZGVDYWNoZU1ldGFkYXRhIEJ5dGVjb2RlQ2Fj
aGVNZXRhZGF0YTo6ZGVjb2RlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQorewor
ICAgIEFTU0VSVCghKHNpemUgJSBzaXplb2YoRW5jb2RlZEVudHJ5KSkpOworICAgIHNpemVfdCBs
ZW5ndGggPSBzaXplIC8gc2l6ZW9mKEVuY29kZWRFbnRyeSk7CisgICAgRW5jb2RlZEVudHJ5KiBl
bnRyaWVzID0gYml0d2lzZV9jYXN0PEVuY29kZWRFbnRyeSo+KGRhdGEpOworICAgIEJ5dGVjb2Rl
Q2FjaGVNZXRhZGF0YSBtZXRhZGF0YTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspCisgICAgICAgIG1ldGFkYXRhLm1fbWFwLmFkZChlbnRyaWVzW2ldLmtleSwgZW50
cmllc1tpXS52YWx1ZSk7CisgICAgcmV0dXJuIG1ldGFkYXRhOworfQorCitzdGQ6OnBhaXI8TWFs
bG9jUHRyPHVpbnQ4X3Q+LCBzaXplX3Q+IEJ5dGVjb2RlQ2FjaGVNZXRhZGF0YTo6ZW5jb2RlKCkg
Y29uc3QKK3sKKyAgICBzaXplX3Qgc2l6ZSA9IG1fbWFwLnNpemUoKSAqIHNpemVvZihFbmNvZGVk
RW50cnkpOworICAgIE1hbGxvY1B0cjx1aW50OF90PiBkYXRhID0gTWFsbG9jUHRyPHVpbnQ4X3Q+
OjptYWxsb2Moc2l6ZSk7CisgICAgdW5zaWduZWQgb2Zmc2V0ID0gMDsKKyAgICBmb3IgKGNvbnN0
IEVuY29kZWRFbnRyeSYgZW50cnkgOiBtX21hcCkgeworICAgICAgICB1aW50OF90KiBwdHIgPSBk
YXRhLmdldCgpICsgKG9mZnNldCAqIHNpemVvZihFbmNvZGVkRW50cnkpKTsKKyAgICAgICAgbWVt
Y3B5KHB0ciwgJmVudHJ5LCBzaXplb2YoZW50cnkpKTsKKyAgICAgICAgKytvZmZzZXQ7CisgICAg
fQorICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihXVEZNb3ZlKGRhdGEpLCBzaXplKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVDYWNoZU1ldGFkYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVDYWNoZU1ldGFkYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA0MTg5OTM2MTM4NjE4
NWNkMjUzNWZkMmNmOTI4MmVlMDFkMzhjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNhY2hlTWV0YWRhdGEuaApAQCAtMCwwICsxLDk3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTWFsbG9jUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBTb3VyY2VDb2RlOworCitj
bGFzcyBCeXRlY29kZUNhY2hlTWV0YWRhdGEgeworICAgIGNsYXNzIEVudHJ5OworCisgICAgdXNp
bmcgRW5jb2RlZEVudHJ5ID0gS2V5VmFsdWVQYWlyPGludCwgRW50cnk+OworCitwdWJsaWM6CisK
KyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX21hcC5pc0VtcHR5KCk7IH0KKwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVjb3JkQ2FjaGVkRnVuY3Rpb25Db2RlQmxvY2so
Y29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIGJvb2wgc2hvdWxkQ2FjaGUoY29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQpIGNvbnN0OworCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEJ5dGVj
b2RlQ2FjaGVNZXRhZGF0YSBkZWNvZGUoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RkOjpwYWlyPE1hbGxvY1B0cjx1aW50OF90Piwgc2l6ZV90PiBlbmNv
ZGUoKSBjb25zdDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CisgICAgdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4K
KyAgICBzdGF0aWMgT3B0aW9uYWw8Qnl0ZWNvZGVDYWNoZU1ldGFkYXRhPiBkZWNvZGUoRGVjb2Rl
ciYpOworCitwcml2YXRlOgorICAgIGNsYXNzIEVudHJ5IHsKKyAgICAgICAgZnJpZW5kIGNsYXNz
IEJ5dGVjb2RlQ2FjaGVNZXRhZGF0YTsKKworICAgIHB1YmxpYzoKKyAgICAgICAgRW50cnkoKQor
ICAgICAgICAgICAgOiBtX2NvZGVGb3JDYWxsKGZhbHNlKQorICAgICAgICAgICAgLCBtX2NvZGVG
b3JDb25zdHJ1dChmYWxzZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBib29sIG1fY29kZUZvckNhbGwgOiAxOworICAgICAgICBib29sIG1fY29kZUZvckNv
bnN0cnV0IDogMTsKKyAgICB9OworCisgICAgSGFzaE1hcDxpbnQsIEVudHJ5PiBtX21hcDsKK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+Cit2b2lkIEJ5dGVjb2RlQ2FjaGVNZXRhZGF0
YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgc3RkOjpwYWlyPE1hbGxv
Y1B0cjx1aW50OF90Piwgc2l6ZV90PiBkYXRhID0gZW5jb2RlKCk7CisgICAgZW5jb2RlciA8PCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oZGF0YS5zZWNvbmQpOworICAgIGVuY29kZXIuZW5jb2RlRml4
ZWRMZW5ndGhEYXRhKGRhdGEuZmlyc3QuZ2V0KCksIGRhdGEuc2Vjb25kLCBhbGlnbm9mKEVuY29k
ZWRFbnRyeSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgorT3B0aW9uYWw8Qnl0
ZWNvZGVDYWNoZU1ldGFkYXRhPiBCeXRlY29kZUNhY2hlTWV0YWRhdGE6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQoreworICAgIHVpbnQ2NF90IHNpemU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShzaXplKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBNYWxsb2NQdHI8dWlu
dDhfdD4gZGF0YSA9IE1hbGxvY1B0cjx1aW50OF90Pjo6bWFsbG9jKHNpemUpOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoZGF0YS5nZXQoKSwgc2l6ZSwgYWxpZ25vZihF
bmNvZGVkRW50cnkpKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
Qnl0ZWNvZGVDYWNoZU1ldGFkYXRhOjpkZWNvZGUoZGF0YS5nZXQoKSwgc2l6ZSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlUmV3cml0ZXIuY3BwCmluZGV4IDRiYmQxMTMyZTlmNzVhNjQxMWQ3YTczNmQ4MzZj
ZjkzZmIxMGZmN2IuLjJhY2M4NWM3MjFhZWY5ZWQ4NjRjZGE1OTk2MjJkMTJkZWNhYmUzZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRl
ci5jcHAKQEAgLTM4LDEzICszOCwxMyBAQCB2b2lkIEJ5dGVjb2RlUmV3cml0ZXI6OmFwcGx5TW9k
aWZpY2F0aW9uKCkKICAgICBmb3IgKHNpemVfdCBpbnNlcnRpb25JbmRleCA9IG1faW5zZXJ0aW9u
cy5zaXplKCk7IGluc2VydGlvbkluZGV4LS07KSB7CiAgICAgICAgIEluc2VydGlvbiYgaW5zZXJ0
aW9uID0gbV9pbnNlcnRpb25zW2luc2VydGlvbkluZGV4XTsKICAgICAgICAgaWYgKGluc2VydGlv
bi50eXBlID09IEluc2VydGlvbjo6VHlwZTo6UmVtb3ZlKQotICAgICAgICAgICAgbV93cml0ZXIu
bV9pbnN0cnVjdGlvbnMucmVtb3ZlKGluc2VydGlvbi5pbmRleC5ieXRlY29kZU9mZnNldCwgaW5z
ZXJ0aW9uLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIG1fd3JpdGVyLm1fc3RyZWFtLnJlbW92ZShp
bnNlcnRpb24uaW5kZXguYnl0ZWNvZGVPZmZzZXQsIGluc2VydGlvbi5sZW5ndGgoKSk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgaWYgKGluc2VydGlvbi5pbmNsdWRlQnJhbmNoID09IElu
Y2x1ZGVCcmFuY2g6OlllcykgewogICAgICAgICAgICAgICAgIGludCBmaW5hbE9mZnNldCA9IGlu
c2VydGlvbi5pbmRleC5ieXRlY29kZU9mZnNldCArIGNhbGN1bGF0ZURpZmZlcmVuY2UobV9pbnNl
cnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5iZWdpbigpICsgaW5zZXJ0aW9uSW5kZXgpOwog
ICAgICAgICAgICAgICAgIGFkanVzdEp1bXBUYXJnZXRzSW5GcmFnbWVudChmaW5hbE9mZnNldCwg
aW5zZXJ0aW9uKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fd3JpdGVyLm1faW5zdHJ1
Y3Rpb25zLmluc2VydFZlY3RvcihpbnNlcnRpb24uaW5kZXguYnl0ZWNvZGVPZmZzZXQsIGluc2Vy
dGlvbi5pbnN0cnVjdGlvbnMubV9pbnN0cnVjdGlvbnMpOworICAgICAgICAgICAgbV93cml0ZXIu
bV9zdHJlYW0uaW5zZXJ0VmVjdG9yKGluc2VydGlvbi5pbmRleC5ieXRlY29kZU9mZnNldCwgaW5z
ZXJ0aW9uLmluc3RydWN0aW9ucy5tX3N0cmVhbSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgbV9p
bnNlcnRpb25zLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCmluZGV4IDQ2ZjNlZDcyYWMxMTkzNTk0NjIyZDU5YWI1M2IxYmQ0OWQwYjc1MzYu
LjU4YWRlMzZmNTRmZDU2OTJiYmJiYmU3MjE5NjQ4YjVlN2E2ZTAwZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zNjAsNyArMzYwLDcgQEAg
Q29kZUJsb2NrOjpDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU2NyaXB0
RXhlY3V0YWJsZSogb3duZXJFeGVjdXQKICAgICAsIG1fdW5saW5rZWRDb2RlKCp2bSwgdGhpcywg
dW5saW5rZWRDb2RlQmxvY2spCiAgICAgLCBtX293bmVyRXhlY3V0YWJsZSgqdm0sIHRoaXMsIG93
bmVyRXhlY3V0YWJsZSkKICAgICAsIG1fdm0odm0pCi0gICAgLCBtX2luc3RydWN0aW9uc1Jhd1Bv
aW50ZXIodW5saW5rZWRDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnJhd1BvaW50ZXIoKSkKKyAg
ICAsIG1faW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcih1bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKCkuaW5zdHJ1Y3Rpb25zKCkpCiAgICAgLCBtX29zckV4aXRDb3VudGVyKDApCiAgICAgLCBt
X29wdGltaXphdGlvbkRlbGF5Q291bnRlcigwKQogICAgICwgbV9yZW9wdGltaXphdGlvblJldHJ5
Q291bnRlcigwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RydWN0aW9uU3RyZWFtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0
cnVjdGlvblN0cmVhbS5jcHAKaW5kZXggNTE0Y2YxMTI1M2ViNGEyODY5NGM4MGZlOGU1MjJhNjIz
M2ZkOTc3My4uMWZmYjIxMjFkYWUyYmEwOTU0NGJlODVlYTA1N2ZiMTU5ODk2YzQ1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0u
Y3BwCkBAIC0zMSwyMCArMzEsMjYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUluc3RydWN0aW9u
U3RyZWFtOjpJbnN0cnVjdGlvblN0cmVhbShJbnN0cnVjdGlvbkJ1ZmZlciYmIGluc3RydWN0aW9u
cykKLSAgICA6IG1faW5zdHJ1Y3Rpb25zKFdURk1vdmUoaW5zdHJ1Y3Rpb25zKSkKK0luc3RydWN0
aW9uU3RyZWFtOjpJbnN0cnVjdGlvblN0cmVhbSgpCiB7IH0KIAogc2l6ZV90IEluc3RydWN0aW9u
U3RyZWFtOjpzaXplSW5CeXRlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5zdHJ1Y3Rpb25z
LnNpemUoKTsKKyAgICByZXR1cm4gc2l6ZSgpOwogfQogCiBib29sIEluc3RydWN0aW9uU3RyZWFt
Ojpjb250YWlucyhJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pIGNvbnN0CiB7CiAKICAgICBjb25z
dCB1aW50OF90KiBwb2ludGVyID0gYml0d2lzZV9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbnN0cnVj
dGlvbik7Ci0gICAgcmV0dXJuIHBvaW50ZXIgPj0gbV9pbnN0cnVjdGlvbnMuZGF0YSgpICYmIHBv
aW50ZXIgPCAobV9pbnN0cnVjdGlvbnMuZGF0YSgpICsgbV9pbnN0cnVjdGlvbnMuc2l6ZSgpKTsK
KyAgICByZXR1cm4gcG9pbnRlciA+PSBpbnN0cnVjdGlvbnMoKSAmJiBwb2ludGVyIDwgKGluc3Ry
dWN0aW9ucygpICsgc2l6ZSgpKTsKIH0KIAorSW5zdHJ1Y3Rpb25TdHJlYW1SZWFkZXI6Okluc3Ry
dWN0aW9uU3RyZWFtUmVhZGVyKEluc3RydWN0aW9uVmVjdG9yJiYgdmVjdG9yKQorICAgIDogbV9v
d25lZCh0cnVlKQorICAgICwgbV9zaXplKHZlY3Rvci5zaXplKCkpCisgICAgLCBtX2luc3RydWN0
aW9ucyh2ZWN0b3IucmVsZWFzZUJ1ZmZlcigpLmxlYWtQdHIoKSkKK3sKIH0KKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5z
dHJ1Y3Rpb25TdHJlYW0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVj
dGlvblN0cmVhbS5oCmluZGV4IGNlOTYwN2IzNzJmM2JkYTUyOWE5YjVlMWZiYzc0YWI2MGY1YzI1
ODQuLjVmODIzOTY3ZDMzNTY1M2I0NTc4ODg5MGU0NzE2MzBkNDVhM2I3YjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5oCkBAIC0z
MSw1MCArMzEsNTMgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEluc3RydWN0aW9uU3Ry
ZWFtV3JpdGVyOwogc3RydWN0IEluc3RydWN0aW9uOwogCit1c2luZyBJbnN0cnVjdGlvblZlY3Rv
ciA9IFZlY3Rvcjx1aW50OF90LCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz47CisKIGNsYXNzIElu
c3RydWN0aW9uU3RyZWFtIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAotICAgIHVz
aW5nIEluc3RydWN0aW9uQnVmZmVyID0gVmVjdG9yPHVpbnQ4X3QsIDAsIFVuc2FmZVZlY3Rvck92
ZXJmbG93PjsKLQogICAgIGZyaWVuZCBjbGFzcyBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjsKICAg
ICBmcmllbmQgY2xhc3MgQ2FjaGVkSW5zdHJ1Y3Rpb25TdHJlYW07CiBwdWJsaWM6CisgICAgdmly
dHVhbCB+SW5zdHJ1Y3Rpb25TdHJlYW0oKSB7IH0KKwogICAgIHNpemVfdCBzaXplSW5CeXRlcygp
IGNvbnN0OwogCiAgICAgdXNpbmcgT2Zmc2V0ID0gdW5zaWduZWQ7CiAKIHByaXZhdGU6Ci0gICAg
dGVtcGxhdGU8Y2xhc3MgSW5zdHJ1Y3Rpb25CdWZmZXI+CisgICAgdGVtcGxhdGU8Y2xhc3MgSW5z
dHJ1Y3Rpb25TdHJlYW0+CiAgICAgY2xhc3MgQmFzZVJlZiB7CiAgICAgICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogCi0gICAgICAgIGZyaWVuZCBjbGFzcyBJbnN0cnVjdGlvblN0cmVhbTsK
KyAgICAgICAgZnJpZW5kIEluc3RydWN0aW9uU3RyZWFtOwogCiAgICAgcHVibGljOgotICAgICAg
ICBCYXNlUmVmKGNvbnN0IEJhc2VSZWY8SW5zdHJ1Y3Rpb25CdWZmZXI+JiBvdGhlcikKLSAgICAg
ICAgICAgIDogbV9pbnN0cnVjdGlvbnMob3RoZXIubV9pbnN0cnVjdGlvbnMpCi0gICAgICAgICAg
ICAsICBtX2luZGV4KG90aGVyLm1faW5kZXgpCisgICAgICAgIEJhc2VSZWYoY29uc3QgQmFzZVJl
ZjxJbnN0cnVjdGlvblN0cmVhbT4mIG90aGVyKQorICAgICAgICAgICAgOiBtX3N0cmVhbShvdGhl
ci5tX3N0cmVhbSkKKyAgICAgICAgICAgICwgbV9pbmRleChvdGhlci5tX2luZGV4KQogICAgICAg
ICB7IH0KIAotICAgICAgICB2b2lkIG9wZXJhdG9yPShjb25zdCBCYXNlUmVmPEluc3RydWN0aW9u
QnVmZmVyPiYgb3RoZXIpCisgICAgICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IEJhc2VSZWY8SW5z
dHJ1Y3Rpb25TdHJlYW0+JiBvdGhlcikKICAgICAgICAgewotICAgICAgICAgICAgbV9pbnN0cnVj
dGlvbnMgPSBvdGhlci5tX2luc3RydWN0aW9uczsKKyAgICAgICAgICAgIG1fc3RyZWFtID0gb3Ro
ZXIubV9zdHJlYW07CiAgICAgICAgICAgICBtX2luZGV4ID0gb3RoZXIubV9pbmRleDsKICAgICAg
ICAgfQogCiAgICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvbiogb3BlcmF0b3ItPigpIGNv
bnN0IHsgcmV0dXJuIHVud3JhcCgpOyB9CiAgICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlv
biogcHRyKCkgY29uc3QgeyByZXR1cm4gdW53cmFwKCk7IH0KIAotICAgICAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgQmFzZVJlZjxJbnN0cnVjdGlvbkJ1ZmZlcj4mIG90aGVyKSBjb25zdAorICAg
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQmFzZVJlZjxJbnN0cnVjdGlvblN0cmVhbT4mIG90
aGVyKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gJm1faW5zdHJ1Y3Rpb25z
ICE9ICZvdGhlci5tX2luc3RydWN0aW9ucyB8fCBtX2luZGV4ICE9IG90aGVyLm1faW5kZXg7Cisg
ICAgICAgICAgICByZXR1cm4gJm1fc3RyZWFtICE9ICZvdGhlci5tX3N0cmVhbSB8fCBtX2luZGV4
ICE9IG90aGVyLm1faW5kZXg7CiAgICAgICAgIH0KIAogICAgICAgICBCYXNlUmVmIG5leHQoKSBj
b25zdAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQmFzZVJlZiB7IG1faW5zdHJ1Y3Rp
b25zLCBtX2luZGV4ICsgcHRyKCktPnNpemUoKSB9OworICAgICAgICAgICAgcmV0dXJuIEJhc2VS
ZWYgeyBtX3N0cmVhbSwgbV9pbmRleCArIHB0cigpLT5zaXplKCkgfTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlubGluZSBPZmZzZXQgb2Zmc2V0KCkgY29uc3QKQEAgLTg0LDQzICs4NywyMyBAQCBw
cml2YXRlOgogCiAgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBtX2luZGV4IDwgbV9pbnN0cnVjdGlvbnMuc2l6ZSgpOworICAgICAgICAg
ICAgcmV0dXJuIG1faW5kZXggPCBtX3N0cmVhbS5zaXplKCk7CiAgICAgICAgIH0KIAotICAgIHBy
aXZhdGU6Ci0gICAgICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvbiogdW53cmFwKCkgY29uc3Qg
eyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbnN0cnVjdGlvbio+KCZtX2luc3RydWN0
aW9uc1ttX2luZGV4XSk7IH0KLQotICAgIHByb3RlY3RlZDoKLSAgICAgICAgQmFzZVJlZihJbnN0
cnVjdGlvbkJ1ZmZlciYgaW5zdHJ1Y3Rpb25zLCBzaXplX3QgaW5kZXgpCi0gICAgICAgICAgICA6
IG1faW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9ucykKKyAgICAgICAgQmFzZVJlZihJbnN0cnVjdGlv
blN0cmVhbSYgc3RyZWFtLCBzaXplX3QgaW5kZXgpCisgICAgICAgICAgICA6IG1fc3RyZWFtKHN0
cmVhbSkKICAgICAgICAgICAgICwgbV9pbmRleChpbmRleCkKICAgICAgICAgeyB9CiAKLSAgICAg
ICAgSW5zdHJ1Y3Rpb25CdWZmZXImIG1faW5zdHJ1Y3Rpb25zOworICAgIHByaXZhdGU6CisgICAg
ICAgIGlubGluZSBjb25zdCBJbnN0cnVjdGlvbiogdW53cmFwKCkgY29uc3QgeyByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBJbnN0cnVjdGlvbio+KCZtX3N0cmVhbS5pbnN0cnVjdGlvbnMo
KVttX2luZGV4XSk7IH0KKworICAgICAgICBJbnN0cnVjdGlvblN0cmVhbSYgbV9zdHJlYW07CiAg
ICAgICAgIE9mZnNldCBtX2luZGV4OwogICAgIH07CiAKIHB1YmxpYzoKLSAgICB1c2luZyBSZWYg
PSBCYXNlUmVmPGNvbnN0IEluc3RydWN0aW9uQnVmZmVyPjsKLQotICAgIGNsYXNzIE11dGFibGVS
ZWYgOiBwdWJsaWMgQmFzZVJlZjxJbnN0cnVjdGlvbkJ1ZmZlcj4gewotICAgICAgICBmcmllbmQg
Y2xhc3MgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI7Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAg
IHVzaW5nIEJhc2VSZWY8SW5zdHJ1Y3Rpb25CdWZmZXI+OjpCYXNlUmVmOwotCi0gICAgcHVibGlj
OgotICAgICAgICBSZWYgZnJlZXplKCkgY29uc3QgIHsgcmV0dXJuIFJlZiB7IG1faW5zdHJ1Y3Rp
b25zLCBtX2luZGV4IH07IH0KLSAgICAgICAgaW5saW5lIEluc3RydWN0aW9uKiBvcGVyYXRvci0+
KCkgeyByZXR1cm4gdW53cmFwKCk7IH0KLSAgICAgICAgaW5saW5lIEluc3RydWN0aW9uKiBwdHIo
KSB7IHJldHVybiB1bndyYXAoKTsgfQotICAgICAgICBpbmxpbmUgb3BlcmF0b3IgUmVmKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFJlZiB7IG1faW5zdHJ1Y3Rpb25zLCBtX2luZGV4
IH07Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGlubGluZSBJbnN0cnVjdGlv
biogdW53cmFwKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxJbnN0cnVjdGlvbio+KCZtX2lu
c3RydWN0aW9uc1ttX2luZGV4XSk7IH0KLSAgICB9OworICAgIHVzaW5nIFJlZiA9IEJhc2VSZWY8
Y29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0+OwogCiBwcml2YXRlOgogICAgIGNsYXNzIGl0ZXJhdG9y
IDogcHVibGljIFJlZiB7CkBAIC0xNDQsNTQgKzEyNywxMTEgQEAgcHJpdmF0ZToKIHB1YmxpYzoK
ICAgICBpbmxpbmUgaXRlcmF0b3IgYmVnaW4oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IGl0ZXJhdG9yIHsgbV9pbnN0cnVjdGlvbnMsIDAgfTsKKyAgICAgICAgcmV0dXJuIGl0ZXJhdG9y
IHsgKnRoaXMsIDAgfTsKICAgICB9CiAKICAgICBpbmxpbmUgaXRlcmF0b3IgZW5kKCkgY29uc3QK
ICAgICB7Ci0gICAgICAgIHJldHVybiBpdGVyYXRvciB7IG1faW5zdHJ1Y3Rpb25zLCBtX2luc3Ry
dWN0aW9ucy5zaXplKCkgfTsKKyAgICAgICAgcmV0dXJuIGl0ZXJhdG9yIHsgKnRoaXMsIHNpemUo
KSB9OwogICAgIH0KIAogICAgIGlubGluZSBjb25zdCBSZWYgYXQoT2Zmc2V0IG9mZnNldCkgY29u
c3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChvZmZzZXQgPCBtX2luc3RydWN0aW9ucy5zaXplKCkp
OwotICAgICAgICByZXR1cm4gUmVmIHsgbV9pbnN0cnVjdGlvbnMsIG9mZnNldCB9OworICAgICAg
ICBBU1NFUlQob2Zmc2V0IDwgc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIFJlZiB7ICp0aGlzLCBv
ZmZzZXQgfTsKICAgICB9CiAKLSAgICBpbmxpbmUgc2l6ZV90IHNpemUoKSBjb25zdAorICAgIHZp
cnR1YWwgc2l6ZV90IHNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCB1aW50OF90
KiBpbnN0cnVjdGlvbnMoKSBjb25zdCA9IDA7CisKKyAgICBib29sIGNvbnRhaW5zKEluc3RydWN0
aW9uICopIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgSW5zdHJ1Y3Rpb25TdHJlYW0oKTsKK307
CisKK2NsYXNzIEluc3RydWN0aW9uU3RyZWFtUmVhZGVyIDogcHVibGljIEluc3RydWN0aW9uU3Ry
ZWFtIHsKKyAgICBmcmllbmQgY2xhc3MgQ2FjaGVkSW5zdHJ1Y3Rpb25TdHJlYW07CisKK3B1Ymxp
YzoKKyAgICBJbnN0cnVjdGlvblN0cmVhbVJlYWRlcihJbnN0cnVjdGlvblZlY3RvciYmKTsKKwor
ICAgIGNvbnN0IHVpbnQ4X3QqIGluc3RydWN0aW9ucygpIGNvbnN0IG92ZXJyaWRlCiAgICAgewot
ICAgICAgICByZXR1cm4gbV9pbnN0cnVjdGlvbnMuc2l6ZSgpOworICAgICAgICByZXR1cm4gbV9p
bnN0cnVjdGlvbnM7CiAgICAgfQogCi0gICAgY29uc3Qgdm9pZCogcmF3UG9pbnRlcigpIGNvbnN0
CisgICAgc2l6ZV90IHNpemUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJu
IG1faW5zdHJ1Y3Rpb25zLmRhdGEoKTsKKyAgICAgICAgcmV0dXJuIG1fc2l6ZTsKICAgICB9CiAK
LSAgICBib29sIGNvbnRhaW5zKEluc3RydWN0aW9uICopIGNvbnN0OworICAgIH5JbnN0cnVjdGlv
blN0cmVhbVJlYWRlcigpCisgICAgeworICAgICAgICBpZiAobV9vd25lZCkKKyAgICAgICAgICAg
IGZhc3RGcmVlKGNvbnN0X2Nhc3Q8dWludDhfdCo+KG1faW5zdHJ1Y3Rpb25zKSk7CisgICAgfQog
Ci1wcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgSW5zdHJ1Y3Rpb25TdHJlYW0oSW5zdHJ1Y3Rpb25C
dWZmZXImJik7Citwcml2YXRlOgorICAgIEluc3RydWN0aW9uU3RyZWFtUmVhZGVyKCkKKyAgICB7
CisgICAgfQogCi0gICAgSW5zdHJ1Y3Rpb25CdWZmZXIgbV9pbnN0cnVjdGlvbnM7CisgICAgYm9v
bCBtX293bmVkIHsgZmFsc2UgfTsKKyAgICBzaXplX3QgbV9zaXplOworICAgIGNvbnN0IHVpbnQ4
X3QqIG1faW5zdHJ1Y3Rpb25zOwogfTsKIAogY2xhc3MgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIg
OiBwdWJsaWMgSW5zdHJ1Y3Rpb25TdHJlYW0gewogICAgIGZyaWVuZCBjbGFzcyBCeXRlY29kZVJl
d3JpdGVyOwogcHVibGljOgotICAgIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyKCkKLSAgICAgICAg
OiBJbnN0cnVjdGlvblN0cmVhbSh7IH0pCi0gICAgeyB9CisgICAgSW5zdHJ1Y3Rpb25TdHJlYW1X
cml0ZXIoKSB7IH0KKworICAgIGNvbnN0IHVpbnQ4X3QqIGluc3RydWN0aW9ucygpIGNvbnN0IG92
ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gbV9zdHJlYW0uZGF0YSgpOworICAgIH0KKwor
ICAgIHNpemVfdCBzaXplKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBt
X3N0cmVhbS5zaXplKCk7CisgICAgfQorCisgICAgdWludDhfdCogbXV0YWJsZUluc3RydWN0aW9u
cygpCisgICAgeworICAgICAgICByZXR1cm4gbV9zdHJlYW0uZGF0YSgpOworICAgIH0KKworCisg
ICAgY2xhc3MgTXV0YWJsZVJlZiA6IHB1YmxpYyBCYXNlUmVmPEluc3RydWN0aW9uU3RyZWFtV3Jp
dGVyPiB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjsKKwor
ICAgIHByb3RlY3RlZDoKKyAgICAgICAgdXNpbmcgQmFzZVJlZjxJbnN0cnVjdGlvblN0cmVhbVdy
aXRlcj46OkJhc2VSZWY7CisKKyAgICBwdWJsaWM6CisgICAgICAgIFJlZiBmcmVlemUoKSBjb25z
dCB7IHJldHVybiBSZWYgeyBtX3N0cmVhbSwgbV9pbmRleCB9OyB9CisgICAgICAgIGlubGluZSBJ
bnN0cnVjdGlvbiogb3BlcmF0b3ItPigpIHsgcmV0dXJuIHVud3JhcCgpOyB9CisgICAgICAgIGlu
bGluZSBJbnN0cnVjdGlvbiogcHRyKCkgeyByZXR1cm4gdW53cmFwKCk7IH0KKyAgICAgICAgaW5s
aW5lIG9wZXJhdG9yIFJlZigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBSZWYgeyBt
X3N0cmVhbSwgbV9pbmRleCB9OworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBp
bmxpbmUgSW5zdHJ1Y3Rpb24qIHVud3JhcCgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SW5z
dHJ1Y3Rpb24qPigmbV9zdHJlYW0ubXV0YWJsZUluc3RydWN0aW9ucygpW21faW5kZXhdKTsgfQor
ICAgIH07CisKIAogICAgIGlubGluZSBNdXRhYmxlUmVmIHJlZihPZmZzZXQgb2Zmc2V0KQogICAg
IHsKLSAgICAgICAgQVNTRVJUKG9mZnNldCA8IG1faW5zdHJ1Y3Rpb25zLnNpemUoKSk7Ci0gICAg
ICAgIHJldHVybiBNdXRhYmxlUmVmIHsgbV9pbnN0cnVjdGlvbnMsIG9mZnNldCB9OworICAgICAg
ICBBU1NFUlQob2Zmc2V0IDwgbV9zdHJlYW0uc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIE11dGFi
bGVSZWYgeyAqdGhpcywgb2Zmc2V0IH07CiAgICAgfQogCiAgICAgdm9pZCBzZWVrKHVuc2lnbmVk
IHBvc2l0aW9uKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHBvc2l0aW9uIDw9IG1faW5zdHJ1Y3Rp
b25zLnNpemUoKSk7CisgICAgICAgIEFTU0VSVChwb3NpdGlvbiA8PSBtX3N0cmVhbS5zaXplKCkp
OwogICAgICAgICBtX3Bvc2l0aW9uID0gcG9zaXRpb247CiAgICAgfQogCkBAIC0yMDMsMTAgKzI0
MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3cml0ZSh1aW50OF90IGJ5dGUpCiAgICAgewogICAg
ICAgICBBU1NFUlQoIW1fZmluYWxpemVkKTsKLSAgICAgICAgaWYgKG1fcG9zaXRpb24gPCBtX2lu
c3RydWN0aW9ucy5zaXplKCkpCi0gICAgICAgICAgICBtX2luc3RydWN0aW9uc1ttX3Bvc2l0aW9u
KytdID0gYnl0ZTsKKyAgICAgICAgaWYgKG1fcG9zaXRpb24gPCBtX3N0cmVhbS5zaXplKCkpCisg
ICAgICAgICAgICBtX3N0cmVhbVttX3Bvc2l0aW9uKytdID0gYnl0ZTsKICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBtX2luc3RydWN0aW9ucy5hcHBlbmQoYnl0ZSk7CisgICAgICAgICAgICBt
X3N0cmVhbS5hcHBlbmQoYnl0ZSk7CiAgICAgICAgICAgICBtX3Bvc2l0aW9uKys7CiAgICAgICAg
IH0KICAgICB9CkBAIC0yMjcsMjggKzI2NywyOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJld2lu
ZChNdXRhYmxlUmVmJiByZWYpCiAgICAgewotICAgICAgICBBU1NFUlQocmVmLm9mZnNldCgpIDwg
bV9pbnN0cnVjdGlvbnMuc2l6ZSgpKTsKLSAgICAgICAgbV9pbnN0cnVjdGlvbnMuc2hyaW5rKHJl
Zi5vZmZzZXQoKSk7CisgICAgICAgIEFTU0VSVChyZWYub2Zmc2V0KCkgPCBtX3N0cmVhbS5zaXpl
KCkpOworICAgICAgICBtX3N0cmVhbS5zaHJpbmsocmVmLm9mZnNldCgpKTsKICAgICAgICAgbV9w
b3NpdGlvbiA9IHJlZi5vZmZzZXQoKTsKICAgICB9CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5z
dHJ1Y3Rpb25TdHJlYW0+IGZpbmFsaXplKCkKICAgICB7CiAgICAgICAgIG1fZmluYWxpemVkID0g
dHJ1ZTsKLSAgICAgICAgbV9pbnN0cnVjdGlvbnMuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbT4geyBuZXcgSW5zdHJ1Y3Rpb25T
dHJlYW0oV1RGTW92ZShtX2luc3RydWN0aW9ucykpIH07CisgICAgICAgIG1fc3RyZWFtLnNocmlu
a1RvRml0KCk7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJl
YW1SZWFkZXI+IHsgbmV3IEluc3RydWN0aW9uU3RyZWFtUmVhZGVyKFdURk1vdmUobV9zdHJlYW0p
KSB9OwogICAgIH0KIAogICAgIE11dGFibGVSZWYgcmVmKCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBNdXRhYmxlUmVmIHsgbV9pbnN0cnVjdGlvbnMsIG1fcG9zaXRpb24gfTsKKyAgICAgICAgcmV0
dXJuIE11dGFibGVSZWYgeyAqdGhpcywgbV9wb3NpdGlvbiB9OwogICAgIH0KIAogICAgIHZvaWQg
c3dhcChJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgb3RoZXIpCiAgICAgewogICAgICAgICBzdGQ6
OnN3YXAobV9maW5hbGl6ZWQsIG90aGVyLm1fZmluYWxpemVkKTsKICAgICAgICAgc3RkOjpzd2Fw
KG1fcG9zaXRpb24sIG90aGVyLm1fcG9zaXRpb24pOwotICAgICAgICBtX2luc3RydWN0aW9ucy5z
d2FwKG90aGVyLm1faW5zdHJ1Y3Rpb25zKTsKKyAgICAgICAgbV9zdHJlYW0uc3dhcChvdGhlci5t
X3N0cmVhbSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjc0LDE3ICszMTQsMTggQEAgcHJpdmF0
ZToKIHB1YmxpYzoKICAgICBpdGVyYXRvciBiZWdpbigpCiAgICAgewotICAgICAgICByZXR1cm4g
aXRlcmF0b3IgeyBtX2luc3RydWN0aW9ucywgMCB9OworICAgICAgICByZXR1cm4gaXRlcmF0b3Ig
eyAqdGhpcywgMCB9OwogICAgIH0KIAogICAgIGl0ZXJhdG9yIGVuZCgpCiAgICAgewotICAgICAg
ICByZXR1cm4gaXRlcmF0b3IgeyBtX2luc3RydWN0aW9ucywgbV9pbnN0cnVjdGlvbnMuc2l6ZSgp
IH07CisgICAgICAgIHJldHVybiBpdGVyYXRvciB7ICp0aGlzLCBtX3N0cmVhbS5zaXplKCkgfTsK
ICAgICB9CiAKIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9wb3NpdGlvbiB7IDAgfTsKICAgICBi
b29sIG1fZmluYWxpemVkIHsgZmFsc2UgfTsKKyAgICBJbnN0cnVjdGlvblZlY3RvciBtX3N0cmVh
bTsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
ZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmgKaW5kZXggNGRkMTg5ZDY1N2Q5MmFjODBiNDM1
M2FiZDE5NjBlNGU3MGJlYjBjMi4uMmJmNWE1MTliYjNlZDg1Y2QzMzk4MGQ0ZTRhZDE0MGU0Nzdm
NWVhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VK
dW1wVGFyZ2V0c0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oCkBAIC0xMzMsNyArMTMzLDcgQEAgU1dJVENIX0pN
UChDQVNFX09QLCBTV0lUQ0hfQ0FTRSwgU1dJVENIX0RFRkFVTFRfT0ZGU0VUKQogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3Rpb24sIHR5cGVuYW1lIENvZGVCbG9j
a09ySGFzaE1hcD4KLWlubGluZSB2b2lkIHVwZGF0ZVN0b3JlZEp1bXBUYXJnZXRzRm9ySW5zdHJ1
Y3Rpb24oQmxvY2smJiBjb2RlQmxvY2ssIHVuc2lnbmVkIGZpbmFsT2Zmc2V0LCBJbnN0cnVjdGlv
blN0cmVhbTo6TXV0YWJsZVJlZiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3Rpb24mIGZ1bmN0aW9u
LCBDb2RlQmxvY2tPckhhc2hNYXAmIGNvZGVCbG9ja09ySGFzaE1hcCkKK2lubGluZSB2b2lkIHVw
ZGF0ZVN0b3JlZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24oQmxvY2smJiBjb2RlQmxvY2ssIHVu
c2lnbmVkIGZpbmFsT2Zmc2V0LCBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjo6TXV0YWJsZVJlZiBp
bnN0cnVjdGlvbiwgY29uc3QgRnVuY3Rpb24mIGZ1bmN0aW9uLCBDb2RlQmxvY2tPckhhc2hNYXAm
IGNvZGVCbG9ja09ySGFzaE1hcCkKIHsKICNkZWZpbmUgQ0FTRV9PUChfX29wKSBcCiAgICAgY2Fz
ZSBfX29wOjpvcGNvZGVJRDogeyBcCkBAIC0xNjksNyArMTY5LDcgQEAgU1dJVENIX0pNUChDQVNF
X09QLCBTV0lUQ0hfQ0FTRSwgU1dJVENIX0RFRkFVTFRfT0ZGU0VUKQogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3Rpb24+Ci1pbmxpbmUgdm9pZCB1cGRhdGVTdG9y
ZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKEJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGZp
bmFsT2Zmc2V0LCBJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBpbnN0cnVjdGlvbiwgRnVu
Y3Rpb24gZnVuY3Rpb24pCitpbmxpbmUgdm9pZCB1cGRhdGVTdG9yZWRKdW1wVGFyZ2V0c0Zvcklu
c3RydWN0aW9uKEJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGZpbmFsT2Zmc2V0LCBJbnN0cnVj
dGlvblN0cmVhbVdyaXRlcjo6TXV0YWJsZVJlZiBpbnN0cnVjdGlvbiwgRnVuY3Rpb24gZnVuY3Rp
b24pCiB7CiAgICAgdXBkYXRlU3RvcmVkSnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihjb2RlQmxv
Y2ssIGZpbmFsT2Zmc2V0LCBpbnN0cnVjdGlvbiwgZnVuY3Rpb24sIGNvZGVCbG9jayk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCmluZGV4IDk0ZGUxODJlNzNmOGE4NTc4NjQwYWVhYTc1ZTE1NDgxODEwYWQ3
ZDYuLjZjNzA3OGZjNTRkZGQzZjI2MTE0NWQ0MDkyZGJkZGVhZTFkMzA0MDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCkBAIC00OTY5LDcgKzQ5NjksNyBAQCB2b2lkIFN0cnVjdHVyZUZvckluQ29udGV4dDo6
ZmluYWxpemUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgVW5saW5rZWRDb2RlQgogICAg
ICAgICByZXR1cm47CiAKICAgICBPcGNvZGVJRCBsYXN0T3Bjb2RlSUQgPSBnZW5lcmF0b3IubV9s
YXN0T3Bjb2RlSUQ7Ci0gICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgbGFzdEluc3Ry
dWN0aW9uID0gZ2VuZXJhdG9yLm1fbGFzdEluc3RydWN0aW9uOworICAgIEluc3RydWN0aW9uU3Ry
ZWFtV3JpdGVyOjpNdXRhYmxlUmVmIGxhc3RJbnN0cnVjdGlvbiA9IGdlbmVyYXRvci5tX2xhc3RJ
bnN0cnVjdGlvbjsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGluc3RUdXBsZSA6IG1fZ2V0SW5zdHMp
IHsKICAgICAgICAgdW5zaWduZWQgaW5zdEluZGV4ID0gc3RkOjpnZXQ8MD4oaW5zdFR1cGxlKTsK
ICAgICAgICAgaW50IHByb3BlcnR5UmVnSW5kZXggPSBzdGQ6OmdldDwxPihpbnN0VHVwbGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCmluZGV4IDI5ZWQzOWFhZDg3Y2UwOWYzMWZmMTM1ODFmODZmZTA4YWFiMDc1Njgu
LjYzZWYzYjA0ZWE5MGY3NTBjZTYzZWMxNDkwMjc1NjEzY2ZiZDE2YzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
QEAgLTEwNTMsNyArMTA1Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGFsbG9j
YXRlQW5kRW1pdFNjb3BlKCk7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSnVtcE9wPgot
ICAgICAgICB2b2lkIHNldFRhcmdldEZvckp1bXBJbnN0cnVjdGlvbihJbnN0cnVjdGlvblN0cmVh
bTo6TXV0YWJsZVJlZiYsIGludCB0YXJnZXQpOworICAgICAgICB2b2lkIHNldFRhcmdldEZvckp1
bXBJbnN0cnVjdGlvbihJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjo6TXV0YWJsZVJlZiYsIGludCB0
YXJnZXQpOwogCiAgICAgICAgIHVzaW5nIEJpZ0ludE1hcEVudHJ5ID0gc3RkOjp0dXBsZTxVbmlx
dWVkU3RyaW5nSW1wbCosIHVpbnQ4X3QsIGJvb2w+OwogCkBAIC0xMjc5LDcgKzEyNzksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgVk0qIG1fdm07CiAKICAgICAgICAgT3Bjb2RlSUQgbV9s
YXN0T3Bjb2RlSUQgPSBvcF9lbmQ7Ci0gICAgICAgIEluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxl
UmVmIG1fbGFzdEluc3RydWN0aW9uIHsgbV93cml0ZXIucmVmKCkgfTsKKyAgICAgICAgSW5zdHJ1
Y3Rpb25TdHJlYW1Xcml0ZXI6Ok11dGFibGVSZWYgbV9sYXN0SW5zdHJ1Y3Rpb24geyBtX3dyaXRl
ci5yZWYoKSB9OwogCiAgICAgICAgIGJvb2wgbV91c2VzRXhjZXB0aW9ucyB7IGZhbHNlIH07CiAg
ICAgICAgIGJvb2wgbV9leHByZXNzaW9uVG9vRGVlcCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHlzaXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFs
eXNpcy5oCmluZGV4IDg3NTdkM2EwZDU0ZmM4OWZiMGQ5N2FjOGI5OWU4NmEzNDFlYjZkNzQuLjUz
MDY4OGYyOWIzMTExYjYzOGExNDhkODQ2NTg3MzViM2EwZDRmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXNpcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFs
eXNpcy5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogLy8gUmVmZXJlbmNlIGNv
dW50IGluZGljYXRlcyBudW1iZXIgb2YgbGl2ZSByZWdpc3RlcnMgdGhhdCBhbGlhcyB0aGlzIG9i
amVjdC4KIGNsYXNzIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXMgOiBwdWJsaWMgUmVmQ291bnRlZDxT
dGF0aWNQcm9wZXJ0eUFuYWx5c2lzPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdGF0aWNQ
cm9wZXJ0eUFuYWx5c2lzPiBjcmVhdGUoSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYmJiBp
bnN0cnVjdGlvblJlZikKKyAgICBzdGF0aWMgUmVmPFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM+IGNy
ZWF0ZShJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjo6TXV0YWJsZVJlZiYmIGluc3RydWN0aW9uUmVm
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RhdGljUHJvcGVydHlBbmFs
eXNpcyhXVEZNb3ZlKGluc3RydWN0aW9uUmVmKSkpOyAKICAgICB9CkBAIC00NSwxMiArNDUsMTIg
QEAgcHVibGljOgogICAgIGludCBwcm9wZXJ0eUluZGV4Q291bnQoKSB7IHJldHVybiBtX3Byb3Bl
cnR5SW5kZXhlcy5zaXplKCk7IH0KIAogcHJpdmF0ZToKLSAgICBTdGF0aWNQcm9wZXJ0eUFuYWx5
c2lzKEluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVmJiYgaW5zdHJ1Y3Rpb25SZWYpCisgICAg
U3RhdGljUHJvcGVydHlBbmFseXNpcyhJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjo6TXV0YWJsZVJl
ZiYmIGluc3RydWN0aW9uUmVmKQogICAgICAgICA6IG1faW5zdHJ1Y3Rpb25SZWYoV1RGTW92ZShp
bnN0cnVjdGlvblJlZikpCiAgICAgewogICAgIH0KIAotICAgIEluc3RydWN0aW9uU3RyZWFtOjpN
dXRhYmxlUmVmIG1faW5zdHJ1Y3Rpb25SZWY7CisgICAgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6
Ok11dGFibGVSZWYgbV9pbnN0cnVjdGlvblJlZjsKICAgICB0eXBlZGVmIEhhc2hTZXQ8dW5zaWdu
ZWQsIFdURjo6SW50SGFzaDx1bnNpZ25lZD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8dW5zaWduZWQ+PiBQcm9wZXJ0eUluZGV4U2V0OwogICAgIFByb3BlcnR5SW5kZXhTZXQg
bV9wcm9wZXJ0eUluZGV4ZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaAppbmRleCA1ZjllNzM4
NjJhNGFjZDMwN2IxMDFiZDFjZDZmMjNmYzUxNzUyZDNiLi44NzI4NTdlZDc4YzJmNjVlZDFhYjdm
NTc5MjhjMGE1OGRiYWEwNmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaApAQCAtMzUsOCArMzUs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIGlzIHVuZGVyc3Rvb2QgdG8gYmUgbG9zc3ksIGFuZCBp
dCdzIE9LIGlmIGl0IHR1cm5zIG91dCB0byBiZSB3cm9uZyBzb21ldGltZXMuCiBjbGFzcyBTdGF0
aWNQcm9wZXJ0eUFuYWx5emVyIHsKIHB1YmxpYzoKLSAgICB2b2lkIGNyZWF0ZVRoaXMoUmVnaXN0
ZXJJRCogZHN0LCBJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBpbnN0cnVjdGlvblJlZik7
Ci0gICAgdm9pZCBuZXdPYmplY3QoUmVnaXN0ZXJJRCogZHN0LCBJbnN0cnVjdGlvblN0cmVhbTo6
TXV0YWJsZVJlZiBpbnN0cnVjdGlvblJlZik7CisgICAgdm9pZCBjcmVhdGVUaGlzKFJlZ2lzdGVy
SUQqIGRzdCwgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb25S
ZWYpOworICAgIHZvaWQgbmV3T2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgSW5zdHJ1Y3Rpb25TdHJl
YW1Xcml0ZXI6Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb25SZWYpOwogICAgIHZvaWQgcHV0QnlJZChS
ZWdpc3RlcklEKiBkc3QsIHVuc2lnbmVkIHByb3BlcnR5SW5kZXgpOyAvLyBwcm9wZXJ0eUluZGV4
IGlzIGFuIGluZGV4IGludG8gYSB1bmlxdWVkIHNldCBvZiBzdHJpbmdzLgogICAgIHZvaWQgbW92
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKTsKIApAQCAtNTAsMTQgKzUwLDE0IEBA
IHByaXZhdGU6CiAgICAgQW5hbHlzaXNNYXAgbV9hbmFseXNlczsKIH07CiAKLWlubGluZSB2b2lk
IFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OmNyZWF0ZVRoaXMoUmVnaXN0ZXJJRCogZHN0LCBJbnN0
cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiBpbnN0cnVjdGlvblJlZikKK2lubGluZSB2b2lkIFN0
YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OmNyZWF0ZVRoaXMoUmVnaXN0ZXJJRCogZHN0LCBJbnN0cnVj
dGlvblN0cmVhbVdyaXRlcjo6TXV0YWJsZVJlZiBpbnN0cnVjdGlvblJlZikKIHsKICAgICBBbmFs
eXNpc01hcDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fYW5hbHlzZXMuYWRkKAogICAgICAgICBk
c3QtPmluZGV4KCksIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OmNyZWF0ZShXVEZNb3ZlKGluc3Ry
dWN0aW9uUmVmKSkpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7IC8vIENhbid0IGhhdmUgdHdvICd0aGlzJyBpbiB0aGUgc2FtZSBjb25zdHJ1Y3Rv
ci4KIH0KIAotaW5saW5lIHZvaWQgU3RhdGljUHJvcGVydHlBbmFseXplcjo6bmV3T2JqZWN0KFJl
Z2lzdGVySUQqIGRzdCwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb25S
ZWYpCitpbmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpuZXdPYmplY3QoUmVnaXN0
ZXJJRCogZHN0LCBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjo6TXV0YWJsZVJlZiBpbnN0cnVjdGlv
blJlZikKIHsKICAgICBhdXRvIGFuYWx5c2lzID0gU3RhdGljUHJvcGVydHlBbmFseXNpczo6Y3Jl
YXRlKFdURk1vdmUoaW5zdHJ1Y3Rpb25SZWYpKTsKICAgICBBbmFseXNpc01hcDo6QWRkUmVzdWx0
IGFkZFJlc3VsdCA9IG1fYW5hbHlzZXMuYWRkKGRzdC0+aW5kZXgoKSwgYW5hbHlzaXMuY29weVJl
ZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZEJ5
dGVjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRCeXRlY29kZS5o
CmluZGV4IDU3OTM2NjgyNGJjOGE1M2QzMDIzYzllMjkxMDc3ZTI5YWMxMjlmOWYuLjE1Y2FiM2Mw
NDcwYmEwY2EwNjJkNTU1ZTQ3YzNmZmRkYzhmZWQ3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZEJ5dGVjb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FjaGVkQnl0ZWNvZGUuaApAQCAtNDcsOSArNDcsOSBAQCBwdWJsaWM6
CiAgICAgfQogCiAjaWYgIU9TKFdJTkRPV1MpCi0gICAgc3RhdGljIFJlZjxDYWNoZWRCeXRlY29k
ZT4gY3JlYXRlKHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKQorICAgIHN0YXRpYyBSZWY8Q2FjaGVk
Qnl0ZWNvZGU+IGNyZWF0ZSh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgTGVhZkV4ZWN1dGFibGVN
YXAmJiBsZWFmRXhlY3V0YWJsZXMgPSB7IH0pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDYWNoZWRCeXRlY29kZShDYWNoZVBheWxvYWQ6Om1ha2VNYXBwZWRQYXlsb2FkKGRh
dGEsIHNpemUpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlZEJ5dGVjb2Rl
KENhY2hlUGF5bG9hZDo6bWFrZU1hcHBlZFBheWxvYWQoZGF0YSwgc2l6ZSksIFdURk1vdmUobGVh
ZkV4ZWN1dGFibGVzKSkpOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggN2E5NzE4MzVkZmRjNzE2NTNjNThiMjY4
YjE4ZDg3N2UzZjE4NzE1Ny4uODY2NGQ3MDgxNjFjMjRkYzFmZmVhNjQ5MjFkOGY4OWI5ODJhZWM0
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApA
QCAtODcsOCArODcsOSBAQCBwdWJsaWM6CiAgICAgICAgIHB0cmRpZmZfdCBtX29mZnNldDsKICAg
ICB9OwogCi0gICAgRW5jb2RlcihWTSYgdm0pCisgICAgRW5jb2RlcihWTSYgdm0sIGludCBmZCkK
ICAgICAgICAgOiBtX3ZtKHZtKQorICAgICAgICAsIG1fZmQoZmQpCiAgICAgICAgICwgbV9iYXNl
T2Zmc2V0KDApCiAgICAgICAgICwgbV9jdXJyZW50UGFnZShudWxscHRyKQogICAgIHsKQEAgLTE0
Niw2ICsxNDcsOSBAQCBwdWJsaWM6CiAKICAgICBSZWY8Q2FjaGVkQnl0ZWNvZGU+IHJlbGVhc2Uo
KQogICAgIHsKKyAgICAgICAgaWYgKG1fZmQgIT0gLTEpCisgICAgICAgICAgICByZXR1cm4gcmVs
ZWFzZU1hcHBlZCgpOworCiAgICAgICAgIHNpemVfdCBzaXplID0gbV9iYXNlT2Zmc2V0ICsgbV9j
dXJyZW50UGFnZS0+c2l6ZSgpOwogICAgICAgICBNYWxsb2NQdHI8dWludDhfdD4gYnVmZmVyID0g
TWFsbG9jUHRyPHVpbnQ4X3Q+OjptYWxsb2Moc2l6ZSk7CiAgICAgICAgIHVuc2lnbmVkIG9mZnNl
dCA9IDA7CkBAIC0xNTgsNiArMTYyLDE5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Cisg
ICAgUmVmPENhY2hlZEJ5dGVjb2RlPiByZWxlYXNlTWFwcGVkKCkKKyAgICB7CisgICAgICAgIHNp
emVfdCBzaXplID0gbV9iYXNlT2Zmc2V0ICsgbV9jdXJyZW50UGFnZS0+c2l6ZSgpOworICAgICAg
ICBpZiAoZnRydW5jYXRlKG1fZmQsIHNpemUpKQorICAgICAgICAgICAgcmV0dXJuIENhY2hlZEJ5
dGVjb2RlOjpjcmVhdGUoKTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhZ2UgOiBtX3Bh
Z2VzKQorICAgICAgICAgICAgd3JpdGUobV9mZCwgcGFnZS5idWZmZXIoKSwgcGFnZS5zaXplKCkp
OworCisgICAgICAgIHZvaWQqIGJ1ZmZlciA9IG1tYXAobnVsbHB0ciwgc2l6ZSwgUFJPVF9SRUFE
LCBNQVBfUFJJVkFURSwgbV9mZCwgMCk7CisgICAgICAgIHJldHVybiBDYWNoZWRCeXRlY29kZTo6
Y3JlYXRlKGJ1ZmZlciwgc2l6ZSwgV1RGTW92ZShtX2xlYWZFeGVjdXRhYmxlcykpOworICAgIH0K
KwogICAgIGNsYXNzIFBhZ2UgewogICAgIHB1YmxpYzoKICAgICAgICAgUGFnZShzaXplX3Qgc2l6
ZSkKQEAgLTIxMyw2ICsyMzAsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFZNJiBtX3ZtOwor
ICAgIGludCBtX2ZkOwogICAgIHB0cmRpZmZfdCBtX2Jhc2VPZmZzZXQ7CiAgICAgUGFnZSogbV9j
dXJyZW50UGFnZTsKICAgICBWZWN0b3I8UGFnZT4gbV9wYWdlczsKQEAgLTEzMDUsMjIgKzEzMjMs
MjUgQEAgcHJpdmF0ZToKICAgICBFbmNvZGVkVHlwZSBtX3R5cGU7CiB9OwogCi1jbGFzcyBDYWNo
ZWRJbnN0cnVjdGlvblN0cmVhbSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8SW5zdHJ1Y3Rpb25TdHJl
YW0+IHsKK2NsYXNzIENhY2hlZEluc3RydWN0aW9uU3RyZWFtIDogcHVibGljIFZhcmlhYmxlTGVu
Z3RoT2JqZWN0PEluc3RydWN0aW9uU3RyZWFtPiB7CiBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIHN0cmVhbSkKICAgICB7
Ci0gICAgICAgIG1faW5zdHJ1Y3Rpb25zLmVuY29kZShlbmNvZGVyLCBzdHJlYW0ubV9pbnN0cnVj
dGlvbnMpOworICAgICAgICBtX3NpemUgPSBzdHJlYW0uc2l6ZSgpOworICAgICAgICB1aW50OF90
KiBidWZmZXIgPSB0aGlzLT5hbGxvY2F0ZTx1aW50OF90PihlbmNvZGVyLCBtX3NpemUpOworICAg
ICAgICBtZW1jcHkoYnVmZmVyLCBzdHJlYW0uaW5zdHJ1Y3Rpb25zKCksIG1fc2l6ZSk7CiAgICAg
fQogCi0gICAgSW5zdHJ1Y3Rpb25TdHJlYW0qIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSBjb25z
dAorICAgIEluc3RydWN0aW9uU3RyZWFtKiBkZWNvZGUoRGVjb2RlciYpIGNvbnN0CiAgICAgewot
ICAgICAgICBWZWN0b3I8dWludDhfdCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IGluc3RydWN0
aW9uc1ZlY3RvcjsKLSAgICAgICAgbV9pbnN0cnVjdGlvbnMuZGVjb2RlKGRlY29kZXIsIGluc3Ry
dWN0aW9uc1ZlY3Rvcik7Ci0gICAgICAgIHJldHVybiBuZXcgSW5zdHJ1Y3Rpb25TdHJlYW0oV1RG
TW92ZShpbnN0cnVjdGlvbnNWZWN0b3IpKTsKKyAgICAgICAgSW5zdHJ1Y3Rpb25TdHJlYW1SZWFk
ZXIqIHN0cmVhbSA9IG5ldyBJbnN0cnVjdGlvblN0cmVhbVJlYWRlcigpOworICAgICAgICBzdHJl
YW0tPm1fc2l6ZSA9IG1fc2l6ZTsKKyAgICAgICAgc3RyZWFtLT5tX2luc3RydWN0aW9ucyA9IHRo
aXMtPmJ1ZmZlcigpOworICAgICAgICByZXR1cm4gc3RyZWFtOwogICAgIH0KIAogcHJpdmF0ZToK
LSAgICBDYWNoZWRWZWN0b3I8dWludDhfdCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1faW5z
dHJ1Y3Rpb25zOworICAgIHNpemVfdCBtX3NpemU7CiB9OwogCiBjbGFzcyBDYWNoZWRNZXRhZGF0
YVRhYmxlIDogcHVibGljIENhY2hlZE9iamVjdDxVbmxpbmtlZE1ldGFkYXRhVGFibGU+IHsKQEAg
LTIzMDksMTEgKzIzMzAsMTEgQEAgdm9pZCBlbmNvZGVDb2RlQmxvY2soRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgU291cmNlQ29kZUtleSYga2V5LCBjb25zdCBVbmxpbmtlZEMKICAgICBlbnRyeS0+
ZW5jb2RlKGVuY29kZXIsIHsga2V5LCBqc0Nhc3Q8Y29uc3QgVW5saW5rZWRDb2RlQmxvY2tUeXBl
Kj4oY29kZUJsb2NrKSB9KTsKIH0KIAotUmVmPENhY2hlZEJ5dGVjb2RlPiBlbmNvZGVDb2RlQmxv
Y2soVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXksIGNvbnN0IFVubGlua2VkQ29kZUJs
b2NrKiBjb2RlQmxvY2spCitSZWY8Q2FjaGVkQnl0ZWNvZGU+IGVuY29kZUNvZGVCbG9jayhWTSYg
dm0sIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtleSwgY29uc3QgVW5saW5rZWRDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgaW50IGZkKQogewogICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvID0gY29k
ZUJsb2NrLT5jbGFzc0luZm8odm0pOwogCi0gICAgRW5jb2RlciBlbmNvZGVyKHZtKTsKKyAgICBF
bmNvZGVyIGVuY29kZXIodm0sIGZkKTsKICAgICBpZiAoY2xhc3NJbmZvID09IFVubGlua2VkUHJv
Z3JhbUNvZGVCbG9jazo6aW5mbygpKQogICAgICAgICBlbmNvZGVDb2RlQmxvY2s8VW5saW5rZWRQ
cm9ncmFtQ29kZUJsb2NrPihlbmNvZGVyLCBrZXksIGNvZGVCbG9jayk7CiAgICAgZWxzZSBpZiAo
Y2xhc3NJbmZvID09IFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6aW5mbygpKQpAQCAt
MjMyNCw5ICsyMzQ1LDE0IEBAIFJlZjxDYWNoZWRCeXRlY29kZT4gZW5jb2RlQ29kZUJsb2NrKFZN
JiB2bSwgY29uc3QgU291cmNlQ29kZUtleSYga2V5LCBjb25zdCBVbmxpCiAgICAgcmV0dXJuIGVu
Y29kZXIucmVsZWFzZSgpOwogfQogCitSZWY8Q2FjaGVkQnl0ZWNvZGU+IGVuY29kZUNvZGVCbG9j
ayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtleSwgY29uc3QgVW5saW5rZWRDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKK3sKKyAgICByZXR1cm4gZW5jb2RlQ29kZUJsb2NrKHZtLCBrZXksIGNv
ZGVCbG9jaywgLTEpOworfQorCiBSZWY8Q2FjaGVkQnl0ZWNvZGU+IGVuY29kZUZ1bmN0aW9uQ29k
ZUJsb2NrKFZNJiB2bSwgY29uc3QgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2Nr
KQogewotICAgIEVuY29kZXIgZW5jb2Rlcih2bSk7CisgICAgRW5jb2RlciBlbmNvZGVyKHZtLCAt
MSk7CiAgICAgZW5jb2Rlci5tYWxsb2M8Q2FjaGVkRnVuY3Rpb25Db2RlQmxvY2s+KCktPmVuY29k
ZShlbmNvZGVyLCAqY29kZUJsb2NrKTsKICAgICByZXR1cm4gZW5jb2Rlci5yZWxlYXNlKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuaAppbmRleCA5ZDAw
ZTE3MzNiNGJjZDg5ZmNjOTE4M2U2NzhhYjJmMDFjZTQ5ZWYwLi5kYzQwMTZlOGZiZDM5NDMzOTAy
NzU5ZTE4MzAwZGZhYWM4OTdmNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWNoZWRUeXBlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NhY2hlZFR5cGVzLmgKQEAgLTEwOCw2ICsxMDgsNyBAQCBwcml2YXRlOgogfTsKIAogSlNfRVhQ
T1JUX1BSSVZBVEUgUmVmPENhY2hlZEJ5dGVjb2RlPiBlbmNvZGVDb2RlQmxvY2soVk0mLCBjb25z
dCBTb3VyY2VDb2RlS2V5JiwgY29uc3QgVW5saW5rZWRDb2RlQmxvY2sqKTsKK0pTX0VYUE9SVF9Q
UklWQVRFIFJlZjxDYWNoZWRCeXRlY29kZT4gZW5jb2RlQ29kZUJsb2NrKFZNJiwgY29uc3QgU291
cmNlQ29kZUtleSYsIGNvbnN0IFVubGlua2VkQ29kZUJsb2NrKiwgaW50IGZkKTsKIAogVW5saW5r
ZWRDb2RlQmxvY2sqIGRlY29kZUNvZGVCbG9ja0ltcGwoVk0mLCBjb25zdCBTb3VyY2VDb2RlS2V5
JiwgUmVmPENhY2hlZEJ5dGVjb2RlPik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDAzYTkyZWU2NGEzN2QyMmNmMjNkZDQ4N2Y1OTc5OTM4ZWM5
YjM2MzIuLmYwYjY0ZGY3YTQwOTFjNWM4NzUwZDllZmRlYzUzYjdmMDY3MmE3ZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29kZUNhY2hlLmgiCiAKKyNpbmNs
dWRlICJCeXRlY29kZUNhY2hlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJJbmRpcmVjdEV2YWxFeGVj
dXRhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+
CiAKQEAgLTE3NCwxNiArMTc1LDE5IEBAIHZvaWQgQ29kZUNhY2hlOjp3cml0ZShWTSYgdm0pCiAg
ICAgICAgIHdyaXRlQ29kZUJsb2NrKHZtLCBpdC5rZXksIGl0LnZhbHVlKTsKIH0KIAotdm9pZCBn
ZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrRm9yRnVuY3Rpb25zKFZNJiB2bSwgVW5saW5rZWRDb2Rl
QmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJlbnRTb3VyY2Us
IE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgUGFyc2Vy
RXJyb3ImIGVycm9yKQordm9pZCBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrRm9yRnVuY3Rpb25z
KFZNJiB2bSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBjb25zdCBTb3Vy
Y2VDb2RlJiBwYXJlbnRTb3VyY2UsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVH
ZW5lcmF0aW9uTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBCeXRlY29kZUNhY2hlTWV0
YWRhdGEqIG1ldGFkYXRhKQogewogICAgIGF1dG8gZ2VuZXJhdGUgPSBbJl0oVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBjb25zdHJ1Y3RvcktpbmQpIHsKICAgICAgICAgaWYgKGNvbnN0cnVjdG9yS2luZCA9PSBDb2Rl
Rm9yQ29uc3RydWN0ICYmIFNvdXJjZVBhcnNlTW9kZVNldChTb3VyY2VQYXJzZU1vZGU6OkFzeW5j
QXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNNZXRob2RNb2RlLCBTb3Vy
Y2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Nb2RlKS5jb250YWlucyh1bmxpbmtlZEV4ZWN1dGFi
bGUtPnBhcnNlTW9kZSgpKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBTb3VyY2VD
b2RlIHNvdXJjZSA9IHVubGlua2VkRXhlY3V0YWJsZS0+bGlua2VkU291cmNlQ29kZShwYXJlbnRT
b3VyY2UpOworICAgICAgICBpZiAobWV0YWRhdGEgJiYgIW1ldGFkYXRhLT5zaG91bGRDYWNoZShz
b3VyY2UsIGNvbnN0cnVjdG9yS2luZCkpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayA9IHVu
bGlua2VkRXhlY3V0YWJsZS0+dW5saW5rZWRDb2RlQmxvY2tGb3Iodm0sIHNvdXJjZSwgY29uc3Ry
dWN0b3JLaW5kLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCB1bmxpbmtlZEV4ZWN1dGFibGUt
PnBhcnNlTW9kZSgpKTsKICAgICAgICAgaWYgKHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spCi0g
ICAgICAgICAgICBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrRm9yRnVuY3Rpb25zKHZtLCB1bmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrLCBzb3VyY2UsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3Ip
OworICAgICAgICAgICAgZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvckZ1bmN0aW9ucyh2bSwg
dW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaywgc291cmNlLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVy
cm9yLCBtZXRhZGF0YSk7CiAgICAgfTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWxzbyBn
ZW5lcmF0ZSBDb2RlQmxvY2tzIGZvciBDb2RlRm9yQ29uc3RydWN0CkBAIC0yMjUsMTAgKzIyOSwx
MCBAQCBTb3VyY2VDb2RlS2V5IHNvdXJjZUNvZGVLZXlGb3JTZXJpYWxpemVkTW9kdWxlKFZNJiB2
bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQwogICAgIHJldHVybiBzb3VyY2VDb2RlS2V5Rm9y
U2VyaWFsaXplZEJ5dGVjb2RlKHZtLCBzb3VyY2VDb2RlLCBTb3VyY2VDb2RlVHlwZTo6TW9kdWxl
VHlwZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgeyB9KTsKIH0KIAotUmVmPENhY2hlZEJ5dGVj
b2RlPiBzZXJpYWxpemVCeXRlY29kZShWTSYgdm0sIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgU291cmNlQ29kZVR5cGUgY29kZVR5cGUsIEpT
UGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9k
ZSwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlKQorUmVm
PENhY2hlZEJ5dGVjb2RlPiBzZXJpYWxpemVCeXRlY29kZShWTSYgdm0sIFVubGlua2VkQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgU291cmNlQ29kZVR5cGUg
Y29kZVR5cGUsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1v
ZGUgc2NyaXB0TW9kZSwgaW50IGZkLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2Rl
R2VuZXJhdGlvbk1vZGUpCiB7CiAgICAgcmV0dXJuIGVuY29kZUNvZGVCbG9jayh2bSwKLSAgICAg
ICAgc291cmNlQ29kZUtleUZvclNlcmlhbGl6ZWRCeXRlY29kZSh2bSwgc291cmNlLCBjb2RlVHlw
ZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgY29kZUdlbmVyYXRpb25Nb2RlKSwgY29kZUJsb2Nr
KTsKKyAgICAgICAgc291cmNlQ29kZUtleUZvclNlcmlhbGl6ZWRCeXRlY29kZSh2bSwgc291cmNl
LCBjb2RlVHlwZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgY29kZUdlbmVyYXRpb25Nb2RlKSwg
Y29kZUJsb2NrLCBmZCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZUNhY2hlLmgKaW5kZXggYjA2N2Y4NDdkYWUzMDFjZWVlNzA2NThiZTc2NTlmOGU3ZDNhYjM2Yy4u
YmFmYzhlMmRlYzEzNzQ3ZmJiOWMxNjNhZTA1OTRhNGJmMDNhM2ZkNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNiArNDIsNyBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAorY2xhc3MgQnl0ZWNvZGVDYWNoZU1ldGFkYXRhOwogY2xhc3MgRXZhbEV4
ZWN1dGFibGU7CiBjbGFzcyBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOwogY2xhc3MgSWRlbnRpZmll
cjsKQEAgLTMwMiwyMyArMzAzLDIzIEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVV
bmxpbmtlZENvZGVCbG9jayhWTSYgdm0sIEV4ZWN1dGFibGVUeXBlKiBleGVjdXRhCiAgICAgcmV0
dXJuIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsPFVubGlua2VkQ29kZUJsb2NrVHlwZSwg
RXhlY3V0YWJsZVR5cGU+KHZtLCBzb3VyY2UsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGNvZGVH
ZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgZXhlY3V0YWJsZS0+ZGVyaXZl
ZENvbnRleHRUeXBlKCksIGV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgdmFy
aWFibGVzVW5kZXJURFosIGV4ZWN1dGFibGUpOwogfQogCi12b2lkIGdlbmVyYXRlVW5saW5rZWRD
b2RlQmxvY2tGb3JGdW5jdGlvbnMoVk0mLCBVbmxpbmtlZENvZGVCbG9jayosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiwgUGFyc2VyRXJyb3ImKTsKK3Zv
aWQgZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvckZ1bmN0aW9ucyhWTSYsIFVubGlua2VkQ29k
ZUJsb2NrKiwgY29uc3QgU291cmNlQ29kZSYsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+
LCBQYXJzZXJFcnJvciYsIGNvbnN0IEJ5dGVjb2RlQ2FjaGVNZXRhZGF0YSopOwogCiB0ZW1wbGF0
ZSA8Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2tUeXBlPgogc3RkOjplbmFibGVfaWZfdDwhc3RkOjpp
c19zYW1lPFVubGlua2VkQ29kZUJsb2NrVHlwZSwgVW5saW5rZWRFdmFsQ29kZUJsb2NrPjo6dmFs
dWUsIFVubGlua2VkQ29kZUJsb2NrVHlwZSo+Ci1yZWN1cnNpdmVseUdlbmVyYXRlVW5saW5rZWRD
b2RlQmxvY2soVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyU3RyaWN0
TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uU2V0
PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlLCBQYXJzZXJFcnJvciYgZXJy
b3IsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJv
bm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaKQorcmVjdXJzaXZlbHlHZW5lcmF0ZVVubGlua2VkQ29k
ZUJsb2NrKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlclN0cmljdE1v
ZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIE9wdGlvblNldDxD
b2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9y
LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50KiB2YXJpYWJsZXNVbmRlclREWiwgY29uc3QgQnl0ZWNvZGVDYWNoZU1ldGFkYXRhKiBtZXRh
ZGF0YSkKIHsKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQgPSBmYWxzZTsKICAgICBV
bmxpbmtlZENvZGVCbG9ja1R5cGUqIHVubGlua2VkQ29kZUJsb2NrID0gZ2VuZXJhdGVVbmxpbmtl
ZENvZGVCbG9ja0ltcGw8VW5saW5rZWRDb2RlQmxvY2tUeXBlPih2bSwgc291cmNlLCBzdHJpY3RN
b2RlLCBzY3JpcHRNb2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5
cGUsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgdmFy
aWFibGVzVW5kZXJURFopOwogICAgIGlmICghdW5saW5rZWRDb2RlQmxvY2spCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvckZ1bmN0aW9u
cyh2bSwgdW5saW5rZWRDb2RlQmxvY2ssIHNvdXJjZSwgY29kZUdlbmVyYXRpb25Nb2RlLCBlcnJv
cik7CisgICAgZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvckZ1bmN0aW9ucyh2bSwgdW5saW5r
ZWRDb2RlQmxvY2ssIHNvdXJjZSwgY29kZUdlbmVyYXRpb25Nb2RlLCBlcnJvciwgbWV0YWRhdGEp
OwogICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jazsKIH0KIAogdm9pZCB3cml0ZUNvZGVCbG9j
ayhWTSYsIGNvbnN0IFNvdXJjZUNvZGVLZXkmLCBjb25zdCBTb3VyY2VDb2RlVmFsdWUmKTsKLVJl
ZjxDYWNoZWRCeXRlY29kZT4gc2VyaWFsaXplQnl0ZWNvZGUoVk0mLCBVbmxpbmtlZENvZGVCbG9j
ayosIGNvbnN0IFNvdXJjZUNvZGUmLCBTb3VyY2VDb2RlVHlwZSwgSlNQYXJzZXJTdHJpY3RNb2Rl
LCBKU1BhcnNlclNjcmlwdE1vZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+KTsKK1Jl
ZjxDYWNoZWRCeXRlY29kZT4gc2VyaWFsaXplQnl0ZWNvZGUoVk0mLCBVbmxpbmtlZENvZGVCbG9j
ayosIGNvbnN0IFNvdXJjZUNvZGUmLCBTb3VyY2VDb2RlVHlwZSwgSlNQYXJzZXJTdHJpY3RNb2Rl
LCBKU1BhcnNlclNjcmlwdE1vZGUsIGludCBmZCwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9k
ZT4pOwogU291cmNlQ29kZUtleSBzb3VyY2VDb2RlS2V5Rm9yU2VyaWFsaXplZFByb2dyYW0oVk0m
LCBjb25zdCBTb3VyY2VDb2RlJik7CiBTb3VyY2VDb2RlS2V5IHNvdXJjZUNvZGVLZXlGb3JTZXJp
YWxpemVkTW9kdWxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IDE5Nzk2YWY0Zjg5ZDJlODgxZmI3
ZDU3OTYwMmMwOTRmN2U1ZmVhNjEuLjhhZTlkNTE5ZWU2OTBhOTVjMjFlODIzYjUwZGMwMTU2YjYz
ODNjZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3Bw
CkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLVJlZjxDYWNoZWRCeXRlY29kZT4gZ2VuZXJhdGVQcm9ncmFtQnl0ZWNvZGUoVk0m
IHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKK1JlZjxD
YWNoZWRCeXRlY29kZT4gZ2VuZXJhdGVQcm9ncmFtQnl0ZWNvZGUoVk0mIHZtLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIGludCBmZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBCeXRlY29k
ZUNhY2hlTWV0YWRhdGEqIG1ldGFkYXRhKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsK
ICAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3Vy
cmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwpAQCAtMTAxLDEzICsxMDEsMTQgQEAgUmVmPENh
Y2hlZEJ5dGVjb2RlPiBnZW5lcmF0ZVByb2dyYW1CeXRlY29kZShWTSYgdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgUGEKICAgICBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSA9IEpT
UGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYzsKICAgICBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRl
eHRUeXBlID0gRXZhbENvbnRleHRUeXBlOjpOb25lOwogCi0gICAgVW5saW5rZWRDb2RlQmxvY2sq
IHVubGlua2VkQ29kZUJsb2NrID0gcmVjdXJzaXZlbHlHZW5lcmF0ZVVubGlua2VkQ29kZUJsb2Nr
PFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaz4odm0sIHNvdXJjZSwgc3RyaWN0TW9kZSwgc2NyaXB0
TW9kZSwgeyB9LCBlcnJvciwgZXZhbENvbnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFopOwor
ICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHJlY3Vyc2l2ZWx5R2Vu
ZXJhdGVVbmxpbmtlZENvZGVCbG9jazxVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s+KHZtLCBzb3Vy
Y2UsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIHsgfSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwg
JnZhcmlhYmxlc1VuZGVyVERaLCBtZXRhZGF0YSk7CiAgICAgaWYgKCF1bmxpbmtlZENvZGVCbG9j
aykKICAgICAgICAgcmV0dXJuIENhY2hlZEJ5dGVjb2RlOjpjcmVhdGUoKTsKLSAgICByZXR1cm4g
c2VyaWFsaXplQnl0ZWNvZGUodm0sIHVubGlua2VkQ29kZUJsb2NrLCBzb3VyY2UsIFNvdXJjZUNv
ZGVUeXBlOjpQcm9ncmFtVHlwZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgeyB9KTsKKworICAg
IHJldHVybiBzZXJpYWxpemVCeXRlY29kZSh2bSwgdW5saW5rZWRDb2RlQmxvY2ssIHNvdXJjZSwg
U291cmNlQ29kZVR5cGU6OlByb2dyYW1UeXBlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBmZCwg
eyB9KTsKIH0KIAotUmVmPENhY2hlZEJ5dGVjb2RlPiBnZW5lcmF0ZU1vZHVsZUJ5dGVjb2RlKFZN
JiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCitSZWY8
Q2FjaGVkQnl0ZWNvZGU+IGdlbmVyYXRlTW9kdWxlQnl0ZWNvZGUoVk0mIHZtLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIGludCBmZCwgUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBCeXRlY29k
ZUNhY2hlTWV0YWRhdGEqIG1ldGFkYXRhKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsK
ICAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3Vy
cmVudCgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwpAQCAtMTE3LDEwICsxMTgsMTAgQEAgUmVmPENh
Y2hlZEJ5dGVjb2RlPiBnZW5lcmF0ZU1vZHVsZUJ5dGVjb2RlKFZNJiB2bSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBQYXIKICAgICBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSA9IEpT
UGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlOwogICAgIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4
dFR5cGUgPSBFdmFsQ29udGV4dFR5cGU6Ok5vbmU7CiAKLSAgICBVbmxpbmtlZENvZGVCbG9jayog
dW5saW5rZWRDb2RlQmxvY2sgPSByZWN1cnNpdmVseUdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2s8
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPih2bSwgc291cmNlLCBzdHJpY3RNb2RlLCBz
Y3JpcHRNb2RlLCB7IH0sIGVycm9yLCBldmFsQ29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclRE
Wik7CisgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gcmVjdXJzaXZl
bHlHZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
az4odm0sIHNvdXJjZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgeyB9LCBlcnJvciwgZXZhbENv
bnRleHRUeXBlLCAmdmFyaWFibGVzVW5kZXJURFosIG1ldGFkYXRhKTsKICAgICBpZiAoIXVubGlu
a2VkQ29kZUJsb2NrKQogICAgICAgICByZXR1cm4gQ2FjaGVkQnl0ZWNvZGU6OmNyZWF0ZSgpOwot
ICAgIHJldHVybiBzZXJpYWxpemVCeXRlY29kZSh2bSwgdW5saW5rZWRDb2RlQmxvY2ssIHNvdXJj
ZSwgU291cmNlQ29kZVR5cGU6Ok1vZHVsZVR5cGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIHsg
fSk7CisgICAgcmV0dXJuIHNlcmlhbGl6ZUJ5dGVjb2RlKHZtLCB1bmxpbmtlZENvZGVCbG9jaywg
c291cmNlLCBTb3VyY2VDb2RlVHlwZTo6TW9kdWxlVHlwZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9k
ZSwgZmQsIHsgfSk7CiB9CiAKIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUgdGhpc1ZhbHVlLCBOYWtlZFB0cjxFeGNlcHRp
b24+JiByZXR1cm5lZEV4Y2VwdGlvbikKQEAgLTE0NCw2ICsxNDUsOCBAQCBKU1ZhbHVlIGV2YWx1
YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlIHRo
aXNWYWx1ZSwgTgogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKKyAgICB2
bS5jb2RlQ2FjaGUoKS0+d3JpdGUodm0pOworCiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tcGxldGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
cGxldGlvbi5oCmluZGV4IGQ1YTAyMzFiNzgwMTc1Yjg4NDIwZDZhZmY0YjNjMGE1MjRlZDE4NTEu
Ljg2ZjQyOTEwYjBhYWQ5YzUzM2UyZDYwZTRmMzRhOGVmMTdkZDUzNWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEJ5dGVjb2RlQ2FjaGVNZXRhZGF0YTsKIGNsYXNzIENhY2hl
ZEJ5dGVjb2RlOwogY2xhc3MgRXhjZXB0aW9uOwogY2xhc3MgRXhlY1N0YXRlOwpAQCAtNDIsOCAr
NDMsOCBAQCBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrU3ludGF4KFZNJiwgY29uc3QgU291
cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CiBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrU3lu
dGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlKiBleGNlcHRpb24gPSAw
KTsKIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiwg
Y29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CiAKLUpTX0VYUE9SVF9QUklWQVRFIFJl
ZjxDYWNoZWRCeXRlY29kZT4gZ2VuZXJhdGVQcm9ncmFtQnl0ZWNvZGUoVk0mLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUGFyc2VyRXJyb3ImKTsKLUpTX0VYUE9SVF9QUklWQVRFIFJlZjxDYWNoZWRCeXRl
Y29kZT4gZ2VuZXJhdGVNb2R1bGVCeXRlY29kZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJz
ZXJFcnJvciYpOworSlNfRVhQT1JUX1BSSVZBVEUgUmVmPENhY2hlZEJ5dGVjb2RlPiBnZW5lcmF0
ZVByb2dyYW1CeXRlY29kZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBpbnQgZmQsIFBhcnNlckVy
cm9yJiwgY29uc3QgQnl0ZWNvZGVDYWNoZU1ldGFkYXRhKiA9IG51bGxwdHIpOworSlNfRVhQT1JU
X1BSSVZBVEUgUmVmPENhY2hlZEJ5dGVjb2RlPiBnZW5lcmF0ZU1vZHVsZUJ5dGVjb2RlKFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIGludCBmZCwgUGFyc2VyRXJyb3ImLCBjb25zdCBCeXRlY29kZUNh
Y2hlTWV0YWRhdGEqID0gbnVsbHB0cik7CiAKIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZh
bHVhdGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBO
YWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CiBpbmxpbmUgSlNWYWx1ZSBl
dmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIEpT
VmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
VVVJRC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VVUlELmNwcAppbmRleCA4NTk2OGJmNTkxMTZkMTNj
YWQ5MjM5NmYzMzlmMjA0ZmUxZGMyMTUxLi4wNmYxNDI2ZTM3MzY3MmQ2YjhmOWI4ZjRhMzNjOTA1
MWE3YjVmNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VVUlELmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9VVUlELmNwcApAQCAtNzIsMTAgKzcyLDEyIEBAIFN0cmluZyBib290U2Vzc2lv
blVVSURTdHJpbmcoKQogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFtdIHsKICAgICAgICAg
c2l6ZV90IHV1aWRMZW5ndGggPSAzNzsKICAgICAgICAgY2hhciB1dWlkW3V1aWRMZW5ndGhdOwot
ICAgICAgICBpZiAoc3lzY3RsYnluYW1lKCJrZXJuLmJvb3RzZXNzaW9udXVpZCIsIHV1aWQsICZ1
dWlkTGVuZ3RoLCBudWxscHRyLCAwKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaW50
IHJlc3VsdCA9IHN5c2N0bGJ5bmFtZSgia2Vybi5ib290c2Vzc2lvbnV1aWQiLCB1dWlkLCAmdXVp
ZExlbmd0aCwgbnVsbHB0ciwgMCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQpOwog
ICAgICAgICBib290U2Vzc2lvblVVSUQuY29uc3RydWN0KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
Pih1dWlkKSwgdXVpZExlbmd0aCAtIDEpOwogICAgIH0pOworI2Vsc2UKKyAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCiAgICAgcmV0dXJuIGJvb3RTZXNzaW9uVVVJRDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggYmE2MDk3ZTliNzQ3MDgwZWM4MTA5NWZjMGMwZjgyODhiMDYx
NjgzMS4uNDc0NTU1Zjc2MmQ5Nzc3OTA5NzdhMGYzMGQ5N2JiYjg5ZTBmNDQwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTQzNCw2ICs0MzQsNyBAQCBhbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAogYmlu
ZGluZ3MvanMvSlNBdWRpb05vZGVDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVT
Y3JpcHRMb2FkZXIuY3BwCiBiaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmNwcAorYmlu
ZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuY3BwCiBiaW5kaW5ncy9qcy9DYWxs
VHJhY2VyLmNwcAogYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCiBiaW5kaW5ncy9qcy9ET01HQ091
dHB1dENvbnN0cmFpbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGRjZGM4NzRhN2I5NzdmYWE4NmVkMjQ3NDY2MTBkYjU4
OGIxZWY5My4uMjBlMmY5YmJhMmU5MTY0MTM0MDM5MmEzZDNlOWE1ZWFjMjk5ZTEzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MzgyMyw3ICszODIzLDcgQEAKIAkJQkNCMTZDMUMwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZElt
YWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Ix
NkMwMzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0IxNkMyMDA5NzlDM0JEMDA0Njc3NDEg
LyogQ2FjaGVkUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDQjE2QzA3MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQjE2QzIy
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMDkwOTc5QzNCRDAw
NDY3NzQxIC8qIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmggKi87IH07Ci0JCUJDQjE2QzI0
MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRTY3JpcHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2QzBCMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNo
ZWRTY3JpcHQuaCAqLzsgfTsKKwkJQkNCMTZDMjQwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFNj
cmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNC
MTZDMEIwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFNjcmlwdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQjE2QzI4MDk3OUMzQkQwMDQ2Nzc0
MSAvKiBDYWNoZWRYU0xTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwRjA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkWFNMU3R5
bGVTaGVldC5oICovOyB9OwogCQlCQ0IxNkMyQTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDQjE2QzExMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZUxvYWRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQjkyRDRG
MTI5MzU1MEIwMEM4Mzg3RiAvKiBGb250QmFzZWxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjkyRDRFMTI5MzU1MEIwMEM4Mzg3RiAvKiBGb250
QmFzZWxpbmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMjU5MjEsMTAgKzI1OTIxLDEwIEBACiAJCQkJQ0RFM0E4NTUxN0Y2MDIwNDAwQzVCRTIw
IC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbSAqLywKIAkJCQlDRDU0QTc2MDE4MEY5Rjcw
MDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwICovLAog
CQkJCUNENTRBNzYxMTgwRjlGNzAwMEIwNzZDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oICovLAotCQkJCUNERUNBODk5MUVERjQ0N0QwMERDQjA4QiAvKiBBVkFzc2V0
VHJhY2tVdGlsaXRpZXMuaCAqLywKLQkJCQlDREVDQTg5ODFFREY0NDdEMDBEQ0IwOEIgLyogQVZB
c3NldFRyYWNrVXRpbGl0aWVzLm1tICovLAogCQkJCTA3QzhBRDEyMUQwNzNENjMwMDg3QzVDRSAv
KiBBVkFzc2V0TUlNRVR5cGVDYWNoZS5oICovLAogCQkJCTA3QzhBRDExMUQwNzNENjMwMDg3QzVD
RSAvKiBBVkFzc2V0TUlNRVR5cGVDYWNoZS5tbSAqLywKKwkJCQlDREVDQTg5OTFFREY0NDdEMDBE
Q0IwOEIgLyogQVZBc3NldFRyYWNrVXRpbGl0aWVzLmggKi8sCisJCQkJQ0RFQ0E4OTgxRURGNDQ3
RDAwRENCMDhCIC8qIEFWQXNzZXRUcmFja1V0aWxpdGllcy5tbSAqLywKIAkJCQlDRDExQjNERjIy
N0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5oICovLAog
CQkJCUNEMTFCM0UwMjI3Q0FBQTkwMDIzQUZDNyAvKiBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlw
ZUNhY2hlLm1tICovLAogCQkJCUNENzhBMkVFMUY3NTY0ODYwMERFMzcxQiAvKiBDRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oICovLApAQCAtMjgyMzQsMTEgKzI4MjM0LDExIEBA
CiAJCQkJQzlENDY3MDUxRTYwQzQ2NTAwODE5NUZCIC8qIEF1dG9wbGF5RXZlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ1ODMwRDRFMTY3OUI0RjgwMEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDRkYwNEUwQTE1NEYwOTAwMEE0MjM0IC8qIEF1
dG9UYWJsZUxheW91dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDdGNEU5MzMyMEIzNTg3RjAwMkUz
ODAzIC8qIEFWQXNzZXRNSU1FVHlwZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREVDQTg5
QjFFREY0NDdEMDBEQ0IwOEIgLyogQVZBc3NldFRyYWNrVXRpbGl0aWVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDREM2NzUyNzFFQUVBOUQ0MDA3MjdDODQgLyogQVZBdWRpb1Nlc3Npb25DYXB0dXJl
RGV2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREM2NzUyMzFFQUVBOUI3MDA3MjdDODQgLyog
QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDcwMzYzRTIxODFBMUNEQzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTA3RjRFOTMzMjBCMzU4N0YwMDJFMzgwMyAvKiBBVkFzc2V0TUlNRVR5
cGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzMzZGNjIxN0Y5RjY0NzAwREREQ0QwIC8q
IEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MDM2M0U2
MTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMjlBRTIxMkQyMUFCOUVFQjAwODY5MjgzIC8qIEFYSXNvbGF0ZWRUcmVlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTMyNTc1LDEwICszMjU3NSwxMSBAQAogCQkJCUNERTNBODU3MTdGNjAyMDQw
MEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlDRDU0QTc2MjE4MEY5RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVGNkUxNkIxMzJFRDQ2RTAwOEVEQUUz
IC8qIEF1dG9jYXBpdGFsaXplLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3MTk0MjdGMUQwODhG
MjEwMDJBQTUxRCAvKiBBVkFzc2V0TUlNRVR5cGVDYWNoZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUNERUNBODlBMUVERjQ0N0QwMERDQjA4QiAvKiBBVkFzc2V0VHJhY2tVdGlsaXRpZXMubW0gaW4g
U291cmNlcyAqLywKIAkJCQlDREM2NzUyMjFFQUVBOUI3MDA3MjdDODQgLyogQVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3MDM2M0UzMTgx
QTFDREMwMEMwNzRBNSAvKiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJMDcxOTQyN0YxRDA4OEYyMTAwMkFBNTFEIC8qIEFWQXNzZXRNSU1FVHlwZUNhY2hlLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJQ0QxMUIzRTEyMjdDRTZGMzAwMjNBRkM3IC8qIEFWU3RyZWFt
RGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDMzNkY2MTE3
RjlGNjQ3MDBERERDRDAgLyogQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTA3MDM2M0U3MTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJj
ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdBNDUwMzJGMThEQjcxNzIwMDM3N0IzNCAvKiBCdWZm
ZXJlZExpbmVSZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMzAyMSw3ICszMzAyMiw2IEBA
CiAJCQkJREVDQTgwMzkxRjlGRUQ2QTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyNDguY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJREVDQTgwM0ExRjlGRUQ2QTAwRTNCNjYxIC8qIFVuaWZpZWRTb3Vy
Y2UyNDkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREVDQTgwM0IxRjlGRUQ2QTAwRTNCNjYxIC8q
IFVuaWZpZWRTb3VyY2UyNTAuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQ0QxMUIzRTEyMjdDRTZG
MzAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0gaW4gU291cmNl
cyAqLywKIAkJCQlERUNBODAzQzFGOUZFRDZBMDBFM0I2NjEgLyogVW5pZmllZFNvdXJjZTI1MS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlERUNBODAzRDFGOUZFRDZBMDBFM0I2NjEgLyogVW5pZmll
ZFNvdXJjZTI1Mi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlERUNBODAzRTFGOUZFRDZBMDBFM0I2
NjEgLyogVW5pZmllZFNvdXJjZTI1My5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKaW5kZXggN2M4N2Iy
MzkzOGU0MzNlNTA4YzBmYjgwYmU5YzllNmZkZTM4MjEwMy4uMWIzNmJjMzk3N2I5ZDhkNzdmMTdi
MzlhNTVlNzMyNGQzMGY3M2E2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKQEAgLTQyLDEwICs0MiwxMCBAQCBSZWY8Q2FjaGVk
U2NyaXB0RmV0Y2hlcj4gQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYg
Y2hhcnNldCkKIAogQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBDYWNoZWRTY3Jp
cHRGZXRjaGVyOjpyZXF1ZXN0TW9kdWxlU2NyaXB0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
VVJMJiBzb3VyY2VVUkwsIFN0cmluZyYmIGludGVncml0eSkgY29uc3QKIHsKLSAgICByZXR1cm4g
cmVxdWVzdFNjcmlwdFdpdGhDYWNoZShkb2N1bWVudCwgc291cmNlVVJMLCBTdHJpbmcgeyB9LCBX
VEZNb3ZlKGludGVncml0eSkpOworICAgIHJldHVybiByZXF1ZXN0U2NyaXB0V2l0aENhY2hlKGRv
Y3VtZW50LCBzb3VyY2VVUkwsIFdlYkNvcmU6OlNjcmlwdE1vZGU6Ok1vZHVsZSwgU3RyaW5nIHsg
fSwgV1RGTW92ZShpbnRlZ3JpdHkpKTsKIH0KIAotQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
U2NyaXB0PiBDYWNoZWRTY3JpcHRGZXRjaGVyOjpyZXF1ZXN0U2NyaXB0V2l0aENhY2hlKERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0IFN0cmluZyYgY3Jvc3NP
cmlnaW5Nb2RlLCBTdHJpbmcmJiBpbnRlZ3JpdHkpIGNvbnN0CitDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRTY3JpcHQ+IENhY2hlZFNjcmlwdEZldGNoZXI6OnJlcXVlc3RTY3JpcHRXaXRoQ2Fj
aGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgV2ViQ29yZTo6U2Ny
aXB0TW9kZSBzY3JpcHRNb2RlLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgU3RyaW5n
JiYgaW50ZWdyaXR5KSBjb25zdAogewogICAgIGlmICghZG9jdW1lbnQuc2V0dGluZ3MoKS5pc1Nj
cmlwdEVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01Niw2ICs1Niw3IEBA
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6
cmVxdWVzdFNjcmlwdFdpdGhDYWNoZShECiAgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xp
Y3lJbXBvc2l0aW9uID0gaGFzS25vd25Ob25jZSA/IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9z
aXRpb246OlNraXBQb2xpY3lDaGVjayA6IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246
OkRvUG9saWN5Q2hlY2s7CiAgICAgb3B0aW9ucy5zYW1lT3JpZ2luRGF0YVVSTEZsYWcgPSBTYW1l
T3JpZ2luRGF0YVVSTEZsYWc6OlNldDsKICAgICBvcHRpb25zLmludGVncml0eSA9IFdURk1vdmUo
aW50ZWdyaXR5KTsKKyAgICBvcHRpb25zLnNjcmlwdE1vZGUgPSBzY3JpcHRNb2RlOwogCiAgICAg
YXV0byByZXF1ZXN0ID0gY3JlYXRlUG90ZW50aWFsQWNjZXNzQ29udHJvbFJlcXVlc3Qoc291cmNl
VVJMLCBkb2N1bWVudCwgY3Jvc3NPcmlnaW5Nb2RlLCBXVEZNb3ZlKG9wdGlvbnMpKTsKICAgICBy
ZXF1ZXN0LnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChkb2N1bWVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmgKaW5kZXggZDUz
OTFjNjk3ZDdjZjRmNmY1ZDQwNzljYTI3MmVmNzdlYTljYWJhNy4uOTY5ZTY0M2IyZDg0MjhiMTAw
MDVlYmE2ODJiZTVlMzhkZDc2ZjVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuaApAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENhY2hlZFNjcmlwdDsKIGNsYXNzIERvY3VtZW50OworZW51bSBjbGFz
cyBTY3JpcHRNb2RlIDogdWludDhfdDsKIAogY2xhc3MgQ2FjaGVkU2NyaXB0RmV0Y2hlciA6IHB1
YmxpYyBKU0M6OlNjcmlwdEZldGNoZXIgewogcHVibGljOgpAQCAtNTQsNyArNTUsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgewogICAgIH0KIAotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNj
cmlwdD4gcmVxdWVzdFNjcmlwdFdpdGhDYWNoZShEb2N1bWVudCYsIGNvbnN0IFVSTCYgc291cmNl
VVJMLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgU3RyaW5nJiYgaW50ZWdyaXR5KSBj
b25zdDsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IHJlcXVlc3RTY3Jp
cHRXaXRoQ2FjaGUoRG9jdW1lbnQmLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgU2NyaXB0TW9kZSwg
Y29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUsIFN0cmluZyYmIGludGVncml0eSkgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbm9uY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDY0ZjAxOGY1NDNlOWY3MTM5ZDQ4Y2M4NTc3NTVkOGJmZGNhMjExNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVBy
b3ZpZGVyLmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNhY2hlZFNj
cmlwdFNvdXJjZVByb3ZpZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBDYWNo
ZWRTY3JpcHRTb3VyY2VQcm92aWRlcjo6Y2FjaGVCeXRlY29kZShjb25zdCBKU0M6OkJ5dGVjb2Rl
Q2FjaGVHZW5lcmF0b3ImKSBjb25zdAoreworICAgIG1fc2hvdWxkQ2FjaGUgPSB0cnVlOworICAg
IG1faGFzVXBkYXRlcyA9IHRydWU7Cit9CisKK3ZvaWQgQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlk
ZXI6OnVwZGF0ZUNhY2hlKGNvbnN0IEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBj
b25zdCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQsIGNvbnN0IEpTQzo6VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayopIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX3Nob3VsZENhY2hlKQorICAgICAgICByZXR1cm47CisgICAgbV9oYXNVcGRhdGVz
ID0gdHJ1ZTsKKyAgICBtX2J5dGVjb2RlQ2FjaGVNZXRhZGF0YS5yZWNvcmRDYWNoZWRGdW5jdGlv
bkNvZGVCbG9jayhzb3VyY2UsIGtpbmQpOworfQorCit2b2lkIENhY2hlZFNjcmlwdFNvdXJjZVBy
b3ZpZGVyOjpjb21taXRDYWNoZWRCeXRlY29kZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hhc1Vw
ZGF0ZXMpCisgICAgICAgIHJldHVybjsKKyAgICBtX2hhc1VwZGF0ZXMgPSBmYWxzZTsKKyAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+Y2FjaGVCeXRlY29kZUZvclNj
cmlwdCgqbV9jYWNoZWRTY3JpcHQsIG1fYnl0ZWNvZGVDYWNoZU1ldGFkYXRhKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgKaW5kZXggYWU0NDRjNjQ1MzZiMjM1Y2Ex
NjU3NDZkOTQwYTE3MGJjOTFjYWVhYi4uYmJiMzg4MWI5ZGZlYWUxYjUyM2JkNTZiMzQyNTIyMDU3
MmYwYTBhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2Ny
aXB0U291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNo
ZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksOSBAQAogI2luY2x1ZGUgIkNh
Y2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkU2NyaXB0RmV0Y2hlci5oIgorI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
Qnl0ZWNvZGVDYWNoZU1ldGFkYXRhLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU291cmNl
UHJvdmlkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsMTMgKzQzLDIxIEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgfkNhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyKCkKICAgICB7
CisgICAgICAgIGNvbW1pdENhY2hlZEJ5dGVjb2RlKCk7CiAgICAgICAgIG1fY2FjaGVkU2NyaXB0
LT5yZW1vdmVDbGllbnQoKnRoaXMpOwogICAgIH0KIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2NhY2hlZFNjcmlwdC0+c2NyaXB0SGFzaCgpOyB9CiAgICAg
U3RyaW5nVmlldyBzb3VyY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NhY2hlZFNjcmlw
dC0+c2NyaXB0KCk7IH0KKyAgICBSZWZQdHI8SlNDOjpDYWNoZWRCeXRlY29kZT4gY2FjaGVkQnl0
ZWNvZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NhY2hlZFNjcmlwdC0+Y2FjaGVkQnl0
ZWNvZGUoKTsgfQorICAgIHZvaWQgY29tbWl0Q2FjaGVkQnl0ZWNvZGUoKSBjb25zdCBvdmVycmlk
ZTsKKworICAgIHZvaWQgY2FjaGVCeXRlY29kZShjb25zdCBKU0M6OkJ5dGVjb2RlQ2FjaGVHZW5l
cmF0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUNhY2hlKGNvbnN0IEpTQzo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmLCBKU0M6
OkNvZGVTcGVjaWFsaXphdGlvbktpbmQsIGNvbnN0IEpTQzo6VW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayopIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgorICAgIHZvaWQgY29tbWl0Qnl0ZWNv
ZGVDYWNoZSgpOworCiAgICAgQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIoQ2FjaGVkU2NyaXB0
KiBjYWNoZWRTY3JpcHQsIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUs
IFJlZjxDYWNoZWRTY3JpcHRGZXRjaGVyPiYmIHNjcmlwdEZldGNoZXIpCiAgICAgICAgIDogU291
cmNlUHJvdmlkZXIoSlNDOjpTb3VyY2VPcmlnaW4geyBjYWNoZWRTY3JpcHQtPnJlc3BvbnNlKCku
dXJsKCksIFdURk1vdmUoc2NyaXB0RmV0Y2hlcikgfSwgVVJMKGNhY2hlZFNjcmlwdC0+cmVzcG9u
c2UoKS51cmwoKSksIFRleHRQb3NpdGlvbigpLCBzb3VyY2VUeXBlKQogICAgICAgICAsIG1fY2Fj
aGVkU2NyaXB0KGNhY2hlZFNjcmlwdCkKQEAgLTU0LDYgKzY1LDkgQEAgcHJpdmF0ZToKICAgICAg
ICAgbV9jYWNoZWRTY3JpcHQtPmFkZENsaWVudCgqdGhpcyk7CiAgICAgfQogCisgICAgbXV0YWJs
ZSBib29sIG1fc2hvdWxkQ2FjaGUgeyBmYWxzZSB9OworICAgIG11dGFibGUgYm9vbCBtX2hhc1Vw
ZGF0ZXMgeyBmYWxzZSB9OworICAgIG11dGFibGUgSlNDOjpCeXRlY29kZUNhY2hlTWV0YWRhdGEg
bV9ieXRlY29kZUNhY2hlTWV0YWRhdGE7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
U2NyaXB0PiBtX2NhY2hlZFNjcmlwdDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRh
YmxlQ2xhc3NpY1NjcmlwdC5jcHAKaW5kZXggZDkyN2U5NWJlMjY5YTI1YWU0MzM2YTc0YjAwMDI3
YzE3NThmZTQ4YS4uM2EyNTc3MTQwMzI1ZTE0ZTM0NDMyNjdjNDMxZmMzZDFiNDA5NGUxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAKQEAgLTEyNiw3
ICsxMjYsNyBAQCB2b2lkIExvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6ZXhlY3V0ZShTY3JpcHRFbGVt
ZW50JiBzY3JpcHRFbGVtZW50KQogYm9vbCBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmxvYWQoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHNvdXJjZVVSTCkKIHsKICAgICBBU1NFUlQoIW1f
Y2FjaGVkU2NyaXB0KTsKLSAgICBtX2NhY2hlZFNjcmlwdCA9IHJlcXVlc3RTY3JpcHRXaXRoQ2Fj
aGUoZG9jdW1lbnQsIHNvdXJjZVVSTCwgY3Jvc3NPcmlnaW5Nb2RlKCksIFN0cmluZyB7IG1faW50
ZWdyaXR5IH0pOworICAgIG1fY2FjaGVkU2NyaXB0ID0gcmVxdWVzdFNjcmlwdFdpdGhDYWNoZShk
b2N1bWVudCwgc291cmNlVVJMLCBXZWJDb3JlOjpTY3JpcHRNb2RlOjpDbGFzc2ljLCBjcm9zc09y
aWdpbk1vZGUoKSwgU3RyaW5nIHsgbV9pbnRlZ3JpdHkgfSk7CiAgICAgaWYgKCFtX2NhY2hlZFNj
cmlwdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fY2FjaGVkU2NyaXB0LT5hZGRDbGll
bnQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnRD
YWNoZWRTY3JpcHRGZXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50
Q2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKaW5kZXggODQzZGEyMDMxMjNjMTI4M2MwODliMzk2YmI2
MmI5YWU0YmQzNmM2Yi4uNWNjMmYxOWUxMTg1MzY2MmY1MTY3ZThjODYzMzk2OGVhNTM1ZTMwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnRDYWNoZWRTY3JpcHRG
ZXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudENhY2hlZFNj
cmlwdEZldGNoZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFNjcmlwdD4gU2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXI6OnJlcXVlc3RNb2R1
CiAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtZHluYW1pYy1pbXBvcnQv
YmxvYi9tYXN0ZXIvSFRNTCBJbnRlZ3JhdGlvbi5tZAogICAgIC8vIElmIHRoZSBmZXRjaGVyIGlz
IG5vdCBtb2R1bGUgc2NyaXB0LCBjcmVkZW50aWFsIG1vZGUgaXMgYWx3YXlzICJvbWl0Ii4KIAot
ICAgIHJldHVybiByZXF1ZXN0U2NyaXB0V2l0aENhY2hlKGRvY3VtZW50LCBzb3VyY2VVUkwsIGlz
Q2xhc3NpY1NjcmlwdCgpID8gIm9taXQiX3MgOiBtX2Nyb3NzT3JpZ2luTW9kZSwgV1RGTW92ZShp
bnRlZ3JpdHkpKTsKKyAgICByZXR1cm4gcmVxdWVzdFNjcmlwdFdpdGhDYWNoZShkb2N1bWVudCwg
c291cmNlVVJMLCBpc0NsYXNzaWNTY3JpcHQoKSA/IFdlYkNvcmU6OlNjcmlwdE1vZGU6OkNsYXNz
aWMgOiBXZWJDb3JlOjpTY3JpcHRNb2RlOjpNb2R1bGUsIGlzQ2xhc3NpY1NjcmlwdCgpID8gIm9t
aXQiX3MgOiBtX2Nyb3NzT3JpZ2luTW9kZSwgV1RGTW92ZShpbnRlZ3JpdHkpKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRl
ci5jcHAKaW5kZXggM2QwMDZhYjA0YmY1Mjg3NjRmOWYwYzg0NGFiZjQ2ZTBkNjM2MzFmZi4uNzQ4
YTMxZmUyN2VkMmIzZWM2MTdlZTljNGM0ZmQyMzU5MzZiNWM2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwCkBAIC01Myw2
ICs1MywxMiBAQCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgUHJlbG9hZFJlcXVlc3Q6OnJlc291cmNl
UmVxdWVzdChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9w
dGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9u
cygpOwogICAgIGlmIChza2lwQ29udGVudFNlY3VyaXR5UG9saWN5Q2hlY2spCiAgICAgICAgIG9w
dGlvbnMuY29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbiA9IENvbnRlbnRTZWN1cml0eVBv
bGljeUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVjazsKKyAgICBpZiAobV9yZXNvdXJjZVR5cGUg
PT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlNjcmlwdCkgeworICAgICAgICBpZiAobV9tb2R1bGVT
Y3JpcHQgPT0gTW9kdWxlU2NyaXB0OjpZZXMpCisgICAgICAgICAgICBvcHRpb25zLnNjcmlwdE1v
ZGUgPSBTY3JpcHRNb2RlOjpNb2R1bGU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG9wdGlv
bnMuc2NyaXB0TW9kZSA9IFNjcmlwdE1vZGU6OkNsYXNzaWM7CisgICAgfQogCiAgICAgU3RyaW5n
IGNyb3NzT3JpZ2luTW9kZSA9IG1fY3Jvc3NPcmlnaW5Nb2RlOwogICAgIGlmIChtX21vZHVsZVNj
cmlwdCA9PSBNb2R1bGVTY3JpcHQ6OlllcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xpbmtMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIu
Y3BwCmluZGV4IDkxODYxZTEzOTdlYWFmZTliMmRhZjBmOTZkM2FkYjVjYTkwNTBiYTEuLjNmNWQ1
MGM4ZDlmNDI4OWU5NjNiNjQxMTAyZTdhY2MzZWViOTA2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TGlua0xvYWRlci5jcHAKQEAgLTI0OCw2ICsyNDgsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGlua1By
ZWxvYWRSZXNvdXJjZUNsaWVudD4gTGlua0xvYWRlcjo6cHJlbG9hZElmTmVlZGVkKGNvbnN0IExp
bgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gb3B0aW9ucyA9IENhY2hlZFJl
c291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7CisgICAgaWYgKHR5
cGUudmFsdWUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6U2NyaXB0KQorICAgICAgICBvcHRp
b25zLnNjcmlwdE1vZGUgPSBTY3JpcHRNb2RlOjpDbGFzc2ljOworCiAgICAgYXV0byBsaW5rUmVx
dWVzdCA9IGNyZWF0ZVBvdGVudGlhbEFjY2Vzc0NvbnRyb2xSZXF1ZXN0KGRvY3VtZW50LmNvbXBs
ZXRlVVJMKGhyZWYpLCBkb2N1bWVudCwgY3Jvc3NPcmlnaW5Nb2RlLCBXVEZNb3ZlKG9wdGlvbnMp
KTsKICAgICBsaW5rUmVxdWVzdC5zZXRQcmlvcml0eShDYWNoZWRSZXNvdXJjZTo6ZGVmYXVsdFBy
aW9yaXR5Rm9yUmVzb3VyY2VUeXBlKHR5cGUudmFsdWUoKSkpOwogICAgIGxpbmtSZXF1ZXN0LnNl
dEluaXRpYXRvcigibGluayIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xv
YWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApp
bmRleCA4YTgyMzgxZjAxODE2NWU2NTNlM2M0YjI1NGU1Njk3YjYzYzA5ZjcwLi40ZWU3NjNhZTIz
Y2RiNDc3OTYyNTlhNjZjYzI4NWIxZDc1MDgzYTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9h
ZGVyU3RyYXRlZ3kuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zMiw5ICszMiwxNCBAQAogI2luY2x1ZGUgPHBhbC9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNz
IEJ5dGVjb2RlQ2FjaGVNZXRhZGF0YTsKK307CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ2FjaGVkUmVzb3VyY2U7CitjbGFzcyBDYWNoZWRTY3JpcHQ7CiBjbGFzcyBDb250ZW50U2Vj
dXJpdHlQb2xpY3k7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyOwpAQCAtNzQsNiAr
NzksOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyID0g
V1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlRXJyb3ImKT47CiAgICAgdmlydHVhbCB2
b2lkIHByZWNvbm5lY3RUbyhGcmFtZUxvYWRlciYsIGNvbnN0IFVSTCYsIFN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LCBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogCisgICAgdmly
dHVhbCB2b2lkIGNhY2hlQnl0ZWNvZGVGb3JTY3JpcHQoY29uc3QgQ2FjaGVkU2NyaXB0JiwgY29u
c3QgSlNDOjpCeXRlY29kZUNhY2hlTWV0YWRhdGEmKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQg
c2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNPbkxpbmUoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA4YjY2NjI4ZjYxY2RkYjQ3ZDZlNjQxMDhhMmNiNGQ3
MmVhMDMyYWI0Li5iZDJhZDAzZGNlYmQwMDJhNGEzNTNmOGYxYmU3MGY0ZTVhZmRjOWZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA3IEdyYWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5u
aXNAZ21haWwuY29tKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtODE4LDQgKzgxOCw4IEBAIGJvb2wg
UmVzb3VyY2VMb2FkZXI6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0CiAgICAgcmV0
dXJuIGZyYW1lTG9hZGVyKCkgJiYgZnJhbWVMb2FkZXIoKS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCk7CiB9CiAKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJldHJpZXZlRGVyaXZlZERhdGFG
cm9tQ2FjaGUoY29uc3QgU3RyaW5nJiwgU2hhcmVkQnVmZmVyJikKK3sKK30KKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCBkMTdlNThkNmJkMDQ0OTIyNWMxM2Ix
YTMzOGZkMTAxMGY1NzJlZWM2Li4xYjVkZmMwOTA2Njc0MmRkNTRjNTRkMjFmNjNmZmExOGRkNDI5
MDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwNiw2ICsx
MDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5
cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZShjb25z
dCBTdHJpbmcmIHR5cGUsIFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaAppbmRleCA5ZTMwNzRkYTMyMTFkMGVlOTdi
OGViMmVkZjQ5MTY5ZWM1ZGYyYTRhLi40ZTAxMDY0NTQ0YTM2ZmNkMDcxMDc0NDU4YTllY2FlMDM2
NjczNmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJP
cHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9u
cy5oCkBAIC0xMjcsNiArMTI3LDEyIEBAIGVudW0gY2xhc3MgTG9hZGVkRnJvbU9wYXF1ZVNvdXJj
ZSA6IHVpbnQ4X3QgewogICAgIE5vCiB9OwogCitlbnVtIGNsYXNzIFNjcmlwdE1vZGUgOiB1aW50
OF90IHsKKyAgICBOb25lLAorICAgIENsYXNzaWMsCisgICAgTW9kdWxlLAorfTsKKwogc3RydWN0
IFJlc291cmNlTG9hZGVyT3B0aW9ucyA6IHB1YmxpYyBGZXRjaE9wdGlvbnMgewogICAgIFJlc291
cmNlTG9hZGVyT3B0aW9ucygpIHsgfQogCkBAIC0xNzIsNiArMTc4LDcgQEAgc3RydWN0IFJlc291
cmNlTG9hZGVyT3B0aW9ucyA6IHB1YmxpYyBGZXRjaE9wdGlvbnMgewogICAgIENsaWVudENyZWRl
bnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSB7IENsaWVudENyZWRlbnRpYWxQb2xp
Y3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzIH07CiAgICAgUHJlZmxpZ2h0UG9saWN5
IHByZWZsaWdodFBvbGljeSB7IFByZWZsaWdodFBvbGljeTo6Q29uc2lkZXIgfTsKICAgICBMb2Fk
ZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVTb3VyY2UgeyBMb2FkZWRGcm9tT3Bh
cXVlU291cmNlOjpObyB9OworICAgIFNjcmlwdE1vZGUgc2NyaXB0TW9kZSB7IFNjcmlwdE1vZGU6
Ok5vbmUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDM2YjA2YmI4OTE4MDRiNzhhZmYyNTc3
NTIzNTNmYzVlYzhkMGQyYTkuLjlhYmRlOGViOWY2Zjc0NGVmNzIxOTA0N2M5ZTY4YWVkNzYzZjMy
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAt
NzUxLDYgKzc1MSwxMyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRDYW5jZWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpCiAgICAgbm90aWZ5RG9uZShMb2FkQ29tcGxldGlvblR5cGU6OkNhbmNl
bCk7CiB9CiAKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJldHJpZXZlRGVyaXZlZERhdGFG
cm9tQ2FjaGUoY29uc3QgU3RyaW5nJiB0eXBlLCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3sKKyAg
ICBpZiAobV9zdGF0ZSAhPSBJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcmVz
b3VyY2UtPmRpZFJldHJpZXZlRGVyaXZlZERhdGFGcm9tQ2FjaGUodHlwZSwgYnVmZmVyKTsKK30K
Kwogdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6bm90aWZ5RG9uZShMb2FkQ29tcGxldGlvblR5cGUg
dHlwZSkKIHsKICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKaW5kZXggZGVjOGQwYmFjY2NmN2I1ODVlOGI3ZDA4
ZjdjNWJkOTJkNjIxMjcwYy4uYWY0NDBkYTczMjYxMTkwMWU1ODU3YjMyMjA0MjAxYTRjNjNlYzBh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03OSw2
ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZFJldHJpZXZlRGVyaXZlZERhdGFGcm9tQ2FjaGUoY29uc3QgU3RyaW5n
JiB0eXBlLCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICAKICAgICB2b2lkIHVwZGF0ZVJl
ZmVycmVyUG9saWN5KGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhy
ZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMmI3YmY0MjlkZDYyMmZjNzI3ZTEwMTMwMmVmZmVlZGQ1
ZTRjMzg0Ny4uNjU3NDYwNmMwMDZlYzc1NjFjMTZhZWY1YTFmZjIwODdkMjZiZTlmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtOTAsNiArOTAsNyBA
QCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBUaHJlYWRhYmxlTG9hZGVyT3B0aW9uczo6aXNvbGF0
ZWRDb3B5KCkgY29uc3QKICAgICBjb3B5LmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPSB0aGlzLT5j
bGllbnRDcmVkZW50aWFsUG9saWN5OwogICAgIGNvcHkubWF4UmVkaXJlY3RDb3VudCA9IHRoaXMt
Pm1heFJlZGlyZWN0Q291bnQ7CiAgICAgY29weS5wcmVmbGlnaHRQb2xpY3kgPSB0aGlzLT5wcmVm
bGlnaHRQb2xpY3k7CisgICAgY29weS5zY3JpcHRNb2RlID0gdGhpcy0+c2NyaXB0TW9kZTsKIAog
ICAgIC8vIFRocmVhZGFibGVMb2FkZXJPcHRpb25zCiAgICAgY29weS5jb250ZW50U2VjdXJpdHlQ
b2xpY3lFbmZvcmNlbWVudCA9IHRoaXMtPmNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCA5
YmY1MWUwYjIyNzQ0YWE2MmU3NzVkOWVlNzU1MzdmMzFiYTg4MjA0Li5jN2E0OGZhNzk0ZDE3NzUy
NTdlYWM5NDQ1OWQ0ZjMwMTAxOWNkMTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMjcwLDYgKzI3MCw4IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50ICov
LCB1bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRlc1RvQmVTZW50ICovKSB7IH0KIAorICAg
IHZpcnR1YWwgdm9pZCBkaWRSZXRyaWV2ZURlcml2ZWREYXRhRnJvbUNhY2hlKGNvbnN0IFN0cmlu
ZyYgLyogdHlwZSAqLywgU2hhcmVkQnVmZmVyJikgeyB9CisKICNpZiBVU0UoRk9VTkRBVElPTikg
fHwgVVNFKFNPVVApCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERh
dGEoU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggMWJiZDQ0NDY5MjA3YzI0NjYyMjJkZDIzNWZhMjNmOWIy
MmZkZGE2Ny4uNTk4MzI2ZWRhMWUxMjRkODhhMzlhMTYyOWYxYmMyZWNjZDkzY2IxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTMsNyArMyw3
IEBACiAgICAgQ29weXJpZ2h0IChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3Jn
KQogICAgIENvcHlyaWdodCAoQykgMjAwMiBXYWxkbyBCYXN0aWFuIChiYXN0aWFuQGtkZS5vcmcp
CiAgICAgQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgKHNhbS53ZWluaWdAZ21haWwu
Y29tKQotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
IAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlJ1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrcy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUg
IlRleHRSZXNvdXJjZURlY29kZXIuaCIKKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC04OSw2ICs5MCwxMSBAQCBTdHJpbmdWaWV3IENhY2hlZFNjcmlw
dDo6c2NyaXB0KCkKICAgICByZXR1cm4gbV9zY3JpcHQ7CiB9CiAKK1JlZlB0cjxKU0M6OkNhY2hl
ZEJ5dGVjb2RlPiBDYWNoZWRTY3JpcHQ6OmNhY2hlZEJ5dGVjb2RlKCkKK3sKKyAgICByZXR1cm4g
bV9jYWNoZWRCeXRlY29kZTsKK30KKwogdW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNo
KCkKIHsKICAgICBpZiAobV9kZWNvZGluZ1N0YXRlID09IE5ldmVyRGVjb2RlZCkKQEAgLTEwMyw2
ICsxMDksNDEgQEAgdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhKQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEpOwogfQogCit2
b2lkIENhY2hlZFNjcmlwdDo6ZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZShjb25zdCBT
dHJpbmcmIHR5cGUsIFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKQoreworI2lmIE9TKERBUldJ
TikKKyAgICBBU1NFUlRfVU5VU0VEKHR5cGUsIHR5cGUgPT0gImJ5dGVjb2RlLWNhY2hlIik7CisK
KyAgICBTdHJpbmcgZmlsZW5hbWUgPSBTdHJpbmcoc2hhcmVkQnVmZmVyLmRhdGEoKSwgc2hhcmVk
QnVmZmVyLnNpemUoKSk7CisKKyAgICBkYXRhTG9nTG4oIlJlYWRpbmcgY2FjaGUgZnJvbTogIiwg
ZmlsZW5hbWUpOworCisgICAgaW50IGZkID0gb3BlbihmaWxlbmFtZS5hc2NpaSgpLmRhdGEoKSwg
T19SRE9OTFkgfCBPX1NITE9DSyB8IE9fTk9OQkxPQ0spOworICAgIGlmIChmZCA9PSAtMSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byBjbG9zZUZEID0gbWFrZVNjb3BlRXhpdChbJl0gewor
ICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIHVubGluayhmaWxlbmFtZS5hc2NpaSgpLmRhdGEo
KSk7CisgICAgfSk7CisKKyAgICBzdHJ1Y3Qgc3RhdCBzYjsKKyAgICBpbnQgcmVzID0gZnN0YXQo
ZmQsICZzYik7CisgICAgc2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNiLnN0X3Np
emUpOworICAgIGlmIChyZXMgfHwgIXNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIHZvaWQq
IGJ1ZmZlciA9IG1tYXAobnVsbHB0ciwgc2l6ZSwgUFJPVF9SRUFELCBNQVBfUFJJVkFURSwgZmQs
IDApOworICAgIGlmIChidWZmZXIgPT0gTUFQX0ZBSUxFRCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9jYWNoZWRCeXRlY29kZSA9IEpTQzo6Q2FjaGVkQnl0ZWNvZGU6OmNyZWF0ZShidWZmZXIs
IHNpemUpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgVU5VU0VEX1BBUkFN
KHNoYXJlZEJ1ZmZlcik7CisjZW5kaWYKK30KKwogdm9pZCBDYWNoZWRTY3JpcHQ6OmRlc3Ryb3lE
ZWNvZGVkRGF0YSgpCiB7CiAgICAgbV9zY3JpcHQgPSBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCBkZDZmYmNjMzY4NzgxMWRmMDZlYzFj
ZTI4NDMxZjM4OGEzZDYwMDNjLi41OGJiMjAzNGI0MjM2NzI4OTM3MTk3NmI5OTkyNjU2ZGQ2MDBk
ZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCkBAIC0y
LDcgKzIsNyBAQAogICAgIENvcHlyaWdodCAoQykgMTk5OCBMYXJzIEtub2xsIChrbm9sbEBtcGkt
aGQubXBnLmRlKQogICAgIENvcHlyaWdodCAoQykgMjAwMSBEaXJrIE11ZWxsZXIgPG11ZWxsZXJA
a2RlLm9yZz4KICAgICBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyAoc2FtLndlaW5p
Z0BnbWFpbC5jb20pCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU291cmNlUHJvdmlkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNyw2ICsz
OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYWNoZWRTY3JpcHQoKTsKIAogICAgIFN0cmlu
Z1ZpZXcgc2NyaXB0KCk7CisgICAgUmVmUHRyPEpTQzo6Q2FjaGVkQnl0ZWNvZGU+IGNhY2hlZEJ5
dGVjb2RlKCk7CiAgICAgdW5zaWduZWQgc2NyaXB0SGFzaCgpOwogCiBwcml2YXRlOgpAQCAtNDgs
MTIgKzUwLDE0IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7
CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQogICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJldHJpZXZlRGVyaXZlZERh
dGFGcm9tQ2FjaGUoY29uc3QgU3RyaW5nJiwgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAKICAgICB2
b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZy
b20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NjcmlwdDsK
KyAgICBSZWZQdHI8SlNDOjpDYWNoZWRCeXRlY29kZT4gbV9jYWNoZWRCeXRlY29kZTsKICAgICB1
bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07CiAKICAgICBlbnVtIERlY29kaW5nU3RhdGUgeyBO
ZXZlckRlY29kZWQsIERhdGFBbmREZWNvZGVkU3RyaW5nSGF2ZVNhbWVCeXRlcywgRGF0YUFuZERl
Y29kZWRTdHJpbmdIYXZlRGlmZmVyZW50Qnl0ZXMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggZGM3NGE2MTNiOWQ5YzRjNDg5ZDY3MWUzMGFhOGE2NzM0NjA0NTVmYi4uMjk5NmEy
YjkxOWZlNThhYzU4OWFkZGUxNzIwMDA0YWMxYjE4MGUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTYwMiw2ICs2MDIsMTIgQEAgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCYg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmJsb2JSZWdpc3RyeSgpCiAgICAgcmV0dXJu
IG1fbmV0d29ya1Byb2Nlc3MtPm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5ibG9iUmVnaXN0cnkoKTsK
IH0KIAordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2FjaGVCeXRlY29kZUZv
clJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBK
U0M6OkJ5dGVjb2RlQ2FjaGVNZXRhZGF0YSYgbWV0YWRhdGEpCit7CisgICAgaWYgKGF1dG8qIGJ5
dGVjb2RlQ2FjaGUgPSBtX25ldHdvcmtQcm9jZXNzLT5ieXRlY29kZUNhY2hlKCkpCisgICAgICAg
IGJ5dGVjb2RlQ2FjaGUtPnN0b3JlTWV0YWRhdGFGb3JSZXF1ZXN0KHJlcXVlc3QsIG1ldGFkYXRh
KTsKK30KKwogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q2FwdHVyZUV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV9jYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkID0gZW5hYmxlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAppbmRleCBjNjllMzI1ZTYxOGU5Y2U4NmJhOGFmMmMzMTAzNmVhZWFlYzEyYTBm
Li43ODgyMTIyZmMyZTA2ZTY4NmYwYjA5MzVlMzEyNTBiMzYyOTgyNzUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCkBAIC0xODUsNiArMTg1LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVn
aXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYpOwogICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5
RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKIAorICAgIHZvaWQgY2FjaGVCeXRlY29kZUZvclJl
cXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgSlNDOjpCeXRlY29k
ZUNhY2hlTWV0YWRhdGEmKTsKKwogICAgIHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRN
ZXRyaWNzRW5hYmxlZChib29sKTsKIAogICAgIHZvaWQgY3JlYXRlU29ja2V0U3RyZWFtKFVSTCYm
LCBQQUw6OlNlc3Npb25JRCwgU3RyaW5nIGNhY2hlUGFydGl0aW9uLCB1aW50NjRfdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAxNmVkMzRhZDk4Nzg5
MDQxODM3MWEzOWNhZGU2NDg2ZjM3MWQ2Y2UzLi4xZWIzZjQ5ZGJmN2VhNzU4NGRlZDBjOGRkMTNj
ZjYzYzA3ZGY5MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KQEAgLTQ5LDYgKzQ5LDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIEJsb2JTaXplKFVSTCB1cmwpIC0+ICh1aW50NjRf
dCByZXN1bHRTaXplKSBTeW5jaHJvbm91cwogICAgIFdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVz
KFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxzKSAtPiAoVmVjdG9yPFN0cmluZz4gZmlsZU5hbWVzKSBB
c3luYwogCisgICAgQ2FjaGVCeXRlY29kZUZvclJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QsIEpTQzo6Qnl0ZWNvZGVDYWNoZU1ldGFkYXRhIG1ldGFkYXRhKQorCiAgICAg
U2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sIGVuYWJsZWQpCiAK
ICAgICBDcmVhdGVTb2NrZXRTdHJlYW0oVVJMIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBTdHJpbmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZDAxYmM3NzUxYmM4
YWFlNjMwMzAyMjNhNGI0N2VhODkwODlkOThkZi4uMGFmZDFjYWQxYjllNWNlZDBiOTE4M2UyYjg2
MzU4N2E0M2FjMTE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJB
dXhpbGlhcnlQcm9jZXNzLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVDYWNoZS5oIgogI2luY2x1ZGUg
IkNhY2hlTW9kZWwuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJO
ZXR3b3JrQmxvYlJlZ2lzdHJ5LmgiCkBAIC0xNTksNiArMTYwLDcgQEAgcHVibGljOgogICAgIERv
d25sb2FkTWFuYWdlciYgZG93bmxvYWRNYW5hZ2VyKCk7CiAKICAgICBOZXR3b3JrQ2FjaGU6OkNh
Y2hlKiBjYWNoZSgpIHsgcmV0dXJuIG1fY2FjaGUuZ2V0KCk7IH0KKyAgICBCeXRlY29kZUNhY2hl
KiBieXRlY29kZUNhY2hlKCkgeyByZXR1cm4gbV9ieXRlY29kZUNhY2hlLmdldCgpOyB9CiAKICAg
ICB2b2lkIHNldFNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBSZWY8TmV0d29ya1Nlc3Np
b24+JiYpOwogICAgIE5ldHdvcmtTZXNzaW9uKiBuZXR3b3JrU2Vzc2lvbihjb25zdCBQQUw6OlNl
c3Npb25JRCYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNDc5LDYgKzQ4MSw3IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4+IG1fd2ViUHJvY2Vz
c0Nvbm5lY3Rpb25zOwogCiAgICAgU3RyaW5nIG1fZGlza0NhY2hlRGlyZWN0b3J5OworICAgIFN0
cmluZyBtX2J5dGVjb2RlQ2FjaGVEaXJlY3Rvcnk7CiAgICAgYm9vbCBtX2hhc1NldENhY2hlTW9k
ZWwgeyBmYWxzZSB9OwogICAgIENhY2hlTW9kZWwgbV9jYWNoZU1vZGVsIHsgQ2FjaGVNb2RlbDo6
RG9jdW1lbnRWaWV3ZXIgfTsKICAgICBib29sIG1fc3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRs
ZXIgeyBmYWxzZSB9OwpAQCAtNDkwLDYgKzQ5Myw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxQ
QUw6OlNlc3Npb25JRCwgUmVmPENhY2hlU3RvcmFnZTo6RW5naW5lPj4gbV9jYWNoZUVuZ2luZXM7
CiAKICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKKyAgICBSZWZQdHI8
Qnl0ZWNvZGVDYWNoZT4gbV9ieXRlY29kZUNhY2hlOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPGNv
bnN0IGNoYXIqLCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50PiwgUHRy
SGFzaDxjb25zdCBjaGFyKj4+IE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudE1hcDsKICAgICBOZXR3
b3JrUHJvY2Vzc1N1cHBsZW1lbnRNYXAgbV9zdXBwbGVtZW50czsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHAKaW5kZXggNDA1OTMxOTlhZTQzNTNiZjE2MDE2OTliZDVjZTEyYzA4Mjdh
NmMwZC4uMWE3ZTg1OWQyN2U2NzJlZWU1MzI2NjhlNGEzMzI3ZTI0YmZmMTM3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTQ1LDYgKzQ1LDggQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKICAgICBlbmNvZGVyIDw8IGNhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9u
OwogICAgIGVuY29kZXIgPDwgZGlza0NhY2hlRGlyZWN0b3J5OwogICAgIGVuY29kZXIgPDwgZGlz
a0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGVuY29kZXIgPDwgYnl0ZWNvZGVD
YWNoZURpcmVjdG9yeTsKKyAgICBlbmNvZGVyIDw8IGJ5dGVjb2RlQ2FjaGVEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJ
REFUSU9OKQogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVSZXZhbGlkYXRpb247CiAjZW5kaWYKQEAgLTExMCw2ICsxMTIsMTUgQEAgYm9vbCBOZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
TmV0d29ya1Byb2MKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3VsdC5kaXNrQ2FjaGVE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpkaXNrQ2FjaGVEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpOwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuYnl0ZWNvZGVD
YWNoZURpcmVjdG9yeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIE9wdGlvbmFsPFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZT4gYnl0ZWNvZGVDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKKyAgICBkZWNvZGVyID4+IGJ5dGVjb2RlQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGU7CisgICAgaWYgKCFieXRlY29kZUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0LmJ5dGVjb2RlQ2FjaGVEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpieXRlY29kZUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKKwogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElP
TikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zaG91bGRFbmFibGVOZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCAyMDNiZTY5ZGRhYzAxNjBhNjM5MDFmYWVlZWQz
ZDNlYzM3OTRjODI5Li41MWJkYTI4ZDc5MTNhOTZkMTlkYzhmYWFmMzM5NjJhY2QwNzFlMTlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC01Niw2ICs1Niw4IEBAIHN0cnVjdCBO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBTdHJpbmcgZGlza0NhY2hl
RGlyZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBkaXNrQ2FjaGVEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGU7CisgICAgU3RyaW5nIGJ5dGVjb2RlQ2FjaGVEaXJlY3Rvcnk7Cisg
ICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGJ5dGVjb2RlQ2FjaGVEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGU7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFU
SU9OKQogICAgIGJvb2wgc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlk
YXRpb24geyBmYWxzZSB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4
IDU4YWFjYjk5M2RiOThhY2NkYTY1MjJkOTU2NGM5ZWFhODk0YmRhODEuLmUxZjVmNzA0NTkzMzg5
ZjVkMTlhNDZiOGU2MDllY2Y0ODllMWFkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3Bw
CkBAIC05Niw2ICs5Niw4IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBmcmFtZUFu
Y2VzdG9yT3JpZ2luczsKICAgICBlbmNvZGVyIDw8IGlzSFRUUFNVcGdyYWRlRW5hYmxlZDsKIAor
ICAgIGVuY29kZXIuZW5jb2RlRW51bShzY3JpcHRNb2RlKTsKKwogI2lmIEVOQUJMRShDT05URU5U
X0VYVEVOU0lPTlMpCiAgICAgZW5jb2RlciA8PCBtYWluRG9jdW1lbnRVUkw7CiAgICAgZW5jb2Rl
ciA8PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwpAQCAtMjEyLDYgKzIxNCw5IEBA
IGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIsIE5ldHdvcmtSZXNvdXJjCiAgICAgaWYgKCFpc0hUVFBTVXBncmFkZUVuYWJsZWQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXN1bHQuaXNIVFRQU1VwZ3JhZGVFbmFibGVk
ID0gKmlzSFRUUFNVcGdyYWRlRW5hYmxlZDsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVt
KHJlc3VsdC5zY3JpcHRNb2RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogI2lmIEVO
QUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
bWFpbkRvY3VtZW50VVJMKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCBiMDVmZjgwM2Yx
NzE5MGFkZTMxOWNkYTA2M2RhMDMxNDA2ZTRmMzc2Li4xZGJjYzg1M2IxN2FmMjQxYmYyZjI3Yjk2
Njg5NDE2NzZmZTY1NGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9GZXRjaE9wdGlvbnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
TG9hZGVyT3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNp
bmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogCkBAIC02MCw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICBi
b29sIHNob3VsZEVuYWJsZUNyb3NzT3JpZ2luUmVzb3VyY2VQb2xpY3kgeyBmYWxzZSB9OwogICAg
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiBmcmFtZUFuY2VzdG9yT3Jp
Z2luczsKICAgICBib29sIGlzSFRUUFNVcGdyYWRlRW5hYmxlZCB7IGZhbHNlIH07CisgICAgV2Vi
Q29yZTo6U2NyaXB0TW9kZSBzY3JpcHRNb2RlIHsgV2ViQ29yZTo6U2NyaXB0TW9kZTo6Tm9uZSB9
OwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBVUkwgbWFpbkRvY3VtZW50
VVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IDhhYjA0NjZkODJmYTRiODRkYmNlMWZmYTI5MzBhODY0OWQx
MTc2ODUuLjY4OTdkMDM4MmE1NTgzOGZhZWVmMzY1ZGFiNGQyNzgyODMyNDBmZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aCIKIAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJEZXJpdmVkRGF0YS5o
IgogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtDYWNoZS5oIgpAQCAtOTksNiArMTAwLDcgQEAgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMmJiBwYXIKICAgICAsIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgeyBt
X3BhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9s
aWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFscyB9CiAgICAgLCBtX2J1ZmZlcmluZ1RpbWVy
IHsgKnRoaXMsICZOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQgfQog
ICAgICwgbV9jYWNoZSB7IHNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkgPyBudWxscHRyIDogY29u
bmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLmNhY2hlKCkgfQorICAgICwgbV9ieXRlY29kZUNhY2hl
IHsgc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSA/IG51bGxwdHIgOiBjb25uZWN0aW9uLm5ldHdv
cmtQcm9jZXNzKCkuYnl0ZWNvZGVDYWNoZSgpIH0KICAgICAsIG1fc2hvdWxkQ2FwdHVyZUV4dHJh
TmV0d29ya0xvYWRNZXRyaWNzKG1fY29ubmVjdGlvbi0+Y2FwdHVyZUV4dHJhTmV0d29ya0xvYWRN
ZXRyaWNzRW5hYmxlZCgpKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC0x
NDMsNiArMTQ1LDE4IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5Vc2VDYWNoZShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK2Jvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5Vc2VCeXRlY29kZUNhY2hlKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYnl0ZWNvZGVD
YWNoZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVCghc2Vzc2lvbklEKCkuaXNF
cGhlbWVyYWwoKSk7CisKKyAgICBpZiAoIWNhblVzZUNhY2hlKHJlcXVlc3QpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmNhblVzZUNhY2hlZFJlZGlyZWN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkgY29uc3QKIHsKICAgICBpZiAoIWNhblVzZUNhY2hlKHJlcXVlc3QpIHx8IG1fY2FjaGVF
bnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb24pCkBAIC00NzIsMTQgKzQ4NiwxNSBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2Um
JiByZWNlaXZlZFJlc3BvbgogICAgIC8vIFdlIHdhaXQgdG8gcmVjZWl2ZSBtZXNzYWdlIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgYmVmb3JlIGNvbnRp
bnVpbmcgYSBsb2FkIGZvcgogICAgIC8vIGEgbWFpbiByZXNvdXJjZSBiZWNhdXNlIHRoZSBlbWJl
ZGRpbmcgY2xpZW50IG11c3QgZGVjaWRlIHdoZXRoZXIgdG8gYWxsb3cgdGhlIGxvYWQuCiAgICAg
Ym9vbCB3aWxsV2FpdEZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlID0gaXNNYWluUmVzb3Vy
Y2UoKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJl
c3BvbnNlIHsgcmVzcG9uc2UsIHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Ug
fSk7CiAKICAgICBpZiAod2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSkgewor
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3Bv
bnNlIHsgcmVzcG9uc2UsIHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UsIHsg
fSB9KTsKICAgICAgICAgbV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobV9pc0tl
cHRBbGl2ZSkgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlk
UmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2UsIHsgfSB9KTsKICAgICAgICAgbV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CiAgICAgICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5kaWRGaW5pc2hMb2FkaW5nKE5ldHdvcmtMb2FkTWV0cmljcyB7IH0pOwpAQCAt
NDg3LDcgKzUwMiwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOworICAg
IGxvYWRCeXRlY29kZUNhY2hlKHJlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLCBbbG9h
ZGVyID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSldKFZlY3RvcjxJUEM6OkRl
cml2ZWREYXRhPiYmIGRlcml2ZWREYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGxvYWRlci0+
aGFzT25lUmVmKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGxvYWRlci0+c2VuZChN
ZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNl
LCBmYWxzZSwgV1RGTW92ZShkZXJpdmVkRGF0YSkgfSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFBvbGljeUFjdGlvbjo6VXNlKTsKKyAgICB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQpAQCAtODMzLDE2ICs4NTMsNDEgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJldHJpZXZlQ2FjaGVFbnRyeShzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya0NhY2hlOjoKICAgICB9CiAKICAgICBib29sIG5lZWRzQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlID0gaXNNYWluUmVzb3VyY2UoKTsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRz
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0pOwogCi0gICAgaWYgKG5lZWRzQ29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQotICAgICAgICBtX2NhY2hlRW50cnlXYWl0
aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgPSBXVEZNb3ZlKGVudHJ5KTsKKyAgICBp
ZiAoIW5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQorICAgICAgICBwcm9j
ZXNzQ2FjaGVkRW50cnlBZnRlckRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKGVudHJ5KSk7CiAg
ICAgZWxzZSB7Ci0gICAgICAgIHNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5KFdURk1vdmUoZW50cnkp
KTsKLSAgICAgICAgY2xlYW51cChMb2FkUmVzdWx0OjpTdWNjZXNzKTsKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNl
LCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSwgeyB9IH0pOworICAgICAg
ICBtX2NhY2hlRW50cnlXYWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgPSBXVEZN
b3ZlKGVudHJ5KTsKICAgICB9CiB9CiAKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2Fk
Qnl0ZWNvZGVDYWNoZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxJUEM6OkRlcml2ZWREYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBpZiAoIWJ1ZmZlciB8fCBtX3BhcmFtZXRlcnMuc2NyaXB0TW9kZSA9PSBXZWJDb3JlOjpT
Y3JpcHRNb2RlOjpOb25lIHx8ICFjYW5Vc2VCeXRlY29kZUNhY2hlKG9yaWdpbmFsUmVxdWVzdCgp
KSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgbV9ieXRlY29kZUNhY2hlLT5ieXRlY29kZUZvclJlcXVlc3Qob3JpZ2luYWxS
ZXF1ZXN0KCksIG1fcGFyYW1ldGVycy5zY3JpcHRNb2RlLCBidWZmZXIsIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3Qgc2l6ZSkgbXV0YWJsZSB7CisgICAgICAgIFZlY3RvcjxJUEM6OkRlcml2ZWREYXRhPiBk
ZXJpdmVkRGF0YTsKKyAgICAgICAgaWYgKGRhdGEpCisgICAgICAgICAgICBkZXJpdmVkRGF0YS5h
cHBlbmQoSVBDOjpEZXJpdmVkRGF0YSB7ICJieXRlY29kZS1jYWNoZSIsIElQQzo6RGF0YVJlZmVy
ZW5jZSB7IGRhdGEsIHNpemUgfSB9KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShkZXJpdmVkRGF0YSkpOworICAgIH0pOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6cHJvY2Vzc0NhY2hlZEVudHJ5QWZ0ZXJEaWRSZWNlaXZlUmVzcG9uc2Uoc3RkOjp1bmlxdWVf
cHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IGVudHJ5KQoreworICAgIGxvYWRCeXRlY29kZUNhY2hl
KGVudHJ5LT5yZXNwb25zZSgpLCBlbnRyeS0+YnVmZmVyKCksIFtsb2FkZXIgPSBtYWtlUmVmKCp0
aGlzKSwgZW50cnkgPSBXVEZNb3ZlKGVudHJ5KV0oVmVjdG9yPElQQzo6RGVyaXZlZERhdGE+JiYg
ZGVyaXZlZERhdGEpIG11dGFibGUgeworICAgICAgICBpZiAobG9hZGVyLT5oYXNPbmVSZWYoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbG9hZGVyLT5zZW5kKE1lc3NhZ2VzOjpXZWJS
ZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgZW50cnktPnJlc3BvbnNlKCksIGZh
bHNlLCBXVEZNb3ZlKGRlcml2ZWREYXRhKSB9KTsKKyAgICAgICAgbG9hZGVyLT5zZW5kUmVzdWx0
Rm9yQ2FjaGVFbnRyeShXVEZNb3ZlKGVudHJ5KSk7CisgICAgICAgIGxvYWRlci0+Y2xlYW51cChM
b2FkUmVzdWx0OjpTdWNjZXNzKTsKKyAgICB9KTsKK30KKwogdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2Fj
aGU6OkVudHJ5PiBlbnRyeSkKIHsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgKaW5kZXggYzdkZTNjMGMxZjNkZDRjYTlmNzNjZmUwMDUyNGUzNjlhODIyNGMwZi4uZmMxMTI5
YTEyZmQwNDM4Zjc2NDAwZDA1OWU4NmQyNzAzZjA2ZGExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsNiAr
MjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkJ5dGVjb2RlQ2FjaGUuaCIKICNp
bmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1
ZGUgIk5ldHdvcmtDYWNoZS5oIgpAQCAtNDQsNiArNDUsMTAgQEAgY2xhc3MgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogfQogCituYW1lc3BhY2UgSVBDIHsK
K2NsYXNzIERlcml2ZWREYXRhOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CkBAIC0xMjQsNiArMTI5LDcgQEAgcHJpdmF0ZToK
ICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyOyB9CiAKICAgICBib29sIGNhblVzZUNh
Y2hlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0OworICAgIGJvb2wgY2Fu
VXNlQnl0ZWNvZGVDYWNoZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsK
ICAgICBib29sIGNhblVzZUNhY2hlZFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpIGNvbnN0OwogCiAgICAgdm9pZCB0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpOwpAQCAtMTMy
LDYgKzEzOCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeShz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4pOwogICAgIHZvaWQgdmFsaWRhdGVD
YWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5Pik7CiAgICAgdm9p
ZCBkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZvckNhY2hlRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiYmKTsKKyAgICB2
b2lkIGxvYWRCeXRlY29kZUNhY2hlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8SVBDOjpEZXJpdmVkRGF0YT4mJik+JiYpOworICAgIHZvaWQgcHJvY2Vzc0NhY2hlZEVudHJ5
QWZ0ZXJEaWRSZWNlaXZlUmVzcG9uc2Uoc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50
cnk+KTsKIAogICAgIGJvb2wgc2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29u
c3QgU3RyaW5nJiwgY29uc3QgVVJMJik7CiAgICAgYm9vbCBzaG91bGRJbnRlcnJ1cHRMb2FkRm9y
Q1NQRnJhbWVBbmNlc3RvcnNPclhGcmFtZU9wdGlvbnMoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOwpAQCAtMTk3LDEwICsyMDUsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0Fs
bG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyB7IGZhbHNlIH07CiAgICAgc2l6ZV90IG1fbnVt
Qnl0ZXNSZWNlaXZlZCB7IDAgfTsKIAotICAgIHVuc2lnbmVkIG1fcmV0cmlldmVkRGVyaXZlZERh
dGFDb3VudCB7IDAgfTsKLQogICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVyaW5nVGltZXI7CiAg
ICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7CisgICAgUmVmUHRyPEJ5dGVj
b2RlQ2FjaGU+IG1fYnl0ZWNvZGVDYWNoZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3Jr
Q2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0
aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9CeXRl
Y29kZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQnl0ZWNv
ZGVDYWNoZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk0MGQ0Y2Q1NWU5NTg0MmYyODFhYmQxNWFhMjVkMjQy
ZDIwNWIwMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQnl0ZWNvZGVDYWNoZS5jcHAKQEAgLTAsMCArMSwzMzggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQnl0ZWNvZGVDYWNoZS5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtDYWNoZS5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQnl0ZWNvZGVDYWNoZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQ29tcGxldGlvbi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2xvYmFs
T2JqZWN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTb3VyY2VDb2RlLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvUGFyc2VyRXJyb3IuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9WTS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFk
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBDYWNoZUZpbGUgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKENhY2hlRmlsZSk7CisKK3B1YmxpYzoKKyAgICBDYWNoZUZpbGUo
KQorICAgICAgICA6IG1fZmQoLTEpCisgICAgeworICAgIH0KKworICAgIENhY2hlRmlsZShjb25z
dCBDU3RyaW5nJiBuYW1lLCBpbnQgZmQpCisgICAgICAgIDogbV9uYW1lKG5hbWUpCisgICAgICAg
ICwgbV9mZChmZCkKKyAgICB7CisgICAgfQorCisgICAgQ2FjaGVGaWxlKENhY2hlRmlsZSYmIG90
aGVyKQorICAgICAgICA6IG1fbmFtZShXVEZNb3ZlKG90aGVyLm1fbmFtZSkpCisgICAgICAgICwg
bV9mZChvdGhlci5tX2ZkKQorICAgIHsKKyAgICAgICAgb3RoZXIubV9mZCA9IC0xOworICAgIH0K
KworICAgIENhY2hlRmlsZSYgb3BlcmF0b3I9KENhY2hlRmlsZSYmIG90aGVyKQorICAgIHsKKyAg
ICAgICAgbV9uYW1lID0gV1RGTW92ZShvdGhlci5tX25hbWUpOworICAgICAgICBtX2ZkID0gb3Ro
ZXIubV9mZDsKKyAgICAgICAgb3RoZXIubV9mZCA9IC0xOworICAgICAgICByZXR1cm4gKnRoaXM7
CisgICAgfQorCisgICAgfkNhY2hlRmlsZSgpCisgICAgeworICAgICAgICBpZiAobV9mZCAhPSAt
MSkKKyAgICAgICAgICAgIGNsb3NlKG1fZmQpOworICAgIH0KKworICAgIGNvbnN0IENTdHJpbmcm
IG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICBpbnQgZmQoKSBjb25zdCB7IHJl
dHVybiBtX2ZkOyB9CisKKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuIG1fZmQg
PCAwOyB9CisKK3ByaXZhdGU6CisgICAgQ1N0cmluZyBtX25hbWU7CisgICAgaW50IG1fZmQ7Cit9
OworCitzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIGJ5dGVjb2RlQ2FjaGVLZXkgPSAiYnl0
ZWNvZGUtY2FjaGUiOworc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBieXRlY29kZU1ldGFk
YXRhS2V5ID0gImJ5dGVjb2RlLW1ldGFkYXRhIjsKKworY2xhc3MgQnl0ZWNvZGVDYWNoZTo6UGxh
biA6IHB1YmxpYyBSZWZDb3VudGVkPEJ5dGVjb2RlQ2FjaGU6OlBsYW4+IHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShQbGFuKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8UGxhbj4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIGNhY2hlUGFydGl0aW9uLCBTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIEpTQzo6Qnl0ZWNv
ZGVDYWNoZU1ldGFkYXRhJiYgbWV0YWRhdGEsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGJvZHksIENhbGxiYWNrJiYgY2FsbGJhY2spCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBQbGFuIHsgdXJsLCBjYWNoZVBhcnRpdGlvbiwgc2NyaXB0TW9kZSwgV1RGTW92ZSht
ZXRhZGF0YSksIFdURk1vdmUoYm9keSksIFdURk1vdmUoY2FsbGJhY2spIH0pOworICAgIH0KKwor
ICAgIHZvaWQgY29tcGlsZShOZXR3b3JrQ2FjaGU6OkNhY2hlKiBjYWNoZSwgSlNDOjpWTSYgdm0s
IENhY2hlRmlsZSYmIGNhY2hlRmlsZSkKKyAgICB7CisgICAgICAgIExPRyhCeXRlY29kZUNhY2hl
LCAiW0J5dGVjb2RlQ2FjaGVdW1BsYW5dIFByb2Nlc3Npbmc6ICVzIiwgbV91cmwuc3RyaW5nKCku
YXNjaWkoKS5kYXRhKCkpOworCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gc3RhcnQgPSBN
b25vdG9uaWNUaW1lOjpub3coKTsKKyAgICAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tl
cih2bSk7CisgICAgICAgICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlQ29kZSA9IEpTQzo6bWFr
ZVNvdXJjZShTdHJpbmcobV9ib2R5LT5kYXRhKCksIG1fYm9keS0+c2l6ZSgpKSwgSlNDOjpTb3Vy
Y2VPcmlnaW4geyBtX3VybC5zdHJpbmcoKSB9LCBVUkwobV91cmwpKTsKKyAgICAgICAgICAgIEpT
Qzo6UGFyc2VyRXJyb3IgZXJyb3I7CisgICAgICAgICAgICBzd2l0Y2ggKG1fc2NyaXB0TW9kZSkg
eworICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpTY3JpcHRNb2RlOjpDbGFzc2ljOgorICAgICAg
ICAgICAgICAgIEpTQzo6Z2VuZXJhdGVQcm9ncmFtQnl0ZWNvZGUodm0sIHNvdXJjZUNvZGUsIGNh
Y2hlRmlsZS5mZCgpLCBlcnJvciwgJm1fbWV0YWRhdGEpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpTY3JpcHRNb2RlOjpNb2R1bGU6CisgICAgICAg
ICAgICAgICAgSlNDOjpnZW5lcmF0ZU1vZHVsZUJ5dGVjb2RlKHZtLCBzb3VyY2VDb2RlLCBjYWNo
ZUZpbGUuZmQoKSwgZXJyb3IsICZtX21ldGFkYXRhKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8gZW5kID0gTW9ub3Rv
bmljVGltZTo6bm93KCk7CisgICAgICAgICAgICBkYXRhTG9nTG4oImdlbmVyYXRlQnl0ZWNvZGU6
ICIsIGVuZCAtIHN0YXJ0LCAiIC0gIiwgbV91cmwuc3RyaW5nKCkpOworCisgICAgICAgICAgICBp
ZiAoZXJyb3IuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgTE9HKEJ5dGVjb2RlQ2FjaGUs
ICJbQnl0ZWNvZGVDYWNoZV0gVW5hYmxlIHRvIGdlbmVyYXRlIGJ5dGVjb2RlIGNhY2hlIGJlY2F1
c2Ugc2NyaXB0IGhhZCBhIHBhcnNlIGVycm9yIik7CisgICAgICAgICAgICAgICAgbV9jYWxsYmFj
ayhudWxscHRyLCAwKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FjaGUsIGNhY2hlRmlsZSA9IFdURk1vdmUoY2FjaGVGaWxl
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIE5ldHdvcmtDYWNoZTo6RGF0YUtleSBjYWNoZUtl
eSB7IHByb3RlY3RlZFRoaXMtPm1fY2FjaGVQYXJ0aXRpb24sIGJ5dGVjb2RlQ2FjaGVLZXksIHBy
b3RlY3RlZFRoaXMtPm1fdXJsLnN0cmluZygpIH07CisgICAgICAgICAgICBjYWNoZS0+c3RvcmVG
aWxlKGNhY2hlS2V5LCBjYWNoZUZpbGUubmFtZSgpLmRhdGEoKSk7CisgICAgICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5tX2NhbGxiYWNrKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNh
Y2hlRmlsZS5uYW1lKCkuZGF0YSgpKSwgY2FjaGVGaWxlLm5hbWUoKS5sZW5ndGgoKSk7CisgICAg
ICAgIH0pOworICAgIH0KKworcHJpdmF0ZToKKyAgICBQbGFuKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNhY2hlUGFydGl0aW9uLCBTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIEpTQzo6Qnl0
ZWNvZGVDYWNoZU1ldGFkYXRhJiYgbWV0YWRhdGEsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGJvZHksIENhbGxiYWNrJiYgY2FsbGJhY2spCisgICAgICAgIDogbV91cmwodXJsKQorICAg
ICAgICAsIG1fY2FjaGVQYXJ0aXRpb24oY2FjaGVQYXJ0aXRpb24pCisgICAgICAgICwgbV9zY3Jp
cHRNb2RlKHNjcmlwdE1vZGUpCisgICAgICAgICwgbV9tZXRhZGF0YShXVEZNb3ZlKG1ldGFkYXRh
KSkKKyAgICAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKKyAgICAgICAgLCBtX2NhbGxiYWNr
KFdURk1vdmUoY2FsbGJhY2spKQorICAgIHsKKyAgICB9CisKKyAgICBVUkwgbV91cmw7CisgICAg
U3RyaW5nIG1fY2FjaGVQYXJ0aXRpb247CisgICAgU2NyaXB0TW9kZSBtX3NjcmlwdE1vZGU7Cisg
ICAgSlNDOjpCeXRlY29kZUNhY2hlTWV0YWRhdGEgbV9tZXRhZGF0YTsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBtX2JvZHk7CisgICAgQ2FsbGJhY2sgbV9jYWxsYmFjazsKK307
CisKK2NsYXNzIEJ5dGVjb2RlQ2FjaGU6OlRocmVhZCA6IHB1YmxpYyBBdXRvbWF0aWNUaHJlYWQg
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8VGhyZWFkPiBjcmVhdGUoY29uc3QgQWJzdHJhY3RM
b2NrZXImIGxvY2tlciwgQnl0ZWNvZGVDYWNoZSYgY2FjaGUpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBUaHJlYWQobG9ja2VyLCBjYWNoZSkpOworICAgIH0KKworICAgIGNv
bnN0IGNoYXIqIG5hbWUoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuICJC
eXRlY29kZUNhY2hlIEhlbHBlciBUaHJlYWQiOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIFBv
bGxSZXN1bHQgcG9sbChjb25zdCBBYnN0cmFjdExvY2tlciYpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBpZiAobV9jYWNoZS5tX3F1ZXVlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBQ
b2xsUmVzdWx0OjpXYWl0OworCisgICAgICAgIG1fcGxhbnMgPSBXVEZNb3ZlKG1fY2FjaGUubV9x
dWV1ZSk7CisgICAgICAgIHJldHVybiBQb2xsUmVzdWx0OjpXb3JrOworICAgIH0KKworICAgIFdv
cmtSZXN1bHQgd29yaygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bV9wbGFucy5pc0VtcHR5KCkpOworICAgICAgICBOZXR3b3JrQ2FjaGU6OkNhY2hlKiBjYWNoZSA9
IG1fY2FjaGUubV9uZXR3b3JrUHJvY2Vzcy5jYWNoZSgpOworICAgICAgICBpZiAoIWNhY2hlKQor
ICAgICAgICAgICAgcmV0dXJuIFdvcmtSZXN1bHQ6OlN0b3A7CisKKyAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBwbGFuIDogbV9wbGFucykKKyAgICAgICAgICAgIHBsYW4tPmNvbXBpbGUoY2FjaGUs
ICptX3ZtLCBtX2NhY2hlLmNyZWF0ZUNhY2hlRmlsZSgpKTsKKworICAgICAgICBtX3BsYW5zLmNs
ZWFyKCk7CisgICAgICAgIHJldHVybiBXb3JrUmVzdWx0OjpDb250aW51ZTsKKyAgICB9CisKKyAg
ICB2b2lkIHRocmVhZERpZFN0YXJ0KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIExPRyhCeXRl
Y29kZUNhY2hlLCAiW0J5dGVjb2RlQ2FjaGVdW1RocmVhZF0gU3RhcnRlZCIpOworICAgICAgICBt
X3ZtID0gSlNDOjpWTTo6Y3JlYXRlKCk7CisgICAgfQorCisgICAgdm9pZCB0aHJlYWRJc1N0b3Bw
aW5nKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEpTQzo6
SlNMb2NrSG9sZGVyIGxvY2tlcigqbV92bSk7CisgICAgICAgIG1fdm0gPSBudWxscHRyOworICAg
ICAgICBMT0coQnl0ZWNvZGVDYWNoZSwgIltCeXRlY29kZUNhY2hlXVtUaHJlYWRdIFN0b3BwZWQi
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVGhyZWFkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBs
b2NrZXIsIEJ5dGVjb2RlQ2FjaGUmIGNhY2hlKQorICAgICAgICA6IEF1dG9tYXRpY1RocmVhZChs
b2NrZXIsIGNhY2hlLm1fbG9jaywgY2FjaGUubV9jb25kaXRpb24uY29weVJlZigpKQorICAgICAg
ICAsIG1fY2FjaGUoY2FjaGUpCisgICAgeworICAgIH0KKworICAgIEJ5dGVjb2RlQ2FjaGUmIG1f
Y2FjaGU7CisgICAgUGxhbnMgbV9wbGFuczsKKyAgICBSZWZQdHI8SlNDOjpWTT4gbV92bTsKK307
CisKK1JlZlB0cjxCeXRlY29kZUNhY2hlPiBCeXRlY29kZUNhY2hlOjpjcmVhdGUoTmV0d29ya1By
b2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBTdHJpbmcmIGJ5dGVjb2RlQ2FjaGVEaXJlY3Rv
cnkpCit7CisgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoYnl0ZWNvZGVD
YWNoZURpcmVjdG9yeSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEJ5dGVjb2RlQ2FjaGUobmV0d29ya1Byb2Nlc3MsIGJ5dGVjb2RlQ2FjaGVEaXJl
Y3RvcnkpKTsKK30KKworQnl0ZWNvZGVDYWNoZTo6Qnl0ZWNvZGVDYWNoZShOZXR3b3JrUHJvY2Vz
cyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IFN0cmluZyYgYnl0ZWNvZGVDYWNoZURpcmVjdG9yeSkK
KyAgICA6IG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCisgICAgLCBtX2J5dGVjb2Rl
Q2FjaGVEaXJlY3RvcnkoYnl0ZWNvZGVDYWNoZURpcmVjdG9yeSkKKyAgICAsIG1fbG9jayhCb3g8
TG9jaz46OmNyZWF0ZSgpKQorICAgICwgbV9jb25kaXRpb24oQXV0b21hdGljVGhyZWFkQ29uZGl0
aW9uOjpjcmVhdGUoKSkKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKKyAgICBt
X3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKGxvY2tlciwgKnRoaXMpOworfQorCitCeXRlY29kZUNh
Y2hlOjp+Qnl0ZWNvZGVDYWNoZSgpCit7Cit9CisKK3ZvaWQgQnl0ZWNvZGVDYWNoZTo6c3RvcmVN
ZXRhZGF0YUZvclJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBKU0M6OkJ5dGVjb2RlQ2FjaGVNZXRhZGF0YSYgbWV0YWRhdGEpCit7CisgICAgTE9H
KEJ5dGVjb2RlQ2FjaGUsICJbQnl0ZWNvZGVDYWNoZV0gc3RvcmVNZXRhZGF0YUZvclJlcXVlc3Qg
LSBDaGVja2luZzogJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsK
KworICAgIE5ldHdvcmtDYWNoZTo6Q2FjaGUqIGNhY2hlID0gbV9uZXR3b3JrUHJvY2Vzcy5jYWNo
ZSgpOworICAgIGlmICghY2FjaGUpIHsKKyAgICAgICAgTE9HKEJ5dGVjb2RlQ2FjaGUsICJbQnl0
ZWNvZGVDYWNoZV0gQ2Fubm90IHN0b3JlIG1ldGFkYXRhOiBjYWNoZSBpcyBub3QgYXZhaWxhYmxl
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBOZXR3b3JrQ2FjaGU6OkRhdGFLZXkg
bWV0YWRhdGFLZXkgeyByZXF1ZXN0LmNhY2hlUGFydGl0aW9uKCksIGJ5dGVjb2RlTWV0YWRhdGFL
ZXksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkgfTsKKyAgICBzdGQ6OnBhaXI8TWFsbG9jUHRyPHVp
bnQ4X3Q+LCBzaXplX3Q+IGVuY29kZWRNZXRhZGF0YSA9IG1ldGFkYXRhLmVuY29kZSgpOworICAg
IGNhY2hlLT5zdG9yZURhdGEobWV0YWRhdGFLZXksIGVuY29kZWRNZXRhZGF0YS5maXJzdC5nZXQo
KSwgZW5jb2RlZE1ldGFkYXRhLnNlY29uZCk7CisKKyAgICBOZXR3b3JrQ2FjaGU6OkRhdGFLZXkg
Y2FjaGVLZXkgeyByZXF1ZXN0LmNhY2hlUGFydGl0aW9uKCksIGJ5dGVjb2RlQ2FjaGVLZXksIHJl
cXVlc3QudXJsKCkuc3RyaW5nKCkgfTsKKyAgICBjYWNoZS0+cmVtb3ZlRmlsZShjYWNoZUtleSk7
Cit9CisKK0NhY2hlRmlsZSBCeXRlY29kZUNhY2hlOjpjcmVhdGVDYWNoZUZpbGUoKSBjb25zdAor
eworICAgIFN0cmluZyBmaWxlVGVtcGxhdGUgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobV9ieXRlY29kZUNhY2hlRGlyZWN0b3J5LCAiWFhYWFhYWFgiKTsKKyAgICBDU3Ry
aW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVU
ZW1wbGF0ZSk7CisgICAgaW50IGZkID0gbWtzdGVtcChmaWxlbmFtZS5tdXRhYmxlRGF0YSgpKTsK
KyAgICBpZiAoZmQgPCAwKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiB7IFdURk1v
dmUoZmlsZW5hbWUpLCBmZCB9OworfQorCit2b2lkIEJ5dGVjb2RlQ2FjaGU6OmJ5dGVjb2RlRm9y
UmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6
OlNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYm9k
eSwgQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBMT0coQnl0ZWNvZGVDYWNoZSwgIltCeXRl
Y29kZUNhY2hlXSBieXRlY29kZUZvclJlcXVlc3QgLSBDaGVja2luZzogJXMiLCByZXF1ZXN0LnVy
bCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKworICAgIE5ldHdvcmtDYWNoZTo6Q2FjaGUq
IGNhY2hlID0gbV9uZXR3b3JrUHJvY2Vzcy5jYWNoZSgpOworICAgIGlmICghY2FjaGUpIHsKKyAg
ICAgICAgTE9HKEJ5dGVjb2RlQ2FjaGUsICJbQnl0ZWNvZGVDYWNoZV0gQ2Fubm90IGdlbmVyYXRl
IGJ5dGVjb2RlIGZvciByZXF1ZXN0OiBjYWNoZSBpcyBub3QgYXZhaWxhYmxlIik7CisgICAgICAg
IGNhbGxiYWNrKG51bGxwdHIsIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
dHJ5TG9hZEJ5dGVjb2RlQ2FjaGUoKSA9PiB0cnlMb2FkTWV0YWRhdGEoKSA9PiBnZW5lcmF0ZUJ5
dGVjb2RlKCkKKyAgICBOZXR3b3JrQ2FjaGU6OkRhdGFLZXkgY2FjaGVLZXkgeyByZXF1ZXN0LmNh
Y2hlUGFydGl0aW9uKCksIGJ5dGVjb2RlQ2FjaGVLZXksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkg
fTsKKyAgICBjYWNoZS0+cmV0cmlldmVGaWxlKGNhY2hlS2V5LCBbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXF1ZXN0ID0gV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVzdCB9LCBib2R5ID0gV1RGTW92ZShib2R5KSwg
c2NyaXB0TW9kZV0oY29uc3QgY2hhciogZmlsZSkgbXV0YWJsZSB7CisgICAgICAgIGlmIChmaWxl
KSB7CisgICAgICAgICAgICBDYWNoZUZpbGUgY2FjaGVGaWxlID0gcHJvdGVjdGVkVGhpcy0+Y3Jl
YXRlQ2FjaGVGaWxlKCk7CisgICAgICAgICAgICBpZiAoIWNhY2hlRmlsZSkgeworICAgICAgICAg
ICAgICAgIExPRyhCeXRlY29kZUNhY2hlLCAiW0J5dGVjb2RlQ2FjaGVdIEZhaWxlZCB0byBjcmVh
dGUgY2FjaGUgZmlsZSIpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGxwdHIsIDApOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdW5s
aW5rKGNhY2hlRmlsZS5uYW1lKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGlmIChsaW5rKGZpbGUs
IGNhY2hlRmlsZS5uYW1lKCkuZGF0YSgpKSkgeworICAgICAgICAgICAgICAgIExPRyhCeXRlY29k
ZUNhY2hlLCAiW0J5dGVjb2RlQ2FjaGVdIEZhaWxlZCB0byBsaW5rIGNhY2hlIGZpbGUiKTsKKyAg
ICAgICAgICAgICAgICBjYWxsYmFjayhudWxscHRyLCAwKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIExPRyhCeXRlY29kZUNhY2hlLCAiW0J5
dGVjb2RlQ2FjaGVdIFJldHVybmluZyBieXRlY29kZSBmcm9tIGRpc2sgY2FjaGUiKTsKKyAgICAg
ICAgICAgIGNhbGxiYWNrKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNhY2hlRmls
ZS5uYW1lKCkuZGF0YSgpKSwgY2FjaGVGaWxlLm5hbWUoKS5sZW5ndGgoKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBOZXR3b3JrQ2FjaGU6OkNhY2hlKiBjYWNo
ZSA9IHByb3RlY3RlZFRoaXMtPm1fbmV0d29ya1Byb2Nlc3MuY2FjaGUoKTsKKyAgICAgICAgaWYg
KCFjYWNoZSkgeworICAgICAgICAgICAgTE9HKEJ5dGVjb2RlQ2FjaGUsICJbQnl0ZWNvZGVDYWNo
ZV0gQ2Fubm90IGdlbmVyYXRlIGJ5dGVjb2RlIGZvciByZXF1ZXN0OiBjYWNoZSBpcyBub3QgYXZh
aWxhYmxlIik7CisgICAgICAgICAgICBjYWxsYmFjayhudWxscHRyLCAwKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIE5ldHdvcmtDYWNoZTo6RGF0YUtleSBtZXRh
ZGF0YUtleSB7IHJlcXVlc3QuY2FjaGVQYXJ0aXRpb24oKSwgYnl0ZWNvZGVNZXRhZGF0YUtleSwg
cmVxdWVzdC51cmwoKS5zdHJpbmcoKSB9OworICAgICAgICBjYWNoZS0+cmV0cmlldmVEYXRhKG1l
dGFkYXRhS2V5LCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlcXVlc3QgPSBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgeyByZXF1ZXN0IH0sIGJvZHkgPSBXVEZNb3ZlKGJvZHkpLCBzY3JpcHRNb2RlXShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIWRh
dGEpIHsKKyAgICAgICAgICAgICAgICBMT0coQnl0ZWNvZGVDYWNoZSwgIltCeXRlY29kZUNhY2hl
XSBEaWQgbm90IGZpbmQgYnl0ZWNvZGUgb3IgbWV0YWRhdGEgZm9yICVzIiwgcmVxdWVzdC51cmwo
KS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVs
bHB0ciwgMCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBOZXR3b3JrQ2FjaGU6OkNhY2hlKiBjYWNoZSA9IHByb3RlY3RlZFRoaXMtPm1fbmV0
d29ya1Byb2Nlc3MuY2FjaGUoKTsKKyAgICAgICAgICAgIGlmICghY2FjaGUpIHsKKyAgICAgICAg
ICAgICAgICBMT0coQnl0ZWNvZGVDYWNoZSwgIltCeXRlY29kZUNhY2hlXSBDYW5ub3QgZ2VuZXJh
dGUgYnl0ZWNvZGUgZm9yIHJlcXVlc3Q6IGNhY2hlIGlzIG5vdCBhdmFpbGFibGUiKTsKKyAgICAg
ICAgICAgICAgICBjYWxsYmFjayhudWxscHRyLCAwKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIExPRyhCeXRlY29kZUNhY2hlLCAiW0J5dGVj
b2RlQ2FjaGVdIEZvdW5kIG1ldGFkYXRhLCBnZW5lcmF0aW5nIGJ5dGVjb2RlIik7CisgICAgICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcigqcHJvdGVjdGVkVGhpcy0+bV9sb2NrKTsKKyAgICAgICAg
ICAgIHByb3RlY3RlZFRoaXMtPm1fcXVldWUuYXBwZW5kKFBsYW46OmNyZWF0ZSgKKyAgICAgICAg
ICAgICAgICByZXF1ZXN0LnVybCgpLAorICAgICAgICAgICAgICAgIHJlcXVlc3QuY2FjaGVQYXJ0
aXRpb24oKSwKKyAgICAgICAgICAgICAgICBzY3JpcHRNb2RlLAorICAgICAgICAgICAgICAgIEpT
Qzo6Qnl0ZWNvZGVDYWNoZU1ldGFkYXRhOjpkZWNvZGUoZGF0YSwgc2l6ZSksCisgICAgICAgICAg
ICAgICAgV1RGTW92ZShib2R5KSwKKyAgICAgICAgICAgICAgICBXVEZNb3ZlKGNhbGxiYWNrKSkp
OworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9jb25kaXRpb24tPm5vdGlmeUFsbChsb2Nr
ZXIpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0J5dGVjb2RlQ2Fj
aGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQnl0ZWNvZGVDYWNoZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjIzNmJlMTUwZjZlNjUxNTZmOTA1MjViOTYzNjQ4MWJkZTY3MDVlNjIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0J5dGVj
b2RlQ2FjaGUuaApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvQXV0b21hdGlj
VGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBKU0MgeworY2xhc3MgQnl0ZWNvZGVDYWNoZU1ldGFkYXRhOworY2xhc3MgVk07Cit9Owor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CitlbnVtIGNsYXNzIFNjcmlwdE1vZGUgOiB1aW50OF90OworfTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtQcm9jZXNzOworCitjbGFzcyBDYWNoZUZpbGU7
CisKK2NsYXNzIEJ5dGVjb2RlQ2FjaGUgOiBwdWJsaWMgUmVmQ291bnRlZDxCeXRlY29kZUNhY2hl
PiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnl0ZWNvZGVDYWNoZSk7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CisKKyAgICBjbGFzcyBQbGFuOworICAgIGNsYXNzIFRocmVhZDsK
KyAgICB1c2luZyBQbGFucyA9IFZlY3RvcjxSZWY8UGxhbj4sIDI+OworCisgICAgZnJpZW5kIGNs
YXNzIFRocmVhZDsKKworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8Qnl0ZWNvZGVDYWNoZT4g
Y3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwgY29uc3QgU3RyaW5nJiBieXRlY29kZUNhY2hlRGlyZWN0
b3J5KTsKKworICAgIH5CeXRlY29kZUNhY2hlKCk7CisKKyAgICB2b2lkIHN0b3JlTWV0YWRhdGFG
b3JSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEpTQzo6Qnl0
ZWNvZGVDYWNoZU1ldGFkYXRhJik7CisKKyAgICB1c2luZyBDYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgdWludDhfdCosIHNpemVfdCk+OworICAgIHZvaWQgYnl0ZWNvZGVG
b3JSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNjcmlw
dE1vZGUsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBDYWxsYmFjayYmKTsKKworcHJp
dmF0ZToKKyAgICBCeXRlY29kZUNhY2hlKE5ldHdvcmtQcm9jZXNzJiwgY29uc3QgU3RyaW5nJiBi
eXRlY29kZUNhY2hlRGlyZWN0b3J5KTsKKworICAgIENhY2hlRmlsZSBjcmVhdGVDYWNoZUZpbGUo
KSBjb25zdDsKKyAgICB2b2lkIGdlbmVyYXRlQnl0ZWNvZGUoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2NyaXB0TW9kZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4sIEpTQzo6Qnl0ZWNvZGVDYWNoZU1ldGFkYXRhJiYsIENhbGxiYWNrJiYpOworCisgICAg
TmV0d29ya1Byb2Nlc3MmIG1fbmV0d29ya1Byb2Nlc3M7CisgICAgU3RyaW5nIG1fYnl0ZWNvZGVD
YWNoZURpcmVjdG9yeTsKKyAgICBQbGFucyBtX3F1ZXVlOworICAgIEJveDxMb2NrPiBtX2xvY2s7
CisgICAgUmVmPEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbj4gbV9jb25kaXRpb247CisgICAgUmVm
UHRyPEF1dG9tYXRpY1RocmVhZD4gbV90aHJlYWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmNwcAppbmRleCBlNWU2ODEzOGZmNTVlZmQxMjc0M2I1ZmJkNjZhMDQ2ZmYzNGJhMjBiLi4x
MjZmNGRhZjUyY2UwNjE5NGI3Y2NiMjEwZDg1MDZjZGIzYjUyODJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC01OTIs
NSArNTkyLDIzIEBAIHZvaWQgQ2FjaGU6OnN0b3JlRGF0YShjb25zdCBEYXRhS2V5JiBkYXRhS2V5
LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICBtX3N0b3JhZ2UtPnN0b3Jl
KHJlY29yZCwgeyB9KTsKIH0KIAordm9pZCBDYWNoZTo6cmV0cmlldmVGaWxlKGNvbnN0IERhdGFL
ZXkmIGRhdGFLZXksIEZ1bmN0aW9uPHZvaWQoY29uc3QgY2hhciopPiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBLZXkga2V5IHsgZGF0YUtleSwgbV9zdG9yYWdlLT5zYWx0KCkgfTsKKyAgICBt
X3N0b3JhZ2UtPnJldHJpZXZlRmlsZShrZXksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
K30KKwordm9pZCBDYWNoZTo6c3RvcmVGaWxlKGNvbnN0IERhdGFLZXkmIGRhdGFLZXksIGNvbnN0
IGNoYXIqIGZpbGVuYW1lKQoreworICAgIEtleSBrZXkgeyBkYXRhS2V5LCBtX3N0b3JhZ2UtPnNh
bHQoKSB9OworICAgIG1fc3RvcmFnZS0+c3RvcmVGaWxlKGtleSwgZmlsZW5hbWUpOworfQorCit2
b2lkIENhY2hlOjpyZW1vdmVGaWxlKGNvbnN0IERhdGFLZXkmIGRhdGFLZXkpCit7CisgICAgS2V5
IGtleSB7IGRhdGFLZXksIG1fc3RvcmFnZS0+c2FsdCgpIH07CisgICAgbV9zdG9yYWdlLT5yZW1v
dmVGaWxlKGtleSk7Cit9CisKIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IGM3ZjM4NmIzZDdjMzE0NTU4MGYyYWMwZTBl
MzUyZWE2Yjg3MTU1YzEuLjMzNjU0MTlhZDFlYzU3N2YxYzI3OTMxMmY3N2Q5NmU0ZmM1NDM2OTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuaApAQCAtMTMwLDcgKzEzMCwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJldHJpZXZlRGF0
YShjb25zdCBEYXRhS2V5JiwgRnVuY3Rpb248dm9pZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4p
OwogICAgIHZvaWQgc3RvcmVEYXRhKGNvbnN0IERhdGFLZXkmLCAgY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90KTsKLSAgICAKKworICAgIHZvaWQgcmV0cmlldmVGaWxlKGNvbnN0IERhdGFLZXkm
LCBGdW5jdGlvbjx2b2lkKGNvbnN0IGNoYXIqKT4pOworICAgIHZvaWQgc3RvcmVGaWxlKGNvbnN0
IERhdGFLZXkmLCBjb25zdCBjaGFyKik7CisgICAgdm9pZCByZW1vdmVGaWxlKGNvbnN0IERhdGFL
ZXkmKTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbWFrZUVudHJ5KGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50
cnk+IG1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlZGlyZWN0UmVxdWVzdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcAppbmRleCA4ZmE4MWQxMDlhNGM3
M2NkMGIzMTk1Yjg4ZmY1ZTNkYjE1N2MzOGU2Li5kODA0YmFlMTI4OTdkNDNhYjg1NDVhODFiYzk2
ODg3MWU0MjZhMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUtleS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQsNyArNjQsNyBAQCBLZXk6OktleShX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCiBLZXk6OktleShjb25zdCBEYXRhS2V5JiBk
YXRhS2V5LCBjb25zdCBTYWx0JiBzYWx0KQogICAgIDogbV9wYXJ0aXRpb24oZGF0YUtleS5wYXJ0
aXRpb24pCiAgICAgLCBtX3R5cGUoZGF0YUtleS50eXBlKQotICAgICwgbV9pZGVudGlmaWVyKGhh
c2hBc1N0cmluZyhkYXRhS2V5LmlkZW50aWZpZXIpKQorICAgICwgbV9pZGVudGlmaWVyKGRhdGFL
ZXkuaWRlbnRpZmllcikKICAgICAsIG1faGFzaChjb21wdXRlSGFzaChzYWx0KSkKICAgICAsIG1f
cGFydGl0aW9uSGFzaChjb21wdXRlUGFydGl0aW9uSGFzaChzYWx0KSkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5oCmluZGV4
IDI5MTViMjE0YjMyZWNhNDc5NTEzODQ5ZjEyYjdjNGRiYzdmM2Q1NDkuLjcxNGY5OThlYmJjZGFi
MmU1YWZjN2ZiNDRhYThlZDI4MjA0MjMzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDcgKzM3LDcgQEAg
bmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBzdHJ1Y3QgRGF0YUtleSB7CiAgICAgU3RyaW5nIHBh
cnRpdGlvbjsKICAgICBTdHJpbmcgdHlwZTsKLSAgICBTSEExOjpEaWdlc3QgaWRlbnRpZmllcjsK
KyAgICBTdHJpbmcgaWRlbnRpZmllcjsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
Y3BwCmluZGV4IGJiZmM2NDk4OTBmOTVjYzdlMDRjZTgyYTRmZTMyOTQ0ZGMxYWIxZjAuLjE0N2Nh
ODU0OGE2M2Y1ZjNjN2UwZDU4Y2ZkNmM5YzBiYmZlOTgxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNw
cApAQCAtMTEzNSw1ICsxMTM1LDQyIEBAIHZvaWQgU3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lvbnMo
KQogICAgIH0pOwogfQogCit2b2lkIFN0b3JhZ2U6OnN0b3JlRmlsZShjb25zdCBLZXkmIGtleSwg
Y29uc3QgY2hhciogZmlsZW5hbWUpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
KyAgICBBU1NFUlQoIWtleS5pc051bGwoKSk7CisKKyAgICBhdXRvIGJsb2JEaXJlY3RvcnlQYXRo
ID0gcmVjb3JkRGlyZWN0b3J5UGF0aEZvcktleShrZXkpOworICAgIEZpbGVTeXN0ZW06Om1ha2VB
bGxEaXJlY3RvcmllcyhibG9iRGlyZWN0b3J5UGF0aCk7CisKKyAgICBhdXRvIGJsb2JQYXRoID0g
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGJsb2JQYXRoRm9yS2V5KGtleSkp
OworICAgIHVubGluayhibG9iUGF0aC5kYXRhKCkpOworICAgIGlmIChsaW5rKGZpbGVuYW1lLCBi
bG9iUGF0aC5kYXRhKCkpID09IC0xKQorICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwg
IkZhaWxlZCB0byBzdG9yZSBmaWxlOiAlcyIsIGZpbGVuYW1lKTsKK30KKwordm9pZCBTdG9yYWdl
OjpyZXRyaWV2ZUZpbGUoY29uc3QgS2V5JiBrZXksIFJldHJpZXZlRmlsZUNvbXBsZXRpb25IYW5k
bGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKKyAgICBBU1NFUlQoIWtleS5pc051bGwoKSk7CisKKyAgICBhdXRvIGJsb2JQYXRoID0gYmxv
YlBhdGhGb3JLZXkoa2V5KTsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoYmxvYlBh
dGgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgY29tcGxldGlvbkhhbmRsZXIoRmlsZVN5c3RlbTo6ZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGJsb2JQYXRoKS5kYXRhKCkpOworfQorCit2b2lkIFN0b3JhZ2U6OnJl
bW92ZUZpbGUoY29uc3QgS2V5JiBrZXkpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKKyAgICBBU1NFUlQoIWtleS5pc051bGwoKSk7CisKKyAgICBhdXRvIGJsb2JQYXRoID0gYmxv
YlBhdGhGb3JLZXkoa2V5KTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGJsb2JQYXRoKTsK
K30KKwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAppbmRleCA2MTdiMmIzYTVmZGUyYTU3NWIxOGZjN2Ni
NTdjZWYxZTE4MjcyZWE5Li43NzM3YjJiMDg1ZTc4YjlmNTAzNTRmMTU1MDY4Zjk3MDZiOWI1NzBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuaApAQCAtODQsNiArODQsMTEgQEAgcHVibGljOgogICAgIHVzaW5n
IE1hcHBlZEJvZHlIYW5kbGVyID0gRnVuY3Rpb248dm9pZCAoY29uc3QgRGF0YSYgbWFwcGVkQm9k
eSk+OwogICAgIHZvaWQgc3RvcmUoY29uc3QgUmVjb3JkJiwgTWFwcGVkQm9keUhhbmRsZXImJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQpPiYmID0geyB9KTsKIAorICAgIHVzaW5nIFJldHJp
ZXZlRmlsZUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBj
aGFyKik+OworICAgIHZvaWQgcmV0cmlldmVGaWxlKGNvbnN0IEtleSYsIFJldHJpZXZlRmlsZUNv
bXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgc3RvcmVGaWxlKGNvbnN0IEtleSYsIGNvbnN0
IGNoYXIqKTsKKyAgICB2b2lkIHJlbW92ZUZpbGUoY29uc3QgS2V5Jik7CisKICAgICB2b2lkIHJl
bW92ZShjb25zdCBLZXkmKTsKICAgICB2b2lkIHJlbW92ZShjb25zdCBWZWN0b3I8S2V5PiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhcihjb25zdCBTdHJpbmcm
IHR5cGUsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2VUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCmluZGV4IDVhZWFlNDU0MDA4YmU5MTc0ODVlNzIyODZj
M2U0OWVjMjg0MzlmNTYuLjkxZGNlY2Q3MzlmNGRlNmQyNzQ2NTA1MWU4NjM4NTNjZTRjNzEwODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1By
b2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtQcm9jZXNzQ29jb2EubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04MSw2ICs4MSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EoY29uc3QgTmV0d29ya1By
b2Nlc3NDCiAjZW5kaWYKICNlbmRpZgogICAgIG1fZGlza0NhY2hlRGlyZWN0b3J5ID0gcGFyYW1l
dGVycy5kaXNrQ2FjaGVEaXJlY3Rvcnk7CisgICAgbV9ieXRlY29kZUNhY2hlRGlyZWN0b3J5ID0g
cGFyYW1ldGVycy5ieXRlY29kZUNhY2hlRGlyZWN0b3J5OwogCiAgICAgX0NGTmV0d29ya1NldEFU
U0NvbnRleHQocGFyYW1ldGVycy5uZXR3b3JrQVRTQ29udGV4dC5nZXQoKSk7CiAKQEAgLTEyNSw2
ICsxMjYsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29y
a1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3b3JrUHJvY2Vzc0MKICAgICAvLyBEaXNhYmxlIE5TVVJM
Q2FjaGUuCiAgICAgYXV0byB1cmxDYWNoZShhZG9wdE5TKFtbTlNVUkxDYWNoZSBhbGxvY10gaW5p
dFdpdGhNZW1vcnlDYXBhY2l0eTowIGRpc2tDYXBhY2l0eTowIGRpc2tQYXRoOm5pbF0pKTsKICAg
ICBbTlNVUkxDYWNoZSBzZXRTaGFyZWRVUkxDYWNoZTp1cmxDYWNoZS5nZXQoKV07CisKKyAgICBp
ZiAobV9ieXRlY29kZUNhY2hlRGlyZWN0b3J5LmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5ieXRl
Y29kZUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBtX2J5dGVjb2RlQ2FjaGUg
PSBCeXRlY29kZUNhY2hlOjpjcmVhdGUoKnRoaXMsIG1fYnl0ZWNvZGVDYWNoZURpcmVjdG9yeSk7
CisgICAgaWYgKCFtX2J5dGVjb2RlQ2FjaGUpCisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKEJ5
dGVjb2RlQ2FjaGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgV2ViS2l0IGJ5dGVjb2RlIGNh
Y2hlIik7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24+IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbigp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9jb20u
YXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgppbmRleCAw
NmExM2Q0YTNmMmI1OGE1NWY1ZjI3MmVmYjRkOGYzNGQ4ODZkYzUwLi5mNWFiODgxNjk0NThlNDgw
ZDRiN2IzN2UwM2M1ZmFmYmM0ZTNiYjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29y
a1Byb2Nlc3Muc2IuaW4KQEAgLTEsNCArMSw0IEBACi07IENvcHlyaWdodCAoQykgMjAxMy0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKzsgQ29weXJpZ2h0IChDKSAyMDEzLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogOwogOyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKIDsgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zOCw2ICszOCw3IEBACiAgICAgICAgICJody5hdmFpbGNwdSIKICAgICAgICAg
Imh3Lm5jcHUiCiAgICAgICAgICJody5tb2RlbCIKKyAgICAgICAgImtlcm4uYm9vdHNlc3Npb251
dWlkIgogICAgICAgICAia2Vybi5tZW1vcnlzdGF0dXNfbGV2ZWwiCiAgICAgICAgICJ2bS5mb290
cHJpbnRfc3VzcGVuZCIpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCmluZGV4IDNjYWI1MDY5OGMwZTI4MGM5
ZTA5YzE1YmUwZmRjZGJhMzhlMmI5YmMuLmIzMjgzZmVlN2MxNTAxMDM0NzdhMWJlNGEyOGRhNjRm
N2Y1YjFjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0xMDgsNiArMTA4LDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29y
a1Byb2Nlc3NDcmVhdGkKIAogICAgIEFTU0VSVCghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3Rv
cnkuaXNFbXB0eSgpKTsKICAgICBtX2Rpc2tDYWNoZURpcmVjdG9yeSA9IHBhcmFtZXRlcnMuZGlz
a0NhY2hlRGlyZWN0b3J5OworICAgIG1fYnl0ZWNvZGVDYWNoZURpcmVjdG9yeSA9IHBhcmFtZXRl
cnMuYnl0ZWNvZGVDYWNoZURpcmVjdG9yeTsKIAogICAgIFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2xl
YXJPbGRTb3VwQ2FjaGUoRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShtX2Rpc2tDYWNoZURpcmVj
dG9yeSkpOwogCkBAIC0xMTksNiArMTIwLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZv
cm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKIAog
ICAgIG1fY2FjaGUgPSBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpvcGVuKCp0aGlzLCBtX2Rpc2tDYWNo
ZURpcmVjdG9yeSwgY2FjaGVPcHRpb25zKTsKIAorICAgIGlmICghbV9ieXRlY29kZUNhY2hlRGly
ZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgbV9ieXRlY29kZUNhY2hlID0gQnl0ZWNvZGVDYWNo
ZTo6Y3JlYXRlKCp0aGlzLCBtX2J5dGVjb2RlQ2FjaGVEaXJlY3RvcnkpOworCiAgICAgc3VwcGxl
bWVudDxXZWJDb29raWVNYW5hZ2VyPigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBhcmFt
ZXRlcnMuY29va2llQWNjZXB0UG9saWN5LCBPcHRpb25hbENhbGxiYWNrSUQoKSk7CiAKICAgICBp
ZiAoIXBhcmFtZXRlcnMubGFuZ3VhZ2VzLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0Rlcml2ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Rlcml2ZWREYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDhmNzQ2YzQ3ZGUwM2EzMWIyMmI3
NzUyZmVmODAxNmJjZTQ2MTBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvRGVyaXZlZERhdGEuY3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGVyaXZlZERhdGEuaCIKKworI2luY2x1ZGUg
IkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkVuY29k
ZXIuaCIKKworbmFtZXNwYWNlIElQQyB7CisKK3ZvaWQgRGVyaXZlZERhdGE6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2Rl
KGVuY29kZXIsIG1fdHlwZSk7CisgICAgZW5jb2Rlci5lbmNvZGUobV9kYXRhKTsKK30KKworYm9v
bCBEZXJpdmVkRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIERlcml2ZWREYXRhJiBkZXJp
dmVkRGF0YSkKK3sKKyAgICBpZiAoIUFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZGVjb2RlKGRlY29k
ZXIsIGRlcml2ZWREYXRhLm1fdHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gZGVjb2Rlci5kZWNvZGUoZGVyaXZlZERhdGEubV9kYXRhKTsKK30KKworT3B0aW9uYWw8RGVy
aXZlZERhdGE+IERlcml2ZWREYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBE
ZXJpdmVkRGF0YSBkZXJpdmVkRGF0YTsKKyAgICBpZiAoIWRlY29kZShkZWNvZGVyLCBkZXJpdmVk
RGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgZGVyaXZl
ZERhdGEgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EZXJpdmVkRGF0YS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRGVyaXZlZERhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mODE0MWFkMGNhYWY4ZTE3ZWUxNjc4Zjc5Njc5
YTM0NjQ0MjJiNDhhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRGVyaXZlZERhdGEuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBJUEMgeworCitjbGFzcyBEZWNvZGVyOworY2xh
c3MgRW5jb2RlcjsKKworY2xhc3MgRGVyaXZlZERhdGEgeworcHVibGljOgorICAgIERlcml2ZWRE
YXRhKCkgPSBkZWZhdWx0OworCisgICAgRGVyaXZlZERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCisgICAgICAgIDogbV90eXBlKHR5cGUpCisg
ICAgICAgICwgbV9kYXRhKGRhdGEpCisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuICFtX2RhdGEuc2l6ZSgpOyB9CisKKyAgICBjb25zdCBTdHJpbmcmIHR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBjb25zdCBEYXRhUmVmZXJlbmNlJiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisKKyAgICB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBEZXJpdmVkRGF0YSYp
OworICAgIHN0YXRpYyBPcHRpb25hbDxEZXJpdmVkRGF0YT4gZGVjb2RlKERlY29kZXImKTsKKwor
cHJpdmF0ZToKKyAgICBTdHJpbmcgbV90eXBlOworICAgIERhdGFSZWZlcmVuY2UgbV9kYXRhOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDFm
NzczYTcxMWU2MTZjODg1ZDEzMWJmMzhhMTNkOTcxNjAxYzEyZGUuLjMzMDUwMjYxOGNhMDkxNmM0
NDgyMDAyYmQ4OTQwOGZlMTRhMjJmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC00
NCw2ICs0NCw3IEBAIGV4dGVybiAiQyIgewogICAgIE0oQXV0b21hdGlvbikgXAogICAgIE0oQWN0
aXZpdHlTdGF0ZSkgXAogICAgIE0oQmFja0ZvcndhcmQpIFwKKyAgICBNKEJ5dGVjb2RlQ2FjaGUp
IFwKICAgICBNKENhY2hlU3RvcmFnZSkgXAogICAgIE0oQ29udGVudE9ic2VydmF0aW9uKSBcCiAg
ICAgTShDb250ZXh0TWVudSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKaW5kZXggOGU1MmFjMDNjMjgwNTIxOGI5YWFjYWVjOGIzNjYwOTM3OWUxNjVkZi4uMjVhMGVk
MmMwNDNiZGEwMmYwODIyN2UwNDMxNzQ2Mzg2Y2NlNjc0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIw
MTAtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykg
MjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDA1LDYgKzQwNSw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5
cGUpOgogICAgIHNwZWNpYWxfY2FzZXMgPSB7CiAgICAgICAgICdJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UnOiBbJyJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiJywgJyJEYXRhUmVm
ZXJlbmNlLmgiJ10sCiAgICAgICAgICdNYWNoU2VuZFJpZ2h0JzogWyc8d3RmL01hY2hTZW5kUmln
aHQuaD4nXSwKKyAgICAgICAgJ0pTQzo6Qnl0ZWNvZGVDYWNoZU1ldGFkYXRhJzogWyc8SmF2YVNj
cmlwdENvcmUvQnl0ZWNvZGVDYWNoZU1ldGFkYXRhLmg+J10sCiAgICAgICAgICdKU0M6Ok1lc3Nh
Z2VMZXZlbCc6IFsnPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPiddLAogICAgICAgICAn
SlNDOjpNZXNzYWdlU291cmNlJzogWyc8SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+J10s
CiAgICAgICAgICdJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGUnOiBbJzxKYXZhU2NyaXB0
Q29yZS9JbnNwZWN0b3JUYXJnZXQuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggOTU4MmU2YjZiYjg4MTQz
YTMyMzhjZDk5NjZkYjZkNjk1ZTRjNGVmMi4uNmZmOWI5YTliYzUzMTlhOTBiYmUyZjZjYTY2YTM2
ZTVjNjdlMWE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTk3LDYgKzk3LDggQEAgdm9pZCBXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ICAgIGVuY29kZXIgPDwgcHJlc2VudGluZ0FwcGxpY2F0aW9uUElEOwogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIGVuY29kZXIgPDwgYWNjZXNzaWJpbGl0eUVuaGFuY2VkVXNlckludGVyZmFjZUVu
YWJsZWQ7CisgICAgZW5jb2RlciA8PCBieXRlY29kZUNhY2hlRGlyZWN0b3J5OworICAgIGVuY29k
ZXIgPDwgYnl0ZWNvZGVDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBlbmNvZGVy
IDw8IGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQb3J0OwogICAgIGVuY29kZXIgPDwgdWlQcm9jZXNz
QnVuZGxlUmVzb3VyY2VQYXRoOwogICAgIGVuY29kZXIgPDwgdWlQcm9jZXNzQnVuZGxlUmVzb3Vy
Y2VQYXRoRXh0ZW5zaW9uSGFuZGxlOwpAQCAtMjc5LDYgKzI4MSwxNSBAQCBib29sIFdlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlBy
b2Nlc3NDcmVhdAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cGFyYW1ldGVycy5hY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNlRW5hYmxlZCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
Ynl0ZWNvZGVDYWNoZURpcmVjdG9yeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIE9w
dGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gYnl0ZWNvZGVDYWNoZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKKyAgICBkZWNvZGVyID4+IGJ5dGVjb2RlQ2FjaGVEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7CisgICAgaWYgKCFieXRlY29kZUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcGFyYW1ldGVycy5ieXRlY29kZUNhY2hl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqYnl0ZWNvZGVDYWNoZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSk7CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BvcnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0
aCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgKaW5kZXggODQ1MGRjZWM2ZmE1ODliNjlmNTI3Yzk0YjM1NTNjNmQ2OTBhZTg3NS4u
Njc2M2IwZDI2YjFkNDAwODY2M2NjMmE1ODgzM2MxZGI5MjJiZWE4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTQ5
LDYgKzE0OSw5IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBi
b29sIHNob3VsZEVuYWJsZUpJVCB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRFbmFibGVGVExK
SVQgeyBmYWxzZSB9OwogICAgIGJvb2wgYWNjZXNzaWJpbGl0eUVuaGFuY2VkVXNlckludGVyZmFj
ZUVuYWJsZWQgeyBmYWxzZSB9OworCisgICAgU3RyaW5nIGJ5dGVjb2RlQ2FjaGVEaXJlY3Rvcnk7
CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGJ5dGVjb2RlQ2FjaGVEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7CiAgICAgCiAgICAgUmVmUHRyPEFQSTo6RGF0YT4gYnVuZGxlUGFyYW1ldGVy
RGF0YTsKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDc5OWM2ZjBh
NmY0OTI3ZmNkNzRhYzA4N2FlOWVmMzAxMjFjYTFmNWQuLjJkOTYwMjFlZTQ4YTQ4OGVmY2JhOTcy
YzNmNmYzZDZmY2UxZGM4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNjUsNiArNjUsNyBAQCBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3BwIEBuby11bmlmeQogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIEBuby11
bmlmeQogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwIEBuby11bmlmeQogCitOZXR3b3JrUHJvY2Vzcy9jYWNoZS9CeXRlY29kZUNh
Y2hlLmNwcAogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
Y3BwCmluZGV4IDNkYjcwNTY5YzhhNGUzMzM0M2I4NGZhMzI3YzMyMGEzMzU4ZTRiM2IuLmExNmNm
ZGVlY2JiYTM2MzlmNzQyM2U0MmE4OWZlMTdmYmYxYTcwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
Y3BwCkBAIC01Myw2ICs1Myw3IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvCiAgICAgY29uZmln
dXJhdGlvbi0+bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlv
bi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi0+bV9hcHBs
aWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gbGVnYWN5Q29uZmlndXJhdGlv
bi5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCk7CiAgICAgY29uZmln
dXJhdGlvbi0+bV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLm5ldHdv
cmtDYWNoZURpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPm1fYnl0ZWNvZGVDYWNoZURp
cmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24uYnl0ZWNvZGVDYWNoZURpcmVjdG9yeSgpOwog
ICAgIGNvbmZpZ3VyYXRpb24tPm1fbWVkaWFDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3Vy
YXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSgpOwogICAgIGNvbmZpZ3VyYXRpb24tPm1faW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFi
YXNlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi0+bV9sb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwpAQCAtNjks
NiArNzAsNyBAQCBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbigpCiAgICAgOiBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSkKICAgICAsIG1fYXBwbGljYXRp
b25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgiRmlsZXMiKQogICAgICwgbV9kaXNrQ2Fj
aGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9y
eSgpKQorICAgICwgbV9ieXRlY29kZUNhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRCeXRlY29kZUNhY2hlRGlyZWN0b3J5KCkpCiAgICAgLCBtX21lZGlhQ2FjaGVEaXJlY3Rv
cnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKSkKICAgICAs
IG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdElu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpCiAgICAgLCBtX2xvY2FsU3RvcmFnZURpcmVjdG9y
eShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpCkBAIC05
MSw2ICs5Myw3IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbjo6Y29weSgpCiAgICAgY29weS0+bV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3Jl
ID0gdGhpcy0+bV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlOwogICAgIGNvcHktPm1fY2FjaGVN
b2RlbCA9IHRoaXMtPm1fY2FjaGVNb2RlbDsKICAgICBjb3B5LT5tX2Rpc2tDYWNoZURpcmVjdG9y
eSA9IHRoaXMtPm1fZGlza0NhY2hlRGlyZWN0b3J5OworICAgIGNvcHktPm1fYnl0ZWNvZGVDYWNo
ZURpcmVjdG9yeSA9IHRoaXMtPm1fYnl0ZWNvZGVDYWNoZURpcmVjdG9yeTsKICAgICBjb3B5LT5t
X2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgPSB0aGlzLT5tX2Rpc2tDYWNo
ZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQ7CiAgICAgY29weS0+bV9hcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5ID0gdGhpcy0+bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwogICAgIGNv
cHktPm1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IHRoaXMtPm1f
YXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
aAppbmRleCBmMjFhZjVmMWRmZmY3NThkYzdkNGJjNmRmMzg2MjY1OGI4NmRiYWZmLi4yMjdkYzVl
NDcxYTY4Zjk0MjE2MDVlNDlmMDhiODBlMWE5M2JjOThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCkBA
IC05MCw2ICs5MCw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBXVEY6OlN0cmluZyYgZGlza0NhY2hl
RGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9kaXNrQ2FjaGVEaXJlY3Rvcnk7IH0KICAgICB2
b2lkIHNldERpc2tDYWNoZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgZGlza0NhY2hlRGly
ZWN0b3J5KSB7IG1fZGlza0NhY2hlRGlyZWN0b3J5ID0gZGlza0NhY2hlRGlyZWN0b3J5OyB9CiAK
KyAgICBjb25zdCBXVEY6OlN0cmluZyYgYnl0ZWNvZGVDYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1fYnl0ZWNvZGVDYWNoZURpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0Qnl0ZWNvZGVD
YWNoZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgYnl0ZWNvZGVDYWNoZURpcmVjdG9yeSkg
eyBtX2J5dGVjb2RlQ2FjaGVEaXJlY3RvcnkgPSBieXRlY29kZUNhY2hlRGlyZWN0b3J5OyB9CisK
ICAgICBjb25zdCBXVEY6OlN0cmluZyYgbWVkaWFDYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWVkaWFDYWNoZURpcmVjdG9yeTsgfQogICAgIHZvaWQgc2V0TWVkaWFDYWNoZURpcmVj
dG9yeShjb25zdCBXVEY6OlN0cmluZyYgbWVkaWFDYWNoZURpcmVjdG9yeSkgeyBtX21lZGlhQ2Fj
aGVEaXJlY3RvcnkgPSBtZWRpYUNhY2hlRGlyZWN0b3J5OyB9CiAgICAgCkBAIC0xOTQsNiArMTk3
LDcgQEAgcHJpdmF0ZToKICAgICBXVEY6OlN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnk7CiAgICAgV1RGOjpTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3Rv
cnlOYW1lOwogICAgIFdURjo6U3RyaW5nIG1fZGlza0NhY2hlRGlyZWN0b3J5OworICAgIFdURjo6
U3RyaW5nIG1fYnl0ZWNvZGVDYWNoZURpcmVjdG9yeTsKICAgICBXVEY6OlN0cmluZyBtX21lZGlh
Q2FjaGVEaXJlY3Rvcnk7CiAgICAgV1RGOjpTdHJpbmcgbV9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeTsKICAgICBXVEY6OlN0cmluZyBtX2luamVjdGVkQnVuZGxlUGF0aDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCBm
NzRiMmM1ZGI5N2YxMmQ4MjUwNjIwNmU3ODk2ZWNiYjI5NjBkZjVmLi5jOGU4OWM3OGNlMDAxNDdk
ZTYyMGFlZWRkMjU1YTQ5OTkwOGFkOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xNDksNiArMTQ5LDcgQEAgUmVm
PFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHREYXRhU3RvcmVDb24KICAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNh
Y2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCJGaWxlcyIpOwogICAgIGNvbmZpZ3VyYXRpb24t
PnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkp
OwogICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShkZWZhdWx0TmV0
d29ya0NhY2hlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEJ5dGVjb2RlQ2Fj
aGVEaXJlY3RvcnkoZGVmYXVsdEJ5dGVjb2RlQ2FjaGVEaXJlY3RvcnkoKSk7CiAgICAgY29uZmln
dXJhdGlvbi0+c2V0TWVkaWFDYWNoZURpcmVjdG9yeShkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9y
eSgpKTsKIAogICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpKTsKQEAgLTE3MSw2ICsxNzIsNyBA
QCBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFT
dG9yZTo6bGVnYWN5RGVmYXVsdERhdGFTdAogICAgIGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkobGVnYWN5RGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KSk7CiAgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGly
ZWN0b3J5TmFtZSgiQXBwbGljYXRpb25DYWNoZSIpOwogICAgIGNvbmZpZ3VyYXRpb24tPnNldE5l
dHdvcmtDYWNoZURpcmVjdG9yeShsZWdhY3lEZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkp
OworICAgIGNvbmZpZ3VyYXRpb24tPnNldEJ5dGVjb2RlQ2FjaGVEaXJlY3RvcnkobGVnYWN5RGVm
YXVsdEJ5dGVjb2RlQ2FjaGVEaXJlY3RvcnkoKSk7CiAgICAgY29uZmlndXJhdGlvbi0+c2V0TWVk
aWFDYWNoZURpcmVjdG9yeShsZWdhY3lEZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpKTsKICAg
ICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGxlZ2FjeURlZmF1
bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwogICAgIGNvbmZpZ3VyYXRpb24tPnNldERl
dmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShsZWdhY3lEZWZhdWx0RGV2aWNlSWRIYXNo
U2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggOWM5YTQzYjczYzQzZGQ2ZDJiMzJiN2U4
NjBkODVlNjFiYTgxMGJmMi4uNDlmNDJlNWYxMjBkNjExM2MyMGYzMWY1ZDBkMzgyNzA5MWU1YjBk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRh
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFT
dG9yZS5oCkBAIC01OSw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcg
ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgV1RGOjpTdHJp
bmcgZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBXVEY6OlN0cmlu
ZyBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5n
IGRlZmF1bHRCeXRlY29kZUNhY2hlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFdURjo6U3RyaW5n
IGRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGRl
ZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBXVEY6OlN0cmlu
ZyBkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwpAQCAtNzMsNiAr
NzQsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgbGVnYWN5RGVmYXVsdEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgbGVnYWN5
RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBs
ZWdhY3lEZWZhdWx0Qnl0ZWNvZGVDYWNoZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBXVEY6OlN0
cmluZyBsZWdhY3lEZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFdU
Rjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwogICAg
IHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
QVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IDNhZTg4NDUxMTk3MmVhNzVhNmQzN2U4
NWM0ZGVmM2U2YThlODY3NTcuLjZmOTFkZGI1MmIwNWZlOGEwYTI2Njc3Yzg1ODRkYjk2MzA3NGJj
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtNjksNiArNjksMTEgQEAgV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCiAg
ICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJOZXR3b3Jr
Q2FjaGUiKTsKIH0KIAorV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEJ5dGVj
b2RlQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbigiQnl0ZWNvZGVDYWNoZSIpOworfQorCiBXVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCiB7CiAgICAgcmV0dXJu
IHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlhQ2FjaGUiKTsKQEAg
LTE0OCw2ICsxNTMsMTcgQEAgV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVm
YXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIFdlYktpdDo6c3RyaW5nQnlS
ZXNvbHZpbmdTeW1saW5rc0luUGF0aChbY2FjaGVQYXRoIHN0cmluZ0J5U3RhbmRhcmRpemluZ1Bh
dGhdKTsKIH0KIAorV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVmYXVsdEJ5
dGVjb2RlQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIE5TU3RyaW5nICpjYWNoZVBhdGggPSBDRkJy
aWRnaW5nUmVsZWFzZShfQ0ZVUkxDYWNoZUNvcHlDYWNoZURpcmVjdG9yeShbW05TVVJMQ2FjaGUg
c2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENhY2hlXSkpOworICAgIGlmICghY2FjaGVQYXRoKQorICAg
ICAgICBjYWNoZVBhdGggPSBAIn4vTGlicmFyeS9DYWNoZXMvY29tLmFwcGxlLldlYktpdC5XZWJQ
cm9jZXNzIjsKKworICAgIGNhY2hlUGF0aCA9IFtjYWNoZVBhdGggc3RyaW5nQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OkAiQnl0ZWNvZGVDYWNoZSJdOworCisgICAgcmV0dXJuIFdlYktpdDo6c3Ry
aW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChbY2FjaGVQYXRoIHN0cmluZ0J5U3RhbmRhcmRp
emluZ1BhdGhdKTsKK30KKwogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6bGVnYWN5RGVm
YXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKIHsKICAgICBOU1N0cmluZyAqZGF0YWJhc2Vz
RGlyZWN0b3J5ID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0
Rm9yS2V5OldlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXldOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDNhNmRhY2MxNDU0NDdkMjUzYTU1ZGY4
MzQ4YTM3N2NiMzNiZTBlYzMuLjA0MzcyYmEwN2I2Mzg0MGFlMGEwOTBiNTlhNGY5NzBkYjUzYThh
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTIy
NSw2ICsyMjUsNyBAQCBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBs
ZWdhY3lXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihBUAogICAgIGNvbmZpZ3VyYXRpb24t
PnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSkpOwogICAgIGNvbmZpZ3VyYXRpb24t
PnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpKTsKICAgICBjb25m
aWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5kaXNrQ2FjaGVEaXJlY3RvcnkoKSkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNl
dEJ5dGVjb2RlQ2FjaGVEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5i
eXRlY29kZUNhY2hlRGlyZWN0b3J5KCkpKTsKICAgICBjb25maWd1cmF0aW9uLT5zZXRKYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkpKTsKIAogICAgIHJldHVybiBjb25m
aWd1cmF0aW9uOwpAQCAtNTEzLDYgKzUxNCwxMSBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQ
cm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAog
ICAgIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5kaXNr
Q2FjaGVEaXJlY3RvcnkoKTsKICAgICBpZiAoIXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5
LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVh
ZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJz
LmRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisKKyAgICBwYXJhbWV0ZXJzLmJ5
dGVjb2RlQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPmJ5dGVjb2RlQ2FjaGVEaXJl
Y3RvcnkoKTsKKyAgICBpZiAoIXBhcmFtZXRlcnMuYnl0ZWNvZGVDYWNoZURpcmVjdG9yeS5pc0Vt
cHR5KCkpCisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0
ZURpcmVjdG9yeShwYXJhbWV0ZXJzLmJ5dGVjb2RlQ2FjaGVEaXJlY3RvcnksIHBhcmFtZXRlcnMu
Ynl0ZWNvZGVDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisKICNpZiBFTkFCTEUoTkVU
V09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAgICAgcGFyYW1ldGVycy5zaG91
bGRFbmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbiA9IG1fY29uZmlndXJh
dGlvbi0+ZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCgpOwogI2VuZGlmCkBA
IC05MDcsNiArOTEzLDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVOZXdXZWJQ
cm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2Vic2l0ZURhCiAgICAgaWYgKCFwYXJh
bWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMuaW5qZWN0
ZWRCdW5kbGVQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgcGFyYW1ldGVy
cy5pbmplY3RlZEJ1bmRsZVBhdGhFeHRlbnNpb25IYW5kbGUpOwogCisgICAgcGFyYW1ldGVycy5i
eXRlY29kZUNhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5ieXRlY29kZUNhY2hlRGly
ZWN0b3J5KCk7CisgICAgaWYgKCFwYXJhbWV0ZXJzLmJ5dGVjb2RlQ2FjaGVEaXJlY3RvcnkuaXNF
bXB0eSgpKQorICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3Jp
dGVEaXJlY3RvcnkocGFyYW1ldGVycy5ieXRlY29kZUNhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJz
LmJ5dGVjb2RlQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworCiAgICAgcGFyYW1ldGVy
cy5hZGRpdGlvbmFsU2FuZGJveEV4dGVuc2lvbkhhbmRsZXMuYWxsb2NhdGUobV9yZXNvbHZlZFBh
dGhzLmFkZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzLnNpemUoKSk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBtX3Jlc29sdmVkUGF0aHMuYWRkaXRpb25hbFdl
YlByb2Nlc3NTYW5kYm94RXh0ZW5zaW9uUGF0aHMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQogICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aCht
X3Jlc29sdmVkUGF0aHMuYWRkaXRpb25hbFdlYlByb2Nlc3NTYW5kYm94RXh0ZW5zaW9uUGF0aHNb
aV0sIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBwYXJhbWV0ZXJzLmFkZGl0aW9u
YWxTYW5kYm94RXh0ZW5zaW9uSGFuZGxlc1tpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5jcHAKaW5kZXggOTlmNTdlNGFlM2E0ZTE0MzdiNTRiMjUyNTBmNzIxN2EzMTIw
YTJlZS4uNDYxNWQ5MTQzZTU1OTM2OTQ0NGIxZDEzZTRmMTg1YTY3YWZlNTVlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApAQCAtNDIsNiArNDIsNyBAQCBSZWY8
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpjb3B5KCkKICAgICBjb3B5LT5tX2NhY2hlU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1f
Y2FjaGVTdG9yYWdlRGlyZWN0b3J5OwogICAgIGNvcHktPm1fcGVyT3JpZ2luU3RvcmFnZVF1b3Rh
ID0gdGhpcy0+bV9wZXJPcmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgY29weS0+bV9uZXR3b3JrQ2Fj
aGVEaXJlY3RvcnkgPSB0aGlzLT5tX25ldHdvcmtDYWNoZURpcmVjdG9yeTsKKyAgICBjb3B5LT5t
X2J5dGVjb2RlQ2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX2J5dGVjb2RlQ2FjaGVEaXJlY3Rvcnk7
CiAgICAgY29weS0+bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gdGhpcy0+bV9hcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5OwogICAgIGNvcHktPm1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxl
U3ViZGlyZWN0b3J5TmFtZSA9IHRoaXMtPm1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGly
ZWN0b3J5TmFtZTsKICAgICBjb3B5LT5tX3dlYlN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX3dl
YlN0b3JhZ2VEaXJlY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaApp
bmRleCA5Y2M4YTUwNzliYzBhZmVhNDI5MTk3MDZiMDYyMTI4YjU3ZmNiMjBiLi5mZDdlNjVhMzZm
NTZmOGYzYTdmNzQ0NDhhYWYzZTU4ZWIyMzE3ZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmgKQEAgLTc2LDYgKzc2LDkgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmlu
ZyYgbmV0d29ya0NhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9uZXR3b3JrQ2FjaGVE
aXJlY3Rvcnk7IH0KICAgICB2b2lkIHNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShTdHJpbmcmJiBk
aXJlY3RvcnkpIHsgbV9uZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7
IH0KICAgICAKKyAgICBjb25zdCBTdHJpbmcmIGJ5dGVjb2RlQ2FjaGVEaXJlY3RvcnkoKSBjb25z
dCB7IHJldHVybiBtX2J5dGVjb2RlQ2FjaGVEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldEJ5dGVj
b2RlQ2FjaGVEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fYnl0ZWNvZGVDYWNoZURp
cmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorCiAgICAgY29uc3QgU3RyaW5nJiBjYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlU3RvcmFnZURpcmVjdG9y
eTsgfQogICAgIHZvaWQgc2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9y
eSkgeyBtX2NhY2hlU3RvcmFnZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQogICAg
IApAQCAtMTA1LDYgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fY2FjaGVTdG9yYWdl
RGlyZWN0b3J5OwogICAgIHVpbnQ2NF90IG1fcGVyT3JpZ2luU3RvcmFnZVF1b3RhIHsgZGVmYXVs
dFBlck9yaWdpblN0b3JhZ2VRdW90YSB9OwogICAgIFN0cmluZyBtX25ldHdvcmtDYWNoZURpcmVj
dG9yeTsKKyAgICBTdHJpbmcgbV9ieXRlY29kZUNhY2hlRGlyZWN0b3J5OwogICAgIFN0cmluZyBt
X2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fYXBwbGljYXRpb25DYWNo
ZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsKICAgICBTdHJpbmcgbV93ZWJTdG9yYWdlRGlyZWN0
b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMzc4NzliNTRhYzYzMDFjNDg1ZTIwZDRkZTRlZWZmNThmM2E2MDlhNC4uZDc5YzAyM2Rm
Yzk4M2FjOGU4YjIwMWE4ZDg5OWNjOWI4ZmI1MzI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjIsNiArMTIyLDkgQEAKIAkJMEZG
MjRBMkQxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZGMjRBMkIxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkwRkYyNEEyRTE4NzlFNEJD
MDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkYyNEEyQzE4NzlF
NEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgg
Ki87IH07CiAJCTBGRjI2NEEwMUExRkY5Q0MwMDFGRTc1OSAvKiBSZW1vdGVMYXllclRyZWVTY3Jv
bGxpbmdQZXJmb3JtYW5jZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNzA3Qzc5MUExRkVFQTMwMERBN0E0NSAvKiBSZW1vdGVMYXllclRyZWVT
Y3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaCAqLzsgfTsKKwkJMTREMDFBNzMyMUZBMTgwNjAwQkM1
NEU5IC8qIEJ5dGVjb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0RDAxQTcxMjFGQTE4MDUwMEJDNTRFOSAvKiBCeXRlY29kZUNhY2hlLmgg
Ki87IH07CisJCTE0RTI4MDk0MjIwMDBBMEYwMDNCQzU3QiAvKiBEZXJpdmVkRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRFMjgwOTIyMjAwMDlG
OTAwM0JDNTdCIC8qIERlcml2ZWREYXRhLmggKi87IH07CisJCTE0RTI4MDk1MjIwMDBBMjIwMDNC
QzU3QiAvKiBEZXJpdmVkRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNEUyODA5MzIyMDAwOUY5MDAzQkM1N0IgLyogRGVyaXZlZERhdGEuY3Bw
ICovOyB9OwogCQkxNTczOUJCRDFCNDIwNDJEMDBEMjU4QzEgLyogV2ViVXNlck1lZGlhQ2xpZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTQxMEY0
OTE5QUY3QjgwMDAyRUJBQjUgLyogV2ViVXNlck1lZGlhQ2xpZW50LmggKi87IH07CiAJCTFBMDAy
RDQzMTk2QjMzNzAwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwMDJENDIxOTZCMzM3MDAw
QjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZUludGVybmFsLmggKi87IH07CiAJCTFBMDAyRDQ0MTk2
QjMzODkwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMDAyRDNGMTk2QjMyOTQwMEI5QUQ0NCAvKiBfV0tT
ZXNzaW9uU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTk2Nyw2ICsxOTcwLDEwIEBACiAJCTBGRjI0QTJDMTg3OUU0QkMwMDNBQkYwQyAv
KiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3Nh
Z2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQkwRkYyNEEyRjE4NzlFNEZFMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMDU4QzdCMUZFQTU1
ODVFMTFDQTJDQkIgLyogQ29jb2EuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDb2NvYS5m
cmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db2NvYS5mcmFtZXdv
cms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CisJCTE0RDAxQTcwMjFGQTE4MDUwMEJD
NTRFOSAvKiBCeXRlY29kZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEJ5dGVjb2RlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
NEQwMUE3MTIxRkExODA1MDBCQzU0RTkgLyogQnl0ZWNvZGVDYWNoZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTE0RTI4MDkyMjIwMDA5RjkwMDNCQzU3QiAvKiBEZXJpdmVkRGF0YS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXJpdmVkRGF0YS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxNEUyODA5MzIyMDAwOUY5MDAzQkM1N0IgLyogRGVyaXZlZERhdGEu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVyaXZlZERhdGEuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTAwMkQzRTE5NkIzMjk0MDBCOUFENDQg
LyogX1dLU2Vzc2lvblN0YXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gX1dLU2Vzc2lvblN0YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QTAwMkQzRjE5NkIzMjk0MDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1Nlc3Npb25TdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQTAwMkQ0MjE5NkIzMzcwMDBCOUFENDQgLyogX1dLU2Vzc2lvblN0YXRl
SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLU2Vzc2lvblN0
YXRlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU1MDIsNiArNTUw
OSw4IEBACiAJCQkJMUFDNzUzN0UxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCAq
LywKIAkJCQlCQzAzMkQ5RDEwRjQzN0QxMDA1OEMxNUEgLyogRGVjb2Rlci5jcHAgKi8sCiAJCQkJ
QkMwMzJEOUUxMEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIuaCAqLywKKwkJCQkxNEUyODA5MzIy
MDAwOUY5MDAzQkM1N0IgLyogRGVyaXZlZERhdGEuY3BwICovLAorCQkJCTE0RTI4MDkyMjIwMDA5
RjkwMDNCQzU3QiAvKiBEZXJpdmVkRGF0YS5oICovLAogCQkJCUJDMDMyRDlGMTBGNDM3RDEwMDU4
QzE1QSAvKiBFbmNvZGVyLmNwcCAqLywKIAkJCQlCQzAzMkRBMDEwRjQzN0QxMDA1OEMxNUEgLyog
RW5jb2Rlci5oICovLAogCQkJCTQxNTFFNUMzMUZCQjkwQTkwMEU0N0UyRCAvKiBGb3JtRGF0YVJl
ZmVyZW5jZS5oICovLApAQCAtODkyMyw2ICs4OTMyLDggQEAKIAkJRTQ4OUQyODIxQTBBMkJFODAw
NzhDMDZBIC8qIGNhY2hlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQkxNEQwMUE3MDIxRkExODA1MDBCQzU0RTkgLyogQnl0ZWNvZGVDYWNoZS5jcHAgKi8s
CisJCQkJMTREMDFBNzEyMUZBMTgwNTAwQkM1NEU5IC8qIEJ5dGVjb2RlQ2FjaGUuaCAqLywKIAkJ
CQk0MTg5N0VENjFGNDE1RDg2MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCAqLywK
IAkJCQk0MTg5N0VEMjFGNDE1RDg1MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmggKi8s
CiAJCQkJNDFDODU4MTkxRjUxMERFRTAwNjVFMDg1IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmNwcCAqLywKQEAgLTkxODMsNiArOTE5NCw3IEBACiAJCQkJRTE3MDg3NkMxNkQ2Q0E2OTAwRjk5
MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0RjYwMTQzMjE1
NUM1QUEyMDAxRkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUE1NzA1MTExQkU0MTBFNjAwODc0QUYxIC8qIEJsb2NrU1BJLmggaW4gSGVhZGVycyAqLywK
KwkJCQkxNEQwMUE3MzIxRkExODA2MDBCQzU0RTkgLyogQnl0ZWNvZGVDYWNoZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMzMDY1RkExMjU5MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxODk3RUQ4MUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VF
bmdpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRkFCRDJBMUY0REUwMDEwMDZBNkM5NyAvKiBD
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05MjAyLDYgKzkyMTQs
NyBAQAogCQkJCUM1NUY5MTcxMUM1OTY3NkUwMDI5RTkyRCAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUM3NTM4MDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJl
ZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJEQTYxMEY0MzdEMTAwNThDMTVBIC8q
IERlY29kZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0RTI4MDk0MjIwMDBBMEYwMDNCQzU3QiAv
KiBEZXJpdmVkRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQUIyMTRDNjAwOTAwMTZC
ODQ3IC8qIERldmljZUlkZW50aXR5U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzI5N0Y5RjFD
MTdCQkVBMDE1RjA3MzUgLyogRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTgzODkxQjZDMUE2OEMzMEIwMDMwRjM4NiAvKiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDk1Nyw2ICsxMDk3MCw3IEBACiAJCQkJMkQ5MkE3N0Qy
MTJCNkE3MTAwRjQ5M0ZEIC8qIENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5
MkE3N0UyMTJCNkE3MTAwRjQ5M0ZEIC8qIERhdGFSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkQ5MkE3N0YyMTJCNkE3MTAwRjQ5M0ZEIC8qIERlY29kZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMTRFMjgwOTUyMjAwMEEyMjAwM0JDNTdCIC8qIERlcml2ZWREYXRhLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBQjdENjE5MTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNjQyMjk5MTJERDAyOTIw
MENBQUUyQyAvKiBEcmF3aW5nQXJlYU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQTY0MjMwODEyREQwOUVCMDBDQUFFMkMgLyogRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAwNGFlMGU0NWQ1ZTlk
MjljYTBmMjcwYTA2NDE4YTZhYjJkNTAxZmNiLi4zNzAyMWYxMzIzMzVmYTA3M2UxODIxMmIwZWNi
ZGE1MmQyNDFkYjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiwgMjAxNSwgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTUsIDIwMTgsIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NSw4
ICs0NSwxMCBAQAogI2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgogI2luY2x1
ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlVSTFNjaGVtZVRh
c2tQcm94eS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J5dGVjb2RlQ2FjaGVNZXRhZGF0
YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZUhvc3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0NhY2hlZFJlc291cmNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRTY3Jp
cHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oPgpAQCAtMjgxLDYgKzI4Myw3IEBAIHZvaWQgV2ViTG9h
ZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRl
ciYgcmVzb3VyY2VMCiAgICAgbG9hZFBhcmFtZXRlcnMubmVlZHNDZXJ0aWZpY2F0ZUluZm8gPSBy
ZXNvdXJjZUxvYWRlci5zaG91bGRJbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCk7CiAgICAgbG9hZFBh
cmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBtYXhpbXVtQnVmZmVyaW5nVGltZTsKICAg
ICBsb2FkUGFyYW1ldGVycy5vcHRpb25zID0gcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpOworICAg
IGxvYWRQYXJhbWV0ZXJzLnNjcmlwdE1vZGUgPSByZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuc2Ny
aXB0TW9kZTsKICAgICBsb2FkUGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3kgPSByZXNvdXJjZUxv
YWRlci5vcHRpb25zKCkucHJlZmxpZ2h0UG9saWN5OwogICAgIGxvYWRQYXJhbWV0ZXJzLmlzSFRU
UFNVcGdyYWRlRW5hYmxlZCA9IHJlc291cmNlTG9hZGVyLmZyYW1lKCkgPyByZXNvdXJjZUxvYWRl
ci5mcmFtZSgpLT5zZXR0aW5ncygpLkhUVFBTVXBncmFkZUVuYWJsZWQoKSA6IGZhbHNlOwogCkBA
IC02NjcsNiArNjcwLDExIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmRpZEZpbmlzaFByZWNv
bm5lY3Rpb24odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsCiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoZXJyb3IpKTsKIH0KIAordm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6Y2FjaGVCeXRlY29kZUZvclNjcmlwdChjb25zdCBXZWJDb3JlOjpDYWNoZWRTY3JpcHQmIHNj
cmlwdCwgY29uc3QgSlNDOjpCeXRlY29kZUNhY2hlTWV0YWRhdGEmIG1ldGFkYXRhKQoreworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Q2FjaGVCeXRlY29kZUZvclJlcXVlc3Qoc2NyaXB0LnJlc291cmNlUmVxdWVzdCgpLCBtZXRh
ZGF0YSksIDApOworfQorCiBib29sIFdlYkxvYWRlclN0cmF0ZWd5Ojppc09uTGluZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1faXNPbkxpbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAppbmRleCA0YWY1OTk0MWUzNGY3MmFk
MjZlODFlZmI1NjA2MDY3NTE4MTFmOGM2Li5kYmUyNDJhMGQwNjM0ZWNkNjliZTMwZjVmZGQyNTBi
ZDJhYWIwOWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEyLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMiwgMjAxNSwgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDYgKzMzLDEwIEBACiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCituYW1lc3BhY2Ug
SlNDIHsKK2NsYXNzIEJ5dGVjb2RlQ2FjaGVNZXRhZGF0YTsKK30KKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RydWN0IEZldGNoT3B0aW9uczsKIH0KQEAgLTY5LDYgKzczLDggQEAgcHVibGljOgog
ICAgIHZvaWQgcHJlY29ubmVjdFRvKFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwgY29uc3QgVVJMJiwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFu
ZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaFByZWNvbm5lY3Rpb24odWludDY0X3Qg
cHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik7CiAKKyAg
ICB2b2lkIGNhY2hlQnl0ZWNvZGVGb3JTY3JpcHQoY29uc3QgV2ViQ29yZTo6Q2FjaGVkU2NyaXB0
JiwgY29uc3QgSlNDOjpCeXRlY29kZUNhY2hlTWV0YWRhdGEmKSBvdmVycmlkZTsKKwogICAgIHZv
aWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChib29sKSBmaW5hbDsK
IAogICAgIFdlYlJlc291cmNlTG9hZGVyKiB3ZWJSZXNvdXJjZUxvYWRlckZvcklkZW50aWZpZXIo
UmVzb3VyY2VMb2FkSWRlbnRpZmllciBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVybiBtX3dlYlJl
c291cmNlTG9hZGVycy5nZXQoaWRlbnRpZmllcik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCBiZjg4ZmRh
MzAwN2UxNjRmZjM4YTk1MjJhYmI4MWZlZmQ3ZTlmODUyLi5jMWQ5YzYyZDUzZDY3NTc3NWMwMGNl
Y2QwNGZmOTU5NGZiYWI2NDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogI2lu
Y2x1ZGUgIldlYlJlc291cmNlTG9hZGVyLmgiCiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CisjaW5jbHVkZSAiRGVyaXZlZERhdGEuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNl
TG9hZGVyTWVzc2FnZXMuaCIKQEAgLTExMCw3ICsxMTEsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9h
ZGVyOjpkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNU
b0JlUwogICAgIG1fY29yZUxvYWRlci0+ZGlkU2VuZERhdGEoYnl0ZXNTZW50LCB0b3RhbEJ5dGVz
VG9CZVNlbnQpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvb2wgbmVlZHND
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UsIGNvbnN0IFZlY3RvcjxJUEM6OkRlcml2
ZWREYXRhPiYgZGVyaXZlZERhdGEpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2Vzcykg
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSBmb3IgJyVzJy4gU3RhdHVzICVk
LiIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCByZXNwb25z
ZS5odHRwU3RhdHVzQ29kZSgpKTsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNl
aXZlUmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIHN0YXR1cyA9ICVkKSIsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1Bh
cmFtZXRlcnMucmVzb3VyY2VJRCwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CkBAIC0xNDAs
NiArMTQxLDEwIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAgICAgfQogCiAgICAgbV9jb3Jl
TG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFdURk1vdmUocG9saWN5RGVjaXNp
b25Db21wbGV0aW9uSGFuZGxlcikpOworICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBkZXJp
dmVkRGF0YSkgeworICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVu
dHJ5LmRhdGEoKS5kYXRhKCksIGVudHJ5LmRhdGEoKS5zaXplKCkpOworICAgICAgICBtX2NvcmVM
b2FkZXItPmRpZFJldHJpZXZlRGVyaXZlZERhdGFGcm9tQ2FjaGUoZW50cnkudHlwZSgpLCBidWZm
ZXIuZ2V0KCkpOworICAgIH0KIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRh
TGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmgKaW5kZXggN2ZkNzgzMjIzM2EzNjJjMjNhOTA0ZmMxNWVmMzRjYTY0YTk2
N2VhZS4uMTRmNTI1NDI4MTVmOWExNTU5MzdmYjUxNzdlMGNkMmFiOTBjN2ZlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTMzLDYgKzMzLDcgQEAKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBEYXRhUmVmZXJlbmNlOwor
Y2xhc3MgRGVyaXZlZERhdGE7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc2LDkgKzc3
LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgZGlk
U2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQp
OwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSwgY29uc3QgVmVj
dG9yPElQQzo6RGVyaXZlZERhdGE+Jik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKLSAgICB2b2lk
IGRpZFJldHJpZXZlRGVyaXZlZERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIGRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxSZXNvdXJjZUxvYWQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkQmxvY2tBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgppbmRleCA3Yjkz
MjU2ZjAzNmRkMDQyZjQ0YmE4M2EzMThiYjdiNjYzNmQ0MWFhLi4zMGIwM2QwNmQyODIwYzhiNzZl
NjQ1YzdkMmUzN2ZlM2Y2NDhlYmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgpAQCAt
MjMsNyArMjMsNyBAQAogbWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VMb2FkZXIgTGVnYWN5UmVjZWl2
ZXIgewogICAgIFdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlKQogICAgIERpZFNl
bmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KQot
ICAgIERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNl
LCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQorICAgIERpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBib29sIG5l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlLCBWZWN0b3I8SVBDOjpEZXJpdmVk
RGF0YT4gZGF0YSkKICAgICBEaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKICAgICBEaWRGaW5pc2hSZXNv
dXJjZUxvYWQoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtMb2FkTWV0cmljcykK
ICAgICBEaWRGYWlsUmVzb3VyY2VMb2FkKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpp
bmRleCAyZTE5MGIwMzVmNzI4MGIxZmJlZGIzYWYwMDFlNjk1OGM0MjAyMTE2Li42MGZlNjFmNjE1
MmI5ZGY0NmY1MTNjMGJmNzg3NzlmMDU1NGZlMDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTE1NCw2ICsxNTQsNyBAQCB2
b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYgcGFyYQogCiAjaWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykK
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy51aVBy
b2Nlc3NCdW5kbGVSZXNvdXJjZVBhdGhFeHRlbnNpb25IYW5kbGUpOworICAgIFNhbmRib3hFeHRl
bnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmJ5dGVjb2RlQ2FjaGVEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUpOwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuYXVkaW9DYXB0dXJlRXh0
ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCmluZGV4IDNmMDljM2Q3OGNlZmU0NWM3ZmIzNzEx
M2EwNmY1Y2Q1MmYxMjM3NzQuLjM0MzFlMGI2NWY2Nzk5NmNiNTY3OWYzYmFlYTMxYjBjMTMzZDYz
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJv
Y2Vzcy5zYi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlBy
b2Nlc3Muc2IuaW4KQEAgLTEsNCArMSw0IEBACi07IENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKzsgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogOwogOyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKIDsgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0xNjUsNiArMTY1LDcgQEAKICAgICAgICAgImh3Lm5jcHUiCiAgICAgICAgICJody52
ZWN0b3J1bml0IgogICAgICAgICAia2Vybi5ib290YXJncyIgOzsgPHJkYXI6Ly9wcm9ibGVtLzQ3
NzM4MDE1PgorICAgICAgICAia2Vybi5ib290c2Vzc2lvbnV1aWQiCiAgICAgICAgICJrZXJuLmhv
c3RuYW1lIgogICAgICAgICAia2Vybi5tYXhmaWxlc3BlcnByb2MiCiAgICAgICAgICJrZXJuLm1l
bW9yeXN0YXR1c19sZXZlbCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29y
ZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCmluZGV4IDU1YjM2OTc1
MzA2NTgyMTRiYzk3OWE4NzkyYjY2MDcyNmQ4Mjk2ZGQuLjI5ODBlYTUxNTMxNjM2NzZkYzdkZDgw
YjlkMmFlMTc1ODk3MjUxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29y
ZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaApAQCAtMSw3ICsx
LDcgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAxOTk4IExhcnMgS25vbGwgKGtub2xsQG1waS1o
ZC5tcGcuZGUpCiAgICAgQ29weXJpZ2h0IChDKSAyMDAxIERpcmsgTXVlbGxlciA8bXVlbGxlckBr
ZGUub3JnPgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNi0yMDA4LCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYtMjAw
OCwgMjAxNSwgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CkBAIC0zOSw2ICszOSwxMCBAQCBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI7CiAKIFdl
YlJlc291cmNlTG9hZFNjaGVkdWxlciYgd2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7CiAKK25h
bWVzcGFjZSBKU0MgeworY2xhc3MgQnl0ZWNvZGVDYWNoZU1ldGFkYXRhOworfQorCiBjbGFzcyBX
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TG9hZGVyU3Ry
YXRlZ3kgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYlJlc291cmNlTG9hZFNjaGVkdWxl
cik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNjAsNiArNjQsOCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHByZWNvbm5lY3RUbyhXZWJDb3JlOjpGcmFtZUxvYWRlciYsIGNv
bnN0IFVSTCYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBQcmVjb25uZWN0Q29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAKKyAgICB2b2lkIGNhY2hlQnl0ZWNvZGVGb3JTY3Jp
cHQoY29uc3QgV2ViQ29yZTo6Q2FjaGVkU2NyaXB0JiwgY29uc3QgSlNDOjpCeXRlY29kZUNhY2hl
TWV0YWRhdGEmKSBmaW5hbCB7IH0KKwogICAgIHZvaWQgc2V0Q2FwdHVyZUV4dHJhTmV0d29ya0xv
YWRNZXRyaWNzRW5hYmxlZChib29sKSBmaW5hbCB7IH0KIAogICAgIGJvb2wgaXNTZXJpYWxMb2Fk
aW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTZXJpYWxMb2FkaW5nRW5hYmxlZDsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369724</attachid>
            <date>2019-05-13 05:43:46 -0700</date>
            <delta_ts>2019-05-13 05:43:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194047-20190513144343.patch</filename>
            <type>text/plain</type>
            <size>175651</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1MjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
M2VjYjY2Y2FiZDg0NGNkMTlhMTMyY2M5MzhlMTZlZDQ4YTYyMjM0Li4wOGY0MjIzYmU0OTJiNTAx
ZWE0ODhlYTM3YWUxMDFmMGE0ZTg1MWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDUgQEAKKzIwMTktMDUtMTEgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgSW50ZWdyYXRlIEpTQyBieXRlY29kZSBjYWNoZSB3aXRoIFdlYktpdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MDQ3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIEJ5dGVjb2RlQ2FjaGVNZXRhZGF0YSwgYSBkYXRhIHN0cnVjdHVyZSBmb3IgcmVjb3Jk
aW5nIHdoaWNoIENvZGVCbG9ja3MKKyAgICAgICAgaGF2ZSBiZWVuIGV4ZWN1dGVkIHRoYXQgY2Fu
IGxhdGVyIGJlIGZlZCBiYWNrIGludG8gZ2VuZXJhdGUoUHJvZ3JhbXxNb2R1bGUpQnl0ZWNvZGUK
KyAgICAgICAgdG8gZGV0ZXJtaW5lIHdoYXQgdG8gZ2VuZXJhdGUgYnl0ZWNvZGUgZm9yLiBJdCBh
bHNvIG1ha2VzIDIgY2hhbmdlcyB0byB0aGUgY2FjaGUgdG8KKyAgICAgICAgaW1wcm92ZSBlbmNv
ZGluZyBhbmQgZGVjb2RpbmcgcGVyZm9ybWFuY2U6CisgICAgICAgIC0gQWRkIGEgY3VzdG9tIGVu
Y29kaW5nL2RlY29kaW5nIG1ldGhvZCB0byBDYWNoZWRJbnN0cnVjdGlvblN0cmVhbS4gRm9yIGVu
Y29kaW5nLCBtYWtlCisgICAgICAgICAgQ2FjaGVJbnN0cnVjdGlvblN0cmVhbSBhIFZhcmlhYmxl
TGVuZ3RoT2JqZWN0LCBzbyB0aGF0IGl0IGNhbiBhbGxvY2F0ZSBpdHMgb3duIGJ1ZmZlciBhbmQK
KyAgICAgICAgICBjb3B5IHRoZSB3aG9sZSBzdHJlYW0gd2l0aCBhIHNpbmdsZSBtZW1jcHkuIFdo
ZW4gZGVjb2RpbmcsIGNoYW5nZSBJbnN0cnVjdGlvblN0cmVhbSBzbyB0aGF0CisgICAgICAgICAg
aXQgY2FuIHVzZSB0aGUgbW1hcGVkIG1lbW9yeSBpbnN0ZWFkIG9mIGNvcHlpbmcgdGhlIHN0cmVh
bS4KKyAgICAgICAgLSBBbGxvdyBwcm92aWRpbmcgYSBmaWxlIGRlc2NyaXB0b3Igd2hlbiBlbmNv
ZGluZywgc28gdGhhdCBpbnN0ZWFkIG9mIGFsbG9jYXRpbmcgYSBiaWcKKyAgICAgICAgICBidWZm
ZXIgYW5kIHJldHVybmluZyB0aGUgYnl0ZWNvZGUgY2FjaGUgaW4gbWVtb3J5IGF0IHRoZSBlbmQg
b2YgZW5jb2RpbmcsIHdlIHdyaXRlIHRoZQorICAgICAgICAgIGNhY2hlIHN0cmFpZ2h0IHRvIHRo
ZSBmaWxlLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAgICAgICAoLVtKU1Njcmlw
dCB3cml0ZUNhY2hlOl0pOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUv
Qnl0ZWNvZGVDYWNoZU1ldGFkYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
Q2FjaGVNZXRhZGF0YTo6cmVjb3JkQ2FjaGVkRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUNhY2hlTWV0YWRhdGE6OnNob3VsZENhY2hlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVDYWNoZU1ldGFkYXRhOjpkZWNvZGUpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUNhY2hlTWV0YWRhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVDYWNoZU1ldGFkYXRhLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUNhY2hl
TWV0YWRhdGE6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUNhY2hlTWV0
YWRhdGE6OkVudHJ5OjpFbnRyeSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQ2FjaGVNZXRhZGF0
YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVDYWNoZU1ldGFkYXRhOjpk
ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjphcHBseU1vZGlmaWNhdGlvbik6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxv
Y2spOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmNwcDoKKyAgICAgICAg
KEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06Okluc3RydWN0aW9uU3RyZWFtKToKKyAgICAgICAgKEpT
Qzo6SW5zdHJ1Y3Rpb25TdHJlYW06OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
SW5zdHJ1Y3Rpb25TdHJlYW06OmNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1
Y3Rpb25TdHJlYW1SZWFkZXI6Okluc3RydWN0aW9uU3RyZWFtUmVhZGVyKToKKyAgICAgICAgKiBi
eXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5oOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0
cmVhbTo6fkluc3RydWN0aW9uU3RyZWFtKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJl
YW06OkJhc2VSZWY6OkJhc2VSZWYpOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6
QmFzZVJlZjo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW06OkJh
c2VSZWY6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVh
bTo6QmFzZVJlZjo6bmV4dCBjb25zdCk6CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFt
OjpCYXNlUmVmOjppc1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJl
YW06OkJhc2VSZWY6OnVud3JhcCBjb25zdCk6CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3Ry
ZWFtOjpiZWdpbiBjb25zdCk6CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtOjplbmQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbTo6YXQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbVJlYWRlcjo6fkluc3RydWN0aW9uU3RyZWFtUmVh
ZGVyKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1SZWFkZXI6Okluc3RydWN0aW9u
U3RyZWFtUmVhZGVyKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6Oklu
c3RydWN0aW9uU3RyZWFtV3JpdGVyKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1X
cml0ZXI6Om11dGFibGVJbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0
cmVhbVdyaXRlcjo6TXV0YWJsZVJlZjo6ZnJlZXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW5z
dHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6Ok11dGFibGVSZWY6Om9wZXJhdG9yLT4pOgorICAgICAgICAo
SlNDOjpJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjo6TXV0YWJsZVJlZjo6cHRyKToKKyAgICAgICAg
KEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6Ok11dGFibGVSZWY6Om9wZXJhdG9yIFJlZik6
CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uU3RyZWFtV3JpdGVyOjpNdXRhYmxlUmVmOjp1bndy
YXApOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjo6cmVmKToKKyAgICAg
ICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6OnNlZWspOgorICAgICAgICAoSlNDOjpJ
bnN0cnVjdGlvblN0cmVhbVdyaXRlcjo6d3JpdGUpOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlv
blN0cmVhbVdyaXRlcjo6cmV3aW5kKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1X
cml0ZXI6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6
OnN3YXApOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjo6YmVnaW4pOgor
ICAgICAgICAoSlNDOjpJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjo6ZW5kKToKKyAgICAgICAgKiBi
eXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OnVwZGF0
ZVN0b3JlZEp1bXBUYXJnZXRzRm9ySW5zdHJ1Y3Rpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUZvckluQ29u
dGV4dDo6ZmluYWxpemUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmg6Cisg
ICAgICAgIChKU0M6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OlN0YXRpY1Byb3BlcnR5QW5hbHlzaXMpOgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmg6CisgICAgICAgIChK
U0M6OlN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6OmNyZWF0ZVRoaXMpOgorICAgICAgICAoSlNDOjpT
dGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpuZXdPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvQ2Fj
aGVkQnl0ZWNvZGUuaDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkQnl0ZWNvZGU6OmNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6OkVuY29kZXI6
OkVuY29kZXIpOgorICAgICAgICAoSlNDOjpFbmNvZGVyOjpyZWxlYXNlKToKKyAgICAgICAgKEpT
Qzo6RW5jb2Rlcjo6cmVsZWFzZU1hcHBlZCk6CisgICAgICAgIChKU0M6OkNhY2hlZEluc3RydWN0
aW9uU3RyZWFtOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRJbnN0cnVjdGlvblN0cmVh
bTo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6ZW5jb2RlQ29kZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6ZW5jb2RlRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvQ2Fj
aGVkVHlwZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChK
U0M6OmdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JGdW5jdGlvbnMpOgorICAgICAgICAoSlND
OjpzZXJpYWxpemVCeXRlY29kZSk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuaDoKKyAg
ICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVBy
b2dyYW1CeXRlY29kZSk6CisgICAgICAgIChKU0M6OmdlbmVyYXRlTW9kdWxlQnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpldmFsdWF0ZSk6CisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmg6
CisKIDIwMTktMDUtMTAgIFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ2FsbCB0byBKU1RvV2FzbUlDQ2FsbGVlOjpjcmVhdGVTdHJ1Y3R1cmUgcGFzc2VzIGluIHdy
b25nIHByb3RvdHlwZSB2YWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBhNWY5ZDk2ODBjMjJlZjE0NTA1YjJkZWU4ZjVkYmYx
NWQ2Y2M0OWE2Li5iMDEyOTVlZmI1MTJiYjM2MGE5NzdlY2U1MjYxYmEwN2ZiZWEyNTQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2IEBACisyMDE5LTA1LTExICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBw
bGUuY29tPgorCisgICAgICAgIEludGVncmF0ZSBKU0MgYnl0ZWNvZGUgY2FjaGUgd2l0aCBXZWJL
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDA0
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJFTEVB
U0VfQVNTRVJUIHdoZW4gcmVhZGluZyBrZXJuLmJvb3RzZXNzaW9udXVpZC4gT3RoZXJ3aXNlLCB3
ZSBjcmFzaCB3aGVuCisgICAgICAgIHJldHVybmluZyB0aGUgdW5pbml0aWFsaXplZCBMYXp5TmV2
ZXJEZXN0cm95ZWQgdmFsdWUuCisKKyAgICAgICAgKiB3dGYvVVVJRC5jcHA6CisgICAgICAgIChX
VEY6OmJvb3RTZXNzaW9uVVVJRFN0cmluZyk6CisKIDIwMTktMDUtMTAgIFNhYW0gYmFyYXRpICA8
c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQmFnJ3MgbW92ZSBvcGVyYXRvcj0gbGVha3Mg
bWVtb3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNjI2YzU1ZjE5NzQ5OGQ0MTdiZDA0MGVhOWFmMDM1OWM0ZGFi
NWEzOC4uY2YxNDRjMjczOWYyMjNlZjNhMDE1MjBmOWIzNGIwNTMyYzU0YTMwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDUxIEBACisyMDE5LTA1LTExICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9A
YXBwbGUuY29tPgorCisgICAgICAgIEludGVncmF0ZSBKU0MgYnl0ZWNvZGUgY2FjaGUgd2l0aCBX
ZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NDA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBDYWNoZWRCeXRlY29kZSB0byBDYWNoZWRTY3JpcHQuCisgICAgICAgIEFkZCB0aGUgdHlwZSBv
ZiB0aGUgc2NyaXB0IGJlaW5nIGxvYWRlZCBpbnRvIHRoZSByZXF1ZXN0IChjbGFzc2ljIG9yIG1v
ZHVsZSkuCisgICAgICAgIE5vdGlmeSB0aGUgbG9hZGVyIHdoZW4gYnl0ZWNvZGUgc2hvdWxkIGJl
IGNhY2hlZCBmb3IgdGhlIG5leHQgcmVxdWVzdC4KKworICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFNjcmlwdEZldGNoZXI6OnJlcXVlc3RNb2R1bGVTY3JpcHQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkU2NyaXB0RmV0Y2hlcjo6cmVxdWVzdFNjcmlwdFdpdGhDYWNoZSBjb25z
dCk6CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5oOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmNwcDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnRDYWNoZWRTY3JpcHRGZXRjaGVyLmNw
cC4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyOjpjYWNoZUJ5
dGVjb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdFNvdXJjZVByb3Zp
ZGVyOjp1cGRhdGVDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHRT
b3VyY2VQcm92aWRlcjo6Y29tbWl0Q2FjaGVkQnl0ZWNvZGUgY29uc3QpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcjo6fkNhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVy
KToKKyAgICAgICAgKiBkb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6bG9hZCk6CisgICAgICAgICogZG9tL1Njcmlw
dEVsZW1lbnRDYWNoZWRTY3JpcHRGZXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEVsZW1lbnRDYWNoZWRTY3JpcHRGZXRjaGVyOjpyZXF1ZXN0TW9kdWxlU2NyaXB0IGNvbnN0KToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UHJlbG9hZFJlcXVlc3Q6OnJlc291cmNlUmVxdWVzdCk6CisgICAgICAgICog
bG9hZGVyL0xpbmtMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGlua0xvYWRlcjo6cHJl
bG9hZElmTmVlZGVkKToKKyAgICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaDoKKyAgICAg
ICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OmRpZFJldHJpZXZlRGVyaXZlZERhdGFGcm9tQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlck9w
dGlvbnMuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJldHJpZXZlRGVyaXZlZERhdGFGcm9t
Q2FjaGUpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFi
bGVMb2FkZXJPcHRpb25zOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6
OmRpZFJldHJpZXZlRGVyaXZlZERhdGFGcm9tQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpjYWNo
ZWRCeXRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmRpZFJldHJpZXZl
RGVyaXZlZERhdGFGcm9tQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuaDoKKwogMjAxOS0wNS0xMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBPdmVyZmxvdyBzY3JvbGwgdGhhdCBiZWNvbWVzIG5vbi1zY3JvbGxhYmxl
IHNob3VsZCBzdG9wIGJlaW5nIGNvbXBvc2l0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggY2RiOTA0MGJhNGUyNTVm
ZTRjZTA0ZTI2MGNjNjQyMmNkNDQ2OGI1YS4uMmY5YmVmYTA0ZWVkYzQ5ZDBlY2RjZGJjOWY5OTRh
ZWZkZjk5NTMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjAgQEAKKzIwMTktMDUtMTEgIFRhZGV1
IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CisKKyAgICAgICAgSW50ZWdyYXRlIEpTQyBi
eXRlY29kZSBjYWNoZSB3aXRoIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEJ5dGVjb2RlQ2FjaGUgdG8gdGhlIE5ldHdvcmtQcm9jZXNz
IHRvIGdlbmVyYXRlIGFuZCBzdG9yZQorICAgICAgICBieXRlY29kZSBmb3IgcmVxdWVzdHMuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjYWNo
ZUJ5dGVjb2RlRm9yUmVxdWVzdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
Ynl0ZWNvZGVDYWNoZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuVXNlQnl0ZWNvZGVDYWNoZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRS
ZXRyaWV2ZUNhY2hlRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmxvYWRCeXRlY29kZUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjpwcm9jZXNzQ2FjaGVkRW50cnlBZnRlckRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQnl0ZWNvZGVDYWNoZS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpDYWNoZUZpbGU6OkNhY2hlRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlRmls
ZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVGaWxlOjp+Q2FjaGVGaWxlKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVGaWxlOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVGaWxlOjpmZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlRmlsZTo6b3Bl
cmF0b3IhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Qnl0ZWNvZGVDYWNoZTo6UGxhbjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6Qnl0ZWNvZGVDYWNoZTo6UGxhbjo6Y29tcGlsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkJ5dGVjb2RlQ2FjaGU6OlBsYW46OlBsYW4pOgorICAgICAgICAoV2Vi
S2l0OjpCeXRlY29kZUNhY2hlOjpUaHJlYWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkJ5
dGVjb2RlQ2FjaGU6OlRocmVhZDo6VGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6Qnl0ZWNvZGVD
YWNoZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6Qnl0ZWNvZGVDYWNoZTo6Qnl0ZWNvZGVD
YWNoZSk6CisgICAgICAgIChXZWJLaXQ6OkJ5dGVjb2RlQ2FjaGU6On5CeXRlY29kZUNhY2hlKToK
KyAgICAgICAgKFdlYktpdDo6Qnl0ZWNvZGVDYWNoZTo6c3RvcmVNZXRhZGF0YUZvclJlcXVlc3Qp
OgorICAgICAgICAoV2ViS2l0OjpCeXRlY29kZUNhY2hlOjpjcmVhdGVDYWNoZUZpbGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpCeXRlY29kZUNhY2hlOjpieXRlY29kZUZvclJlcXVlc3QpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0J5dGVjb2RlQ2FjaGUuaDogQWRkZWQuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6cmV0cmlldmVGaWxlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6c3RvcmVGaWxlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpDYWNoZTo6cmVtb3ZlRmlsZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlS2V5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpLZXk6
OktleSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5Lmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6c3RvcmVGaWxlKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZXRyaWV2ZUZpbGUpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnJlbW92ZUZpbGUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3ND
b2NvYSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0
d29ya1Byb2Nlc3Muc2IuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
UHJvY2Vzc1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZv
cm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZXJp
dmVkRGF0YS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hl
ZFNjcmlwdEZldGNoZXIuaC4KKyAgICAgICAgKElQQzo6RGVyaXZlZERhdGE6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChJUEM6OkRlcml2ZWREYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9EZXJpdmVkRGF0YS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmguCisgICAgICAgIChJUEM6OkRlcml2ZWREYXRhOjpE
ZXJpdmVkRGF0YSk6CisgICAgICAgIChJUEM6OkRlcml2ZWREYXRhOjppc0VtcHR5IGNvbnN0KToK
KyAgICAgICAgKElQQzo6RGVyaXZlZERhdGE6OnR5cGUgY29uc3QpOgorICAgICAgICAoSVBDOjpE
ZXJpdmVkRGF0YTo6ZGF0YSBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5oOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcDoK
KyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb246OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6CisgICAgICAgIChBUEk6OlByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdl
YnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OmxlZ2FjeURlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEJ5dGVjb2RlQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0Qnl0ZWNvZGVDYWNoZURpcmVjdG9yeSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6bGVnYWN5V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjb3B5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24uaDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmJ5
dGVjb2RlQ2FjaGVEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbjo6c2V0Qnl0ZWNvZGVDYWNoZURpcmVjdG9yeSk6CisgICAgICAg
ICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9h
ZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpjYWNoZUJ5dGVjb2RlRm9yU2NyaXB0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
Y29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW46CisKIDIwMTktMDUtMTAgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbUFNPTl0gUHJldmVudCBmbGFzaGluZyB3aGVu
IHRoZSBwcm9jZXNzLXN3YXAgaXMgZm9yY2VkIGJ5IHRoZSBjbGllbnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VM
b2cKaW5kZXggNjk3OTBlOGU0NWZhZDBmY2Q4OTcwZjg0MzY4NjQ4MDY5ZWVhZGQzNC4uZmYyOTZl
MDdkYmQ4NDcxM2JiYjhkNjg4NTU5ZWEyMWUyNzFiNGFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxOS0wNS0xMSAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFw
cGxlLmNvbT4KKworICAgICAgICBJbnRlZ3JhdGUgSlNDIGJ5dGVjb2RlIGNhY2hlIHdpdGggV2Vi
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQw
NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBs
ZW1lbnQgTG9hZGVyU3RyYXRlZ3kncyBgY2FjaGVCeXRlY29kZUZvclNjcmlwdGAgYXMgbm8tb3Au
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaDoK
KwogMjAxOS0wNS0wMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI0NDg4MS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTU2NyaXB0Lm1tCmluZGV4IGJkYmQ2ODIyODNmMzZjNjUxNGNmMjczNmZmZGFhMDEy
Yzg1MTIwY2YuLjQ5YjY5Zjk3YWNjZjU4Y2MxZjdmZmIzNjMzMjNjNzcyNzNiM2EwYWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQubW0KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQpAQCAtMjM0LDEwICsyMzQsMTAgQEAgLSAo
Qk9PTCl3cml0ZUNhY2hlOihTdHJpbmcmKWVycm9yCiAgICAgSlNDOjpTb3VyY2VDb2RlIHNvdXJj
ZUNvZGUgPSBbc2VsZiBzb3VyY2VDb2RlXTsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNh
c2Uga0pTU2NyaXB0VHlwZU1vZHVsZToKLSAgICAgICAgbV9jYWNoZWRCeXRlY29kZSA9IEpTQzo6
Z2VuZXJhdGVNb2R1bGVCeXRlY29kZShtX3ZpcnR1YWxNYWNoaW5lLnZtLCBzb3VyY2VDb2RlLCBw
YXJzZXJFcnJvcik7CisgICAgICAgIG1fY2FjaGVkQnl0ZWNvZGUgPSBKU0M6OmdlbmVyYXRlTW9k
dWxlQnl0ZWNvZGUobV92aXJ0dWFsTWFjaGluZS52bSwgc291cmNlQ29kZSwgZmQsIHBhcnNlckVy
cm9yKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrSlNTY3JpcHRUeXBlUHJvZ3JhbToKLSAg
ICAgICAgbV9jYWNoZWRCeXRlY29kZSA9IEpTQzo6Z2VuZXJhdGVQcm9ncmFtQnl0ZWNvZGUobV92
aXJ0dWFsTWFjaGluZS52bSwgc291cmNlQ29kZSwgcGFyc2VyRXJyb3IpOworICAgICAgICBtX2Nh
Y2hlZEJ5dGVjb2RlID0gSlNDOjpnZW5lcmF0ZVByb2dyYW1CeXRlY29kZShtX3ZpcnR1YWxNYWNo
aW5lLnZtLCBzb3VyY2VDb2RlLCBmZCwgcGFyc2VyRXJyb3IpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAKQEAgLTI0NywxOCArMjQ3LDYgQEAgLSAoQk9PTCl3cml0ZUNhY2hlOihTdHJpbmcmKWVy
cm9yCiAgICAgICAgIHJldHVybiBOTzsKICAgICB9CiAKLSAgICBzc2l6ZV90IGJ5dGVzV3JpdHRl
biA9IHdyaXRlKGZkLCBtX2NhY2hlZEJ5dGVjb2RlLT5kYXRhKCksIG1fY2FjaGVkQnl0ZWNvZGUt
PnNpemUoKSk7Ci0gICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSAtMSkgewotICAgICAgICBlcnJvciA9
IG1ha2VTdHJpbmcoIkNvdWxkIG5vdCB3cml0ZSBjYWNoZSBmaWxlIHRvIGRpc2s6ICIsIHN0cmVy
cm9yKGVycm5vKSk7Ci0gICAgICAgIHJldHVybiBOTzsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihieXRlc1dyaXR0ZW4pICE9IG1fY2FjaGVkQnl0ZWNvZGUtPnNpemUoKSkg
ewotICAgICAgICBmdHJ1bmNhdGUoZmQsIDApOwotICAgICAgICBlcnJvciA9IG1ha2VTdHJpbmco
IkNvdWxkIG5vdCB3cml0ZSB0aGUgZnVsbCBjYWNoZSBmaWxlIHRvIGRpc2suIE9ubHkgd3JvdGUg
IiwgU3RyaW5nOjpudW1iZXIoYnl0ZXNXcml0dGVuKSwgIiBvZiB0aGUgZXhwZWN0ZWQgIiwgU3Ry
aW5nOjpudW1iZXIobV9jYWNoZWRCeXRlY29kZS0+c2l6ZSgpKSwgIiBieXRlcy4iKTsKLSAgICAg
ICAgcmV0dXJuIE5POwotICAgIH0KLQogICAgIHJldHVybiBZRVM7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggZTdkYzg4N2I5YWFmODE1YmIzYjgwYTdkNDJlOGEwN2Y4OTRm
ZGQwMy4uZmE1ZjE3Zjc2YzBkNTIzYjliMmRjMjlhOWJiMTA5YmVhNWQyYmMzYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc2MSw2ICs3NjEsNyBAQAogCQkxNDE0NDhDRDEzQTE3
ODM3MDBGNUJBMUEgLyogVGlueUJsb29tRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDE0NDhDQzEzQTE3ODM3MDBGNUJBMUEgLyogVGlueUJs
b29tRmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMTQxNTAxMzMxNTRCQjEzRjAwNUQ4Qzk4IC8qIFdlYWtTZXRJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDE1MDEzMjE1NEJCMTNG
MDA1RDhDOTggLyogV2Vha1NldElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDIwMUQ1OTFERUNGMjZBMDA5MDRCRDMgLyogU291cmNl
Q29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQy
MDFENTgxREVDRjI2QTAwOTA0QkQzIC8qIFNvdXJjZUNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDI0M0NDMzIxRjI3N0RDMDA0QjI2NEUg
LyogQnl0ZWNvZGVDYWNoZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDI0M0NDMjIxRjI3N0QyMDA0QjI2NEUgLyogQnl0ZWNvZGVDYWNo
ZU1ldGFkYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMTQyOUQ3N0MwRUQyMEQ3MzAwQjg5NjE5IC8qIEludGVycHJldGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDI5RDc3QjBFRDIwRDczMDBC
ODk2MTkgLyogSW50ZXJwcmV0ZXIuaCAqLzsgfTsKIAkJMTQyOUQ4REUwRUQyMjA1QjAwQjg5NjE5
IC8qIENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTQyOUQ4REMwRUQyMjA1QjAwQjg5NjE5IC8qIENhbGxGcmFtZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MjlEOTMwMEVEMjJENzAw
MEI4OTYxOSAvKiBKSVQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0MjlEOTJFMEVEMjJENzAwMEI4OTYxOSAvKiBKSVQuaCAqLzsgfTsKQEAgLTMxNjQs
NiArMzE2NSw3IEBACiAJCTE0MTUwMTMyMTU0QkIxM0YwMDVEOEM5OCAvKiBXZWFrU2V0SW5saW5l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrU2V0SW5saW5lcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDIwMUQ1ODFERUNGMjZBMDA5MDRCRDMgLyog
U291cmNlQ29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VDb2Rl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MjEzNTlBMEE2NzdGNEYwMEE4MTk1
RSAvKiBKU0Jhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNC
YXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQyNDNDQzIyMUYyNzdEMjAw
NEIyNjRFIC8qIEJ5dGVjb2RlQ2FjaGVNZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCeXRlY29kZUNhY2hlTWV0YWRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMTQyNzExMzgwQTQ2MEJCQjAwODBFRUVBIC8qIEpTQmFzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Jhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMTQyOUQ3N0IwRUQyMEQ3MzAwQjg5NjE5IC8qIEludGVycHJldGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVycHJldGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0MjlEN0QzMEVEMjEyODIwMEI4OTYxOSAvKiBJbnRlcnByZXRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRlcnByZXRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03ODcyLDYgKzc4NzQsNyBAQAogCQkJCTBGNjM5
NDUyMTVEMDcwNTEwMDZBNTk3QyAvKiBBcnJheVByb2ZpbGUuaCAqLywKIAkJCQlDMkZDQUUwQzE3
QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCAqLywKIAkJCQlDMkZDQUUw
RDE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVCYXNpY0Jsb2NrLmggKi8sCisJCQkJMTQyNDND
QzIyMUYyNzdEMjAwNEIyNjRFIC8qIEJ5dGVjb2RlQ2FjaGVNZXRhZGF0YS5oICovLAogCQkJCTBG
MjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8sCiAJCQkJ
RTNEODc3NzExRTY1QzA4OTAwQkU5NDVBIC8qIEJ5dGVjb2RlRHVtcGVyLmNwcCAqLywKIAkJCQlF
M0Q4Nzc3MjFFNjVDMDg5MDBCRTk0NUEgLyogQnl0ZWNvZGVEdW1wZXIuaCAqLywKQEAgLTg3NjEs
NiArODc2NCw3IEBACiAJCQkJMEZCN0YzOTcxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZseS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTgxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZs
eUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRkNBRTExMTdBOUMyNEUwMDM0QzczNSAv
KiBCeXRlY29kZUJhc2ljQmxvY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTE0MjQzQ0MzMjFGMjc3
REMwMDRCMjY0RSAvKiBCeXRlY29kZUNhY2hlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFM0Q4Nzc3NDFFNjVDMEEwMDBCRTk0NUEgLyogQnl0ZWNvZGVEdW1wZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzIzMEVEMUNFMzMwMEYxRjY4MSAvKiBCeXRlY29k
ZUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5k
ZXggZjU1MzQ0NDEzOTBkMWE2MDhhYWUwZGMyOGZmYmVmMzE4NjgzMjliNC4uMjU2Yzc2NjcyNGZj
NTY1NzkxYTE1MWVhNWYyM2JjNWI1NzM3M2UyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dApAQCAtMTkzLDYgKzE5Myw3IEBAIGJ5dGVjb2RlL0FyaXRoUHJvZmlsZS5jcHAKIGJ5dGVjb2Rl
L0FycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwCiBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiBi
eXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCitieXRlY29kZS9CeXRlY29kZUNhY2hlTWV0
YWRhdGEuY3BwCiBieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKIGJ5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmNwcAogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUNhY2hlTWV0YWRhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlQ2FjaGVNZXRhZGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UwNDU4NGQ4OWM4OTI1OThlOGY0MDM4
MGY2ZTE1MmZkMmJjODFjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUNhY2hlTWV0YWRhdGEuY3BwCkBAIC0wLDAgKzEsODYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVDYWNoZU1ldGFkYXRhLmgiCisKKyNpbmNsdWRlICJT
b3VyY2VDb2RlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIEJ5dGVjb2RlQ2FjaGVNZXRh
ZGF0YTo6cmVjb3JkQ2FjaGVkRnVuY3Rpb25Db2RlQmxvY2soY29uc3QgU291cmNlQ29kZSYgc291
cmNlQ29kZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIGF1dG8gcmVzdWx0
ID0gbV9tYXAuYWRkKHNvdXJjZUNvZGUuc3RhcnRPZmZzZXQoKSwgRW50cnkgeyB9KTsKKyAgICBz
d2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIENvZGVGb3JDYWxsOgorICAgICAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLm1fY29kZUZvckNhbGwgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENvZGVGb3JDb25zdHJ1Y3Q6CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUubV9j
b2RlRm9yQ29uc3RydXQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK2Jvb2wg
Qnl0ZWNvZGVDYWNoZU1ldGFkYXRhOjpzaG91bGRDYWNoZShjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2VDb2RlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpIGNvbnN0Cit7CisgICAgYXV0byBp
dGVyYXRvciA9IG1fbWFwLmZpbmQoc291cmNlQ29kZS5zdGFydE9mZnNldCgpKTsKKyAgICBpZiAo
aXRlcmF0b3IgPT0gbV9tYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3
aXRjaCAoa2luZCkgeworICAgIGNhc2UgQ29kZUZvckNhbGw6CisgICAgICAgIHJldHVybiBpdGVy
YXRvci0+dmFsdWUubV9jb2RlRm9yQ2FsbDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb2Rl
Rm9yQ29uc3RydWN0OgorICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlLm1fY29kZUZvckNv
bnN0cnV0OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK0J5dGVjb2RlQ2FjaGVNZXRhZGF0
YSBCeXRlY29kZUNhY2hlTWV0YWRhdGE6OmRlY29kZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkKK3sKKyAgICBBU1NFUlQoIShzaXplICUgc2l6ZW9mKEVuY29kZWRFbnRyeSkpKTsK
KyAgICBzaXplX3QgbGVuZ3RoID0gc2l6ZSAvIHNpemVvZihFbmNvZGVkRW50cnkpOworICAgIEVu
Y29kZWRFbnRyeSogZW50cmllcyA9IGJpdHdpc2VfY2FzdDxFbmNvZGVkRW50cnkqPihkYXRhKTsK
KyAgICBCeXRlY29kZUNhY2hlTWV0YWRhdGEgbWV0YWRhdGE7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxlbmd0aDsgaSsrKQorICAgICAgICBtZXRhZGF0YS5tX21hcC5hZGQoZW50cmll
c1tpXS5rZXksIGVudHJpZXNbaV0udmFsdWUpOworICAgIHJldHVybiBtZXRhZGF0YTsKK30KKwor
c3RkOjpwYWlyPE1hbGxvY1B0cjx1aW50OF90Piwgc2l6ZV90PiBCeXRlY29kZUNhY2hlTWV0YWRh
dGE6OmVuY29kZSgpIGNvbnN0Cit7CisgICAgc2l6ZV90IHNpemUgPSBtX21hcC5zaXplKCkgKiBz
aXplb2YoRW5jb2RlZEVudHJ5KTsKKyAgICBNYWxsb2NQdHI8dWludDhfdD4gZGF0YSA9IE1hbGxv
Y1B0cjx1aW50OF90Pjo6bWFsbG9jKHNpemUpOworICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7Cisg
ICAgZm9yIChjb25zdCBFbmNvZGVkRW50cnkmIGVudHJ5IDogbV9tYXApIHsKKyAgICAgICAgdWlu
dDhfdCogcHRyID0gZGF0YS5nZXQoKSArIChvZmZzZXQgKiBzaXplb2YoRW5jb2RlZEVudHJ5KSk7
CisgICAgICAgIG1lbWNweShwdHIsICZlbnRyeSwgc2l6ZW9mKGVudHJ5KSk7CisgICAgICAgICsr
b2Zmc2V0OworICAgIH0KKyAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoV1RGTW92ZShkYXRhKSwg
c2l6ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ2FjaGVNZXRhZGF0YS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ2FjaGVNZXRhZGF0YS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcw
NDE4OTkzNjEzODYxODVjZDI1MzVmZDJjZjkyODJlZTAxZDM4Y2EKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDYWNoZU1ldGFkYXRhLmgK
QEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5o
IgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL01hbGxvY1B0ci5oPgor
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU291
cmNlQ29kZTsKKworY2xhc3MgQnl0ZWNvZGVDYWNoZU1ldGFkYXRhIHsKKyAgICBjbGFzcyBFbnRy
eTsKKworICAgIHVzaW5nIEVuY29kZWRFbnRyeSA9IEtleVZhbHVlUGFpcjxpbnQsIEVudHJ5PjsK
KworcHVibGljOgorCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9tYXAuaXNF
bXB0eSgpOyB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlY29yZENhY2hlZEZ1bmN0
aW9uQ29kZUJsb2NrKGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHNob3VsZENhY2hlKGNvbnN0IFNvdXJjZUNvZGUm
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKSBjb25zdDsKKworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBCeXRlY29kZUNhY2hlTWV0YWRhdGEgZGVjb2RlKGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0ZDo6cGFpcjxNYWxsb2NQdHI8dWludDhfdD4s
IHNpemVfdD4gZW5jb2RlKCkgY29uc3Q7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVy
PgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPEJ5dGVjb2RlQ2FjaGVNZXRhZGF0YT4g
ZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBjbGFzcyBFbnRyeSB7CisgICAgICAg
IGZyaWVuZCBjbGFzcyBCeXRlY29kZUNhY2hlTWV0YWRhdGE7CisKKyAgICBwdWJsaWM6CisgICAg
ICAgIEVudHJ5KCkKKyAgICAgICAgICAgIDogbV9jb2RlRm9yQ2FsbChmYWxzZSkKKyAgICAgICAg
ICAgICwgbV9jb2RlRm9yQ29uc3RydXQoZmFsc2UpCisgICAgICAgIHsKKyAgICAgICAgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBtX2NvZGVGb3JDYWxsIDogMTsKKyAgICAgICAgYm9v
bCBtX2NvZGVGb3JDb25zdHJ1dCA6IDE7CisgICAgfTsKKworICAgIEhhc2hNYXA8aW50LCBFbnRy
eT4gbV9tYXA7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgordm9pZCBCeXRlY29k
ZUNhY2hlTWV0YWRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIHN0
ZDo6cGFpcjxNYWxsb2NQdHI8dWludDhfdD4sIHNpemVfdD4gZGF0YSA9IGVuY29kZSgpOworICAg
IGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGRhdGEuc2Vjb25kKTsKKyAgICBlbmNv
ZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRhLmZpcnN0LmdldCgpLCBkYXRhLnNlY29uZCwg
YWxpZ25vZihFbmNvZGVkRW50cnkpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4K
K09wdGlvbmFsPEJ5dGVjb2RlQ2FjaGVNZXRhZGF0YT4gQnl0ZWNvZGVDYWNoZU1ldGFkYXRhOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICB1aW50NjRfdCBzaXplOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
TWFsbG9jUHRyPHVpbnQ4X3Q+IGRhdGEgPSBNYWxsb2NQdHI8dWludDhfdD46Om1hbGxvYyhzaXpl
KTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGEuZ2V0KCksIHNp
emUsIGFsaWdub2YoRW5jb2RlZEVudHJ5KSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIEJ5dGVjb2RlQ2FjaGVNZXRhZGF0YTo6ZGVjb2RlKGRhdGEuZ2V0KCksIHNp
emUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcAppbmRleCA0YmJkMTEzMmU5Zjc1YTY0
MTFkN2E3MzZkODM2Y2Y5M2ZiMTBmZjdiLi4yYWNjODVjNzIxYWVmOWVkODY0Y2RhNTk5NjIyZDEy
ZGVjYWJlM2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVSZXdyaXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlUmV3cml0ZXIuY3BwCkBAIC0zOCwxMyArMzgsMTMgQEAgdm9pZCBCeXRlY29kZVJld3Jp
dGVyOjphcHBseU1vZGlmaWNhdGlvbigpCiAgICAgZm9yIChzaXplX3QgaW5zZXJ0aW9uSW5kZXgg
PSBtX2luc2VydGlvbnMuc2l6ZSgpOyBpbnNlcnRpb25JbmRleC0tOykgewogICAgICAgICBJbnNl
cnRpb24mIGluc2VydGlvbiA9IG1faW5zZXJ0aW9uc1tpbnNlcnRpb25JbmRleF07CiAgICAgICAg
IGlmIChpbnNlcnRpb24udHlwZSA9PSBJbnNlcnRpb246OlR5cGU6OlJlbW92ZSkKLSAgICAgICAg
ICAgIG1fd3JpdGVyLm1faW5zdHJ1Y3Rpb25zLnJlbW92ZShpbnNlcnRpb24uaW5kZXguYnl0ZWNv
ZGVPZmZzZXQsIGluc2VydGlvbi5sZW5ndGgoKSk7CisgICAgICAgICAgICBtX3dyaXRlci5tX3N0
cmVhbS5yZW1vdmUoaW5zZXJ0aW9uLmluZGV4LmJ5dGVjb2RlT2Zmc2V0LCBpbnNlcnRpb24ubGVu
Z3RoKCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmIChpbnNlcnRpb24uaW5jbHVk
ZUJyYW5jaCA9PSBJbmNsdWRlQnJhbmNoOjpZZXMpIHsKICAgICAgICAgICAgICAgICBpbnQgZmlu
YWxPZmZzZXQgPSBpbnNlcnRpb24uaW5kZXguYnl0ZWNvZGVPZmZzZXQgKyBjYWxjdWxhdGVEaWZm
ZXJlbmNlKG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuYmVnaW4oKSArIGluc2Vy
dGlvbkluZGV4KTsKICAgICAgICAgICAgICAgICBhZGp1c3RKdW1wVGFyZ2V0c0luRnJhZ21lbnQo
ZmluYWxPZmZzZXQsIGluc2VydGlvbik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX3dy
aXRlci5tX2luc3RydWN0aW9ucy5pbnNlcnRWZWN0b3IoaW5zZXJ0aW9uLmluZGV4LmJ5dGVjb2Rl
T2Zmc2V0LCBpbnNlcnRpb24uaW5zdHJ1Y3Rpb25zLm1faW5zdHJ1Y3Rpb25zKTsKKyAgICAgICAg
ICAgIG1fd3JpdGVyLm1fc3RyZWFtLmluc2VydFZlY3RvcihpbnNlcnRpb24uaW5kZXguYnl0ZWNv
ZGVPZmZzZXQsIGluc2VydGlvbi5pbnN0cnVjdGlvbnMubV9zdHJlYW0pOwogICAgICAgICB9CiAg
ICAgfQogICAgIG1faW5zZXJ0aW9ucy5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBkYjI4ZjY3ZTJkMTdiMzAzOTU1MDA0ODRlODY5
NDVhN2NlMWU5ZDhhLi42OWZkNDE5ZTg2NjdhMDQ4MDc4NGEzZTZkMjdlY2ZhZjE2N2QwMGViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMzYw
LDcgKzM2MCw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0CiAgICAgLCBtX3VubGlua2VkQ29k
ZSgqdm0sIHRoaXMsIHVubGlua2VkQ29kZUJsb2NrKQogICAgICwgbV9vd25lckV4ZWN1dGFibGUo
KnZtLCB0aGlzLCBvd25lckV4ZWN1dGFibGUpCiAgICAgLCBtX3ZtKHZtKQotICAgICwgbV9pbnN0
cnVjdGlvbnNSYXdQb2ludGVyKHVubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5yYXdQ
b2ludGVyKCkpCisgICAgLCBtX2luc3RydWN0aW9uc1Jhd1BvaW50ZXIodW5saW5rZWRDb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmluc3RydWN0aW9ucygpKQogICAgICwgbV9vc3JFeGl0Q291bnRl
cigwKQogICAgICwgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoMCkKICAgICAsIG1fcmVvcHRp
bWl6YXRpb25SZXRyeUNvdW50ZXIoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0cnVjdGlvblN0cmVhbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwCmluZGV4IDUxNGNmMTEyNTNlYjRhMjg2OTRj
ODBmZThlNTIyYTYyMzNmZDk3NzMuLjFmZmIyMTIxZGFlMmJhMDk1NDRiZTg1ZWEwNTdmYjE1OTg5
NmM0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVj
dGlvblN0cmVhbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3Ry
dWN0aW9uU3RyZWFtLmNwcApAQCAtMzEsMjAgKzMxLDI2IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1JbnN0cnVjdGlvblN0cmVhbTo6SW5zdHJ1Y3Rpb25TdHJlYW0oSW5zdHJ1Y3Rpb25CdWZmZXIm
JiBpbnN0cnVjdGlvbnMpCi0gICAgOiBtX2luc3RydWN0aW9ucyhXVEZNb3ZlKGluc3RydWN0aW9u
cykpCitJbnN0cnVjdGlvblN0cmVhbTo6SW5zdHJ1Y3Rpb25TdHJlYW0oKQogeyB9CiAKIHNpemVf
dCBJbnN0cnVjdGlvblN0cmVhbTo6c2l6ZUluQnl0ZXMoKSBjb25zdAogewotICAgIHJldHVybiBt
X2luc3RydWN0aW9ucy5zaXplKCk7CisgICAgcmV0dXJuIHNpemUoKTsKIH0KIAogYm9vbCBJbnN0
cnVjdGlvblN0cmVhbTo6Y29udGFpbnMoSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKSBjb25zdAog
ewogCiAgICAgY29uc3QgdWludDhfdCogcG9pbnRlciA9IGJpdHdpc2VfY2FzdDxjb25zdCB1aW50
OF90Kj4oaW5zdHJ1Y3Rpb24pOwotICAgIHJldHVybiBwb2ludGVyID49IG1faW5zdHJ1Y3Rpb25z
LmRhdGEoKSAmJiBwb2ludGVyIDwgKG1faW5zdHJ1Y3Rpb25zLmRhdGEoKSArIG1faW5zdHJ1Y3Rp
b25zLnNpemUoKSk7CisgICAgcmV0dXJuIHBvaW50ZXIgPj0gaW5zdHJ1Y3Rpb25zKCkgJiYgcG9p
bnRlciA8IChpbnN0cnVjdGlvbnMoKSArIHNpemUoKSk7CiB9CiAKK0luc3RydWN0aW9uU3RyZWFt
UmVhZGVyOjpJbnN0cnVjdGlvblN0cmVhbVJlYWRlcihJbnN0cnVjdGlvblZlY3RvciYmIHZlY3Rv
cikKKyAgICA6IG1fb3duZWQodHJ1ZSkKKyAgICAsIG1fc2l6ZSh2ZWN0b3Iuc2l6ZSgpKQorICAg
ICwgbV9pbnN0cnVjdGlvbnModmVjdG9yLnJlbGVhc2VCdWZmZXIoKS5sZWFrUHRyKCkpCit7CiB9
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luc3RydWN0aW9uU3RyZWFtLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdHJ1Y3Rpb25TdHJlYW0uaAppbmRleCBjZTk2MDdiMzcyZjNiZGE1MjlhOWI1ZTFm
YmM3NGFiNjBmNWMyNTg0Li41ZjgyMzk2N2QzMzU2NTNiNDU3ODg4OTBlNDcxNjMwZDQ1YTNiN2I3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25T
dHJlYW0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb25T
dHJlYW0uaApAQCAtMzEsNTAgKzMxLDUzIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBJ
bnN0cnVjdGlvblN0cmVhbVdyaXRlcjsKIHN0cnVjdCBJbnN0cnVjdGlvbjsKIAordXNpbmcgSW5z
dHJ1Y3Rpb25WZWN0b3IgPSBWZWN0b3I8dWludDhfdCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+
OworCiBjbGFzcyBJbnN0cnVjdGlvblN0cmVhbSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAKLSAgICB1c2luZyBJbnN0cnVjdGlvbkJ1ZmZlciA9IFZlY3Rvcjx1aW50OF90LCAwLCBV
bnNhZmVWZWN0b3JPdmVyZmxvdz47Ci0KICAgICBmcmllbmQgY2xhc3MgSW5zdHJ1Y3Rpb25TdHJl
YW1Xcml0ZXI7CiAgICAgZnJpZW5kIGNsYXNzIENhY2hlZEluc3RydWN0aW9uU3RyZWFtOwogcHVi
bGljOgorICAgIHZpcnR1YWwgfkluc3RydWN0aW9uU3RyZWFtKCkgeyB9CisKICAgICBzaXplX3Qg
c2l6ZUluQnl0ZXMoKSBjb25zdDsKIAogICAgIHVzaW5nIE9mZnNldCA9IHVuc2lnbmVkOwogCiBw
cml2YXRlOgotICAgIHRlbXBsYXRlPGNsYXNzIEluc3RydWN0aW9uQnVmZmVyPgorICAgIHRlbXBs
YXRlPGNsYXNzIEluc3RydWN0aW9uU3RyZWFtPgogICAgIGNsYXNzIEJhc2VSZWYgewogICAgICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAotICAgICAgICBmcmllbmQgY2xhc3MgSW5zdHJ1
Y3Rpb25TdHJlYW07CisgICAgICAgIGZyaWVuZCBJbnN0cnVjdGlvblN0cmVhbTsKIAogICAgIHB1
YmxpYzoKLSAgICAgICAgQmFzZVJlZihjb25zdCBCYXNlUmVmPEluc3RydWN0aW9uQnVmZmVyPiYg
b3RoZXIpCi0gICAgICAgICAgICA6IG1faW5zdHJ1Y3Rpb25zKG90aGVyLm1faW5zdHJ1Y3Rpb25z
KQotICAgICAgICAgICAgLCAgbV9pbmRleChvdGhlci5tX2luZGV4KQorICAgICAgICBCYXNlUmVm
KGNvbnN0IEJhc2VSZWY8SW5zdHJ1Y3Rpb25TdHJlYW0+JiBvdGhlcikKKyAgICAgICAgICAgIDog
bV9zdHJlYW0ob3RoZXIubV9zdHJlYW0pCisgICAgICAgICAgICAsIG1faW5kZXgob3RoZXIubV9p
bmRleCkKICAgICAgICAgeyB9CiAKLSAgICAgICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgQmFzZVJl
ZjxJbnN0cnVjdGlvbkJ1ZmZlcj4mIG90aGVyKQorICAgICAgICB2b2lkIG9wZXJhdG9yPShjb25z
dCBCYXNlUmVmPEluc3RydWN0aW9uU3RyZWFtPiYgb3RoZXIpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIG1faW5zdHJ1Y3Rpb25zID0gb3RoZXIubV9pbnN0cnVjdGlvbnM7CisgICAgICAgICAgICBt
X3N0cmVhbSA9IG90aGVyLm1fc3RyZWFtOwogICAgICAgICAgICAgbV9pbmRleCA9IG90aGVyLm1f
aW5kZXg7CiAgICAgICAgIH0KIAogICAgICAgICBpbmxpbmUgY29uc3QgSW5zdHJ1Y3Rpb24qIG9w
ZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiB1bndyYXAoKTsgfQogICAgICAgICBpbmxpbmUgY29u
c3QgSW5zdHJ1Y3Rpb24qIHB0cigpIGNvbnN0IHsgcmV0dXJuIHVud3JhcCgpOyB9CiAKLSAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJhc2VSZWY8SW5zdHJ1Y3Rpb25CdWZmZXI+JiBvdGhl
cikgY29uc3QKKyAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJhc2VSZWY8SW5zdHJ1Y3Rp
b25TdHJlYW0+JiBvdGhlcikgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZt
X2luc3RydWN0aW9ucyAhPSAmb3RoZXIubV9pbnN0cnVjdGlvbnMgfHwgbV9pbmRleCAhPSBvdGhl
ci5tX2luZGV4OworICAgICAgICAgICAgcmV0dXJuICZtX3N0cmVhbSAhPSAmb3RoZXIubV9zdHJl
YW0gfHwgbV9pbmRleCAhPSBvdGhlci5tX2luZGV4OwogICAgICAgICB9CiAKICAgICAgICAgQmFz
ZVJlZiBuZXh0KCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEJhc2VSZWYg
eyBtX2luc3RydWN0aW9ucywgbV9pbmRleCArIHB0cigpLT5zaXplKCkgfTsKKyAgICAgICAgICAg
IHJldHVybiBCYXNlUmVmIHsgbV9zdHJlYW0sIG1faW5kZXggKyBwdHIoKS0+c2l6ZSgpIH07CiAg
ICAgICAgIH0KIAogICAgICAgICBpbmxpbmUgT2Zmc2V0IG9mZnNldCgpIGNvbnN0CkBAIC04NCw0
MyArODcsMjMgQEAgcHJpdmF0ZToKIAogICAgICAgICBib29sIGlzVmFsaWQoKSBjb25zdAogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9pbmRleCA8IG1faW5zdHJ1Y3Rpb25zLnNpemUo
KTsKKyAgICAgICAgICAgIHJldHVybiBtX2luZGV4IDwgbV9zdHJlYW0uc2l6ZSgpOwogICAgICAg
ICB9CiAKLSAgICBwcml2YXRlOgotICAgICAgICBpbmxpbmUgY29uc3QgSW5zdHJ1Y3Rpb24qIHVu
d3JhcCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW5zdHJ1Y3Rpb24q
PigmbV9pbnN0cnVjdGlvbnNbbV9pbmRleF0pOyB9Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAg
IEJhc2VSZWYoSW5zdHJ1Y3Rpb25CdWZmZXImIGluc3RydWN0aW9ucywgc2l6ZV90IGluZGV4KQot
ICAgICAgICAgICAgOiBtX2luc3RydWN0aW9ucyhpbnN0cnVjdGlvbnMpCisgICAgICAgIEJhc2VS
ZWYoSW5zdHJ1Y3Rpb25TdHJlYW0mIHN0cmVhbSwgc2l6ZV90IGluZGV4KQorICAgICAgICAgICAg
OiBtX3N0cmVhbShzdHJlYW0pCiAgICAgICAgICAgICAsIG1faW5kZXgoaW5kZXgpCiAgICAgICAg
IHsgfQogCi0gICAgICAgIEluc3RydWN0aW9uQnVmZmVyJiBtX2luc3RydWN0aW9uczsKKyAgICBw
cml2YXRlOgorICAgICAgICBpbmxpbmUgY29uc3QgSW5zdHJ1Y3Rpb24qIHVud3JhcCgpIGNvbnN0
IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW5zdHJ1Y3Rpb24qPigmbV9zdHJlYW0u
aW5zdHJ1Y3Rpb25zKClbbV9pbmRleF0pOyB9CisKKyAgICAgICAgSW5zdHJ1Y3Rpb25TdHJlYW0m
IG1fc3RyZWFtOwogICAgICAgICBPZmZzZXQgbV9pbmRleDsKICAgICB9OwogCiBwdWJsaWM6Ci0g
ICAgdXNpbmcgUmVmID0gQmFzZVJlZjxjb25zdCBJbnN0cnVjdGlvbkJ1ZmZlcj47Ci0KLSAgICBj
bGFzcyBNdXRhYmxlUmVmIDogcHVibGljIEJhc2VSZWY8SW5zdHJ1Y3Rpb25CdWZmZXI+IHsKLSAg
ICAgICAgZnJpZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyOwotCi0gICAgcHJvdGVj
dGVkOgotICAgICAgICB1c2luZyBCYXNlUmVmPEluc3RydWN0aW9uQnVmZmVyPjo6QmFzZVJlZjsK
LQotICAgIHB1YmxpYzoKLSAgICAgICAgUmVmIGZyZWV6ZSgpIGNvbnN0ICB7IHJldHVybiBSZWYg
eyBtX2luc3RydWN0aW9ucywgbV9pbmRleCB9OyB9Ci0gICAgICAgIGlubGluZSBJbnN0cnVjdGlv
biogb3BlcmF0b3ItPigpIHsgcmV0dXJuIHVud3JhcCgpOyB9Ci0gICAgICAgIGlubGluZSBJbnN0
cnVjdGlvbiogcHRyKCkgeyByZXR1cm4gdW53cmFwKCk7IH0KLSAgICAgICAgaW5saW5lIG9wZXJh
dG9yIFJlZigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBSZWYgeyBtX2luc3RydWN0
aW9ucywgbV9pbmRleCB9OwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBpbmxp
bmUgSW5zdHJ1Y3Rpb24qIHVud3JhcCgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SW5zdHJ1
Y3Rpb24qPigmbV9pbnN0cnVjdGlvbnNbbV9pbmRleF0pOyB9Ci0gICAgfTsKKyAgICB1c2luZyBS
ZWYgPSBCYXNlUmVmPGNvbnN0IEluc3RydWN0aW9uU3RyZWFtPjsKIAogcHJpdmF0ZToKICAgICBj
bGFzcyBpdGVyYXRvciA6IHB1YmxpYyBSZWYgewpAQCAtMTQ0LDU0ICsxMjcsMTExIEBAIHByaXZh
dGU6CiBwdWJsaWM6CiAgICAgaW5saW5lIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiBpdGVyYXRvciB7IG1faW5zdHJ1Y3Rpb25zLCAwIH07CisgICAgICAgIHJl
dHVybiBpdGVyYXRvciB7ICp0aGlzLCAwIH07CiAgICAgfQogCiAgICAgaW5saW5lIGl0ZXJhdG9y
IGVuZCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gaXRlcmF0b3IgeyBtX2luc3RydWN0
aW9ucywgbV9pbnN0cnVjdGlvbnMuc2l6ZSgpIH07CisgICAgICAgIHJldHVybiBpdGVyYXRvciB7
ICp0aGlzLCBzaXplKCkgfTsKICAgICB9CiAKICAgICBpbmxpbmUgY29uc3QgUmVmIGF0KE9mZnNl
dCBvZmZzZXQpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQob2Zmc2V0IDwgbV9pbnN0cnVj
dGlvbnMuc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIFJlZiB7IG1faW5zdHJ1Y3Rpb25zLCBvZmZz
ZXQgfTsKKyAgICAgICAgQVNTRVJUKG9mZnNldCA8IHNpemUoKSk7CisgICAgICAgIHJldHVybiBS
ZWYgeyAqdGhpcywgb2Zmc2V0IH07CiAgICAgfQogCi0gICAgaW5saW5lIHNpemVfdCBzaXplKCkg
Y29uc3QKKyAgICB2aXJ0dWFsIHNpemVfdCBzaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Y29uc3QgdWludDhfdCogaW5zdHJ1Y3Rpb25zKCkgY29uc3QgPSAwOworCisgICAgYm9vbCBjb250
YWlucyhJbnN0cnVjdGlvbiAqKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIEluc3RydWN0aW9u
U3RyZWFtKCk7Cit9OworCitjbGFzcyBJbnN0cnVjdGlvblN0cmVhbVJlYWRlciA6IHB1YmxpYyBJ
bnN0cnVjdGlvblN0cmVhbSB7CisgICAgZnJpZW5kIGNsYXNzIENhY2hlZEluc3RydWN0aW9uU3Ry
ZWFtOworCitwdWJsaWM6CisgICAgSW5zdHJ1Y3Rpb25TdHJlYW1SZWFkZXIoSW5zdHJ1Y3Rpb25W
ZWN0b3ImJik7CisKKyAgICBjb25zdCB1aW50OF90KiBpbnN0cnVjdGlvbnMoKSBjb25zdCBvdmVy
cmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLnNpemUoKTsKKyAgICAg
ICAgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOwogICAgIH0KIAotICAgIGNvbnN0IHZvaWQqIHJhd1Bv
aW50ZXIoKSBjb25zdAorICAgIHNpemVfdCBzaXplKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0g
ICAgICAgIHJldHVybiBtX2luc3RydWN0aW9ucy5kYXRhKCk7CisgICAgICAgIHJldHVybiBtX3Np
emU7CiAgICAgfQogCi0gICAgYm9vbCBjb250YWlucyhJbnN0cnVjdGlvbiAqKSBjb25zdDsKKyAg
ICB+SW5zdHJ1Y3Rpb25TdHJlYW1SZWFkZXIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fb3duZWQp
CisgICAgICAgICAgICBmYXN0RnJlZShjb25zdF9jYXN0PHVpbnQ4X3QqPihtX2luc3RydWN0aW9u
cykpOworICAgIH0KIAotcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IEluc3RydWN0aW9uU3RyZWFt
KEluc3RydWN0aW9uQnVmZmVyJiYpOworcHJpdmF0ZToKKyAgICBJbnN0cnVjdGlvblN0cmVhbVJl
YWRlcigpCisgICAgeworICAgIH0KIAotICAgIEluc3RydWN0aW9uQnVmZmVyIG1faW5zdHJ1Y3Rp
b25zOworICAgIGJvb2wgbV9vd25lZCB7IGZhbHNlIH07CisgICAgc2l6ZV90IG1fc2l6ZTsKKyAg
ICBjb25zdCB1aW50OF90KiBtX2luc3RydWN0aW9uczsKIH07CiAKIGNsYXNzIEluc3RydWN0aW9u
U3RyZWFtV3JpdGVyIDogcHVibGljIEluc3RydWN0aW9uU3RyZWFtIHsKICAgICBmcmllbmQgY2xh
c3MgQnl0ZWNvZGVSZXdyaXRlcjsKIHB1YmxpYzoKLSAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRl
cigpCi0gICAgICAgIDogSW5zdHJ1Y3Rpb25TdHJlYW0oeyB9KQotICAgIHsgfQorICAgIEluc3Ry
dWN0aW9uU3RyZWFtV3JpdGVyKCkgeyB9CisKKyAgICBjb25zdCB1aW50OF90KiBpbnN0cnVjdGlv
bnMoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3RyZWFtLmRhdGEo
KTsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAg
ICAgICByZXR1cm4gbV9zdHJlYW0uc2l6ZSgpOworICAgIH0KKworICAgIHVpbnQ4X3QqIG11dGFi
bGVJbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3RyZWFtLmRhdGEoKTsK
KyAgICB9CisKKworICAgIGNsYXNzIE11dGFibGVSZWYgOiBwdWJsaWMgQmFzZVJlZjxJbnN0cnVj
dGlvblN0cmVhbVdyaXRlcj4geworICAgICAgICBmcmllbmQgY2xhc3MgSW5zdHJ1Y3Rpb25TdHJl
YW1Xcml0ZXI7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHVzaW5nIEJhc2VSZWY8SW5zdHJ1
Y3Rpb25TdHJlYW1Xcml0ZXI+OjpCYXNlUmVmOworCisgICAgcHVibGljOgorICAgICAgICBSZWYg
ZnJlZXplKCkgY29uc3QgeyByZXR1cm4gUmVmIHsgbV9zdHJlYW0sIG1faW5kZXggfTsgfQorICAg
ICAgICBpbmxpbmUgSW5zdHJ1Y3Rpb24qIG9wZXJhdG9yLT4oKSB7IHJldHVybiB1bndyYXAoKTsg
fQorICAgICAgICBpbmxpbmUgSW5zdHJ1Y3Rpb24qIHB0cigpIHsgcmV0dXJuIHVud3JhcCgpOyB9
CisgICAgICAgIGlubGluZSBvcGVyYXRvciBSZWYoKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gUmVmIHsgbV9zdHJlYW0sIG1faW5kZXggfTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0
ZToKKyAgICAgICAgaW5saW5lIEluc3RydWN0aW9uKiB1bndyYXAoKSB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PEluc3RydWN0aW9uKj4oJm1fc3RyZWFtLm11dGFibGVJbnN0cnVjdGlvbnMoKVtt
X2luZGV4XSk7IH0KKyAgICB9OworCiAKICAgICBpbmxpbmUgTXV0YWJsZVJlZiByZWYoT2Zmc2V0
IG9mZnNldCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChvZmZzZXQgPCBtX2luc3RydWN0aW9ucy5z
aXplKCkpOwotICAgICAgICByZXR1cm4gTXV0YWJsZVJlZiB7IG1faW5zdHJ1Y3Rpb25zLCBvZmZz
ZXQgfTsKKyAgICAgICAgQVNTRVJUKG9mZnNldCA8IG1fc3RyZWFtLnNpemUoKSk7CisgICAgICAg
IHJldHVybiBNdXRhYmxlUmVmIHsgKnRoaXMsIG9mZnNldCB9OwogICAgIH0KIAogICAgIHZvaWQg
c2Vlayh1bnNpZ25lZCBwb3NpdGlvbikKICAgICB7Ci0gICAgICAgIEFTU0VSVChwb3NpdGlvbiA8
PSBtX2luc3RydWN0aW9ucy5zaXplKCkpOworICAgICAgICBBU1NFUlQocG9zaXRpb24gPD0gbV9z
dHJlYW0uc2l6ZSgpKTsKICAgICAgICAgbV9wb3NpdGlvbiA9IHBvc2l0aW9uOwogICAgIH0KIApA
QCAtMjAzLDEwICsyNDMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgd3JpdGUodWludDhfdCBieXRl
KQogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX2ZpbmFsaXplZCk7Ci0gICAgICAgIGlmIChtX3Bv
c2l0aW9uIDwgbV9pbnN0cnVjdGlvbnMuc2l6ZSgpKQotICAgICAgICAgICAgbV9pbnN0cnVjdGlv
bnNbbV9wb3NpdGlvbisrXSA9IGJ5dGU7CisgICAgICAgIGlmIChtX3Bvc2l0aW9uIDwgbV9zdHJl
YW0uc2l6ZSgpKQorICAgICAgICAgICAgbV9zdHJlYW1bbV9wb3NpdGlvbisrXSA9IGJ5dGU7CiAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnMuYXBwZW5kKGJ5dGUpOwor
ICAgICAgICAgICAgbV9zdHJlYW0uYXBwZW5kKGJ5dGUpOwogICAgICAgICAgICAgbV9wb3NpdGlv
bisrOwogICAgICAgICB9CiAgICAgfQpAQCAtMjI3LDI4ICsyNjcsMjggQEAgcHVibGljOgogCiAg
ICAgdm9pZCByZXdpbmQoTXV0YWJsZVJlZiYgcmVmKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHJl
Zi5vZmZzZXQoKSA8IG1faW5zdHJ1Y3Rpb25zLnNpemUoKSk7Ci0gICAgICAgIG1faW5zdHJ1Y3Rp
b25zLnNocmluayhyZWYub2Zmc2V0KCkpOworICAgICAgICBBU1NFUlQocmVmLm9mZnNldCgpIDwg
bV9zdHJlYW0uc2l6ZSgpKTsKKyAgICAgICAgbV9zdHJlYW0uc2hyaW5rKHJlZi5vZmZzZXQoKSk7
CiAgICAgICAgIG1fcG9zaXRpb24gPSByZWYub2Zmc2V0KCk7CiAgICAgfQogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEluc3RydWN0aW9uU3RyZWFtPiBmaW5hbGl6ZSgpCiAgICAgewogICAgICAgICBt
X2ZpbmFsaXplZCA9IHRydWU7Ci0gICAgICAgIG1faW5zdHJ1Y3Rpb25zLnNocmlua1RvRml0KCk7
Ci0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IHsgbmV3
IEluc3RydWN0aW9uU3RyZWFtKFdURk1vdmUobV9pbnN0cnVjdGlvbnMpKSB9OworICAgICAgICBt
X3N0cmVhbS5zaHJpbmtUb0ZpdCgpOworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPElu
c3RydWN0aW9uU3RyZWFtUmVhZGVyPiB7IG5ldyBJbnN0cnVjdGlvblN0cmVhbVJlYWRlcihXVEZN
b3ZlKG1fc3RyZWFtKSkgfTsKICAgICB9CiAKICAgICBNdXRhYmxlUmVmIHJlZigpCiAgICAgewot
ICAgICAgICByZXR1cm4gTXV0YWJsZVJlZiB7IG1faW5zdHJ1Y3Rpb25zLCBtX3Bvc2l0aW9uIH07
CisgICAgICAgIHJldHVybiBNdXRhYmxlUmVmIHsgKnRoaXMsIG1fcG9zaXRpb24gfTsKICAgICB9
CiAKICAgICB2b2lkIHN3YXAoSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIG90aGVyKQogICAgIHsK
ICAgICAgICAgc3RkOjpzd2FwKG1fZmluYWxpemVkLCBvdGhlci5tX2ZpbmFsaXplZCk7CiAgICAg
ICAgIHN0ZDo6c3dhcChtX3Bvc2l0aW9uLCBvdGhlci5tX3Bvc2l0aW9uKTsKLSAgICAgICAgbV9p
bnN0cnVjdGlvbnMuc3dhcChvdGhlci5tX2luc3RydWN0aW9ucyk7CisgICAgICAgIG1fc3RyZWFt
LnN3YXAob3RoZXIubV9zdHJlYW0pOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTI3NCwxNyArMzE0
LDE4IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgaXRlcmF0b3IgYmVnaW4oKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGl0ZXJhdG9yIHsgbV9pbnN0cnVjdGlvbnMsIDAgfTsKKyAgICAgICAgcmV0
dXJuIGl0ZXJhdG9yIHsgKnRoaXMsIDAgfTsKICAgICB9CiAKICAgICBpdGVyYXRvciBlbmQoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGl0ZXJhdG9yIHsgbV9pbnN0cnVjdGlvbnMsIG1faW5zdHJ1
Y3Rpb25zLnNpemUoKSB9OworICAgICAgICByZXR1cm4gaXRlcmF0b3IgeyAqdGhpcywgbV9zdHJl
YW0uc2l6ZSgpIH07CiAgICAgfQogCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fcG9zaXRpb24g
eyAwIH07CiAgICAgYm9vbCBtX2ZpbmFsaXplZCB7IGZhbHNlIH07CisgICAgSW5zdHJ1Y3Rpb25W
ZWN0b3IgbV9zdHJlYW07CiB9OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oCmluZGV4IDRkZDE4OWQ2
NTdkOTJhYzgwYjQzNTNhYmQxOTYwZTRlNzBiZWIwYzIuLjJiZjVhNTE5YmIzZWQ4NWNkMzM5ODBk
NGU0YWQxNDBlNDc3ZjVlYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaApAQCAtMTMzLDcgKzEzMyw3
IEBAIFNXSVRDSF9KTVAoQ0FTRV9PUCwgU1dJVENIX0NBU0UsIFNXSVRDSF9ERUZBVUxUX09GRlNF
VCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEZ1bmN0aW9uLCB0eXBl
bmFtZSBDb2RlQmxvY2tPckhhc2hNYXA+Ci1pbmxpbmUgdm9pZCB1cGRhdGVTdG9yZWRKdW1wVGFy
Z2V0c0Zvckluc3RydWN0aW9uKEJsb2NrJiYgY29kZUJsb2NrLCB1bnNpZ25lZCBmaW5hbE9mZnNl
dCwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0
aW9uJiBmdW5jdGlvbiwgQ29kZUJsb2NrT3JIYXNoTWFwJiBjb2RlQmxvY2tPckhhc2hNYXApCitp
bmxpbmUgdm9pZCB1cGRhdGVTdG9yZWRKdW1wVGFyZ2V0c0Zvckluc3RydWN0aW9uKEJsb2NrJiYg
Y29kZUJsb2NrLCB1bnNpZ25lZCBmaW5hbE9mZnNldCwgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6
Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0aW9uJiBmdW5jdGlvbiwgQ29kZUJs
b2NrT3JIYXNoTWFwJiBjb2RlQmxvY2tPckhhc2hNYXApCiB7CiAjZGVmaW5lIENBU0VfT1AoX19v
cCkgXAogICAgIGNhc2UgX19vcDo6b3Bjb2RlSUQ6IHsgXApAQCAtMTY5LDcgKzE2OSw3IEBAIFNX
SVRDSF9KTVAoQ0FTRV9PUCwgU1dJVENIX0NBU0UsIFNXSVRDSF9ERUZBVUxUX09GRlNFVCkKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEZ1bmN0aW9uPgotaW5saW5lIHZv
aWQgdXBkYXRlU3RvcmVkSnVtcFRhcmdldHNGb3JJbnN0cnVjdGlvbihCbG9jayogY29kZUJsb2Nr
LCB1bnNpZ25lZCBmaW5hbE9mZnNldCwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5z
dHJ1Y3Rpb24sIEZ1bmN0aW9uIGZ1bmN0aW9uKQoraW5saW5lIHZvaWQgdXBkYXRlU3RvcmVkSnVt
cFRhcmdldHNGb3JJbnN0cnVjdGlvbihCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBmaW5hbE9m
ZnNldCwgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb24sIEZ1
bmN0aW9uIGZ1bmN0aW9uKQogewogICAgIHVwZGF0ZVN0b3JlZEp1bXBUYXJnZXRzRm9ySW5zdHJ1
Y3Rpb24oY29kZUJsb2NrLCBmaW5hbE9mZnNldCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0aW9uLCBjb2Rl
QmxvY2spOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2NjFjYjQ5ZDNmM2QzNGRhNGQ0OGRiMjAz
ZGE2MTdhYjIyYTA4NTU2Li5jZDMzNDY5OTZhZWQ3ZDNiNjc1MGM4NTQyZTRmODZiMjdjZGExZjE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNDk3Nyw3ICs0OTc3LDcgQEAgdm9pZCBTdHJ1Y3R1cmVG
b3JJbkNvbnRleHQ6OmZpbmFsaXplKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFVubGlu
a2VkQ29kZUIKICAgICAgICAgcmV0dXJuOwogCiAgICAgT3Bjb2RlSUQgbGFzdE9wY29kZUlEID0g
Z2VuZXJhdG9yLm1fbGFzdE9wY29kZUlEOwotICAgIEluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxl
UmVmIGxhc3RJbnN0cnVjdGlvbiA9IGdlbmVyYXRvci5tX2xhc3RJbnN0cnVjdGlvbjsKKyAgICBJ
bnN0cnVjdGlvblN0cmVhbVdyaXRlcjo6TXV0YWJsZVJlZiBsYXN0SW5zdHJ1Y3Rpb24gPSBnZW5l
cmF0b3IubV9sYXN0SW5zdHJ1Y3Rpb247CiAgICAgZm9yIChjb25zdCBhdXRvJiBpbnN0VHVwbGUg
OiBtX2dldEluc3RzKSB7CiAgICAgICAgIHVuc2lnbmVkIGluc3RJbmRleCA9IHN0ZDo6Z2V0PDA+
KGluc3RUdXBsZSk7CiAgICAgICAgIGludCBwcm9wZXJ0eVJlZ0luZGV4ID0gc3RkOjpnZXQ8MT4o
aW5zdFR1cGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA5NTM0MWE5NDgzZjVlZjVmZjBhNzBkNGZlYTlh
YTM3OTVhOTNmNTE1Li5hMGEwYzU2Y2ZlYjNkOTY0ZjgxNWE1NzBhNjZhMWExNGRhMjkwZGMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCkBAIC0xMDU1LDcgKzEwNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEp1bXBPcD4KLSAgICAgICAgdm9pZCBzZXRUYXJnZXRGb3JKdW1wSW5zdHJ1Y3Rpb24oSW5z
dHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYmLCBpbnQgdGFyZ2V0KTsKKyAgICAgICAgdm9pZCBz
ZXRUYXJnZXRGb3JKdW1wSW5zdHJ1Y3Rpb24oSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6Ok11dGFi
bGVSZWYmLCBpbnQgdGFyZ2V0KTsKIAogICAgICAgICB1c2luZyBCaWdJbnRNYXBFbnRyeSA9IHN0
ZDo6dHVwbGU8VW5pcXVlZFN0cmluZ0ltcGwqLCB1aW50OF90LCBib29sPjsKIApAQCAtMTI4MSw3
ICsxMjgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZNKiBtX3ZtOwogCiAgICAgICAg
IE9wY29kZUlEIG1fbGFzdE9wY29kZUlEID0gb3BfZW5kOwotICAgICAgICBJbnN0cnVjdGlvblN0
cmVhbTo6TXV0YWJsZVJlZiBtX2xhc3RJbnN0cnVjdGlvbiB7IG1fd3JpdGVyLnJlZigpIH07Cisg
ICAgICAgIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyOjpNdXRhYmxlUmVmIG1fbGFzdEluc3RydWN0
aW9uIHsgbV93cml0ZXIucmVmKCkgfTsKIAogICAgICAgICBib29sIG1fdXNlc0V4Y2VwdGlvbnMg
eyBmYWxzZSB9OwogICAgICAgICBib29sIG1fZXhwcmVzc2lvblRvb0RlZXAgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9w
ZXJ0eUFuYWx5c2lzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRp
Y1Byb3BlcnR5QW5hbHlzaXMuaAppbmRleCA4NzU3ZDNhMGQ1NGZjODlmYjBkOTdhYzhiOTllODZh
MzQxZWI2ZDc0Li41MzA2ODhmMjliMzExMWI2MzhhMTQ4ZDg0NjU4NzM1YjNhMGQ0ZmE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRpY1Byb3BlcnR5
QW5hbHlzaXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1N0YXRp
Y1Byb3BlcnR5QW5hbHlzaXMuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIC8v
IFJlZmVyZW5jZSBjb3VudCBpbmRpY2F0ZXMgbnVtYmVyIG9mIGxpdmUgcmVnaXN0ZXJzIHRoYXQg
YWxpYXMgdGhpcyBvYmplY3QuCiBjbGFzcyBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzIDogcHVibGlj
IFJlZkNvdW50ZWQ8U3RhdGljUHJvcGVydHlBbmFseXNpcz4gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8U3RhdGljUHJvcGVydHlBbmFseXNpcz4gY3JlYXRlKEluc3RydWN0aW9uU3RyZWFtOjpN
dXRhYmxlUmVmJiYgaW5zdHJ1Y3Rpb25SZWYpCisgICAgc3RhdGljIFJlZjxTdGF0aWNQcm9wZXJ0
eUFuYWx5c2lzPiBjcmVhdGUoSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6Ok11dGFibGVSZWYmJiBp
bnN0cnVjdGlvblJlZikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0YXRp
Y1Byb3BlcnR5QW5hbHlzaXMoV1RGTW92ZShpbnN0cnVjdGlvblJlZikpKTsgCiAgICAgfQpAQCAt
NDUsMTIgKzQ1LDEyIEBAIHB1YmxpYzoKICAgICBpbnQgcHJvcGVydHlJbmRleENvdW50KCkgeyBy
ZXR1cm4gbV9wcm9wZXJ0eUluZGV4ZXMuc2l6ZSgpOyB9CiAKIHByaXZhdGU6Ci0gICAgU3RhdGlj
UHJvcGVydHlBbmFseXNpcyhJbnN0cnVjdGlvblN0cmVhbTo6TXV0YWJsZVJlZiYmIGluc3RydWN0
aW9uUmVmKQorICAgIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXMoSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0
ZXI6Ok11dGFibGVSZWYmJiBpbnN0cnVjdGlvblJlZikKICAgICAgICAgOiBtX2luc3RydWN0aW9u
UmVmKFdURk1vdmUoaW5zdHJ1Y3Rpb25SZWYpKQogICAgIHsKICAgICB9CiAKLSAgICBJbnN0cnVj
dGlvblN0cmVhbTo6TXV0YWJsZVJlZiBtX2luc3RydWN0aW9uUmVmOworICAgIEluc3RydWN0aW9u
U3RyZWFtV3JpdGVyOjpNdXRhYmxlUmVmIG1faW5zdHJ1Y3Rpb25SZWY7CiAgICAgdHlwZWRlZiBI
YXNoU2V0PHVuc2lnbmVkLCBXVEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gUHJvcGVydHlJbmRleFNldDsKICAgICBQcm9w
ZXJ0eUluZGV4U2V0IG1fcHJvcGVydHlJbmRleGVzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXplci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmgK
aW5kZXggNWY5ZTczODYyYTRhY2QzMDdiMTAxYmQxY2Q2ZjIzZmM1MTc1MmQzYi4uODcyODU3ZWQ3
OGMyZjY1ZWQxYWI3ZjU3OTI4YzBhNThkYmFhMDZjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmgK
QEAgLTM1LDggKzM1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAvLyBpcyB1bmRlcnN0b29kIHRvIGJl
IGxvc3N5LCBhbmQgaXQncyBPSyBpZiBpdCB0dXJucyBvdXQgdG8gYmUgd3Jvbmcgc29tZXRpbWVz
LgogY2xhc3MgU3RhdGljUHJvcGVydHlBbmFseXplciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBjcmVh
dGVUaGlzKFJlZ2lzdGVySUQqIGRzdCwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5z
dHJ1Y3Rpb25SZWYpOwotICAgIHZvaWQgbmV3T2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgSW5zdHJ1
Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb25SZWYpOworICAgIHZvaWQgY3JlYXRl
VGhpcyhSZWdpc3RlcklEKiBkc3QsIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyOjpNdXRhYmxlUmVm
IGluc3RydWN0aW9uUmVmKTsKKyAgICB2b2lkIG5ld09iamVjdChSZWdpc3RlcklEKiBkc3QsIElu
c3RydWN0aW9uU3RyZWFtV3JpdGVyOjpNdXRhYmxlUmVmIGluc3RydWN0aW9uUmVmKTsKICAgICB2
b2lkIHB1dEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4KTsgLy8g
cHJvcGVydHlJbmRleCBpcyBhbiBpbmRleCBpbnRvIGEgdW5pcXVlZCBzZXQgb2Ygc3RyaW5ncy4K
ICAgICB2b2lkIG1vdihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CiAKQEAgLTUw
LDE0ICs1MCwxNCBAQCBwcml2YXRlOgogICAgIEFuYWx5c2lzTWFwIG1fYW5hbHlzZXM7CiB9Owog
Ci1pbmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpjcmVhdGVUaGlzKFJlZ2lzdGVy
SUQqIGRzdCwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb25SZWYpCitp
bmxpbmUgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyOjpjcmVhdGVUaGlzKFJlZ2lzdGVySUQq
IGRzdCwgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6Ok11dGFibGVSZWYgaW5zdHJ1Y3Rpb25SZWYp
CiB7CiAgICAgQW5hbHlzaXNNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2FuYWx5c2VzLmFk
ZCgKICAgICAgICAgZHN0LT5pbmRleCgpLCBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzOjpjcmVhdGUo
V1RGTW92ZShpbnN0cnVjdGlvblJlZikpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwg
YWRkUmVzdWx0LmlzTmV3RW50cnkpOyAvLyBDYW4ndCBoYXZlIHR3byAndGhpcycgaW4gdGhlIHNh
bWUgY29uc3RydWN0b3IuCiB9CiAKLWlubGluZSB2b2lkIFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXI6
Om5ld09iamVjdChSZWdpc3RlcklEKiBkc3QsIEluc3RydWN0aW9uU3RyZWFtOjpNdXRhYmxlUmVm
IGluc3RydWN0aW9uUmVmKQoraW5saW5lIHZvaWQgU3RhdGljUHJvcGVydHlBbmFseXplcjo6bmV3
T2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXI6Ok11dGFibGVS
ZWYgaW5zdHJ1Y3Rpb25SZWYpCiB7CiAgICAgYXV0byBhbmFseXNpcyA9IFN0YXRpY1Byb3BlcnR5
QW5hbHlzaXM6OmNyZWF0ZShXVEZNb3ZlKGluc3RydWN0aW9uUmVmKSk7CiAgICAgQW5hbHlzaXNN
YXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2FuYWx5c2VzLmFkZChkc3QtPmluZGV4KCksIGFu
YWx5c2lzLmNvcHlSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRCeXRlY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkQnl0ZWNvZGUuaAppbmRleCA1NzkzNjY4MjRiYzhhNTNkMzAyM2M5ZTI5MTA3N2UyOWFjMTI5
ZjlmLi4xNWNhYjNjMDQ3MGJhMGNhMDYyZDU1NWU0N2MzZmZkZGM4ZmVkNzkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRCeXRlY29kZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZEJ5dGVjb2RlLmgKQEAgLTQ3LDkgKzQ3
LDkgQEAgcHVibGljOgogICAgIH0KIAogI2lmICFPUyhXSU5ET1dTKQotICAgIHN0YXRpYyBSZWY8
Q2FjaGVkQnl0ZWNvZGU+IGNyZWF0ZSh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSkKKyAgICBzdGF0
aWMgUmVmPENhY2hlZEJ5dGVjb2RlPiBjcmVhdGUodm9pZCogZGF0YSwgc2l6ZV90IHNpemUsIExl
YWZFeGVjdXRhYmxlTWFwJiYgbGVhZkV4ZWN1dGFibGVzID0geyB9KQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVkQnl0ZWNvZGUoQ2FjaGVQYXlsb2FkOjptYWtlTWFw
cGVkUGF5bG9hZChkYXRhLCBzaXplKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
YWNoZWRCeXRlY29kZShDYWNoZVBheWxvYWQ6Om1ha2VNYXBwZWRQYXlsb2FkKGRhdGEsIHNpemUp
LCBXVEZNb3ZlKGxlYWZFeGVjdXRhYmxlcykpKTsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4IDIyZjNjMmVkMjFm
MTU0ODAzOTI4NzlmNDM2ZWE1YmFmYjdlNzQ0NmIuLmI1OGExYTNhNTAwMWEyNDZiODA0YWRhNWVi
N2MzMWI3YzdhZTRlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNo
ZWRUeXBlcy5jcHAKQEAgLTg3LDggKzg3LDkgQEAgcHVibGljOgogICAgICAgICBwdHJkaWZmX3Qg
bV9vZmZzZXQ7CiAgICAgfTsKIAotICAgIEVuY29kZXIoVk0mIHZtKQorICAgIEVuY29kZXIoVk0m
IHZtLCBpbnQgZmQpCiAgICAgICAgIDogbV92bSh2bSkKKyAgICAgICAgLCBtX2ZkKGZkKQogICAg
ICAgICAsIG1fYmFzZU9mZnNldCgwKQogICAgICAgICAsIG1fY3VycmVudFBhZ2UobnVsbHB0cikK
ICAgICB7CkBAIC0xNDYsNiArMTQ3LDkgQEAgcHVibGljOgogCiAgICAgUmVmPENhY2hlZEJ5dGVj
b2RlPiByZWxlYXNlKCkKICAgICB7CisgICAgICAgIGlmIChtX2ZkICE9IC0xKQorICAgICAgICAg
ICAgcmV0dXJuIHJlbGVhc2VNYXBwZWQoKTsKKwogICAgICAgICBzaXplX3Qgc2l6ZSA9IG1fYmFz
ZU9mZnNldCArIG1fY3VycmVudFBhZ2UtPnNpemUoKTsKICAgICAgICAgTWFsbG9jUHRyPHVpbnQ4
X3Q+IGJ1ZmZlciA9IE1hbGxvY1B0cjx1aW50OF90Pjo6bWFsbG9jKHNpemUpOwogICAgICAgICB1
bnNpZ25lZCBvZmZzZXQgPSAwOwpAQCAtMTU4LDYgKzE2MiwxOSBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcml2YXRlOgorICAgIFJlZjxDYWNoZWRCeXRlY29kZT4gcmVsZWFzZU1hcHBlZCgpCisgICAg
eworICAgICAgICBzaXplX3Qgc2l6ZSA9IG1fYmFzZU9mZnNldCArIG1fY3VycmVudFBhZ2UtPnNp
emUoKTsKKyAgICAgICAgaWYgKGZ0cnVuY2F0ZShtX2ZkLCBzaXplKSkKKyAgICAgICAgICAgIHJl
dHVybiBDYWNoZWRCeXRlY29kZTo6Y3JlYXRlKCk7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBwYWdlIDogbV9wYWdlcykKKyAgICAgICAgICAgIHdyaXRlKG1fZmQsIHBhZ2UuYnVmZmVyKCks
IHBhZ2Uuc2l6ZSgpKTsKKworICAgICAgICB2b2lkKiBidWZmZXIgPSBtbWFwKG51bGxwdHIsIHNp
emUsIFBST1RfUkVBRCwgTUFQX1BSSVZBVEUsIG1fZmQsIDApOworICAgICAgICByZXR1cm4gQ2Fj
aGVkQnl0ZWNvZGU6OmNyZWF0ZShidWZmZXIsIHNpemUsIFdURk1vdmUobV9sZWFmRXhlY3V0YWJs
ZXMpKTsKKyAgICB9CisKICAgICBjbGFzcyBQYWdlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFBh
Z2Uoc2l6ZV90IHNpemUpCkBAIC0yMTMsNiArMjMwLDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAg
ICBWTSYgbV92bTsKKyAgICBpbnQgbV9mZDsKICAgICBwdHJkaWZmX3QgbV9iYXNlT2Zmc2V0Owog
ICAgIFBhZ2UqIG1fY3VycmVudFBhZ2U7CiAgICAgVmVjdG9yPFBhZ2U+IG1fcGFnZXM7CkBAIC0x
MzA1LDIyICsxMzIzLDI1IEBAIHByaXZhdGU6CiAgICAgRW5jb2RlZFR5cGUgbV90eXBlOwogfTsK
IAotY2xhc3MgQ2FjaGVkSW5zdHJ1Y3Rpb25TdHJlYW0gOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PElu
c3RydWN0aW9uU3RyZWFtPiB7CitjbGFzcyBDYWNoZWRJbnN0cnVjdGlvblN0cmVhbSA6IHB1Ymxp
YyBWYXJpYWJsZUxlbmd0aE9iamVjdDxJbnN0cnVjdGlvblN0cmVhbT4gewogcHVibGljOgogICAg
IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBz
dHJlYW0pCiAgICAgewotICAgICAgICBtX2luc3RydWN0aW9ucy5lbmNvZGUoZW5jb2Rlciwgc3Ry
ZWFtLm1faW5zdHJ1Y3Rpb25zKTsKKyAgICAgICAgbV9zaXplID0gc3RyZWFtLnNpemUoKTsKKyAg
ICAgICAgdWludDhfdCogYnVmZmVyID0gdGhpcy0+YWxsb2NhdGU8dWludDhfdD4oZW5jb2Rlciwg
bV9zaXplKTsKKyAgICAgICAgbWVtY3B5KGJ1ZmZlciwgc3RyZWFtLmluc3RydWN0aW9ucygpLCBt
X3NpemUpOwogICAgIH0KIAotICAgIEluc3RydWN0aW9uU3RyZWFtKiBkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikgY29uc3QKKyAgICBJbnN0cnVjdGlvblN0cmVhbSogZGVjb2RlKERlY29kZXImKSBj
b25zdAogICAgIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3QsIDAsIFVuc2FmZVZlY3Rvck92ZXJm
bG93PiBpbnN0cnVjdGlvbnNWZWN0b3I7Ci0gICAgICAgIG1faW5zdHJ1Y3Rpb25zLmRlY29kZShk
ZWNvZGVyLCBpbnN0cnVjdGlvbnNWZWN0b3IpOwotICAgICAgICByZXR1cm4gbmV3IEluc3RydWN0
aW9uU3RyZWFtKFdURk1vdmUoaW5zdHJ1Y3Rpb25zVmVjdG9yKSk7CisgICAgICAgIEluc3RydWN0
aW9uU3RyZWFtUmVhZGVyKiBzdHJlYW0gPSBuZXcgSW5zdHJ1Y3Rpb25TdHJlYW1SZWFkZXIoKTsK
KyAgICAgICAgc3RyZWFtLT5tX3NpemUgPSBtX3NpemU7CisgICAgICAgIHN0cmVhbS0+bV9pbnN0
cnVjdGlvbnMgPSB0aGlzLT5idWZmZXIoKTsKKyAgICAgICAgcmV0dXJuIHN0cmVhbTsKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgQ2FjaGVkVmVjdG9yPHVpbnQ4X3QsIDAsIFVuc2FmZVZlY3Rvck92
ZXJmbG93PiBtX2luc3RydWN0aW9uczsKKyAgICBzaXplX3QgbV9zaXplOwogfTsKIAogY2xhc3Mg
Q2FjaGVkTWV0YWRhdGFUYWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VW5saW5rZWRNZXRhZGF0
YVRhYmxlPiB7CkBAIC0yMzA5LDExICsyMzMwLDExIEBAIHZvaWQgZW5jb2RlQ29kZUJsb2NrKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtleSwgY29uc3QgVW5saW5rZWRD
CiAgICAgZW50cnktPmVuY29kZShlbmNvZGVyLCB7IGtleSwganNDYXN0PGNvbnN0IFVubGlua2Vk
Q29kZUJsb2NrVHlwZSo+KGNvZGVCbG9jaykgfSk7CiB9CiAKLVJlZjxDYWNoZWRCeXRlY29kZT4g
ZW5jb2RlQ29kZUJsb2NrKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZUtleSYga2V5LCBjb25zdCBV
bmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrKQorUmVmPENhY2hlZEJ5dGVjb2RlPiBlbmNvZGVD
b2RlQmxvY2soVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXksIGNvbnN0IFVubGlua2Vk
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIGludCBmZCkKIHsKICAgICBjb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mbyA9IGNvZGVCbG9jay0+Y2xhc3NJbmZvKHZtKTsKIAotICAgIEVuY29kZXIgZW5jb2Rl
cih2bSk7CisgICAgRW5jb2RlciBlbmNvZGVyKHZtLCBmZCk7CiAgICAgaWYgKGNsYXNzSW5mbyA9
PSBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OmluZm8oKSkKICAgICAgICAgZW5jb2RlQ29kZUJs
b2NrPFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaz4oZW5jb2Rlciwga2V5LCBjb2RlQmxvY2spOwog
ICAgIGVsc2UgaWYgKGNsYXNzSW5mbyA9PSBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6
OmluZm8oKSkKQEAgLTIzMjQsOSArMjM0NSwxNCBAQCBSZWY8Q2FjaGVkQnl0ZWNvZGU+IGVuY29k
ZUNvZGVCbG9jayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtleSwgY29uc3QgVW5saQog
ICAgIHJldHVybiBlbmNvZGVyLnJlbGVhc2UoKTsKIH0KIAorUmVmPENhY2hlZEJ5dGVjb2RlPiBl
bmNvZGVDb2RlQmxvY2soVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBrZXksIGNvbnN0IFVu
bGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgcmV0dXJuIGVuY29kZUNvZGVCbG9j
ayh2bSwga2V5LCBjb2RlQmxvY2ssIC0xKTsKK30KKwogUmVmPENhY2hlZEJ5dGVjb2RlPiBlbmNv
ZGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIGNvbnN0IFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIGNvZGVCbG9jaykKIHsKLSAgICBFbmNvZGVyIGVuY29kZXIodm0pOworICAgIEVuY29kZXIg
ZW5jb2Rlcih2bSwgLTEpOwogICAgIGVuY29kZXIubWFsbG9jPENhY2hlZEZ1bmN0aW9uQ29kZUJs
b2NrPigpLT5lbmNvZGUoZW5jb2RlciwgKmNvZGVCbG9jayk7CiAgICAgcmV0dXJuIGVuY29kZXIu
cmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVkVHlwZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVz
LmgKaW5kZXggOWQwMGUxNzMzYjRiY2Q4OWZjYzkxODNlNjc4YWIyZjAxY2U0OWVmMC4uZGM0MDE2
ZThmYmQzOTQzMzkwMjc1OWUxODMwMGRmYWFjODk3ZjRhMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5oCkBAIC0xMDgsNiArMTA4LDcgQEAgcHJpdmF0ZToK
IH07CiAKIEpTX0VYUE9SVF9QUklWQVRFIFJlZjxDYWNoZWRCeXRlY29kZT4gZW5jb2RlQ29kZUJs
b2NrKFZNJiwgY29uc3QgU291cmNlQ29kZUtleSYsIGNvbnN0IFVubGlua2VkQ29kZUJsb2NrKik7
CitKU19FWFBPUlRfUFJJVkFURSBSZWY8Q2FjaGVkQnl0ZWNvZGU+IGVuY29kZUNvZGVCbG9jayhW
TSYsIGNvbnN0IFNvdXJjZUNvZGVLZXkmLCBjb25zdCBVbmxpbmtlZENvZGVCbG9jayosIGludCBm
ZCk7CiAKIFVubGlua2VkQ29kZUJsb2NrKiBkZWNvZGVDb2RlQmxvY2tJbXBsKFZNJiwgY29uc3Qg
U291cmNlQ29kZUtleSYsIFJlZjxDYWNoZWRCeXRlY29kZT4pOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCAwM2E5MmVlNjRhMzdkMjJjZjIzZGQ0
ODdmNTk3OTkzOGVjOWIzNjMyLi5mMGI2NGRmN2E0MDkxYzVjODc1MGQ5ZWZkZWM1M2I3ZjA2NzJh
N2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE2IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvZGVDYWNo
ZS5oIgogCisjaW5jbHVkZSAiQnl0ZWNvZGVDYWNoZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiSW5k
aXJlY3RFdmFsRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlTnVtYmVycy5oPgogCkBAIC0xNzQsMTYgKzE3NSwxOSBAQCB2b2lkIENvZGVDYWNoZTo6d3Jp
dGUoVk0mIHZtKQogICAgICAgICB3cml0ZUNvZGVCbG9jayh2bSwgaXQua2V5LCBpdC52YWx1ZSk7
CiB9CiAKLXZvaWQgZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvckZ1bmN0aW9ucyhWTSYgdm0s
IFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgY29uc3QgU291cmNlQ29kZSYg
cGFyZW50U291cmNlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlv
bk1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK3ZvaWQgZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9j
a0ZvckZ1bmN0aW9ucyhWTSYgdm0sIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9j
aywgY29uc3QgU291cmNlQ29kZSYgcGFyZW50U291cmNlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgQnl0
ZWNvZGVDYWNoZU1ldGFkYXRhKiBtZXRhZGF0YSkKIHsKICAgICBhdXRvIGdlbmVyYXRlID0gWyZd
KFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQgY29uc3RydWN0b3JLaW5kKSB7CiAgICAgICAgIGlmIChjb25zdHJ1Y3Rv
cktpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCAmJiBTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFy
c2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0
aG9kTW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZSkuY29udGFpbnModW5s
aW5rZWRFeGVjdXRhYmxlLT5wYXJzZU1vZGUoKSkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmtlZFNvdXJj
ZUNvZGUocGFyZW50U291cmNlKTsKKyAgICAgICAgaWYgKG1ldGFkYXRhICYmICFtZXRhZGF0YS0+
c2hvdWxkQ2FjaGUoc291cmNlLCBjb25zdHJ1Y3RvcktpbmQpKQorICAgICAgICAgICAgcmV0dXJu
OworCiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlua2VkQ29kZUJsb2NrRm9yKHZtLCBz
b3VyY2UsIGNvbnN0cnVjdG9yS2luZCwgY29kZUdlbmVyYXRpb25Nb2RlLCBlcnJvciwgdW5saW5r
ZWRFeGVjdXRhYmxlLT5wYXJzZU1vZGUoKSk7CiAgICAgICAgIGlmICh1bmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKQotICAgICAgICAgICAgZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ZvckZ1bmN0
aW9ucyh2bSwgdW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaywgc291cmNlLCBjb2RlR2VuZXJhdGlv
bk1vZGUsIGVycm9yKTsKKyAgICAgICAgICAgIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JG
dW5jdGlvbnModm0sIHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2ssIHNvdXJjZSwgY29kZUdlbmVy
YXRpb25Nb2RlLCBlcnJvciwgbWV0YWRhdGEpOwogICAgIH07CiAKICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGFsc28gZ2VuZXJhdGUgQ29kZUJsb2NrcyBmb3IgQ29kZUZvckNvbnN0cnVjdApAQCAt
MjI1LDEwICsyMjksMTAgQEAgU291cmNlQ29kZUtleSBzb3VyY2VDb2RlS2V5Rm9yU2VyaWFsaXpl
ZE1vZHVsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUMKICAgICByZXR1cm4gc291
cmNlQ29kZUtleUZvclNlcmlhbGl6ZWRCeXRlY29kZSh2bSwgc291cmNlQ29kZSwgU291cmNlQ29k
ZVR5cGU6Ok1vZHVsZVR5cGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIHsgfSk7CiB9CiAKLVJl
ZjxDYWNoZWRCeXRlY29kZT4gc2VyaWFsaXplQnl0ZWNvZGUoVk0mIHZtLCBVbmxpbmtlZENvZGVC
bG9jayogY29kZUJsb2NrLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFNvdXJjZUNvZGVUeXBl
IGNvZGVUeXBlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRN
b2RlIHNjcmlwdE1vZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0
aW9uTW9kZSkKK1JlZjxDYWNoZWRCeXRlY29kZT4gc2VyaWFsaXplQnl0ZWNvZGUoVk0mIHZtLCBV
bmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFNv
dXJjZUNvZGVUeXBlIGNvZGVUeXBlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQ
YXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIGludCBmZCwgT3B0aW9uU2V0PENvZGVHZW5lcmF0
aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlKQogewogICAgIHJldHVybiBlbmNvZGVDb2RlQmxv
Y2sodm0sCi0gICAgICAgIHNvdXJjZUNvZGVLZXlGb3JTZXJpYWxpemVkQnl0ZWNvZGUodm0sIHNv
dXJjZSwgY29kZVR5cGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGNvZGVHZW5lcmF0aW9uTW9k
ZSksIGNvZGVCbG9jayk7CisgICAgICAgIHNvdXJjZUNvZGVLZXlGb3JTZXJpYWxpemVkQnl0ZWNv
ZGUodm0sIHNvdXJjZSwgY29kZVR5cGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGNvZGVHZW5l
cmF0aW9uTW9kZSksIGNvZGVCbG9jaywgZmQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvZGVDYWNoZS5oCmluZGV4IGIwNjdmODQ3ZGFlMzAxY2VlZTcwNjU4YmU3NjU5
ZjhlN2QzYWIzNmMuLmJhZmM4ZTJkZWMxMzc0N2ZiYjljMTYzYWUwNTk0YTRiZjAzYTNmZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDYgKzQy
LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEJ5dGVjb2RlQ2FjaGVNZXRhZGF0YTsK
IGNsYXNzIEV2YWxFeGVjdXRhYmxlOwogY2xhc3MgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTsKIGNs
YXNzIElkZW50aWZpZXI7CkBAIC0zMDIsMjMgKzMwMywyMyBAQCBVbmxpbmtlZENvZGVCbG9ja1R5
cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2soVk0mIHZtLCBFeGVjdXRhYmxlVHlwZSogZXhl
Y3V0YQogICAgIHJldHVybiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbDxVbmxpbmtlZENv
ZGVCbG9ja1R5cGUsIEV4ZWN1dGFibGVUeXBlPih2bSwgc291cmNlLCBzdHJpY3RNb2RlLCBzY3Jp
cHRNb2RlLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUsIGV4ZWN1
dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBleGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb25D
b250ZXh0KCksIHZhcmlhYmxlc1VuZGVyVERaLCBleGVjdXRhYmxlKTsKIH0KIAotdm9pZCBnZW5l
cmF0ZVVubGlua2VkQ29kZUJsb2NrRm9yRnVuY3Rpb25zKFZNJiwgVW5saW5rZWRDb2RlQmxvY2sq
LCBjb25zdCBTb3VyY2VDb2RlJiwgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9kZT4sIFBhcnNl
ckVycm9yJik7Cit2b2lkIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JGdW5jdGlvbnMoVk0m
LCBVbmxpbmtlZENvZGVCbG9jayosIGNvbnN0IFNvdXJjZUNvZGUmLCBPcHRpb25TZXQ8Q29kZUdl
bmVyYXRpb25Nb2RlPiwgUGFyc2VyRXJyb3ImLCBjb25zdCBCeXRlY29kZUNhY2hlTWV0YWRhdGEq
KTsKIAogdGVtcGxhdGUgPGNsYXNzIFVubGlua2VkQ29kZUJsb2NrVHlwZT4KIHN0ZDo6ZW5hYmxl
X2lmX3Q8IXN0ZDo6aXNfc2FtZTxVbmxpbmtlZENvZGVCbG9ja1R5cGUsIFVubGlua2VkRXZhbENv
ZGVCbG9jaz46OnZhbHVlLCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqPgotcmVjdXJzaXZlbHlHZW5l
cmF0ZVVubGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBK
U1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1v
ZGUsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9uTW9kZSwgUGFy
c2VyRXJyb3ImIGVycm9yLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWikKK3JlY3Vyc2l2ZWx5R2VuZXJh
dGVVbmxpbmtlZENvZGVCbG9jayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQ
YXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2Rl
LCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUsIFBhcnNl
ckVycm9yJiBlcnJvciwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFosIGNvbnN0IEJ5dGVjb2RlQ2FjaGVN
ZXRhZGF0YSogbWV0YWRhdGEpCiB7CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0ID0g
ZmFsc2U7CiAgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiB1bmxpbmtlZENvZGVCbG9jayA9IGdl
bmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsPFVubGlua2VkQ29kZUJsb2NrVHlwZT4odm0sIHNv
dXJjZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgY29kZUdlbmVyYXRpb25Nb2RlLCBlcnJvciwg
ZXZhbENvbnRleHRUeXBlLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIHZhcmlhYmxlc1VuZGVyVERaKTsKICAgICBpZiAoIXVubGlua2VkQ29kZUJsb2Nr
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxv
Y2tGb3JGdW5jdGlvbnModm0sIHVubGlua2VkQ29kZUJsb2NrLCBzb3VyY2UsIGNvZGVHZW5lcmF0
aW9uTW9kZSwgZXJyb3IpOworICAgIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tGb3JGdW5jdGlv
bnModm0sIHVubGlua2VkQ29kZUJsb2NrLCBzb3VyY2UsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJy
b3IsIG1ldGFkYXRhKTsKICAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2s7CiB9CiAKIHZvaWQg
d3JpdGVDb2RlQmxvY2soVk0mLCBjb25zdCBTb3VyY2VDb2RlS2V5JiwgY29uc3QgU291cmNlQ29k
ZVZhbHVlJik7Ci1SZWY8Q2FjaGVkQnl0ZWNvZGU+IHNlcmlhbGl6ZUJ5dGVjb2RlKFZNJiwgVW5s
aW5rZWRDb2RlQmxvY2sqLCBjb25zdCBTb3VyY2VDb2RlJiwgU291cmNlQ29kZVR5cGUsIEpTUGFy
c2VyU3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPik7CitSZWY8Q2FjaGVkQnl0ZWNvZGU+IHNlcmlhbGl6ZUJ5dGVjb2RlKFZNJiwgVW5s
aW5rZWRDb2RlQmxvY2sqLCBjb25zdCBTb3VyY2VDb2RlJiwgU291cmNlQ29kZVR5cGUsIEpTUGFy
c2VyU3RyaWN0TW9kZSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBpbnQgZmQsIE9wdGlvblNldDxDb2Rl
R2VuZXJhdGlvbk1vZGU+KTsKIFNvdXJjZUNvZGVLZXkgc291cmNlQ29kZUtleUZvclNlcmlhbGl6
ZWRQcm9ncmFtKFZNJiwgY29uc3QgU291cmNlQ29kZSYpOwogU291cmNlQ29kZUtleSBzb3VyY2VD
b2RlS2V5Rm9yU2VyaWFsaXplZE1vZHVsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRleCAxOTc5NmFm
NGY4OWQyZTg4MWZiN2Q1Nzk2MDJjMDk0ZjdlNWZlYTYxLi44YWU5ZDUxOWVlNjkwYTk1YzIxZTgy
M2I1MGRjMDE1NmI2MzgzY2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21wbGV0aW9uLmNwcApAQCAtOTEsNyArOTEsNyBAQCBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1SZWY8Q2FjaGVkQnl0ZWNvZGU+IGdlbmVyYXRlUHJvZ3Jh
bUJ5dGVjb2RlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYg
ZXJyb3IpCitSZWY8Q2FjaGVkQnl0ZWNvZGU+IGdlbmVyYXRlUHJvZ3JhbUJ5dGVjb2RlKFZNJiB2
bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBpbnQgZmQsIFBhcnNlckVycm9yJiBlcnJvciwg
Y29uc3QgQnl0ZWNvZGVDYWNoZU1ldGFkYXRhKiBtZXRhZGF0YSkKIHsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayh2bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9
PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKQEAgLTEwMSwxMyArMTAx
LDE0IEBAIFJlZjxDYWNoZWRCeXRlY29kZT4gZ2VuZXJhdGVQcm9ncmFtQnl0ZWNvZGUoVk0mIHZt
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhCiAgICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNj
cmlwdE1vZGUgPSBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWM7CiAgICAgRXZhbENvbnRleHRU
eXBlIGV2YWxDb250ZXh0VHlwZSA9IEV2YWxDb250ZXh0VHlwZTo6Tm9uZTsKIAotICAgIFVubGlu
a2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHJlY3Vyc2l2ZWx5R2VuZXJhdGVVbmxp
bmtlZENvZGVCbG9jazxVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s+KHZtLCBzb3VyY2UsIHN0cmlj
dE1vZGUsIHNjcmlwdE1vZGUsIHsgfSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxl
c1VuZGVyVERaKTsKKyAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBy
ZWN1cnNpdmVseUdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2s8VW5saW5rZWRQcm9ncmFtQ29kZUJs
b2NrPih2bSwgc291cmNlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCB7IH0sIGVycm9yLCBldmFs
Q29udGV4dFR5cGUsICZ2YXJpYWJsZXNVbmRlclREWiwgbWV0YWRhdGEpOwogICAgIGlmICghdW5s
aW5rZWRDb2RlQmxvY2spCiAgICAgICAgIHJldHVybiBDYWNoZWRCeXRlY29kZTo6Y3JlYXRlKCk7
Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZUJ5dGVjb2RlKHZtLCB1bmxpbmtlZENvZGVCbG9jaywgc291
cmNlLCBTb3VyY2VDb2RlVHlwZTo6UHJvZ3JhbVR5cGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUs
IHsgfSk7CisKKyAgICByZXR1cm4gc2VyaWFsaXplQnl0ZWNvZGUodm0sIHVubGlua2VkQ29kZUJs
b2NrLCBzb3VyY2UsIFNvdXJjZUNvZGVUeXBlOjpQcm9ncmFtVHlwZSwgc3RyaWN0TW9kZSwgc2Ny
aXB0TW9kZSwgZmQsIHsgfSk7CiB9CiAKLVJlZjxDYWNoZWRCeXRlY29kZT4gZ2VuZXJhdGVNb2R1
bGVCeXRlY29kZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3Im
IGVycm9yKQorUmVmPENhY2hlZEJ5dGVjb2RlPiBnZW5lcmF0ZU1vZHVsZUJ5dGVjb2RlKFZNJiB2
bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBpbnQgZmQsIFBhcnNlckVycm9yJiBlcnJvciwg
Y29uc3QgQnl0ZWNvZGVDYWNoZU1ldGFkYXRhKiBtZXRhZGF0YSkKIHsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayh2bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9
PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKQEAgLTExNywxMCArMTE4
LDEwIEBAIFJlZjxDYWNoZWRCeXRlY29kZT4gZ2VuZXJhdGVNb2R1bGVCeXRlY29kZShWTSYgdm0s
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyCiAgICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNj
cmlwdE1vZGUgPSBKU1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZTsKICAgICBFdmFsQ29udGV4dFR5
cGUgZXZhbENvbnRleHRUeXBlID0gRXZhbENvbnRleHRUeXBlOjpOb25lOwogCi0gICAgVW5saW5r
ZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gcmVjdXJzaXZlbHlHZW5lcmF0ZVVubGlu
a2VkQ29kZUJsb2NrPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4odm0sIHNvdXJjZSwg
c3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgeyB9LCBlcnJvciwgZXZhbENvbnRleHRUeXBlLCAmdmFy
aWFibGVzVW5kZXJURFopOworICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9j
ayA9IHJlY3Vyc2l2ZWx5R2VuZXJhdGVVbmxpbmtlZENvZGVCbG9jazxVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2s+KHZtLCBzb3VyY2UsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIHsgfSwg
ZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgJnZhcmlhYmxlc1VuZGVyVERaLCBtZXRhZGF0YSk7CiAg
ICAgaWYgKCF1bmxpbmtlZENvZGVCbG9jaykKICAgICAgICAgcmV0dXJuIENhY2hlZEJ5dGVjb2Rl
OjpjcmVhdGUoKTsKLSAgICByZXR1cm4gc2VyaWFsaXplQnl0ZWNvZGUodm0sIHVubGlua2VkQ29k
ZUJsb2NrLCBzb3VyY2UsIFNvdXJjZUNvZGVUeXBlOjpNb2R1bGVUeXBlLCBzdHJpY3RNb2RlLCBz
Y3JpcHRNb2RlLCB7IH0pOworICAgIHJldHVybiBzZXJpYWxpemVCeXRlY29kZSh2bSwgdW5saW5r
ZWRDb2RlQmxvY2ssIHNvdXJjZSwgU291cmNlQ29kZVR5cGU6Ok1vZHVsZVR5cGUsIHN0cmljdE1v
ZGUsIHNjcmlwdE1vZGUsIGZkLCB7IH0pOwogfQogCiBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFr
ZWRQdHI8RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCkBAIC0xNDQsNiArMTQ1LDggQEAg
SlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIE4KICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAg
ICAgfQogCisgICAgdm0uY29kZUNhY2hlKCktPndyaXRlKHZtKTsKKwogICAgIFJFTEVBU0VfQVNT
RVJUKHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uaAppbmRleCBkNWEwMjMxYjc4MDE3NWI4ODQyMGQ2YWZmNGIz
YzBhNTI0ZWQxODUxLi44NmY0MjkxMGIwYWFkOWM1MzNlMmQ2MGU0ZjM0YThlZjE3ZGQ1MzVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCkBAIC0yOCw2ICsy
OCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBCeXRlY29kZUNhY2hlTWV0YWRhdGE7
CiBjbGFzcyBDYWNoZWRCeXRlY29kZTsKIGNsYXNzIEV4Y2VwdGlvbjsKIGNsYXNzIEV4ZWNTdGF0
ZTsKQEAgLTQyLDggKzQzLDggQEAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjaGVja1N5bnRheChW
TSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJFcnJvciYpOwogSlNfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBjaGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSog
ZXhjZXB0aW9uID0gMCk7CiBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrTW9kdWxlU3ludGF4
KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJFcnJvciYpOwogCi1KU19FWFBP
UlRfUFJJVkFURSBSZWY8Q2FjaGVkQnl0ZWNvZGU+IGdlbmVyYXRlUHJvZ3JhbUJ5dGVjb2RlKFZN
JiwgY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7Ci1KU19FWFBPUlRfUFJJVkFURSBS
ZWY8Q2FjaGVkQnl0ZWNvZGU+IGdlbmVyYXRlTW9kdWxlQnl0ZWNvZGUoVk0mLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgUGFyc2VyRXJyb3ImKTsKK0pTX0VYUE9SVF9QUklWQVRFIFJlZjxDYWNoZWRCeXRl
Y29kZT4gZ2VuZXJhdGVQcm9ncmFtQnl0ZWNvZGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgaW50
IGZkLCBQYXJzZXJFcnJvciYsIGNvbnN0IEJ5dGVjb2RlQ2FjaGVNZXRhZGF0YSogPSBudWxscHRy
KTsKK0pTX0VYUE9SVF9QUklWQVRFIFJlZjxDYWNoZWRCeXRlY29kZT4gZ2VuZXJhdGVNb2R1bGVC
eXRlY29kZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBpbnQgZmQsIFBhcnNlckVycm9yJiwgY29u
c3QgQnl0ZWNvZGVDYWNoZU1ldGFkYXRhKiA9IG51bGxwdHIpOwogCiBKU19FWFBPUlRfUFJJVkFU
RSBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVl
IHRoaXNWYWx1ZSwgTmFrZWRQdHI8RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwogaW5s
aW5lIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2VDb2RlLCBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWUoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1VVSUQuY3BwIGIvU291cmNlL1dURi93dGYvVVVJRC5jcHAKaW5kZXggODU5
NjhiZjU5MTE2ZDEzY2FkOTIzOTZmMzM5ZjIwNGZlMWRjMjE1MS4uMDZmMTQyNmUzNzM2NzJkNmI4
ZjliOGY0YTMzYzkwNTFhN2I1ZjRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVVJRC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvVVVJRC5jcHAKQEAgLTcyLDEwICs3MiwxMiBAQCBTdHJp
bmcgYm9vdFNlc3Npb25VVUlEU3RyaW5nKCkKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBb
XSB7CiAgICAgICAgIHNpemVfdCB1dWlkTGVuZ3RoID0gMzc7CiAgICAgICAgIGNoYXIgdXVpZFt1
dWlkTGVuZ3RoXTsKLSAgICAgICAgaWYgKHN5c2N0bGJ5bmFtZSgia2Vybi5ib290c2Vzc2lvbnV1
aWQiLCB1dWlkLCAmdXVpZExlbmd0aCwgbnVsbHB0ciwgMCkpCi0gICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGludCByZXN1bHQgPSBzeXNjdGxieW5hbWUoImtlcm4uYm9vdHNlc3Npb251dWlk
IiwgdXVpZCwgJnV1aWRMZW5ndGgsIG51bGxwdHIsIDApOworICAgICAgICBSRUxFQVNFX0FTU0VS
VCghcmVzdWx0KTsKICAgICAgICAgYm9vdFNlc3Npb25VVUlELmNvbnN0cnVjdChzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4odXVpZCksIHV1aWRMZW5ndGggLSAxKTsKICAgICB9KTsKKyNlbHNlCisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbmRpZgogICAgIHJldHVybiBib290
U2Vzc2lvblVVSUQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGJjZWNiYTkwODk3NjZmOTBmOTUwYzIx
NzgzYWY2MmUxMThmZmI2Y2MuLmY1YTllN2ZiYWFkZGJhODM4NjM3ZjYwMjkyYzU5YmE4ZjRjNGJi
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CkBAIC00MzQsNiArNDM0LDcgQEAgYW5pbWF0aW9uL1dlYkFuaW1h
dGlvbi5jcHAKIGJpbmRpbmdzL2pzL0pTQXVkaW9Ob2RlQ3VzdG9tLmNwcAogYmluZGluZ3MvanMv
Q2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmNwcAogYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0
Y2hlci5jcHAKK2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmNwcAogYmlu
ZGluZ3MvanMvQ2FsbFRyYWNlci5jcHAKIGJpbmRpbmdzL2pzL0NvbW1vblZNLmNwcAogYmluZGlu
Z3MvanMvRE9NR0NPdXRwdXRDb25zdHJhaW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY4MGQ2NDQ2ZjU5NGM1ZjViY2Uw
MjUwMGYwYWM1MTUxZmY3NzU5YTYuLjYyYTI0OWIxNjQ4YTQ3NWI3MzQ4NGNlM2I1NzA1ZGFlODMw
NjcyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTM4MjQsNyArMzgyNCw3IEBACiAJCUJDQjE2QzFDMDk3OUMzQkQwMDQ2Nzc0
MSAvKiBDYWNoZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNCMTZDMDMwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZEltYWdlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCMTZDMjAwOTc5
QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwNzA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVk
UmVzb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlCQ0IxNkMyMjA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxr
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjE2
QzA5MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oICovOyB9
OwotCQlCQ0IxNkMyNDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkU2NyaXB0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMwQjA5NzlDM0JEMDA0
Njc3NDEgLyogQ2FjaGVkU2NyaXB0LmggKi87IH07CisJCUJDQjE2QzI0MDk3OUMzQkQwMDQ2Nzc0
MSAvKiBDYWNoZWRTY3JpcHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDQjE2QzBCMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRTY3JpcHQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0IxNkMyODA5
NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMTZDMEYwOTc5QzNCRDAwNDY3NzQxIC8q
IENhY2hlZFhTTFN0eWxlU2hlZXQuaCAqLzsgfTsKIAkJQkNCMTZDMkEwOTc5QzNCRDAwNDY3NzQx
IC8qIENhY2hlZFJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0IxNkMxMTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlCQ0I5MkQ0RjEyOTM1NTBCMDBDODM4N0YgLyogRm9udEJhc2VsaW5lLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0I5MkQ0RTEyOTM1NTBCMDBD
ODM4N0YgLyogRm9udEJhc2VsaW5lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0Nh
Y2hlZFNjcmlwdEZldGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVk
U2NyaXB0RmV0Y2hlci5jcHAKaW5kZXggN2M4N2IyMzkzOGU0MzNlNTA4YzBmYjgwYmU5YzllNmZk
ZTM4MjEwMy4uMWIzNmJjMzk3N2I5ZDhkNzdmMTdiMzlhNTVlNzMyNGQzMGY3M2E2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAK
QEAgLTQyLDEwICs0MiwxMCBAQCBSZWY8Q2FjaGVkU2NyaXB0RmV0Y2hlcj4gQ2FjaGVkU2NyaXB0
RmV0Y2hlcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgY2hhcnNldCkKIAogQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkU2NyaXB0PiBDYWNoZWRTY3JpcHRGZXRjaGVyOjpyZXF1ZXN0TW9kdWxlU2Ny
aXB0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFN0cmluZyYmIGlu
dGVncml0eSkgY29uc3QKIHsKLSAgICByZXR1cm4gcmVxdWVzdFNjcmlwdFdpdGhDYWNoZShkb2N1
bWVudCwgc291cmNlVVJMLCBTdHJpbmcgeyB9LCBXVEZNb3ZlKGludGVncml0eSkpOworICAgIHJl
dHVybiByZXF1ZXN0U2NyaXB0V2l0aENhY2hlKGRvY3VtZW50LCBzb3VyY2VVUkwsIFdlYkNvcmU6
OlNjcmlwdE1vZGU6Ok1vZHVsZSwgU3RyaW5nIHsgfSwgV1RGTW92ZShpbnRlZ3JpdHkpKTsKIH0K
IAotQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBDYWNoZWRTY3JpcHRGZXRjaGVy
OjpyZXF1ZXN0U2NyaXB0V2l0aENhY2hlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiBz
b3VyY2VVUkwsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBTdHJpbmcmJiBpbnRlZ3Jp
dHkpIGNvbnN0CitDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IENhY2hlZFNjcmlw
dEZldGNoZXI6OnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25z
dCBVUkwmIHNvdXJjZVVSTCwgV2ViQ29yZTo6U2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBjb25zdCBT
dHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgU3RyaW5nJiYgaW50ZWdyaXR5KSBjb25zdAogewogICAg
IGlmICghZG9jdW1lbnQuc2V0dGluZ3MoKS5pc1NjcmlwdEVuYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC01Niw2ICs1Niw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFNjcmlwdD4gQ2FjaGVkU2NyaXB0RmV0Y2hlcjo6cmVxdWVzdFNjcmlwdFdpdGhDYWNoZShECiAg
ICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uID0gaGFzS25vd25Ob25j
ZSA/IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVjayA6IENv
bnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2s7CiAgICAgb3B0aW9u
cy5zYW1lT3JpZ2luRGF0YVVSTEZsYWcgPSBTYW1lT3JpZ2luRGF0YVVSTEZsYWc6OlNldDsKICAg
ICBvcHRpb25zLmludGVncml0eSA9IFdURk1vdmUoaW50ZWdyaXR5KTsKKyAgICBvcHRpb25zLnNj
cmlwdE1vZGUgPSBzY3JpcHRNb2RlOwogCiAgICAgYXV0byByZXF1ZXN0ID0gY3JlYXRlUG90ZW50
aWFsQWNjZXNzQ29udHJvbFJlcXVlc3Qoc291cmNlVVJMLCBkb2N1bWVudCwgY3Jvc3NPcmlnaW5N
b2RlLCBXVEZNb3ZlKG9wdGlvbnMpKTsKICAgICByZXF1ZXN0LnVwZ3JhZGVJbnNlY3VyZVJlcXVl
c3RJZk5lZWRlZChkb2N1bWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9DYWNoZWRTY3JpcHRGZXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9D
YWNoZWRTY3JpcHRGZXRjaGVyLmgKaW5kZXggZDUzOTFjNjk3ZDdjZjRmNmY1ZDQwNzljYTI3MmVm
NzdlYTljYWJhNy4uOTY5ZTY0M2IyZDg0MjhiMTAwMDVlYmE2ODJiZTVlMzhkZDc2ZjVmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuaApA
QCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFNjcmlw
dDsKIGNsYXNzIERvY3VtZW50OworZW51bSBjbGFzcyBTY3JpcHRNb2RlIDogdWludDhfdDsKIAog
Y2xhc3MgQ2FjaGVkU2NyaXB0RmV0Y2hlciA6IHB1YmxpYyBKU0M6OlNjcmlwdEZldGNoZXIgewog
cHVibGljOgpAQCAtNTQsNyArNTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgIH0KIAotICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gcmVxdWVzdFNjcmlwdFdpdGhDYWNo
ZShEb2N1bWVudCYsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBjb25zdCBTdHJpbmcmIGNyb3NzT3Jp
Z2luTW9kZSwgU3RyaW5nJiYgaW50ZWdyaXR5KSBjb25zdDsKKyAgICBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRTY3JpcHQ+IHJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoRG9jdW1lbnQmLCBjb25z
dCBVUkwmIHNvdXJjZVVSTCwgU2NyaXB0TW9kZSwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1v
ZGUsIFN0cmluZyYmIGludGVncml0eSkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
bm9uY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3Jp
cHRTb3VyY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRT
Y3JpcHRTb3VyY2VQcm92aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDY0ZjAxOGY1NDNlOWY3MTM5ZDQ4
Y2M4NTc3NTVkOGJmZGNhMjExNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmNwcApAQCAtMCwwICsxLDUzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkNhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcjo6Y2Fj
aGVCeXRlY29kZShjb25zdCBKU0M6OkJ5dGVjb2RlQ2FjaGVHZW5lcmF0b3ImKSBjb25zdAorewor
ICAgIG1fc2hvdWxkQ2FjaGUgPSB0cnVlOworICAgIG1faGFzVXBkYXRlcyA9IHRydWU7Cit9CisK
K3ZvaWQgQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXI6OnVwZGF0ZUNhY2hlKGNvbnN0IEpTQzo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJj
ZSwgSlNDOjpDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIGNvbnN0IEpTQzo6VW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayopIGNvbnN0Cit7CisgICAgaWYgKCFtX3Nob3VsZENhY2hlKQorICAg
ICAgICByZXR1cm47CisgICAgbV9oYXNVcGRhdGVzID0gdHJ1ZTsKKyAgICBtX2J5dGVjb2RlQ2Fj
aGVNZXRhZGF0YS5yZWNvcmRDYWNoZWRGdW5jdGlvbkNvZGVCbG9jayhzb3VyY2UsIGtpbmQpOwor
fQorCit2b2lkIENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyOjpjb21taXRDYWNoZWRCeXRlY29k
ZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hhc1VwZGF0ZXMpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX2hhc1VwZGF0ZXMgPSBmYWxzZTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVy
U3RyYXRlZ3koKS0+Y2FjaGVCeXRlY29kZUZvclNjcmlwdCgqbV9jYWNoZWRTY3JpcHQsIG1fYnl0
ZWNvZGVDYWNoZU1ldGFkYXRhKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3Zp
ZGVyLmgKaW5kZXggYWU0NDRjNjQ1MzZiMjM1Y2ExNjU3NDZkOTQwYTE3MGJjOTFjYWVhYi4uYmJi
Mzg4MWI5ZGZlYWUxYjUyM2JkNTZiMzQyNTIyMDU3MmYwYTBhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjksNiArMjksOSBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5j
bHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0RmV0Y2hlci5oIgor
I2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVz
LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnl0ZWNvZGVDYWNoZU1ldGFkYXRhLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU291cmNlUHJvdmlkZXIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNDAsMTMgKzQzLDIxIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNhY2hl
ZFNjcmlwdFNvdXJjZVByb3ZpZGVyKCkKICAgICB7CisgICAgICAgIGNvbW1pdENhY2hlZEJ5dGVj
b2RlKCk7CiAgICAgICAgIG1fY2FjaGVkU2NyaXB0LT5yZW1vdmVDbGllbnQoKnRoaXMpOwogICAg
IH0KIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NhY2hl
ZFNjcmlwdC0+c2NyaXB0SGFzaCgpOyB9CiAgICAgU3RyaW5nVmlldyBzb3VyY2UoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2NhY2hlZFNjcmlwdC0+c2NyaXB0KCk7IH0KKyAgICBSZWZQdHI8
SlNDOjpDYWNoZWRCeXRlY29kZT4gY2FjaGVkQnl0ZWNvZGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2NhY2hlZFNjcmlwdC0+Y2FjaGVkQnl0ZWNvZGUoKTsgfQorICAgIHZvaWQgY29tbWl0
Q2FjaGVkQnl0ZWNvZGUoKSBjb25zdCBvdmVycmlkZTsKKworICAgIHZvaWQgY2FjaGVCeXRlY29k
ZShjb25zdCBKU0M6OkJ5dGVjb2RlQ2FjaGVHZW5lcmF0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2b2lkIHVwZGF0ZUNhY2hlKGNvbnN0IEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
LCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmLCBKU0M6OkNvZGVTcGVjaWFsaXphdGlvbktpbmQsIGNv
bnN0IEpTQzo6VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayopIGNvbnN0IG92ZXJyaWRlOwogCiBw
cml2YXRlOgorICAgIHZvaWQgY29tbWl0Qnl0ZWNvZGVDYWNoZSgpOworCiAgICAgQ2FjaGVkU2Ny
aXB0U291cmNlUHJvdmlkZXIoQ2FjaGVkU2NyaXB0KiBjYWNoZWRTY3JpcHQsIEpTQzo6U291cmNl
UHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUsIFJlZjxDYWNoZWRTY3JpcHRGZXRjaGVyPiYm
IHNjcmlwdEZldGNoZXIpCiAgICAgICAgIDogU291cmNlUHJvdmlkZXIoSlNDOjpTb3VyY2VPcmln
aW4geyBjYWNoZWRTY3JpcHQtPnJlc3BvbnNlKCkudXJsKCksIFdURk1vdmUoc2NyaXB0RmV0Y2hl
cikgfSwgVVJMKGNhY2hlZFNjcmlwdC0+cmVzcG9uc2UoKS51cmwoKSksIFRleHRQb3NpdGlvbigp
LCBzb3VyY2VUeXBlKQogICAgICAgICAsIG1fY2FjaGVkU2NyaXB0KGNhY2hlZFNjcmlwdCkKQEAg
LTU0LDYgKzY1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgbV9jYWNoZWRTY3JpcHQtPmFkZENsaWVu
dCgqdGhpcyk7CiAgICAgfQogCisgICAgbXV0YWJsZSBib29sIG1fc2hvdWxkQ2FjaGUgeyBmYWxz
ZSB9OworICAgIG11dGFibGUgYm9vbCBtX2hhc1VwZGF0ZXMgeyBmYWxzZSB9OworICAgIG11dGFi
bGUgSlNDOjpCeXRlY29kZUNhY2hlTWV0YWRhdGEgbV9ieXRlY29kZUNhY2hlTWV0YWRhdGE7CiAg
ICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBtX2NhY2hlZFNjcmlwdDsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAKaW5kZXgg
ZDkyN2U5NWJlMjY5YTI1YWU0MzM2YTc0YjAwMDI3YzE3NThmZTQ4YS4uM2EyNTc3MTQwMzI1ZTE0
ZTM0NDMyNjdjNDMxZmMzZDFiNDA5NGUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRh
YmxlQ2xhc3NpY1NjcmlwdC5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIExvYWRhYmxlQ2xh
c3NpY1NjcmlwdDo6ZXhlY3V0ZShTY3JpcHRFbGVtZW50JiBzY3JpcHRFbGVtZW50KQogYm9vbCBM
b2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmxvYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwm
IHNvdXJjZVVSTCkKIHsKICAgICBBU1NFUlQoIW1fY2FjaGVkU2NyaXB0KTsKLSAgICBtX2NhY2hl
ZFNjcmlwdCA9IHJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoZG9jdW1lbnQsIHNvdXJjZVVSTCwgY3Jv
c3NPcmlnaW5Nb2RlKCksIFN0cmluZyB7IG1faW50ZWdyaXR5IH0pOworICAgIG1fY2FjaGVkU2Ny
aXB0ID0gcmVxdWVzdFNjcmlwdFdpdGhDYWNoZShkb2N1bWVudCwgc291cmNlVVJMLCBXZWJDb3Jl
OjpTY3JpcHRNb2RlOjpDbGFzc2ljLCBjcm9zc09yaWdpbk1vZGUoKSwgU3RyaW5nIHsgbV9pbnRl
Z3JpdHkgfSk7CiAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIG1fY2FjaGVkU2NyaXB0LT5hZGRDbGllbnQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnRDYWNoZWRTY3JpcHRGZXRjaGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50Q2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKaW5k
ZXggODQzZGEyMDMxMjNjMTI4M2MwODliMzk2YmI2MmI5YWU0YmQzNmM2Yi4uMmRkNDE2NmQ3YWEy
ZjhjMmQwZjQ5Yjg3MTQyNDBkNDQzMTU4ZTM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEVsZW1lbnRDYWNoZWRTY3JpcHRGZXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXIuY3BwCkBAIC0yNyw2ICsy
Nyw3IEBACiAjaW5jbHVkZSAiU2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXIuaCIKIAog
I2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIK
ICNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2
LDcgKzM3LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBTY3JpcHRFbGVt
ZW50Q2FjaGVkU2NyaXB0RmV0Y2hlcjo6cmVxdWVzdE1vZHUKICAgICAvLyBodHRwczovL2dpdGh1
Yi5jb20vdGMzOS9wcm9wb3NhbC1keW5hbWljLWltcG9ydC9ibG9iL21hc3Rlci9IVE1MIEludGVn
cmF0aW9uLm1kCiAgICAgLy8gSWYgdGhlIGZldGNoZXIgaXMgbm90IG1vZHVsZSBzY3JpcHQsIGNy
ZWRlbnRpYWwgbW9kZSBpcyBhbHdheXMgIm9taXQiLgogCi0gICAgcmV0dXJuIHJlcXVlc3RTY3Jp
cHRXaXRoQ2FjaGUoZG9jdW1lbnQsIHNvdXJjZVVSTCwgaXNDbGFzc2ljU2NyaXB0KCkgPyAib21p
dCJfcyA6IG1fY3Jvc3NPcmlnaW5Nb2RlLCBXVEZNb3ZlKGludGVncml0eSkpOworICAgIHJldHVy
biByZXF1ZXN0U2NyaXB0V2l0aENhY2hlKGRvY3VtZW50LCBzb3VyY2VVUkwsIGlzQ2xhc3NpY1Nj
cmlwdCgpID8gV2ViQ29yZTo6U2NyaXB0TW9kZTo6Q2xhc3NpYyA6IFdlYkNvcmU6OlNjcmlwdE1v
ZGU6Ok1vZHVsZSwgaXNDbGFzc2ljU2NyaXB0KCkgPyAib21pdCJfcyA6IG1fY3Jvc3NPcmlnaW5N
b2RlLCBXVEZNb3ZlKGludGVncml0eSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcAppbmRleCAzZDAwNmFiMDRi
ZjUyODc2NGY5ZjBjODQ0YWJmNDZlMGQ2MzYzMWZmLi43NDhhMzFmZTI3ZWQyYjNlYzYxN2VlOWM0
YzRmZDIzNTkzNmI1YzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAKQEAgLTUzLDYgKzUzLDEyIEBAIENhY2hlZFJlc291
cmNlUmVxdWVzdCBQcmVsb2FkUmVxdWVzdDo6cmVzb3VyY2VSZXF1ZXN0KERvY3VtZW50JiBkb2N1
bWVudCkKICAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNl
TG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7CiAgICAgaWYgKHNraXBDb250
ZW50U2VjdXJpdHlQb2xpY3lDaGVjaykKICAgICAgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQ
b2xpY3lJbXBvc2l0aW9uID0gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBv
bGljeUNoZWNrOworICAgIGlmIChtX3Jlc291cmNlVHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlw
ZTo6U2NyaXB0KSB7CisgICAgICAgIGlmIChtX21vZHVsZVNjcmlwdCA9PSBNb2R1bGVTY3JpcHQ6
OlllcykKKyAgICAgICAgICAgIG9wdGlvbnMuc2NyaXB0TW9kZSA9IFNjcmlwdE1vZGU6Ok1vZHVs
ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3B0aW9ucy5zY3JpcHRNb2RlID0gU2NyaXB0
TW9kZTo6Q2xhc3NpYzsKKyAgICB9CiAKICAgICBTdHJpbmcgY3Jvc3NPcmlnaW5Nb2RlID0gbV9j
cm9zc09yaWdpbk1vZGU7CiAgICAgaWYgKG1fbW9kdWxlU2NyaXB0ID09IE1vZHVsZVNjcmlwdDo6
WWVzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKaW5kZXggMmNkNzZmOTMwMWE0
ZmZjMWYyNmE4ZTAwYmU0MTU3MWMwYTg4MWFkOS4uY2I2ZTFjODUxNzhhYzVkYzhhM2Q2OWUzNGE1
MmNjNDNlYTY3OTgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcApAQCAtMjQ4
LDYgKzI0OCw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50PiBM
aW5rTG9hZGVyOjpwcmVsb2FkSWZOZWVkZWQoY29uc3QgTGluCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgYXV0byBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRD
YWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKKyAgICBpZiAodHlwZS52YWx1ZSgpID09IENhY2hlZFJl
c291cmNlOjpUeXBlOjpTY3JpcHQpCisgICAgICAgIG9wdGlvbnMuc2NyaXB0TW9kZSA9IFNjcmlw
dE1vZGU6OkNsYXNzaWM7CisKICAgICBhdXRvIGxpbmtSZXF1ZXN0ID0gY3JlYXRlUG90ZW50aWFs
QWNjZXNzQ29udHJvbFJlcXVlc3QoZG9jdW1lbnQuY29tcGxldGVVUkwoaHJlZiksIGRvY3VtZW50
LCBjcm9zc09yaWdpbk1vZGUsIFdURk1vdmUob3B0aW9ucykpOwogICAgIGxpbmtSZXF1ZXN0LnNl
dFByaW9yaXR5KENhY2hlZFJlc291cmNlOjpkZWZhdWx0UHJpb3JpdHlGb3JSZXNvdXJjZVR5cGUo
dHlwZS52YWx1ZSgpKSk7CiAgICAgbGlua1JlcXVlc3Quc2V0SW5pdGlhdG9yKCJsaW5rIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmluZGV4IDhhODIzODFmMDE4MTY1ZTY1
M2UzYzRiMjU0ZTU2OTdiNjNjMDlmNzAuLjRlZTc2M2FlMjNjZGI0Nzc5NjI1OWE2NmNjMjg1YjFk
NzUwODNhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVn
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMy
LDkgKzMyLDE0IEBACiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgQnl0ZWNvZGVDYWNoZU1ldGFkYXRh
OworfTsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKK2Ns
YXNzIENhY2hlZFNjcmlwdDsKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeTsKIGNsYXNzIEZy
YW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CkBAIC03NCw2ICs3OSw4IEBAIHB1YmxpYzoKICAgICB1
c2luZyBQcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29u
c3QgUmVzb3VyY2VFcnJvciYpPjsKICAgICB2aXJ0dWFsIHZvaWQgcHJlY29ubmVjdFRvKEZyYW1l
TG9hZGVyJiwgY29uc3QgVVJMJiwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RD
b21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgY2FjaGVCeXRlY29k
ZUZvclNjcmlwdChjb25zdCBDYWNoZWRTY3JpcHQmLCBjb25zdCBKU0M6OkJ5dGVjb2RlQ2FjaGVN
ZXRhZGF0YSYpID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRDYXB0dXJlRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3NFbmFibGVkKGJvb2wpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc09uTGlu
ZSgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IDhiNjY2MjhmNjFjZGRiNDdkNmU2NDEwOGEyY2I0ZDcyZWEwMzJhYjQuLmJkMmFkMDNkY2Vi
ZDAwMmE0YTM1M2Y4ZjFiZTcwZjRlNWFmZGM5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAg
KEMpIDIwMDcgR3JhaGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC04MTgsNCArODE4LDggQEAgYm9vbCBSZXNvdXJjZUxvYWRlcjo6aXNBbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKICAgICByZXR1cm4gZnJhbWVMb2FkZXIoKSAmJiBm
cmFtZUxvYWRlcigpLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKIH0KIAordm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZShjb25zdCBTdHJpbmcm
LCBTaGFyZWRCdWZmZXImKQoreworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5oCmluZGV4IGQxN2U1OGQ2YmQwNDQ5MjI1YzEzYjFhMzM4ZmQxMDEwZjU3MmVlYzYuLjFi
NWRmYzA5MDY2NzQyZGQ1NGM1NGQyMWY2M2ZmYTE4ZGQ0MjkwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA2LDYgKzEwNiw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgIHZpcnR1YWwgdm9pZCBk
aWRSZXRyaWV2ZURlcml2ZWREYXRhRnJvbUNhY2hlKGNvbnN0IFN0cmluZyYgdHlwZSwgU2hhcmVk
QnVmZmVyJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEJsb2NrQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
T3B0aW9ucy5oCmluZGV4IDllMzA3NGRhMzIxMWQwZWU5N2I4ZWIyZWRmNDkxNjllYzVkZjJhNGEu
LjRlMDEwNjQ1NDRhMzZmY2QwNzEwNzQ0NThhOWVjYWUwMzY2NzM2ZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgKQEAgLTEyNyw2ICsxMjcsMTIg
QEAgZW51bSBjbGFzcyBMb2FkZWRGcm9tT3BhcXVlU291cmNlIDogdWludDhfdCB7CiAgICAgTm8K
IH07CiAKK2VudW0gY2xhc3MgU2NyaXB0TW9kZSA6IHVpbnQ4X3QgeworICAgIE5vbmUsCisgICAg
Q2xhc3NpYywKKyAgICBNb2R1bGUsCit9OworCiBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
IDogcHVibGljIEZldGNoT3B0aW9ucyB7CiAgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zKCkgeyB9
CiAKQEAgLTE3Miw2ICsxNzgsNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zIDogcHVi
bGljIEZldGNoT3B0aW9ucyB7CiAgICAgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVk
ZW50aWFsUG9saWN5IHsgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9y
Q3JlZGVudGlhbHMgfTsKICAgICBQcmVmbGlnaHRQb2xpY3kgcHJlZmxpZ2h0UG9saWN5IHsgUHJl
ZmxpZ2h0UG9saWN5OjpDb25zaWRlciB9OwogICAgIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9h
ZGVkRnJvbU9wYXF1ZVNvdXJjZSB7IExvYWRlZEZyb21PcGFxdWVTb3VyY2U6Ok5vIH07CisgICAg
U2NyaXB0TW9kZSBzY3JpcHRNb2RlIHsgU2NyaXB0TW9kZTo6Tm9uZSB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggMzZiMDZiYjg5MTgwNGI3OGFmZjI1Nzc1MjM1M2ZjNWVjOGQwZDJhOS4uOWFi
ZGU4ZWI5ZjZmNzQ0ZWY3MjE5MDQ3YzllNjhhZWQ3NjNmMzJkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03NTEsNiArNzUxLDEzIEBAIHZvaWQg
U3VicmVzb3VyY2VMb2FkZXI6OmRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikKICAgICBu
b3RpZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZTo6Q2FuY2VsKTsKIH0KIAordm9pZCBTdWJyZXNv
dXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZShjb25zdCBTdHJpbmcm
IHR5cGUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIGlmIChtX3N0YXRlICE9IEluaXRp
YWxpemVkKQorICAgICAgICByZXR1cm47CisgICAgbV9yZXNvdXJjZS0+ZGlkUmV0cmlldmVEZXJp
dmVkRGF0YUZyb21DYWNoZSh0eXBlLCBidWZmZXIpOworfQorCiB2b2lkIFN1YnJlc291cmNlTG9h
ZGVyOjpub3RpZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZSB0eXBlKQogewogICAgIGlmIChyZWFj
aGVkVGVybWluYWxTdGF0ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuaAppbmRleCBkZWM4ZDBiYWNjY2Y3YjU4NWU4YjdkMDhmN2M1YmQ5MmQ2MjEyNzBjLi5hZjQ0
MGRhNzMyNjExOTAxZTU4NTdiMzIyMDQyMDFhNGM2M2VjMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc5LDYgKzc5LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQg
d2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRD
YW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmV0cmll
dmVEZXJpdmVkRGF0YUZyb21DYWNoZShjb25zdCBTdHJpbmcmIHR5cGUsIFNoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOwogICAgIAogICAgIHZvaWQgdXBkYXRlUmVmZXJyZXJQb2xpY3koY29uc3QgU3Ry
aW5nJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRl
eCAyYjdiZjQyOWRkNjIyZmM3MjdlMTAxMzAyZWZmZWVkZDVlNGMzODQ3Li42NTc0NjA2YzAwNmVj
NzU2MWMxNmFlZjVhMWZmMjA4N2QyNmJlOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Ro
cmVhZGFibGVMb2FkZXIuY3BwCkBAIC05MCw2ICs5MCw3IEBAIFRocmVhZGFibGVMb2FkZXJPcHRp
b25zIFRocmVhZGFibGVMb2FkZXJPcHRpb25zOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIGNv
cHkuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9IHRoaXMtPmNsaWVudENyZWRlbnRpYWxQb2xpY3k7
CiAgICAgY29weS5tYXhSZWRpcmVjdENvdW50ID0gdGhpcy0+bWF4UmVkaXJlY3RDb3VudDsKICAg
ICBjb3B5LnByZWZsaWdodFBvbGljeSA9IHRoaXMtPnByZWZsaWdodFBvbGljeTsKKyAgICBjb3B5
LnNjcmlwdE1vZGUgPSB0aGlzLT5zY3JpcHRNb2RlOwogCiAgICAgLy8gVGhyZWFkYWJsZUxvYWRl
ck9wdGlvbnMKICAgICBjb3B5LmNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50ID0gdGhp
cy0+Y29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDliZjUxZTBiMjI3NDRhYTYyZTc3NWQ5
ZWU3NTUzN2YzMWJhODgyMDQuLmM3YTQ4ZmE3OTRkMTc3NTI1N2VhYzk0NDU5ZDRmMzAxMDE5Y2Qx
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBA
IC0yNzAsNiArMjcwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRh
KHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVuc2lnbmVkIGxvbmcgbG9uZyAv
KiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQogCisgICAgdmlydHVhbCB2b2lkIGRpZFJldHJp
ZXZlRGVyaXZlZERhdGFGcm9tQ2FjaGUoY29uc3QgU3RyaW5nJiAvKiB0eXBlICovLCBTaGFyZWRC
dWZmZXImKSB7IH0KKwogI2lmIFVTRShGT1VOREFUSU9OKSB8fCBVU0UoU09VUCkKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRl
eCAxYmJkNDQ0NjkyMDdjMjQ2NjIyMmRkMjM1ZmEyM2Y5YjIyZmRkYTY3Li41OTgzMjZlZGExZTEy
NGQ4OGEzOWExNjI5ZjFiYzJlY2NkOTNjYjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtMyw3ICszLDcgQEAKICAgICBDb3B5cmlnaHQgKEMp
IDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAgICAgQ29weXJpZ2h0IChDKSAy
MDAyIFdhbGRvIEJhc3RpYW4gKGJhc3RpYW5Aa2RlLm9yZykKICAgICBDb3B5cmlnaHQgKEMpIDIw
MDYgU2FtdWVsIFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCi0gICAgQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5o
IgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg5
LDYgKzkwLDExIEBAIFN0cmluZ1ZpZXcgQ2FjaGVkU2NyaXB0OjpzY3JpcHQoKQogICAgIHJldHVy
biBtX3NjcmlwdDsKIH0KIAorUmVmUHRyPEpTQzo6Q2FjaGVkQnl0ZWNvZGU+IENhY2hlZFNjcmlw
dDo6Y2FjaGVkQnl0ZWNvZGUoKQoreworICAgIHJldHVybiBtX2NhY2hlZEJ5dGVjb2RlOworfQor
CiB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogewogICAgIGlmIChtX2RlY29k
aW5nU3RhdGUgPT0gTmV2ZXJEZWNvZGVkKQpAQCAtMTAzLDYgKzEwOSw0MSBAQCB2b2lkIENhY2hl
ZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgQ2FjaGVkUmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSk7CiB9CiAKK3ZvaWQgQ2FjaGVkU2NyaXB0OjpkaWRS
ZXRyaWV2ZURlcml2ZWREYXRhRnJvbUNhY2hlKGNvbnN0IFN0cmluZyYgdHlwZSwgU2hhcmVkQnVm
ZmVyJiBzaGFyZWRCdWZmZXIpCit7CisjaWYgT1MoREFSV0lOKQorICAgIEFTU0VSVF9VTlVTRUQo
dHlwZSwgdHlwZSA9PSAiYnl0ZWNvZGUtY2FjaGUiKTsKKworICAgIFN0cmluZyBmaWxlbmFtZSA9
IFN0cmluZyhzaGFyZWRCdWZmZXIuZGF0YSgpLCBzaGFyZWRCdWZmZXIuc2l6ZSgpKTsKKworICAg
IGRhdGFMb2dMbigiUmVhZGluZyBjYWNoZSBmcm9tOiAiLCBmaWxlbmFtZSk7CisKKyAgICBpbnQg
ZmQgPSBvcGVuKGZpbGVuYW1lLmFzY2lpKCkuZGF0YSgpLCBPX1JET05MWSB8IE9fU0hMT0NLIHwg
T19OT05CTE9DSyk7CisgICAgaWYgKGZkID09IC0xKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvIGNsb3NlRkQgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIGNsb3NlKGZkKTsKKyAg
ICAgICAgdW5saW5rKGZpbGVuYW1lLmFzY2lpKCkuZGF0YSgpKTsKKyAgICB9KTsKKworICAgIHN0
cnVjdCBzdGF0IHNiOworICAgIGludCByZXMgPSBmc3RhdChmZCwgJnNiKTsKKyAgICBzaXplX3Qg
c2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oc2Iuc3Rfc2l6ZSk7CisgICAgaWYgKHJlcyB8fCAh
c2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdm9pZCogYnVmZmVyID0gbW1hcChudWxscHRy
LCBzaXplLCBQUk9UX1JFQUQsIE1BUF9QUklWQVRFLCBmZCwgMCk7CisgICAgaWYgKGJ1ZmZlciA9
PSBNQVBfRkFJTEVEKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NhY2hlZEJ5dGVjb2RlID0g
SlNDOjpDYWNoZWRCeXRlY29kZTo6Y3JlYXRlKGJ1ZmZlciwgc2l6ZSk7CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTSh0eXBlKTsKKyAgICBVTlVTRURfUEFSQU0oc2hhcmVkQnVmZmVyKTsKKyNlbmRp
ZgorfQorCiB2b2lkIENhY2hlZFNjcmlwdDo6ZGVzdHJveURlY29kZWREYXRhKCkKIHsKICAgICBt
X3NjcmlwdCA9IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNj
cmlwdC5oCmluZGV4IGRkNmZiY2MzNjg3ODExZGYwNmVjMWNlMjg0MzFmMzg4YTNkNjAwM2MuLjU4
YmIyMDM0YjQyMzY3Mjg5MzcxOTc2Yjk5OTI2NTZkZDYwMGRmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTIsNyArMiw3IEBACiAgICAgQ29weXJp
Z2h0IChDKSAxOTk4IExhcnMgS25vbGwgKGtub2xsQG1waS1oZC5tcGcuZGUpCiAgICAgQ29weXJp
Z2h0IChDKSAyMDAxIERpcmsgTXVlbGxlciA8bXVlbGxlckBrZGUub3JnPgogICAgIENvcHlyaWdo
dCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdtYWlsLmNvbSkKLSAgICBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FjaGVk
UmVzb3VyY2UuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Tb3VyY2VQcm92aWRlci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM3LDYgKzM4LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgfkNhY2hlZFNjcmlwdCgpOwogCiAgICAgU3RyaW5nVmlldyBzY3JpcHQoKTsKKyAgICBS
ZWZQdHI8SlNDOjpDYWNoZWRCeXRlY29kZT4gY2FjaGVkQnl0ZWNvZGUoKTsKICAgICB1bnNpZ25l
ZCBzY3JpcHRIYXNoKCk7CiAKIHByaXZhdGU6CkBAIC00OCwxMiArNTAsMTQgQEAgcHJpdmF0ZToK
ICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3Vy
Y2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9k
ZWNvZGVyLmdldCgpOyB9CiAgICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciopIGZp
bmFsOworICAgIHZvaWQgZGlkUmV0cmlldmVEZXJpdmVkRGF0YUZyb21DYWNoZShjb25zdCBTdHJp
bmcmLCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKIAogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRh
KCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJj
ZSYpIGZpbmFsOwogCiAgICAgU3RyaW5nIG1fc2NyaXB0OworICAgIFJlZlB0cjxKU0M6OkNhY2hl
ZEJ5dGVjb2RlPiBtX2NhY2hlZEJ5dGVjb2RlOwogICAgIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7
IDAgfTsKIAogICAgIGVudW0gRGVjb2RpbmdTdGF0ZSB7IE5ldmVyRGVjb2RlZCwgRGF0YUFuZERl
Y29kZWRTdHJpbmdIYXZlU2FtZUJ5dGVzLCBEYXRhQW5kRGVjb2RlZFN0cmluZ0hhdmVEaWZmZXJl
bnRCeXRlcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBlOWM5OGYyZTIyMjdm
ZTFjNTI1MTc3MGQwNjBkMmVkMmUzY2NkZTViLi4wYWViMTc0MTY0OWEyOWNhYmUzMDYxYmVkZmRl
ODJiZjgzNzZjZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjAzLDYgKzYw
MywxMiBAQCBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsJiBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6YmxvYlJlZ2lzdHJ5KCkKICAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+bmV0
d29ya0Jsb2JSZWdpc3RyeSgpLmJsb2JSZWdpc3RyeSgpOwogfQogCit2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjYWNoZUJ5dGVjb2RlRm9yUmVxdWVzdChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEpTQzo6Qnl0ZWNvZGVDYWNoZU1ldGFk
YXRhJiBtZXRhZGF0YSkKK3sKKyAgICBpZiAoYXV0byogYnl0ZWNvZGVDYWNoZSA9IG1fbmV0d29y
a1Byb2Nlc3MtPmJ5dGVjb2RlQ2FjaGUoKSkKKyAgICAgICAgYnl0ZWNvZGVDYWNoZS0+c3RvcmVN
ZXRhZGF0YUZvclJlcXVlc3QocmVxdWVzdCwgbWV0YWRhdGEpOworfQorCiB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NF
bmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBtX2NhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljc0VuYWJsZWQgPSBlbmFibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDA5MDNh
MTY0NTg5ZGExOTU0Y2U2M2ZjMzFiZWQyMGJlYjIxYWVkODcuLjhlYTM2M2ZjYTQ5NzgzOWQ1OTY3
ZTIzZGVjZDZlMGEyZjljNzhiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTE4Nyw2
ICsxODcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJM
Jik7CiAgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+
JiYpOwogCisgICAgdm9pZCBjYWNoZUJ5dGVjb2RlRm9yUmVxdWVzdChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBKU0M6OkJ5dGVjb2RlQ2FjaGVNZXRhZGF0YSYpOworCiAg
ICAgdm9pZCBzZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wpOwog
CiAgICAgdm9pZCBjcmVhdGVTb2NrZXRTdHJlYW0oVVJMJiYsIFBBTDo6U2Vzc2lvbklELCBTdHJp
bmcgY2FjaGVQYXJ0aXRpb24sIHVpbnQ2NF90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCmluZGV4IGZkODQ4ZTNhZDA0NmM4MGMzYWUzZjQ2ZDM5MDE1YTAyZjAw
M2M5NTEuLjY1ZDhiYWNlZjU5ZDJmNTA0ZjJkYTMzZWRiNzViMWM5YTAxZGY4NjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNDksNiArNDksOCBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7
CiAgICAgQmxvYlNpemUoVVJMIHVybCkgLT4gKHVpbnQ2NF90IHJlc3VsdFNpemUpIFN5bmNocm9u
b3VzCiAgICAgV3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoVmVjdG9yPFN0cmluZz4gYmxvYlVS
THMpIC0+IChWZWN0b3I8U3RyaW5nPiBmaWxlTmFtZXMpIEFzeW5jCiAKKyAgICBDYWNoZUJ5dGVj
b2RlRm9yUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSlNDOjpCeXRl
Y29kZUNhY2hlTWV0YWRhdGEgbWV0YWRhdGEpCisKICAgICBTZXRDYXB0dXJlRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKIAogICAgIENyZWF0ZVNvY2tldFN0cmVh
bShVUkwgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBjYWNoZVBhcnRpdGlv
biwgdWludDY0X3QgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaAppbmRleCBkODU2M2QyMmFiNGY5YzMxZWQ1Y2YxOTQzYzUzZDE1YmQ0
MmFiYmViLi42NjNiMDViYmI2NDgzM2E2ZDZiOGZjOWJlODU5YTYyNjNmMjMzMWQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yNiw2ICsy
Niw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3MuaCIKKyNp
bmNsdWRlICJCeXRlY29kZUNhY2hlLmgiCiAjaW5jbHVkZSAiQ2FjaGVNb2RlbC5oIgogI2luY2x1
ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtCbG9iUmVnaXN0cnkuaCIK
QEAgLTE2MSw2ICsxNjIsNyBAQCBwdWJsaWM6CiAgICAgRG93bmxvYWRNYW5hZ2VyJiBkb3dubG9h
ZE1hbmFnZXIoKTsKIAogICAgIE5ldHdvcmtDYWNoZTo6Q2FjaGUqIGNhY2hlKCkgeyByZXR1cm4g
bV9jYWNoZS5nZXQoKTsgfQorICAgIEJ5dGVjb2RlQ2FjaGUqIGJ5dGVjb2RlQ2FjaGUoKSB7IHJl
dHVybiBtX2J5dGVjb2RlQ2FjaGUuZ2V0KCk7IH0KIAogICAgIHZvaWQgc2V0U2Vzc2lvbihjb25z
dCBQQUw6OlNlc3Npb25JRCYsIFJlZjxOZXR3b3JrU2Vzc2lvbj4mJik7CiAgICAgTmV0d29ya1Nl
c3Npb24qIG5ldHdvcmtTZXNzaW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJikgY29uc3Qgb3ZlcnJp
ZGU7CkBAIC00NzMsNiArNDc1LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmPE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzPj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnM7CiAKICAgICBT
dHJpbmcgbV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fYnl0ZWNvZGVDYWNoZURp
cmVjdG9yeTsKICAgICBib29sIG1faGFzU2V0Q2FjaGVNb2RlbCB7IGZhbHNlIH07CiAgICAgQ2Fj
aGVNb2RlbCBtX2NhY2hlTW9kZWwgeyBDYWNoZU1vZGVsOjpEb2N1bWVudFZpZXdlciB9OwogICAg
IGJvb2wgbV9zdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciB7IGZhbHNlIH07CkBAIC00ODQs
NiArNDg3LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWY8Q2Fj
aGVTdG9yYWdlOjpFbmdpbmU+PiBtX2NhY2hlRW5naW5lczsKIAogICAgIFJlZlB0cjxOZXR3b3Jr
Q2FjaGU6OkNhY2hlPiBtX2NhY2hlOworICAgIFJlZlB0cjxCeXRlY29kZUNhY2hlPiBtX2J5dGVj
b2RlQ2FjaGU7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgY2hhciosIHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQ+LCBQdHJIYXNoPGNvbnN0IGNoYXIqPj4gTmV0
d29ya1Byb2Nlc3NTdXBwbGVtZW50TWFwOwogICAgIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudE1h
cCBtX3N1cHBsZW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBk
YzM0ODA2YTliMmEwNDQyY2UzMzExMzcyOGFjMzVlNTVlZTEyZTkyLi4zOTIyMWQ2NzQ1Yzg3ZmQy
NTc2Y2M1OWM3NDFlYTY1YzU2OGZiZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcApAQCAtNDUsNiArNDUsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwg
Y2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb247CiAgICAgZW5jb2RlciA8PCBkaXNr
Q2FjaGVEaXJlY3Rvcnk7CiAgICAgZW5jb2RlciA8PCBkaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGU7CisgICAgZW5jb2RlciA8PCBieXRlY29kZUNhY2hlRGlyZWN0b3J5OworICAgIGVu
Y29kZXIgPDwgYnl0ZWNvZGVDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICNpZiBFTkFC
TEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAgICAgZW5jb2RlciA8
PCBzaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbjsKICNlbmRp
ZgpAQCAtMTEyLDYgKzExNCwxNSBAQCBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrUHJvYwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0LmRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSA9IFdURk1vdmUoKmRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5ieXRlY29kZUNhY2hlRGlyZWN0b3J5KSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
PiBieXRlY29kZUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGRlY29kZXIgPj4g
Ynl0ZWNvZGVDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBpZiAoIWJ5dGVjb2Rl
Q2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXN1bHQuYnl0ZWNvZGVDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUo
KmJ5dGVjb2RlQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworCiAjaWYgRU5BQkxFKE5F
VFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0
aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
CmluZGV4IDljZGM0NWExYjI5NTMwMDBkZTdkOWEwNmI3MzE1ZmI2NWIyNzkxZmQuLmYxZmNjM2E5
MmZkOTRhZWRmMTYwN2QzZWQ2ZmU4MzRmNmNlNmJhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgKQEAgLTU2LDYgKzU2LDggQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzIHsKIAogICAgIFN0cmluZyBkaXNrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIGRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAg
ICBTdHJpbmcgYnl0ZWNvZGVDYWNoZURpcmVjdG9yeTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUgYnl0ZWNvZGVDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICNpZiBFTkFCTEUo
TkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAgICAgYm9vbCBzaG91bGRF
bmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbiB7IGZhbHNlIH07CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggNThhYWNiOTkzZGI5OGFjY2RhNjUy
MmQ5NTY0YzllYWE4OTRiZGE4MS4uZTFmNWY3MDQ1OTMzODlmNWQxOWE0NmI4ZTYwOWVjZjQ4OWUx
YWQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKQEAgLTk2LDYgKzk2LDggQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGZyYW1lQW5jZXN0b3JPcmlnaW5zOwogICAgIGVu
Y29kZXIgPDwgaXNIVFRQU1VwZ3JhZGVFbmFibGVkOwogCisgICAgZW5jb2Rlci5lbmNvZGVFbnVt
KHNjcmlwdE1vZGUpOworCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBlbmNv
ZGVyIDw8IG1haW5Eb2N1bWVudFVSTDsKICAgICBlbmNvZGVyIDw8IHVzZXJDb250ZW50Q29udHJv
bGxlcklkZW50aWZpZXI7CkBAIC0yMTIsNiArMjE0LDkgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Jlc291
cmMKICAgICBpZiAoIWlzSFRUUFNVcGdyYWRlRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHJlc3VsdC5pc0hUVFBTVXBncmFkZUVuYWJsZWQgPSAqaXNIVFRQU1VwZ3JhZGVFbmFi
bGVkOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LnNjcmlwdE1vZGUpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9O
UykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tYWluRG9jdW1lbnRVUkwpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5oCmluZGV4IGIwNWZmODAzZjE3MTkwYWRlMzE5Y2RhMDYzZGEwMzE0
MDZlNGYzNzYuLjFkYmNjODUzYjE3YWYyNDFiZjJmMjdiOTY2ODk0MTY3NmZlNjU0ZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJVc2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoT3B0
aW9ucy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+
CiAKQEAgLTYwLDYgKzYxLDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkRW5hYmxlQ3Jvc3NP
cmlnaW5SZXNvdXJjZVBvbGljeSB7IGZhbHNlIH07CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4+IGZyYW1lQW5jZXN0b3JPcmlnaW5zOwogICAgIGJvb2wgaXNIVFRQ
U1VwZ3JhZGVFbmFibGVkIHsgZmFsc2UgfTsKKyAgICBXZWJDb3JlOjpTY3JpcHRNb2RlIHNjcmlw
dE1vZGUgeyBXZWJDb3JlOjpTY3JpcHRNb2RlOjpOb25lIH07CiAKICNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQogICAgIFVSTCBtYWluRG9jdW1lbnRVUkw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
NDUxMGU5MjY4YTIyYzIwNWM4YzZiMDM1YTdiMGZjZmU0NzhlMDZlMi4uZWRlMzZjM2Y5YWJjYWYz
ZDA0MGU4Mjg4NjQ4NjA0ZGVjMmQ3ZmI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogCiAjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgorI2luY2x1ZGUgIkRlcml2ZWREYXRhLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hl
LmgiCkBAIC05OSw2ICsxMDAsNyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcgogICAgICwgbV9p
c0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyB7IG1fcGFyYW1ldGVycy5jbGllbnRDcmVk
ZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNy
ZWRlbnRpYWxzIH0KICAgICAsIG1fYnVmZmVyaW5nVGltZXIgeyAqdGhpcywgJk5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCB9CiAgICAgLCBtX2NhY2hlIHsgc2Vzc2lv
bklEKCkuaXNFcGhlbWVyYWwoKSA/IG51bGxwdHIgOiBjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNz
KCkuY2FjaGUoKSB9CisgICAgLCBtX2J5dGVjb2RlQ2FjaGUgeyBzZXNzaW9uSUQoKS5pc0VwaGVt
ZXJhbCgpID8gbnVsbHB0ciA6IGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5ieXRlY29kZUNh
Y2hlKCkgfQogICAgICwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MobV9j
b25uZWN0aW9uLT5jYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKCkpCiB7CiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTE0Myw2ICsxNDUsMTggQEAgYm9vbCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhblVzZUNhY2hlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmNhblVzZUJ5dGVjb2RlQ2FjaGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KSBjb25zdAoreworICAgIGlmICghbV9ieXRlY29kZUNhY2hlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgQVNTRVJUKCFzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKTsKKworICAgIGlm
ICghY2FuVXNlQ2FjaGUocmVxdWVzdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiB0cnVlOworfQorCiBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuVXNlQ2FjaGVk
UmVkaXJlY3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAogewogICAgIGlm
ICghY2FuVXNlQ2FjaGUocmVxdWVzdCkgfHwgbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRh
dGlvbikKQEAgLTQ4MiwxNCArNDk2LDE1IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAg
Ly8gV2Ugd2FpdCB0byByZWNlaXZlIG1lc3NhZ2UgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZSBiZWZvcmUgY29udGludWluZyBhIGxvYWQgZm9yCiAgICAg
Ly8gYSBtYWluIHJlc291cmNlIGJlY2F1c2UgdGhlIGVtYmVkZGluZyBjbGllbnQgbXVzdCBkZWNp
ZGUgd2hldGhlciB0byBhbGxvdyB0aGUgbG9hZC4KICAgICBib29sIHdpbGxXYWl0Rm9yQ29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2UgPSBpc01haW5SZXNvdXJjZSgpOwotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgd2ls
bFdhaXRGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSB9KTsKIAogICAgIGlmICh3aWxsV2Fp
dEZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKSB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgd2lsbFdh
aXRGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSwgeyB9IH0pOwogICAgICAgICBtX3Jlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChtX2lzS2VwdEFsaXZlKSB7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNw
b25zZSwgd2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSwgeyB9IH0pOwogICAg
ICAgICBtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKTsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZEZpbmlzaExv
YWRpbmcoTmV0d29ya0xvYWRNZXRyaWNzIHsgfSk7CkBAIC00OTcsNyArNTEyLDEyIEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25z
ZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb21wbGV0
aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CisgICAgbG9hZEJ5dGVjb2RlQ2FjaGUocmVz
cG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUsIFtsb2FkZXIgPSBtYWtlUmVmKCp0aGlzKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVzcG9uc2Ug
PSBXVEZNb3ZlKHJlc3BvbnNlKV0oVmVjdG9yPElQQzo6RGVyaXZlZERhdGE+JiYgZGVyaXZlZERh
dGEpIG11dGFibGUgeworICAgICAgICBpZiAobG9hZGVyLT5oYXNPbmVSZWYoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgbG9hZGVyLT5zZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIGZhbHNlLCBXVEZNb3ZlKGRlcml2
ZWREYXRhKSB9KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2Up
OworICAgIH0pOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpCkBAIC04NTAsMTYgKzg3MCw0MSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkUmV0cmlldmVDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OgogICAg
IH0KIAogICAgIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgPSBp
c01haW5SZXNvdXJjZSgpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpE
aWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZU1lc3NhZ2UgfSk7CiAKLSAgICBpZiAobmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZU1lc3NhZ2UpCi0gICAgICAgIG1fY2FjaGVFbnRyeVdhaXRpbmdGb3JDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZSA9IFdURk1vdmUoZW50cnkpOworICAgIGlmICghbmVlZHNDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZU1lc3NhZ2UpCisgICAgICAgIHByb2Nlc3NDYWNoZWRFbnRyeUFmdGVyRGlk
UmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUoZW50cnkpKTsKICAgICBlbHNlIHsKLSAgICAgICAgc2Vu
ZFJlc3VsdEZvckNhY2hlRW50cnkoV1RGTW92ZShlbnRyeSkpOwotICAgICAgICBjbGVhbnVwKExv
YWRSZXN1bHQ6OlN1Y2Nlc3MpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlLCB7IH0gfSk7CisgICAgICAgIG1fY2FjaGVFbnRyeVdhaXRpbmdG
b3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSA9IFdURk1vdmUoZW50cnkpOwogICAgIH0KIH0K
IAordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvYWRCeXRlY29kZUNhY2hlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBidWZmZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPElQQzo6RGVyaXZl
ZERhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghYnVmZmVyIHx8IG1f
cGFyYW1ldGVycy5zY3JpcHRNb2RlID09IFdlYkNvcmU6OlNjcmlwdE1vZGU6Ok5vbmUgfHwgIWNh
blVzZUJ5dGVjb2RlQ2FjaGUob3JpZ2luYWxSZXF1ZXN0KCkpKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2J5dGVjb2Rl
Q2FjaGUtPmJ5dGVjb2RlRm9yUmVxdWVzdChvcmlnaW5hbFJlcXVlc3QoKSwgbV9wYXJhbWV0ZXJz
LnNjcmlwdE1vZGUsIGJ1ZmZlciwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSBtdXRhYmxlIHsK
KyAgICAgICAgVmVjdG9yPElQQzo6RGVyaXZlZERhdGE+IGRlcml2ZWREYXRhOworICAgICAgICBp
ZiAoZGF0YSkKKyAgICAgICAgICAgIGRlcml2ZWREYXRhLmFwcGVuZChJUEM6OkRlcml2ZWREYXRh
IHsgImJ5dGVjb2RlLWNhY2hlIiwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgZGF0YSwgc2l6ZSB9IH0p
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGRlcml2ZWREYXRhKSk7CisgICAg
fSk7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpwcm9jZXNzQ2FjaGVkRW50cnlB
ZnRlckRpZFJlY2VpdmVSZXNwb25zZShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRy
eT4gZW50cnkpCit7CisgICAgbG9hZEJ5dGVjb2RlQ2FjaGUoZW50cnktPnJlc3BvbnNlKCksIGVu
dHJ5LT5idWZmZXIoKSwgW2xvYWRlciA9IG1ha2VSZWYoKnRoaXMpLCBlbnRyeSA9IFdURk1vdmUo
ZW50cnkpXShWZWN0b3I8SVBDOjpEZXJpdmVkRGF0YT4mJiBkZXJpdmVkRGF0YSkgbXV0YWJsZSB7
CisgICAgICAgIGlmIChsb2FkZXItPmhhc09uZVJlZigpKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBsb2FkZXItPnNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNl
aXZlUmVzcG9uc2UgeyBlbnRyeS0+cmVzcG9uc2UoKSwgZmFsc2UsIFdURk1vdmUoZGVyaXZlZERh
dGEpIH0pOworICAgICAgICBsb2FkZXItPnNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5KFdURk1vdmUo
ZW50cnkpKTsKKyAgICAgICAgbG9hZGVyLT5jbGVhbnVwKExvYWRSZXN1bHQ6OlN1Y2Nlc3MpOwor
ICAgIH0pOworfQorCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZFJlc3VsdEZvckNh
Y2hlRW50cnkoc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IGVudHJ5KQogewog
I2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBhOGEzMDA1YzE0MjMw
NjEzODg3NjgyMWE0M2EwNTdhMGI2ZjNkN2ZjLi4xZWMxMjVlMWEwZmQyNTNhYmRlMTU2MWE5YzQ0
NmY2MGRhOGVmOWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiQnl0ZWNvZGVDYWNoZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIK
ICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlLmgiCkBA
IC00NCw2ICs0NSwxMCBAQCBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CiB9CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGVyaXZlZERhdGE7Cit9
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzczsKQEAgLTEyNSw2ICsxMzAsNyBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXI7IH0KIAogICAgIGJvb2wgY2FuVXNlQ2FjaGUoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JikgY29uc3Q7CisgICAgYm9vbCBjYW5Vc2VCeXRlY29kZUNhY2hlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogICAgIGJvb2wgY2FuVXNlQ2FjaGVk
UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAKICAgICB2
b2lkIHRyeVN0b3JlQXNDYWNoZUVudHJ5KCk7CkBAIC0xMzMsNiArMTM5LDggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3Jr
Q2FjaGU6OkVudHJ5Pik7CiAgICAgdm9pZCB2YWxpZGF0ZUNhY2hlRW50cnkoc3RkOjp1bmlxdWVf
cHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+KTsKICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1
ZXN0Rm9yQ2FjaGVFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgc3RkOjp1bmlxdWVf
cHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+JiYpOworICAgIHZvaWQgbG9hZEJ5dGVjb2RlQ2FjaGUo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxJUEM6OkRlcml2ZWREYXRhPiYm
KT4mJik7CisgICAgdm9pZCBwcm9jZXNzQ2FjaGVkRW50cnlBZnRlckRpZFJlY2VpdmVSZXNwb25z
ZShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4pOwogCiAgICAgYm9vbCBzaG91
bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwm
KTsKICAgICBib29sIHNob3VsZEludGVycnVwdExvYWRGb3JDU1BGcmFtZUFuY2VzdG9yc09yWEZy
YW1lT3B0aW9ucyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0xOTgsMTAg
KzIwNiw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRl
bnRpYWxzIHsgZmFsc2UgfTsKICAgICBzaXplX3QgbV9udW1CeXRlc1JlY2VpdmVkIHsgMCB9Owog
Ci0gICAgdW5zaWduZWQgbV9yZXRyaWV2ZWREZXJpdmVkRGF0YUNvdW50IHsgMCB9OwotCiAgICAg
V2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsKICAgICBSZWZQdHI8TmV0d29ya0NhY2hl
OjpDYWNoZT4gbV9jYWNoZTsKKyAgICBSZWZQdHI8Qnl0ZWNvZGVDYWNoZT4gbV9ieXRlY29kZUNh
Y2hlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVF
bnRyeUZvclZhbGlkYXRpb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50
cnk+IG1fY2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb247CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0J5dGVjb2RlQ2FjaGUuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9CeXRlY29kZUNhY2hlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lOTQwZDRjZDU1ZTk1ODQyZjI4MWFiZDE1YWEyNWQyNDJkMjA1YjAwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9CeXRlY29kZUNhY2hlLmNw
cApAQCAtMCwwICsxLDMzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCeXRlY29kZUNhY2hlLmgi
CisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya0NhY2hlLmgiCisjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CeXRlY29k
ZUNhY2hlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db21wbGV0aW9uLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU1NvdXJjZUNvZGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Q
YXJzZXJFcnJvci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1ZNLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVxdWVzdC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIENhY2hlRmlsZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2Fj
aGVGaWxlKTsKKworcHVibGljOgorICAgIENhY2hlRmlsZSgpCisgICAgICAgIDogbV9mZCgtMSkK
KyAgICB7CisgICAgfQorCisgICAgQ2FjaGVGaWxlKGNvbnN0IENTdHJpbmcmIG5hbWUsIGludCBm
ZCkKKyAgICAgICAgOiBtX25hbWUobmFtZSkKKyAgICAgICAgLCBtX2ZkKGZkKQorICAgIHsKKyAg
ICB9CisKKyAgICBDYWNoZUZpbGUoQ2FjaGVGaWxlJiYgb3RoZXIpCisgICAgICAgIDogbV9uYW1l
KFdURk1vdmUob3RoZXIubV9uYW1lKSkKKyAgICAgICAgLCBtX2ZkKG90aGVyLm1fZmQpCisgICAg
eworICAgICAgICBvdGhlci5tX2ZkID0gLTE7CisgICAgfQorCisgICAgQ2FjaGVGaWxlJiBvcGVy
YXRvcj0oQ2FjaGVGaWxlJiYgb3RoZXIpCisgICAgeworICAgICAgICBtX25hbWUgPSBXVEZNb3Zl
KG90aGVyLm1fbmFtZSk7CisgICAgICAgIG1fZmQgPSBvdGhlci5tX2ZkOworICAgICAgICBvdGhl
ci5tX2ZkID0gLTE7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICB+Q2FjaGVG
aWxlKCkKKyAgICB7CisgICAgICAgIGlmIChtX2ZkICE9IC0xKQorICAgICAgICAgICAgY2xvc2Uo
bV9mZCk7CisgICAgfQorCisgICAgY29uc3QgQ1N0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbmFtZTsgfQorICAgIGludCBmZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmQ7IH0KKworICAgIGJv
b2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gbV9mZCA8IDA7IH0KKworcHJpdmF0ZToKKyAg
ICBDU3RyaW5nIG1fbmFtZTsKKyAgICBpbnQgbV9mZDsKK307CisKK3N0YXRpYyBjb25zdGV4cHIg
Y29uc3QgY2hhciogYnl0ZWNvZGVDYWNoZUtleSA9ICJieXRlY29kZS1jYWNoZSI7CitzdGF0aWMg
Y29uc3RleHByIGNvbnN0IGNoYXIqIGJ5dGVjb2RlTWV0YWRhdGFLZXkgPSAiYnl0ZWNvZGUtbWV0
YWRhdGEiOworCitjbGFzcyBCeXRlY29kZUNhY2hlOjpQbGFuIDogcHVibGljIFJlZkNvdW50ZWQ8
Qnl0ZWNvZGVDYWNoZTo6UGxhbj4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBsYW4pOwor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxQ
bGFuPiBjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY2FjaGVQYXJ0aXRpb24s
IFNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgSlNDOjpCeXRlY29kZUNhY2hlTWV0YWRhdGEmJiBtZXRh
ZGF0YSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYm9keSwgQ2FsbGJhY2smJiBjYWxs
YmFjaykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYW4geyB1cmwsIGNh
Y2hlUGFydGl0aW9uLCBzY3JpcHRNb2RlLCBXVEZNb3ZlKG1ldGFkYXRhKSwgV1RGTW92ZShib2R5
KSwgV1RGTW92ZShjYWxsYmFjaykgfSk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlKE5ldHdv
cmtDYWNoZTo6Q2FjaGUqIGNhY2hlLCBKU0M6OlZNJiB2bSwgQ2FjaGVGaWxlJiYgY2FjaGVGaWxl
KQorICAgIHsKKyAgICAgICAgTE9HKEJ5dGVjb2RlQ2FjaGUsICJbQnl0ZWNvZGVDYWNoZV1bUGxh
bl0gUHJvY2Vzc2luZzogJXMiLCBtX3VybC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisKKyAg
ICAgICAgeworICAgICAgICAgICAgYXV0byBzdGFydCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwor
ICAgICAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKKyAgICAgICAgICAgIEpT
Qzo6U291cmNlQ29kZSBzb3VyY2VDb2RlID0gSlNDOjptYWtlU291cmNlKFN0cmluZyhtX2JvZHkt
PmRhdGEoKSwgbV9ib2R5LT5zaXplKCkpLCBKU0M6OlNvdXJjZU9yaWdpbiB7IG1fdXJsLnN0cmlu
ZygpIH0sIFVSTChtX3VybCkpOworICAgICAgICAgICAgSlNDOjpQYXJzZXJFcnJvciBlcnJvcjsK
KyAgICAgICAgICAgIHN3aXRjaCAobV9zY3JpcHRNb2RlKSB7CisgICAgICAgICAgICBjYXNlIFdl
YkNvcmU6OlNjcmlwdE1vZGU6OkNsYXNzaWM6CisgICAgICAgICAgICAgICAgSlNDOjpnZW5lcmF0
ZVByb2dyYW1CeXRlY29kZSh2bSwgc291cmNlQ29kZSwgY2FjaGVGaWxlLmZkKCksIGVycm9yLCAm
bV9tZXRhZGF0YSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdl
YkNvcmU6OlNjcmlwdE1vZGU6Ok1vZHVsZToKKyAgICAgICAgICAgICAgICBKU0M6OmdlbmVyYXRl
TW9kdWxlQnl0ZWNvZGUodm0sIHNvdXJjZUNvZGUsIGNhY2hlRmlsZS5mZCgpLCBlcnJvciwgJm1f
bWV0YWRhdGEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYXV0byBlbmQgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKyAgICAg
ICAgICAgIGRhdGFMb2dMbigiZ2VuZXJhdGVCeXRlY29kZTogIiwgZW5kIC0gc3RhcnQsICIgLSAi
LCBtX3VybC5zdHJpbmcoKSk7CisKKyAgICAgICAgICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpIHsK
KyAgICAgICAgICAgICAgICBMT0coQnl0ZWNvZGVDYWNoZSwgIltCeXRlY29kZUNhY2hlXSBVbmFi
bGUgdG8gZ2VuZXJhdGUgYnl0ZWNvZGUgY2FjaGUgYmVjYXVzZSBzY3JpcHQgaGFkIGEgcGFyc2Ug
ZXJyb3IiKTsKKyAgICAgICAgICAgICAgICBtX2NhbGxiYWNrKG51bGxwdHIsIDApOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBj
YWNoZSwgY2FjaGVGaWxlID0gV1RGTW92ZShjYWNoZUZpbGUpXSgpIG11dGFibGUgeworICAgICAg
ICAgICAgTmV0d29ya0NhY2hlOjpEYXRhS2V5IGNhY2hlS2V5IHsgcHJvdGVjdGVkVGhpcy0+bV9j
YWNoZVBhcnRpdGlvbiwgYnl0ZWNvZGVDYWNoZUtleSwgcHJvdGVjdGVkVGhpcy0+bV91cmwuc3Ry
aW5nKCkgfTsKKyAgICAgICAgICAgIGNhY2hlLT5zdG9yZUZpbGUoY2FjaGVLZXksIGNhY2hlRmls
ZS5uYW1lKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fY2FsbGJhY2so
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oY2FjaGVGaWxlLm5hbWUoKS5kYXRhKCkp
LCBjYWNoZUZpbGUubmFtZSgpLmxlbmd0aCgpKTsKKyAgICAgICAgfSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIFBsYW4oY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY2FjaGVQYXJ0aXRp
b24sIFNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgSlNDOjpCeXRlY29kZUNhY2hlTWV0YWRhdGEmJiBt
ZXRhZGF0YSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYm9keSwgQ2FsbGJhY2smJiBj
YWxsYmFjaykKKyAgICAgICAgOiBtX3VybCh1cmwpCisgICAgICAgICwgbV9jYWNoZVBhcnRpdGlv
bihjYWNoZVBhcnRpdGlvbikKKyAgICAgICAgLCBtX3NjcmlwdE1vZGUoc2NyaXB0TW9kZSkKKyAg
ICAgICAgLCBtX21ldGFkYXRhKFdURk1vdmUobWV0YWRhdGEpKQorICAgICAgICAsIG1fYm9keShX
VEZNb3ZlKGJvZHkpKQorICAgICAgICAsIG1fY2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCisg
ICAgeworICAgIH0KKworICAgIFVSTCBtX3VybDsKKyAgICBTdHJpbmcgbV9jYWNoZVBhcnRpdGlv
bjsKKyAgICBTY3JpcHRNb2RlIG1fc2NyaXB0TW9kZTsKKyAgICBKU0M6OkJ5dGVjb2RlQ2FjaGVN
ZXRhZGF0YSBtX21ldGFkYXRhOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1f
Ym9keTsKKyAgICBDYWxsYmFjayBtX2NhbGxiYWNrOworfTsKKworY2xhc3MgQnl0ZWNvZGVDYWNo
ZTo6VGhyZWFkIDogcHVibGljIEF1dG9tYXRpY1RocmVhZCB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxUaHJlYWQ+IGNyZWF0ZShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBCeXRlY29k
ZUNhY2hlJiBjYWNoZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRocmVh
ZChsb2NrZXIsIGNhY2hlKSk7CisgICAgfQorCisgICAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0
IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gIkJ5dGVjb2RlQ2FjaGUgSGVscGVyIFRo
cmVhZCI7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgUG9sbFJlc3VsdCBwb2xsKGNvbnN0IEFi
c3RyYWN0TG9ja2VyJikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChtX2NhY2hlLm1fcXVl
dWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIFBvbGxSZXN1bHQ6OldhaXQ7CisKKyAg
ICAgICAgbV9wbGFucyA9IFdURk1vdmUobV9jYWNoZS5tX3F1ZXVlKTsKKyAgICAgICAgcmV0dXJu
IFBvbGxSZXN1bHQ6Oldvcms7CisgICAgfQorCisgICAgV29ya1Jlc3VsdCB3b3JrKCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3BsYW5zLmlzRW1wdHkoKSk7Cisg
ICAgICAgIE5ldHdvcmtDYWNoZTo6Q2FjaGUqIGNhY2hlID0gbV9jYWNoZS5tX25ldHdvcmtQcm9j
ZXNzLmNhY2hlKCk7CisgICAgICAgIGlmICghY2FjaGUpCisgICAgICAgICAgICByZXR1cm4gV29y
a1Jlc3VsdDo6U3RvcDsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBsYW4gOiBtX3BsYW5z
KQorICAgICAgICAgICAgcGxhbi0+Y29tcGlsZShjYWNoZSwgKm1fdm0sIG1fY2FjaGUuY3JlYXRl
Q2FjaGVGaWxlKCkpOworCisgICAgICAgIG1fcGxhbnMuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJu
IFdvcmtSZXN1bHQ6OkNvbnRpbnVlOworICAgIH0KKworICAgIHZvaWQgdGhyZWFkRGlkU3RhcnQo
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgTE9HKEJ5dGVjb2RlQ2FjaGUsICJbQnl0ZWNvZGVD
YWNoZV1bVGhyZWFkXSBTdGFydGVkIik7CisgICAgICAgIG1fdm0gPSBKU0M6OlZNOjpjcmVhdGUo
KTsKKyAgICB9CisKKyAgICB2b2lkIHRocmVhZElzU3RvcHBpbmcoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKCpt
X3ZtKTsKKyAgICAgICAgbV92bSA9IG51bGxwdHI7CisgICAgICAgIExPRyhCeXRlY29kZUNhY2hl
LCAiW0J5dGVjb2RlQ2FjaGVdW1RocmVhZF0gU3RvcHBlZCIpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBUaHJlYWQoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgQnl0ZWNvZGVDYWNoZSYg
Y2FjaGUpCisgICAgICAgIDogQXV0b21hdGljVGhyZWFkKGxvY2tlciwgY2FjaGUubV9sb2NrLCBj
YWNoZS5tX2NvbmRpdGlvbi5jb3B5UmVmKCkpCisgICAgICAgICwgbV9jYWNoZShjYWNoZSkKKyAg
ICB7CisgICAgfQorCisgICAgQnl0ZWNvZGVDYWNoZSYgbV9jYWNoZTsKKyAgICBQbGFucyBtX3Bs
YW5zOworICAgIFJlZlB0cjxKU0M6OlZNPiBtX3ZtOworfTsKKworUmVmUHRyPEJ5dGVjb2RlQ2Fj
aGU+IEJ5dGVjb2RlQ2FjaGU6OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3Ms
IGNvbnN0IFN0cmluZyYgYnl0ZWNvZGVDYWNoZURpcmVjdG9yeSkKK3sKKyAgICBpZiAoIUZpbGVT
eXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhieXRlY29kZUNhY2hlRGlyZWN0b3J5KSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQnl0ZWNvZGVDYWNo
ZShuZXR3b3JrUHJvY2VzcywgYnl0ZWNvZGVDYWNoZURpcmVjdG9yeSkpOworfQorCitCeXRlY29k
ZUNhY2hlOjpCeXRlY29kZUNhY2hlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29u
c3QgU3RyaW5nJiBieXRlY29kZUNhY2hlRGlyZWN0b3J5KQorICAgIDogbV9uZXR3b3JrUHJvY2Vz
cyhuZXR3b3JrUHJvY2VzcykKKyAgICAsIG1fYnl0ZWNvZGVDYWNoZURpcmVjdG9yeShieXRlY29k
ZUNhY2hlRGlyZWN0b3J5KQorICAgICwgbV9sb2NrKEJveDxMb2NrPjo6Y3JlYXRlKCkpCisgICAg
LCBtX2NvbmRpdGlvbihBdXRvbWF0aWNUaHJlYWRDb25kaXRpb246OmNyZWF0ZSgpKQoreworICAg
IExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOworICAgIG1fdGhyZWFkID0gVGhyZWFkOjpjcmVh
dGUobG9ja2VyLCAqdGhpcyk7Cit9CisKK0J5dGVjb2RlQ2FjaGU6On5CeXRlY29kZUNhY2hlKCkK
K3sKK30KKwordm9pZCBCeXRlY29kZUNhY2hlOjpzdG9yZU1ldGFkYXRhRm9yUmVxdWVzdChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEpTQzo6Qnl0ZWNvZGVD
YWNoZU1ldGFkYXRhJiBtZXRhZGF0YSkKK3sKKyAgICBMT0coQnl0ZWNvZGVDYWNoZSwgIltCeXRl
Y29kZUNhY2hlXSBzdG9yZU1ldGFkYXRhRm9yUmVxdWVzdCAtIENoZWNraW5nOiAlcyIsIHJlcXVl
c3QudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworCisgICAgTmV0d29ya0NhY2hlOjpD
YWNoZSogY2FjaGUgPSBtX25ldHdvcmtQcm9jZXNzLmNhY2hlKCk7CisgICAgaWYgKCFjYWNoZSkg
eworICAgICAgICBMT0coQnl0ZWNvZGVDYWNoZSwgIltCeXRlY29kZUNhY2hlXSBDYW5ub3Qgc3Rv
cmUgbWV0YWRhdGE6IGNhY2hlIGlzIG5vdCBhdmFpbGFibGUiKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIE5ldHdvcmtDYWNoZTo6RGF0YUtleSBtZXRhZGF0YUtleSB7IHJlcXVlc3Qu
Y2FjaGVQYXJ0aXRpb24oKSwgYnl0ZWNvZGVNZXRhZGF0YUtleSwgcmVxdWVzdC51cmwoKS5zdHJp
bmcoKSB9OworICAgIHN0ZDo6cGFpcjxNYWxsb2NQdHI8dWludDhfdD4sIHNpemVfdD4gZW5jb2Rl
ZE1ldGFkYXRhID0gbWV0YWRhdGEuZW5jb2RlKCk7CisgICAgY2FjaGUtPnN0b3JlRGF0YShtZXRh
ZGF0YUtleSwgZW5jb2RlZE1ldGFkYXRhLmZpcnN0LmdldCgpLCBlbmNvZGVkTWV0YWRhdGEuc2Vj
b25kKTsKKworICAgIE5ldHdvcmtDYWNoZTo6RGF0YUtleSBjYWNoZUtleSB7IHJlcXVlc3QuY2Fj
aGVQYXJ0aXRpb24oKSwgYnl0ZWNvZGVDYWNoZUtleSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSB9
OworICAgIGNhY2hlLT5yZW1vdmVGaWxlKGNhY2hlS2V5KTsKK30KKworQ2FjaGVGaWxlIEJ5dGVj
b2RlQ2FjaGU6OmNyZWF0ZUNhY2hlRmlsZSgpIGNvbnN0Cit7CisgICAgU3RyaW5nIGZpbGVUZW1w
bGF0ZSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2J5dGVjb2RlQ2Fj
aGVEaXJlY3RvcnksICJYWFhYWFhYWCIpOworICAgIENTdHJpbmcgZmlsZW5hbWUgPSBGaWxlU3lz
dGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVRlbXBsYXRlKTsKKyAgICBpbnQgZmQg
PSBta3N0ZW1wKGZpbGVuYW1lLm11dGFibGVEYXRhKCkpOworICAgIGlmIChmZCA8IDApCisgICAg
ICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIHsgV1RGTW92ZShmaWxlbmFtZSksIGZkIH07Cit9
CisKK3ZvaWQgQnl0ZWNvZGVDYWNoZTo6Ynl0ZWNvZGVGb3JSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6U2NyaXB0TW9kZSBzY3JpcHRNb2Rl
LCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBib2R5LCBDYWxsYmFjayYmIGNhbGxiYWNr
KQoreworICAgIExPRyhCeXRlY29kZUNhY2hlLCAiW0J5dGVjb2RlQ2FjaGVdIGJ5dGVjb2RlRm9y
UmVxdWVzdCAtIENoZWNraW5nOiAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5k
YXRhKCkpOworCisgICAgTmV0d29ya0NhY2hlOjpDYWNoZSogY2FjaGUgPSBtX25ldHdvcmtQcm9j
ZXNzLmNhY2hlKCk7CisgICAgaWYgKCFjYWNoZSkgeworICAgICAgICBMT0coQnl0ZWNvZGVDYWNo
ZSwgIltCeXRlY29kZUNhY2hlXSBDYW5ub3QgZ2VuZXJhdGUgYnl0ZWNvZGUgZm9yIHJlcXVlc3Q6
IGNhY2hlIGlzIG5vdCBhdmFpbGFibGUiKTsKKyAgICAgICAgY2FsbGJhY2sobnVsbHB0ciwgMCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyB0cnlMb2FkQnl0ZWNvZGVDYWNoZSgp
ID0+IHRyeUxvYWRNZXRhZGF0YSgpID0+IGdlbmVyYXRlQnl0ZWNvZGUoKQorICAgIE5ldHdvcmtD
YWNoZTo6RGF0YUtleSBjYWNoZUtleSB7IHJlcXVlc3QuY2FjaGVQYXJ0aXRpb24oKSwgYnl0ZWNv
ZGVDYWNoZUtleSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSB9OworICAgIGNhY2hlLT5yZXRyaWV2
ZUZpbGUoY2FjaGVLZXksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIHJlcXVlc3QgPSBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
eyByZXF1ZXN0IH0sIGJvZHkgPSBXVEZNb3ZlKGJvZHkpLCBzY3JpcHRNb2RlXShjb25zdCBjaGFy
KiBmaWxlKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGZpbGUpIHsKKyAgICAgICAgICAgIENhY2hl
RmlsZSBjYWNoZUZpbGUgPSBwcm90ZWN0ZWRUaGlzLT5jcmVhdGVDYWNoZUZpbGUoKTsKKyAgICAg
ICAgICAgIGlmICghY2FjaGVGaWxlKSB7CisgICAgICAgICAgICAgICAgTE9HKEJ5dGVjb2RlQ2Fj
aGUsICJbQnl0ZWNvZGVDYWNoZV0gRmFpbGVkIHRvIGNyZWF0ZSBjYWNoZSBmaWxlIik7CisgICAg
ICAgICAgICAgICAgY2FsbGJhY2sobnVsbHB0ciwgMCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB1bmxpbmsoY2FjaGVGaWxlLm5hbWUoKS5k
YXRhKCkpOworICAgICAgICAgICAgaWYgKGxpbmsoZmlsZSwgY2FjaGVGaWxlLm5hbWUoKS5kYXRh
KCkpKSB7CisgICAgICAgICAgICAgICAgTE9HKEJ5dGVjb2RlQ2FjaGUsICJbQnl0ZWNvZGVDYWNo
ZV0gRmFpbGVkIHRvIGxpbmsgY2FjaGUgZmlsZSIpOworICAgICAgICAgICAgICAgIGNhbGxiYWNr
KG51bGxwdHIsIDApOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgTE9HKEJ5dGVjb2RlQ2FjaGUsICJbQnl0ZWNvZGVDYWNoZV0gUmV0dXJuaW5n
IGJ5dGVjb2RlIGZyb20gZGlzayBjYWNoZSIpOworICAgICAgICAgICAgY2FsbGJhY2socmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oY2FjaGVGaWxlLm5hbWUoKS5kYXRhKCkpLCBjYWNo
ZUZpbGUubmFtZSgpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIE5ldHdvcmtDYWNoZTo6Q2FjaGUqIGNhY2hlID0gcHJvdGVjdGVkVGhpcy0+bV9u
ZXR3b3JrUHJvY2Vzcy5jYWNoZSgpOworICAgICAgICBpZiAoIWNhY2hlKSB7CisgICAgICAgICAg
ICBMT0coQnl0ZWNvZGVDYWNoZSwgIltCeXRlY29kZUNhY2hlXSBDYW5ub3QgZ2VuZXJhdGUgYnl0
ZWNvZGUgZm9yIHJlcXVlc3Q6IGNhY2hlIGlzIG5vdCBhdmFpbGFibGUiKTsKKyAgICAgICAgICAg
IGNhbGxiYWNrKG51bGxwdHIsIDApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgTmV0d29ya0NhY2hlOjpEYXRhS2V5IG1ldGFkYXRhS2V5IHsgcmVxdWVzdC5jYWNo
ZVBhcnRpdGlvbigpLCBieXRlY29kZU1ldGFkYXRhS2V5LCByZXF1ZXN0LnVybCgpLnN0cmluZygp
IH07CisgICAgICAgIGNhY2hlLT5yZXRyaWV2ZURhdGEobWV0YWRhdGFLZXksIFtwcm90ZWN0ZWRU
aGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgcmVxdWVzdCA9IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCB7IHJlcXVlc3QgfSwgYm9keSA9
IFdURk1vdmUoYm9keSksIHNjcmlwdE1vZGVdKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghZGF0YSkgeworICAgICAgICAgICAgICAg
IExPRyhCeXRlY29kZUNhY2hlLCAiW0J5dGVjb2RlQ2FjaGVdIERpZCBub3QgZmluZCBieXRlY29k
ZSBvciBtZXRhZGF0YSBmb3IgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0
YSgpKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxscHRyLCAwKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIE5ldHdvcmtDYWNoZTo6
Q2FjaGUqIGNhY2hlID0gcHJvdGVjdGVkVGhpcy0+bV9uZXR3b3JrUHJvY2Vzcy5jYWNoZSgpOwor
ICAgICAgICAgICAgaWYgKCFjYWNoZSkgeworICAgICAgICAgICAgICAgIExPRyhCeXRlY29kZUNh
Y2hlLCAiW0J5dGVjb2RlQ2FjaGVdIENhbm5vdCBnZW5lcmF0ZSBieXRlY29kZSBmb3IgcmVxdWVz
dDogY2FjaGUgaXMgbm90IGF2YWlsYWJsZSIpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51
bGxwdHIsIDApOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgTE9HKEJ5dGVjb2RlQ2FjaGUsICJbQnl0ZWNvZGVDYWNoZV0gRm91bmQgbWV0YWRh
dGEsIGdlbmVyYXRpbmcgYnl0ZWNvZGUiKTsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KCpwcm90ZWN0ZWRUaGlzLT5tX2xvY2spOworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9x
dWV1ZS5hcHBlbmQoUGxhbjo6Y3JlYXRlKAorICAgICAgICAgICAgICAgIHJlcXVlc3QudXJsKCks
CisgICAgICAgICAgICAgICAgcmVxdWVzdC5jYWNoZVBhcnRpdGlvbigpLAorICAgICAgICAgICAg
ICAgIHNjcmlwdE1vZGUsCisgICAgICAgICAgICAgICAgSlNDOjpCeXRlY29kZUNhY2hlTWV0YWRh
dGE6OmRlY29kZShkYXRhLCBzaXplKSwKKyAgICAgICAgICAgICAgICBXVEZNb3ZlKGJvZHkpLAor
ICAgICAgICAgICAgICAgIFdURk1vdmUoY2FsbGJhY2spKSk7CisgICAgICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5tX2NvbmRpdGlvbi0+bm90aWZ5QWxsKGxvY2tlcik7CisgICAgICAgIH0pOworICAg
IH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQnl0ZWNvZGVDYWNoZS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9CeXRlY29kZUNhY2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM2YmUxNTBm
NmU2NTE1NmY5MDUyNWI5NjM2NDgxYmRlNjcwNWU2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQnl0ZWNvZGVDYWNoZS5oCkBAIC0wLDAgKzEs
ODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9BdXRvbWF0aWNUaHJlYWQuaD4KKyNpbmNsdWRlIDx3
dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBCeXRl
Y29kZUNhY2hlTWV0YWRhdGE7CitjbGFzcyBWTTsKK307CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK2VudW0gY2xhc3Mg
U2NyaXB0TW9kZSA6IHVpbnQ4X3Q7Cit9OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
TmV0d29ya1Byb2Nlc3M7CisKK2NsYXNzIENhY2hlRmlsZTsKKworY2xhc3MgQnl0ZWNvZGVDYWNo
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEJ5dGVjb2RlQ2FjaGU+IHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShCeXRlY29kZUNhY2hlKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKwor
ICAgIGNsYXNzIFBsYW47CisgICAgY2xhc3MgVGhyZWFkOworICAgIHVzaW5nIFBsYW5zID0gVmVj
dG9yPFJlZjxQbGFuPiwgMj47CisKKyAgICBmcmllbmQgY2xhc3MgVGhyZWFkOworCitwdWJsaWM6
CisgICAgc3RhdGljIFJlZlB0cjxCeXRlY29kZUNhY2hlPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3Mm
LCBjb25zdCBTdHJpbmcmIGJ5dGVjb2RlQ2FjaGVEaXJlY3RvcnkpOworCisgICAgfkJ5dGVjb2Rl
Q2FjaGUoKTsKKworICAgIHZvaWQgc3RvcmVNZXRhZGF0YUZvclJlcXVlc3QoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgSlNDOjpCeXRlY29kZUNhY2hlTWV0YWRhdGEmKTsK
KworICAgIHVzaW5nIENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCB1aW50
OF90Kiwgc2l6ZV90KT47CisgICAgdm9pZCBieXRlY29kZUZvclJlcXVlc3QoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2NyaXB0TW9kZSwgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4sIENhbGxiYWNrJiYpOworCitwcml2YXRlOgorICAgIEJ5dGVjb2RlQ2Fj
aGUoTmV0d29ya1Byb2Nlc3MmLCBjb25zdCBTdHJpbmcmIGJ5dGVjb2RlQ2FjaGVEaXJlY3Rvcnkp
OworCisgICAgQ2FjaGVGaWxlIGNyZWF0ZUNhY2hlRmlsZSgpIGNvbnN0OworICAgIHZvaWQgZ2Vu
ZXJhdGVCeXRlY29kZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpT
Y3JpcHRNb2RlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgSlNDOjpCeXRlY29kZUNh
Y2hlTWV0YWRhdGEmJiwgQ2FsbGJhY2smJik7CisKKyAgICBOZXR3b3JrUHJvY2VzcyYgbV9uZXR3
b3JrUHJvY2VzczsKKyAgICBTdHJpbmcgbV9ieXRlY29kZUNhY2hlRGlyZWN0b3J5OworICAgIFBs
YW5zIG1fcXVldWU7CisgICAgQm94PExvY2s+IG1fbG9jazsKKyAgICBSZWY8QXV0b21hdGljVGhy
ZWFkQ29uZGl0aW9uPiBtX2NvbmRpdGlvbjsKKyAgICBSZWZQdHI8QXV0b21hdGljVGhyZWFkPiBt
X3RocmVhZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IGU1ZTY4MTM4
ZmY1NWVmZDEyNzQzYjVmYmQ2NmEwNDZmZjM0YmEyMGIuLjEyNmY0ZGFmNTJjZTA2MTk0YjdjY2Iy
MTBkODUwNmNkYjNiNTI4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTU5Miw1ICs1OTIsMjMgQEAgdm9pZCBDYWNo
ZTo6c3RvcmVEYXRhKGNvbnN0IERhdGFLZXkmIGRhdGFLZXksIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKQogICAgIG1fc3RvcmFnZS0+c3RvcmUocmVjb3JkLCB7IH0pOwogfQogCit2
b2lkIENhY2hlOjpyZXRyaWV2ZUZpbGUoY29uc3QgRGF0YUtleSYgZGF0YUtleSwgRnVuY3Rpb248
dm9pZChjb25zdCBjaGFyKik+IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEtleSBrZXkgeyBk
YXRhS2V5LCBtX3N0b3JhZ2UtPnNhbHQoKSB9OworICAgIG1fc3RvcmFnZS0+cmV0cmlldmVGaWxl
KGtleSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIENhY2hlOjpzdG9y
ZUZpbGUoY29uc3QgRGF0YUtleSYgZGF0YUtleSwgY29uc3QgY2hhciogZmlsZW5hbWUpCit7Cisg
ICAgS2V5IGtleSB7IGRhdGFLZXksIG1fc3RvcmFnZS0+c2FsdCgpIH07CisgICAgbV9zdG9yYWdl
LT5zdG9yZUZpbGUoa2V5LCBmaWxlbmFtZSk7Cit9CisKK3ZvaWQgQ2FjaGU6OnJlbW92ZUZpbGUo
Y29uc3QgRGF0YUtleSYgZGF0YUtleSkKK3sKKyAgICBLZXkga2V5IHsgZGF0YUtleSwgbV9zdG9y
YWdlLT5zYWx0KCkgfTsKKyAgICBtX3N0b3JhZ2UtPnJlbW92ZUZpbGUoa2V5KTsKK30KKwogfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmgKaW5kZXggYzdmMzg2YjNkN2MzMTQ1NTgwZjJhYzBlMGUzNTJlYTZiODcxNTVjMS4uMzM2NTQx
OWFkMWVjNTc3ZjFjMjc5MzEyZjc3ZDk2ZTRmYzU0MzY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCkBAIC0xMzAsNyArMTMwLDEx
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmV0cmlldmVEYXRhKGNvbnN0IERhdGFLZXkmLCBGdW5j
dGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPik7CiAgICAgdm9pZCBzdG9yZURhdGEo
Y29uc3QgRGF0YUtleSYsICBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOwotICAgIAorCisg
ICAgdm9pZCByZXRyaWV2ZUZpbGUoY29uc3QgRGF0YUtleSYsIEZ1bmN0aW9uPHZvaWQoY29uc3Qg
Y2hhciopPik7CisgICAgdm9pZCBzdG9yZUZpbGUoY29uc3QgRGF0YUtleSYsIGNvbnN0IGNoYXIq
KTsKKyAgICB2b2lkIHJlbW92ZUZpbGUoY29uc3QgRGF0YUtleSYpOworCiAgICAgc3RkOjp1bmlx
dWVfcHRyPEVudHJ5PiBtYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbWFrZVJlZGlyZWN0RW50cnko
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVLZXkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVLZXkuY3BwCmluZGV4IDhmYTgxZDEwOWE0YzczY2QwYjMxOTViODhmZjVlM2RiMTU3
YzM4ZTYuLmQ4MDRiYWUxMjg5N2Q0M2FiODU0NWE4MWJjOTY4ODcxZTQyNmExMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtl
eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC02NCw3ICs2NCw3IEBAIEtleTo6S2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZh
bHVlVHlwZSkKIEtleTo6S2V5KGNvbnN0IERhdGFLZXkmIGRhdGFLZXksIGNvbnN0IFNhbHQmIHNh
bHQpCiAgICAgOiBtX3BhcnRpdGlvbihkYXRhS2V5LnBhcnRpdGlvbikKICAgICAsIG1fdHlwZShk
YXRhS2V5LnR5cGUpCi0gICAgLCBtX2lkZW50aWZpZXIoaGFzaEFzU3RyaW5nKGRhdGFLZXkuaWRl
bnRpZmllcikpCisgICAgLCBtX2lkZW50aWZpZXIoZGF0YUtleS5pZGVudGlmaWVyKQogICAgICwg
bV9oYXNoKGNvbXB1dGVIYXNoKHNhbHQpKQogICAgICwgbV9wYXJ0aXRpb25IYXNoKGNvbXB1dGVQ
YXJ0aXRpb25IYXNoKHNhbHQpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmgKaW5kZXggMjkxNWIyMTRiMzJlY2E0Nzk1MTM4
NDlmMTJiN2M0ZGJjN2YzZDU0OS4uNzE0Zjk5OGViYmNkYWIyZTVhZmM3ZmI0NGFhOGVkMjgyMDQy
MzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVLZXkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUtleS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hl
IHsKIHN0cnVjdCBEYXRhS2V5IHsKICAgICBTdHJpbmcgcGFydGl0aW9uOwogICAgIFN0cmluZyB0
eXBlOwotICAgIFNIQTE6OkRpZ2VzdCBpZGVudGlmaWVyOworICAgIFN0cmluZyBpZGVudGlmaWVy
OwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggYmJmYzY0OTg5MGY5
NWNjN2UwNGNlODJhNGZlMzI5NDRkYzFhYjFmMC4uMTQ3Y2E4NTQ4YTYzZjVmM2M3ZTBkNThjZmQ2
YzljMGJiZmU5ODE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0xMTM1LDUgKzExMzUsNDIg
QEAgdm9pZCBTdG9yYWdlOjpkZWxldGVPbGRWZXJzaW9ucygpCiAgICAgfSk7CiB9CiAKK3ZvaWQg
U3RvcmFnZTo6c3RvcmVGaWxlKGNvbnN0IEtleSYga2V5LCBjb25zdCBjaGFyKiBmaWxlbmFtZSkK
K3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVCgha2V5LmlzTnVs
bCgpKTsKKworICAgIGF1dG8gYmxvYkRpcmVjdG9yeVBhdGggPSByZWNvcmREaXJlY3RvcnlQYXRo
Rm9yS2V5KGtleSk7CisgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGJsb2JEaXJl
Y3RvcnlQYXRoKTsKKworICAgIGF1dG8gYmxvYlBhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oYmxvYlBhdGhGb3JLZXkoa2V5KSk7CisgICAgdW5saW5rKGJsb2JQYXRo
LmRhdGEoKSk7CisgICAgaWYgKGxpbmsoZmlsZW5hbWUsIGJsb2JQYXRoLmRhdGEoKSkgPT0gLTEp
CisgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAiRmFpbGVkIHRvIHN0b3JlIGZpbGU6
ICVzIiwgZmlsZW5hbWUpOworfQorCit2b2lkIFN0b3JhZ2U6OnJldHJpZXZlRmlsZShjb25zdCBL
ZXkmIGtleSwgUmV0cmlldmVGaWxlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVCgha2V5Lmlz
TnVsbCgpKTsKKworICAgIGF1dG8gYmxvYlBhdGggPSBibG9iUGF0aEZvcktleShrZXkpOworICAg
IGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhibG9iUGF0aCkpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oYmxvYlBh
dGgpLmRhdGEoKSk7Cit9CisKK3ZvaWQgU3RvcmFnZTo6cmVtb3ZlRmlsZShjb25zdCBLZXkmIGtl
eSkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVCgha2V5Lmlz
TnVsbCgpKTsKKworICAgIGF1dG8gYmxvYlBhdGggPSBibG9iUGF0aEZvcktleShrZXkpOworICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoYmxvYlBhdGgpOworfQorCiB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFn
ZS5oCmluZGV4IDYxN2IyYjNhNWZkZTJhNTc1YjE4ZmM3Y2I1N2NlZjFlMTgyNzJlYTkuLjc3Mzdi
MmIwODVlNzhiOWY1MDM1NGYxNTUwNjhmOTcwNmI5YjU3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCkBA
IC04NCw2ICs4NCwxMSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFwcGVkQm9keUhhbmRsZXIgPSBG
dW5jdGlvbjx2b2lkIChjb25zdCBEYXRhJiBtYXBwZWRCb2R5KT47CiAgICAgdm9pZCBzdG9yZShj
b25zdCBSZWNvcmQmLCBNYXBwZWRCb2R5SGFuZGxlciYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGludCk+JiYgPSB7IH0pOwogCisgICAgdXNpbmcgUmV0cmlldmVGaWxlQ29tcGxldGlvbkhhbmRs
ZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IGNoYXIqKT47CisgICAgdm9pZCByZXRy
aWV2ZUZpbGUoY29uc3QgS2V5JiwgUmV0cmlldmVGaWxlQ29tcGxldGlvbkhhbmRsZXImJik7Cisg
ICAgdm9pZCBzdG9yZUZpbGUoY29uc3QgS2V5JiwgY29uc3QgY2hhciopOworICAgIHZvaWQgcmVt
b3ZlRmlsZShjb25zdCBLZXkmKTsKKwogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEtleSYpOwogICAg
IHZvaWQgcmVtb3ZlKGNvbnN0IFZlY3RvcjxLZXk+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSwgV2FsbFRpbWUgbW9kaWZp
ZWRTaW5jZVRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2Eu
bW0KaW5kZXggZWFkNWU2MmVhYjg0NTRiM2RkZjJmOWNiNmNlYmFmNDBjODBmN2JhMi4uMWU2ODFk
ZGEwN2YzMzAzOWQzMWFlMzM4NTAwY2I2MTY1MDdlNTYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTg4LDYgKzg4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
TmV0d29ya1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3b3JrUHJvY2Vzc0MKICNlbmRpZgogI2VuZGlm
CiAgICAgbV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9y
eTsKKyAgICBtX2J5dGVjb2RlQ2FjaGVEaXJlY3RvcnkgPSBwYXJhbWV0ZXJzLmJ5dGVjb2RlQ2Fj
aGVEaXJlY3Rvcnk7CiAKICAgICBfQ0ZOZXR3b3JrU2V0QVRTQ29udGV4dChwYXJhbWV0ZXJzLm5l
dHdvcmtBVFNDb250ZXh0LmdldCgpKTsKIApAQCAtMTMyLDYgKzEzMywxNCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzc0NvY29hKGNvbnN0IE5l
dHdvcmtQcm9jZXNzQwogICAgIC8vIERpc2FibGUgTlNVUkxDYWNoZS4KICAgICBhdXRvIHVybENh
Y2hlKGFkb3B0TlMoW1tOU1VSTENhY2hlIGFsbG9jXSBpbml0V2l0aE1lbW9yeUNhcGFjaXR5OjAg
ZGlza0NhcGFjaXR5OjAgZGlza1BhdGg6bmlsXSkpOwogICAgIFtOU1VSTENhY2hlIHNldFNoYXJl
ZFVSTENhY2hlOnVybENhY2hlLmdldCgpXTsKKworICAgIGlmIChtX2J5dGVjb2RlQ2FjaGVEaXJl
Y3RvcnkuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFNhbmRib3hFeHRlbnNpb246
OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmJ5dGVjb2RlQ2FjaGVEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpOworICAgIG1fYnl0ZWNvZGVDYWNoZSA9IEJ5dGVjb2RlQ2FjaGU6OmNyZWF0
ZSgqdGhpcywgbV9ieXRlY29kZUNhY2hlRGlyZWN0b3J5KTsKKyAgICBpZiAoIW1fYnl0ZWNvZGVD
YWNoZSkKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoQnl0ZWNvZGVDYWNoZSwgIkZhaWxlZCB0
byBpbml0aWFsaXplIHRoZSBXZWJLaXQgYnl0ZWNvZGUgY2FjaGUiKTsKIH0KIAogc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1Byb2Nlc3M6OnBs
YXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1By
b2Nlc3Muc2IuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUu
V2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluCmluZGV4IDA2YTEzZDRhM2YyYjU4YTU1ZjVmMjcy
ZWZiNGQ4ZjM0ZDg4NmRjNTAuLmY1YWI4ODE2OTQ1OGU0ODBkNGI3YjM3ZTAzYzVmYWZiYzRlM2Ji
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBs
ZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgpAQCAtMSw0
ICsxLDQgQEAKLTsgQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorOyBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiA7CiA7IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogOyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDYgKzM4LDcg
QEAKICAgICAgICAgImh3LmF2YWlsY3B1IgogICAgICAgICAiaHcubmNwdSIKICAgICAgICAgImh3
Lm1vZGVsIgorICAgICAgICAia2Vybi5ib290c2Vzc2lvbnV1aWQiCiAgICAgICAgICJrZXJuLm1l
bW9yeXN0YXR1c19sZXZlbCIKICAgICAgICAgInZtLmZvb3RwcmludF9zdXNwZW5kIikpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vz
c1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9j
ZXNzU291cC5jcHAKaW5kZXggM2NhYjUwNjk4YzBlMjgwYzllMDljMTViZTBmZGNkYmEzOGUyYjli
Yy4uYjMyODNmZWU3YzE1MDEwMzQ3N2ExYmU0YTI4ZGE2NGY3ZjViMWNhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291
cC5jcHAKQEAgLTEwOCw2ICsxMDgsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aQogCiAgICAg
QVNTRVJUKCFwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpOwogICAgIG1f
ZGlza0NhY2hlRGlyZWN0b3J5ID0gcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3Rvcnk7CisgICAg
bV9ieXRlY29kZUNhY2hlRGlyZWN0b3J5ID0gcGFyYW1ldGVycy5ieXRlY29kZUNhY2hlRGlyZWN0
b3J5OwogCiAgICAgU291cE5ldHdvcmtTZXNzaW9uOjpjbGVhck9sZFNvdXBDYWNoZShGaWxlU3lz
dGVtOjpkaXJlY3RvcnlOYW1lKG1fZGlza0NhY2hlRGlyZWN0b3J5KSk7CiAKQEAgLTExOSw2ICsx
MjAsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJv
Y2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aQogCiAgICAgbV9jYWNoZSA9IE5ldHdvcmtD
YWNoZTo6Q2FjaGU6Om9wZW4oKnRoaXMsIG1fZGlza0NhY2hlRGlyZWN0b3J5LCBjYWNoZU9wdGlv
bnMpOwogCisgICAgaWYgKCFtX2J5dGVjb2RlQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAg
ICAgICBtX2J5dGVjb2RlQ2FjaGUgPSBCeXRlY29kZUNhY2hlOjpjcmVhdGUoKnRoaXMsIG1fYnl0
ZWNvZGVDYWNoZURpcmVjdG9yeSk7CisKICAgICBzdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXI+
KCktPnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocGFyYW1ldGVycy5jb29raWVBY2NlcHRQb2xp
Y3ksIE9wdGlvbmFsQ2FsbGJhY2tJRCgpKTsKIAogICAgIGlmICghcGFyYW1ldGVycy5sYW5ndWFn
ZXMuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVy
aXZlZERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVyaXZlZERhdGEuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjEwOGY3NDZjNDdkZTAzYTMxYjIyYjc3NTJmZWY4MDE2YmNlNDYxMGEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZXJpdmVkRGF0YS5j
cHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJEZXJpdmVkRGF0YS5oIgorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNp
bmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiRW5jb2Rlci5oIgorCituYW1lc3BhY2UgSVBD
IHsKKwordm9pZCBEZXJpdmVkRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGUoZW5jb2RlciwgbV90eXBlKTsKKyAg
ICBlbmNvZGVyLmVuY29kZShtX2RhdGEpOworfQorCitib29sIERlcml2ZWREYXRhOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgRGVyaXZlZERhdGEmIGRlcml2ZWREYXRhKQoreworICAgIGlmICgh
QXJndW1lbnRDb2RlcjxTdHJpbmc+OjpkZWNvZGUoZGVjb2RlciwgZGVyaXZlZERhdGEubV90eXBl
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBkZWNvZGVyLmRlY29kZShkZXJp
dmVkRGF0YS5tX2RhdGEpOworfQorCitPcHRpb25hbDxEZXJpdmVkRGF0YT4gRGVyaXZlZERhdGE6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIERlcml2ZWREYXRhIGRlcml2ZWREYXRh
OworICAgIGlmICghZGVjb2RlKGRlY29kZXIsIGRlcml2ZWREYXRhKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4geyBkZXJpdmVkRGF0YSB9OworfQorCit9IC8vIG5h
bWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Rlcml2
ZWREYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZXJpdmVkRGF0YS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY4MTQxYWQwY2FhZjhlMTdlZTE2NzhmNzk2NzlhMzQ2NDQyMmI0OGEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZXJpdmVkRGF0YS5oCkBAIC0w
LDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIElQQyB7CisKK2NsYXNzIERlY29kZXI7CitjbGFzcyBFbmNvZGVyOworCitjbGFzcyBE
ZXJpdmVkRGF0YSB7CitwdWJsaWM6CisgICAgRGVyaXZlZERhdGEoKSA9IGRlZmF1bHQ7CisKKyAg
ICBEZXJpdmVkRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSkKKyAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICAgICAgLCBtX2RhdGEoZGF0YSkK
KyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fZGF0
YS5zaXplKCk7IH0KKworICAgIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQorICAgIGNvbnN0IERhdGFSZWZlcmVuY2UmIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2RhdGE7IH0KKworICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMg
Ym9vbCBkZWNvZGUoRGVjb2RlciYsIERlcml2ZWREYXRhJik7CisgICAgc3RhdGljIE9wdGlvbmFs
PERlcml2ZWREYXRhPiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFN0cmluZyBt
X3R5cGU7CisgICAgRGF0YVJlZmVyZW5jZSBtX2RhdGE7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJ
UEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggMWY3NzNhNzExZTYxNmM4ODVkMTMxYmYz
OGExM2Q5NzE2MDFjMTJkZS4uMzMwNTAyNjE4Y2EwOTE2YzQ0ODIwMDJiZDg5NDA4ZmUxNGEyMmYx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgZXh0ZXJuICJD
IiB7CiAgICAgTShBdXRvbWF0aW9uKSBcCiAgICAgTShBY3Rpdml0eVN0YXRlKSBcCiAgICAgTShC
YWNrRm9yd2FyZCkgXAorICAgIE0oQnl0ZWNvZGVDYWNoZSkgXAogICAgIE0oQ2FjaGVTdG9yYWdl
KSBcCiAgICAgTShDb250ZW50T2JzZXJ2YXRpb24pIFwKICAgICBNKENvbnRleHRNZW51KSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBhMzc3M2IxNDEyZmUz
NjVhNGExMjdlODZhY2E5Y2E2NmNlNmYyMDdjLi44ZTQxNWUyMTM0ZmE5YzYzODU5MTAyNjI0NjQ3
OGFjYzJlMDBkZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
QEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MDUs
NiArNDA1LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgc3BlY2lhbF9jYXNl
cyA9IHsKICAgICAgICAgJ0lQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSc6IFsnIlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCInLCAnIkRhdGFSZWZlcmVuY2UuaCInXSwKICAgICAgICAg
J01hY2hTZW5kUmlnaHQnOiBbJzx3dGYvTWFjaFNlbmRSaWdodC5oPiddLAorICAgICAgICAnSlND
OjpCeXRlY29kZUNhY2hlTWV0YWRhdGEnOiBbJzxKYXZhU2NyaXB0Q29yZS9CeXRlY29kZUNhY2hl
TWV0YWRhdGEuaD4nXSwKICAgICAgICAgJ0pTQzo6TWVzc2FnZUxldmVsJzogWyc8SmF2YVNjcmlw
dENvcmUvQ29uc29sZVR5cGVzLmg+J10sCiAgICAgICAgICdKU0M6Ok1lc3NhZ2VTb3VyY2UnOiBb
JzxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4nXSwKICAgICAgICAgJ0luc3BlY3Rvcjo6
SW5zcGVjdG9yVGFyZ2V0VHlwZSc6IFsnPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclRhcmdldC5o
PiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAppbmRleCA5NTgyZTZiNmJiODgxNDNhMzIzOGNkOTk2NmRiNmQ2OTVlNGM0
ZWYyLi42ZmY5YjlhOWJjNTMxOWE5MGJiZTJmNmNhNjZhMzZlNWM2N2UxYTRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cApAQCAtOTcsNiArOTcsOCBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBwcmVzZW50
aW5nQXBwbGljYXRpb25QSUQ7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW5jb2RlciA8PCBh
Y2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNlRW5hYmxlZDsKKyAgICBlbmNvZGVyIDw8
IGJ5dGVjb2RlQ2FjaGVEaXJlY3Rvcnk7CisgICAgZW5jb2RlciA8PCBieXRlY29kZUNhY2hlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVuY29kZXIgPDwgYWNjZWxlcmF0ZWRDb21wb3Np
dGluZ1BvcnQ7CiAgICAgZW5jb2RlciA8PCB1aVByb2Nlc3NCdW5kbGVSZXNvdXJjZVBhdGg7CiAg
ICAgZW5jb2RlciA8PCB1aVByb2Nlc3NCdW5kbGVSZXNvdXJjZVBhdGhFeHRlbnNpb25IYW5kbGU7
CkBAIC0yNzksNiArMjgxLDE1IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmFjY2Vzc2liaWxp
dHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VFbmFibGVkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5ieXRlY29kZUNhY2hlRGlyZWN0b3J5
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlPiBieXRlY29kZUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGRl
Y29kZXIgPj4gYnl0ZWNvZGVDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBpZiAo
IWJ5dGVjb2RlQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBwYXJhbWV0ZXJzLmJ5dGVjb2RlQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUgPSBXVEZNb3ZlKCpieXRlY29kZUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5hY2NlbGVyYXRlZENvbXBvc2l0aW5n
UG9ydCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA4NDUwZGNl
YzZmYTU4OWI2OWY1MjdjOTRiMzU1M2M2ZDY5MGFlODc1Li42NzYzYjBkMjZiMWQ0MDA4NjYzY2My
YTU4ODMzYzFkYjkyMmJlYThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0xNDksNiArMTQ5LDkgQEAgc3RydWN0IFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgc2hvdWxkRW5hYmxlSklUIHsg
ZmFsc2UgfTsKICAgICBib29sIHNob3VsZEVuYWJsZUZUTEpJVCB7IGZhbHNlIH07CiAgICAgYm9v
bCBhY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNlRW5hYmxlZCB7IGZhbHNlIH07CisK
KyAgICBTdHJpbmcgYnl0ZWNvZGVDYWNoZURpcmVjdG9yeTsKKyAgICBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUgYnl0ZWNvZGVDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICAKICAg
ICBSZWZQdHI8QVBJOjpEYXRhPiBidW5kbGVQYXJhbWV0ZXJEYXRhOwogI2VuZGlmIC8vIFBMQVRG
T1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggNDhmNThlM2MyNDNiODdhZDM2ZmYyZDg0ZTBkOTY2
MGNkZDQyODlkOS4uN2Q0NDU3OWY2YTlkMjU5ZTQwMzFiYTY4NmE0NzAxZGJkOWY0OWU3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CkBAIC02NSw2ICs2NSw3IEBAIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dPcmlnaW5TdG9yZS5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5
CiAKK05ldHdvcmtQcm9jZXNzL2NhY2hlL0J5dGVjb2RlQ2FjaGUuY3BwCiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggNTRhNGFiNTYwMzgx
YmNlYzdkNWNkMzY2NWNjMGQ3NTgyNTYwYjZiOC4uOTNhZDNmMmIwMjQyY2ViMTc3MWVjZTQyMzBl
YTRmNmFiN2FlMWMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKQEAgLTUzLDYgKzUzLDcgQEAg
UmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpj
cmVhdGVXaXRoV2Vic2l0ZURhdGFTdG8KICAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKTsKICAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1
YmRpcmVjdG9yeU5hbWUgPSBsZWdhY3lDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0
RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsKICAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tDYWNoZURp
cmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7Cisg
ICAgY29uZmlndXJhdGlvbi0+bV9ieXRlY29kZUNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmln
dXJhdGlvbi5ieXRlY29kZUNhY2hlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi0+bV9t
ZWRpYUNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0
b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9
IGxlZ2FjeUNvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKICAgICBj
b25maWd1cmF0aW9uLT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRp
b24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CkBAIC02OSw2ICs3MCw3IEBAIFByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbjo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCkKICAgICA6IG1fYXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSgpKQogICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJl
Y3RvcnlOYW1lKCJGaWxlcyIpCiAgICAgLCBtX2Rpc2tDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpCisgICAgLCBtX2J5dGVjb2Rl
Q2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEJ5dGVjb2RlQ2FjaGVEaXJl
Y3RvcnkoKSkKICAgICAsIG1fbWVkaWFDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpKQogICAgICwgbV9pbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rv
cnkoKSkKICAgICAsIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkKQEAgLTkxLDYgKzkzLDcgQEAgUmVmPFByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KCkKICAg
ICBjb3B5LT5tX3Nob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUgPSB0aGlzLT5tX3Nob3VsZEhhdmVM
ZWdhY3lEYXRhU3RvcmU7CiAgICAgY29weS0+bV9jYWNoZU1vZGVsID0gdGhpcy0+bV9jYWNoZU1v
ZGVsOwogICAgIGNvcHktPm1fZGlza0NhY2hlRGlyZWN0b3J5ID0gdGhpcy0+bV9kaXNrQ2FjaGVE
aXJlY3Rvcnk7CisgICAgY29weS0+bV9ieXRlY29kZUNhY2hlRGlyZWN0b3J5ID0gdGhpcy0+bV9i
eXRlY29kZUNhY2hlRGlyZWN0b3J5OwogICAgIGNvcHktPm1fZGlza0NhY2hlU3BlY3VsYXRpdmVW
YWxpZGF0aW9uRW5hYmxlZCA9IHRoaXMtPm1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9u
RW5hYmxlZDsKICAgICBjb3B5LT5tX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5t
X2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9hcHBsaWNhdGlvbkNhY2hl
RmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gdGhpcy0+bV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZp
bGVTdWJkaXJlY3RvcnlOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCmluZGV4IDg3MmNlZmY5ZTA4ZTAw
OWE1MDM1MWZkMGMwNzQ5MDJkZjViM2QxYmEuLmU4NDE3NDBiMTE3OGY5M2I2ZDFkZDcxM2FmZjJj
NTZkOGQxMmQyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKQEAgLTkwLDYgKzkwLDkgQEAgcHVibGlj
OgogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBkaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJl
dHVybiBtX2Rpc2tDYWNoZURpcmVjdG9yeTsgfQogICAgIHZvaWQgc2V0RGlza0NhY2hlRGlyZWN0
b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBkaXNrQ2FjaGVEaXJlY3RvcnkpIHsgbV9kaXNrQ2FjaGVE
aXJlY3RvcnkgPSBkaXNrQ2FjaGVEaXJlY3Rvcnk7IH0KIAorICAgIGNvbnN0IFdURjo6U3RyaW5n
JiBieXRlY29kZUNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZUNhY2hl
RGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRCeXRlY29kZUNhY2hlRGlyZWN0b3J5KGNvbnN0IFdU
Rjo6U3RyaW5nJiBieXRlY29kZUNhY2hlRGlyZWN0b3J5KSB7IG1fYnl0ZWNvZGVDYWNoZURpcmVj
dG9yeSA9IGJ5dGVjb2RlQ2FjaGVEaXJlY3Rvcnk7IH0KKwogICAgIGNvbnN0IFdURjo6U3RyaW5n
JiBtZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUNhY2hlRGlyZWN0
b3J5OyB9CiAgICAgdm9pZCBzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5n
JiBtZWRpYUNhY2hlRGlyZWN0b3J5KSB7IG1fbWVkaWFDYWNoZURpcmVjdG9yeSA9IG1lZGlhQ2Fj
aGVEaXJlY3Rvcnk7IH0KICAgICAKQEAgLTE5Nyw2ICsyMDAsNyBAQCBwcml2YXRlOgogICAgIFdU
Rjo6U3RyaW5nIG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKICAgICBXVEY6OlN0cmluZyBt
X2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7CiAgICAgV1RGOjpTdHJp
bmcgbV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CisgICAgV1RGOjpTdHJpbmcgbV9ieXRlY29kZUNhY2hl
RGlyZWN0b3J5OwogICAgIFdURjo6U3RyaW5nIG1fbWVkaWFDYWNoZURpcmVjdG9yeTsKICAgICBX
VEY6OlN0cmluZyBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIFdURjo6U3RyaW5n
IG1faW5qZWN0ZWRCdW5kbGVQYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IGY3NGIyYzVkYjk3ZjEyZDgyNTA2MjA2
ZTc4OTZlY2JiMjk2MGRmNWYuLmM4ZTg5Yzc4Y2UwMDE0N2RlNjIwYWVlZGQyNTVhNDk5OTA4YWQ4
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0
YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURh
dGFTdG9yZS5jcHAKQEAgLTE0OSw2ICsxNDksNyBAQCBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbgog
ICAgIGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9y
eU5hbWUoIkZpbGVzIik7CiAgICAgY29uZmlndXJhdGlvbi0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0
b3J5KGRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSk7CiAgICAgY29uZmlndXJhdGlvbi0+
c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSk7
CisgICAgY29uZmlndXJhdGlvbi0+c2V0Qnl0ZWNvZGVDYWNoZURpcmVjdG9yeShkZWZhdWx0Qnl0
ZWNvZGVDYWNoZURpcmVjdG9yeSgpKTsKICAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUNhY2hl
RGlyZWN0b3J5KGRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkpOwogCiAgICAgY29uZmlndXJh
dGlvbi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoZGVmYXVsdEluZGV4ZWREQkRhdGFi
YXNlRGlyZWN0b3J5KCkpOwpAQCAtMTcxLDYgKzE3Miw3IEBAIFJlZjxXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0RGF0
YVN0CiAgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShsZWdh
Y3lEZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKICAgICBjb25maWd1cmF0aW9u
LT5zZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCJBcHBsaWNhdGlv
bkNhY2hlIik7CiAgICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KGxl
Z2FjeURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+
c2V0Qnl0ZWNvZGVDYWNoZURpcmVjdG9yeShsZWdhY3lEZWZhdWx0Qnl0ZWNvZGVDYWNoZURpcmVj
dG9yeSgpKTsKICAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGxlZ2Fj
eURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkpOwogICAgIGNvbmZpZ3VyYXRpb24tPnNldE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkobGVnYWN5RGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKSk7CiAgICAgY29uZmlndXJhdGlvbi0+c2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KGxlZ2FjeURlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnko
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURh
dGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3Rv
cmUuaAppbmRleCA5YzlhNDNiNzNjNDNkZDZkMmIzMmI3ZTg2MGQ4NWU2MWJhODEwYmYyLi40OWY0
MmU1ZjEyMGQ2MTEzYzIwZjMxZjVkMGQzODI3MDkxZTViMGRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTU5LDYgKzU5LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0Q2FjaGVTdG9yYWdl
RGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHROZXR3b3JrQ2FjaGVE
aXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEJ5dGVjb2RlQ2FjaGVE
aXJlY3RvcnkoKTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE1lZGlhQ2FjaGVEaXJl
Y3RvcnkoKTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNl
RGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CkBAIC03Myw2ICs3NCw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSgpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBsZWdhY3lEZWZhdWx0TmV0d29ya0NhY2hlRGly
ZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRCeXRlY29kZUNh
Y2hlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGxlZ2FjeURlZmF1bHRMb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgbGVnYWN5RGVmYXVs
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGxl
Z2FjeURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW0KaW5kZXggM2FlODg0NTExOTcyZWE3NWE2ZDM3ZTg1YzRkZWYzZTZhOGU4Njc1Ny4uNmY5
MWRkYjUyYjA1ZmU4YTBhMjY2NzdjODU4NGRiOTYzMDc0YmM0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9y
ZUNvY29hLm1tCkBAIC02OSw2ICs2OSwxMSBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKICAgICByZXR1cm4gY2FjaGVEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk5ldHdvcmtDYWNoZSIpOwogfQogCitXVEY6OlN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Qnl0ZWNvZGVDYWNoZURpcmVjdG9yeSgpCit7
CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJCeXRl
Y29kZUNhY2hlIik7Cit9CisKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRN
ZWRpYUNhY2hlRGlyZWN0b3J5KCkKIHsKICAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbigiTWVkaWFDYWNoZSIpOwpAQCAtMTQ4LDYgKzE1MywxNyBAQCBXVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0
b3J5KCkKICAgICByZXR1cm4gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRo
KFtjYWNoZVBhdGggc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF0pOwogfQogCitXVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0Qnl0ZWNvZGVDYWNoZURpcmVjdG9yeSgp
Cit7CisgICAgTlNTdHJpbmcgKmNhY2hlUGF0aCA9IENGQnJpZGdpbmdSZWxlYXNlKF9DRlVSTENh
Y2hlQ29weUNhY2hlRGlyZWN0b3J5KFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gX0NGVVJM
Q2FjaGVdKSk7CisgICAgaWYgKCFjYWNoZVBhdGgpCisgICAgICAgIGNhY2hlUGF0aCA9IEAifi9M
aWJyYXJ5L0NhY2hlcy9jb20uYXBwbGUuV2ViS2l0LldlYlByb2Nlc3MiOworCisgICAgY2FjaGVQ
YXRoID0gW2NhY2hlUGF0aCBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJCeXRlY29k
ZUNhY2hlIl07CisKKyAgICByZXR1cm4gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtz
SW5QYXRoKFtjYWNoZVBhdGggc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF0pOworfQorCiBXVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpsZWdhY3lEZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoKQogewogICAgIE5TU3RyaW5nICpkYXRhYmFzZXNEaXJlY3RvcnkgPSBbW05TVXNlckRl
ZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6V2ViRGF0YWJhc2VEaXJl
Y3RvcnlEZWZhdWx0c0tleV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKaW5kZXggOTM3NmRhNWRhYjViZDAzM2MyZmRlZThiMjBkYjc5NGJkYTJiYzNmMi4uN2M4
YjA1NzEyODkyNWEzOGJkOTNiZDNlMjJmNmI0ZGEyZjZlYzI4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMjI1LDYgKzIyNSw3IEBAIHN0YXRpYyBS
ZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IGxlZ2FjeVdlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uKEFQCiAgICAgY29uZmlndXJhdGlvbi0+c2V0SW5kZXhlZERCRGF0YWJhc2VE
aXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5pbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSgpKSk7CiAgICAgY29uZmlndXJhdGlvbi0+c2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkpOwogICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtD
YWNoZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmRpc2tDYWNoZURp
cmVjdG9yeSgpKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0Qnl0ZWNvZGVDYWNoZURpcmVjdG9y
eShTdHJpbmcocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmJ5dGVjb2RlQ2FjaGVEaXJlY3Rvcnko
KSkpOwogICAgIGNvbmZpZ3VyYXRpb24tPnNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0
b3J5KFN0cmluZyhwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3VyYXRp
b25EaXJlY3RvcnkoKSkpOwogCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CkBAIC01MTMsNiAr
NTE0LDExIEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3
b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgcGFyYW1ldGVycy5kaXNrQ2Fj
aGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tDYWNoZURpcmVjdG9yeSgpOwogICAg
IGlmICghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1l
dGVycy5kaXNrQ2FjaGVEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKTsKKworICAgIHBhcmFtZXRlcnMuYnl0ZWNvZGVDYWNoZURpcmVjdG9yeSA9
IG1fY29uZmlndXJhdGlvbi0+Ynl0ZWNvZGVDYWNoZURpcmVjdG9yeSgpOworICAgIGlmICghcGFy
YW1ldGVycy5ieXRlY29kZUNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMu
Ynl0ZWNvZGVDYWNoZURpcmVjdG9yeSwgcGFyYW1ldGVycy5ieXRlY29kZUNhY2hlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKTsKKwogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZF
X1JFVkFMSURBVElPTikKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlUmV2YWxpZGF0aW9uID0gbV9jb25maWd1cmF0aW9uLT5kaXNrQ2FjaGVTcGVjdWxh
dGl2ZVZhbGlkYXRpb25FbmFibGVkKCk7CiAjZW5kaWYKQEAgLTkxMSw2ICs5MTcsMTAgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jZXNzLCBXZWJzaXRlRGEKICAgICBpZiAoIXBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQ
YXRoLmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0
aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5pbmplY3RlZEJ1bmRsZVBhdGgsIFNhbmRib3hF
eHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aEV4
dGVuc2lvbkhhbmRsZSk7CiAKKyAgICBwYXJhbWV0ZXJzLmJ5dGVjb2RlQ2FjaGVEaXJlY3Rvcnkg
PSBtX2NvbmZpZ3VyYXRpb24tPmJ5dGVjb2RlQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBpZiAoIXBh
cmFtZXRlcnMuYnl0ZWNvZGVDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJz
LmJ5dGVjb2RlQ2FjaGVEaXJlY3RvcnksIHBhcmFtZXRlcnMuYnl0ZWNvZGVDYWNoZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSk7CisKICAgICBwYXJhbWV0ZXJzLmFkZGl0aW9uYWxTYW5kYm94RXh0
ZW5zaW9uSGFuZGxlcy5hbGxvY2F0ZShtX3Jlc29sdmVkUGF0aHMuYWRkaXRpb25hbFdlYlByb2Nl
c3NTYW5kYm94RXh0ZW5zaW9uUGF0aHMuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwg
c2l6ZSA9IG1fcmVzb2x2ZWRQYXRocy5hZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNp
b25QYXRocy5zaXplKCk7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKG1fcmVzb2x2ZWRQYXRocy5hZGRpdGlv
bmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRoc1tpXSwgU2FuZGJveEV4dGVuc2lvbjo6
VHlwZTo6UmVhZE9ubHksIHBhcmFtZXRlcnMuYWRkaXRpb25hbFNhbmRib3hFeHRlbnNpb25IYW5k
bGVzW2ldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA5
OWY1N2U0YWUzYTRlMTQzN2I1NGIyNTI1MGY3MjE3YTMxMjBhMmVlLi40NjE1ZDkxNDNlNTU5MzY5
NDQ0YjFkMTNlNGYxODVhNjdhZmU1NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uY3BwCkBAIC00Miw2ICs0Miw3IEBAIFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNvcHkoKQogICAgIGNvcHkt
Pm1fY2FjaGVTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9jYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7
CiAgICAgY29weS0+bV9wZXJPcmlnaW5TdG9yYWdlUXVvdGEgPSB0aGlzLT5tX3Blck9yaWdpblN0
b3JhZ2VRdW90YTsKICAgICBjb3B5LT5tX25ldHdvcmtDYWNoZURpcmVjdG9yeSA9IHRoaXMtPm1f
bmV0d29ya0NhY2hlRGlyZWN0b3J5OworICAgIGNvcHktPm1fYnl0ZWNvZGVDYWNoZURpcmVjdG9y
eSA9IHRoaXMtPm1fYnl0ZWNvZGVDYWNoZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2FwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7CiAg
ICAgY29weS0+bV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gdGhp
cy0+bV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOwogICAgIGNvcHkt
Pm1fd2ViU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fd2ViU3RvcmFnZURpcmVjdG9yeTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCmluZGV4IDljYzhhNTA3OWJjMGFmZWE0
MjkxOTcwNmIwNjIxMjhiNTdmY2IyMGIuLmZkN2U2NWEzNmY1NmY4ZjNhN2Y3NDQ0OGFhZjNlNThl
YjIzMTdmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaApAQCAtNzYs
NiArNzYsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBuZXR3b3JrQ2FjaGVEaXJlY3Rv
cnkoKSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtDYWNoZURpcmVjdG9yeTsgfQogICAgIHZvaWQg
c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX25ldHdvcmtD
YWNoZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQogICAgIAorICAgIGNvbnN0IFN0
cmluZyYgYnl0ZWNvZGVDYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVD
YWNoZURpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0Qnl0ZWNvZGVDYWNoZURpcmVjdG9yeShTdHJp
bmcmJiBkaXJlY3RvcnkpIHsgbV9ieXRlY29kZUNhY2hlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJl
Y3RvcnkpOyB9CisKICAgICBjb25zdCBTdHJpbmcmIGNhY2hlU3RvcmFnZURpcmVjdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FjaGVTdG9yYWdlRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRDYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fY2FjaGVTdG9yYWdlRGly
ZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CiAgICAgCkBAIC0xMDUsNiArMTA4LDcgQEAg
cHJpdmF0ZToKICAgICBTdHJpbmcgbV9jYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgdWludDY0
X3QgbV9wZXJPcmlnaW5TdG9yYWdlUXVvdGEgeyBkZWZhdWx0UGVyT3JpZ2luU3RvcmFnZVF1b3Rh
IH07CiAgICAgU3RyaW5nIG1fbmV0d29ya0NhY2hlRGlyZWN0b3J5OworICAgIFN0cmluZyBtX2J5
dGVjb2RlQ2FjaGVEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeTsKICAgICBTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lOwogICAgIFN0cmluZyBtX3dlYlN0b3JhZ2VEaXJlY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyNmMwNWM3NDY5ZTY4Zjdm
YjI0YzQ3MDg2Y2FiNTIzZmI0MjUzNmUwLi4zYjUyMGJiYzk0ZjllMWU1MjY2M2ViNGY4YTBlZDI3
ZDdiMjUwMjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTEyMiw2ICsxMjIsOSBAQAogCQkwRkYyNEEyRDE4NzlFNEJDMDAzQUJGMEMg
LyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkYyNEEyQjE4NzlF
NEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgKi87IH07CiAJCTBGRjI0QTJFMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjI0QTJDMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCAqLzsgfTsKIAkJMEZGMjY0QTAxQTFG
RjlDQzAwMUZFNzU5IC8qIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3MDdDNzkx
QTFGRUVBMzAwREE3QTQ1IC8qIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0
YS5oICovOyB9OworCQkxNEQwMUE3MzIxRkExODA2MDBCQzU0RTkgLyogQnl0ZWNvZGVDYWNoZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTREMDFBNzEy
MUZBMTgwNTAwQkM1NEU5IC8qIEJ5dGVjb2RlQ2FjaGUuaCAqLzsgfTsKKwkJMTRFMjgwOTQyMjAw
MEEwRjAwM0JDNTdCIC8qIERlcml2ZWREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNEUyODA5MjIyMDAwOUY5MDAzQkM1N0IgLyogRGVyaXZlZERh
dGEuaCAqLzsgfTsKKwkJMTRFMjgwOTUyMjAwMEEyMjAwM0JDNTdCIC8qIERlcml2ZWREYXRhLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RTI4MDkz
MjIwMDA5RjkwMDNCQzU3QiAvKiBEZXJpdmVkRGF0YS5jcHAgKi87IH07CiAJCTE1NzM5QkJEMUI0
MjA0MkQwMEQyNThDMSAvKiBXZWJVc2VyTWVkaWFDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjQ5MTlBRjdCODAwMDJFQkFCNSAvKiBX
ZWJVc2VyTWVkaWFDbGllbnQuaCAqLzsgfTsKIAkJMUEwMDJENDMxOTZCMzM3MDAwQjlBRDQ0IC8q
IF9XS1Nlc3Npb25TdGF0ZUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTAwMkQ0MjE5NkIzMzcwMDBCOUFENDQgLyogX1dLU2Vzc2lvblN0
YXRlSW50ZXJuYWwuaCAqLzsgfTsKIAkJMUEwMDJENDQxOTZCMzM4OTAwQjlBRDQ0IC8qIF9XS1Nl
c3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUEwMDJEM0YxOTZCMzI5NDAwQjlBRDQ0IC8qIF9XS1Nlc3Npb25TdGF0ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xOTcwLDYgKzE5NzMs
MTAgQEAKIAkJMEZGMjRBMkMxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmg7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTBGRjI0QTJGMTg3OUU0RkUw
MDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTEwNThDN0IxRkVBNTU4NUUxMUNBMkNCQiAvKiBDb2NvYS5m
cmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENvY29hLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvY29hLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJz
b2x1dGU+IjsgfTsKKwkJMTREMDFBNzAyMUZBMTgwNTAwQkM1NEU5IC8qIEJ5dGVjb2RlQ2FjaGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnl0ZWNvZGVDYWNoZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0RDAxQTcxMjFGQTE4MDUwMEJDNTRF
OSAvKiBCeXRlY29kZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5
dGVjb2RlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRFMjgwOTIyMjAw
MDlGOTAwM0JDNTdCIC8qIERlcml2ZWREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERlcml2ZWREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0RTI4
MDkzMjIwMDA5RjkwMDNCQzU3QiAvKiBEZXJpdmVkRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEZXJpdmVkRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBMDAyRDNFMTk2QjMyOTQwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGUubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tTZXNzaW9uU3RhdGUu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMDAyRDNGMTk2QjMyOTQwMEI5QUQ0
NCAvKiBfV0tTZXNzaW9uU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
X1dLU2Vzc2lvblN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMDAyRDQy
MTk2QjMzNzAwMEI5QUQ0NCAvKiBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTUxMCw2ICs1NTE3LDggQEAKIAkJCQkxQUM3NTM3RTE4
M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5oICovLAogCQkJCUJDMDMyRDlEMTBGNDM3
RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmNwcCAqLywKIAkJCQlCQzAzMkQ5RTEwRjQzN0QxMDA1OEMx
NUEgLyogRGVjb2Rlci5oICovLAorCQkJCTE0RTI4MDkzMjIwMDA5RjkwMDNCQzU3QiAvKiBEZXJp
dmVkRGF0YS5jcHAgKi8sCisJCQkJMTRFMjgwOTIyMjAwMDlGOTAwM0JDNTdCIC8qIERlcml2ZWRE
YXRhLmggKi8sCiAJCQkJQkMwMzJEOUYxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuY3BwICov
LAogCQkJCUJDMDMyREEwMTBGNDM3RDEwMDU4QzE1QSAvKiBFbmNvZGVyLmggKi8sCiAJCQkJNDE1
MUU1QzMxRkJCOTBBOTAwRTQ3RTJEIC8qIEZvcm1EYXRhUmVmZXJlbmNlLmggKi8sCkBAIC04OTM0
LDYgKzg5NDMsOCBAQAogCQlFNDg5RDI4MjFBMEEyQkU4MDA3OEMwNkEgLyogY2FjaGUgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTE0RDAxQTcwMjFGQTE4
MDUwMEJDNTRFOSAvKiBCeXRlY29kZUNhY2hlLmNwcCAqLywKKwkJCQkxNEQwMUE3MTIxRkExODA1
MDBCQzU0RTkgLyogQnl0ZWNvZGVDYWNoZS5oICovLAogCQkJCTQxODk3RUQ2MUY0MTVEODYwMDE2
RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuY3BwICovLAogCQkJCTQxODk3RUQyMUY0MTVEODUw
MDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuaCAqLywKIAkJCQk0MUM4NTgxOTFGNTEwREVF
MDA2NUUwODUgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwICovLApAQCAtOTE5Niw2ICs5
MjA3LDcgQEAKIAkJCQlFMTcwODc2QzE2RDZDQTY5MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJ5UHJv
eHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTRGNjAxNDMyMTU1QzVBQTIwMDFGQkRFMCAvKiBCbG9j
a2luZ1Jlc3BvbnNlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU3MDUxMTFCRTQxMEU2MDA4
NzRBRjEgLyogQmxvY2tTUEkuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0RDAxQTczMjFGQTE4MDYw
MEJDNTRFOSAvKiBCeXRlY29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMwNjVGQTEy
NTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4OTdF
RDgxRjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDFGQUJEMkExRjRERTAwMTAwNkE2Qzk3IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmggaW4gSGVhZGVycyAqLywKQEAgLTkyMTUsNiArOTIyNyw3IEBACiAJCQkJQzU1RjkxNzExQzU5
Njc2RTAwMjlFOTJEIC8qIERhdGFEZXRlY3Rpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBQzc1MzgwMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzAzMkRBNjEwRjQzN0QxMDA1OEMxNUEgLyogRGVjb2Rlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMTRFMjgwOTQyMjAwMEEwRjAwM0JDNTdCIC8qIERlcml2ZWREYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1N0RDRURBQjIxNEM2MDA5MDAxNkI4NDcgLyogRGV2aWNlSWRlbnRpdHlT
UEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Mjk3RjlGMUMxN0JCRUEwMTVGMDczNSAvKiBEZXZp
Y2VJZEhhc2hTYWx0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM4OTFCNkMxQTY4QzMw
QjAwMzBGMzg2IC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTEwOTczLDYgKzEwOTg2LDcgQEAKIAkJCQkyRDkyQTc3RDIxMkI2QTcxMDBGNDkzRkQgLyogQ29u
bmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3RTIxMkI2QTcxMDBGNDkzRkQg
LyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3RjIxMkI2QTcx
MDBGNDkzRkQgLyogRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNEUyODA5NTIyMDAw
QTIyMDAzQkM1N0IgLyogRGVyaXZlZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCN0Q2
MTkxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUE2NDIyOTkxMkREMDI5MjAwQ0FBRTJDIC8qIERyYXdpbmdBcmVh
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNjQyMzA4MTJERDA5RUIw
MENBQUUyQyAvKiBEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDA0YWUwZTQ1ZDVlOWQyOWNhMGYyNzBhMDY0MThhNmFiMmQ1
MDFmY2IuLjM3MDIxZjEzMjMzNWZhMDczZTE4MjEyYjBlY2JkYTUyZDI0MWRiMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE1LCAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MiwgMjAxNSwgMjAxOCwgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ1LDggKzQ1LDEwIEBACiAjaW5jbHVkZSAi
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxl
clByb3h5LmgiCiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lVGFza1Byb3h5LmgiCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQnl0ZWNvZGVDYWNoZU1ldGFkYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVkUmVzb3Vy
Y2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZFNjcmlwdC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdLZXlz
Lmg+CkBAIC0yODEsNiArMjgzLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVM
b2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUwKICAgICBsb2Fk
UGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5mbyA9IHJlc291cmNlTG9hZGVyLnNob3VsZElu
Y2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKTsKICAgICBsb2FkUGFyYW1ldGVycy5tYXhpbXVtQnVmZmVy
aW5nVGltZSA9IG1heGltdW1CdWZmZXJpbmdUaW1lOwogICAgIGxvYWRQYXJhbWV0ZXJzLm9wdGlv
bnMgPSByZXNvdXJjZUxvYWRlci5vcHRpb25zKCk7CisgICAgbG9hZFBhcmFtZXRlcnMuc2NyaXB0
TW9kZSA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5zY3JpcHRNb2RlOwogICAgIGxvYWRQYXJh
bWV0ZXJzLnByZWZsaWdodFBvbGljeSA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5wcmVmbGln
aHRQb2xpY3k7CiAgICAgbG9hZFBhcmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gcmVz
b3VyY2VMb2FkZXIuZnJhbWUoKSA/IHJlc291cmNlTG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCku
SFRUUFNVcGdyYWRlRW5hYmxlZCgpIDogZmFsc2U7CiAKQEAgLTY2Nyw2ICs2NzAsMTEgQEAgdm9p
ZCBXZWJMb2FkZXJTdHJhdGVneTo6ZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVj
b25uZWN0aW9uSWRlbnRpZmllciwKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShl
cnJvcikpOwogfQogCit2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpjYWNoZUJ5dGVjb2RlRm9yU2Ny
aXB0KGNvbnN0IFdlYkNvcmU6OkNhY2hlZFNjcmlwdCYgc2NyaXB0LCBjb25zdCBKU0M6OkJ5dGVj
b2RlQ2FjaGVNZXRhZGF0YSYgbWV0YWRhdGEpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDYWNoZUJ5dGVjb2RlRm9yUmVx
dWVzdChzY3JpcHQucmVzb3VyY2VSZXF1ZXN0KCksIG1ldGFkYXRhKSwgMCk7Cit9CisKIGJvb2wg
V2ViTG9hZGVyU3RyYXRlZ3k6OmlzT25MaW5lKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pc09u
TGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5oCmluZGV4IDRhZjU5OTQxZTM0ZjcyYWQyNmU4MWVmYjU2MDYwNjc1MTgxMWY4
YzYuLmRiZTI0MmEwZDA2MzRlY2Q2OWJlMzBmNWZkZDI1MGJkMmFhYjA5ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE1LCAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzMsNiArMzMsMTAgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgQnl0ZWNvZGVD
YWNoZU1ldGFkYXRhOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgRmV0Y2hPcHRp
b25zOwogfQpAQCAtNjksNiArNzMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVjb25uZWN0VG8o
V2ViQ29yZTo6RnJhbWVMb2FkZXImLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZv
aWQgZGlkRmluaXNoUHJlY29ubmVjdGlvbih1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKIAorICAgIHZvaWQgY2FjaGVCeXRlY29kZUZv
clNjcmlwdChjb25zdCBXZWJDb3JlOjpDYWNoZWRTY3JpcHQmLCBjb25zdCBKU0M6OkJ5dGVjb2Rl
Q2FjaGVNZXRhZGF0YSYpIG92ZXJyaWRlOworCiAgICAgdm9pZCBzZXRDYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wpIGZpbmFsOwogCiAgICAgV2ViUmVzb3VyY2VMb2Fk
ZXIqIHdlYlJlc291cmNlTG9hZGVyRm9ySWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVy
IGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUmVzb3VyY2VMb2FkZXJzLmdldChpZGVu
dGlmaWVyKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGJmODhmZGEzMDA3ZTE2NGZmMzhhOTUyMmFiYjgx
ZmVmZDdlOWY4NTIuLmMxZDljNjJkNTNkNjc1Nzc1YzAwY2VjZDA0ZmY5NTk0ZmJhYjY0OTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2Fk
ZXIuaCIKIAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJEZXJpdmVkRGF0
YS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgpAQCAt
MTEwLDcgKzExMSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFNlbmREYXRhKHVpbnQ2
NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTCiAgICAgbV9jb3JlTG9hZGVy
LT5kaWRTZW5kRGF0YShieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQg
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2Fn
ZSkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlTWVzc2FnZSwgY29uc3QgVmVjdG9yPElQQzo6RGVyaXZlZERhdGE+JiBkZXJpdmVkRGF0YSkK
IHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlIGZvciAnJXMnLiBTdGF0dXMgJWQuIiwgbV9jb3JlTG9hZGVyLT51cmwo
KS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwog
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIiwgc3RhdHVzID0gJWQpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlELCBy
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKQEAgLTE0MCw2ICsxNDEsMTAgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBib28KICAgICB9CiAKICAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVSZXNw
b25zZShyZXNwb25zZSwgV1RGTW92ZShwb2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IGRlcml2ZWREYXRhKSB7CisgICAgICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW50cnkuZGF0YSgpLmRhdGEoKSwgZW50
cnkuZGF0YSgpLnNpemUoKSk7CisgICAgICAgIG1fY29yZUxvYWRlci0+ZGlkUmV0cmlldmVEZXJp
dmVkRGF0YUZyb21DYWNoZShlbnRyeS50eXBlKCksIGJ1ZmZlci5nZXQoKSk7CisgICAgfQogfQog
CiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAppbmRleCA3
ZmQ3ODMyMjMzYTM2MmMyM2E5MDRmYzE1ZWYzNGNhNjRhOTY3ZWFlLi4xNGY1MjU0MjgxNWY5YTE1
NTkzN2ZiNTE3N2UwY2QyYWI5MGM3ZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNiArMzMsNyBAQAogCiBuYW1l
c3BhY2UgSVBDIHsKIGNsYXNzIERhdGFSZWZlcmVuY2U7CitjbGFzcyBEZXJpdmVkRGF0YTsKIH0K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzYsOSArNzcsOCBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRl
c1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wgbmVlZHNDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlLCBjb25zdCBWZWN0b3I8SVBDOjpEZXJpdmVkRGF0YT4m
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGlu
dDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwotICAgIHZvaWQgZGlkUmV0cmlldmVEZXJpdmVkRGF0
YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogICAgIHZv
aWQgZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpOwogICAgIHZvaWQgZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CiAgICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCmluZGV4IDdiOTMyNTZmMDM2ZGQwNDJmNDRiYTgzYTMx
OGJiN2I2NjM2ZDQxYWEuLjMwYjAzZDA2ZDI4MjBjOGI3NmU2NDVjN2QyZTM3ZmUzZjY0OGViY2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiBtZXNzYWdl
cyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlaXZlciB7CiAgICAgV2lsbFNlbmRSZXF1
ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UpCiAgICAgRGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNT
ZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpCi0gICAgRGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCisgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZU1lc3NhZ2UsIFZlY3RvcjxJUEM6OkRlcml2ZWREYXRhPiBkYXRhKQogICAgIERpZFJl
Y2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVu
Y29kZWREYXRhTGVuZ3RoKQogICAgIERpZEZpbmlzaFJlc291cmNlTG9hZChXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MgbmV0d29ya0xvYWRNZXRyaWNzKQogICAgIERpZEZhaWxSZXNvdXJjZUxv
YWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IDJlMTkwYjAzNWY3MjgwYjFm
YmVkYjNhZjAwMWU2OTU4YzQyMDIxMTYuLjYwZmU2MWY2MTUyYjlkZjQ2ZjUxM2MwYmY3ODc3OWYw
NTU0ZmUwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbQpAQCAtMTU0LDYgKzE1NCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZv
cm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
CiAKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQogICAgIFNhbmRib3hFeHRlbnNpb246
OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0
aEV4dGVuc2lvbkhhbmRsZSk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVu
dGx5KHBhcmFtZXRlcnMuYnl0ZWNvZGVDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVy
bWFuZW50bHkocGFyYW1ldGVycy5hdWRpb0NhcHR1cmVFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nl
c3Muc2IuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Mu
c2IuaW4KaW5kZXggMDliOGVlZTM0NGQ1ZjY1OTQyMTk5NTEwYWRiZDliNzFlNDQ5MWE5YS4uYzFk
ZmMwNTQ3NTlmNTVjZDk1Yzg3YWUyNTQ0ZTU5MWExOTU1YWFlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgpAQCAtMSw0ICsx
LDQgQEAKLTsgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorOyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiA7CiA7IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogOyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2NSw2ICsxNjUsNyBA
QAogICAgICAgICAiaHcubmNwdSIKICAgICAgICAgImh3LnZlY3RvcnVuaXQiCiAgICAgICAgICJr
ZXJuLmJvb3RhcmdzIiA7OyA8cmRhcjovL3Byb2JsZW0vNDc3MzgwMTU+CisgICAgICAgICJrZXJu
LmJvb3RzZXNzaW9udXVpZCIKICAgICAgICAgImtlcm4uaG9zdG5hbWUiCiAgICAgICAgICJrZXJu
Lm1heGZpbGVzcGVycHJvYyIKICAgICAgICAgImtlcm4ubWVtb3J5c3RhdHVzX2xldmVsIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVz
b3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXggNTViMzY5NzUzMDY1ODIxNGJjOTc5YTg3OTJiNjYw
NzI2ZDgyOTZkZC4uMjk4MGVhNTE1MzE2MzY3NmRjN2RkODBiOWQyYWUxNzU4OTcyNTE5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dl
YlJlc291cmNlTG9hZFNjaGVkdWxlci5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAgICBDb3B5cmln
aHQgKEMpIDE5OTggTGFycyBLbm9sbCAoa25vbGxAbXBpLWhkLm1wZy5kZSkKICAgICBDb3B5cmln
aHQgKEMpIDIwMDEgRGlyayBNdWVsbGVyIDxtdWVsbGVyQGtkZS5vcmc+Ci0gICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA2LTIwMDgsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNi0yMDA4LCAyMDE1LCAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTM5LDYgKzM5LDEwIEBAIGNs
YXNzIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjsKIAogV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
JiB3ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsKIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBC
eXRlY29kZUNhY2hlTWV0YWRhdGE7Cit9CisKIGNsYXNzIFdlYlJlc291cmNlTG9hZFNjaGVkdWxl
ciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CkBAIC02MCw2ICs2NCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcHJl
Y29ubmVjdFRvKFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3ksIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5h
bDsKIAorICAgIHZvaWQgY2FjaGVCeXRlY29kZUZvclNjcmlwdChjb25zdCBXZWJDb3JlOjpDYWNo
ZWRTY3JpcHQmLCBjb25zdCBKU0M6OkJ5dGVjb2RlQ2FjaGVNZXRhZGF0YSYpIGZpbmFsIHsgfQor
CiAgICAgdm9pZCBzZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvb2wp
IGZpbmFsIHsgfQogCiAgICAgYm9vbCBpc1NlcmlhbExvYWRpbmdFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1NlcmlhbExvYWRpbmdFbmFibGVkOyB9Cg==
</data>
<flag name="review"
          id="385779"
          type_id="1"
          status="?"
          setter="tzagallo"
    />
          </attachment>
      

    </bug>

</bugzilla>