<?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>228748</bug_id>
          
          <creation_ts>2021-08-03 12:11:42 -0700</creation_ts>
          <short_desc>Suspend WorkQueue of ResourceLoadStatistics and LocalStorage sooner</short_desc>
          <delta_ts>2021-08-11 15:26:09 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1781693</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-08-03 12:11:42 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781702</commentid>
    <comment_count>1</comment_count>
      <attachid>434852</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-08-03 12:29:32 -0700</bug_when>
    <thetext>Created attachment 434852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781733</commentid>
    <comment_count>2</comment_count>
      <attachid>434860</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-08-03 13:54:38 -0700</bug_when>
    <thetext>Created attachment 434860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782044</commentid>
    <comment_count>3</comment_count>
      <attachid>434933</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-08-04 14:22:30 -0700</bug_when>
    <thetext>Created attachment 434933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782255</commentid>
    <comment_count>4</comment_count>
      <attachid>434933</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-05 10:13:31 -0700</bug_when>
    <thetext>Comment on attachment 434933
Patch

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

I think this is a good idea but I have some comments about the implementation.

&gt; Source/WTF/wtf/SuspendableWorkQueue.cpp:47
&gt; +    // Last suspend function will be the one that is used.

Doesn&apos;t seem like a great design.

&gt; Source/WTF/wtf/SuspendableWorkQueue.cpp:54
&gt; +    dispatch([protectedThis = makeRef(*this)] { });

I think this needs a comment to explain that this will suspend the work queue because it is not obvious at first sight. Or maybe even better, call WorkQueue::dispatch() instead of SuspendableWorkQueue::dispatch() and call suspendIfNeeded() explicitly.

&gt; Source/WTF/wtf/SuspendableWorkQueue.cpp:71
&gt; +    WorkQueue::dispatch([this, protectedThis = makeRef(*this), function = WTFMove(function)]() {

protectedThis should not be needed as WorkQueue::dispatch() already takes care of protecting |this|.

&apos;()&apos; is not needed either.

&gt; Source/WTF/wtf/SuspendableWorkQueue.cpp:79
&gt; +    WorkQueue::dispatchAfter(seconds, [this, protectedThis = makeRef(*this), function = WTFMove(function)]() {

same comment about protectedThis and &apos;()&apos;.

&gt; Source/WTF/wtf/SuspendableWorkQueue.cpp:86
&gt; +{

ASSERT(!isMainThread()); ?

&gt; Source/WTF/wtf/SuspendableWorkQueue.cpp:92
&gt; +            if (auto completionHandler = completionHandlers.takeFirst())

We should just iterate over completionHandlers.isEmpty instead of extracting each item one by one.

&gt; Source/WTF/wtf/SuspendableWorkQueue.h:36
&gt; +class SuspendableWorkQueue : public WorkQueue {

final

&gt; Source/WTF/wtf/SuspendableWorkQueue.h:38
&gt; +

Weird blank line.

&gt; Source/WTF/wtf/SuspendableWorkQueue.h:41
&gt; +    WTF_EXPORT_PRIVATE static Ref&lt;SuspendableWorkQueue&gt; create(const char* name, Type = Type::Serial, QOS = QOS::Default);

Type seems like a lie? I don&apos;t think your code would be able to suspend a concurrent WorkQueue, only a serial one?

&gt; Source/WTF/wtf/SuspendableWorkQueue.h:43
&gt; +    WTF_EXPORT_PRIVATE void suspend(Function&lt;void()&gt;&amp;&amp;, CompletionHandler&lt;void()&gt;&amp;&amp;);

I don&apos;t think we should omit the parameter names here as it is really not obvious what they are.

&gt; Source/WTF/wtf/SuspendableWorkQueue.h:46
&gt; +    WTF_EXPORT_PRIVATE void dispatchAfter(Seconds, Function&lt;void()&gt;&amp;&amp;);

Shouldn&apos;t this be marked as virtual in the base class and final here?

&gt; Source/WTF/wtf/SuspendableWorkQueue.h:47
&gt; +

This class seems to completely ignore void dispatchSync(). Why is that OK?

Also, this class should probably make these private:
#if USE(COCOA_EVENT_LOOP)
    dispatch_queue_t dispatchQueue() const { return m_dispatchQueue.get(); }
#else
    RunLoop&amp; runLoop() const { return *m_runLoop; }
#endif

Wouldn&apos;t be perfect as the caller could have a pointer to the base class and still get the underlying dispatch_queue but still better than nothing.

&gt; Source/WTF/wtf/SuspendableWorkQueue.h:50
&gt; +    void invokeAllSuspensionCompletionHandlers();

WTF_REQUIRES_LOCK(m_suspensionLock)

&gt; Source/WTF/wtf/SuspendableWorkQueue.h:55
&gt; +    bool m_shouldSuspend WTF_GUARDED_BY_LOCK(m_suspensionLock) { false };

I think m_shouldSuspend is a confusing name since it currently means &quot;will-suspend&quot; and &quot;is-suspended&quot;. If we don&apos;t need to distinguish the 2 cases, I&apos;d suggest a m_isSuspended naming instead. (or m_isSuspendedOrAboutToBe)

&gt; Source/WTF/wtf/SuspendableWorkQueue.h:56
&gt; +    Function&lt;void()&gt; m_suspendFunction WTF_GUARDED_BY_LOCK(m_suspensionLock);

I am confused by the fact that there can be multiple completion handlers but a single suspendFunction. This means that every time you call suspend(), you overwrite the previous caller&apos;s suspend function.
If the suspend function is constant (doesn&apos;t change), then maybe it should be passed to the constructor instead?

&gt; Source/WTF/wtf/SuspendableWorkQueue.h:57
&gt; +    Deque&lt;CompletionHandler&lt;void()&gt;&gt; m_suspensionCompletionHandlers;

WTF_GUARDED_BY_LOCK(m_suspensionLock) ?

We add completion handlers from the main thread and remove them from the background thread it seems.

Also it seems like it should be a Vector, not a Deque? You only append and iterate.

&gt; Source/WTF/wtf/SuspendableWorkQueue.h:60
&gt; +} // namespace WTF

Please add the following statement after this:
using WTF::SuspendableWorkQueue;

Then you won&apos;t need WTF:: every time you use it and this is the usual pattern in WTF.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:350
&gt; +ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore(WebResourceLoadStatisticsStore&amp; store, WTF::SuspendableWorkQueue&amp; workQueue, ShouldIncludeLocalhost shouldIncludeLocalhost, const String&amp; storageDirectoryPath, PAL::SessionID sessionID)

WTF:: shouldn&apos;t be needed.

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:148
&gt; +    static NeverDestroyed&lt;Ref&lt;WTF::SuspendableWorkQueue&gt;&gt; queue(WTF::SuspendableWorkQueue::create(&quot;WebResourceLoadStatisticsStore Process Data Queue&quot;,  WorkQueue::Type::Serial, WorkQueue::QOS::Utility));

nit: redundant space before WorkQueue::Type::Serial</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782260</commentid>
    <comment_count>5</comment_count>
      <attachid>434933</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-05 10:17:01 -0700</bug_when>
    <thetext>Comment on attachment 434933
Patch

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

&gt; Source/WebKit/NetworkProcess/WebStorage/StorageManagerSet.cpp:180
&gt; +    m_queue-&gt;suspend([protectedThis = makeRef(*this)] {

This seems like a retain-cycle and will likely cause leaks. |this| refs m_queue and m_queue refs |this| via m_suspendFunction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782303</commentid>
    <comment_count>6</comment_count>
      <attachid>434933</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-08-05 12:13:54 -0700</bug_when>
    <thetext>Comment on attachment 434933
Patch

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

&gt;&gt; Source/WTF/wtf/SuspendableWorkQueue.cpp:47
&gt;&gt; +    // Last suspend function will be the one that is used.
&gt; 
&gt; Doesn&apos;t seem like a great design.

Is it better to store all suspend functions and invoke at suspension?

&gt;&gt; Source/WTF/wtf/SuspendableWorkQueue.cpp:54
&gt;&gt; +    dispatch([protectedThis = makeRef(*this)] { });
&gt; 
&gt; I think this needs a comment to explain that this will suspend the work queue because it is not obvious at first sight. Or maybe even better, call WorkQueue::dispatch() instead of SuspendableWorkQueue::dispatch() and call suspendIfNeeded() explicitly.

Sure, will update.

&gt;&gt; Source/WTF/wtf/SuspendableWorkQueue.cpp:71
&gt;&gt; +    WorkQueue::dispatch([this, protectedThis = makeRef(*this), function = WTFMove(function)]() {
&gt; 
&gt; protectedThis should not be needed as WorkQueue::dispatch() already takes care of protecting |this|.
&gt; 
&gt; &apos;()&apos; is not needed either.

Will remove.

&gt;&gt; Source/WTF/wtf/SuspendableWorkQueue.cpp:79
&gt;&gt; +    WorkQueue::dispatchAfter(seconds, [this, protectedThis = makeRef(*this), function = WTFMove(function)]() {
&gt; 
&gt; same comment about protectedThis and &apos;()&apos;.

Will remove.

&gt;&gt; Source/WTF/wtf/SuspendableWorkQueue.cpp:86
&gt;&gt; +{
&gt; 
&gt; ASSERT(!isMainThread()); ?

Will add.

&gt;&gt; Source/WTF/wtf/SuspendableWorkQueue.cpp:92
&gt;&gt; +            if (auto completionHandler = completionHandlers.takeFirst())
&gt; 
&gt; We should just iterate over completionHandlers.isEmpty instead of extracting each item one by one.

Okay.

&gt;&gt; Source/WTF/wtf/SuspendableWorkQueue.h:36
&gt;&gt; +class SuspendableWorkQueue : public WorkQueue {
&gt; 
&gt; final

Will add.

&gt;&gt; Source/WTF/wtf/SuspendableWorkQueue.h:38
&gt;&gt; +
&gt; 
&gt; Weird blank line.

Will remove.

&gt;&gt; Source/WTF/wtf/SuspendableWorkQueue.h:41
&gt;&gt; +    WTF_EXPORT_PRIVATE static Ref&lt;SuspendableWorkQueue&gt; create(const char* name, Type = Type::Serial, QOS = QOS::Default);
&gt; 
&gt; Type seems like a lie? I don&apos;t think your code would be able to suspend a concurrent WorkQueue, only a serial one?

Right, will make type Serial the default and only option.

&gt;&gt; Source/WTF/wtf/SuspendableWorkQueue.h:43
&gt;&gt; +    WTF_EXPORT_PRIVATE void suspend(Function&lt;void()&gt;&amp;&amp;, CompletionHandler&lt;void()&gt;&amp;&amp;);
&gt; 
&gt; I don&apos;t think we should omit the parameter names here as it is really not obvious what they are.

Will add.

&gt;&gt; Source/WTF/wtf/SuspendableWorkQueue.h:46
&gt;&gt; +    WTF_EXPORT_PRIVATE void dispatchAfter(Seconds, Function&lt;void()&gt;&amp;&amp;);
&gt; 
&gt; Shouldn&apos;t this be marked as virtual in the base class and final here?

Okay.

&gt;&gt; Source/WTF/wtf/SuspendableWorkQueue.h:47
&gt;&gt; +
&gt; 
&gt; This class seems to completely ignore void dispatchSync(). Why is that OK?
&gt; 
&gt; Also, this class should probably make these private:
&gt; #if USE(COCOA_EVENT_LOOP)
&gt;     dispatch_queue_t dispatchQueue() const { return m_dispatchQueue.get(); }
&gt; #else
&gt;     RunLoop&amp; runLoop() const { return *m_runLoop; }
&gt; #endif
&gt; 
&gt; Wouldn&apos;t be perfect as the caller could have a pointer to the base class and still get the underlying dispatch_queue but still better than nothing.

dispatchSync will be the same as WorkQueue::dispatchSync() if suspend() is not called. If suspend() is called, then client should not use dispatchSync as it will block the thread. I guess we can add assert in SuspendableWorkQueue::dispatchSync to ensure that.

Will make the functions private.

&gt;&gt; Source/WTF/wtf/SuspendableWorkQueue.h:50
&gt;&gt; +    void invokeAllSuspensionCompletionHandlers();
&gt; 
&gt; WTF_REQUIRES_LOCK(m_suspensionLock)

Okay.

&gt;&gt; Source/WTF/wtf/SuspendableWorkQueue.h:55
&gt;&gt; +    bool m_shouldSuspend WTF_GUARDED_BY_LOCK(m_suspensionLock) { false };
&gt; 
&gt; I think m_shouldSuspend is a confusing name since it currently means &quot;will-suspend&quot; and &quot;is-suspended&quot;. If we don&apos;t need to distinguish the 2 cases, I&apos;d suggest a m_isSuspended naming instead. (or m_isSuspendedOrAboutToBe)

Okay.

&gt;&gt; Source/WTF/wtf/SuspendableWorkQueue.h:56
&gt;&gt; +    Function&lt;void()&gt; m_suspendFunction WTF_GUARDED_BY_LOCK(m_suspensionLock);
&gt; 
&gt; I am confused by the fact that there can be multiple completion handlers but a single suspendFunction. This means that every time you call suspend(), you overwrite the previous caller&apos;s suspend function.
&gt; If the suspend function is constant (doesn&apos;t change), then maybe it should be passed to the constructor instead?

The suspend function may hold ref to the owner of WorkQueue, so it&apos;s either set m_suspendFunction at suspend(), or set it in constructor and clear it at some time later.

&gt;&gt; Source/WTF/wtf/SuspendableWorkQueue.h:57
&gt;&gt; +    Deque&lt;CompletionHandler&lt;void()&gt;&gt; m_suspensionCompletionHandlers;
&gt; 
&gt; WTF_GUARDED_BY_LOCK(m_suspensionLock) ?
&gt; 
&gt; We add completion handlers from the main thread and remove them from the background thread it seems.
&gt; 
&gt; Also it seems like it should be a Vector, not a Deque? You only append and iterate.

Sure.

&gt;&gt; Source/WTF/wtf/SuspendableWorkQueue.h:60
&gt;&gt; +} // namespace WTF
&gt; 
&gt; Please add the following statement after this:
&gt; using WTF::SuspendableWorkQueue;
&gt; 
&gt; Then you won&apos;t need WTF:: every time you use it and this is the usual pattern in WTF.

Okay.

&gt;&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:350
&gt;&gt; +ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore(WebResourceLoadStatisticsStore&amp; store, WTF::SuspendableWorkQueue&amp; workQueue, ShouldIncludeLocalhost shouldIncludeLocalhost, const String&amp; storageDirectoryPath, PAL::SessionID sessionID)
&gt; 
&gt; WTF:: shouldn&apos;t be needed.

Will remove.

&gt;&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:148
&gt;&gt; +    static NeverDestroyed&lt;Ref&lt;WTF::SuspendableWorkQueue&gt;&gt; queue(WTF::SuspendableWorkQueue::create(&quot;WebResourceLoadStatisticsStore Process Data Queue&quot;,  WorkQueue::Type::Serial, WorkQueue::QOS::Utility));
&gt; 
&gt; nit: redundant space before WorkQueue::Type::Serial

Will remove.

&gt;&gt; Source/WebKit/NetworkProcess/WebStorage/StorageManagerSet.cpp:180
&gt;&gt; +    m_queue-&gt;suspend([protectedThis = makeRef(*this)] {
&gt; 
&gt; This seems like a retain-cycle and will likely cause leaks. |this| refs m_queue and m_queue refs |this| via m_suspendFunction.

Yes, I should clear suspend function when clearing suspension completion handlers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782331</commentid>
    <comment_count>7</comment_count>
      <attachid>435022</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-08-05 14:04:32 -0700</bug_when>
    <thetext>Created attachment 435022
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782534</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-06 11:52:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/81626714&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782891</commentid>
    <comment_count>9</comment_count>
      <attachid>435022</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-09 08:45:14 -0700</bug_when>
    <thetext>Comment on attachment 435022
Patch

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

&gt; Source/WTF/wtf/SuspendableWorkQueue.cpp:127
&gt; +        m_suspendFunction();

Why aren&apos;t we nulling out the suspend function right after calling it? e.g.
if (auto suspendFunction = std::exchange(m_suspendFunction, {}))
    suspendFunction();

It looks like we could simplify this function a bit:
{
    Locker suspensionLocker { m_suspensionLock };
    auto suspendFunction = std::exchange(m_suspendFunction, {});
    if (m_isOrWillBeSuspended)
        suspendFunction();
    invokeAllSuspensionCompletionHandlers();
    while (m_isOrWillBeSuspended)
        m_suspensionCondition.wait(m_suspensionLock);
}

&gt; Source/WebKit/NetworkProcess/WebStorage/LocalStorageNamespace.h:36
&gt; +class SuspendableWorkQueue;

You should consider adding this forward declaration to wtf/Forward.h with the adequate `using` statement so that you don&apos;t have to use `WTF::` prefix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783539</commentid>
    <comment_count>10</comment_count>
      <attachid>435358</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-08-11 09:50:25 -0700</bug_when>
    <thetext>Created attachment 435358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783629</commentid>
    <comment_count>11</comment_count>
      <attachid>435358</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-11 14:07:01 -0700</bug_when>
    <thetext>Comment on attachment 435358
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783657</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-11 15:26:06 -0700</bug_when>
    <thetext>Committed r280934 (240451@main): &lt;https://commits.webkit.org/240451@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 435358.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434852</attachid>
            <date>2021-08-03 12:29:32 -0700</date>
            <delta_ts>2021-08-03 13:54:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228748-20210803122931.patch</filename>
            <type>text/plain</type>
            <size>41375</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcyMGE4MzZiMWIyMTE1ZGNiYzQ0NmUz
MzdiYzhiYzU3ZjM0M2ZhNTcuLmQ0YjE5ZThlM2VlNDAzMjQyN2MzNTNlYjM3MjNlZGYwMTRmZmRi
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDgtMDMgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VzcGVuZCBXb3JrUXVldWUgb2YgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyBhbmQgTG9jYWxTdG9yYWdlIHNvb25lcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1dvcmtRdWV1
ZS5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKwogMjAyMS0wOC0wMiAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFlhcnIgc2hvdWxkIHVzZSBCaXRt
YXAgaW5zdGVhZCBvZiBCeXRlVmVjdG9yIGZvciBCb3llck1vb3JlIHNlYXJjaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA4NjNiZGQ1Njk1M2U4NTY2MTQyMDBjMjYyM2U5NGMzNWI0OGY1OTY2Li42MGEyZGFiNGQwODNh
Y2I2OTUyNTY3NDlhYzM0NjhkNGMxMGVhOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisy
MDIxLTA4LTAzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFN1
c3BlbmQgV29ya1F1ZXVlIG9mIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgYW5kIExvY2FsU3RvcmFn
ZSBzb29uZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyODc0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdoZW4gc3VzcGVuZGluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGFuZCBMb2NhbFN0b3JhZ2Us
IHdlIGRpc3BhdGNoZWQgYSBzdXNwZW5kIHRhc2ssIHdoaWNoIHdhaXRzIG9uIGEgCisgICAgICAg
IGNvbmRpdGlvbiwgdG8gdGhlaXIgV29ya1F1ZXVlLiBUaGF0IG1lYW5zIHRoZSBxdWV1ZSB3aWxs
IGJlIHN1c3BlbmRlZCBhZnRlciBjb21wbGV0aW5nIGFsbCB0YXNrcyBzY2hlZHVsZWQgCisgICAg
ICAgIGJlZm9yZSB0aGUgc3VzcGVuZCB0YXNrLiBUaGVzZSB0YXNrcyBtYXkgdGFrZSBhIGxvbmcg
dGltZSB0byBjb21wbGV0ZSBhbmQgYXNzZXJ0aW9uIG1heSBiZSB0aW1lZCBvdXQuCisKKyAgICAg
ICAgV2hlbiBuZXR3b3JrIHByb2Nlc3MgcmVjZWl2ZXMgUHJlcGFyZVRvU3VzcGVuZCBtZXNzYWdl
LCB3ZSB3YW50IHRoZSBxdWV1ZXMgdG8gc3VzcGVuZCBhcyBzb29uIGFzIHBvc3NpYmxlLiBUbyAK
KyAgICAgICAgYWNoaWV2ZSB0aGF0LCBub3cgd2UgY2hlY2sgaWYgdGhlIHF1ZXVlIG5lZWRzIHRv
IGJlIHN1c3BlbmRlZCBiZWZvcmUgZWFjaCB0YXNrLCB3aGljaCBlbnN1cmVzIHRoZSBxdWV1ZSAK
KyAgICAgICAgZXhlY3V0ZSBhcyBtb3N0IG9uZSB0YXNrIGFmdGVyIHN1c3BlbmQoKS4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6d29ya1F1ZXVlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNoYXJlZFN0
YXRpc3RpY3NRdWV1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6cmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6V1RGX0dVQVJERURfQllfTE9D
Syk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxT
dG9yYWdlRGF0YWJhc2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURh
dGFiYXNlOjpMb2NhbFN0b3JhZ2VEYXRhYmFzZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6Z2V0T3JD
cmVhdGVTdG9yYWdlQXJlYSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYTo6U3Rv
cmFnZUFyZWEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFy
ZWEuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUxvY2FsU3RvcmFn
ZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNpZW50
TG9jYWxTdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjcmVh
dGVTZXNzaW9uU3RvcmFnZUFyZWEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJT
ZXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJT
ZXQ6OnN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6cmVzdW1l
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0
Lmg6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpXVEZfR1VBUkRFRF9CWV9M
T0NLKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1RyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9UcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UuaDoKKwogMjAyMS0wOC0wMiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW21hY09TXSBSZW1vdmUgdW5uZWVkZWQgc2FuZGJveCBleHRlbnNpb24gbWVt
YmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3ZmQ0MDlm
YjU4YmZlOGUyZDdhNzIwMWNkNzJhMWQ2YTJjY2VjNzUxLi45NzExZGVkYmM0Y2VkY2VjNmNhMzcx
MjZkNjEyNDdiNzI5ZjFhZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTk4LDYgKzk4LDcgQEAKIAkJODM0OEJBMEUyMUZCQzBENTAwRkQzMDU0IC8qIE9i
amVjdElkZW50aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODM0OEJBMEQyMUZCQzBENDAwRkQzMDU0IC8qIE9iamVjdElkZW50aWZpZXIuY3Bw
ICovOyB9OwogCQk5MzkzNEJEMzE4QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5nVmlld0NvY29hLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MzRCRDIx
OEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdDb2NvYS5tbSAqLzsgfTsKIAkJOTM5MzRCRDUx
OEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkzNEJENDE4QTFGMTY5MDBEMEQ2QTEgLyogU3Ry
aW5nVmlld0NGLmNwcCAqLzsgfTsKKwkJOTNCMDdFRDgyNkI4NzE3MDAwQTA5QjM0IC8qIFN1c3Bl
bmRhYmxlV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzQjA3RUQ3MjZCODcxNUIwMEEwOUIzNCAvKiBTdXNwZW5kYWJsZVdvcmtRdWV1
ZS5jcHAgKi87IH07CiAJCTkzQjVCNDRFMjIxM0Q2MTYwMDRCN0FBNyAvKiBIZXhOdW1iZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNUI0NEQy
MjEzRDYxNjAwNEI3QUE3IC8qIEhleE51bWJlci5jcHAgKi87IH07CiAJCTkzQjVCNDUxMjIxNzFF
RUEwMDRCN0FBNyAvKiBMb2dnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNCNUI0NTAyMjE3MUVFOTAwNEI3QUE3IC8qIExvZ2dlci5jcHAgKi87
IH07CiAJCTkzRjE5OTNFMTlENzk1OEQwMEMyMzkwQiAvKiBTdHJpbmdWaWV3LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjE5OTNEMTlENzk1OEQw
MEMyMzkwQiAvKiBTdHJpbmdWaWV3LmNwcCAqLzsgfTsKQEAgLTQ5OSw2ICs1MDAsOCBAQAogCQk5
MzkzNEJEMjE4QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5nVmlld0NvY29hLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3RyaW5nVmlld0NvY29hLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkzNEJENDE4QTFGMTY5MDBEMEQ2QTEgLyogU3RyaW5n
Vmlld0NGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ1Zp
ZXdDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQUM5MUE3MTg5NDJGQzQw
MDI0NDkzOSAvKiBMQ2hhci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMQ2hh
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0IwN0VENjI2Qjg2QkI1MDBBMDlC
MzQgLyogU3VzcGVuZGFibGVXb3JrUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3VzcGVuZGFibGVX
b3JrUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCMDdFRDcyNkI4NzE1
QjAwQTA5QjM0IC8qIFN1c3BlbmRhYmxlV29ya1F1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFN1c3BlbmRhYmxlV29ya1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTNCNUI0NEQyMjEzRDYxNjAwNEI3QUE3IC8qIEhleE51bWJlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZXhOdW1iZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5M0I1QjQ1MDIyMTcxRUU5MDA0QjdBQTcgLyogTG9nZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvZ2dlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzRDAwMTdCMjY0REJBQ0YwMEJDRjEwOSAvKiBTdHJpbmdDb25jYXRl
bmF0ZUNGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0NvbmNhdGVu
YXRlQ0YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyOTIsNiArMTI5NSw4IEBA
CiAJCQkJQTc0ODc0NTExN0EwQkRBRTAwRkEwNENCIC8qIFN0cmluZ0hhc2hEdW1wQ29udGV4dC5o
ICovLAogCQkJCTBGRERCRkE1MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5j
cHAgKi8sCiAJCQkJMEZEREJGQTYxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFt
LmggKi8sCisJCQkJOTNCMDdFRDcyNkI4NzE1QjAwQTA5QjM0IC8qIFN1c3BlbmRhYmxlV29ya1F1
ZXVlLmNwcCAqLywKKwkJCQk5M0IwN0VENjI2Qjg2QkI1MDBBMDlCMzQgLyogU3VzcGVuZGFibGVX
b3JrUXVldWUuaCAqLywKIAkJCQk1NTk3RjgyQzFEOTRCOTk3MDA2NkJDMjEgLyogU3luY2hyb25p
emVkRml4ZWRRdWV1ZS5oICovLAogCQkJCUUzRTE1ODI1MUVBREE1M0MwMDRBMDc5RCAvKiBTeXN0
ZW1GcmVlLmggKi8sCiAJCQkJRTREMkFFNEQyNjhBNEM3RjAwREZFQTAyIC8qIFN5c3RlbU1hbGxv
Yy5oICovLApAQCAtMTgwMCw2ICsxODA1LDcgQEAKIAkJCQk5MzkzNEJENTE4QTFGMTY5MDBEMEQ2
QTEgLyogU3RyaW5nVmlld0NGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzOTM0QkQzMThBMUU4
QzMwMEQwRDZBMSAvKiBTdHJpbmdWaWV3Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEE0
NzNCNzE1MUE4MjVCMDA0MTIzRkYgLyogc3RydG9kLmNjIGluIFNvdXJjZXMgKi8sCisJCQkJOTNC
MDdFRDgyNkI4NzE3MDAwQTA5QjM0IC8qIFN1c3BlbmRhYmxlV29ya1F1ZXVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUyMTgzMDEyQzk5RTQ3NkE4NEVFQkVBOCAvKiBTeW1ib2xJbXBsLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTcwQTk5M0ZFMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdp
c3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFQjYxRURDNzI0MDlDQ0MxMDAxRUZFMzYgLyog
U3lzdGVtVHJhY2luZ0NvY29hLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApp
bmRleCAwZmEwOGI3ODdlMTZlMDUxOGNmYmQ4MWE3Y2U4MGZjYmJlZjc3NmMwLi5jYzQ3NGIwNjA5
NGI3MzRiOWFmODdiZjQ4MzNlMjc0ZThlY2U0YjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAt
MjYyLDYgKzI2Miw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBTdHJpbmdFeHRyYXMu
aAogICAgIFN0cmluZ0hhc2hEdW1wQ29udGV4dC5oCiAgICAgU3RyaW5nUHJpbnRTdHJlYW0uaAor
ICAgIFN1c3BlbmRhYmxlV29ya1F1ZXVlLmgKICAgICBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmgK
ICAgICBTeXN0ZW1GcmVlLmgKICAgICBTeXN0ZW1NYWxsb2MuaApAQCAtNDU1LDYgKzQ1Niw3IEBA
IHNldChXVEZfU09VUkNFUwogICAgIFN0YWNrU3RhdHMuY3BwCiAgICAgU3RhY2tUcmFjZS5jcHAK
ICAgICBTdHJpbmdQcmludFN0cmVhbS5jcHAKKyAgICBTdXNwZW5kYWJsZVdvcmtRdWV1ZS5jcHAK
ICAgICBUaHJlYWRHcm91cC5jcHAKICAgICBUaHJlYWRNZXNzYWdlLmNwcAogICAgIFRocmVhZGlu
Zy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dU
Ri93dGYvV29ya1F1ZXVlLmgKaW5kZXggY2RhMWQxODRhMWEzMTVkYTRjMzk0YjU3YzYwMzZlZGFj
OWQ2OTQ2YS4uZWJkZWZmNjIxYjBjMWViYzBkMDFlMGI4NjkzODU5MmY2ZTk5YjhiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dURi93dGYvV29y
a1F1ZXVlLmgKQEAgLTQxLDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLWNsYXNzIFdv
cmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgeworY2xhc3MgV29ya1F1
ZXVlIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAKIHB1YmxpYzoKICAgICBlbnVtIGNs
YXNzIFR5cGUgewpAQCAtNTMsOSArNTMsOSBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBXb3JrUXVldWUmIG1haW4oKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmPFdvcmtRdWV1ZT4gY3JlYXRlKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgPSBUeXBl
OjpTZXJpYWwsIFFPUyA9IFFPUzo6RGVmYXVsdCk7Ci0gICAgfldvcmtRdWV1ZSgpIGZpbmFsOwor
ICAgIH5Xb3JrUXVldWUoKSBvdmVycmlkZTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IGRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaEFmdGVyKFNlY29uZHMsIEZ1bmN0aW9uPHZvaWQo
KT4mJik7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2hTeW5jKEZ1bmN0aW9u
PHZvaWQoKT4mJik7CiAKQEAgLTY3LDkgKzY3LDEwIEBAIHB1YmxpYzoKICAgICBSdW5Mb29wJiBy
dW5Mb29wKCkgY29uc3QgeyByZXR1cm4gKm1fcnVuTG9vcDsgfQogI2VuZGlmCiAKLXByaXZhdGU6
Citwcm90ZWN0ZWQ6CiAgICAgV29ya1F1ZXVlKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUyk7
CiAKK3ByaXZhdGU6CiAgICAgc3RhdGljIFJlZjxXb3JrUXVldWU+IGNvbnN0cnVjdE1haW5Xb3Jr
UXVldWUoKTsKICNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKICAgICBleHBsaWNpdCBXb3JrUXVl
dWUoT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCAxZThlMjhiZGFl
OGYwMmU0MGZjYjRkMWE5YjU3MDJlYTVlZjFjMjA5Li5jMzQ4OGM5NDRmNDc1N2Q1MzY4ZDA1ZmMy
MmQxMWI2N2NlZmJlMTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlIDx3dGYv
Um9iaW5Ib29kSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRTZXQuaD4KKyNpbmNsdWRlIDx3dGYvU3VzcGVuZGFibGVXb3JrUXVldWUuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
MzQ2LDcgKzM0Nyw3IEBAIEhhc2hTZXQ8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUqPiYgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvCiAgICAgcmV0dXJuIG1hcDsK
IH0KIAotUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgc3Rv
cmUsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0IHNob3VsZElu
Y2x1ZGVMb2NhbGhvc3QsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeVBhdGgsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKK1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZShXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUmIHN0b3JlLCBXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlJiB3b3JrUXVldWUs
IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgY29uc3QgU3Ry
aW5nJiBzdG9yYWdlRGlyZWN0b3J5UGF0aCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAg
IDogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHN0b3JlLCB3b3JrUXVldWUsIHNob3VsZElu
Y2x1ZGVMb2NhbGhvc3QpCiAgICAgLCBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5UGF0aCwgIm9ic2VydmF0
aW9ucy5kYiJfcykpCiAgICAgLCBtX3RyYW5zYWN0aW9uKG1fZGF0YWJhc2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IGVhNmI1
ODdkMWNlMTcwM2UwMzA4YjdjMWFkZmE5NDY3YzA4MDMwMTEuLmQ0NzA2OWJiNjExYjQ5Zjg4Mzgy
Y2IzMjcyMzRjYTFmOWZmNGQwM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC0zOCw3ICszOCwxMCBAQAogI2luY2x1ZGUgPHd0
Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+Ci0jaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNz
IFN1c3BlbmRhYmxlV29ya1F1ZXVlOworfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBT
UUxpdGVEYXRhYmFzZTsKQEAgLTc2LDcgKzc5LDcgQEAgdHlwZWRlZiBzdGQ6OnBhaXI8U3RyaW5n
LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+IFRhYmxlQW5kSW5kZXhQYWlyOwogLy8gVGhpcyBpcyBh
bHdheXMgY29uc3RydWN0ZWQgLyB1c2VkIC8gZGVzdHJveWVkIG9uIHRoZSBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUncyBzdGF0aXN0aWNzIHF1ZXVlLgogY2xhc3MgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUgZmluYWwgOiBwdWJsaWMgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlIHsKIHB1YmxpYzoKLSAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmLCBXb3JrUXVldWUmLCBTaG91bGRJ
bmNsdWRlTG9jYWxob3N0LCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQYXRoLCBQQUw6
OlNlc3Npb25JRCk7CisgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiwgV1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZSYs
IFNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeVBh
dGgsIFBBTDo6U2Vzc2lvbklEKTsKICAgICB+UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUoKTsKIAogICAgIHN0YXRpYyBIYXNoU2V0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlKj4mIGFsbFN0b3JlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCBhZDRhM2JiNDdlMGNmYTI3Mjk3NmFjMzFk
NDgxZTU1MDFkZjY0MWNiLi4zNTQ2MmFjNzg1OTdiOWU4MmI5ZDE3NDRmNzE3NjY2ZWJhMTI1YThj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmNwcApAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgdm9pZCBwcnVuZVJlc291cmNlcyhIYXNoTWFw
PFJlZ2lzdHJhYmxlRG9tYWluLCBVbmlxdWVSZWY8UmVzb3VyY2VMb2FkU3RhdAogICAgICAgICBz
dGF0aXN0aWNzTWFwLnJlbW92ZShzdGF0aXN0aWNzVG9QcnVuZVtpXS5kb21haW4pOwogfQogCi1S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIHN0b3JlLCBXb3JrUXVl
dWUmIHdvcmtRdWV1ZSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxo
b3N0KQorUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSwg
V1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZSYgd29ya1F1ZXVlLCBTaG91bGRJbmNsdWRlTG9jYWxo
b3N0IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpCiAgICAgOiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUoc3RvcmUsIHdvcmtRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCkKIHsKICAgICBS
RUxFQVNFX0FTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCmluZGV4IDQ5ZDNkODIzMjkxNTU1YzY0YjA0
NGJmODIzZDNiMDJhNmEzZmVlN2IuLjEyM2ZkOWI2YzgwZjg1ZDcwZTY4Y2VmMjg3ZDdlNmE1Nzcy
MTgwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KLSNp
bmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEtl
eWVkRGVjb2RlcjsKQEAgLTQ3LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAvLyBUaGlz
IGlzIGFsd2F5cyBjb25zdHJ1Y3RlZCAvIHVzZWQgLyBkZXN0cm95ZWQgb24gdGhlIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSdzIHN0YXRpc3RpY3MgcXVldWUuCiBjbGFzcyBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUgZmluYWwgOiBwdWJsaWMgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlIHsKIHB1YmxpYzoKLSAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmUoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiwgV29ya1F1ZXVlJiwgU2hvdWxk
SW5jbHVkZUxvY2FsaG9zdCk7CisgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
KFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYsIFdURjo6U3VzcGVuZGFibGVXb3JrUXVl
dWUmLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKIAogICAgIHZvaWQgY2xlYXIoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5k
ZXggYmYxYzc1MzdiYjM0M2NlMTRhMWNjYzk3Nzg0NTlhNDUzZjJlZTk0OC4uZjYyZjdmNzMwMmRk
NDkwMTI1NTRkYjU0ODU0Mzc1MDEzN2NjMzdjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBib29sIE9wZXJhdGluZ0Rh
dGU6Om9wZXJhdG9yPD0oY29uc3QgT3BlcmF0aW5nRGF0ZSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0
dXJuIHNlY29uZHNTaW5jZUVwb2NoKCkgPD0gb3RoZXIuc2Vjb25kc1NpbmNlRXBvY2goKTsKIH0K
IAotUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSwgV29ya1F1ZXVlJiB3b3Jr
UXVldWUsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCkKK1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgc3RvcmUsIFdURjo6U3VzcGVuZGFibGVXb3Jr
UXVldWUmIHdvcmtRdWV1ZSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9j
YWxob3N0KQogICAgIDogbV9zdG9yZShzdG9yZSkKICAgICAsIG1fd29ya1F1ZXVlKHdvcmtRdWV1
ZSkKICAgICAsIG1fc2hvdWxkSW5jbHVkZUxvY2FsaG9zdChzaG91bGRJbmNsdWRlTG9jYWxob3N0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDZhNTYwNTZj
YzU5NDYyODQyMWNmY2NhOGZmZDkxNTY1ZjhhYTg2NTcuLjQ4N2FjMDFkZWM4NmU1NzBjMDNhYjZj
NTgwODZkOGY2YThmMmMzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgKQEAgLTM0LDEyICszNCwxNSBAQAogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgot
I2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogI2lmIEhBVkUoQ09SRV9QUkVESUNUSU9OKQog
I2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuaCIKICNlbmRp
ZgogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN1c3BlbmRhYmxlV29ya1F1ZXVlOworfQorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBLZXllZERlY29kZXI7CiBjbGFzcyBLZXllZEVuY29k
ZXI7CkBAIC0yMTcsNyArMjIwLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIHN0YXRpYyB1
bnNpZ25lZCBjb21wdXRlSW1wb3J0YW5jZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzJik7CiAKLSAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlJiwgV29ya1F1ZXVlJiwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7
CisgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSYsIFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWUmLCBTaG91bGRJbmNsdWRlTG9jYWxo
b3N0KTsKICAgICAKICAgICBib29sIGRhdGFSZWNvcmRzQmVpbmdSZW1vdmVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZDsgfQogCkBAIC0yMjgsNyArMjMxLDcgQEAg
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBwcnVuZVN0YXRpc3RpY3NJZk5lZWRlZCgpID0g
MDsKIAogICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgc3RvcmUoKSB7IHJldHVy
biBtX3N0b3JlOyB9Ci0gICAgUmVmPFdvcmtRdWV1ZT4mIHdvcmtRdWV1ZSgpIHsgcmV0dXJuIG1f
d29ya1F1ZXVlOyB9CisgICAgUmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+JiB3b3JrUXVl
dWUoKSB7IHJldHVybiBtX3dvcmtRdWV1ZTsgfQogI2lmIEhBVkUoQ09SRV9QUkVESUNUSU9OKQog
ICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EmIGNsYXNzaWZpZXIoKSB7
IHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyOyB9CiAjZWxzZQpAQCAt
Mjc4LDcgKzI4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVDbGllbnRTaWRlQ29va2ll
c0FnZUNhcCgpOwogCiAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBtX3N0b3Jl
OwotICAgIFJlZjxXb3JrUXVldWU+IG1fd29ya1F1ZXVlOworICAgIFJlZjxXVEY6OlN1c3BlbmRh
YmxlV29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsKICNpZiBIQVZFKENPUkVfUFJFRElDVElPTikKICAg
ICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hIG1fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0NsYXNzaWZpZXI7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA0ZjgwNzUxZGYwMDMwZjZjZjI5OGQwNGRkNzAwZDk3
ZTNmYjI5ZTFlLi45MGY4MDI2YmZmNjVlMmQwMGMyZjJiMjQ4NmJhZGFjMjE2ODBjYzcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtNTks
MTEgKzU5LDYgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLXN0YXRpYyBMb2NrIGdsb2JhbFN1c3BlbnNpb25Mb2NrOwotc3RhdGljIENvbmRpdGlvbiBn
bG9iYWxTdXNwZW5zaW9uQ29uZGl0aW9uOwotc3RhdGljIGJvb2wgZ2xvYmFsU2hvdWxkU3VzcGVu
ZCBXVEZfR1VBUkRFRF9CWV9MT0NLKGdsb2JhbFN1c3BlbnNpb25Mb2NrKSB7IGZhbHNlIH07Ci1z
dGF0aWMgdWludDY0X3QgZ2xvYmFsU3VzcGVuc2lvbklkZW50aWZpZXIgV1RGX0dVQVJERURfQllf
TE9DSyhnbG9iYWxTdXNwZW5zaW9uTG9jaykgeyAwIH07Ci0KIGNvbnN0IE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+JiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0b3JlZERh
dGFUeXBlcygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+PiBkYXRhVHlwZXMoc3RkOjppbml0aWFsaXplcl9saXN0PFdlYnNpdGVEYXRhVHlw
ZT4oewpAQCAtMTQ3LDkgKzE0Miw5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzCiAgICAgfSk7
CiB9CiAKLXN0YXRpYyBSZWY8V29ya1F1ZXVlPiBzaGFyZWRTdGF0aXN0aWNzUXVldWUoKQorc3Rh
dGljIFJlZjxXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlPiBzaGFyZWRTdGF0aXN0aWNzUXVldWUo
KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWY8V29ya1F1ZXVlPj4gcXVldWUoV29y
a1F1ZXVlOjpjcmVhdGUoIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBQcm9jZXNzIERh
dGEgUXVldWUiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OlV0aWxp
dHkpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdURjo6U3VzcGVuZGFibGVXb3Jr
UXVldWU+PiBxdWV1ZShXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlOjpjcmVhdGUoIldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBQcm9jZXNzIERhdGEgUXVldWUiLCAgV29ya1F1ZXVlOjpU
eXBlOjpTZXJpYWwsIFdvcmtRdWV1ZTo6UU9TOjpVdGlsaXR5KSk7CiAgICAgcmV0dXJuIHF1ZXVl
LmdldCgpLmNvcHlSZWYoKTsKIH0KIApAQCAtMTQ0OCwzMyArMTQ0MywxOSBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKENvbXBs
ZXRpb25IYW5kbGVyPAogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3Vz
cGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgTG9ja2VyIHN1c3BlbnNpb25Mb2NrZXIgeyBnbG9iYWxTdXNwZW5zaW9uTG9jayB9OwotICAg
IGdsb2JhbFNob3VsZFN1c3BlbmQgPSB0cnVlOwotCi0gICAgc2hhcmVkU3RhdGlzdGljc1F1ZXVl
KCktPmRpc3BhdGNoKFtzdXNwZW5zaW9uSWRlbnRpZmllciA9ICsrZ2xvYmFsU3VzcGVuc2lvbklk
ZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
ICgpIG11dGFibGUgewotICAgICAgICBMb2NrZXIgc3VzcGVuc2lvbkxvY2tlciB7IGdsb2JhbFN1
c3BlbnNpb25Mb2NrIH07Ci0gICAgICAgIGlmICghZ2xvYmFsU2hvdWxkU3VzcGVuZCB8fCBzdXNw
ZW5zaW9uSWRlbnRpZmllciAhPSBnbG9iYWxTdXNwZW5zaW9uSWRlbnRpZmllcikgewotICAgICAg
ICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
CisgICAgc2hhcmVkU3RhdGlzdGljc1F1ZXVlKCktPnN1c3BlbmQoW10oKSBtdXRhYmxlIHsKICAg
ICAgICAgZm9yIChhdXRvJiBkYXRhYmFzZVN0b3JlIDogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmFsbFN0b3JlcygpKQogICAgICAgICAgICAgZGF0YWJhc2VTdG9yZS0+aW50
ZXJydXB0KCk7Ci0KLSAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Ci0KLSAgICAgICAgd2hpbGUgKGdsb2JhbFNob3VsZFN1c3BlbmQpCi0gICAgICAgICAg
ICBnbG9iYWxTdXNwZW5zaW9uQ29uZGl0aW9uLndhaXQoZ2xvYmFsU3VzcGVuc2lvbkxvY2spOwot
ICAgIH0pOworICAgIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc3VtZSgpCiB7CiAgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tlciBzdXNwZW5zaW9uTG9ja2VyIHsgZ2xvYmFs
U3VzcGVuc2lvbkxvY2sgfTsKLSAgICBnbG9iYWxTaG91bGRTdXNwZW5kID0gZmFsc2U7Ci0gICAg
Z2xvYmFsU3VzcGVuc2lvbkNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICBzaGFyZWRTdGF0aXN0
aWNzUXVldWUoKS0+cmVzdW1lKCk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZG9tYWluLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGJv
b2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0
YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaAppbmRleCAwYjI2MTA0ZmUyMGU5OTZmY2JlZTQxZGY3ZGEyNjlhMDU2YjA5NDM4Li43
MjYwMzg5MzYzMDEwYWM0MDFlYzY5MzM1N2ZiNGY5Y2EyMTNmMTQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC01MSw3ICs1MSw3IEBACiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXVEYgewotY2xhc3MgV29y
a1F1ZXVlOworY2xhc3MgU3VzcGVuZGFibGVXb3JrUXVldWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTE0NCw3ICsxNDQsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4mIG1vbml0b3JlZERhdGFUeXBlcygpOwogCi0gICAgV1RG
OjpXb3JrUXVldWUmIHN0YXRpc3RpY3NRdWV1ZSgpIHsgcmV0dXJuIG1fc3RhdGlzdGljc1F1ZXVl
LmdldCgpOyB9CisgICAgV1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZSYgc3RhdGlzdGljc1F1ZXVl
KCkgeyByZXR1cm4gbV9zdGF0aXN0aWNzUXVldWUuZ2V0KCk7IH0KIAogICAgIHZvaWQgcG9wdWxh
dGVNZW1vcnlTdG9yZUZyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wpOwpAQCAt
Mjc2LDcgKzI3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICBXZWFrUHRy
PE5ldHdvcmtTZXNzaW9uPiBtX25ldHdvcmtTZXNzaW9uOwotICAgIFJlZjxXVEY6OldvcmtRdWV1
ZT4gbV9zdGF0aXN0aWNzUXVldWU7CisgICAgUmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+
IG1fc3RhdGlzdGljc1F1ZXVlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU+IG1fc3RhdGlzdGljc1N0b3JlOwogCiAgICAgUnVuTG9vcDo6VGltZXI8V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBtX2RhaWx5VGFza3NUaW1lcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VE
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2UuY3BwCmluZGV4IDU2OWZkYjJkZjhmNTNlYWJjZjE5MTgxMjQzMGFi
NmZkYTY4MDI1NDAuLmQ1MjVlZjY5MjM5ZmU3ODhhMThkMzYzNDE0YThmYzRlNzVlZGMzNWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0
b3JhZ2VEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVlLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC00MiwxMiAr
NDMsMTIgQEAgY29uc3RleHByIGF1dG8gZ2V0SXRlbXNRdWVyeVN0cmluZyB7ICJTRUxFQ1Qga2V5
LCB2YWx1ZSBGUk9NIEl0ZW1UYWJsZSJfcyB9OwogY29uc3RleHByIHVuc2lnbmVkIG1heGltdW1T
aXplRm9yVmFsdWVzS2VwdEluTWVtb3J5IHsgMTAyNCB9OyAvLyAxIEtCCiBjb25zdGV4cHIgU2Vj
b25kcyB0cmFuc2FjdGlvbkR1cmF0aW9uIHsgNTAwX21zIH07CiAKLVJlZjxMb2NhbFN0b3JhZ2VE
YXRhYmFzZT4gTG9jYWxTdG9yYWdlRGF0YWJhc2U6OmNyZWF0ZShSZWY8V29ya1F1ZXVlPiYmIHdv
cmtRdWV1ZSwgU3RyaW5nJiYgZGF0YWJhc2VQYXRoLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCitS
ZWY8TG9jYWxTdG9yYWdlRGF0YWJhc2U+IExvY2FsU3RvcmFnZURhdGFiYXNlOjpjcmVhdGUoUmVm
PFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+JiYgd29ya1F1ZXVlLCBTdHJpbmcmJiBkYXRhYmFz
ZVBhdGgsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBMb2NhbFN0b3JhZ2VEYXRhYmFzZShXVEZNb3ZlKHdvcmtRdWV1ZSksIFdURk1vdmUoZGF0YWJh
c2VQYXRoKSwgcXVvdGFJbkJ5dGVzKSk7CiB9CiAKLUxvY2FsU3RvcmFnZURhdGFiYXNlOjpMb2Nh
bFN0b3JhZ2VEYXRhYmFzZShSZWY8V29ya1F1ZXVlPiYmIHdvcmtRdWV1ZSwgU3RyaW5nJiYgZGF0
YWJhc2VQYXRoLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCitMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6
TG9jYWxTdG9yYWdlRGF0YWJhc2UoUmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+JiYgd29y
a1F1ZXVlLCBTdHJpbmcmJiBkYXRhYmFzZVBhdGgsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKICAg
ICA6IG1fd29ya1F1ZXVlKFdURk1vdmUod29ya1F1ZXVlKSkKICAgICAsIG1fZGF0YWJhc2VQYXRo
KFdURk1vdmUoZGF0YWJhc2VQYXRoKSkKICAgICAsIG1fcXVvdGFJbkJ5dGVzKHF1b3RhSW5CeXRl
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmgKaW5kZXggNmQ2NjQ2MWU4MDUyNDhlZGMyMTM0
YWQxMDU2YjViZWI4Yzk3ZGJkMS4uNjNmMDhkZmFiZjA3YzJjM2UyMWFlNTI3OTNhN2E3NTAyYTVm
MzdkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L0xvY2FsU3RvcmFnZURhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmgKQEAgLTI4LDcgKzI4LDEwIEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KLSNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+
CisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3VzcGVuZGFibGVXb3JrUXVldWU7Cit9CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlOwpA
QCAtNDEsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTG9jYWxTdG9yYWdl
RGF0YWJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxMb2NhbFN0b3JhZ2VEYXRhYmFzZT4sIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxMb2NhbFN0b3JhZ2VEYXRhYmFzZT4gewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8TG9jYWxTdG9yYWdlRGF0YWJhc2U+IGNyZWF0ZShSZWY8V29ya1F1ZXVlPiYmLCBT
dHJpbmcmJiBkYXRhYmFzZVBhdGgsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGlj
IFJlZjxMb2NhbFN0b3JhZ2VEYXRhYmFzZT4gY3JlYXRlKFJlZjxXVEY6OlN1c3BlbmRhYmxlV29y
a1F1ZXVlPiYmLCBTdHJpbmcmJiBkYXRhYmFzZVBhdGgsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7
CiAgICAgfkxvY2FsU3RvcmFnZURhdGFiYXNlKCk7CiAKICAgICBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBpdGVtcygpIGNvbnN0OwpAQCAtNTgsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBo
YW5kbGVMb3dNZW1vcnlXYXJuaW5nKCk7CiAKIHByaXZhdGU6Ci0gICAgTG9jYWxTdG9yYWdlRGF0
YWJhc2UoUmVmPFdvcmtRdWV1ZT4mJiwgU3RyaW5nJiYgZGF0YWJhc2VQYXRoLCB1bnNpZ25lZCBx
dW90YUluQnl0ZXMpOworICAgIExvY2FsU3RvcmFnZURhdGFiYXNlKFJlZjxXVEY6OlN1c3BlbmRh
YmxlV29ya1F1ZXVlPiYmLCBTdHJpbmcmJiBkYXRhYmFzZVBhdGgsIHVuc2lnbmVkIHF1b3RhSW5C
eXRlcyk7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZENyZWF0ZURhdGFiYXNlIDogYm9vbCB7IE5v
LCBZZXMgfTsKICAgICBib29sIG9wZW5EYXRhYmFzZShTaG91bGRDcmVhdGVEYXRhYmFzZSk7CkBA
IC03MSw3ICs3NCw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnRB
dXRvUmVzZXRTY29wZSBzY29wZWRTdGF0ZW1lbnQoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNR
TGl0ZVN0YXRlbWVudD4mLCBBU0NJSUxpdGVyYWwgcXVlcnkpIGNvbnN0OwogCi0gICAgUmVmPFdv
cmtRdWV1ZT4gbV93b3JrUXVldWU7CisgICAgUmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+
IG1fd29ya1F1ZXVlOwogICAgIFN0cmluZyBtX2RhdGFiYXNlUGF0aDsKICAgICBtdXRhYmxlIFdl
YkNvcmU6OlNRTGl0ZURhdGFiYXNlIG1fZGF0YWJhc2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFj
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9y
YWdlTmFtZXNwYWNlLmNwcAppbmRleCA2MDE1M2JmN2Q2YjA3ZjU4ZTBlYTE1OTVhMTRmYzhjODEz
NTNjMTQ5Li40ZDExOWM2ZTE2NTYzMTg2Y2RlNzEyY2YwZGMyZWViZGNkMGNkZDQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdl
TmFtZXNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2U6On5Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UoKQogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogfQogCi1TdG9yYWdlQXJlYSYgTG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpn
ZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2lu
LCBJc0VwaGVtZXJhbCBpc0VwaGVtZXJhbCwgUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCitT
dG9yYWdlQXJlYSYgTG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVh
KFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luLCBJc0VwaGVtZXJhbCBpc0VwaGVt
ZXJhbCwgUmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+JiYgd29ya1F1ZXVlKQogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIHJldHVybiAqbV9zdG9yYWdlQXJlYU1h
cC5lbnN1cmUoc2VjdXJpdHlPcmlnaW4sIFsmXSgpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFj
ZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZU5hbWVzcGFjZS5oCmluZGV4IGFkY2E5ZjRhMjU1ZjU4ZTIxMDZkZDZhNGVjZWFkZGZmZjI0NTFh
YzMuLjVlMDczNDk3YTIxODg0MGJhYmU2NGIxYjBmODlmOWYwMzM2Y2I0MTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1l
c3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9j
YWxTdG9yYWdlTmFtZXNwYWNlLmgKQEAgLTMxLDcgKzMxLDEwIEBACiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNz
IFN1c3BlbmRhYmxlV29ya1F1ZXVlOworfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDgs
NyArNTEsNyBAQCBwdWJsaWM6CiAgICAgU3RvcmFnZU1hbmFnZXIqIHN0b3JhZ2VNYW5hZ2VyKCkg
Y29uc3QgeyByZXR1cm4gJm1fc3RvcmFnZU1hbmFnZXI7IH0KIAogICAgIGVudW0gY2xhc3MgSXNF
cGhlbWVyYWwgOiBib29sIHsgTm8sIFllcyB9OwotICAgIFN0b3JhZ2VBcmVhJiBnZXRPckNyZWF0
ZVN0b3JhZ2VBcmVhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBJc0VwaGVtZXJhbCwg
UmVmPFdvcmtRdWV1ZT4mJik7CisgICAgU3RvcmFnZUFyZWEmIGdldE9yQ3JlYXRlU3RvcmFnZUFy
ZWEoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIElzRXBoZW1lcmFsLCBSZWY8V1RGOjpT
dXNwZW5kYWJsZVdvcmtRdWV1ZT4mJik7CiAKICAgICB2b2lkIGNsZWFyU3RvcmFnZUFyZWFzTWF0
Y2hpbmdPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJik7CiAgICAgdm9p
ZCBjbGVhckFsbFN0b3JhZ2VBcmVhcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZS5jcHAKaW5kZXggNmM2YThhMjlhNmZiOTAwOTg1ZDE1MzkxNWM1ZjkyMTc3YWM1NGNiYS4uMTRj
NmQ3ZjY3ODRlMTExYmVjZTgxYTc2ZDUxZGEzOGY2ZDkzOTIxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UuY3BwCkBAIC00Myw3ICs0Myw3IEBAIFNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlOjp+U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoKQogICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwogfQogCi1TdG9yYWdlQXJlYSYgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6Omdl
dE9yQ3JlYXRlU3RvcmFnZUFyZWEoU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4s
IFJlZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlKQorU3RvcmFnZUFyZWEmIFNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNl
Y3VyaXR5T3JpZ2luLCBSZWY8V1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZT4mJiB3b3JrUXVldWUp
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgcmV0dXJuICptX3N0b3Jh
Z2VBcmVhTWFwLmVuc3VyZShzZWN1cml0eU9yaWdpbiwgWyZdKCkgbXV0YWJsZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5oCmluZGV4IGY1NTNmNGMyY2FlMTgxMDJlNjNmMjU1MDYz
ZmUzMzBiMDNmZjlmMWUuLjc1YzRlNDhlYmYwOTEzZWRkOGU4YjJmODE1ODAyYzE0YTFkYTNjMTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5oCkBAIC0zMSw2ICszMSwxMSBAQAog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCitu
YW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN1c3BlbmRhYmxlV29ya1F1ZXVlOworfQorCisKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBTdG9yYWdlQXJlYTsKQEAgLTQ0LDcgKzQ5LDcgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlQXJlYU1h
cC5pc0VtcHR5KCk7IH0KIAotICAgIFN0b3JhZ2VBcmVhJiBnZXRPckNyZWF0ZVN0b3JhZ2VBcmVh
KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBSZWY8V29ya1F1ZXVlPiYmKTsKKyAgICBT
dG9yYWdlQXJlYSYgZ2V0T3JDcmVhdGVTdG9yYWdlQXJlYShXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiwgUmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+JiYpOwogCiAgICAgdm9pZCBj
bG9uZVRvKFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlJiBuZXdTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZUFyZWEuY3BwCmluZGV4IDgzMTk0YjA1ZmI0ZWUxMTc3N2RkZjEwYWVkMjc4ZjYw
YzBiOTk4MmMuLjVlMDAyYzk5NTExN2JlMzMyNzQyNzMxMTBkMjBhMzlkOGM2MThlN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhLmNwcApAQCAtMzAsMTIgKzMwLDEzIEBACiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5jbHVkZSA8d3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVlLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotU3Rv
cmFnZUFyZWE6OlN0b3JhZ2VBcmVhKExvY2FsU3RvcmFnZU5hbWVzcGFjZSogbG9jYWxTdG9yYWdl
TmFtZXNwYWNlLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCB1bnNp
Z25lZCBxdW90YUluQnl0ZXMsIFJlZjxXb3JrUXVldWU+JiYgcXVldWUpCitTdG9yYWdlQXJlYTo6
U3RvcmFnZUFyZWEoTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2Us
IGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIHVuc2lnbmVkIHF1b3Rh
SW5CeXRlcywgUmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+JiYgcXVldWUpCiAgICAgOiBt
X2xvY2FsU3RvcmFnZU5hbWVzcGFjZShtYWtlV2Vha1B0cihsb2NhbFN0b3JhZ2VOYW1lc3BhY2Up
KQogICAgICwgbV9zZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikKICAgICAsIG1fcXVvdGFJ
bkJ5dGVzKHF1b3RhSW5CeXRlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmgKaW5kZXggOWM3MTU3MDJkYmU2OWI3ZjMzYzdj
MzFiZTQ1Nzc5YjMyZWE5NmEzNC4uM2U4YWU5ZTcxZjQ0YjcxMWUzNDE4OGRlN2VmMzlkNjFlNzAw
MjJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhLmgKQEAgLTMzLDYgKzMzLDEwIEBACiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNz
IFN1c3BlbmRhYmxlV29ya1F1ZXVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBT
dG9yYWdlTWFwOwogfQpAQCAtNDgsNyArNTIsNyBAQCBjbGFzcyBTdG9yYWdlQXJlYSA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxTdG9yYWdlQXJlYT4gewogcHVibGljOgogICAgIHVzaW5nIElkZW50
aWZpZXIgPSBTdG9yYWdlQXJlYUlkZW50aWZpZXI7CiAgICAgCi0gICAgU3RvcmFnZUFyZWEoTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwg
dW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBSZWY8V29ya1F1ZXVlPiYmKTsKKyAgICBTdG9yYWdlQXJl
YShMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFJlZjxXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVl
PiYmKTsKICAgICB+U3RvcmFnZUFyZWEoKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlY3VyaXR5T3Jp
Z2luOyB9CkBAIC05MCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxJUEM6OkNvbm5l
Y3Rpb246OlVuaXF1ZUlEPiBtX2V2ZW50TGlzdGVuZXJzOwogCiAgICAgSWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7Ci0gICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKKyAgICBSZWY8V1RGOjpTdXNw
ZW5kYWJsZVdvcmtRdWV1ZT4gbV9xdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlci5jcHAKaW5kZXggNWJjY2EyOTliYTQxNWUzOWMwMjg0NTk5N2U1ODA2YjI4
NDZkYTkzYy4uYTEzNmJkMGFmOGM4NmYzNTdjZjM2Yzc3Y2VlZTgxMzdlMzBmZGM5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZU1hbmFnZXIuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2lu
Y2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CisjaW5jbHVkZSA8d3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3Rm
L1dvcmtRdWV1ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTIxMSw3ICsyMTIsNyBAQCB2
b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhj
b25zdCBWZWN0b3I8U2VjdXJpdHlPcgogICAgIH0KIH0KIAotU3RvcmFnZUFyZWEqIFN0b3JhZ2VN
YW5hZ2VyOjpjcmVhdGVMb2NhbFN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVy
IHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luLCBSZWY8V29y
a1F1ZXVlPiYmIHdvcmtRdWV1ZSkKK1N0b3JhZ2VBcmVhKiBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRl
TG9jYWxTdG9yYWdlQXJlYShTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNw
YWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbiwgUmVmPFdURjo6U3VzcGVuZGFibGVX
b3JrUXVldWU+JiYgd29ya1F1ZXVlKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCkBAIC0yMjEsNyArMjIyLDcgQEAgU3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpjcmVh
dGVMb2NhbFN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHMKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotU3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVUcmFu
c2llbnRMb2NhbFN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VO
YW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wTGV2ZWxPcmlnaW4sIFNlY3VyaXR5
T3JpZ2luRGF0YSYmIG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCitTdG9yYWdl
QXJlYSogU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoU3Rv
cmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdp
bkRhdGEmJiB0b3BMZXZlbE9yaWdpbiwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luLCBSZWY8
V1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCiB7CiAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKChIYXNoTWFwPFN0b3JhZ2VOYW1lc3BhY2VJ
ZGVudGlmaWVyLCBSZWZQdHI8VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlPj46OmlzVmFs
aWRLZXkoc3RvcmFnZU5hbWVzcGFjZUlEKSkpOwpAQCAtMjMyLDcgKzIzMyw3IEBAIFN0b3JhZ2VB
cmVhKiBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShTdG9y
YWdlTmFtZXNwYWNlSWRlCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVN0b3JhZ2VBcmVhKiBT
dG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJ
ZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2lu
LCBSZWY8V29ya1F1ZXVlPiYmIHdvcmtRdWV1ZSkKK1N0b3JhZ2VBcmVhKiBTdG9yYWdlTWFuYWdl
cjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0
b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luLCBSZWY8V1RGOjpT
dXNwZW5kYWJsZVdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAgICAgQVNTRVJUKChIYXNoTWFwPFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyLCBSZWZQdHI8U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+Pjo6aXNWYWxpZEtleShzdG9yYWdl
TmFtZXNwYWNlSUQpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCmluZGV4IDBkNmU3YWVkZmY2ODIyN2JmN2Rj
OGFiNzE4NGFiYzZmZDMzMjFjNTQuLmY2YjJiNGNlZjkyZWMxNmI3MjEzYmI2Zjk1YmEzM2ZiYmIy
Y2FjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCkBAIC0zNSw2ICszNSwxMCBAQAogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCituYW1lc3Bh
Y2UgV1RGIHsKK2NsYXNzIFN1c3BlbmRhYmxlV29ya1F1ZXVlOworfQorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIH0KQEAgLTgwLDkgKzg0LDkgQEAgcHVibGlj
OgogICAgIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVF1
b3RhSW5CeXRlczsKIAotICAgIFN0b3JhZ2VBcmVhKiBjcmVhdGVMb2NhbFN0b3JhZ2VBcmVhKFN0
b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwg
UmVmPFdvcmtRdWV1ZT4mJik7Ci0gICAgU3RvcmFnZUFyZWEqIGNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZUFyZWEoU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgUmVmPFdvcmtRdWV1
ZT4mJik7Ci0gICAgU3RvcmFnZUFyZWEqIGNyZWF0ZVNlc3Npb25TdG9yYWdlQXJlYShTdG9yYWdl
TmFtZXNwYWNlSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFJlZjxX
b3JrUXVldWU+JiYpOworICAgIFN0b3JhZ2VBcmVhKiBjcmVhdGVMb2NhbFN0b3JhZ2VBcmVhKFN0
b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwg
UmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+JiYpOworICAgIFN0b3JhZ2VBcmVhKiBjcmVh
dGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiYsIFJlZjxXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlPiYmKTsKKyAgICBTdG9yYWdlQXJlYSog
Y3JlYXRlU2Vzc2lvblN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgUmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+
JiYpOwogCiAgICAgVmVjdG9yPFN0b3JhZ2VBcmVhSWRlbnRpZmllcj4gYWxsU3RvcmFnZUFyZWFJ
ZGVudGlmaWVycygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcAppbmRleCAzNmFi
ZWE1MDUwYjg0YjE4YzkyMjcxNTY2OWI3OTIzYTA4ZGNhZGZmLi43Mzg4YTlhNDJmOGZhM2JhMzMx
NzUyZmRmMzZmODdlMzU0NDA4MDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgUmVmPFN0b3JhZ2VNYW5hZ2VyU2V0PiBTdG9yYWdlTWFuYWdlclNldDo6Y3Jl
YXRlKCkKIH0KIAogU3RvcmFnZU1hbmFnZXJTZXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0KCkKLSAgICA6
IG1fcXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuV2ViU3RvcmFnZSIp
KQorICAgIDogbV9xdWV1ZShXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5h
cHBsZS5XZWJLaXQuV2ViU3RvcmFnZSIpKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAKQEAgLTE3NywzNCArMTc3LDE2IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OnN1c3Bl
bmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrZXIgc3VzcGVuc2lvbkxvY2tl
ciB7IG1fc3VzcGVuc2lvbkxvY2sgfTsKLSAgICBtX3Nob3VsZFN1c3BlbmQgPSB0cnVlOwotCi0g
ICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgc3VzcGVuc2lvbklkZW50aWZpZXIgPSArK21fc3VzcGVuc2lvbklkZW50aWZpZXIsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewot
ICAgICAgICBMb2NrZXIgc3VzcGVuc2lvbkxvY2tlciB7IG1fc3VzcGVuc2lvbkxvY2sgfTsKLSAg
ICAgICAgaWYgKCFtX3Nob3VsZFN1c3BlbmQgfHwgc3VzcGVuc2lvbklkZW50aWZpZXIgIT0gbV9z
dXNwZW5zaW9uSWRlbnRpZmllcikgewotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBmbHVzaCBsb2NhbCBzdG9yYWdlIHRv
IGRpc2sgYmVmb3JlIHdlIHN1c3BlbmQgdGhlIHRocmVhZCBhcyB3ZSB3YW50IHRvIG1ha2Ugc3Vy
ZSBhbnkgcGVuZGluZwotICAgICAgICAvLyBTUUwgdHJhbnNhY3Rpb24gaGFzIGJlZW4gY29tbWl0
dGVkLgotICAgICAgICBmbHVzaExvY2FsU3RvcmFnZSgpOwotCi0gICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0KLSAgICAgICAgd2hp
bGUgKG1fc2hvdWxkU3VzcGVuZCkKLSAgICAgICAgICAgIG1fc3VzcGVuc2lvbkNvbmRpdGlvbi53
YWl0KG1fc3VzcGVuc2lvbkxvY2spOwotICAgIH0pOworICAgIG1fcXVldWUtPnN1c3BlbmQoW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5m
bHVzaExvY2FsU3RvcmFnZSgpOworICAgIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAogdm9pZCBTdG9yYWdlTWFuYWdlclNldDo6cmVzdW1lKCkKIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja2VyIHN1c3BlbnNpb25Mb2NrZXIgeyBtX3N1c3Bl
bnNpb25Mb2NrIH07Ci0gICAgbV9zaG91bGRTdXNwZW5kID0gZmFsc2U7Ci0gICAgbV9zdXNwZW5z
aW9uQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgIG1fcXVldWUtPnJlc3VtZSgpOwogfQogCiB2
b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBHZXRPcmlnaW5zQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTWFuYWdlclNldC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VNYW5hZ2VyU2V0LmgKaW5kZXggMDc5YWFkYzExNTA1MjgxNTg5OGE1YzdjYmRiYTE1
MjUyNzViYzA5Yi4uNzIyZTAzMTQ2NzkyODI1ZTE3ZjdjOWI5ZDUxMGE5NGFlN2VlNmEyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyU2V0LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VNYW5hZ2VyU2V0LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxwYWwvU2Vz
c2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+CisjaW5jbHVkZSA8d3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KIAogdXNpbmcgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOwpAQCAtOTgs
MTIgKzk5LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0b3JhZ2VBcmVhSWRlbnRpZmllciwg
V2Vha1B0cjxTdG9yYWdlQXJlYT4+IG1fc3RvcmFnZUFyZWFzOwogCiAgICAgSGFzaFNldDxJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiBtX2Nvbm5lY3Rpb25zOwotICAgIFJlZjxXb3JrUXVldWU+
IG1fcXVldWU7Ci0KLSAgICBMb2NrIG1fc3VzcGVuc2lvbkxvY2s7Ci0gICAgQ29uZGl0aW9uIG1f
c3VzcGVuc2lvbkNvbmRpdGlvbjsKLSAgICBib29sIG1fc2hvdWxkU3VzcGVuZCBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fc3VzcGVuc2lvbkxvY2spIHsgZmFsc2UgfTsKLSAgICB1aW50NjRfdCBtX3N1
c3BlbnNpb25JZGVudGlmaWVyIFdURl9HVUFSREVEX0JZX0xPQ0sobV9zdXNwZW5zaW9uTG9jaykg
eyAwIH07CisgICAgUmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+IG1fcXVldWU7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9UcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1RyYW5zaWVudExvY2FsU3Rv
cmFnZU5hbWVzcGFjZS5jcHAKaW5kZXggNjcwMTUxNjE3OGUxOWJjY2JkNjkzNjQ3YmUyNmMwYTM0
MzNmN2VhMi4uZGZiZWM3Nzg0MTE4MjVlN2ZlOWVkZDM3ZDUyYTRiYTg3NmZhYWZiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1RyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL1RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAKQEAgLTQ0LDcg
KzQ0LDcgQEAgVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjp+VHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlKCkKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KIAot
U3RvcmFnZUFyZWEmIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZTo6Z2V0T3JDcmVhdGVT
dG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbiwgUmVmPFdvcmtR
dWV1ZT4mJiB3b3JrUXVldWUpCitTdG9yYWdlQXJlYSYgVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3Vy
aXR5T3JpZ2luLCBSZWY8V1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgcmV0dXJuICptX3N0b3JhZ2VB
cmVhTWFwLmVuc3VyZShzZWN1cml0eU9yaWdpbiwgWyZdKCkgbXV0YWJsZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvVHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmgKaW5kZXggYTQ4NzJmYTZlYTZkMTlm
N2FiMDM1ZDkyZjI4MmNlMDhmZDZhMmE3YS4uMGUxMmRhNTQ4NWQwM2JjODViMTY4Zjc3OTRlYzM3
YTEwMWJjMDRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL1RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9UcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgVHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlKCk7CiAgICAgflRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSgpOwogCi0g
ICAgU3RvcmFnZUFyZWEmIGdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYsIFJlZjxXb3JrUXVldWU+JiYpOworICAgIFN0b3JhZ2VBcmVhJiBnZXRPckNy
ZWF0ZVN0b3JhZ2VBcmVhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBSZWY8V1RGOjpT
dXNwZW5kYWJsZVdvcmtRdWV1ZT4mJik7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4gb3JpZ2lucygpIGNvbnN0OwogCiAgICAgdm9pZCBjbGVhclN0b3JhZ2VBcmVhc01h
dGNoaW5nT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434860</attachid>
            <date>2021-08-03 13:54:38 -0700</date>
            <delta_ts>2021-08-04 14:22:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228748-20210803135437.patch</filename>
            <type>text/plain</type>
            <size>49191</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNjExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDkyNGYwZDg4Yzk1OGViYmJiMDYyODY5
YmIyZTMwNzRhMjE3ZDM3MzYuLmI1YzZlMDIxNWQ0Y2MyYzlkOGEwOTRjOGY4MDk0NTdiZjg2Njg0
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjEtMDgtMDMgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VzcGVuZCBXb3JrUXVldWUgb2YgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyBhbmQgTG9jYWxTdG9yYWdlIHNvb25lcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFN1c3BlbmRhYmxlV29ya1F1ZXVlIHRoYXQg
d291bGQgcGVyZm9ybSBzdXNwZW5kIGNoZWNrIGJlZm9yZSBlYWNoIHRhc2suCisKKyAgICAgICAg
KiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogd3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlOjpjcmVhdGUpOgorICAgICAgICAoV1RG
OjpTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6U3VzcGVuZGFibGVXb3JrUXVldWUpOgorICAgICAgICAo
V1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6c3VzcGVuZCk6CisgICAgICAgIChXVEY6OlN1c3Bl
bmRhYmxlV29ya1F1ZXVlOjpyZXN1bWUpOgorICAgICAgICAoV1RGOjpTdXNwZW5kYWJsZVdvcmtR
dWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6ZGlz
cGF0Y2hBZnRlcik6CisgICAgICAgIChXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlOjppbnZva2VB
bGxTdXNwZW5zaW9uQ29tcGxldGlvbkhhbmRsZXJzKToKKyAgICAgICAgKFdURjo6U3VzcGVuZGFi
bGVXb3JrUXVldWU6OnN1c3BlbmRJZk5lZWRlZCk6CisgICAgICAgICogd3RmL1N1c3BlbmRhYmxl
V29ya1F1ZXVlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9UcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaC4KKyAgICAgICAgKFdURjo6
U3VzcGVuZGFibGVXb3JrUXVldWU6OldURl9HVUFSREVEX0JZX0xPQ0spOgorICAgICAgICAqIHd0
Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisKIDIwMjEtMDgtMDMgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSBpcyBjYWxsaW5nIG1hbGxvYyBhcyBwYXJ0IG9mIGxv
Y2tpbmcgaW4gYXVkaW8gdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY3YTAxYTZkZWFmYTg3NTI5MDU1MjJl
MzEwMTg2MGE1MmI2MWM4ZmMuLjM5MGI3MmI2MTYyZWQ3ODlhMDY3OTJjZmRkZTY4YzEzNGRkNmEw
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMjEtMDgtMDMgIFNpaHVpIExpdSAgPHNp
aHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VzcGVuZCBXb3JrUXVldWUgb2YgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyBhbmQgTG9jYWxTdG9yYWdlIHNvb25lcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NzQ4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBzdXNwZW5kaW5nIFJlc291cmNl
TG9hZFN0YXRpc3RpY3MgYW5kIExvY2FsU3RvcmFnZSwgd2UgZGlzcGF0Y2hlZCBhIHN1c3BlbmQg
dGFzaywgd2hpY2ggd2FpdHMgb24gYSAKKyAgICAgICAgY29uZGl0aW9uLCB0byB0aGVpciBXb3Jr
UXVldWUuIFRoYXQgbWVhbnMgdGhlIHF1ZXVlIHdpbGwgYmUgc3VzcGVuZGVkIGFmdGVyIGNvbXBs
ZXRpbmcgYWxsIHRhc2tzIHNjaGVkdWxlZCAKKyAgICAgICAgYmVmb3JlIHRoZSBzdXNwZW5kIHRh
c2suIFRoZXNlIHRhc2tzIG1heSB0YWtlIGEgbG9uZyB0aW1lIHRvIGNvbXBsZXRlIGFuZCBhc3Nl
cnRpb24gbWF5IGJlIHRpbWVkIG91dC4KKworICAgICAgICBXaGVuIG5ldHdvcmsgcHJvY2VzcyBy
ZWNlaXZlcyBQcmVwYXJlVG9TdXNwZW5kIG1lc3NhZ2UsIHdlIHdhbnQgdGhlIHF1ZXVlcyB0byBz
dXNwZW5kIGFzIHNvb24gYXMgcG9zc2libGUuIFRvIAorICAgICAgICBhY2hpZXZlIHRoYXQsIG5v
dyB3ZSBjaGVjayBpZiB0aGUgcXVldWUgbmVlZHMgdG8gYmUgc3VzcGVuZGVkIGJlZm9yZSBlYWNo
IHRhc2ssIHdoaWNoIGVuc3VyZXMgdGhlIHF1ZXVlIAorICAgICAgICBleGVjdXRlIGFzIG1vc3Qg
b25lIHRhc2sgYWZ0ZXIgc3VzcGVuZCgpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3b3JrUXVldWUpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2hhcmVkU3RhdGlzdGljc1F1ZXVlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdXNwZW5kKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXN1bWUpOgorICAg
ICAgICAoV2ViS2l0OjpXVEZfR1VBUkRFRF9CWV9MT0NLKTogRGVsZXRlZC4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6OkxvY2FsU3RvcmFnZURhdGFi
YXNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6
OmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjpTdG9yYWdlQXJlYSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTWFuYWdlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlQXJlYSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6U3RvcmFnZU1hbmFnZXJTZXQpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6c3VzcGVuZCk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpyZXN1bWUpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaDoKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZU1hbmFnZXJTZXQ6OldURl9HVUFSREVEX0JZX0xPQ0spOiBEZWxldGVkLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpn
ZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL1RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oOgorCiAyMDIxLTA4LTAzICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bnVz
ZWQgcHJvY2Vzc0RpZFRyYW5zaXRpb25Ub3tGb3JlZ3JvdW5kLEJhY2tncm91bmR9IElQQwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGI4MWQ4YmE3MDdjMTFm
ZmEzZjdjZTI3ZDdjMGQxZmM4ZjI4NDg4Yy4uOWQzYWY1NjU5Nzk2OWNkNzA4ZmNjNDA1ZDdjNThl
NGY0ZDVhNDlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC05OCw2ICs5OCw3IEBACiAJCTgzNDhCQTBFMjFGQkMwRDUwMEZEMzA1NCAvKiBPYmplY3RJZGVu
dGlmaWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzNDhCQTBEMjFGQkMwRDQwMEZEMzA1NCAvKiBPYmplY3RJZGVudGlmaWVyLmNwcCAqLzsgfTsK
IAkJOTM5MzRCRDMxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdDb2NvYS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTM0QkQyMThBMUU4QzMw
MEQwRDZBMSAvKiBTdHJpbmdWaWV3Q29jb2EubW0gKi87IH07CiAJCTkzOTM0QkQ1MThBMUYxNjkw
MEQwRDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTM5MzRCRDQxOEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdD
Ri5jcHAgKi87IH07CisJCTkzQjA3RUQ4MjZCODcxNzAwMEEwOUIzNCAvKiBTdXNwZW5kYWJsZVdv
cmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0IwN0VENzI2Qjg3MTVCMDBBMDlCMzQgLyogU3VzcGVuZGFibGVXb3JrUXVldWUuY3BwICov
OyB9OwogCQk5M0I1QjQ0RTIyMTNENjE2MDA0QjdBQTcgLyogSGV4TnVtYmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjVCNDREMjIxM0Q2MTYw
MDRCN0FBNyAvKiBIZXhOdW1iZXIuY3BwICovOyB9OwogCQk5M0I1QjQ1MTIyMTcxRUVBMDA0QjdB
QTcgLyogTG9nZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzQjVCNDUwMjIxNzFFRTkwMDRCN0FBNyAvKiBMb2dnZXIuY3BwICovOyB9OwogCQk5
M0YxOTkzRTE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5nVmlldy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxOTkzRDE5RDc5NThEMDBDMjM5MEIg
LyogU3RyaW5nVmlldy5jcHAgKi87IH07CkBAIC00OTksNiArNTAwLDggQEAKIAkJOTM5MzRCRDIx
OEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0cmluZ1ZpZXdDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTM5MzRCRDQxOEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdDRi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdWaWV3Q0YuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0FDOTFBNzE4OTQyRkM0MDAyNDQ5Mzkg
LyogTENoYXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTENoYXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCMDdFRDYyNkI4NkJCNTAwQTA5QjM0IC8qIFN1
c3BlbmRhYmxlV29ya1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1c3BlbmRhYmxlV29ya1F1ZXVl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjA3RUQ3MjZCODcxNUIwMEEwOUIz
NCAvKiBTdXNwZW5kYWJsZVdvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdXNwZW5k
YWJsZVdvcmtRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjVCNDRE
MjIxM0Q2MTYwMDRCN0FBNyAvKiBIZXhOdW1iZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSGV4TnVtYmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTNCNUI0NTAyMjE3MUVFOTAwNEI3QUE3IC8qIExvZ2dlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2dnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5M0QwMDE3QjI2NERCQUNGMDBCQ0YxMDkgLyogU3RyaW5nQ29uY2F0ZW5hdGVDRi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdDb25jYXRlbmF0ZUNGLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjk0LDYgKzEyOTcsOCBAQAogCQkJCUE3
NDg3NDUxMTdBMEJEQUUwMEZBMDRDQiAvKiBTdHJpbmdIYXNoRHVtcENvbnRleHQuaCAqLywKIAkJ
CQkwRkREQkZBNTE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uY3BwICovLAog
CQkJCTBGRERCRkE2MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5oICovLAor
CQkJCTkzQjA3RUQ3MjZCODcxNUIwMEEwOUIzNCAvKiBTdXNwZW5kYWJsZVdvcmtRdWV1ZS5jcHAg
Ki8sCisJCQkJOTNCMDdFRDYyNkI4NkJCNTAwQTA5QjM0IC8qIFN1c3BlbmRhYmxlV29ya1F1ZXVl
LmggKi8sCiAJCQkJNTU5N0Y4MkMxRDk0Qjk5NzAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVk
UXVldWUuaCAqLywKIAkJCQlFM0UxNTgyNTFFQURBNTNDMDA0QTA3OUQgLyogU3lzdGVtRnJlZS5o
ICovLAogCQkJCUU0RDJBRTREMjY4QTRDN0YwMERGRUEwMiAvKiBTeXN0ZW1NYWxsb2MuaCAqLywK
QEAgLTE4MDIsNiArMTgwNyw3IEBACiAJCQkJOTM5MzRCRDUxOEExRjE2OTAwRDBENkExIC8qIFN0
cmluZ1ZpZXdDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzkzNEJEMzE4QTFFOEMzMDBEMEQ2
QTEgLyogU3RyaW5nVmlld0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjcxNTFB
ODI1QjAwNDEyM0ZGIC8qIHN0cnRvZC5jYyBpbiBTb3VyY2VzICovLAorCQkJCTkzQjA3RUQ4MjZC
ODcxNzAwMEEwOUIzNCAvKiBTdXNwZW5kYWJsZVdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MjE4MzAxMkM5OUU0NzZBODRFRUJFQTggLyogU3ltYm9sSW1wbC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3MEE5OTNGRTFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRUI2MUVEQzcyNDA5Q0NDMTAwMUVGRTM2IC8qIFN5c3RlbVRy
YWNpbmdDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggMDUx
N2RkYmUzYmU3ZWIxNDIxNTljZDExODUxOGZmNTllMTg1N2Y1OS4uNDJjZTQ4NGY2NGJkN2M4MGEy
NDU0Nzk2MTM2MDYzYjQ0OWQ4Y2Y0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTI2Myw2ICsy
NjMsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgU3RyaW5nRXh0cmFzLmgKICAgICBT
dHJpbmdIYXNoRHVtcENvbnRleHQuaAogICAgIFN0cmluZ1ByaW50U3RyZWFtLmgKKyAgICBTdXNw
ZW5kYWJsZVdvcmtRdWV1ZS5oCiAgICAgU3luY2hyb25pemVkRml4ZWRRdWV1ZS5oCiAgICAgU3lz
dGVtRnJlZS5oCiAgICAgU3lzdGVtTWFsbG9jLmgKQEAgLTQ1Niw2ICs0NTcsNyBAQCBzZXQoV1RG
X1NPVVJDRVMKICAgICBTdGFja1N0YXRzLmNwcAogICAgIFN0YWNrVHJhY2UuY3BwCiAgICAgU3Ry
aW5nUHJpbnRTdHJlYW0uY3BwCisgICAgU3VzcGVuZGFibGVXb3JrUXVldWUuY3BwCiAgICAgVGhy
ZWFkR3JvdXAuY3BwCiAgICAgVGhyZWFkTWVzc2FnZS5jcHAKICAgICBUaHJlYWRpbmcuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdXNwZW5kYWJsZVdvcmtRdWV1ZS5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi9TdXNwZW5kYWJsZVdvcmtRdWV1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjMzOGJjYjM2
Y2E2NWQ5YTljMWY3MzE0MGQ0YmU1YjZjOGE0OGYzYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVlLmNwcApAQCAtMCwwICsxLDExNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlIDx3dGYvU3VzcGVuZGFibGVXb3JrUXVldWUuaD4KKworbmFtZXNwYWNl
IFdURiB7CisKK1JlZjxTdXNwZW5kYWJsZVdvcmtRdWV1ZT4gU3VzcGVuZGFibGVXb3JrUXVldWU6
OmNyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBXb3JrUXVldWU6OlR5cGUgdHlwZSwgV29ya1F1ZXVl
OjpRT1MgcW9zKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN1c3BlbmRhYmxlV29ya1F1
ZXVlKG5hbWUsIHR5cGUsIHFvcykpOworfQorCitTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6U3VzcGVu
ZGFibGVXb3JrUXVldWUoY29uc3QgY2hhciogbmFtZSwgVHlwZSB0eXBlLCBRT1MgcW9zKQorICAg
IDogV29ya1F1ZXVlKG5hbWUsIHR5cGUsIHFvcykKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworfQorCit2b2lkIFN1c3BlbmRhYmxlV29ya1F1ZXVlOjpzdXNwZW5kKEZ1bmN0aW9uPHZv
aWQoKT4mJiBzdXNwZW5kRnVuY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIExvY2tl
ciBzdXNwZW5zaW9uTG9ja2VyIHsgbV9zdXNwZW5zaW9uTG9jayB9OworCisgICAgLy8gTGFzdCBz
dXNwZW5kIGZ1bmN0aW9uIHdpbGwgYmUgdGhlIG9uZSB0aGF0IGlzIHVzZWQuCisgICAgbV9zdXNw
ZW5kRnVuY3Rpb24gPSBXVEZNb3ZlKHN1c3BlbmRGdW5jdGlvbik7CisgICAgbV9zdXNwZW5zaW9u
Q29tcGxldGlvbkhhbmRsZXJzLmFwcGVuZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cisg
ICAgaWYgKG1fc2hvdWxkU3VzcGVuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zaG91bGRT
dXNwZW5kID0gdHJ1ZTsKKyAgICBkaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpXSB7IH0pOworfQorCit2b2lkIFN1c3BlbmRhYmxlV29ya1F1ZXVlOjpyZXN1bWUoKQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgTG9ja2VyIHN1c3BlbnNpb25Mb2NrZXIg
eyBtX3N1c3BlbnNpb25Mb2NrIH07CisKKyAgICBpZiAoIW1fc2hvdWxkU3VzcGVuZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9zaG91bGRTdXNwZW5kID0gZmFsc2U7CisgICAgbV9zdXNwZW5z
aW9uQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworfQorCit2b2lkIFN1c3BlbmRhYmxlV29ya1F1ZXVl
OjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCit7CisgICAgV29ya1F1ZXVl
OjpkaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmdW5jdGlv
biA9IFdURk1vdmUoZnVuY3Rpb24pXSgpIHsKKyAgICAgICAgc3VzcGVuZElmTmVlZGVkKCk7Cisg
ICAgICAgIGZ1bmN0aW9uKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3VzcGVuZGFibGVXb3JrUXVl
dWU6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBzZWNvbmRzLCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVu
Y3Rpb24pCit7CisgICAgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHNlY29uZHMsIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlv
bildKCkgeworICAgICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKKyAgICAgICAgZnVuY3Rpb24oKTsK
KyAgICB9KTsKK30KKwordm9pZCBTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6aW52b2tlQWxsU3VzcGVu
c2lvbkNvbXBsZXRpb25IYW5kbGVycygpCit7CisgICAgaWYgKG1fc3VzcGVuc2lvbkNvbXBsZXRp
b25IYW5kbGVycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGNhbGxPbk1haW5U
aHJlYWQoW2NvbXBsZXRpb25IYW5kbGVycyA9IHN0ZDo6ZXhjaGFuZ2UobV9zdXNwZW5zaW9uQ29t
cGxldGlvbkhhbmRsZXJzLCB7IH0pXSgpIG11dGFibGUgeworICAgICAgICB3aGlsZSAoIWNvbXBs
ZXRpb25IYW5kbGVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGNvbXBsZXRp
b25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJzLnRha2VGaXJzdCgpKQorICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIH0KKyAgICB9KTsKK30KKwordm9pZCBT
dXNwZW5kYWJsZVdvcmtRdWV1ZTo6c3VzcGVuZElmTmVlZGVkKCkKK3sKKyAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKKyAgICBMb2NrZXIgc3VzcGVuc2lvbkxvY2tlciB7IG1fc3VzcGVuc2lv
bkxvY2sgfTsKKworICAgIGlmICghbV9zaG91bGRTdXNwZW5kKSB7CisgICAgICAgIGludm9rZUFs
bFN1c3BlbnNpb25Db21wbGV0aW9uSGFuZGxlcnMoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChtX3N1c3BlbmRGdW5jdGlvbikKKyAgICAgICAgbV9zdXNwZW5kRnVuY3Rpb24o
KTsKKyAgICBpbnZva2VBbGxTdXNwZW5zaW9uQ29tcGxldGlvbkhhbmRsZXJzKCk7CisKKyAgICB3
aGlsZSAobV9zaG91bGRTdXNwZW5kKQorICAgICAgICBtX3N1c3BlbnNpb25Db25kaXRpb24ud2Fp
dChtX3N1c3BlbnNpb25Mb2NrKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9TdXNwZW5kYWJsZVdvcmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYv
U3VzcGVuZGFibGVXb3JrUXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2RjZTBjYjFlNTcxMmFhNTAwMDcw
OGVkNWVjMjE0OTA5YmU2NDk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvU3Vz
cGVuZGFibGVXb3JrUXVldWUuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3
dGYvQ29uZGl0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0xv
Y2suaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitj
bGFzcyBTdXNwZW5kYWJsZVdvcmtRdWV1ZSA6IHB1YmxpYyBXb3JrUXVldWUgeworcHVibGljOgor
CisgICAgdXNpbmcgVHlwZSA9IFdvcmtRdWV1ZTo6VHlwZTsKKyAgICB1c2luZyBRT1MgPSBXb3Jr
UXVldWU6OlFPUzsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTdXNwZW5kYWJs
ZVdvcmtRdWV1ZT4gY3JlYXRlKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgPSBUeXBlOjpTZXJpYWws
IFFPUyA9IFFPUzo6RGVmYXVsdCk7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdXNw
ZW5kKEZ1bmN0aW9uPHZvaWQoKT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXN1bWUoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBkaXNwYXRjaChGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIGRpc3BhdGNoQWZ0ZXIoU2Vjb25kcywgRnVuY3Rpb248dm9pZCgpPiYm
KTsKKworcHJpdmF0ZToKKyAgICBTdXNwZW5kYWJsZVdvcmtRdWV1ZShjb25zdCBjaGFyKiBuYW1l
LCBUeXBlLCBRT1MpOworICAgIHZvaWQgaW52b2tlQWxsU3VzcGVuc2lvbkNvbXBsZXRpb25IYW5k
bGVycygpOworICAgIHZvaWQgc3VzcGVuZElmTmVlZGVkKCk7CisKKyAgICBMb2NrIG1fc3VzcGVu
c2lvbkxvY2s7CisgICAgQ29uZGl0aW9uIG1fc3VzcGVuc2lvbkNvbmRpdGlvbjsKKyAgICBib29s
IG1fc2hvdWxkU3VzcGVuZCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fc3VzcGVuc2lvbkxvY2spIHsg
ZmFsc2UgfTsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fc3VzcGVuZEZ1bmN0aW9uIFdURl9HVUFS
REVEX0JZX0xPQ0sobV9zdXNwZW5zaW9uTG9jayk7CisgICAgRGVxdWU8Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPj4gbV9zdXNwZW5zaW9uQ29tcGxldGlvbkhhbmRsZXJzOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaCBiL1Nv
dXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCmluZGV4IGNkYTFkMTg0YTFhMzE1ZGE0YzM5NGI1N2M2
MDM2ZWRhYzlkNjk0NmEuLmViZGVmZjYyMWIwYzFlYmMwZDAxZTBiODY5Mzg1OTJmNmU5OWI4YmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1dvcmtRdWV1ZS5oCkBAIC00MSw3ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi1j
bGFzcyBXb3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKK2NsYXNz
IFdvcmtRdWV1ZSA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogCiBwdWJsaWM6CiAgICAg
ZW51bSBjbGFzcyBUeXBlIHsKQEAgLTUzLDkgKzUzLDkgQEAgcHVibGljOgogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgV29ya1F1ZXVlJiBtYWluKCk7CiAKICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFJlZjxXb3JrUXVldWU+IGNyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBl
ID0gVHlwZTo6U2VyaWFsLCBRT1MgPSBRT1M6OkRlZmF1bHQpOwotICAgIH5Xb3JrUXVldWUoKSBm
aW5hbDsKKyAgICB+V29ya1F1ZXVlKCkgb3ZlcnJpZGU7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBkaXNwYXRjaChGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIGRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2hBZnRlcihTZWNvbmRzLCBGdW5jdGlv
bjx2b2lkKCk+JiYpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRpc3BhdGNoU3luYyhG
dW5jdGlvbjx2b2lkKCk+JiYpOwogCkBAIC02Nyw5ICs2NywxMCBAQCBwdWJsaWM6CiAgICAgUnVu
TG9vcCYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuICptX3J1bkxvb3A7IH0KICNlbmRpZgogCi1w
cml2YXRlOgorcHJvdGVjdGVkOgogICAgIFdvcmtRdWV1ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBl
LCBRT1MpOwogCitwcml2YXRlOgogICAgIHN0YXRpYyBSZWY8V29ya1F1ZXVlPiBjb25zdHJ1Y3RN
YWluV29ya1F1ZXVlKCk7CiAjaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCiAgICAgZXhwbGljaXQg
V29ya1F1ZXVlKE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggMWU4
ZTI4YmRhZThmMDJlNDBmY2I0ZDFhOWI1NzAyZWE1ZWYxYzIwOS4uYzM0ODhjOTQ0ZjQ3NTdkNTM2
OGQwNWZjMjJkMTFiNjdjZWZiZTE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVk
ZSA8d3RmL1JvYmluSG9vZEhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNs
dWRlIDx3dGYvU3RkU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVlLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTM0Niw3ICszNDcsNyBAQCBIYXNoU2V0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlKj4mIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0bwogICAgIHJldHVy
biBtYXA7CiB9CiAKLVJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUmIHN0b3JlLCBXb3JrUXVldWUmIHdvcmtRdWV1ZSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBz
aG91bGRJbmNsdWRlTG9jYWxob3N0LCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQYXRo
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCitSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSwgV1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZSYgd29y
a1F1ZXVlLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIGNv
bnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeVBhdGgsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKICAgICA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShzdG9yZSwgd29ya1F1ZXVlLCBz
aG91bGRJbmNsdWRlTG9jYWxob3N0KQogICAgICwgbV9zdG9yYWdlRGlyZWN0b3J5UGF0aChGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeVBhdGgsICJv
YnNlcnZhdGlvbnMuZGIiX3MpKQogICAgICwgbV90cmFuc2FjdGlvbihtX2RhdGFiYXNlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRl
eCBlYTZiNTg3ZDFjZTE3MDNlMDMwOGI3YzFhZGZhOTQ2N2MwODAzMDExLi5kNDcwNjliYjYxMWI0
OWY4ODM4MmNiMzI3MjM0Y2ExZjlmZjRkMDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaApAQCAtMzgsNyArMzgsMTAgQEAKICNpbmNs
dWRlIDx3dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvU3RkU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KKworbmFtZXNwYWNlIFdURiB7
CitjbGFzcyBTdXNwZW5kYWJsZVdvcmtRdWV1ZTsKK30KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgU1FMaXRlRGF0YWJhc2U7CkBAIC03Niw3ICs3OSw3IEBAIHR5cGVkZWYgc3RkOjpwYWly
PFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PiBUYWJsZUFuZEluZGV4UGFpcjsKIC8vIFRo
aXMgaXMgYWx3YXlzIGNvbnN0cnVjdGVkIC8gdXNlZCAvIGRlc3Ryb3llZCBvbiB0aGUgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJ3Mgc3RhdGlzdGljcyBxdWV1ZS4KIGNsYXNzIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlIGZpbmFsIDogcHVibGljIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZSB7CiBwdWJsaWM6Ci0gICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiwgV29ya1F1ZXVlJiwg
U2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5UGF0
aCwgUEFMOjpTZXNzaW9uSUQpOworICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYsIFdURjo6U3VzcGVuZGFibGVXb3Jr
UXVldWUmLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0LCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJl
Y3RvcnlQYXRoLCBQQUw6OlNlc3Npb25JRCk7CiAgICAgflJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlKCk7CiAKICAgICBzdGF0aWMgSGFzaFNldDxSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZSo+JiBhbGxTdG9yZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKaW5kZXggYWQ0YTNiYjQ3ZTBjZmEyNzI5
NzZhYzMxZDQ4MWU1NTAxZGY2NDFjYi4uMzU0NjJhYzc4NTk3YjllODJiOWQxNzQ0ZjcxNzY2NmVi
YTEyNWE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIHZvaWQgcHJ1bmVSZXNvdXJjZXMo
SGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgVW5pcXVlUmVmPFJlc291cmNlTG9hZFN0YXQKICAg
ICAgICAgc3RhdGlzdGljc01hcC5yZW1vdmUoc3RhdGlzdGljc1RvUHJ1bmVbaV0uZG9tYWluKTsK
IH0KIAotUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSwg
V29ya1F1ZXVlJiB3b3JrUXVldWUsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdCkKK1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYg
c3RvcmUsIFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWUmIHdvcmtRdWV1ZSwgU2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KQogICAgIDogUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlKHN0b3JlLCB3b3JrUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpCiB7
CiAgICAgUkVMRUFTRV9BU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAppbmRleCA0OWQzZDgyMzI5MTU1
NWM2NGIwNDRiZjgyM2QzYjAyYTZhM2ZlZTdiLi4xMjNmZDliNmM4MGY4NWQ3MGU2OGNlZjI4N2Q3
ZTZhNTc3MjE4MGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZS5oCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBLZXllZERlY29kZXI7CkBAIC00Nyw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
Ly8gVGhpcyBpcyBhbHdheXMgY29uc3RydWN0ZWQgLyB1c2VkIC8gZGVzdHJveWVkIG9uIHRoZSBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUncyBzdGF0aXN0aWNzIHF1ZXVlLgogY2xhc3Mg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlIGZpbmFsIDogcHVibGljIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZSB7CiBwdWJsaWM6Ci0gICAgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYsIFdvcmtRdWV1ZSYs
IFNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOworICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmLCBXVEY6OlN1c3BlbmRhYmxl
V29ya1F1ZXVlJiwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7CiAKICAgICB2b2lkIGNsZWFyKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwCmluZGV4IGJmMWM3NTM3YmIzNDNjZTE0YTFjY2M5Nzc4NDU5YTQ1M2YyZWU5NDguLmY2MmY3
ZjczMDJkZDQ5MDEyNTU0ZGI1NDg1NDM3NTAxMzdjYzM3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgYm9vbCBPcGVy
YXRpbmdEYXRlOjpvcGVyYXRvcjw9KGNvbnN0IE9wZXJhdGluZ0RhdGUmIG90aGVyKSBjb25zdAog
ICAgIHJldHVybiBzZWNvbmRzU2luY2VFcG9jaCgpIDw9IG90aGVyLnNlY29uZHNTaW5jZUVwb2No
KCk7CiB9CiAKLVJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgc3RvcmUsIFdvcmtRdWV1
ZSYgd29ya1F1ZXVlLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0IHNob3VsZEluY2x1ZGVMb2NhbGhv
c3QpCitSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIHN0b3JlLCBXVEY6OlN1c3BlbmRh
YmxlV29ya1F1ZXVlJiB3b3JrUXVldWUsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5j
bHVkZUxvY2FsaG9zdCkKICAgICA6IG1fc3RvcmUoc3RvcmUpCiAgICAgLCBtX3dvcmtRdWV1ZSh3
b3JrUXVldWUpCiAgICAgLCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3Qoc2hvdWxkSW5jbHVkZUxv
Y2FsaG9zdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCA2
YTU2MDU2Y2M1OTQ2Mjg0MjFjZmNjYThmZmQ5MTU2NWY4YWE4NjU3Li40ODdhYzAxZGVjODZlNTcw
YzAzYWI2YzU4MDg2ZDhmNmE4ZjJjMzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oCkBAIC0zNCwxMiArMzQsMTUgQEAKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KLSNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKICNpZiBIQVZFKENPUkVfUFJFRElD
VElPTikKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmgi
CiAjZW5kaWYKIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdXNwZW5kYWJsZVdvcmtRdWV1ZTsK
K30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgS2V5ZWREZWNvZGVyOwogY2xhc3MgS2V5
ZWRFbmNvZGVyOwpAQCAtMjE3LDcgKzIyMCw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBz
dGF0aWMgdW5zaWduZWQgY29tcHV0ZUltcG9ydGFuY2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljcyYpOwogCi0gICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYsIFdvcmtRdWV1ZSYsIFNob3VsZEluY2x1ZGVMb2Nh
bGhvc3QpOworICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUmLCBXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlJiwgU2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdCk7CiAgICAgCiAgICAgYm9vbCBkYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YVJlY29yZHNCZWluZ1JlbW92ZWQ7IH0KIApAQCAtMjI4LDcgKzIz
MSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcHJ1bmVTdGF0aXN0aWNzSWZOZWVk
ZWQoKSA9IDA7CiAKICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIHN0b3JlKCkg
eyByZXR1cm4gbV9zdG9yZTsgfQotICAgIFJlZjxXb3JrUXVldWU+JiB3b3JrUXVldWUoKSB7IHJl
dHVybiBtX3dvcmtRdWV1ZTsgfQorICAgIFJlZjxXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlPiYg
d29ya1F1ZXVlKCkgeyByZXR1cm4gbV93b3JrUXVldWU7IH0KICNpZiBIQVZFKENPUkVfUFJFRElD
VElPTikKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hJiBjbGFzc2lm
aWVyKCkgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllcjsgfQogI2Vs
c2UKQEAgLTI3OCw3ICsyODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlQ2xpZW50U2lk
ZUNvb2tpZXNBZ2VDYXAoKTsKIAogICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYg
bV9zdG9yZTsKLSAgICBSZWY8V29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsKKyAgICBSZWY8V1RGOjpT
dXNwZW5kYWJsZVdvcmtRdWV1ZT4gbV93b3JrUXVldWU7CiAjaWYgSEFWRShDT1JFX1BSRURJQ1RJ
T04pCiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYSBtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggNGY4MDc1MWRmMDAzMGY2Y2YyOThkMDRk
ZDcwMGQ5N2UzZmIyOWUxZS4uOTBmODAyNmJmZjY1ZTJkMDBjMmYyYjI0ODZiYWRhYzIxNjgwY2M3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAK
QEAgLTU5LDExICs1OSw2IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCi1zdGF0aWMgTG9jayBnbG9iYWxTdXNwZW5zaW9uTG9jazsKLXN0YXRpYyBDb25k
aXRpb24gZ2xvYmFsU3VzcGVuc2lvbkNvbmRpdGlvbjsKLXN0YXRpYyBib29sIGdsb2JhbFNob3Vs
ZFN1c3BlbmQgV1RGX0dVQVJERURfQllfTE9DSyhnbG9iYWxTdXNwZW5zaW9uTG9jaykgeyBmYWxz
ZSB9Owotc3RhdGljIHVpbnQ2NF90IGdsb2JhbFN1c3BlbnNpb25JZGVudGlmaWVyIFdURl9HVUFS
REVEX0JZX0xPQ0soZ2xvYmFsU3VzcGVuc2lvbkxvY2spIHsgMCB9OwotCiBjb25zdCBPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiYgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptb25p
dG9yZWREYXRhVHlwZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPj4gZGF0YVR5cGVzKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxXZWJzaXRl
RGF0YVR5cGU+KHsKQEAgLTE0Nyw5ICsxNDIsOSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkcwog
ICAgIH0pOwogfQogCi1zdGF0aWMgUmVmPFdvcmtRdWV1ZT4gc2hhcmVkU3RhdGlzdGljc1F1ZXVl
KCkKK3N0YXRpYyBSZWY8V1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZT4gc2hhcmVkU3RhdGlzdGlj
c1F1ZXVlKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdvcmtRdWV1ZT4+IHF1
ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgUHJv
Y2VzcyBEYXRhIFF1ZXVlIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtRdWV1ZTo6UU9T
OjpVdGlsaXR5KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZjxXVEY6OlN1c3BlbmRh
YmxlV29ya1F1ZXVlPj4gcXVldWUoV1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6Y3JlYXRlKCJX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgUHJvY2VzcyBEYXRhIFF1ZXVlIiwgIFdvcmtR
dWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXRpbGl0eSkpOwogICAgIHJldHVy
biBxdWV1ZS5nZXQoKS5jb3B5UmVmKCk7CiB9CiAKQEAgLTE0NDgsMzMgKzE0NDMsMTkgQEAgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0
YShDb21wbGV0aW9uSGFuZGxlcjwKIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIExvY2tlciBzdXNwZW5zaW9uTG9ja2VyIHsgZ2xvYmFsU3VzcGVuc2lvbkxvY2sg
fTsKLSAgICBnbG9iYWxTaG91bGRTdXNwZW5kID0gdHJ1ZTsKLQotICAgIHNoYXJlZFN0YXRpc3Rp
Y3NRdWV1ZSgpLT5kaXNwYXRjaChbc3VzcGVuc2lvbklkZW50aWZpZXIgPSArK2dsb2JhbFN1c3Bl
bnNpb25JZGVudGlmaWVyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgTG9ja2VyIHN1c3BlbnNpb25Mb2NrZXIgeyBn
bG9iYWxTdXNwZW5zaW9uTG9jayB9OwotICAgICAgICBpZiAoIWdsb2JhbFNob3VsZFN1c3BlbmQg
fHwgc3VzcGVuc2lvbklkZW50aWZpZXIgIT0gZ2xvYmFsU3VzcGVuc2lvbklkZW50aWZpZXIpIHsK
LSAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKIAorICAgIHNoYXJlZFN0YXRpc3RpY3NRdWV1ZSgpLT5zdXNwZW5kKFtdKCkgbXV0YWJs
ZSB7CiAgICAgICAgIGZvciAoYXV0byYgZGF0YWJhc2VTdG9yZSA6IFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjphbGxTdG9yZXMoKSkKICAgICAgICAgICAgIGRhdGFiYXNlU3Rv
cmUtPmludGVycnVwdCgpOwotCi0gICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwotCi0gICAgICAgIHdoaWxlIChnbG9iYWxTaG91bGRTdXNwZW5kKQotICAg
ICAgICAgICAgZ2xvYmFsU3VzcGVuc2lvbkNvbmRpdGlvbi53YWl0KGdsb2JhbFN1c3BlbnNpb25M
b2NrKTsKLSAgICB9KTsKKyAgICB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAK
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXN1bWUoKQogewogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrZXIgc3VzcGVuc2lvbkxvY2tlciB7
IGdsb2JhbFN1c3BlbnNpb25Mb2NrIH07Ci0gICAgZ2xvYmFsU2hvdWxkU3VzcGVuZCA9IGZhbHNl
OwotICAgIGdsb2JhbFN1c3BlbnNpb25Db25kaXRpb24ubm90aWZ5T25lKCk7CisgICAgc2hhcmVk
U3RhdGlzdGljc1F1ZXVlKCktPnJlc3VtZSgpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGRvbWFpbiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFz
c2VkLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENv
b2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgKaW5kZXggMGIyNjEwNGZlMjBlOTk2ZmNiZWU0MWRmN2RhMjY5YTA1NmIw
OTQzOC4uNzI2MDM4OTM2MzAxMGFjNDAxZWM2OTMzNTdmYjRmOWNhMjEzZjE0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtNTEsNyArNTEsNyBA
QAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKLWNs
YXNzIFdvcmtRdWV1ZTsKK2NsYXNzIFN1c3BlbmRhYmxlV29ya1F1ZXVlOwogfQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0xNDQsNyArMTQ0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNv
bnN0IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+JiBtb25pdG9yZWREYXRhVHlwZXMoKTsKIAot
ICAgIFdURjo6V29ya1F1ZXVlJiBzdGF0aXN0aWNzUXVldWUoKSB7IHJldHVybiBtX3N0YXRpc3Rp
Y3NRdWV1ZS5nZXQoKTsgfQorICAgIFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWUmIHN0YXRpc3Rp
Y3NRdWV1ZSgpIHsgcmV0dXJuIG1fc3RhdGlzdGljc1F1ZXVlLmdldCgpOyB9CiAKICAgICB2b2lk
IHBvcHVsYXRlTWVtb3J5U3RvcmVGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29s
KTsKQEAgLTI3Niw3ICsyNzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveVJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAg
V2Vha1B0cjxOZXR3b3JrU2Vzc2lvbj4gbV9uZXR3b3JrU2Vzc2lvbjsKLSAgICBSZWY8V1RGOjpX
b3JrUXVldWU+IG1fc3RhdGlzdGljc1F1ZXVlOworICAgIFJlZjxXVEY6OlN1c3BlbmRhYmxlV29y
a1F1ZXVlPiBtX3N0YXRpc3RpY3NRdWV1ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlPiBtX3N0YXRpc3RpY3NTdG9yZTsKIAogICAgIFJ1bkxvb3A6OlRp
bWVyPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gbV9kYWlseVRhc2tzVGltZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxT
dG9yYWdlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAppbmRleCA1NjlmZGIyZGY4ZjUzZWFiY2YxOTE4
MTI0MzBhYjZmZGE2ODAyNTQwLi5kNTI1ZWY2OTIzOWZlNzg4YTE4ZDM2MzQxNGE4ZmM0ZTc1ZWRj
MzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
TG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdXNwZW5kYWJsZVdvcmtRdWV1
ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAt
NDIsMTIgKzQzLDEyIEBAIGNvbnN0ZXhwciBhdXRvIGdldEl0ZW1zUXVlcnlTdHJpbmcgeyAiU0VM
RUNUIGtleSwgdmFsdWUgRlJPTSBJdGVtVGFibGUiX3MgfTsKIGNvbnN0ZXhwciB1bnNpZ25lZCBt
YXhpbXVtU2l6ZUZvclZhbHVlc0tlcHRJbk1lbW9yeSB7IDEwMjQgfTsgLy8gMSBLQgogY29uc3Rl
eHByIFNlY29uZHMgdHJhbnNhY3Rpb25EdXJhdGlvbiB7IDUwMF9tcyB9OwogCi1SZWY8TG9jYWxT
dG9yYWdlRGF0YWJhc2U+IExvY2FsU3RvcmFnZURhdGFiYXNlOjpjcmVhdGUoUmVmPFdvcmtRdWV1
ZT4mJiB3b3JrUXVldWUsIFN0cmluZyYmIGRhdGFiYXNlUGF0aCwgdW5zaWduZWQgcXVvdGFJbkJ5
dGVzKQorUmVmPExvY2FsU3RvcmFnZURhdGFiYXNlPiBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6Y3Jl
YXRlKFJlZjxXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlPiYmIHdvcmtRdWV1ZSwgU3RyaW5nJiYg
ZGF0YWJhc2VQYXRoLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTG9jYWxTdG9yYWdlRGF0YWJhc2UoV1RGTW92ZSh3b3JrUXVldWUpLCBXVEZNb3Zl
KGRhdGFiYXNlUGF0aCksIHF1b3RhSW5CeXRlcykpOwogfQogCi1Mb2NhbFN0b3JhZ2VEYXRhYmFz
ZTo6TG9jYWxTdG9yYWdlRGF0YWJhc2UoUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUsIFN0cmlu
ZyYmIGRhdGFiYXNlUGF0aCwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQorTG9jYWxTdG9yYWdlRGF0
YWJhc2U6OkxvY2FsU3RvcmFnZURhdGFiYXNlKFJlZjxXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVl
PiYmIHdvcmtRdWV1ZSwgU3RyaW5nJiYgZGF0YWJhc2VQYXRoLCB1bnNpZ25lZCBxdW90YUluQnl0
ZXMpCiAgICAgOiBtX3dvcmtRdWV1ZShXVEZNb3ZlKHdvcmtRdWV1ZSkpCiAgICAgLCBtX2RhdGFi
YXNlUGF0aChXVEZNb3ZlKGRhdGFiYXNlUGF0aCkpCiAgICAgLCBtX3F1b3RhSW5CeXRlcyhxdW90
YUluQnl0ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5oCmluZGV4IDZkNjY0NjFlODA1MjQ4
ZWRjMjEzNGFkMTA1NmI1YmViOGM5N2RiZDEuLjYzZjA4ZGZhYmYwN2MyYzNlMjFhZTUyNzkzYTdh
NzUwMmE1ZjM3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5oCkBAIC0yOCw3ICsyOCwx
MCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2UuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1dvcmtR
dWV1ZS5oPgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN1c3BlbmRhYmxlV29ya1F1ZXVlOwor
fQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRT
Y29wZTsKQEAgLTQxLDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIExvY2Fs
U3RvcmFnZURhdGFiYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8TG9jYWxTdG9yYWdlRGF0YWJhc2U+
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TG9jYWxTdG9yYWdlRGF0YWJhc2U+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPExvY2FsU3RvcmFnZURhdGFiYXNlPiBjcmVhdGUoUmVmPFdvcmtRdWV1
ZT4mJiwgU3RyaW5nJiYgZGF0YWJhc2VQYXRoLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOworICAg
IHN0YXRpYyBSZWY8TG9jYWxTdG9yYWdlRGF0YWJhc2U+IGNyZWF0ZShSZWY8V1RGOjpTdXNwZW5k
YWJsZVdvcmtRdWV1ZT4mJiwgU3RyaW5nJiYgZGF0YWJhc2VQYXRoLCB1bnNpZ25lZCBxdW90YUlu
Qnl0ZXMpOwogICAgIH5Mb2NhbFN0b3JhZ2VEYXRhYmFzZSgpOwogCiAgICAgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4gaXRlbXMoKSBjb25zdDsKQEAgLTU4LDcgKzYxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgaGFuZGxlTG93TWVtb3J5V2FybmluZygpOwogCiBwcml2YXRlOgotICAgIExvY2FsU3Rv
cmFnZURhdGFiYXNlKFJlZjxXb3JrUXVldWU+JiYsIFN0cmluZyYmIGRhdGFiYXNlUGF0aCwgdW5z
aWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAgICBMb2NhbFN0b3JhZ2VEYXRhYmFzZShSZWY8V1RGOjpT
dXNwZW5kYWJsZVdvcmtRdWV1ZT4mJiwgU3RyaW5nJiYgZGF0YWJhc2VQYXRoLCB1bnNpZ25lZCBx
dW90YUluQnl0ZXMpOwogCiAgICAgZW51bSBjbGFzcyBTaG91bGRDcmVhdGVEYXRhYmFzZSA6IGJv
b2wgeyBObywgWWVzIH07CiAgICAgYm9vbCBvcGVuRGF0YWJhc2UoU2hvdWxkQ3JlYXRlRGF0YWJh
c2UpOwpAQCAtNzEsNyArNzQsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50QXV0b1Jlc2V0U2NvcGUgc2NvcGVkU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpTUUxpdGVTdGF0ZW1lbnQ+JiwgQVNDSUlMaXRlcmFsIHF1ZXJ5KSBjb25zdDsKIAotICAg
IFJlZjxXb3JrUXVldWU+IG1fd29ya1F1ZXVlOworICAgIFJlZjxXVEY6OlN1c3BlbmRhYmxlV29y
a1F1ZXVlPiBtX3dvcmtRdWV1ZTsKICAgICBTdHJpbmcgbV9kYXRhYmFzZVBhdGg7CiAgICAgbXV0
YWJsZSBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSBtX2RhdGFiYXNlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VO
YW1lc3BhY2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xv
Y2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAKaW5kZXggNjAxNTNiZjdkNmIwN2Y1OGUwZWExNTk1YTE0
ZmM4YzgxMzUzYzE0OS4uNGQxMTljNmUxNjU2MzE4NmNkZTcxMmNmMGRjMmVlYmRjZDBjZGQ0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2Fs
U3RvcmFnZU5hbWVzcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgTG9j
YWxTdG9yYWdlTmFtZXNwYWNlOjp+TG9jYWxTdG9yYWdlTmFtZXNwYWNlKCkKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KIAotU3RvcmFnZUFyZWEmIExvY2FsU3RvcmFnZU5hbWVz
cGFjZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0
eU9yaWdpbiwgSXNFcGhlbWVyYWwgaXNFcGhlbWVyYWwsIFJlZjxXb3JrUXVldWU+JiYgd29ya1F1
ZXVlKQorU3RvcmFnZUFyZWEmIExvY2FsU3RvcmFnZU5hbWVzcGFjZTo6Z2V0T3JDcmVhdGVTdG9y
YWdlQXJlYShTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbiwgSXNFcGhlbWVyYWwg
aXNFcGhlbWVyYWwsIFJlZjxXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlPiYmIHdvcmtRdWV1ZSkK
IHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICByZXR1cm4gKm1fc3RvcmFn
ZUFyZWFNYXAuZW5zdXJlKHNlY3VyaXR5T3JpZ2luLCBbJl0oKSBtdXRhYmxlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VO
YW1lc3BhY2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UuaAppbmRleCBhZGNhOWY0YTI1NWY1OGUyMTA2ZGQ2YTRlY2VhZGRm
ZmYyNDUxYWMzLi41ZTA3MzQ5N2EyMTg4NDBiYWJlNjRiMWIwZjg5ZjlmMDMzNmNiNDEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9y
YWdlTmFtZXNwYWNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5oCkBAIC0zMSw3ICszMSwxMCBAQAogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgotI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KKworbmFtZXNwYWNlIFdURiB7
CitjbGFzcyBTdXNwZW5kYWJsZVdvcmtRdWV1ZTsKK30KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
QEAgLTQ4LDcgKzUxLDcgQEAgcHVibGljOgogICAgIFN0b3JhZ2VNYW5hZ2VyKiBzdG9yYWdlTWFu
YWdlcigpIGNvbnN0IHsgcmV0dXJuICZtX3N0b3JhZ2VNYW5hZ2VyOyB9CiAKICAgICBlbnVtIGNs
YXNzIElzRXBoZW1lcmFsIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBTdG9yYWdlQXJlYSYgZ2V0
T3JDcmVhdGVTdG9yYWdlQXJlYShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgSXNFcGhl
bWVyYWwsIFJlZjxXb3JrUXVldWU+JiYpOworICAgIFN0b3JhZ2VBcmVhJiBnZXRPckNyZWF0ZVN0
b3JhZ2VBcmVhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBJc0VwaGVtZXJhbCwgUmVm
PFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+JiYpOwogCiAgICAgdm9pZCBjbGVhclN0b3JhZ2VB
cmVhc01hdGNoaW5nT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpOwog
ICAgIHZvaWQgY2xlYXJBbGxTdG9yYWdlQXJlYXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UuY3BwCmluZGV4IDZjNmE4YTI5YTZmYjkwMDk4NWQxNTM5MTVjNWY5MjE3N2FjNTRj
YmEuLjE0YzZkN2Y2Nzg0ZTExMWJlY2U4MWE3NmQ1MWRhMzhmNmQ5MzkyMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZTo6flNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKCkKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKIH0KIAotU3RvcmFnZUFyZWEmIFNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5
T3JpZ2luLCBSZWY8V29ya1F1ZXVlPiYmIHdvcmtRdWV1ZSkKK1N0b3JhZ2VBcmVhJiBTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbkRh
dGEmJiBzZWN1cml0eU9yaWdpbiwgUmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+JiYgd29y
a1F1ZXVlKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIHJldHVybiAq
bV9zdG9yYWdlQXJlYU1hcC5lbnN1cmUoc2VjdXJpdHlPcmlnaW4sIFsmXSgpIG11dGFibGUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1Nlc3Np
b25TdG9yYWdlTmFtZXNwYWNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuaAppbmRleCBmNTUzZjRjMmNhZTE4MTAyZTYz
ZjI1NTA2M2ZlMzMwYjAzZmY5ZjFlLi43NWM0ZTQ4ZWJmMDkxM2VkZDhlOGIyZjgxNTgwMmMxNGEx
ZGEzYzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuaApAQCAtMzEsNiArMzEs
MTEgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUu
aD4KIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdXNwZW5kYWJsZVdvcmtRdWV1ZTsKK30KKwor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU3RvcmFnZUFyZWE7CkBAIC00NCw3ICs0OSw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFn
ZUFyZWFNYXAuaXNFbXB0eSgpOyB9CiAKLSAgICBTdG9yYWdlQXJlYSYgZ2V0T3JDcmVhdGVTdG9y
YWdlQXJlYShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgUmVmPFdvcmtRdWV1ZT4mJik7
CisgICAgU3RvcmFnZUFyZWEmIGdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYsIFJlZjxXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlPiYmKTsKIAogICAg
IHZvaWQgY2xvbmVUbyhTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSYgbmV3U2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcAppbmRleCA4MzE5NGIwNWZiNGVlMTE3NzdkZGYxMGFl
ZDI3OGY2MGMwYjk5ODJjLi41ZTAwMmM5OTUxMTdiZTMzMjc0MjczMTEwZDIwYTM5ZDhjNjE4ZTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYS5jcHAKQEAgLTMwLDEyICszMCwxMyBAQAogI2luY2x1ZGUgIkxvY2FsU3Rv
cmFnZU5hbWVzcGFjZS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJTdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgPHd0Zi9TdXNwZW5kYWJsZVdvcmtR
dWV1ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLVN0b3JhZ2VBcmVhOjpTdG9yYWdlQXJlYShMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIGxvY2Fs
U3RvcmFnZU5hbWVzcGFjZSwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdp
biwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBSZWY8V29ya1F1ZXVlPiYmIHF1ZXVlKQorU3RvcmFn
ZUFyZWE6OlN0b3JhZ2VBcmVhKExvY2FsU3RvcmFnZU5hbWVzcGFjZSogbG9jYWxTdG9yYWdlTmFt
ZXNwYWNlLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCB1bnNpZ25l
ZCBxdW90YUluQnl0ZXMsIFJlZjxXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlPiYmIHF1ZXVlKQog
ICAgIDogbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UobWFrZVdlYWtQdHIobG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKSkKICAgICAsIG1fc2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pCiAgICAgLCBt
X3F1b3RhSW5CeXRlcyhxdW90YUluQnl0ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5oCmluZGV4IDljNzE1NzAyZGJlNjli
N2YzM2M3YzMxYmU0NTc3OWIzMmVhOTZhMzQuLjNlOGFlOWU3MWY0NGI3MTFlMzQxODhkZTdlZjM5
ZDYxZTcwMDIyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5oCkBAIC0zMyw2ICszMywxMCBAQAogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAorbmFtZXNwYWNlIFdURiB7
CitjbGFzcyBTdXNwZW5kYWJsZVdvcmtRdWV1ZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgU3RvcmFnZU1hcDsKIH0KQEAgLTQ4LDcgKzUyLDcgQEAgY2xhc3MgU3RvcmFnZUFyZWEg
OiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3RvcmFnZUFyZWE+IHsKIHB1YmxpYzoKICAgICB1c2lu
ZyBJZGVudGlmaWVyID0gU3RvcmFnZUFyZWFJZGVudGlmaWVyOwogICAgIAotICAgIFN0b3JhZ2VB
cmVhKExvY2FsU3RvcmFnZU5hbWVzcGFjZSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcywgUmVmPFdvcmtRdWV1ZT4mJik7CisgICAgU3Rv
cmFnZUFyZWEoTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBSZWY8V1RGOjpTdXNwZW5kYWJsZVdv
cmtRdWV1ZT4mJik7CiAgICAgflN0b3JhZ2VBcmVhKCk7CiAKICAgICBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1
cml0eU9yaWdpbjsgfQpAQCAtOTAsNyArOTQsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8SVBD
OjpDb25uZWN0aW9uOjpVbmlxdWVJRD4gbV9ldmVudExpc3RlbmVyczsKIAogICAgIElkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOwotICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CisgICAgUmVmPFdU
Rjo6U3VzcGVuZGFibGVXb3JrUXVldWU+IG1fcXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDViY2NhMjk5YmE0MTVlMzljMDI4NDU5OTdl
NTgwNmIyODQ2ZGE5M2MuLmExMzZiZDBhZjhjODZmMzU3Y2YzNmM3N2NlZWU4MTM3ZTMwZmRjOWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9TdXNwZW5kYWJsZVdvcmtRdWV1ZS5oPgogI2luY2x1
ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yMTEsNyArMjEy
LDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9y
aWdpbnMoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3IKICAgICB9CiB9CiAKLVN0b3JhZ2VBcmVhKiBT
dG9yYWdlTWFuYWdlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlQXJlYShTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbiwg
UmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCitTdG9yYWdlQXJlYSogU3RvcmFnZU1hbmFnZXI6
OmNyZWF0ZUxvY2FsU3RvcmFnZUFyZWEoU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgc3RvcmFn
ZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW4sIFJlZjxXVEY6OlN1c3Bl
bmRhYmxlV29ya1F1ZXVlPiYmIHdvcmtRdWV1ZSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIApAQCAtMjIxLDcgKzIyMiw3IEBAIFN0b3JhZ2VBcmVhKiBTdG9yYWdlTWFuYWdl
cjo6Y3JlYXRlTG9jYWxTdG9yYWdlQXJlYShTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBzCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVN0b3JhZ2VBcmVhKiBTdG9yYWdlTWFuYWdlcjo6Y3Jl
YXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBz
dG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcExldmVsT3JpZ2luLCBT
ZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW4sIFJlZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlKQor
U3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VB
cmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJp
dHlPcmlnaW5EYXRhJiYgdG9wTGV2ZWxPcmlnaW4sIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdp
biwgUmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+JiYgd29ya1F1ZXVlKQogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVCgoSGFzaE1hcDxTdG9yYWdlTmFt
ZXNwYWNlSWRlbnRpZmllciwgUmVmUHRyPFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZT4+
Ojppc1ZhbGlkS2V5KHN0b3JhZ2VOYW1lc3BhY2VJRCkpKTsKQEAgLTIzMiw3ICsyMzMsNyBAQCBT
dG9yYWdlQXJlYSogU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZUFy
ZWEoU3RvcmFnZU5hbWVzcGFjZUlkZQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1TdG9yYWdl
QXJlYSogU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlQXJlYShTdG9yYWdlTmFt
ZXNwYWNlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYm
IG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCitTdG9yYWdlQXJlYSogU3RvcmFn
ZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlQXJlYShTdG9yYWdlTmFtZXNwYWNlSWRlbnRp
ZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbiwgUmVm
PFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+JiYgd29ya1F1ZXVlKQogewogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVCgoSGFzaE1hcDxTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllciwgUmVmUHRyPFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlPj46OmlzVmFsaWRLZXko
c3RvcmFnZU5hbWVzcGFjZUlEKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaAppbmRleCAwZDZlN2FlZGZmNjgy
MjdiZjdkYzhhYjcxODRhYmM2ZmQzMzIxYzU0Li5mNmIyYjRjZWY5MmVjMTZiNzIxM2JiNmY5NWJh
MzNmYmJiMmNhYzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaApAQCAtMzUsNiArMzUsMTAgQEAKICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAor
bmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdXNwZW5kYWJsZVdvcmtRdWV1ZTsKK30KKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiB9CkBAIC04MCw5ICs4NCw5IEBA
IHB1YmxpYzoKICAgICAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9jYWxTdG9yYWdlRGF0
YWJhc2VRdW90YUluQnl0ZXM7CiAKLSAgICBTdG9yYWdlQXJlYSogY3JlYXRlTG9jYWxTdG9yYWdl
QXJlYShTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiYsIFJlZjxXb3JrUXVldWU+JiYpOwotICAgIFN0b3JhZ2VBcmVhKiBjcmVhdGVUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFJlZjxX
b3JrUXVldWU+JiYpOwotICAgIFN0b3JhZ2VBcmVhKiBjcmVhdGVTZXNzaW9uU3RvcmFnZUFyZWEo
U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
LCBSZWY8V29ya1F1ZXVlPiYmKTsKKyAgICBTdG9yYWdlQXJlYSogY3JlYXRlTG9jYWxTdG9yYWdl
QXJlYShTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiYsIFJlZjxXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlPiYmKTsKKyAgICBTdG9yYWdlQXJl
YSogY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShTdG9yYWdlTmFtZXNwYWNlSWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmLCBSZWY8V1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZT4mJik7CisgICAgU3RvcmFn
ZUFyZWEqIGNyZWF0ZVNlc3Npb25TdG9yYWdlQXJlYShTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmll
ciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFJlZjxXVEY6OlN1c3BlbmRhYmxlV29y
a1F1ZXVlPiYmKTsKIAogICAgIFZlY3RvcjxTdG9yYWdlQXJlYUlkZW50aWZpZXI+IGFsbFN0b3Jh
Z2VBcmVhSWRlbnRpZmllcnMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHAKaW5k
ZXggMzZhYmVhNTA1MGI4NGIxOGM5MjI3MTU2NjliNzkyM2EwOGRjYWRmZi4uNzM4OGE5YTQyZjhm
YTNiYTMzMTc1MmZkZjM2Zjg3ZTM1NDQwODAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3Bw
CkBAIC00MSw3ICs0MSw3IEBAIFJlZjxTdG9yYWdlTWFuYWdlclNldD4gU3RvcmFnZU1hbmFnZXJT
ZXQ6OmNyZWF0ZSgpCiB9CiAKIFN0b3JhZ2VNYW5hZ2VyU2V0OjpTdG9yYWdlTWFuYWdlclNldCgp
Ci0gICAgOiBtX3F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LldlYlN0
b3JhZ2UiKSkKKyAgICA6IG1fcXVldWUoV1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6Y3JlYXRl
KCJjb20uYXBwbGUuV2ViS2l0LldlYlN0b3JhZ2UiKSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCkBAIC0xNzcsMzQgKzE3NywxNiBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0
OjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja2VyIHN1c3BlbnNp
b25Mb2NrZXIgeyBtX3N1c3BlbnNpb25Mb2NrIH07Ci0gICAgbV9zaG91bGRTdXNwZW5kID0gdHJ1
ZTsKLQotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHN1c3BlbnNpb25JZGVudGlmaWVyID0gKyttX3N1c3BlbnNpb25JZGVudGlmaWVy
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRh
YmxlIHsKLSAgICAgICAgTG9ja2VyIHN1c3BlbnNpb25Mb2NrZXIgeyBtX3N1c3BlbnNpb25Mb2Nr
IH07Ci0gICAgICAgIGlmICghbV9zaG91bGRTdXNwZW5kIHx8IHN1c3BlbnNpb25JZGVudGlmaWVy
ICE9IG1fc3VzcGVuc2lvbklkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZmx1c2ggbG9jYWwgc3Rv
cmFnZSB0byBkaXNrIGJlZm9yZSB3ZSBzdXNwZW5kIHRoZSB0aHJlYWQgYXMgd2Ugd2FudCB0byBt
YWtlIHN1cmUgYW55IHBlbmRpbmcKLSAgICAgICAgLy8gU1FMIHRyYW5zYWN0aW9uIGhhcyBiZWVu
IGNvbW1pdHRlZC4KLSAgICAgICAgZmx1c2hMb2NhbFN0b3JhZ2UoKTsKLQotICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotCi0gICAg
ICAgIHdoaWxlIChtX3Nob3VsZFN1c3BlbmQpCi0gICAgICAgICAgICBtX3N1c3BlbnNpb25Db25k
aXRpb24ud2FpdChtX3N1c3BlbnNpb25Mb2NrKTsKLSAgICB9KTsKKyAgICBtX3F1ZXVlLT5zdXNw
ZW5kKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgcHJvdGVjdGVk
VGhpcy0+Zmx1c2hMb2NhbFN0b3JhZ2UoKTsKKyAgICB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OnJlc3VtZSgpCiB7CiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tlciBzdXNwZW5zaW9uTG9ja2VyIHsg
bV9zdXNwZW5zaW9uTG9jayB9OwotICAgIG1fc2hvdWxkU3VzcGVuZCA9IGZhbHNlOwotICAgIG1f
c3VzcGVuc2lvbkNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICBtX3F1ZXVlLT5yZXN1bWUoKTsK
IH0KIAogdm9pZCBTdG9yYWdlTWFuYWdlclNldDo6Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgR2V0T3JpZ2luc0NhbGxiYWNrJiYgY29tcGxldGlvbkhh
bmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZU1hbmFnZXJTZXQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5oCmluZGV4IDA3OWFhZGMxMTUwNTI4MTU4OThhNWM3
Y2JkYmExNTI1Mjc1YmMwOWIuLjcyMmUwMzE0Njc5MjgyNWUxN2Y3YzliOWQ1MTBhOTRhZTdlZTZh
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlclNldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8
cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KICNpbmNsdWRlIDx3
dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9TdXNwZW5kYWJsZVdvcmtRdWV1ZS5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIHVzaW5nIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTsK
QEAgLTk4LDEyICs5OSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdG9yYWdlQXJlYUlkZW50
aWZpZXIsIFdlYWtQdHI8U3RvcmFnZUFyZWE+PiBtX3N0b3JhZ2VBcmVhczsKIAogICAgIEhhc2hT
ZXQ8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRD4gbV9jb25uZWN0aW9uczsKLSAgICBSZWY8V29y
a1F1ZXVlPiBtX3F1ZXVlOwotCi0gICAgTG9jayBtX3N1c3BlbnNpb25Mb2NrOwotICAgIENvbmRp
dGlvbiBtX3N1c3BlbnNpb25Db25kaXRpb247Ci0gICAgYm9vbCBtX3Nob3VsZFN1c3BlbmQgV1RG
X0dVQVJERURfQllfTE9DSyhtX3N1c3BlbnNpb25Mb2NrKSB7IGZhbHNlIH07Ci0gICAgdWludDY0
X3QgbV9zdXNwZW5zaW9uSWRlbnRpZmllciBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fc3VzcGVuc2lv
bkxvY2spIHsgMCB9OworICAgIFJlZjxXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlPiBtX3F1ZXVl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9UcmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwCmluZGV4IDY3MDE1MTYxNzhlMTliY2NiZDY5MzY0N2Jl
MjZjMGEzNDMzZjdlYTIuLmRmYmVjNzc4NDExODI1ZTdmZTllZGQzN2Q1MmE0YmE4NzZmYWFmYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9UcmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9UcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwCkBA
IC00NCw3ICs0NCw3IEBAIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZTo6flRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZSgpCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiB9CiAKLVN0b3JhZ2VBcmVhJiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OmdldE9y
Q3JlYXRlU3RvcmFnZUFyZWEoU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4sIFJl
ZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlKQorU3RvcmFnZUFyZWEmIFRyYW5zaWVudExvY2FsU3Rv
cmFnZU5hbWVzcGFjZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbkRhdGEm
JiBzZWN1cml0eU9yaWdpbiwgUmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+JiYgd29ya1F1
ZXVlKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIHJldHVybiAqbV9z
dG9yYWdlQXJlYU1hcC5lbnN1cmUoc2VjdXJpdHlPcmlnaW4sIFsmXSgpIG11dGFibGUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1RyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL1RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oCmluZGV4IGE0ODcyZmE2
ZWE2ZDE5ZjdhYjAzNWQ5MmYyODJjZTA4ZmQ2YTJhN2EuLjBlMTJkYTU0ODVkMDNiYzg1YjE2OGY3
Nzk0ZWMzN2ExMDFiYzA0ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9UcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvVHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIFRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZSgpOwogICAgIH5UcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
KTsKIAotICAgIFN0b3JhZ2VBcmVhJiBnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYmLCBSZWY8V29ya1F1ZXVlPiYmKTsKKyAgICBTdG9yYWdlQXJlYSYg
Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgUmVm
PFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+JiYpOwogICAgIFZlY3RvcjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMoKSBjb25zdDsKIAogICAgIHZvaWQgY2xlYXJTdG9yYWdl
QXJlYXNNYXRjaGluZ09yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434933</attachid>
            <date>2021-08-04 14:22:30 -0700</date>
            <delta_ts>2021-08-05 12:22:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228748-20210804142228.patch</filename>
            <type>text/plain</type>
            <size>49361</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDIxNDFkZWUxOWI5YmYzNjZkMDIxZDc0
OGE3MTQxZDQxODYyMmY0ODguLjI1ZmU4OTUwYzI5NWFmZjExYTM2NDllNzU2Yjk0YTQ1YjQzNDcz
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjEtMDgtMDQgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VzcGVuZCBXb3JrUXVldWUgb2YgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyBhbmQgTG9jYWxTdG9yYWdlIHNvb25lcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFN1c3BlbmRhYmxlV29ya1F1ZXVlIHRoYXQg
d291bGQgcGVyZm9ybSBzdXNwZW5kIGNoZWNrIGJlZm9yZSBlYWNoIHRhc2suCisKKyAgICAgICAg
KiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogd3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlOjpjcmVhdGUpOgorICAgICAgICAoV1RG
OjpTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6U3VzcGVuZGFibGVXb3JrUXVldWUpOgorICAgICAgICAo
V1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6c3VzcGVuZCk6CisgICAgICAgIChXVEY6OlN1c3Bl
bmRhYmxlV29ya1F1ZXVlOjpyZXN1bWUpOgorICAgICAgICAoV1RGOjpTdXNwZW5kYWJsZVdvcmtR
dWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6ZGlz
cGF0Y2hBZnRlcik6CisgICAgICAgIChXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlOjppbnZva2VB
bGxTdXNwZW5zaW9uQ29tcGxldGlvbkhhbmRsZXJzKToKKyAgICAgICAgKFdURjo6U3VzcGVuZGFi
bGVXb3JrUXVldWU6OnN1c3BlbmRJZk5lZWRlZCk6CisgICAgICAgICogd3RmL1N1c3BlbmRhYmxl
V29ya1F1ZXVlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9UcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaC4KKyAgICAgICAgKFdURjo6
U3VzcGVuZGFibGVXb3JrUXVldWU6OldURl9HVUFSREVEX0JZX0xPQ0spOgorICAgICAgICAqIHd0
Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisKIDIwMjEtMDgtMDMgIE15bGVz
IEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFR3
ZWFrIHRoZSBmb3JtYXR0aW5nIGZvciBwYXNzaW5nIE5TQXJyYXlzIHRvIFRleHRTdHJlYW1zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDljMTU5YzJkNDdiZTE0MjQ5ODZjNGQ5M2UzN2JkMzM0MTBjZmIzMGUuLjQ0NGYw
MDZjNjE2NTFmNDEwMmM4M2MxMjUxMTNjOGU4OTZlMDBlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjIgQEAKKzIwMjEtMDgtMDQgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAg
ICAgICAgU3VzcGVuZCBXb3JrUXVldWUgb2YgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBhbmQgTG9j
YWxTdG9yYWdlIHNvb25lcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI4NzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2hlbiBzdXNwZW5kaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgYW5kIExvY2Fs
U3RvcmFnZSwgd2UgZGlzcGF0Y2hlZCBhIHN1c3BlbmQgdGFzaywgd2hpY2ggd2FpdHMgb24gYSAK
KyAgICAgICAgY29uZGl0aW9uLCB0byB0aGVpciBXb3JrUXVldWUuIFRoYXQgbWVhbnMgdGhlIHF1
ZXVlIHdpbGwgYmUgc3VzcGVuZGVkIGFmdGVyIGNvbXBsZXRpbmcgYWxsIHRhc2tzIHNjaGVkdWxl
ZCAKKyAgICAgICAgYmVmb3JlIHRoZSBzdXNwZW5kIHRhc2suIFRoZXNlIHRhc2tzIG1heSB0YWtl
IGEgbG9uZyB0aW1lIHRvIGNvbXBsZXRlIGFuZCBhc3NlcnRpb24gbWF5IGJlIHRpbWVkIG91dC4K
KworICAgICAgICBXaGVuIG5ldHdvcmsgcHJvY2VzcyByZWNlaXZlcyBQcmVwYXJlVG9TdXNwZW5k
IG1lc3NhZ2UsIHdlIHdhbnQgdGhlIHF1ZXVlcyB0byBzdXNwZW5kIGFzIHNvb24gYXMgcG9zc2li
bGUuIFRvIAorICAgICAgICBhY2hpZXZlIHRoYXQsIG5vdyB3ZSBjaGVjayBpZiB0aGUgcXVldWUg
bmVlZHMgdG8gYmUgc3VzcGVuZGVkIGJlZm9yZSBlYWNoIHRhc2ssIHdoaWNoIGVuc3VyZXMgdGhl
IHF1ZXVlIAorICAgICAgICBleGVjdXRlIGFzIG1vc3Qgb25lIHRhc2sgYWZ0ZXIgc3VzcGVuZCgp
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjp3b3JrUXVldWUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
c2hhcmVkU3RhdGlzdGljc1F1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpXVEZfR1VBUkRF
RF9CWV9MT0NLKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxT
dG9yYWdlRGF0YWJhc2U6OkxvY2FsU3RvcmFnZURhdGFiYXNlKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNw
YWNlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
OjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VB
cmVhOjpTdG9yYWdlQXJlYSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlTG9j
YWxTdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVU
cmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFn
ZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlQXJlYSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
TWFuYWdlclNldDo6U3RvcmFnZU1hbmFnZXJTZXQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
TWFuYWdlclNldDo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0
OjpyZXN1bWUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1h
bmFnZXJTZXQuaDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OldURl9HVUFS
REVEX0JZX0xPQ0spOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1RyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZS5oOgorCiAyMDIxLTA4LTA0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIGluIERpc3BsYXlMaW5rOjpub3RpZnlPYnNlcnZl
cnNEaXNwbGF5V2FzUmVmcmVzaGVkKCkgb24gbWFjT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDhiODFkOGJhNzA3YzExZmZhM2Y3Y2UyN2Q3YzBkMWZjOGYy
ODQ4OGMuLjlkM2FmNTY1OTc5NjljZDcwOGZjYzQwNWQ3YzU4ZTRmNGQ1YTQ5YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTgsNiArOTgsNyBAQAogCQk4
MzQ4QkEwRTIxRkJDMEQ1MDBGRDMwNTQgLyogT2JqZWN0SWRlbnRpZmllci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzQ4QkEwRDIxRkJDMEQ0MDBG
RDMwNTQgLyogT2JqZWN0SWRlbnRpZmllci5jcHAgKi87IH07CiAJCTkzOTM0QkQzMThBMUU4QzMw
MEQwRDZBMSAvKiBTdHJpbmdWaWV3Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkzNEJEMjE4QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5nVmll
d0NvY29hLm1tICovOyB9OwogCQk5MzkzNEJENTE4QTFGMTY5MDBEMEQ2QTEgLyogU3RyaW5nVmll
d0NGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
OTM0QkQ0MThBMUYxNjkwMEQwRDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwICovOyB9OworCQk5M0Iw
N0VEODI2Qjg3MTcwMDBBMDlCMzQgLyogU3VzcGVuZGFibGVXb3JrUXVldWUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMDdFRDcyNkI4NzE1QjAw
QTA5QjM0IC8qIFN1c3BlbmRhYmxlV29ya1F1ZXVlLmNwcCAqLzsgfTsKIAkJOTNCNUI0NEUyMjEz
RDYxNjAwNEI3QUE3IC8qIEhleE51bWJlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I1QjQ0RDIyMTNENjE2MDA0QjdBQTcgLyogSGV4TnVtYmVy
LmNwcCAqLzsgfTsKIAkJOTNCNUI0NTEyMjE3MUVFQTAwNEI3QUE3IC8qIExvZ2dlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I1QjQ1MDIyMTcx
RUU5MDA0QjdBQTcgLyogTG9nZ2VyLmNwcCAqLzsgfTsKIAkJOTNGMTk5M0UxOUQ3OTU4RDAwQzIz
OTBCIC8qIFN0cmluZ1ZpZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNGMTk5M0QxOUQ3OTU4RDAwQzIzOTBCIC8qIFN0cmluZ1ZpZXcuY3BwICov
OyB9OwpAQCAtNDk5LDYgKzUwMCw4IEBACiAJCTkzOTM0QkQyMThBMUU4QzMwMEQwRDZBMSAvKiBT
dHJpbmdWaWV3Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBTdHJpbmdWaWV3Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOTM0
QkQ0MThBMUYxNjkwMEQwRDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU3RyaW5nVmlld0NGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTNBQzkxQTcxODk0MkZDNDAwMjQ0OTM5IC8qIExDaGFyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExDaGFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTkzQjA3RUQ2MjZCODZCQjUwMEEwOUIzNCAvKiBTdXNwZW5kYWJsZVdvcmtRdWV1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdXNwZW5kYWJsZVdvcmtRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5M0IwN0VENzI2Qjg3MTVCMDBBMDlCMzQgLyogU3VzcGVuZGFibGVXb3Jr
UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3VzcGVuZGFibGVXb3JrUXVldWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0I1QjQ0RDIyMTNENjE2MDA0QjdBQTcgLyog
SGV4TnVtYmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhleE51
bWJlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjVCNDUwMjIxNzFFRTkw
MDRCN0FBNyAvKiBMb2dnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTG9nZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNEMDAxN0IyNjRE
QkFDRjAwQkNGMTA5IC8qIFN0cmluZ0NvbmNhdGVuYXRlQ0YuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3RyaW5nQ29uY2F0ZW5hdGVDRi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTI5NCw2ICsxMjk3LDggQEAKIAkJCQlBNzQ4NzQ1MTE3QTBCREFFMDBGQTA0
Q0IgLyogU3RyaW5nSGFzaER1bXBDb250ZXh0LmggKi8sCiAJCQkJMEZEREJGQTUxNjY2REZBMzAw
QzU1RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFtLmNwcCAqLywKIAkJCQkwRkREQkZBNjE2NjZERkEz
MDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uaCAqLywKKwkJCQk5M0IwN0VENzI2Qjg3MTVC
MDBBMDlCMzQgLyogU3VzcGVuZGFibGVXb3JrUXVldWUuY3BwICovLAorCQkJCTkzQjA3RUQ2MjZC
ODZCQjUwMEEwOUIzNCAvKiBTdXNwZW5kYWJsZVdvcmtRdWV1ZS5oICovLAogCQkJCTU1OTdGODJD
MUQ5NEI5OTcwMDY2QkMyMSAvKiBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmggKi8sCiAJCQkJRTNF
MTU4MjUxRUFEQTUzQzAwNEEwNzlEIC8qIFN5c3RlbUZyZWUuaCAqLywKIAkJCQlFNEQyQUU0RDI2
OEE0QzdGMDBERkVBMDIgLyogU3lzdGVtTWFsbG9jLmggKi8sCkBAIC0xODAyLDYgKzE4MDcsNyBA
QAogCQkJCTkzOTM0QkQ1MThBMUYxNjkwMEQwRDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTM5MzRCRDMxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdDb2Nv
YS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0I3MTUxQTgyNUIwMDQxMjNGRiAvKiBzdHJ0
b2QuY2MgaW4gU291cmNlcyAqLywKKwkJCQk5M0IwN0VEODI2Qjg3MTcwMDBBMDlCMzQgLyogU3Vz
cGVuZGFibGVXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTIxODMwMTJDOTlFNDc2
QTg0RUVCRUE4IC8qIFN5bWJvbEltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzBBOTkzRkUx
QUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUVCNjFFREM3MjQwOUNDQzEwMDFFRkUzNiAvKiBTeXN0ZW1UcmFjaW5nQ29jb2EuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDA1MTdkZGJlM2JlN2ViMTQyMTU5Y2Qx
MTg1MThmZjU5ZTE4NTdmNTkuLjQyY2U0ODRmNjRiZDdjODBhMjQ1NDc5NjEzNjA2M2I0NDlkOGNm
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0yNjMsNiArMjYzLDcgQEAgc2V0KFdURl9QVUJM
SUNfSEVBREVSUwogICAgIFN0cmluZ0V4dHJhcy5oCiAgICAgU3RyaW5nSGFzaER1bXBDb250ZXh0
LmgKICAgICBTdHJpbmdQcmludFN0cmVhbS5oCisgICAgU3VzcGVuZGFibGVXb3JrUXVldWUuaAog
ICAgIFN5bmNocm9uaXplZEZpeGVkUXVldWUuaAogICAgIFN5c3RlbUZyZWUuaAogICAgIFN5c3Rl
bU1hbGxvYy5oCkBAIC00NTYsNiArNDU3LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgU3RhY2tT
dGF0cy5jcHAKICAgICBTdGFja1RyYWNlLmNwcAogICAgIFN0cmluZ1ByaW50U3RyZWFtLmNwcAor
ICAgIFN1c3BlbmRhYmxlV29ya1F1ZXVlLmNwcAogICAgIFRocmVhZEdyb3VwLmNwcAogICAgIFRo
cmVhZE1lc3NhZ2UuY3BwCiAgICAgVGhyZWFkaW5nLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvU3VzcGVuZGFibGVXb3JrUXVldWUuY3BwIGIvU291cmNlL1dURi93dGYvU3VzcGVuZGFi
bGVXb3JrUXVldWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzMzhiY2IzNmNhNjVkOWE5YzFmNzMxNDBkNGJl
NWI2YzhhNDhmM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdXNwZW5kYWJs
ZVdvcmtRdWV1ZS5jcHAKQEAgLTAsMCArMSwxMTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3Rm
L1N1c3BlbmRhYmxlV29ya1F1ZXVlLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitSZWY8U3VzcGVu
ZGFibGVXb3JrUXVldWU+IFN1c3BlbmRhYmxlV29ya1F1ZXVlOjpjcmVhdGUoY29uc3QgY2hhciog
bmFtZSwgV29ya1F1ZXVlOjpUeXBlIHR5cGUsIFdvcmtRdWV1ZTo6UU9TIHFvcykKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdXNwZW5kYWJsZVdvcmtRdWV1ZShuYW1lLCB0eXBlLCBxb3Mp
KTsKK30KKworU3VzcGVuZGFibGVXb3JrUXVldWU6OlN1c3BlbmRhYmxlV29ya1F1ZXVlKGNvbnN0
IGNoYXIqIG5hbWUsIFR5cGUgdHlwZSwgUU9TIHFvcykKKyAgICA6IFdvcmtRdWV1ZShuYW1lLCB0
eXBlLCBxb3MpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKK30KKwordm9pZCBTdXNw
ZW5kYWJsZVdvcmtRdWV1ZTo6c3VzcGVuZChGdW5jdGlvbjx2b2lkKCk+JiYgc3VzcGVuZEZ1bmN0
aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBMb2NrZXIgc3VzcGVuc2lvbkxvY2tlciB7
IG1fc3VzcGVuc2lvbkxvY2sgfTsKKworICAgIC8vIExhc3Qgc3VzcGVuZCBmdW5jdGlvbiB3aWxs
IGJlIHRoZSBvbmUgdGhhdCBpcyB1c2VkLgorICAgIG1fc3VzcGVuZEZ1bmN0aW9uID0gV1RGTW92
ZShzdXNwZW5kRnVuY3Rpb24pOworICAgIG1fc3VzcGVuc2lvbkNvbXBsZXRpb25IYW5kbGVycy5h
cHBlbmQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmIChtX3Nob3VsZFN1c3Bl
bmQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2hvdWxkU3VzcGVuZCA9IHRydWU7CisgICAg
ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geyB9KTsKK30KKwordm9p
ZCBTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6cmVzdW1lKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIExvY2tlciBzdXNwZW5zaW9uTG9ja2VyIHsgbV9zdXNwZW5zaW9uTG9jayB9
OworCisgICAgaWYgKCFtX3Nob3VsZFN1c3BlbmQpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
c2hvdWxkU3VzcGVuZCA9IGZhbHNlOworICAgIG1fc3VzcGVuc2lvbkNvbmRpdGlvbi5ub3RpZnlP
bmUoKTsKK30KKwordm9pZCBTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6ZGlzcGF0Y2goRnVuY3Rpb248
dm9pZCgpPiYmIGZ1bmN0aW9uKQoreworICAgIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9u
KV0oKSB7CisgICAgICAgIHN1c3BlbmRJZk5lZWRlZCgpOworICAgICAgICBmdW5jdGlvbigpOwor
ICAgIH0pOworfQorCit2b2lkIFN1c3BlbmRhYmxlV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKFNl
Y29uZHMgc2Vjb25kcywgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQoreworICAgIFdvcmtR
dWV1ZTo6ZGlzcGF0Y2hBZnRlcihzZWNvbmRzLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXSgpIHsKKyAgICAgICAgc3Vz
cGVuZElmTmVlZGVkKCk7CisgICAgICAgIGZ1bmN0aW9uKCk7CisgICAgfSk7Cit9CisKK3ZvaWQg
U3VzcGVuZGFibGVXb3JrUXVldWU6Omludm9rZUFsbFN1c3BlbnNpb25Db21wbGV0aW9uSGFuZGxl
cnMoKQoreworICAgIGlmIChtX3N1c3BlbnNpb25Db21wbGV0aW9uSGFuZGxlcnMuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFu
ZGxlcnMgPSBzdGQ6OmV4Y2hhbmdlKG1fc3VzcGVuc2lvbkNvbXBsZXRpb25IYW5kbGVycywgeyB9
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgd2hpbGUgKCFjb21wbGV0aW9uSGFuZGxlcnMuaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRp
b25IYW5kbGVycy50YWtlRmlyc3QoKSkKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOworICAgICAgICB9CisgICAgfSk7Cit9CisKK3ZvaWQgU3VzcGVuZGFibGVXb3JrUXVldWU6
OnN1c3BlbmRJZk5lZWRlZCgpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAg
TG9ja2VyIHN1c3BlbnNpb25Mb2NrZXIgeyBtX3N1c3BlbnNpb25Mb2NrIH07CisKKyAgICBpZiAo
IW1fc2hvdWxkU3VzcGVuZCkgeworICAgICAgICBpbnZva2VBbGxTdXNwZW5zaW9uQ29tcGxldGlv
bkhhbmRsZXJzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdXNwZW5k
RnVuY3Rpb24pCisgICAgICAgIG1fc3VzcGVuZEZ1bmN0aW9uKCk7CisgICAgaW52b2tlQWxsU3Vz
cGVuc2lvbkNvbXBsZXRpb25IYW5kbGVycygpOworCisgICAgd2hpbGUgKG1fc2hvdWxkU3VzcGVu
ZCkKKyAgICAgICAgbV9zdXNwZW5zaW9uQ29uZGl0aW9uLndhaXQobV9zdXNwZW5zaW9uTG9jayk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3Vz
cGVuZGFibGVXb3JrUXVldWUuaCBiL1NvdXJjZS9XVEYvd3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2NkY2UwY2IxZTU3MTJhYTUwMDA3MDhlZDVlYzIxNDkwOWJlNjQ5NQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVlLmgK
QEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgorI2lu
Y2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3Rm
L1dvcmtRdWV1ZS5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgU3VzcGVuZGFibGVXb3Jr
UXVldWUgOiBwdWJsaWMgV29ya1F1ZXVlIHsKK3B1YmxpYzoKKworICAgIHVzaW5nIFR5cGUgPSBX
b3JrUXVldWU6OlR5cGU7CisgICAgdXNpbmcgUU9TID0gV29ya1F1ZXVlOjpRT1M7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U3VzcGVuZGFibGVXb3JrUXVldWU+IGNyZWF0ZShj
b25zdCBjaGFyKiBuYW1lLCBUeXBlID0gVHlwZTo6U2VyaWFsLCBRT1MgPSBRT1M6OkRlZmF1bHQp
OworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3VzcGVuZChGdW5jdGlvbjx2b2lkKCk+
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgcmVzdW1lKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2goRnVu
Y3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNw
YXRjaEFmdGVyKFNlY29uZHMsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CisKK3ByaXZhdGU6CisgICAg
U3VzcGVuZGFibGVXb3JrUXVldWUoY29uc3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKTsKKyAgICB2
b2lkIGludm9rZUFsbFN1c3BlbnNpb25Db21wbGV0aW9uSGFuZGxlcnMoKTsKKyAgICB2b2lkIHN1
c3BlbmRJZk5lZWRlZCgpOworCisgICAgTG9jayBtX3N1c3BlbnNpb25Mb2NrOworICAgIENvbmRp
dGlvbiBtX3N1c3BlbnNpb25Db25kaXRpb247CisgICAgYm9vbCBtX3Nob3VsZFN1c3BlbmQgV1RG
X0dVQVJERURfQllfTE9DSyhtX3N1c3BlbnNpb25Mb2NrKSB7IGZhbHNlIH07CisgICAgRnVuY3Rp
b248dm9pZCgpPiBtX3N1c3BlbmRGdW5jdGlvbiBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fc3VzcGVu
c2lvbkxvY2spOworICAgIERlcXVlPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+IG1fc3VzcGVu
c2lvbkNvbXBsZXRpb25IYW5kbGVyczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmggYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVl
dWUuaAppbmRleCBjZGExZDE4NGExYTMxNWRhNGMzOTRiNTdjNjAzNmVkYWM5ZDY5NDZhLi5lYmRl
ZmY2MjFiMGMxZWJjMGQwMWUwYjg2OTM4NTkyZjZlOTliOGJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaApAQCAt
NDEsNyArNDEsNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotY2xhc3MgV29ya1F1ZXVlIGZpbmFs
IDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CitjbGFzcyBXb3JrUXVldWUgOiBwdWJsaWMg
RnVuY3Rpb25EaXNwYXRjaGVyIHsKIAogcHVibGljOgogICAgIGVudW0gY2xhc3MgVHlwZSB7CkBA
IC01Myw5ICs1Myw5IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFdv
cmtRdWV1ZSYgbWFpbigpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8V29y
a1F1ZXVlPiBjcmVhdGUoY29uc3QgY2hhciogbmFtZSwgVHlwZSA9IFR5cGU6OlNlcmlhbCwgUU9T
ID0gUU9TOjpEZWZhdWx0KTsKLSAgICB+V29ya1F1ZXVlKCkgZmluYWw7CisgICAgfldvcmtRdWV1
ZSgpIG92ZXJyaWRlOwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2goRnVu
Y3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNw
YXRjaChGdW5jdGlvbjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGRpc3BhdGNoQWZ0ZXIoU2Vjb25kcywgRnVuY3Rpb248dm9pZCgpPiYmKTsKICAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaFN5bmMoRnVuY3Rpb248dm9pZCgpPiYmKTsK
IApAQCAtNjcsOSArNjcsMTAgQEAgcHVibGljOgogICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBjb25z
dCB7IHJldHVybiAqbV9ydW5Mb29wOyB9CiAjZW5kaWYKIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoK
ICAgICBXb3JrUXVldWUoY29uc3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKTsKIAorcHJpdmF0ZToK
ICAgICBzdGF0aWMgUmVmPFdvcmtRdWV1ZT4gY29uc3RydWN0TWFpbldvcmtRdWV1ZSgpOwogI2lm
IFVTRShDT0NPQV9FVkVOVF9MT09QKQogICAgIGV4cGxpY2l0IFdvcmtRdWV1ZShPU09iamVjdFB0
cjxkaXNwYXRjaF9xdWV1ZV90PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDFlOGUyOGJkYWU4ZjAyZTQwZmNiNGQx
YTliNTcwMmVhNWVmMWMyMDkuLmMzNDg4Yzk0NGY0NzU3ZDUzNjhkMDVmYzIyZDExYjY3Y2VmYmUx
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmNwcApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgPHd0Zi9Sb2Jpbkhvb2RIYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZFNldC5oPgor
I2luY2x1ZGUgPHd0Zi9TdXNwZW5kYWJsZVdvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zNDYsNyArMzQ3LDcg
QEAgSGFzaFNldDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSo+JiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG8KICAgICByZXR1cm4gbWFwOwogfQogCi1SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSwgV29ya1F1ZXVl
JiB3b3JrUXVldWUsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9z
dCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5UGF0aCwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKQorUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYg
c3RvcmUsIFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWUmIHdvcmtRdWV1ZSwgU2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VE
aXJlY3RvcnlQYXRoLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUoc3RvcmUsIHdvcmtRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9z
dCkKICAgICAsIG1fc3RvcmFnZURpcmVjdG9yeVBhdGgoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnlQYXRoLCAib2JzZXJ2YXRpb25zLmRiIl9zKSkK
ICAgICAsIG1fdHJhbnNhY3Rpb24obV9kYXRhYmFzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5kZXggZWE2YjU4N2QxY2UxNzAzZTAz
MDhiN2MxYWRmYTk0NjdjMDgwMzAxMS4uZDQ3MDY5YmI2MTFiNDlmODgzODJjYjMyNzIzNGNhMWY5
ZmY0ZDAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmgKQEAgLTM4LDcgKzM4LDEwIEBACiAjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRl
IDx3dGYvV29ya1F1ZXVlLmg+CisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3VzcGVuZGFibGVX
b3JrUXVldWU7Cit9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNRTGl0ZURhdGFiYXNl
OwpAQCAtNzYsNyArNzksNyBAQCB0eXBlZGVmIHN0ZDo6cGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPj4gVGFibGVBbmRJbmRleFBhaXI7CiAvLyBUaGlzIGlzIGFsd2F5cyBjb25zdHJ1
Y3RlZCAvIHVzZWQgLyBkZXN0cm95ZWQgb24gdGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZSdzIHN0YXRpc3RpY3MgcXVldWUuCiBjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZSBmaW5hbCA6IHB1YmxpYyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgewog
cHVibGljOgotICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYsIFdvcmtRdWV1ZSYsIFNob3VsZEluY2x1ZGVMb2NhbGhv
c3QsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeVBhdGgsIFBBTDo6U2Vzc2lvbklEKTsK
KyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZShXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUmLCBXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlJiwgU2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5UGF0aCwgUEFMOjpTZXNz
aW9uSUQpOwogICAgIH5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSgpOwogCiAg
ICAgc3RhdGljIEhhc2hTZXQ8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUqPiYg
YWxsU3RvcmVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmUuY3BwCmluZGV4IGFkNGEzYmI0N2UwY2ZhMjcyOTc2YWMzMWQ0ODFlNTUwMWRmNjQx
Y2IuLjM1NDYyYWM3ODU5N2I5ZTgyYjlkMTc0NGY3MTc2NjZlYmExMjVhOGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC02OSw3
ICs2OSw3IEBAIHN0YXRpYyB2b2lkIHBydW5lUmVzb3VyY2VzKEhhc2hNYXA8UmVnaXN0cmFibGVE
b21haW4sIFVuaXF1ZVJlZjxSZXNvdXJjZUxvYWRTdGF0CiAgICAgICAgIHN0YXRpc3RpY3NNYXAu
cmVtb3ZlKHN0YXRpc3RpY3NUb1BydW5lW2ldLmRvbWFpbik7CiB9CiAKLVJlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlKFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgc3RvcmUsIFdvcmtRdWV1ZSYgd29ya1F1ZXVl
LCBTaG91bGRJbmNsdWRlTG9jYWxob3N0IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpCitSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIHN0b3JlLCBXVEY6OlN1c3BlbmRh
YmxlV29ya1F1ZXVlJiB3b3JrUXVldWUsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5j
bHVkZUxvY2FsaG9zdCkKICAgICA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShzdG9yZSwg
d29ya1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KQogewogICAgIFJFTEVBU0VfQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmgKaW5kZXggNDlkM2Q4MjMyOTE1NTVjNjRiMDQ0YmY4MjNkM2IwMmE2
YTNmZWU3Yi4uMTIzZmQ5YjZjODBmODVkNzBlNjhjZWYyODdkN2U2YTU3NzIxODBhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaApAQCAtMzIs
NyArMzIsNiBAQAogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotI2luY2x1ZGUgPHd0Zi9X
b3JrUXVldWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgS2V5ZWREZWNvZGVyOwpA
QCAtNDcsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIC8vIFRoaXMgaXMgYWx3YXlzIGNv
bnN0cnVjdGVkIC8gdXNlZCAvIGRlc3Ryb3llZCBvbiB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlJ3Mgc3RhdGlzdGljcyBxdWV1ZS4KIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZSBmaW5hbCA6IHB1YmxpYyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUg
ewogcHVibGljOgotICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZShXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmLCBXb3JrUXVldWUmLCBTaG91bGRJbmNsdWRlTG9jYWxo
b3N0KTsKKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUoV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlJiwgV1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZSYsIFNob3VsZElu
Y2x1ZGVMb2NhbGhvc3QpOwogCiAgICAgdm9pZCBjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBiZjFjNzUzN2Ji
MzQzY2UxNGExY2NjOTc3ODQ1OWE0NTNmMmVlOTQ4Li5mNjJmN2Y3MzAyZGQ0OTAxMjU1NGRiNTQ4
NTQzNzUwMTM3Y2MzN2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIGJvb2wgT3BlcmF0aW5nRGF0ZTo6b3BlcmF0b3I8
PShjb25zdCBPcGVyYXRpbmdEYXRlJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gc2Vjb25kc1Np
bmNlRXBvY2goKSA8PSBvdGhlci5zZWNvbmRzU2luY2VFcG9jaCgpOwogfQogCi1SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUmIHN0b3JlLCBXb3JrUXVldWUmIHdvcmtRdWV1ZSwgU2hvdWxk
SW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KQorUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlJiBzdG9yZSwgV1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZSYgd29ya1F1
ZXVlLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpCiAgICAg
OiBtX3N0b3JlKHN0b3JlKQogICAgICwgbV93b3JrUXVldWUod29ya1F1ZXVlKQogICAgICwgbV9z
aG91bGRJbmNsdWRlTG9jYWxob3N0KHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggNmE1NjA1NmNjNTk0NjI4NDIxY2Zj
Y2E4ZmZkOTE1NjVmOGFhODY1Ny4uNDg3YWMwMWRlYzg2ZTU3MGMwM2FiNmM1ODA4NmQ4ZjZhOGYy
YzM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMzQs
MTIgKzM0LDE1IEBACiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L1dvcmtRdWV1ZS5oPgogCiAjaWYgSEFWRShDT1JFX1BSRURJQ1RJT04pCiAjaW5jbHVkZSAiUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5oIgogI2VuZGlmCiAKK25hbWVzcGFj
ZSBXVEYgeworY2xhc3MgU3VzcGVuZGFibGVXb3JrUXVldWU7Cit9CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEtleWVkRGVjb2RlcjsKIGNsYXNzIEtleWVkRW5jb2RlcjsKQEAgLTIxNyw3
ICsyMjAsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHVuc2lnbmVkIGNvbXB1
dGVJbXBvcnRhbmNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKIAot
ICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUmLCBXb3JrUXVldWUmLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKKyAgICBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiwgV1RG
OjpTdXNwZW5kYWJsZVdvcmtRdWV1ZSYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwogICAgIAog
ICAgIGJvb2wgZGF0YVJlY29yZHNCZWluZ1JlbW92ZWQoKSBjb25zdCB7IHJldHVybiBtX2RhdGFS
ZWNvcmRzQmVpbmdSZW1vdmVkOyB9CiAKQEAgLTIyOCw3ICsyMzEsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCB2b2lkIHBydW5lU3RhdGlzdGljc0lmTmVlZGVkKCkgPSAwOwogCiAgICAgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSgpIHsgcmV0dXJuIG1fc3RvcmU7IH0K
LSAgICBSZWY8V29ya1F1ZXVlPiYgd29ya1F1ZXVlKCkgeyByZXR1cm4gbV93b3JrUXVldWU7IH0K
KyAgICBSZWY8V1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZT4mIHdvcmtRdWV1ZSgpIHsgcmV0dXJu
IG1fd29ya1F1ZXVlOyB9CiAjaWYgSEFWRShDT1JFX1BSRURJQ1RJT04pCiAgICAgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYSYgY2xhc3NpZmllcigpIHsgcmV0dXJuIG1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXI7IH0KICNlbHNlCkBAIC0yNzgsNyArMjgxLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUNsaWVudFNpZGVDb29raWVzQWdlQ2FwKCk7CiAK
ICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIG1fc3RvcmU7Ci0gICAgUmVmPFdv
cmtRdWV1ZT4gbV93b3JrUXVldWU7CisgICAgUmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+
IG1fd29ya1F1ZXVlOwogI2lmIEhBVkUoQ09SRV9QUkVESUNUSU9OKQogICAgIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3Np
ZmllcjsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwCmluZGV4IDRmODA3NTFkZjAwMzBmNmNmMjk4ZDA0ZGQ3MDBkOTdlM2ZiMjllMWUuLjI3
YzY3YzIxNjc2YjIwY2VmNmE5ODYzNjJhMjRmMjY4NTdkYjlhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC01NCwxNiArNTQsMTIgQEAK
ICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3Nz
VGhyZWFkQ29waWVyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVk
ZSA8d3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmlu
YXJ5U2VtYXBob3JlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKLXN0YXRpYyBMb2NrIGdsb2JhbFN1c3BlbnNpb25Mb2NrOwotc3RhdGljIENvbmRp
dGlvbiBnbG9iYWxTdXNwZW5zaW9uQ29uZGl0aW9uOwotc3RhdGljIGJvb2wgZ2xvYmFsU2hvdWxk
U3VzcGVuZCBXVEZfR1VBUkRFRF9CWV9MT0NLKGdsb2JhbFN1c3BlbnNpb25Mb2NrKSB7IGZhbHNl
IH07Ci1zdGF0aWMgdWludDY0X3QgZ2xvYmFsU3VzcGVuc2lvbklkZW50aWZpZXIgV1RGX0dVQVJE
RURfQllfTE9DSyhnbG9iYWxTdXNwZW5zaW9uTG9jaykgeyAwIH07Ci0KIGNvbnN0IE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+JiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0
b3JlZERhdGFUeXBlcygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+PiBkYXRhVHlwZXMoc3RkOjppbml0aWFsaXplcl9saXN0PFdlYnNpdGVE
YXRhVHlwZT4oewpAQCAtMTQ3LDkgKzE0Myw5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzCiAg
ICAgfSk7CiB9CiAKLXN0YXRpYyBSZWY8V29ya1F1ZXVlPiBzaGFyZWRTdGF0aXN0aWNzUXVldWUo
KQorc3RhdGljIFJlZjxXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlPiBzaGFyZWRTdGF0aXN0aWNz
UXVldWUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWY8V29ya1F1ZXVlPj4gcXVl
dWUoV29ya1F1ZXVlOjpjcmVhdGUoIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBQcm9j
ZXNzIERhdGEgUXVldWUiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6
OlV0aWxpdHkpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdURjo6U3VzcGVuZGFi
bGVXb3JrUXVldWU+PiBxdWV1ZShXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlOjpjcmVhdGUoIldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBQcm9jZXNzIERhdGEgUXVldWUiLCAgV29ya1F1
ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtRdWV1ZTo6UU9TOjpVdGlsaXR5KSk7CiAgICAgcmV0dXJu
IHF1ZXVlLmdldCgpLmNvcHlSZWYoKTsKIH0KIApAQCAtMTQ0OCwzMyArMTQ0NCwxOSBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRh
KENvbXBsZXRpb25IYW5kbGVyPAogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgTG9ja2VyIHN1c3BlbnNpb25Mb2NrZXIgeyBnbG9iYWxTdXNwZW5zaW9uTG9jayB9
OwotICAgIGdsb2JhbFNob3VsZFN1c3BlbmQgPSB0cnVlOwotCi0gICAgc2hhcmVkU3RhdGlzdGlj
c1F1ZXVlKCktPmRpc3BhdGNoKFtzdXNwZW5zaW9uSWRlbnRpZmllciA9ICsrZ2xvYmFsU3VzcGVu
c2lvbklkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildICgpIG11dGFibGUgewotICAgICAgICBMb2NrZXIgc3VzcGVuc2lvbkxvY2tlciB7IGds
b2JhbFN1c3BlbnNpb25Mb2NrIH07Ci0gICAgICAgIGlmICghZ2xvYmFsU2hvdWxkU3VzcGVuZCB8
fCBzdXNwZW5zaW9uSWRlbnRpZmllciAhPSBnbG9iYWxTdXNwZW5zaW9uSWRlbnRpZmllcikgewot
ICAgICAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCisgICAgc2hhcmVkU3RhdGlzdGljc1F1ZXVlKCktPnN1c3BlbmQoW10oKSBtdXRhYmxl
IHsKICAgICAgICAgZm9yIChhdXRvJiBkYXRhYmFzZVN0b3JlIDogUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmFsbFN0b3JlcygpKQogICAgICAgICAgICAgZGF0YWJhc2VTdG9y
ZS0+aW50ZXJydXB0KCk7Ci0KLSAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Ci0KLSAgICAgICAgd2hpbGUgKGdsb2JhbFNob3VsZFN1c3BlbmQpCi0gICAg
ICAgICAgICBnbG9iYWxTdXNwZW5zaW9uQ29uZGl0aW9uLndhaXQoZ2xvYmFsU3VzcGVuc2lvbkxv
Y2spOwotICAgIH0pOworICAgIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAog
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc3VtZSgpCiB7CiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tlciBzdXNwZW5zaW9uTG9ja2VyIHsg
Z2xvYmFsU3VzcGVuc2lvbkxvY2sgfTsKLSAgICBnbG9iYWxTaG91bGRTdXNwZW5kID0gZmFsc2U7
Ci0gICAgZ2xvYmFsU3VzcGVuc2lvbkNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICBzaGFyZWRT
dGF0aXN0aWNzUXVldWUoKS0+cmVzdW1lKCk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNz
ZWQsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29v
a2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaAppbmRleCAwYjI2MTA0ZmUyMGU5OTZmY2JlZTQxZGY3ZGEyNjlhMDU2YjA5
NDM4Li43MjYwMzg5MzYzMDEwYWM0MDFlYzY5MzM1N2ZiNGY5Y2EyMTNmMTQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC01MSw3ICs1MSw3IEBA
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXVEYgewotY2xh
c3MgV29ya1F1ZXVlOworY2xhc3MgU3VzcGVuZGFibGVXb3JrUXVldWU7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTE0NCw3ICsxNDQsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29u
c3QgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4mIG1vbml0b3JlZERhdGFUeXBlcygpOwogCi0g
ICAgV1RGOjpXb3JrUXVldWUmIHN0YXRpc3RpY3NRdWV1ZSgpIHsgcmV0dXJuIG1fc3RhdGlzdGlj
c1F1ZXVlLmdldCgpOyB9CisgICAgV1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZSYgc3RhdGlzdGlj
c1F1ZXVlKCkgeyByZXR1cm4gbV9zdGF0aXN0aWNzUXVldWUuZ2V0KCk7IH0KIAogICAgIHZvaWQg
cG9wdWxhdGVNZW1vcnlTdG9yZUZyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wp
OwpAQCAtMjc2LDcgKzI3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICBX
ZWFrUHRyPE5ldHdvcmtTZXNzaW9uPiBtX25ldHdvcmtTZXNzaW9uOwotICAgIFJlZjxXVEY6Oldv
cmtRdWV1ZT4gbV9zdGF0aXN0aWNzUXVldWU7CisgICAgUmVmPFdURjo6U3VzcGVuZGFibGVXb3Jr
UXVldWU+IG1fc3RhdGlzdGljc1F1ZXVlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU+IG1fc3RhdGlzdGljc1N0b3JlOwogCiAgICAgUnVuTG9vcDo6VGlt
ZXI8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBtX2RhaWx5VGFza3NUaW1lcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0
b3JhZ2VEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCmluZGV4IDU2OWZkYjJkZjhmNTNlYWJjZjE5MTgx
MjQzMGFiNmZkYTY4MDI1NDAuLmQ1MjVlZjY5MjM5ZmU3ODhhMThkMzYzNDE0YThmYzRlNzVlZGMz
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcApAQCAtMzQsNiArMzQsNyBAQAog
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVl
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC00
MiwxMiArNDMsMTIgQEAgY29uc3RleHByIGF1dG8gZ2V0SXRlbXNRdWVyeVN0cmluZyB7ICJTRUxF
Q1Qga2V5LCB2YWx1ZSBGUk9NIEl0ZW1UYWJsZSJfcyB9OwogY29uc3RleHByIHVuc2lnbmVkIG1h
eGltdW1TaXplRm9yVmFsdWVzS2VwdEluTWVtb3J5IHsgMTAyNCB9OyAvLyAxIEtCCiBjb25zdGV4
cHIgU2Vjb25kcyB0cmFuc2FjdGlvbkR1cmF0aW9uIHsgNTAwX21zIH07CiAKLVJlZjxMb2NhbFN0
b3JhZ2VEYXRhYmFzZT4gTG9jYWxTdG9yYWdlRGF0YWJhc2U6OmNyZWF0ZShSZWY8V29ya1F1ZXVl
PiYmIHdvcmtRdWV1ZSwgU3RyaW5nJiYgZGF0YWJhc2VQYXRoLCB1bnNpZ25lZCBxdW90YUluQnl0
ZXMpCitSZWY8TG9jYWxTdG9yYWdlRGF0YWJhc2U+IExvY2FsU3RvcmFnZURhdGFiYXNlOjpjcmVh
dGUoUmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+JiYgd29ya1F1ZXVlLCBTdHJpbmcmJiBk
YXRhYmFzZVBhdGgsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBMb2NhbFN0b3JhZ2VEYXRhYmFzZShXVEZNb3ZlKHdvcmtRdWV1ZSksIFdURk1vdmUo
ZGF0YWJhc2VQYXRoKSwgcXVvdGFJbkJ5dGVzKSk7CiB9CiAKLUxvY2FsU3RvcmFnZURhdGFiYXNl
OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZShSZWY8V29ya1F1ZXVlPiYmIHdvcmtRdWV1ZSwgU3RyaW5n
JiYgZGF0YWJhc2VQYXRoLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCitMb2NhbFN0b3JhZ2VEYXRh
YmFzZTo6TG9jYWxTdG9yYWdlRGF0YWJhc2UoUmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+
JiYgd29ya1F1ZXVlLCBTdHJpbmcmJiBkYXRhYmFzZVBhdGgsIHVuc2lnbmVkIHF1b3RhSW5CeXRl
cykKICAgICA6IG1fd29ya1F1ZXVlKFdURk1vdmUod29ya1F1ZXVlKSkKICAgICAsIG1fZGF0YWJh
c2VQYXRoKFdURk1vdmUoZGF0YWJhc2VQYXRoKSkKICAgICAsIG1fcXVvdGFJbkJ5dGVzKHF1b3Rh
SW5CeXRlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmgKaW5kZXggNmQ2NjQ2MWU4MDUyNDhl
ZGMyMTM0YWQxMDU2YjViZWI4Yzk3ZGJkMS4uNjNmMDhkZmFiZjA3YzJjM2UyMWFlNTI3OTNhN2E3
NTAyYTVmMzdkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmgKQEAgLTI4LDcgKzI4LDEw
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KLSNpbmNsdWRlIDx3dGYvV29ya1F1
ZXVlLmg+CisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3VzcGVuZGFibGVXb3JrUXVldWU7Cit9
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNj
b3BlOwpAQCAtNDEsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTG9jYWxT
dG9yYWdlRGF0YWJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxMb2NhbFN0b3JhZ2VEYXRhYmFzZT4s
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxMb2NhbFN0b3JhZ2VEYXRhYmFzZT4gewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8TG9jYWxTdG9yYWdlRGF0YWJhc2U+IGNyZWF0ZShSZWY8V29ya1F1ZXVl
PiYmLCBTdHJpbmcmJiBkYXRhYmFzZVBhdGgsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAg
c3RhdGljIFJlZjxMb2NhbFN0b3JhZ2VEYXRhYmFzZT4gY3JlYXRlKFJlZjxXVEY6OlN1c3BlbmRh
YmxlV29ya1F1ZXVlPiYmLCBTdHJpbmcmJiBkYXRhYmFzZVBhdGgsIHVuc2lnbmVkIHF1b3RhSW5C
eXRlcyk7CiAgICAgfkxvY2FsU3RvcmFnZURhdGFiYXNlKCk7CiAKICAgICBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiBpdGVtcygpIGNvbnN0OwpAQCAtNTgsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBoYW5kbGVMb3dNZW1vcnlXYXJuaW5nKCk7CiAKIHByaXZhdGU6Ci0gICAgTG9jYWxTdG9y
YWdlRGF0YWJhc2UoUmVmPFdvcmtRdWV1ZT4mJiwgU3RyaW5nJiYgZGF0YWJhc2VQYXRoLCB1bnNp
Z25lZCBxdW90YUluQnl0ZXMpOworICAgIExvY2FsU3RvcmFnZURhdGFiYXNlKFJlZjxXVEY6OlN1
c3BlbmRhYmxlV29ya1F1ZXVlPiYmLCBTdHJpbmcmJiBkYXRhYmFzZVBhdGgsIHVuc2lnbmVkIHF1
b3RhSW5CeXRlcyk7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZENyZWF0ZURhdGFiYXNlIDogYm9v
bCB7IE5vLCBZZXMgfTsKICAgICBib29sIG9wZW5EYXRhYmFzZShTaG91bGRDcmVhdGVEYXRhYmFz
ZSk7CkBAIC03MSw3ICs3NCw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpTUUxpdGVTdGF0
ZW1lbnRBdXRvUmVzZXRTY29wZSBzY29wZWRTdGF0ZW1lbnQoc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OlNRTGl0ZVN0YXRlbWVudD4mLCBBU0NJSUxpdGVyYWwgcXVlcnkpIGNvbnN0OwogCi0gICAg
UmVmPFdvcmtRdWV1ZT4gbV93b3JrUXVldWU7CisgICAgUmVmPFdURjo6U3VzcGVuZGFibGVXb3Jr
UXVldWU+IG1fd29ya1F1ZXVlOwogICAgIFN0cmluZyBtX2RhdGFiYXNlUGF0aDsKICAgICBtdXRh
YmxlIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlIG1fZGF0YWJhc2U7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5h
bWVzcGFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9j
YWxTdG9yYWdlTmFtZXNwYWNlLmNwcAppbmRleCA2MDE1M2JmN2Q2YjA3ZjU4ZTBlYTE1OTVhMTRm
YzhjODEzNTNjMTQ5Li40ZDExOWM2ZTE2NTYzMTg2Y2RlNzEyY2YwZGMyZWViZGNkMGNkZDQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxT
dG9yYWdlTmFtZXNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2U6On5Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UoKQogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogfQogCi1TdG9yYWdlQXJlYSYgTG9jYWxTdG9yYWdlTmFtZXNw
YWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5
T3JpZ2luLCBJc0VwaGVtZXJhbCBpc0VwaGVtZXJhbCwgUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVl
dWUpCitTdG9yYWdlQXJlYSYgTG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3Jh
Z2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luLCBJc0VwaGVtZXJhbCBp
c0VwaGVtZXJhbCwgUmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+JiYgd29ya1F1ZXVlKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIHJldHVybiAqbV9zdG9yYWdl
QXJlYU1hcC5lbnN1cmUoc2VjdXJpdHlPcmlnaW4sIFsmXSgpIG11dGFibGUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5h
bWVzcGFjZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2Fs
U3RvcmFnZU5hbWVzcGFjZS5oCmluZGV4IGFkY2E5ZjRhMjU1ZjU4ZTIxMDZkZDZhNGVjZWFkZGZm
ZjI0NTFhYzMuLjVlMDczNDk3YTIxODg0MGJhYmU2NGIxYjBmODlmOWYwMzM2Y2I0MTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmgKQEAgLTMxLDcgKzMxLDEwIEBACiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgorCituYW1lc3BhY2UgV1RGIHsK
K2NsYXNzIFN1c3BlbmRhYmxlV29ya1F1ZXVlOworfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApA
QCAtNDgsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgU3RvcmFnZU1hbmFnZXIqIHN0b3JhZ2VNYW5h
Z2VyKCkgY29uc3QgeyByZXR1cm4gJm1fc3RvcmFnZU1hbmFnZXI7IH0KIAogICAgIGVudW0gY2xh
c3MgSXNFcGhlbWVyYWwgOiBib29sIHsgTm8sIFllcyB9OwotICAgIFN0b3JhZ2VBcmVhJiBnZXRP
ckNyZWF0ZVN0b3JhZ2VBcmVhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBJc0VwaGVt
ZXJhbCwgUmVmPFdvcmtRdWV1ZT4mJik7CisgICAgU3RvcmFnZUFyZWEmIGdldE9yQ3JlYXRlU3Rv
cmFnZUFyZWEoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIElzRXBoZW1lcmFsLCBSZWY8
V1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZT4mJik7CiAKICAgICB2b2lkIGNsZWFyU3RvcmFnZUFy
ZWFzTWF0Y2hpbmdPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJik7CiAg
ICAgdm9pZCBjbGVhckFsbFN0b3JhZ2VBcmVhcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZS5jcHAKaW5kZXggNmM2YThhMjlhNmZiOTAwOTg1ZDE1MzkxNWM1ZjkyMTc3YWM1NGNi
YS4uMTRjNmQ3ZjY3ODRlMTExYmVjZTgxYTc2ZDUxZGEzOGY2ZDkzOTIxMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuY3BwCkBAIC00Myw3ICs0Myw3IEBAIFNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlOjp+U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoKQogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogfQogCi1TdG9yYWdlQXJlYSYgU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2U6OmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlP
cmlnaW4sIFJlZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlKQorU3RvcmFnZUFyZWEmIFNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0
YSYmIHNlY3VyaXR5T3JpZ2luLCBSZWY8V1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZT4mJiB3b3Jr
UXVldWUpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgcmV0dXJuICpt
X3N0b3JhZ2VBcmVhTWFwLmVuc3VyZShzZWN1cml0eU9yaWdpbiwgWyZdKCkgbXV0YWJsZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9TZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5oCmluZGV4IGY1NTNmNGMyY2FlMTgxMDJlNjNm
MjU1MDYzZmUzMzBiMDNmZjlmMWUuLjc1YzRlNDhlYmYwOTEzZWRkOGU4YjJmODE1ODAyYzE0YTFk
YTNjMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9TZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9TZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5oCkBAIC0zMSw2ICszMSwx
MSBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5o
PgogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN1c3BlbmRhYmxlV29ya1F1ZXVlOworfQorCisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTdG9yYWdlQXJlYTsKQEAgLTQ0LDcgKzQ5LDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdl
QXJlYU1hcC5pc0VtcHR5KCk7IH0KIAotICAgIFN0b3JhZ2VBcmVhJiBnZXRPckNyZWF0ZVN0b3Jh
Z2VBcmVhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBSZWY8V29ya1F1ZXVlPiYmKTsK
KyAgICBTdG9yYWdlQXJlYSYgZ2V0T3JDcmVhdGVTdG9yYWdlQXJlYShXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiwgUmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+JiYpOwogCiAgICAg
dm9pZCBjbG9uZVRvKFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlJiBuZXdTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCmluZGV4IDgzMTk0YjA1ZmI0ZWUxMTc3N2RkZjEwYWVk
Mjc4ZjYwYzBiOTk4MmMuLjVlMDAyYzk5NTExN2JlMzMyNzQyNzMxMTBkMjBhMzlkOGM2MThlN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhLmNwcApAQCAtMzAsMTIgKzMwLDEzIEBACiAjaW5jbHVkZSAiTG9jYWxTdG9y
YWdlTmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5jbHVkZSA8d3RmL1N1c3BlbmRhYmxlV29ya1F1
ZXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAotU3RvcmFnZUFyZWE6OlN0b3JhZ2VBcmVhKExvY2FsU3RvcmFnZU5hbWVzcGFjZSogbG9jYWxT
dG9yYWdlTmFtZXNwYWNlLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2lu
LCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFJlZjxXb3JrUXVldWU+JiYgcXVldWUpCitTdG9yYWdl
QXJlYTo6U3RvcmFnZUFyZWEoTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiBsb2NhbFN0b3JhZ2VOYW1l
c3BhY2UsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIHVuc2lnbmVk
IHF1b3RhSW5CeXRlcywgUmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+JiYgcXVldWUpCiAg
ICAgOiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZShtYWtlV2Vha1B0cihsb2NhbFN0b3JhZ2VOYW1l
c3BhY2UpKQogICAgICwgbV9zZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikKICAgICAsIG1f
cXVvdGFJbkJ5dGVzKHF1b3RhSW5CeXRlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmgKaW5kZXggOWM3MTU3MDJkYmU2OWI3
ZjMzYzdjMzFiZTQ1Nzc5YjMyZWE5NmEzNC4uM2U4YWU5ZTcxZjQ0YjcxMWUzNDE4OGRlN2VmMzlk
NjFlNzAwMjJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmgKQEAgLTMzLDYgKzMzLDEwIEBACiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCituYW1lc3BhY2UgV1RGIHsK
K2NsYXNzIFN1c3BlbmRhYmxlV29ya1F1ZXVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBTdG9yYWdlTWFwOwogfQpAQCAtNDgsNyArNTIsNyBAQCBjbGFzcyBTdG9yYWdlQXJlYSA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTdG9yYWdlQXJlYT4gewogcHVibGljOgogICAgIHVzaW5n
IElkZW50aWZpZXIgPSBTdG9yYWdlQXJlYUlkZW50aWZpZXI7CiAgICAgCi0gICAgU3RvcmFnZUFy
ZWEoTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBSZWY8V29ya1F1ZXVlPiYmKTsKKyAgICBTdG9y
YWdlQXJlYShMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFJlZjxXVEY6OlN1c3BlbmRhYmxlV29y
a1F1ZXVlPiYmKTsKICAgICB+U3RvcmFnZUFyZWEoKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlY3Vy
aXR5T3JpZ2luOyB9CkBAIC05MCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiBtX2V2ZW50TGlzdGVuZXJzOwogCiAgICAgSWRlbnRpZmll
ciBtX2lkZW50aWZpZXI7Ci0gICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKKyAgICBSZWY8V1RG
OjpTdXNwZW5kYWJsZVdvcmtRdWV1ZT4gbV9xdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggNWJjY2EyOTliYTQxNWUzOWMwMjg0NTk5N2U1
ODA2YjI4NDZkYTkzYy4uYTEzNmJkMGFmOGM4NmYzNTdjZjM2Yzc3Y2VlZTgxMzdlMzBmZGM5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5
PgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVlLmg+CiAjaW5jbHVk
ZSA8d3RmL1dvcmtRdWV1ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTIxMSw3ICsyMTIs
NyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3Jp
Z2lucyhjb25zdCBWZWN0b3I8U2VjdXJpdHlPcgogICAgIH0KIH0KIAotU3RvcmFnZUFyZWEqIFN0
b3JhZ2VNYW5hZ2VyOjpjcmVhdGVMb2NhbFN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVu
dGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luLCBS
ZWY8V29ya1F1ZXVlPiYmIHdvcmtRdWV1ZSkKK1N0b3JhZ2VBcmVhKiBTdG9yYWdlTWFuYWdlcjo6
Y3JlYXRlTG9jYWxTdG9yYWdlQXJlYShTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBzdG9yYWdl
TmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbiwgUmVmPFdURjo6U3VzcGVu
ZGFibGVXb3JrUXVldWU+JiYgd29ya1F1ZXVlKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogCkBAIC0yMjEsNyArMjIyLDcgQEAgU3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2Vy
OjpjcmVhdGVMb2NhbFN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHMKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotU3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpjcmVh
dGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0
b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wTGV2ZWxPcmlnaW4sIFNl
Y3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCitT
dG9yYWdlQXJlYSogU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZUFy
ZWEoU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0
eU9yaWdpbkRhdGEmJiB0b3BMZXZlbE9yaWdpbiwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2lu
LCBSZWY8V1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKChIYXNoTWFwPFN0b3JhZ2VOYW1l
c3BhY2VJZGVudGlmaWVyLCBSZWZQdHI8VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlPj46
OmlzVmFsaWRLZXkoc3RvcmFnZU5hbWVzcGFjZUlEKSkpOwpAQCAtMjMyLDcgKzIzMyw3IEBAIFN0
b3JhZ2VBcmVhKiBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJl
YShTdG9yYWdlTmFtZXNwYWNlSWRlCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVN0b3JhZ2VB
cmVhKiBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1l
c3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYg
b3JpZ2luLCBSZWY8V29ya1F1ZXVlPiYmIHdvcmtRdWV1ZSkKK1N0b3JhZ2VBcmVhKiBTdG9yYWdl
TWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luLCBSZWY8
V1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCiB7CiAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKChIYXNoTWFwPFN0b3JhZ2VOYW1lc3BhY2VJ
ZGVudGlmaWVyLCBSZWZQdHI8U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+Pjo6aXNWYWxpZEtleShz
dG9yYWdlTmFtZXNwYWNlSUQpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCmluZGV4IDBkNmU3YWVkZmY2ODIy
N2JmN2RjOGFiNzE4NGFiYzZmZDMzMjFjNTQuLmY2YjJiNGNlZjkyZWMxNmI3MjEzYmI2Zjk1YmEz
M2ZiYmIyY2FjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCkBAIC0zNSw2ICszNSwxMCBAQAogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCitu
YW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN1c3BlbmRhYmxlV29ya1F1ZXVlOworfQorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIH0KQEAgLTgwLDkgKzg0LDkgQEAg
cHVibGljOgogICAgIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb2NhbFN0b3JhZ2VEYXRh
YmFzZVF1b3RhSW5CeXRlczsKIAotICAgIFN0b3JhZ2VBcmVhKiBjcmVhdGVMb2NhbFN0b3JhZ2VB
cmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiwgUmVmPFdvcmtRdWV1ZT4mJik7Ci0gICAgU3RvcmFnZUFyZWEqIGNyZWF0ZVRyYW5zaWVu
dExvY2FsU3RvcmFnZUFyZWEoU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgUmVmPFdv
cmtRdWV1ZT4mJik7Ci0gICAgU3RvcmFnZUFyZWEqIGNyZWF0ZVNlc3Npb25TdG9yYWdlQXJlYShT
dG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYs
IFJlZjxXb3JrUXVldWU+JiYpOworICAgIFN0b3JhZ2VBcmVhKiBjcmVhdGVMb2NhbFN0b3JhZ2VB
cmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiwgUmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+JiYpOworICAgIFN0b3JhZ2VBcmVh
KiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiYsIFJlZjxXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlPiYmKTsKKyAgICBTdG9yYWdl
QXJlYSogY3JlYXRlU2Vzc2lvblN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVy
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgUmVmPFdURjo6U3VzcGVuZGFibGVXb3Jr
UXVldWU+JiYpOwogCiAgICAgVmVjdG9yPFN0b3JhZ2VBcmVhSWRlbnRpZmllcj4gYWxsU3RvcmFn
ZUFyZWFJZGVudGlmaWVycygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcAppbmRl
eCAzNmFiZWE1MDUwYjg0YjE4YzkyMjcxNTY2OWI3OTIzYTA4ZGNhZGZmLi43Mzg4YTlhNDJmOGZh
M2JhMzMxNzUyZmRmMzZmODdlMzU0NDA4MDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAgUmVmPFN0b3JhZ2VNYW5hZ2VyU2V0PiBTdG9yYWdlTWFuYWdlclNl
dDo6Y3JlYXRlKCkKIH0KIAogU3RvcmFnZU1hbmFnZXJTZXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0KCkK
LSAgICA6IG1fcXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuV2ViU3Rv
cmFnZSIpKQorICAgIDogbV9xdWV1ZShXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlOjpjcmVhdGUo
ImNvbS5hcHBsZS5XZWJLaXQuV2ViU3RvcmFnZSIpKQogewogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CiAKQEAgLTE3NywzNCArMTc3LDE2IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6
OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrZXIgc3VzcGVuc2lv
bkxvY2tlciB7IG1fc3VzcGVuc2lvbkxvY2sgfTsKLSAgICBtX3Nob3VsZFN1c3BlbmQgPSB0cnVl
OwotCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgc3VzcGVuc2lvbklkZW50aWZpZXIgPSArK21fc3VzcGVuc2lvbklkZW50aWZpZXIs
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFi
bGUgewotICAgICAgICBMb2NrZXIgc3VzcGVuc2lvbkxvY2tlciB7IG1fc3VzcGVuc2lvbkxvY2sg
fTsKLSAgICAgICAgaWYgKCFtX3Nob3VsZFN1c3BlbmQgfHwgc3VzcGVuc2lvbklkZW50aWZpZXIg
IT0gbV9zdXNwZW5zaW9uSWRlbnRpZmllcikgewotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBmbHVzaCBsb2NhbCBzdG9y
YWdlIHRvIGRpc2sgYmVmb3JlIHdlIHN1c3BlbmQgdGhlIHRocmVhZCBhcyB3ZSB3YW50IHRvIG1h
a2Ugc3VyZSBhbnkgcGVuZGluZwotICAgICAgICAvLyBTUUwgdHJhbnNhY3Rpb24gaGFzIGJlZW4g
Y29tbWl0dGVkLgotICAgICAgICBmbHVzaExvY2FsU3RvcmFnZSgpOwotCi0gICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0KLSAgICAg
ICAgd2hpbGUgKG1fc2hvdWxkU3VzcGVuZCkKLSAgICAgICAgICAgIG1fc3VzcGVuc2lvbkNvbmRp
dGlvbi53YWl0KG1fc3VzcGVuc2lvbkxvY2spOwotICAgIH0pOworICAgIG1fcXVldWUtPnN1c3Bl
bmQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5mbHVzaExvY2FsU3RvcmFnZSgpOworICAgIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAogdm9pZCBTdG9yYWdlTWFuYWdlclNldDo6cmVzdW1lKCkKIHsKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja2VyIHN1c3BlbnNpb25Mb2NrZXIgeyBt
X3N1c3BlbnNpb25Mb2NrIH07Ci0gICAgbV9zaG91bGRTdXNwZW5kID0gZmFsc2U7Ci0gICAgbV9z
dXNwZW5zaW9uQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgIG1fcXVldWUtPnJlc3VtZSgpOwog
fQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpnZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBHZXRPcmlnaW5zQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFu
ZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTWFuYWdlclNldC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmgKaW5kZXggMDc5YWFkYzExNTA1MjgxNTg5OGE1Yzdj
YmRiYTE1MjUyNzViYzA5Yi4uNzIyZTAzMTQ2NzkyODI1ZTE3ZjdjOWI5ZDUxMGE5NGFlN2VlNmEy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VNYW5hZ2VyU2V0LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxw
YWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVlLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAogdXNpbmcgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOwpA
QCAtOTgsMTIgKzk5LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0b3JhZ2VBcmVhSWRlbnRp
ZmllciwgV2Vha1B0cjxTdG9yYWdlQXJlYT4+IG1fc3RvcmFnZUFyZWFzOwogCiAgICAgSGFzaFNl
dDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiBtX2Nvbm5lY3Rpb25zOwotICAgIFJlZjxXb3Jr
UXVldWU+IG1fcXVldWU7Ci0KLSAgICBMb2NrIG1fc3VzcGVuc2lvbkxvY2s7Ci0gICAgQ29uZGl0
aW9uIG1fc3VzcGVuc2lvbkNvbmRpdGlvbjsKLSAgICBib29sIG1fc2hvdWxkU3VzcGVuZCBXVEZf
R1VBUkRFRF9CWV9MT0NLKG1fc3VzcGVuc2lvbkxvY2spIHsgZmFsc2UgfTsKLSAgICB1aW50NjRf
dCBtX3N1c3BlbnNpb25JZGVudGlmaWVyIFdURl9HVUFSREVEX0JZX0xPQ0sobV9zdXNwZW5zaW9u
TG9jaykgeyAwIH07CisgICAgUmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+IG1fcXVldWU7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9UcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1RyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAKaW5kZXggNjcwMTUxNjE3OGUxOWJjY2JkNjkzNjQ3YmUy
NmMwYTM0MzNmN2VhMi4uZGZiZWM3Nzg0MTE4MjVlN2ZlOWVkZDM3ZDUyYTRiYTg3NmZhYWZiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1RyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL1RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAKQEAg
LTQ0LDcgKzQ0LDcgQEAgVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjp+VHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKCkKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
IH0KIAotU3RvcmFnZUFyZWEmIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZTo6Z2V0T3JD
cmVhdGVTdG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbiwgUmVm
PFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCitTdG9yYWdlQXJlYSYgVHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YSYm
IHNlY3VyaXR5T3JpZ2luLCBSZWY8V1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZT4mJiB3b3JrUXVl
dWUpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgcmV0dXJuICptX3N0
b3JhZ2VBcmVhTWFwLmVuc3VyZShzZWN1cml0eU9yaWdpbiwgWyZdKCkgbXV0YWJsZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvVHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmgKaW5kZXggYTQ4NzJmYTZl
YTZkMTlmN2FiMDM1ZDkyZjI4MmNlMDhmZDZhMmE3YS4uMGUxMmRhNTQ4NWQwM2JjODViMTY4Zjc3
OTRlYzM3YTEwMWJjMDRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL1RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9UcmFuc2llbnRMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgVHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlKCk7CiAgICAgflRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSgp
OwogCi0gICAgU3RvcmFnZUFyZWEmIGdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYsIFJlZjxXb3JrUXVldWU+JiYpOworICAgIFN0b3JhZ2VBcmVhJiBn
ZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBSZWY8
V1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZT4mJik7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4gb3JpZ2lucygpIGNvbnN0OwogCiAgICAgdm9pZCBjbGVhclN0b3JhZ2VB
cmVhc01hdGNoaW5nT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpOwo=
</data>
<flag name="review"
          id="457597"
          type_id="1"
          status="-"
          setter="cdumez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435022</attachid>
            <date>2021-08-05 14:04:32 -0700</date>
            <delta_ts>2021-08-11 09:50:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228748-20210805140431.patch</filename>
            <type>text/plain</type>
            <size>50247</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRiMmExZGEyMDk2ZTExZDQ5NmRiNWEz
ZjI5NGQ0Zjg4MGJjOGU1YjMuLjQ0MzcwNGZjZGNhYTNkZTViY2VkMmRmM2E2NWQ3M2I5MjQ2NzEw
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjEtMDgtMDUgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VzcGVuZCBXb3JrUXVldWUgb2YgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyBhbmQgTG9jYWxTdG9yYWdlIHNvb25lcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFN1c3BlbmRhYmxlV29ya1F1ZXVlIHRoYXQg
d291bGQgcGVyZm9ybSBzdXNwZW5kIGNoZWNrIGJlZm9yZSBlYWNoIHRhc2suCisKKyAgICAgICAg
KiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogd3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlOjpjcmVhdGUpOgorICAgICAgICAoV1RG
OjpTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6U3VzcGVuZGFibGVXb3JrUXVldWUpOgorICAgICAgICAo
V1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6c3VzcGVuZCk6CisgICAgICAgIChXVEY6OlN1c3Bl
bmRhYmxlV29ya1F1ZXVlOjpyZXN1bWUpOgorICAgICAgICAoV1RGOjpTdXNwZW5kYWJsZVdvcmtR
dWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6ZGlz
cGF0Y2hBZnRlcik6CisgICAgICAgIChXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlOjpkaXNwYXRj
aFN5bmMpOgorICAgICAgICAoV1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6aW52b2tlQWxsU3Vz
cGVuc2lvbkNvbXBsZXRpb25IYW5kbGVycyk6CisgICAgICAgIChXVEY6OlN1c3BlbmRhYmxlV29y
a1F1ZXVlOjpzdXNwZW5kSWZOZWVkZWQpOgorICAgICAgICAqIHd0Zi9TdXNwZW5kYWJsZVdvcmtR
dWV1ZS5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmg6CisgICAgICAgICgpOiBE
ZWxldGVkLgorCiAyMDIxLTA4LTA1ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25v
bWUub3JnPgogCiAgICAgICAgIEdDQyAxMSBidWlsZHMgc2hvdWxkIHVzZSAtV25vLWFycmF5LWJv
dW5kcywgLVduby1ub25udWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE2YzE2NjdiZDU5ZjNhY2E4ZDYwYzMwMDVm
YjY3ZjU3MWJmOWMzN2YuLmM5OGYwNDE2OWMyZWE1ZWQ1OTVmNDM0MDYzYWI5MzU5YWY0OTkwMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMjEtMDgtMDUgIFNpaHVpIExpdSAgPHNpaHVp
X2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VzcGVuZCBXb3JrUXVldWUgb2YgUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyBhbmQgTG9jYWxTdG9yYWdlIHNvb25lcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NzQ4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBzdXNwZW5kaW5nIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgYW5kIExvY2FsU3RvcmFnZSwgd2UgZGlzcGF0Y2hlZCBhIHN1c3BlbmQgdGFz
aywgd2hpY2ggd2FpdHMgb24gYSAKKyAgICAgICAgY29uZGl0aW9uLCB0byB0aGVpciBXb3JrUXVl
dWUuIFRoYXQgbWVhbnMgdGhlIHF1ZXVlIHdpbGwgYmUgc3VzcGVuZGVkIGFmdGVyIGNvbXBsZXRp
bmcgYWxsIHRhc2tzIHNjaGVkdWxlZCAKKyAgICAgICAgYmVmb3JlIHRoZSBzdXNwZW5kIHRhc2su
IFRoZXNlIHRhc2tzIG1heSB0YWtlIGEgbG9uZyB0aW1lIHRvIGNvbXBsZXRlIGFuZCBhc3NlcnRp
b24gbWF5IGJlIHRpbWVkIG91dC4KKworICAgICAgICBXaGVuIG5ldHdvcmsgcHJvY2VzcyByZWNl
aXZlcyBQcmVwYXJlVG9TdXNwZW5kIG1lc3NhZ2UsIHdlIHdhbnQgdGhlIHF1ZXVlcyB0byBzdXNw
ZW5kIGFzIHNvb24gYXMgcG9zc2libGUuIFRvIAorICAgICAgICBhY2hpZXZlIHRoYXQsIG5vdyB3
ZSBjaGVjayBpZiB0aGUgcXVldWUgbmVlZHMgdG8gYmUgc3VzcGVuZGVkIGJlZm9yZSBlYWNoIHRh
c2ssIHdoaWNoIGVuc3VyZXMgdGhlIHF1ZXVlIAorICAgICAgICBleGVjdXRlIGFzIG1vc3Qgb25l
IHRhc2sgYWZ0ZXIgc3VzcGVuZCgpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3b3JrUXVldWUpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6c2hhcmVkU3RhdGlzdGljc1F1ZXVlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdXNwZW5kKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXN1bWUpOgorICAgICAg
ICAoV2ViS2l0OjpXVEZfR1VBUkRFRF9CWV9MT0NLKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6OkxvY2FsU3RvcmFnZURhdGFiYXNl
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VO
YW1lc3BhY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6Omdl
dE9yQ3JlYXRlU3RvcmFnZUFyZWEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjpTdG9yYWdlQXJlYSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlTWFuYWdlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VNYW5hZ2VyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlQXJlYSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6U3RvcmFnZU1hbmFnZXJTZXQpOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6c3VzcGVuZCk6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpyZXN1bWUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZU1hbmFnZXJTZXQ6OldURl9HVUFSREVEX0JZX0xPQ0spOiBEZWxldGVkLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpnZXRP
ckNyZWF0ZVN0b3JhZ2VBcmVhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L1RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oOgorCiAyMDIxLTA4LTA1ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBHUFVQcm9jZXNzUHJveHkgc2hv
dWxkIHNlbmQgdGNjZCBtYWNoIGxvb2t1cCBzYW5kYm94IGV4dGVuc2lvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGI4MWQ4YmE3MDdjMTFmZmEzZjdjZTI3
ZDdjMGQxZmM4ZjI4NDg4Yy4uOWQzYWY1NjU5Nzk2OWNkNzA4ZmNjNDA1ZDdjNThlNGY0ZDVhNDlh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05OCw2ICs5
OCw3IEBACiAJCTgzNDhCQTBFMjFGQkMwRDUwMEZEMzA1NCAvKiBPYmplY3RJZGVudGlmaWVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNDhCQTBE
MjFGQkMwRDQwMEZEMzA1NCAvKiBPYmplY3RJZGVudGlmaWVyLmNwcCAqLzsgfTsKIAkJOTM5MzRC
RDMxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdDb2NvYS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTM0QkQyMThBMUU4QzMwMEQwRDZBMSAv
KiBTdHJpbmdWaWV3Q29jb2EubW0gKi87IH07CiAJCTkzOTM0QkQ1MThBMUYxNjkwMEQwRDZBMSAv
KiBTdHJpbmdWaWV3Q0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTM5MzRCRDQxOEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgKi87
IH07CisJCTkzQjA3RUQ4MjZCODcxNzAwMEEwOUIzNCAvKiBTdXNwZW5kYWJsZVdvcmtRdWV1ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IwN0VE
NzI2Qjg3MTVCMDBBMDlCMzQgLyogU3VzcGVuZGFibGVXb3JrUXVldWUuY3BwICovOyB9OwogCQk5
M0I1QjQ0RTIyMTNENjE2MDA0QjdBQTcgLyogSGV4TnVtYmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjVCNDREMjIxM0Q2MTYwMDRCN0FBNyAv
KiBIZXhOdW1iZXIuY3BwICovOyB9OwogCQk5M0I1QjQ1MTIyMTcxRUVBMDA0QjdBQTcgLyogTG9n
Z2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
QjVCNDUwMjIxNzFFRTkwMDRCN0FBNyAvKiBMb2dnZXIuY3BwICovOyB9OwogCQk5M0YxOTkzRTE5
RDc5NThEMDBDMjM5MEIgLyogU3RyaW5nVmlldy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxOTkzRDE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5n
Vmlldy5jcHAgKi87IH07CkBAIC00OTksNiArNTAwLDggQEAKIAkJOTM5MzRCRDIxOEExRThDMzAw
RDBENkExIC8qIFN0cmluZ1ZpZXdDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFN0cmluZ1ZpZXdDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTM5MzRCRDQxOEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdWaWV3Q0YuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5M0FDOTFBNzE4OTQyRkM0MDAyNDQ5MzkgLyogTENoYXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTENoYXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTNCMDdFRDYyNkI4NkJCNTAwQTA5QjM0IC8qIFN1c3BlbmRhYmxl
V29ya1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1c3BlbmRhYmxlV29ya1F1ZXVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjA3RUQ3MjZCODcxNUIwMEEwOUIzNCAvKiBTdXNw
ZW5kYWJsZVdvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdXNwZW5kYWJsZVdvcmtR
dWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjVCNDREMjIxM0Q2MTYw
MDRCN0FBNyAvKiBIZXhOdW1iZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSGV4TnVtYmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNUI0
NTAyMjE3MUVFOTAwNEI3QUE3IC8qIExvZ2dlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBMb2dnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0QwMDE3QjI2NERCQUNGMDBCQ0YxMDkgLyogU3RyaW5nQ29uY2F0ZW5hdGVDRi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdDb25jYXRlbmF0ZUNGLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjk0LDYgKzEyOTcsOCBAQAogCQkJCUE3NDg3NDUxMTdB
MEJEQUUwMEZBMDRDQiAvKiBTdHJpbmdIYXNoRHVtcENvbnRleHQuaCAqLywKIAkJCQkwRkREQkZB
NTE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uY3BwICovLAogCQkJCTBGRERC
RkE2MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5oICovLAorCQkJCTkzQjA3
RUQ3MjZCODcxNUIwMEEwOUIzNCAvKiBTdXNwZW5kYWJsZVdvcmtRdWV1ZS5jcHAgKi8sCisJCQkJ
OTNCMDdFRDYyNkI4NkJCNTAwQTA5QjM0IC8qIFN1c3BlbmRhYmxlV29ya1F1ZXVlLmggKi8sCiAJ
CQkJNTU5N0Y4MkMxRDk0Qjk5NzAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUuaCAq
LywKIAkJCQlFM0UxNTgyNTFFQURBNTNDMDA0QTA3OUQgLyogU3lzdGVtRnJlZS5oICovLAogCQkJ
CUU0RDJBRTREMjY4QTRDN0YwMERGRUEwMiAvKiBTeXN0ZW1NYWxsb2MuaCAqLywKQEAgLTE4MDIs
NiArMTgwNyw3IEBACiAJCQkJOTM5MzRCRDUxOEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdD
Ri5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzkzNEJEMzE4QTFFOEMzMDBEMEQ2QTEgLyogU3Ry
aW5nVmlld0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjcxNTFBODI1QjAwNDEy
M0ZGIC8qIHN0cnRvZC5jYyBpbiBTb3VyY2VzICovLAorCQkJCTkzQjA3RUQ4MjZCODcxNzAwMEEw
OUIzNCAvKiBTdXNwZW5kYWJsZVdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MjE4
MzAxMkM5OUU0NzZBODRFRUJFQTggLyogU3ltYm9sSW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3MEE5OTNGRTFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRUI2MUVEQzcyNDA5Q0NDMTAwMUVGRTM2IC8qIFN5c3RlbVRyYWNpbmdDb2Nv
YS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggMDUxN2RkYmUzYmU3
ZWIxNDIxNTljZDExODUxOGZmNTllMTg1N2Y1OS4uNDJjZTQ4NGY2NGJkN2M4MGEyNDU0Nzk2MTM2
MDYzYjQ0OWQ4Y2Y0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTI2Myw2ICsyNjMsNyBAQCBz
ZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgU3RyaW5nRXh0cmFzLmgKICAgICBTdHJpbmdIYXNo
RHVtcENvbnRleHQuaAogICAgIFN0cmluZ1ByaW50U3RyZWFtLmgKKyAgICBTdXNwZW5kYWJsZVdv
cmtRdWV1ZS5oCiAgICAgU3luY2hyb25pemVkRml4ZWRRdWV1ZS5oCiAgICAgU3lzdGVtRnJlZS5o
CiAgICAgU3lzdGVtTWFsbG9jLmgKQEAgLTQ1Niw2ICs0NTcsNyBAQCBzZXQoV1RGX1NPVVJDRVMK
ICAgICBTdGFja1N0YXRzLmNwcAogICAgIFN0YWNrVHJhY2UuY3BwCiAgICAgU3RyaW5nUHJpbnRT
dHJlYW0uY3BwCisgICAgU3VzcGVuZGFibGVXb3JrUXVldWUuY3BwCiAgICAgVGhyZWFkR3JvdXAu
Y3BwCiAgICAgVGhyZWFkTWVzc2FnZS5jcHAKICAgICBUaHJlYWRpbmcuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9TdXNwZW5kYWJsZVdvcmtRdWV1ZS5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9TdXNwZW5kYWJsZVdvcmtRdWV1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjY1OWJkMmNlZmI0ZjJhNjk2
ZDk0M2UwMDY4MzlhMTE1NWE0Y2FjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1N1c3BlbmRhYmxlV29ya1F1ZXVlLmNwcApAQCAtMCwwICsxLDEzNCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlIDx3dGYvU3VzcGVuZGFibGVXb3JrUXVldWUuaD4KKworbmFtZXNwYWNlIFdURiB7CisK
K1JlZjxTdXNwZW5kYWJsZVdvcmtRdWV1ZT4gU3VzcGVuZGFibGVXb3JrUXVldWU6OmNyZWF0ZShj
b25zdCBjaGFyKiBuYW1lLCBXb3JrUXVldWU6OlFPUyBxb3MpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3VzcGVuZGFibGVXb3JrUXVldWUobmFtZSwgcW9zKSk7Cit9CisKK1N1c3BlbmRh
YmxlV29ya1F1ZXVlOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZShjb25zdCBjaGFyKiBuYW1lLCBRT1Mg
cW9zKQorICAgIDogV29ya1F1ZXVlKG5hbWUsIFR5cGU6OlNlcmlhbCwgcW9zKQoreworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Cit9CisKK3ZvaWQgU3VzcGVuZGFibGVXb3JrUXVldWU6OnN1
c3BlbmQoRnVuY3Rpb248dm9pZCgpPiYmIHN1c3BlbmRGdW5jdGlvbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgTG9ja2VyIHN1c3BlbnNpb25Mb2NrZXIgeyBtX3N1c3BlbnNpb25Mb2NrIH07
CisKKyAgICAvLyBMYXN0IHN1c3BlbmQgZnVuY3Rpb24gd2lsbCBiZSB0aGUgb25lIHRoYXQgaXMg
dXNlZC4KKyAgICBtX3N1c3BlbmRGdW5jdGlvbiA9IFdURk1vdmUoc3VzcGVuZEZ1bmN0aW9uKTsK
KyAgICBtX3N1c3BlbnNpb25Db21wbGV0aW9uSGFuZGxlcnMuYXBwZW5kKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICBpZiAobV9pc09yV2lsbEJlU3VzcGVuZGVkKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2lzT3JXaWxsQmVTdXNwZW5kZWQgPSB0cnVlOworICAgIC8vIE1ha2Ug
c3VyZSBxdWV1ZSB3aWxsIGJlIHN1c3BlbmRlZCB3aGVuIHRoZXJlIGlzIG5vIHRhc2sgc2NoZWR1
bGVkIG9uIHRoZSBxdWV1ZS4KKyAgICBXb3JrUXVldWU6OmRpc3BhdGNoKFt0aGlzXSB7CisgICAg
ICAgIHN1c3BlbmRJZk5lZWRlZCgpOworICAgIH0pOworfQorCit2b2lkIFN1c3BlbmRhYmxlV29y
a1F1ZXVlOjpyZXN1bWUoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgTG9j
a2VyIHN1c3BlbnNpb25Mb2NrZXIgeyBtX3N1c3BlbnNpb25Mb2NrIH07CisKKyAgICBpZiAoIW1f
aXNPcldpbGxCZVN1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc09yV2lsbEJl
U3VzcGVuZGVkID0gZmFsc2U7CisgICAgbV9zdXNwZW5zaW9uQ29uZGl0aW9uLm5vdGlmeU9uZSgp
OworfQorCit2b2lkIFN1c3BlbmRhYmxlV29ya1F1ZXVlOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lk
KCk+JiYgZnVuY3Rpb24pCit7CisgICAgLy8gV29ya1F1ZXVlIHdpbGwgcHJvdGVjdCB0aGlzIGlu
IGRpc3BhdGNoKCkuCisgICAgV29ya1F1ZXVlOjpkaXNwYXRjaChbdGhpcywgZnVuY3Rpb24gPSBX
VEZNb3ZlKGZ1bmN0aW9uKV0geworICAgICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKKyAgICAgICAg
ZnVuY3Rpb24oKTsKKyAgICB9KTsKK30KKwordm9pZCBTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6ZGlz
cGF0Y2hBZnRlcihTZWNvbmRzIHNlY29uZHMsIEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikK
K3sKKyAgICBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc2Vjb25kcywgW3RoaXMsIGZ1bmN0aW9u
ID0gV1RGTW92ZShmdW5jdGlvbildIHsKKyAgICAgICAgc3VzcGVuZElmTmVlZGVkKCk7CisgICAg
ICAgIGZ1bmN0aW9uKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3VzcGVuZGFibGVXb3JrUXVldWU6
OmRpc3BhdGNoU3luYyhGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCit7CisgICAgLy8gVGhp
cyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9ubHkgd2hlbiBxdWV1ZSBpcyBub3QgYWJvdXQg
dG8gYmUgc3VzcGVuZGVkLAorICAgIC8vIG90aGVyd2lzZSB0aHJlYWQgbWF5IGJlIGJsb2NrZWQu
CisgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIExvY2tlciBzdXNwZW5zaW9uTG9j
a2VyIHsgbV9zdXNwZW5zaW9uTG9jayB9OworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9pc09y
V2lsbEJlU3VzcGVuZGVkKTsKKyAgICB9CisgICAgV29ya1F1ZXVlOjpkaXNwYXRjaFN5bmMoV1RG
TW92ZShmdW5jdGlvbikpOworfQorCit2b2lkIFN1c3BlbmRhYmxlV29ya1F1ZXVlOjppbnZva2VB
bGxTdXNwZW5zaW9uQ29tcGxldGlvbkhhbmRsZXJzKCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKKworICAgIGlmIChtX3N1c3BlbnNpb25Db21wbGV0aW9uSGFuZGxlcnMuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9u
SGFuZGxlcnMgPSBzdGQ6OmV4Y2hhbmdlKG1fc3VzcGVuc2lvbkNvbXBsZXRpb25IYW5kbGVycywg
eyB9KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgZm9yIChhdXRvJiBjb21wbGV0aW9uSGFuZGxlciA6
IGNvbXBsZXRpb25IYW5kbGVycykgeworICAgICAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVy
KQorICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIH0KKyAgICB9
KTsKK30KKwordm9pZCBTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6c3VzcGVuZElmTmVlZGVkKCkKK3sK
KyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBMb2NrZXIgc3VzcGVuc2lvbkxvY2tl
ciB7IG1fc3VzcGVuc2lvbkxvY2sgfTsKKworICAgIGlmICghbV9pc09yV2lsbEJlU3VzcGVuZGVk
KSB7CisgICAgICAgIG1fc3VzcGVuZEZ1bmN0aW9uID0geyB9OworICAgICAgICBpbnZva2VBbGxT
dXNwZW5zaW9uQ29tcGxldGlvbkhhbmRsZXJzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAobV9zdXNwZW5kRnVuY3Rpb24pCisgICAgICAgIG1fc3VzcGVuZEZ1bmN0aW9uKCk7
CisgICAgaW52b2tlQWxsU3VzcGVuc2lvbkNvbXBsZXRpb25IYW5kbGVycygpOworCisgICAgd2hp
bGUgKG1faXNPcldpbGxCZVN1c3BlbmRlZCkKKyAgICAgICAgbV9zdXNwZW5zaW9uQ29uZGl0aW9u
LndhaXQobV9zdXNwZW5zaW9uTG9jayk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvU3VzcGVuZGFibGVXb3JrUXVldWUuaCBiL1NvdXJjZS9XVEYv
d3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzc4MDljNGRlNjA1YTI5OGY1
MGQxNzU1YjMxNTg3YWQzZWQ2NWI3MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1N1c3BlbmRhYmxlV29ya1F1ZXVlLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVk
ZSA8d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgorCituYW1lc3BhY2UgV1RGIHsK
KworY2xhc3MgU3VzcGVuZGFibGVXb3JrUXVldWUgZmluYWwgOiBwdWJsaWMgV29ya1F1ZXVlIHsK
K3B1YmxpYzoKKyAgICB1c2luZyBRT1MgPSBXb3JrUXVldWU6OlFPUzsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZjxTdXNwZW5kYWJsZVdvcmtRdWV1ZT4gY3JlYXRlKGNvbnN0IGNo
YXIqIG5hbWUsIFFPUyA9IFFPUzo6RGVmYXVsdCk7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBzdXNwZW5kKEZ1bmN0aW9uPHZvaWQoKT4mJiBzdXNwZW5kRnVuY3Rpb24sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBzdXNwZW5zaW9uQ29tcGxldGlvbkhhbmRsZXIpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlc3VtZSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZGlzcGF0Y2hBZnRlcihTZWNvbmRzLCBGdW5jdGlvbjx2b2lkKCk+JiYpIGZp
bmFsOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRpc3BhdGNoU3luYyhGdW5jdGlvbjx2
b2lkKCk+JiYpIGZpbmFsOworCitwcml2YXRlOgorICAgIFN1c3BlbmRhYmxlV29ya1F1ZXVlKGNv
bnN0IGNoYXIqIG5hbWUsIFFPUyk7CisgICAgdm9pZCBpbnZva2VBbGxTdXNwZW5zaW9uQ29tcGxl
dGlvbkhhbmRsZXJzKCkgV1RGX1JFUVVJUkVTX0xPQ0sobV9zdXNwZW5zaW9uTG9jayk7CisgICAg
dm9pZCBzdXNwZW5kSWZOZWVkZWQoKTsKKyNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKKyAgICB1
c2luZyBXb3JrUXVldWU6OmRpc3BhdGNoUXVldWU7CisjZWxzZQorICAgIHVzaW5nIFdvcmtRdWV1
ZTo6cnVuTG9vcDsKKyNlbmRpZgorCisgICAgTG9jayBtX3N1c3BlbnNpb25Mb2NrOworICAgIENv
bmRpdGlvbiBtX3N1c3BlbnNpb25Db25kaXRpb247CisgICAgYm9vbCBtX2lzT3JXaWxsQmVTdXNw
ZW5kZWQgV1RGX0dVQVJERURfQllfTE9DSyhtX3N1c3BlbnNpb25Mb2NrKSB7IGZhbHNlIH07Cisg
ICAgRnVuY3Rpb248dm9pZCgpPiBtX3N1c3BlbmRGdW5jdGlvbiBXVEZfR1VBUkRFRF9CWV9MT0NL
KG1fc3VzcGVuc2lvbkxvY2spOworICAgIFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
PiBtX3N1c3BlbnNpb25Db21wbGV0aW9uSGFuZGxlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX3N1
c3BlbnNpb25Mb2NrKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlN1
c3BlbmRhYmxlV29ya1F1ZXVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVl
LmggYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAppbmRleCBjZGExZDE4NGExYTMxNWRhNGMz
OTRiNTdjNjAzNmVkYWM5ZDY5NDZhLi5lN2M2NjUzZGNhYjEwMmVjM2ViNWRkYmNjMWQxMTc3Njgw
MjFlMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9Xb3JrUXVldWUuaApAQCAtNDEsNyArNDEsNyBAQAogCiBuYW1lc3BhY2UgV1RG
IHsKIAotY2xhc3MgV29ya1F1ZXVlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7
CitjbGFzcyBXb3JrUXVldWUgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKIAogcHVibGlj
OgogICAgIGVudW0gY2xhc3MgVHlwZSB7CkBAIC01MywxMSArNTMsMTEgQEAgcHVibGljOgogICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgV29ya1F1ZXVlJiBtYWluKCk7CiAKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxXb3JrUXVldWU+IGNyZWF0ZShjb25zdCBjaGFyKiBu
YW1lLCBUeXBlID0gVHlwZTo6U2VyaWFsLCBRT1MgPSBRT1M6OkRlZmF1bHQpOwotICAgIH5Xb3Jr
UXVldWUoKSBmaW5hbDsKKyAgICB+V29ya1F1ZXVlKCkgb3ZlcnJpZGU7CiAKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaChGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOwotICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRpc3BhdGNoQWZ0ZXIoU2Vjb25kcywgRnVuY3Rpb248
dm9pZCgpPiYmKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaFN5bmMoRnVu
Y3Rpb248dm9pZCgpPiYmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaChG
dW5jdGlvbjx2b2lkKCk+JiYpIG92ZXJyaWRlOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hBZnRlcihTZWNvbmRzLCBGdW5jdGlvbjx2b2lkKCk+JiYpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTeW5jKEZ1bmN0aW9uPHZv
aWQoKT4mJik7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgY29uY3VycmVu
dEFwcGx5KHNpemVfdCBpdGVyYXRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQoc2l6ZV90IGluZGV4
KT4mJik7CiAKQEAgLTY3LDkgKzY3LDEwIEBAIHB1YmxpYzoKICAgICBSdW5Mb29wJiBydW5Mb29w
KCkgY29uc3QgeyByZXR1cm4gKm1fcnVuTG9vcDsgfQogI2VuZGlmCiAKLXByaXZhdGU6Citwcm90
ZWN0ZWQ6CiAgICAgV29ya1F1ZXVlKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUyk7CiAKK3By
aXZhdGU6CiAgICAgc3RhdGljIFJlZjxXb3JrUXVldWU+IGNvbnN0cnVjdE1haW5Xb3JrUXVldWUo
KTsKICNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKICAgICBleHBsaWNpdCBXb3JrUXVldWUoT1NP
YmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCAxZThlMjhiZGFlOGYwMmU0
MGZjYjRkMWE5YjU3MDJlYTVlZjFjMjA5Li5iYmU4ZDJkYjNjNzVkOWNiMmQ2ODdiMjViOWFlYmUw
MGMyMGM5ZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlIDx3dGYvUm9iaW5I
b29kSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRT
ZXQuaD4KKyNpbmNsdWRlIDx3dGYvU3VzcGVuZGFibGVXb3JrUXVldWUuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzQ2LDcg
KzM0Nyw3IEBAIEhhc2hTZXQ8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUqPiYg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvCiAgICAgcmV0dXJuIG1hcDsKIH0KIAot
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgc3RvcmUsIFdv
cmtRdWV1ZSYgd29ya1F1ZXVlLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0IHNob3VsZEluY2x1ZGVM
b2NhbGhvc3QsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeVBhdGgsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKK1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUmIHN0b3JlLCBTdXNwZW5kYWJsZVdvcmtRdWV1ZSYgd29ya1F1ZXVlLCBTaG91bGRJbmNs
dWRlTG9jYWxob3N0IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIGNvbnN0IFN0cmluZyYgc3RvcmFn
ZURpcmVjdG9yeVBhdGgsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZShzdG9yZSwgd29ya1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxo
b3N0KQogICAgICwgbV9zdG9yYWdlRGlyZWN0b3J5UGF0aChGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeVBhdGgsICJvYnNlcnZhdGlvbnMuZGIiX3Mp
KQogICAgICwgbV90cmFuc2FjdGlvbihtX2RhdGFiYXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCBlYTZiNTg3ZDFjZTE3MDNl
MDMwOGI3YzFhZGZhOTQ2N2MwODAzMDExLi5kNDcwNjliYjYxMWI0OWY4ODM4MmNiMzI3MjM0Y2Ex
ZjlmZjRkMDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuaApAQCAtMzgsNyArMzgsMTAgQEAKICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1
ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdXNwZW5kYWJs
ZVdvcmtRdWV1ZTsKK30KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU1FMaXRlRGF0YWJh
c2U7CkBAIC03Niw3ICs3OSw3IEBAIHR5cGVkZWYgc3RkOjpwYWlyPFN0cmluZywgc3RkOjpvcHRp
b25hbDxTdHJpbmc+PiBUYWJsZUFuZEluZGV4UGFpcjsKIC8vIFRoaXMgaXMgYWx3YXlzIGNvbnN0
cnVjdGVkIC8gdXNlZCAvIGRlc3Ryb3llZCBvbiB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlJ3Mgc3RhdGlzdGljcyBxdWV1ZS4KIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlIGZpbmFsIDogcHVibGljIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSB7
CiBwdWJsaWM6Ci0gICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiwgV29ya1F1ZXVlJiwgU2hvdWxkSW5jbHVkZUxvY2Fs
aG9zdCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5UGF0aCwgUEFMOjpTZXNzaW9uSUQp
OworICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZSYsIFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWUmLCBTaG91bGRJbmNs
dWRlTG9jYWxob3N0LCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQYXRoLCBQQUw6OlNl
c3Npb25JRCk7CiAgICAgflJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKCk7CiAK
ICAgICBzdGF0aWMgSGFzaFNldDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSo+
JiBhbGxTdG9yZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZS5jcHAKaW5kZXggYWQ0YTNiYjQ3ZTBjZmEyNzI5NzZhYzMxZDQ4MWU1NTAxZGY2
NDFjYi4uY2NmMjczZDY4OTdlNzRjZTUyZDFlMTZiMTYwMWRiY2Y3MzU5M2NiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAgLTY5
LDcgKzY5LDcgQEAgc3RhdGljIHZvaWQgcHJ1bmVSZXNvdXJjZXMoSGFzaE1hcDxSZWdpc3RyYWJs
ZURvbWFpbiwgVW5pcXVlUmVmPFJlc291cmNlTG9hZFN0YXQKICAgICAgICAgc3RhdGlzdGljc01h
cC5yZW1vdmUoc3RhdGlzdGljc1RvUHJ1bmVbaV0uZG9tYWluKTsKIH0KIAotUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUo
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSwgV29ya1F1ZXVlJiB3b3JrUXVl
dWUsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCkKK1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgc3RvcmUsIFN1c3BlbmRhYmxl
V29ya1F1ZXVlJiB3b3JrUXVldWUsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdCkKICAgICA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShzdG9yZSwgd29y
a1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlLmgKaW5kZXggNDlkM2Q4MjMyOTE1NTVjNjRiMDQ0YmY4MjNkM2IwMmE2YTNm
ZWU3Yi4uMTIzZmQ5YjZjODBmODVkNzBlNjhjZWYyODdkN2U2YTU3NzIxODBhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaApAQCAtMzIsNyAr
MzIsNiBAQAogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotI2luY2x1ZGUgPHd0Zi9Xb3Jr
UXVldWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgS2V5ZWREZWNvZGVyOwpAQCAt
NDcsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIC8vIFRoaXMgaXMgYWx3YXlzIGNvbnN0
cnVjdGVkIC8gdXNlZCAvIGRlc3Ryb3llZCBvbiB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlJ3Mgc3RhdGlzdGljcyBxdWV1ZS4KIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZSBmaW5hbCA6IHB1YmxpYyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgewog
cHVibGljOgotICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZShXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUmLCBXb3JrUXVldWUmLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0
KTsKKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUoV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlJiwgV1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZSYsIFNob3VsZEluY2x1
ZGVMb2NhbGhvc3QpOwogCiAgICAgdm9pZCBjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBiZjFjNzUzN2JiMzQz
Y2UxNGExY2NjOTc3ODQ1OWE0NTNmMmVlOTQ4Li44NjJmODM3YmMwNWM1NWU2YjQ3NDgzZTAxNTQy
MDBlZGQ1ZjNhYmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIGJvb2wgT3BlcmF0aW5nRGF0ZTo6b3BlcmF0b3I8PShj
b25zdCBPcGVyYXRpbmdEYXRlJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gc2Vjb25kc1NpbmNl
RXBvY2goKSA8PSBvdGhlci5zZWNvbmRzU2luY2VFcG9jaCgpOwogfQogCi1SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUmIHN0b3JlLCBXb3JrUXVldWUmIHdvcmtRdWV1ZSwgU2hvdWxkSW5j
bHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KQorUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlJiBzdG9yZSwgU3VzcGVuZGFibGVXb3JrUXVldWUmIHdvcmtRdWV1ZSwgU2hv
dWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KQogICAgIDogbV9zdG9y
ZShzdG9yZSkKICAgICAsIG1fd29ya1F1ZXVlKHdvcmtRdWV1ZSkKICAgICAsIG1fc2hvdWxkSW5j
bHVkZUxvY2FsaG9zdChzaG91bGRJbmNsdWRlTG9jYWxob3N0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDZhNTYwNTZjYzU5NDYyODQyMWNmY2NhOGZmZDkx
NTY1ZjhhYTg2NTcuLjQ4N2FjMDFkZWM4NmU1NzBjMDNhYjZjNTgwODZkOGY2YThmMmMzNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTM0LDEyICszNCwx
NSBAQAogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotI2luY2x1ZGUgPHd0Zi9Xb3JrUXVl
dWUuaD4KIAogI2lmIEhBVkUoQ09SRV9QUkVESUNUSU9OKQogI2luY2x1ZGUgIlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuaCIKICNlbmRpZgogCituYW1lc3BhY2UgV1RGIHsK
K2NsYXNzIFN1c3BlbmRhYmxlV29ya1F1ZXVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBLZXllZERlY29kZXI7CiBjbGFzcyBLZXllZEVuY29kZXI7CkBAIC0yMTcsNyArMjIwLDcg
QEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlSW1wb3J0
YW5jZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAKLSAgICBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiwg
V29ya1F1ZXVlJiwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7CisgICAgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYsIFdURjo6U3VzcGVu
ZGFibGVXb3JrUXVldWUmLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKICAgICAKICAgICBib29s
IGRhdGFSZWNvcmRzQmVpbmdSZW1vdmVkKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhUmVjb3Jkc0Jl
aW5nUmVtb3ZlZDsgfQogCkBAIC0yMjgsNyArMjMxLDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgdm9pZCBwcnVuZVN0YXRpc3RpY3NJZk5lZWRlZCgpID0gMDsKIAogICAgIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZSYgc3RvcmUoKSB7IHJldHVybiBtX3N0b3JlOyB9Ci0gICAgUmVm
PFdvcmtRdWV1ZT4mIHdvcmtRdWV1ZSgpIHsgcmV0dXJuIG1fd29ya1F1ZXVlOyB9CisgICAgUmVm
PFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+JiB3b3JrUXVldWUoKSB7IHJldHVybiBtX3dvcmtR
dWV1ZTsgfQogI2lmIEhBVkUoQ09SRV9QUkVESUNUSU9OKQogICAgIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NDbGFzc2lmaWVyQ29jb2EmIGNsYXNzaWZpZXIoKSB7IHJldHVybiBtX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NDbGFzc2lmaWVyOyB9CiAjZWxzZQpAQCAtMjc4LDcgKzI4MSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB1cGRhdGVDbGllbnRTaWRlQ29va2llc0FnZUNhcCgpOwogCiAgICAgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBtX3N0b3JlOwotICAgIFJlZjxXb3JrUXVldWU+
IG1fd29ya1F1ZXVlOworICAgIFJlZjxXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlPiBtX3dvcmtR
dWV1ZTsKICNpZiBIQVZFKENPUkVfUFJFRElDVElPTikKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzQ2xhc3NpZmllckNvY29hIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXI7CiAj
ZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApp
bmRleCA0ZjgwNzUxZGYwMDMwZjZjZjI5OGQwNGRkNzAwZDk3ZTNmYjI5ZTFlLi4yZjAzZTc3NTgz
MjJiODBmYjc4NzMzMTBiZTc0MDRiODdkYzRhZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtNTQsMTYgKzU0LDEyIEBACiAjaW5jbHVk
ZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENv
cGllci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9T
dXNwZW5kYWJsZVdvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFw
aG9yZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ci1zdGF0aWMgTG9jayBnbG9iYWxTdXNwZW5zaW9uTG9jazsKLXN0YXRpYyBDb25kaXRpb24gZ2xv
YmFsU3VzcGVuc2lvbkNvbmRpdGlvbjsKLXN0YXRpYyBib29sIGdsb2JhbFNob3VsZFN1c3BlbmQg
V1RGX0dVQVJERURfQllfTE9DSyhnbG9iYWxTdXNwZW5zaW9uTG9jaykgeyBmYWxzZSB9Owotc3Rh
dGljIHVpbnQ2NF90IGdsb2JhbFN1c3BlbnNpb25JZGVudGlmaWVyIFdURl9HVUFSREVEX0JZX0xP
Q0soZ2xvYmFsU3VzcGVuc2lvbkxvY2spIHsgMCB9OwotCiBjb25zdCBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiYgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptb25pdG9yZWREYXRh
VHlwZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPj4gZGF0YVR5cGVzKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxXZWJzaXRlRGF0YVR5cGU+
KHsKQEAgLTE0Nyw5ICsxNDMsOSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3JkcwogICAgIH0pOwog
fQogCi1zdGF0aWMgUmVmPFdvcmtRdWV1ZT4gc2hhcmVkU3RhdGlzdGljc1F1ZXVlKCkKK3N0YXRp
YyBSZWY8V1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZT4gc2hhcmVkU3RhdGlzdGljc1F1ZXVlKCkK
IHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdvcmtRdWV1ZT4+IHF1ZXVlKFdvcmtR
dWV1ZTo6Y3JlYXRlKCJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgUHJvY2VzcyBEYXRh
IFF1ZXVlIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtRdWV1ZTo6UU9TOjpVdGlsaXR5
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZjxTdXNwZW5kYWJsZVdvcmtRdWV1ZT4+
IHF1ZXVlKFN1c3BlbmRhYmxlV29ya1F1ZXVlOjpjcmVhdGUoIldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZSBQcm9jZXNzIERhdGEgUXVldWUiLCAgV29ya1F1ZXVlOjpRT1M6OlV0aWxpdHkp
KTsKICAgICByZXR1cm4gcXVldWUuZ2V0KCkuY29weVJlZigpOwogfQogCkBAIC0xNDQ4LDMzICsx
NDQ0LDE5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphZ2dyZWdhdGVk
VGhpcmRQYXJ0eURhdGEoQ29tcGxldGlvbkhhbmRsZXI8CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBMb2NrZXIgc3VzcGVuc2lvbkxvY2tlciB7IGdsb2JhbFN1
c3BlbnNpb25Mb2NrIH07Ci0gICAgZ2xvYmFsU2hvdWxkU3VzcGVuZCA9IHRydWU7Ci0KLSAgICBz
aGFyZWRTdGF0aXN0aWNzUXVldWUoKS0+ZGlzcGF0Y2goW3N1c3BlbnNpb25JZGVudGlmaWVyID0g
KytnbG9iYWxTdXNwZW5zaW9uSWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIExvY2tlciBzdXNwZW5z
aW9uTG9ja2VyIHsgZ2xvYmFsU3VzcGVuc2lvbkxvY2sgfTsKLSAgICAgICAgaWYgKCFnbG9iYWxT
aG91bGRTdXNwZW5kIHx8IHN1c3BlbnNpb25JZGVudGlmaWVyICE9IGdsb2JhbFN1c3BlbnNpb25J
ZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKKyAgICBzaGFyZWRTdGF0aXN0aWNzUXVldWUoKS0+c3VzcGVu
ZChbXSgpIG11dGFibGUgewogICAgICAgICBmb3IgKGF1dG8mIGRhdGFiYXNlU3RvcmUgOiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YWxsU3RvcmVzKCkpCiAgICAgICAgICAg
ICBkYXRhYmFzZVN0b3JlLT5pbnRlcnJ1cHQoKTsKLQotICAgICAgICBwb3N0VGFza1JlcGx5KFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLQotICAgICAgICB3aGlsZSAoZ2xvYmFsU2hvdWxk
U3VzcGVuZCkKLSAgICAgICAgICAgIGdsb2JhbFN1c3BlbnNpb25Db25kaXRpb24ud2FpdChnbG9i
YWxTdXNwZW5zaW9uTG9jayk7Ci0gICAgfSk7CisgICAgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzdW1l
KCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja2VyIHN1c3Bl
bnNpb25Mb2NrZXIgeyBnbG9iYWxTdXNwZW5zaW9uTG9jayB9OwotICAgIGdsb2JhbFNob3VsZFN1
c3BlbmQgPSBmYWxzZTsKLSAgICBnbG9iYWxTdXNwZW5zaW9uQ29uZGl0aW9uLm5vdGlmeU9uZSgp
OworICAgIHNoYXJlZFN0YXRpc3RpY3NRdWV1ZSgpLT5yZXN1bWUoKTsKIH0KIAogdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0
aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIHVuc2lnbmVkIG51bWJlck9mT3Bl
cmF0aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVs
ZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDBiMjYxMDRmZTIwZTk5NmZjYmVlNDFk
ZjdkYTI2OWEwNTZiMDk0MzguLjcyNjAzODkzNjMwMTBhYzQwMWVjNjkzMzU3ZmI0ZjljYTIxM2Yx
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAg
LTUxLDcgKzUxLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdURiB7Ci1jbGFzcyBXb3JrUXVldWU7CitjbGFzcyBTdXNwZW5kYWJsZVdvcmtRdWV1ZTsK
IH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTQ0LDcgKzE0NCw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBjb25zdCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiYgbW9uaXRvcmVkRGF0
YVR5cGVzKCk7CiAKLSAgICBXVEY6OldvcmtRdWV1ZSYgc3RhdGlzdGljc1F1ZXVlKCkgeyByZXR1
cm4gbV9zdGF0aXN0aWNzUXVldWUuZ2V0KCk7IH0KKyAgICBXVEY6OlN1c3BlbmRhYmxlV29ya1F1
ZXVlJiBzdGF0aXN0aWNzUXVldWUoKSB7IHJldHVybiBtX3N0YXRpc3RpY3NRdWV1ZS5nZXQoKTsg
fQogCiAgICAgdm9pZCBwb3B1bGF0ZU1lbW9yeVN0b3JlRnJvbURpc2soQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2Vy
ZVNjYW5uZWQoYm9vbCk7CkBAIC0yNzYsNyArMjc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRl
c3Ryb3lSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKIAogICAgIFdlYWtQdHI8TmV0d29ya1Nlc3Npb24+IG1fbmV0d29ya1Nlc3Npb247Ci0g
ICAgUmVmPFdURjo6V29ya1F1ZXVlPiBtX3N0YXRpc3RpY3NRdWV1ZTsKKyAgICBSZWY8V1RGOjpT
dXNwZW5kYWJsZVdvcmtRdWV1ZT4gbV9zdGF0aXN0aWNzUXVldWU7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gbV9zdGF0aXN0aWNzU3RvcmU7CiAKICAg
ICBSdW5Mb29wOjpUaW1lcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1fZGFpbHlU
YXNrc1RpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKaW5kZXggNTY5ZmRiMmRm
OGY1M2VhYmNmMTkxODEyNDMwYWI2ZmRhNjgwMjU0MC4uYmMzZTg4OTk4MTAxMWNhNjZkMzlmZGRh
MThmNjkzNDg1MGY0ODY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3VzcGVu
ZGFibGVXb3JrUXVldWUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKQEAgLTQyLDEyICs0MywxMiBAQCBjb25zdGV4cHIgYXV0byBnZXRJdGVtc1F1ZXJ5
U3RyaW5nIHsgIlNFTEVDVCBrZXksIHZhbHVlIEZST00gSXRlbVRhYmxlIl9zIH07CiBjb25zdGV4
cHIgdW5zaWduZWQgbWF4aW11bVNpemVGb3JWYWx1ZXNLZXB0SW5NZW1vcnkgeyAxMDI0IH07IC8v
IDEgS0IKIGNvbnN0ZXhwciBTZWNvbmRzIHRyYW5zYWN0aW9uRHVyYXRpb24geyA1MDBfbXMgfTsK
IAotUmVmPExvY2FsU3RvcmFnZURhdGFiYXNlPiBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6Y3JlYXRl
KFJlZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlLCBTdHJpbmcmJiBkYXRhYmFzZVBhdGgsIHVuc2ln
bmVkIHF1b3RhSW5CeXRlcykKK1JlZjxMb2NhbFN0b3JhZ2VEYXRhYmFzZT4gTG9jYWxTdG9yYWdl
RGF0YWJhc2U6OmNyZWF0ZShSZWY8U3VzcGVuZGFibGVXb3JrUXVldWU+JiYgd29ya1F1ZXVlLCBT
dHJpbmcmJiBkYXRhYmFzZVBhdGgsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBMb2NhbFN0b3JhZ2VEYXRhYmFzZShXVEZNb3ZlKHdvcmtRdWV1ZSks
IFdURk1vdmUoZGF0YWJhc2VQYXRoKSwgcXVvdGFJbkJ5dGVzKSk7CiB9CiAKLUxvY2FsU3RvcmFn
ZURhdGFiYXNlOjpMb2NhbFN0b3JhZ2VEYXRhYmFzZShSZWY8V29ya1F1ZXVlPiYmIHdvcmtRdWV1
ZSwgU3RyaW5nJiYgZGF0YWJhc2VQYXRoLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCitMb2NhbFN0
b3JhZ2VEYXRhYmFzZTo6TG9jYWxTdG9yYWdlRGF0YWJhc2UoUmVmPFN1c3BlbmRhYmxlV29ya1F1
ZXVlPiYmIHdvcmtRdWV1ZSwgU3RyaW5nJiYgZGF0YWJhc2VQYXRoLCB1bnNpZ25lZCBxdW90YUlu
Qnl0ZXMpCiAgICAgOiBtX3dvcmtRdWV1ZShXVEZNb3ZlKHdvcmtRdWV1ZSkpCiAgICAgLCBtX2Rh
dGFiYXNlUGF0aChXVEZNb3ZlKGRhdGFiYXNlUGF0aCkpCiAgICAgLCBtX3F1b3RhSW5CeXRlcyhx
dW90YUluQnl0ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5oCmluZGV4IDZkNjY0NjFlODA1
MjQ4ZWRjMjEzNGFkMTA1NmI1YmViOGM5N2RiZDEuLjYzZjA4ZGZhYmYwN2MyYzNlMjFhZTUyNzkz
YTdhNzUwMmE1ZjM3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5oCkBAIC0yOCw3ICsy
OCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2UuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1dv
cmtRdWV1ZS5oPgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN1c3BlbmRhYmxlV29ya1F1ZXVl
OworfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTUUxpdGVTdGF0ZW1lbnRBdXRvUmVz
ZXRTY29wZTsKQEAgLTQxLDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIExv
Y2FsU3RvcmFnZURhdGFiYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8TG9jYWxTdG9yYWdlRGF0YWJh
c2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TG9jYWxTdG9yYWdlRGF0YWJhc2U+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPExvY2FsU3RvcmFnZURhdGFiYXNlPiBjcmVhdGUoUmVmPFdvcmtR
dWV1ZT4mJiwgU3RyaW5nJiYgZGF0YWJhc2VQYXRoLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwor
ICAgIHN0YXRpYyBSZWY8TG9jYWxTdG9yYWdlRGF0YWJhc2U+IGNyZWF0ZShSZWY8V1RGOjpTdXNw
ZW5kYWJsZVdvcmtRdWV1ZT4mJiwgU3RyaW5nJiYgZGF0YWJhc2VQYXRoLCB1bnNpZ25lZCBxdW90
YUluQnl0ZXMpOwogICAgIH5Mb2NhbFN0b3JhZ2VEYXRhYmFzZSgpOwogCiAgICAgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4gaXRlbXMoKSBjb25zdDsKQEAgLTU4LDcgKzYxLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgaGFuZGxlTG93TWVtb3J5V2FybmluZygpOwogCiBwcml2YXRlOgotICAgIExvY2Fs
U3RvcmFnZURhdGFiYXNlKFJlZjxXb3JrUXVldWU+JiYsIFN0cmluZyYmIGRhdGFiYXNlUGF0aCwg
dW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAgICBMb2NhbFN0b3JhZ2VEYXRhYmFzZShSZWY8V1RG
OjpTdXNwZW5kYWJsZVdvcmtRdWV1ZT4mJiwgU3RyaW5nJiYgZGF0YWJhc2VQYXRoLCB1bnNpZ25l
ZCBxdW90YUluQnl0ZXMpOwogCiAgICAgZW51bSBjbGFzcyBTaG91bGRDcmVhdGVEYXRhYmFzZSA6
IGJvb2wgeyBObywgWWVzIH07CiAgICAgYm9vbCBvcGVuRGF0YWJhc2UoU2hvdWxkQ3JlYXRlRGF0
YWJhc2UpOwpAQCAtNzEsNyArNzQsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUgc2NvcGVkU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+JiwgQVNDSUlMaXRlcmFsIHF1ZXJ5KSBjb25zdDsKIAot
ICAgIFJlZjxXb3JrUXVldWU+IG1fd29ya1F1ZXVlOworICAgIFJlZjxXVEY6OlN1c3BlbmRhYmxl
V29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsKICAgICBTdHJpbmcgbV9kYXRhYmFzZVBhdGg7CiAgICAg
bXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSBtX2RhdGFiYXNlOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAKaW5kZXggNjAxNTNiZjdkNmIwN2Y1OGUwZWExNTk1
YTE0ZmM4YzgxMzUzYzE0OS4uNGQxMTljNmUxNjU2MzE4NmNkZTcxMmNmMGRjMmVlYmRjZDBjZGQ0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xv
Y2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAg
TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjp+TG9jYWxTdG9yYWdlTmFtZXNwYWNlKCkKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KIAotU3RvcmFnZUFyZWEmIExvY2FsU3RvcmFnZU5h
bWVzcGFjZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1
cml0eU9yaWdpbiwgSXNFcGhlbWVyYWwgaXNFcGhlbWVyYWwsIFJlZjxXb3JrUXVldWU+JiYgd29y
a1F1ZXVlKQorU3RvcmFnZUFyZWEmIExvY2FsU3RvcmFnZU5hbWVzcGFjZTo6Z2V0T3JDcmVhdGVT
dG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbiwgSXNFcGhlbWVy
YWwgaXNFcGhlbWVyYWwsIFJlZjxXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlPiYmIHdvcmtRdWV1
ZSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICByZXR1cm4gKm1fc3Rv
cmFnZUFyZWFNYXAuZW5zdXJlKHNlY3VyaXR5T3JpZ2luLCBbJl0oKSBtdXRhYmxlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VOYW1lc3BhY2UuaAppbmRleCBhZGNhOWY0YTI1NWY1OGUyMTA2ZGQ2YTRlY2Vh
ZGRmZmYyNDUxYWMzLi41ZTA3MzQ5N2EyMTg4NDBiYWJlNjRiMWIwZjg5ZjlmMDMzNmNiNDEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxT
dG9yYWdlTmFtZXNwYWNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5oCkBAIC0zMSw3ICszMSwxMCBAQAogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgotI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KKworbmFtZXNwYWNlIFdU
RiB7CitjbGFzcyBTdXNwZW5kYWJsZVdvcmtRdWV1ZTsKK30KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKQEAgLTQ4LDcgKzUxLDcgQEAgcHVibGljOgogICAgIFN0b3JhZ2VNYW5hZ2VyKiBzdG9yYWdl
TWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuICZtX3N0b3JhZ2VNYW5hZ2VyOyB9CiAKICAgICBlbnVt
IGNsYXNzIElzRXBoZW1lcmFsIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBTdG9yYWdlQXJlYSYg
Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgSXNF
cGhlbWVyYWwsIFJlZjxXb3JrUXVldWU+JiYpOworICAgIFN0b3JhZ2VBcmVhJiBnZXRPckNyZWF0
ZVN0b3JhZ2VBcmVhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBJc0VwaGVtZXJhbCwg
UmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+JiYpOwogCiAgICAgdm9pZCBjbGVhclN0b3Jh
Z2VBcmVhc01hdGNoaW5nT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYp
OwogICAgIHZvaWQgY2xlYXJBbGxTdG9yYWdlQXJlYXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UuY3BwCmluZGV4IDZjNmE4YTI5YTZmYjkwMDk4NWQxNTM5MTVjNWY5MjE3N2Fj
NTRjYmEuLjE0YzZkN2Y2Nzg0ZTExMWJlY2U4MWE3NmQ1MWRhMzhmNmQ5MzkyMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZTo6flNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKCkKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KIAotU3RvcmFnZUFyZWEmIFNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3Vy
aXR5T3JpZ2luLCBSZWY8V29ya1F1ZXVlPiYmIHdvcmtRdWV1ZSkKK1N0b3JhZ2VBcmVhJiBTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShTZWN1cml0eU9yaWdp
bkRhdGEmJiBzZWN1cml0eU9yaWdpbiwgUmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+JiYg
d29ya1F1ZXVlKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIHJldHVy
biAqbV9zdG9yYWdlQXJlYU1hcC5lbnN1cmUoc2VjdXJpdHlPcmlnaW4sIFsmXSgpIG11dGFibGUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1Nl
c3Npb25TdG9yYWdlTmFtZXNwYWNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuaAppbmRleCBmNTUzZjRjMmNhZTE4MTAy
ZTYzZjI1NTA2M2ZlMzMwYjAzZmY5ZjFlLi43NWM0ZTQ4ZWJmMDkxM2VkZDhlOGIyZjgxNTgwMmMx
NGExZGEzYzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuaApAQCAtMzEsNiAr
MzEsMTEgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVl
dWUuaD4KIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdXNwZW5kYWJsZVdvcmtRdWV1ZTsKK30K
KworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU3RvcmFnZUFyZWE7CkBAIC00NCw3ICs0
OSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rv
cmFnZUFyZWFNYXAuaXNFbXB0eSgpOyB9CiAKLSAgICBTdG9yYWdlQXJlYSYgZ2V0T3JDcmVhdGVT
dG9yYWdlQXJlYShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgUmVmPFdvcmtRdWV1ZT4m
Jik7CisgICAgU3RvcmFnZUFyZWEmIGdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYsIFJlZjxXVEY6OlN1c3BlbmRhYmxlV29ya1F1ZXVlPiYmKTsKIAog
ICAgIHZvaWQgY2xvbmVUbyhTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSYgbmV3U2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcAppbmRleCA4MzE5NGIwNWZiNGVlMTE3NzdkZGYx
MGFlZDI3OGY2MGMwYjk5ODJjLi5kZDkxZTc4YTViMTYwOTE1MWVhYjExZTY0MDZkZjY1OWQxYmQ1
MDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlQXJlYS5jcHAKQEAgLTMwLDEyICszMCwxMyBAQAogI2luY2x1ZGUgIkxvY2Fs
U3RvcmFnZU5hbWVzcGFjZS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJTdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgPHd0Zi9TdXNwZW5kYWJsZVdv
cmtRdWV1ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKLVN0b3JhZ2VBcmVhOjpTdG9yYWdlQXJlYShMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIGxv
Y2FsU3RvcmFnZU5hbWVzcGFjZSwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9y
aWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBSZWY8V29ya1F1ZXVlPiYmIHF1ZXVlKQorU3Rv
cmFnZUFyZWE6OlN0b3JhZ2VBcmVhKExvY2FsU3RvcmFnZU5hbWVzcGFjZSogbG9jYWxTdG9yYWdl
TmFtZXNwYWNlLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCB1bnNp
Z25lZCBxdW90YUluQnl0ZXMsIFJlZjxTdXNwZW5kYWJsZVdvcmtRdWV1ZT4mJiBxdWV1ZSkKICAg
ICA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1ha2VXZWFrUHRyKGxvY2FsU3RvcmFnZU5hbWVz
cGFjZSkpCiAgICAgLCBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKQogICAgICwgbV9x
dW90YUluQnl0ZXMocXVvdGFJbkJ5dGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuaAppbmRleCA5YzcxNTcwMmRiZTY5Yjdm
MzNjN2MzMWJlNDU3NzliMzJlYTk2YTM0Li4zZThhZTllNzFmNDRiNzExZTM0MTg4ZGU3ZWYzOWQ2
MWU3MDAyMmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWEuaApAQCAtMzMsNiArMzMsMTAgQEAKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKK25hbWVzcGFjZSBXVEYgewor
Y2xhc3MgU3VzcGVuZGFibGVXb3JrUXVldWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFN0b3JhZ2VNYXA7CiB9CkBAIC00OCw3ICs1Miw3IEBAIGNsYXNzIFN0b3JhZ2VBcmVhIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPFN0b3JhZ2VBcmVhPiB7CiBwdWJsaWM6CiAgICAgdXNpbmcg
SWRlbnRpZmllciA9IFN0b3JhZ2VBcmVhSWRlbnRpZmllcjsKICAgICAKLSAgICBTdG9yYWdlQXJl
YShMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFJlZjxXb3JrUXVldWU+JiYpOworICAgIFN0b3Jh
Z2VBcmVhKExvY2FsU3RvcmFnZU5hbWVzcGFjZSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcywgUmVmPFdURjo6U3VzcGVuZGFibGVXb3Jr
UXVldWU+JiYpOwogICAgIH5TdG9yYWdlQXJlYSgpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VjdXJp
dHlPcmlnaW47IH0KQEAgLTkwLDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PElQQzo6
Q29ubmVjdGlvbjo6VW5pcXVlSUQ+IG1fZXZlbnRMaXN0ZW5lcnM7CiAKICAgICBJZGVudGlmaWVy
IG1faWRlbnRpZmllcjsKLSAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOworICAgIFJlZjxXVEY6
OlN1c3BlbmRhYmxlV29ya1F1ZXVlPiBtX3F1ZXVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA1YmNjYTI5OWJhNDE1ZTM5YzAyODQ1OTk3ZTU4
MDZiMjg0NmRhOTNjLi4yOTViNDRjN2ZkZWNhNWMzNDQwN2RiZjlhOTZhNjJhMzNiOGFkYTQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+
CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvU3VzcGVuZGFibGVXb3JrUXVldWUuaD4KICNpbmNsdWRl
IDx3dGYvV29ya1F1ZXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjExLDcgKzIxMiw3
IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmln
aW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yCiAgICAgfQogfQogCi1TdG9yYWdlQXJlYSogU3Rv
cmFnZU1hbmFnZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZUFyZWEoU3RvcmFnZU5hbWVzcGFjZUlkZW50
aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW4sIFJl
ZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlKQorU3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpj
cmVhdGVMb2NhbFN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VO
YW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luLCBSZWY8U3VzcGVuZGFibGVX
b3JrUXVldWU+JiYgd29ya1F1ZXVlKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCkBAIC0yMjEsNyArMjIyLDcgQEAgU3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpjcmVh
dGVMb2NhbFN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHMKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotU3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVUcmFu
c2llbnRMb2NhbFN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VO
YW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wTGV2ZWxPcmlnaW4sIFNlY3VyaXR5
T3JpZ2luRGF0YSYmIG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCitTdG9yYWdl
QXJlYSogU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoU3Rv
cmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdp
bkRhdGEmJiB0b3BMZXZlbE9yaWdpbiwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luLCBSZWY8
U3VzcGVuZGFibGVXb3JrUXVldWU+JiYgd29ya1F1ZXVlKQogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogICAgIEFTU0VSVCgoSGFzaE1hcDxTdG9yYWdlTmFtZXNwYWNlSWRlbnRp
ZmllciwgUmVmUHRyPFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZT4+Ojppc1ZhbGlkS2V5
KHN0b3JhZ2VOYW1lc3BhY2VJRCkpKTsKQEAgLTIzMiw3ICsyMzMsNyBAQCBTdG9yYWdlQXJlYSog
U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoU3RvcmFnZU5h
bWVzcGFjZUlkZQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1TdG9yYWdlQXJlYSogU3RvcmFn
ZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlQXJlYShTdG9yYWdlTmFtZXNwYWNlSWRlbnRp
ZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbiwgUmVm
PFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCitTdG9yYWdlQXJlYSogU3RvcmFnZU1hbmFnZXI6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlQXJlYShTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBzdG9yYWdl
TmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbiwgUmVmPFN1c3BlbmRhYmxl
V29ya1F1ZXVlPiYmIHdvcmtRdWV1ZSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKICAgICBBU1NFUlQoKEhhc2hNYXA8U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFJlZlB0
cjxTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZT4+Ojppc1ZhbGlkS2V5KHN0b3JhZ2VOYW1lc3BhY2VJ
RCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggMGQ2ZTdhZWRmZjY4MjI3YmY3ZGM4YWI3MTg0YWJj
NmZkMzMyMWM1NC4uZjZiMmI0Y2VmOTJlYzE2YjcyMTNiYjZmOTViYTMzZmJiYjJjYWM1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VNYW5hZ2VyLmgKQEAgLTM1LDYgKzM1LDEwIEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKK25hbWVzcGFjZSBXVEYgewor
Y2xhc3MgU3VzcGVuZGFibGVXb3JrUXVldWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwogfQpAQCAtODAsOSArODQsOSBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvY2FsU3RvcmFnZURhdGFiYXNlUXVvdGFJbkJ5dGVz
OwogCi0gICAgU3RvcmFnZUFyZWEqIGNyZWF0ZUxvY2FsU3RvcmFnZUFyZWEoU3RvcmFnZU5hbWVz
cGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBSZWY8V29ya1F1
ZXVlPiYmKTsKLSAgICBTdG9yYWdlQXJlYSogY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJl
YShTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBSZWY8V29ya1F1ZXVlPiYmKTsKLSAg
ICBTdG9yYWdlQXJlYSogY3JlYXRlU2Vzc2lvblN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgUmVmPFdvcmtRdWV1ZT4m
Jik7CisgICAgU3RvcmFnZUFyZWEqIGNyZWF0ZUxvY2FsU3RvcmFnZUFyZWEoU3RvcmFnZU5hbWVz
cGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBSZWY8V1RGOjpT
dXNwZW5kYWJsZVdvcmtRdWV1ZT4mJik7CisgICAgU3RvcmFnZUFyZWEqIGNyZWF0ZVRyYW5zaWVu
dExvY2FsU3RvcmFnZUFyZWEoU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgUmVmPFdU
Rjo6U3VzcGVuZGFibGVXb3JrUXVldWU+JiYpOworICAgIFN0b3JhZ2VBcmVhKiBjcmVhdGVTZXNz
aW9uU3RvcmFnZUFyZWEoU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmLCBSZWY8V1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZT4mJik7CiAKICAg
ICBWZWN0b3I8U3RvcmFnZUFyZWFJZGVudGlmaWVyPiBhbGxTdG9yYWdlQXJlYUlkZW50aWZpZXJz
KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwCmluZGV4IDM2YWJlYTUwNTBiODRi
MThjOTIyNzE1NjY5Yjc5MjNhMDhkY2FkZmYuLmU0ZTg4YTExMzExYWJhNDljNjVlNmJjODQ3Njdh
MTE4ODU4OGRiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcApAQCAtNDEsNyArNDEsNyBA
QCBSZWY8U3RvcmFnZU1hbmFnZXJTZXQ+IFN0b3JhZ2VNYW5hZ2VyU2V0OjpjcmVhdGUoKQogfQog
CiBTdG9yYWdlTWFuYWdlclNldDo6U3RvcmFnZU1hbmFnZXJTZXQoKQotICAgIDogbV9xdWV1ZShX
b3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5XZWJTdG9yYWdlIikpCisgICAgOiBt
X3F1ZXVlKFN1c3BlbmRhYmxlV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuV2Vi
U3RvcmFnZSIpKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTE3Nywz
NCArMTc3LDE2IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OnN1c3BlbmQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAKLSAgICBMb2NrZXIgc3VzcGVuc2lvbkxvY2tlciB7IG1fc3VzcGVuc2lv
bkxvY2sgfTsKLSAgICBtX3Nob3VsZFN1c3BlbmQgPSB0cnVlOwotCi0gICAgbV9xdWV1ZS0+ZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3VzcGVuc2lvbklk
ZW50aWZpZXIgPSArK21fc3VzcGVuc2lvbklkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewotICAgICAgICBMb2NrZXIg
c3VzcGVuc2lvbkxvY2tlciB7IG1fc3VzcGVuc2lvbkxvY2sgfTsKLSAgICAgICAgaWYgKCFtX3No
b3VsZFN1c3BlbmQgfHwgc3VzcGVuc2lvbklkZW50aWZpZXIgIT0gbV9zdXNwZW5zaW9uSWRlbnRp
ZmllcikgewotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
ICAgIC8vIE1ha2Ugc3VyZSB3ZSBmbHVzaCBsb2NhbCBzdG9yYWdlIHRvIGRpc2sgYmVmb3JlIHdl
IHN1c3BlbmQgdGhlIHRocmVhZCBhcyB3ZSB3YW50IHRvIG1ha2Ugc3VyZSBhbnkgcGVuZGluZwot
ICAgICAgICAvLyBTUUwgdHJhbnNhY3Rpb24gaGFzIGJlZW4gY29tbWl0dGVkLgotICAgICAgICBm
bHVzaExvY2FsU3RvcmFnZSgpOwotCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0KLSAgICAgICAgd2hpbGUgKG1fc2hvdWxkU3Vz
cGVuZCkKLSAgICAgICAgICAgIG1fc3VzcGVuc2lvbkNvbmRpdGlvbi53YWl0KG1fc3VzcGVuc2lv
bkxvY2spOwotICAgIH0pOworICAgIG1fcXVldWUtPnN1c3BlbmQoW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0geworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5mbHVzaExvY2FsU3RvcmFn
ZSgpOworICAgIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBTdG9y
YWdlTWFuYWdlclNldDo6cmVzdW1lKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCi0gICAgTG9ja2VyIHN1c3BlbnNpb25Mb2NrZXIgeyBtX3N1c3BlbnNpb25Mb2NrIH07Ci0g
ICAgbV9zaG91bGRTdXNwZW5kID0gZmFsc2U7Ci0gICAgbV9zdXNwZW5zaW9uQ29uZGl0aW9uLm5v
dGlmeU9uZSgpOworICAgIG1fcXVldWUtPnJlc3VtZSgpOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5h
Z2VyU2V0OjpnZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBHZXRPcmlnaW5zQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
U2V0LmgKaW5kZXggMDc5YWFkYzExNTA1MjgxNTg5OGE1YzdjYmRiYTE1MjUyNzViYzA5Yi4uNzIy
ZTAzMTQ2NzkyODI1ZTE3ZjdjOWI5ZDUxMGE5NGFlN2VlNmEyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
U2V0LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5j
bHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8
d3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAog
dXNpbmcgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOwpAQCAtOTgsMTIgKzk5LDcgQEAgcHJp
dmF0ZToKICAgICBIYXNoTWFwPFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgV2Vha1B0cjxTdG9yYWdl
QXJlYT4+IG1fc3RvcmFnZUFyZWFzOwogCiAgICAgSGFzaFNldDxJUEM6OkNvbm5lY3Rpb246OlVu
aXF1ZUlEPiBtX2Nvbm5lY3Rpb25zOwotICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7Ci0KLSAg
ICBMb2NrIG1fc3VzcGVuc2lvbkxvY2s7Ci0gICAgQ29uZGl0aW9uIG1fc3VzcGVuc2lvbkNvbmRp
dGlvbjsKLSAgICBib29sIG1fc2hvdWxkU3VzcGVuZCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fc3Vz
cGVuc2lvbkxvY2spIHsgZmFsc2UgfTsKLSAgICB1aW50NjRfdCBtX3N1c3BlbnNpb25JZGVudGlm
aWVyIFdURl9HVUFSREVEX0JZX0xPQ0sobV9zdXNwZW5zaW9uTG9jaykgeyAwIH07CisgICAgUmVm
PFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+IG1fcXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9UcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5j
cHAKaW5kZXggNjcwMTUxNjE3OGUxOWJjY2JkNjkzNjQ3YmUyNmMwYTM0MzNmN2VhMi4uZWVlYzU1
MGVlZjYzYWU1OWExZWFiM2FhOGE0OTdhMzJjMTA1MDYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVz
cGFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1Ry
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjp+VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
KCkKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KIAotU3RvcmFnZUFyZWEmIFRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShTZWN1
cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVl
dWUpCitTdG9yYWdlQXJlYSYgVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNy
ZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luLCBSZWY8
U3VzcGVuZGFibGVXb3JrUXVldWU+JiYgd29ya1F1ZXVlKQogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogICAgIHJldHVybiAqbV9zdG9yYWdlQXJlYU1hcC5lbnN1cmUoc2VjdXJp
dHlPcmlnaW4sIFsmXSgpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1RyYW5zaWVudExvY2FsU3Rv
cmFnZU5hbWVzcGFjZS5oCmluZGV4IGE0ODcyZmE2ZWE2ZDE5ZjdhYjAzNWQ5MmYyODJjZTA4ZmQ2
YTJhN2EuLjBlMTJkYTU0ODVkMDNiYzg1YjE2OGY3Nzk0ZWMzN2ExMDFiYzA0ZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9UcmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmgKQEAgLTQyLDcgKzQyLDcg
QEAgcHVibGljOgogICAgIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSgpOwogICAgIH5U
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoKTsKIAotICAgIFN0b3JhZ2VBcmVhJiBnZXRP
ckNyZWF0ZVN0b3JhZ2VBcmVhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBSZWY8V29y
a1F1ZXVlPiYmKTsKKyAgICBTdG9yYWdlQXJlYSYgZ2V0T3JDcmVhdGVTdG9yYWdlQXJlYShXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgUmVmPFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU+
JiYpOwogICAgIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMoKSBj
b25zdDsKIAogICAgIHZvaWQgY2xlYXJTdG9yYWdlQXJlYXNNYXRjaGluZ09yaWdpbihjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435358</attachid>
            <date>2021-08-11 09:50:25 -0700</date>
            <delta_ts>2021-08-11 15:26:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228748-20210811095024.patch</filename>
            <type>text/plain</type>
            <size>50385</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwOTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE2NDIzMmVkODBhNmRmMmRkZGY1NDc0
YjU4ZGY0N2YxMjc3MmQyNGQuLjQyOTQzZjE4MzU2NTgyMjYxMzZkMzQ2ZTcwYzA4MzcxMTFmMzA2
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEtMDgtMTEgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VzcGVuZCBXb3JrUXVldWUgb2YgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyBhbmQgTG9jYWxTdG9yYWdlIHNvb25lcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NzQ4CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS84MTYyNjcxND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgU3VzcGVuZGFibGVXb3JrUXVldWUgdGhhdCB3b3VsZCBwZXJmb3JtIHN1c3BlbmQg
Y2hlY2sgYmVmb3JlIGVhY2ggdGFzay4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYv
Rm9yd2FyZC5oOgorICAgICAgICAqIHd0Zi9TdXNwZW5kYWJsZVdvcmtRdWV1ZS5jcHA6IEFkZGVk
LgorICAgICAgICAoV1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU6OlN1c3BlbmRhYmxlV29ya1F1ZXVlKToKKyAgICAg
ICAgKFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU6OnN1c3BlbmQpOgorICAgICAgICAoV1RGOjpT
dXNwZW5kYWJsZVdvcmtRdWV1ZTo6cmVzdW1lKToKKyAgICAgICAgKFdURjo6U3VzcGVuZGFibGVX
b3JrUXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU6
OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAoV1RGOjpTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6ZGlz
cGF0Y2hTeW5jKToKKyAgICAgICAgKFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU6Omludm9rZUFs
bFN1c3BlbnNpb25Db21wbGV0aW9uSGFuZGxlcnMpOgorICAgICAgICAoV1RGOjpTdXNwZW5kYWJs
ZVdvcmtRdWV1ZTo6c3VzcGVuZElmTmVlZGVkKToKKyAgICAgICAgKiB3dGYvU3VzcGVuZGFibGVX
b3JrUXVldWUuaDogQWRkZWQuCisgICAgICAgICogd3RmL1dvcmtRdWV1ZS5oOgorICAgICAgICAo
KTogRGVsZXRlZC4KKwogMjAyMS0wOC0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgRW5hYmxlIFdlYlJUQyByZWxheSBieSBkZWZhdWx0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGE0MjhhN2FmMGY1NTY1YmFjMjkxNmMxYzdmOTZiMGE4ZTM2YjAxMWQuLjIxNjkzNzc4NDE0Njdh
YTc4ZTUxYTRlNWEwNWE0ZjdhY2Y4NDk1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIw
MjEtMDgtMTEgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgU3Vz
cGVuZCBXb3JrUXVldWUgb2YgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBhbmQgTG9jYWxTdG9yYWdl
IHNvb25lcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI4NzQ4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MTYyNjcxND4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIHN1c3BlbmRpbmcgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyBhbmQgTG9jYWxTdG9yYWdlLCB3ZSBkaXNwYXRjaGVkIGEgc3VzcGVu
ZCB0YXNrLCB3aGljaCB3YWl0cyBvbiBhIAorICAgICAgICBjb25kaXRpb24sIHRvIHRoZWlyIFdv
cmtRdWV1ZS4gVGhhdCBtZWFucyB0aGUgcXVldWUgd2lsbCBiZSBzdXNwZW5kZWQgYWZ0ZXIgY29t
cGxldGluZyBhbGwgdGFza3Mgc2NoZWR1bGVkIAorICAgICAgICBiZWZvcmUgdGhlIHN1c3BlbmQg
dGFzay4gVGhlc2UgdGFza3MgbWF5IHRha2UgYSBsb25nIHRpbWUgdG8gY29tcGxldGUgYW5kIGFz
c2VydGlvbiBtYXkgYmUgdGltZWQgb3V0LgorCisgICAgICAgIFdoZW4gbmV0d29yayBwcm9jZXNz
IHJlY2VpdmVzIFByZXBhcmVUb1N1c3BlbmQgbWVzc2FnZSwgd2Ugd2FudCB0aGUgcXVldWVzIHRv
IHN1c3BlbmQgYXMgc29vbiBhcyBwb3NzaWJsZS4gVG8gCisgICAgICAgIGFjaGlldmUgdGhhdCwg
bm93IHdlIGNoZWNrIGlmIHRoZSBxdWV1ZSBuZWVkcyB0byBiZSBzdXNwZW5kZWQgYmVmb3JlIGVh
Y2ggdGFzaywgd2hpY2ggZW5zdXJlcyB0aGUgcXVldWUgCisgICAgICAgIGV4ZWN1dGUgYXMgbW9z
dCBvbmUgdGFzayBhZnRlciBzdXNwZW5kKCkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OndvcmtRdWV1ZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpzaGFyZWRTdGF0aXN0aWNzUXVldWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1c3BlbmQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc3VtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldURl9HVUFSREVEX0JZX0xPQ0spOiBEZWxldGVkLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6TG9jYWxTdG9yYWdlRGF0
YWJhc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdl
RGF0YWJhc2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3Rv
cmFnZU5hbWVzcGFjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZU5hbWVzcGFj
ZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWE6OlN0b3JhZ2VBcmVhKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVMb2NhbFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEpOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VBcmVhKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpTdG9yYWdlTWFuYWdlclNldCk6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpzdXNwZW5kKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OnJlc3VtZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5oOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlTWFuYWdlclNldDo6V1RGX0dVQVJERURfQllfTE9DSyk6IERlbGV0ZWQuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9UcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6
OmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmg6CisKIDIwMjEtMDgtMTAgIFRp
bSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBidWlsZCBmaXggYWZ0ZXIgcjI4MDg3NQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNjAyNTU5YmRmNDMyNGQzYWVhOGRkMTIxMjQ3Yzk3NjJjMDdhYWI5NC4u
NzI2MWRjMzBhZmMwZjRlMTczNjIxMzVjZTdmMGNiNWU3Zjg2MGQ1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDIsNiArMTAyLDcgQEAKIAkJODM0OEJB
MEUyMUZCQzBENTAwRkQzMDU0IC8qIE9iamVjdElkZW50aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0OEJBMEQyMUZCQzBENDAwRkQzMDU0
IC8qIE9iamVjdElkZW50aWZpZXIuY3BwICovOyB9OwogCQk5MzkzNEJEMzE4QTFFOEMzMDBEMEQ2
QTEgLyogU3RyaW5nVmlld0NvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTM5MzRCRDIxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdDb2Nv
YS5tbSAqLzsgfTsKIAkJOTM5MzRCRDUxOEExRjE2OTAwRDBENkExIC8qIFN0cmluZ1ZpZXdDRi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkzNEJE
NDE4QTFGMTY5MDBEMEQ2QTEgLyogU3RyaW5nVmlld0NGLmNwcCAqLzsgfTsKKwkJOTNCMDdFRDgy
NkI4NzE3MDAwQTA5QjM0IC8qIFN1c3BlbmRhYmxlV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjA3RUQ3MjZCODcxNUIwMEEwOUIz
NCAvKiBTdXNwZW5kYWJsZVdvcmtRdWV1ZS5jcHAgKi87IH07CiAJCTkzQjVCNDRFMjIxM0Q2MTYw
MDRCN0FBNyAvKiBIZXhOdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNCNUI0NEQyMjEzRDYxNjAwNEI3QUE3IC8qIEhleE51bWJlci5jcHAg
Ki87IH07CiAJCTkzQjVCNDUxMjIxNzFFRUEwMDRCN0FBNyAvKiBMb2dnZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNUI0NTAyMjE3MUVFOTAw
NEI3QUE3IC8qIExvZ2dlci5jcHAgKi87IH07CiAJCTkzRjE5OTNFMTlENzk1OEQwMEMyMzkwQiAv
KiBTdHJpbmdWaWV3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzRjE5OTNEMTlENzk1OEQwMEMyMzkwQiAvKiBTdHJpbmdWaWV3LmNwcCAqLzsgfTsK
QEAgLTUxMCw2ICs1MTEsOCBAQAogCQk5MzkzNEJEMjE4QTFFOEMzMDBEMEQ2QTEgLyogU3RyaW5n
Vmlld0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3Ry
aW5nVmlld0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkzNEJENDE4
QTFGMTY5MDBEMEQ2QTEgLyogU3RyaW5nVmlld0NGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFN0cmluZ1ZpZXdDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzQUM5MUE3MTg5NDJGQzQwMDI0NDkzOSAvKiBMQ2hhci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBMQ2hhci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5M0IwN0VENjI2Qjg2QkI1MDBBMDlCMzQgLyogU3VzcGVuZGFibGVXb3JrUXVldWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3VzcGVuZGFibGVXb3JrUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTNCMDdFRDcyNkI4NzE1QjAwQTA5QjM0IC8qIFN1c3BlbmRhYmxlV29ya1F1ZXVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1c3BlbmRhYmxlV29ya1F1ZXVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNUI0NEQyMjEzRDYxNjAwNEI3QUE3IC8qIEhleE51
bWJlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZXhOdW1iZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0I1QjQ1MDIyMTcxRUU5MDA0QjdB
QTcgLyogTG9nZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExv
Z2dlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDAwMTdCMjY0REJBQ0Yw
MEJDRjEwOSAvKiBTdHJpbmdDb25jYXRlbmF0ZUNGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0cmluZ0NvbmNhdGVuYXRlQ0YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEzMTEsNiArMTMxNCw4IEBACiAJCQkJQTc0ODc0NTExN0EwQkRBRTAwRkEwNENCIC8q
IFN0cmluZ0hhc2hEdW1wQ29udGV4dC5oICovLAogCQkJCTBGRERCRkE1MTY2NkRGQTMwMEM1NUZF
RiAvKiBTdHJpbmdQcmludFN0cmVhbS5jcHAgKi8sCiAJCQkJMEZEREJGQTYxNjY2REZBMzAwQzU1
RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFtLmggKi8sCisJCQkJOTNCMDdFRDcyNkI4NzE1QjAwQTA5
QjM0IC8qIFN1c3BlbmRhYmxlV29ya1F1ZXVlLmNwcCAqLywKKwkJCQk5M0IwN0VENjI2Qjg2QkI1
MDBBMDlCMzQgLyogU3VzcGVuZGFibGVXb3JrUXVldWUuaCAqLywKIAkJCQk1NTk3RjgyQzFEOTRC
OTk3MDA2NkJDMjEgLyogU3luY2hyb25pemVkRml4ZWRRdWV1ZS5oICovLAogCQkJCUUzRTE1ODI1
MUVBREE1M0MwMDRBMDc5RCAvKiBTeXN0ZW1GcmVlLmggKi8sCiAJCQkJRTREMkFFNEQyNjhBNEM3
RjAwREZFQTAyIC8qIFN5c3RlbU1hbGxvYy5oICovLApAQCAtMTgyNCw2ICsxODI5LDcgQEAKIAkJ
CQk5MzkzNEJENTE4QTFGMTY5MDBEMEQ2QTEgLyogU3RyaW5nVmlld0NGLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTkzOTM0QkQzMThBMUU4QzMwMEQwRDZBMSAvKiBTdHJpbmdWaWV3Q29jb2EubW0g
aW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNCNzE1MUE4MjVCMDA0MTIzRkYgLyogc3RydG9kLmNj
IGluIFNvdXJjZXMgKi8sCisJCQkJOTNCMDdFRDgyNkI4NzE3MDAwQTA5QjM0IC8qIFN1c3BlbmRh
YmxlV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUyMTgzMDEyQzk5RTQ3NkE4NEVF
QkVBOCAvKiBTeW1ib2xJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcwQTk5M0ZFMUFENzE1
MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFQjYx
RURDNzI0MDlDQ0MxMDAxRUZFMzYgLyogU3lzdGVtVHJhY2luZ0NvY29hLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
V1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBhZjhkMjkwNDY0ZmNhZjU5NWMwYTQ2NmEwZmM4
NWJlMjlkNGI0YmU1Li4wODI2Yjg1M2Q1NTYyMmZlMTg2OGZhMzZjOTdlZDI5MGJlY2MzODc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMjY2LDYgKzI2Niw3IEBAIHNldChXVEZfUFVCTElDX0hF
QURFUlMKICAgICBTdHJpbmdFeHRyYXMuaAogICAgIFN0cmluZ0hhc2hEdW1wQ29udGV4dC5oCiAg
ICAgU3RyaW5nUHJpbnRTdHJlYW0uaAorICAgIFN1c3BlbmRhYmxlV29ya1F1ZXVlLmgKICAgICBT
eW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmgKICAgICBTeXN0ZW1GcmVlLmgKICAgICBTeXN0ZW1NYWxs
b2MuaApAQCAtNDYyLDYgKzQ2Myw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIFN0YWNrU3RhdHMu
Y3BwCiAgICAgU3RhY2tUcmFjZS5jcHAKICAgICBTdHJpbmdQcmludFN0cmVhbS5jcHAKKyAgICBT
dXNwZW5kYWJsZVdvcmtRdWV1ZS5jcHAKICAgICBUaHJlYWRHcm91cC5jcHAKICAgICBUaHJlYWRN
ZXNzYWdlLmNwcAogICAgIFRocmVhZGluZy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0ZvcndhcmQuaCBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAppbmRleCA1NTBmMDA1ZDM5MTEx
NTMzZTRlNzNhZTBiOWUyOWJlM2MwOTRjM2Q0Li4zYTcyOTc0MzdiNTlkNDUzZGJkNmU5Njg0MzQ2
OTc0ZTUzYzg2Y2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKKysrIGIv
U291cmNlL1dURi93dGYvRm9yd2FyZC5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIFN0cmluZzsK
IGNsYXNzIFN0cmluZ0J1aWxkZXI7CiBjbGFzcyBTdHJpbmdJbXBsOwogY2xhc3MgU3RyaW5nVmll
dzsKK2NsYXNzIFN1c3BlbmRhYmxlV29ya1F1ZXVlOwogY2xhc3MgVGV4dFBvc2l0aW9uOwogY2xh
c3MgVGV4dFN0cmVhbTsKIGNsYXNzIFVuaXF1ZWRTdHJpbmdJbXBsOwpAQCAtMTUxLDYgKzE1Miw3
IEBAIHVzaW5nIFdURjo6U3RyaW5nQnVpbGRlcjsKIHVzaW5nIFdURjo6U3RyaW5nSW1wbDsKIHVz
aW5nIFdURjo6U3RyaW5nUGFyc2luZ0J1ZmZlcjsKIHVzaW5nIFdURjo6U3RyaW5nVmlldzsKK3Vz
aW5nIFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU7CiB1c2luZyBXVEY6OlRleHRQb3NpdGlvbjsK
IHVzaW5nIFdURjo6VGV4dFN0cmVhbTsKIHVzaW5nIFdURjo6VVJMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvU3VzcGVuZGFibGVXb3JrUXVldWUuY3BwIGIvU291cmNlL1dURi93dGYvU3Vz
cGVuZGFibGVXb3JrUXVldWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4Y2ZjY2U2MWMzNTlkYTkxOTU2MDEx
OGQ5MjA1OThjOWUxNGEzNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdXNw
ZW5kYWJsZVdvcmtRdWV1ZS5jcHAKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSA8d3RmL1N1c3BlbmRhYmxlV29ya1F1ZXVlLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitSZWY8
U3VzcGVuZGFibGVXb3JrUXVldWU+IFN1c3BlbmRhYmxlV29ya1F1ZXVlOjpjcmVhdGUoY29uc3Qg
Y2hhciogbmFtZSwgV29ya1F1ZXVlOjpRT1MgcW9zKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFN1c3BlbmRhYmxlV29ya1F1ZXVlKG5hbWUsIHFvcykpOworfQorCitTdXNwZW5kYWJsZVdv
cmtRdWV1ZTo6U3VzcGVuZGFibGVXb3JrUXVldWUoY29uc3QgY2hhciogbmFtZSwgUU9TIHFvcykK
KyAgICA6IFdvcmtRdWV1ZShuYW1lLCBUeXBlOjpTZXJpYWwsIHFvcykKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworfQorCit2b2lkIFN1c3BlbmRhYmxlV29ya1F1ZXVlOjpzdXNwZW5k
KEZ1bmN0aW9uPHZvaWQoKT4mJiBzdXNwZW5kRnVuY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIExvY2tlciBzdXNwZW5zaW9uTG9ja2VyIHsgbV9zdXNwZW5zaW9uTG9jayB9OworCisg
ICAgLy8gTGFzdCBzdXNwZW5kIGZ1bmN0aW9uIHdpbGwgYmUgdGhlIG9uZSB0aGF0IGlzIHVzZWQu
CisgICAgbV9zdXNwZW5kRnVuY3Rpb24gPSBXVEZNb3ZlKHN1c3BlbmRGdW5jdGlvbik7CisgICAg
bV9zdXNwZW5zaW9uQ29tcGxldGlvbkhhbmRsZXJzLmFwcGVuZChXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgaWYgKG1faXNPcldpbGxCZVN1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9pc09yV2lsbEJlU3VzcGVuZGVkID0gdHJ1ZTsKKyAgICAvLyBNYWtlIHN1cmUg
cXVldWUgd2lsbCBiZSBzdXNwZW5kZWQgd2hlbiB0aGVyZSBpcyBubyB0YXNrIHNjaGVkdWxlZCBv
biB0aGUgcXVldWUuCisgICAgV29ya1F1ZXVlOjpkaXNwYXRjaChbdGhpc10geworICAgICAgICBz
dXNwZW5kSWZOZWVkZWQoKTsKKyAgICB9KTsKK30KKwordm9pZCBTdXNwZW5kYWJsZVdvcmtRdWV1
ZTo6cmVzdW1lKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIExvY2tlciBz
dXNwZW5zaW9uTG9ja2VyIHsgbV9zdXNwZW5zaW9uTG9jayB9OworCisgICAgaWYgKCFtX2lzT3JX
aWxsQmVTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNPcldpbGxCZVN1c3Bl
bmRlZCA9IGZhbHNlOworICAgIG1fc3VzcGVuc2lvbkNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKK30K
Kwordm9pZCBTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6ZGlzcGF0Y2goRnVuY3Rpb248dm9pZCgpPiYm
IGZ1bmN0aW9uKQoreworICAgIC8vIFdvcmtRdWV1ZSB3aWxsIHByb3RlY3QgdGhpcyBpbiBkaXNw
YXRjaCgpLgorICAgIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goW3RoaXMsIGZ1bmN0aW9uID0gV1RGTW92
ZShmdW5jdGlvbildIHsKKyAgICAgICAgc3VzcGVuZElmTmVlZGVkKCk7CisgICAgICAgIGZ1bmN0
aW9uKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3VzcGVuZGFibGVXb3JrUXVldWU6OmRpc3BhdGNo
QWZ0ZXIoU2Vjb25kcyBzZWNvbmRzLCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCit7Cisg
ICAgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHNlY29uZHMsIFt0aGlzLCBmdW5jdGlvbiA9IFdU
Rk1vdmUoZnVuY3Rpb24pXSB7CisgICAgICAgIHN1c3BlbmRJZk5lZWRlZCgpOworICAgICAgICBm
dW5jdGlvbigpOworICAgIH0pOworfQorCit2b2lkIFN1c3BlbmRhYmxlV29ya1F1ZXVlOjpkaXNw
YXRjaFN5bmMoRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQoreworICAgIC8vIFRoaXMgZnVu
Y3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbmx5IHdoZW4gcXVldWUgaXMgbm90IGFib3V0IHRvIGJl
IHN1c3BlbmRlZCwKKyAgICAvLyBvdGhlcndpc2UgdGhyZWFkIG1heSBiZSBibG9ja2VkLgorICAg
IGlmIChpc01haW5UaHJlYWQoKSkgeworICAgICAgICBMb2NrZXIgc3VzcGVuc2lvbkxvY2tlciB7
IG1fc3VzcGVuc2lvbkxvY2sgfTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1faXNPcldpbGxC
ZVN1c3BlbmRlZCk7CisgICAgfQorICAgIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hTeW5jKFdURk1vdmUo
ZnVuY3Rpb24pKTsKK30KKwordm9pZCBTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6aW52b2tlQWxsU3Vz
cGVuc2lvbkNvbXBsZXRpb25IYW5kbGVycygpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CisKKyAgICBpZiAobV9zdXNwZW5zaW9uQ29tcGxldGlvbkhhbmRsZXJzLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgY2FsbE9uTWFpblRocmVhZChbY29tcGxldGlvbkhhbmRs
ZXJzID0gc3RkOjpleGNoYW5nZShtX3N1c3BlbnNpb25Db21wbGV0aW9uSGFuZGxlcnMsIHsgfSld
KCkgbXV0YWJsZSB7CisgICAgICAgIGZvciAoYXV0byYgY29tcGxldGlvbkhhbmRsZXIgOiBjb21w
bGV0aW9uSGFuZGxlcnMpIHsKKyAgICAgICAgICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICB9CisgICAgfSk7Cit9
CisKK3ZvaWQgU3VzcGVuZGFibGVXb3JrUXVldWU6OnN1c3BlbmRJZk5lZWRlZCgpCit7CisgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAgICBMb2NrZXIgc3VzcGVuc2lvbkxvY2tlciB7
IG1fc3VzcGVuc2lvbkxvY2sgfTsKKyAgICBhdXRvIHN1c3BlbmRGdW5jdGlvbiA9IHN0ZDo6ZXhj
aGFuZ2UobV9zdXNwZW5kRnVuY3Rpb24sIHsgfSk7CisgICAgaWYgKG1faXNPcldpbGxCZVN1c3Bl
bmRlZCkKKyAgICAgICAgc3VzcGVuZEZ1bmN0aW9uKCk7CisKKyAgICBpbnZva2VBbGxTdXNwZW5z
aW9uQ29tcGxldGlvbkhhbmRsZXJzKCk7CisKKyAgICB3aGlsZSAobV9pc09yV2lsbEJlU3VzcGVu
ZGVkKQorICAgICAgICBtX3N1c3BlbnNpb25Db25kaXRpb24ud2FpdChtX3N1c3BlbnNpb25Mb2Nr
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9T
dXNwZW5kYWJsZVdvcmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvU3VzcGVuZGFibGVXb3JrUXVl
dWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jNzgwOWM0ZGU2MDVhMjk4ZjUwZDE3NTViMzE1ODdhZDNlZDY1Yjcy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvU3VzcGVuZGFibGVXb3JrUXVldWUu
aApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+Cisj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3
dGYvV29ya1F1ZXVlLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBTdXNwZW5kYWJsZVdv
cmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBXb3JrUXVldWUgeworcHVibGljOgorICAgIHVzaW5nIFFP
UyA9IFdvcmtRdWV1ZTo6UU9TOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN1
c3BlbmRhYmxlV29ya1F1ZXVlPiBjcmVhdGUoY29uc3QgY2hhciogbmFtZSwgUU9TID0gUU9TOjpE
ZWZhdWx0KTsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHN1c3BlbmQoRnVuY3Rpb248
dm9pZCgpPiYmIHN1c3BlbmRGdW5jdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHN1
c3BlbnNpb25Db21wbGV0aW9uSGFuZGxlcik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
cmVzdW1lKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248
dm9pZCgpPiYmKSBmaW5hbDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaEFm
dGVyKFNlY29uZHMsIEZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZGlzcGF0Y2hTeW5jKEZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CisKK3By
aXZhdGU6CisgICAgU3VzcGVuZGFibGVXb3JrUXVldWUoY29uc3QgY2hhciogbmFtZSwgUU9TKTsK
KyAgICB2b2lkIGludm9rZUFsbFN1c3BlbnNpb25Db21wbGV0aW9uSGFuZGxlcnMoKSBXVEZfUkVR
VUlSRVNfTE9DSyhtX3N1c3BlbnNpb25Mb2NrKTsKKyAgICB2b2lkIHN1c3BlbmRJZk5lZWRlZCgp
OworI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQorICAgIHVzaW5nIFdvcmtRdWV1ZTo6ZGlzcGF0
Y2hRdWV1ZTsKKyNlbHNlCisgICAgdXNpbmcgV29ya1F1ZXVlOjpydW5Mb29wOworI2VuZGlmCisK
KyAgICBMb2NrIG1fc3VzcGVuc2lvbkxvY2s7CisgICAgQ29uZGl0aW9uIG1fc3VzcGVuc2lvbkNv
bmRpdGlvbjsKKyAgICBib29sIG1faXNPcldpbGxCZVN1c3BlbmRlZCBXVEZfR1VBUkRFRF9CWV9M
T0NLKG1fc3VzcGVuc2lvbkxvY2spIHsgZmFsc2UgfTsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1f
c3VzcGVuZEZ1bmN0aW9uIFdURl9HVUFSREVEX0JZX0xPQ0sobV9zdXNwZW5zaW9uTG9jayk7Cisg
ICAgVmVjdG9yPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+IG1fc3VzcGVuc2lvbkNvbXBsZXRp
b25IYW5kbGVycyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fc3VzcGVuc2lvbkxvY2spOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6U3VzcGVuZGFibGVXb3JrUXVldWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XVEYvd3RmL1dv
cmtRdWV1ZS5oCmluZGV4IGNkYTFkMTg0YTFhMzE1ZGE0YzM5NGI1N2M2MDM2ZWRhYzlkNjk0NmEu
LmU3YzY2NTNkY2FiMTAyZWMzZWI1ZGRiY2MxZDExNzc2ODAyMWUyNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5o
CkBAIC00MSw3ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi1jbGFzcyBXb3JrUXVldWUg
ZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKK2NsYXNzIFdvcmtRdWV1ZSA6IHB1
YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogCiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBUeXBl
IHsKQEAgLTUzLDExICs1MywxMSBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBXb3JrUXVldWUmIG1haW4oKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmPFdvcmtRdWV1ZT4gY3JlYXRlKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgPSBUeXBlOjpTZXJp
YWwsIFFPUyA9IFFPUzo6RGVmYXVsdCk7Ci0gICAgfldvcmtRdWV1ZSgpIGZpbmFsOworICAgIH5X
b3JrUXVldWUoKSBvdmVycmlkZTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRpc3Bh
dGNoKEZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgZGlzcGF0Y2hBZnRlcihTZWNvbmRzLCBGdW5jdGlvbjx2b2lkKCk+JiYpOwotICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGRpc3BhdGNoU3luYyhGdW5jdGlvbjx2b2lkKCk+JiYpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQoKT4mJikgb3Zl
cnJpZGU7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEFmdGVy
KFNlY29uZHMsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaFN5bmMoRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjb25jdXJyZW50QXBwbHkoc2l6ZV90IGl0ZXJhdGlv
bnMsIFdURjo6RnVuY3Rpb248dm9pZChzaXplX3QgaW5kZXgpPiYmKTsKIApAQCAtNjcsOSArNjcs
MTAgQEAgcHVibGljOgogICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiAqbV9y
dW5Mb29wOyB9CiAjZW5kaWYKIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBXb3JrUXVldWUo
Y29uc3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKTsKIAorcHJpdmF0ZToKICAgICBzdGF0aWMgUmVm
PFdvcmtRdWV1ZT4gY29uc3RydWN0TWFpbldvcmtRdWV1ZSgpOwogI2lmIFVTRShDT0NPQV9FVkVO
VF9MT09QKQogICAgIGV4cGxpY2l0IFdvcmtRdWV1ZShPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1
ZV90PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuY3BwCmluZGV4IDFlOGUyOGJkYWU4ZjAyZTQwZmNiNGQxYTliNTcwMmVhNWVmMWMy
MDkuLmJiZThkMmRiM2M3NWQ5Y2IyZDY4N2IyNWI5YWViZTAwYzIwYzlmYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAt
NTIsNiArNTIsNyBAQAogI2luY2x1ZGUgPHd0Zi9Sb2Jpbkhvb2RIYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZFNldC5oPgorI2luY2x1ZGUgPHd0Zi9T
dXNwZW5kYWJsZVdvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zNDYsNyArMzQ3LDcgQEAgSGFzaFNldDxSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSo+JiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG8KICAgICByZXR1cm4gbWFwOwogfQogCi1SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSwgV29ya1F1ZXVlJiB3b3JrUXVldWUsIFNo
b3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgY29uc3QgU3RyaW5n
JiBzdG9yYWdlRGlyZWN0b3J5UGF0aCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgc3RvcmUsIFN1c3BlbmRh
YmxlV29ya1F1ZXVlJiB3b3JrUXVldWUsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5j
bHVkZUxvY2FsaG9zdCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5UGF0aCwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIDogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHN0
b3JlLCB3b3JrUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpCiAgICAgLCBtX3N0b3JhZ2VE
aXJlY3RvcnlQYXRoKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdl
RGlyZWN0b3J5UGF0aCwgIm9ic2VydmF0aW9ucy5kYiJfcykpCiAgICAgLCBtX3RyYW5zYWN0aW9u
KG1fZGF0YWJhc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5oCmluZGV4IGVhNmI1ODdkMWNlMTcwM2UwMzA4YjdjMWFkZmE5NDY3YzA4MDMw
MTEuLjM1MTI5ODY4Mzg3MWM3ZWJkM2NhNzk0OWIwNThiNDM4MDUxZGViMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC0zOCw3
ICszOCw2IEBACiAjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZFNldC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNRTGl0ZURhdGFiYXNlOwpAQCAtNzYsNyArNzUs
NyBAQCB0eXBlZGVmIHN0ZDo6cGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4gVGFi
bGVBbmRJbmRleFBhaXI7CiAvLyBUaGlzIGlzIGFsd2F5cyBjb25zdHJ1Y3RlZCAvIHVzZWQgLyBk
ZXN0cm95ZWQgb24gdGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSdzIHN0YXRpc3Rp
Y3MgcXVldWUuCiBjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSBmaW5h
bCA6IHB1YmxpYyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgewogcHVibGljOgotICAgIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSYsIFdvcmtRdWV1ZSYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIGNvbnN0IFN0cmlu
ZyYgc3RvcmFnZURpcmVjdG9yeVBhdGgsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUm
LCBTdXNwZW5kYWJsZVdvcmtRdWV1ZSYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIGNvbnN0IFN0
cmluZyYgc3RvcmFnZURpcmVjdG9yeVBhdGgsIFBBTDo6U2Vzc2lvbklEKTsKICAgICB+UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUoKTsKIAogICAgIHN0YXRpYyBIYXNoU2V0PFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKj4mIGFsbFN0b3JlcygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCBh
ZDRhM2JiNDdlMGNmYTI3Mjk3NmFjMzFkNDgxZTU1MDFkZjY0MWNiLi5jY2YyNzNkNjg5N2U3NGNl
NTJkMWUxNmIxNjAxZGJjZjczNTkzY2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcApAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgdm9p
ZCBwcnVuZVJlc291cmNlcyhIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBVbmlxdWVSZWY8UmVz
b3VyY2VMb2FkU3RhdAogICAgICAgICBzdGF0aXN0aWNzTWFwLnJlbW92ZShzdGF0aXN0aWNzVG9Q
cnVuZVtpXS5kb21haW4pOwogfQogCi1SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUmIHN0b3JlLCBXb3JrUXVldWUmIHdvcmtRdWV1ZSwgU2hvdWxkSW5jbHVkZUxvY2Fs
aG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KQorUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUoV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlJiBzdG9yZSwgU3VzcGVuZGFibGVXb3JrUXVldWUmIHdvcmtRdWV1ZSwg
U2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KQogICAgIDogUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHN0b3JlLCB3b3JrUXVldWUsIHNob3VsZEluY2x1ZGVM
b2NhbGhvc3QpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAppbmRleCA0
OWQzZDgyMzI5MTU1NWM2NGIwNDRiZjgyM2QzYjAyYTZhM2ZlZTdiLi5hNzdlMDk4MGFlYTNkMjY1
YTE2YTE4NTI0YjQ3ZWVjYmNiYjNjNjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBLZXllZERlY29kZXI7CkBAIC00Nyw3ICs0Niw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogLy8gVGhpcyBpcyBhbHdheXMgY29uc3RydWN0ZWQgLyB1c2VkIC8gZGVzdHJv
eWVkIG9uIHRoZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUncyBzdGF0aXN0aWNzIHF1
ZXVlLgogY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlIGZpbmFsIDogcHVi
bGljIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSB7CiBwdWJsaWM6Ci0gICAgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYs
IFdvcmtRdWV1ZSYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOworICAgIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmLCBTdXNw
ZW5kYWJsZVdvcmtRdWV1ZSYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwogCiAgICAgdm9pZCBj
bGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcAppbmRleCBiZjFjNzUzN2JiMzQzY2UxNGExY2NjOTc3ODQ1OWE0NTNmMmVlOTQ4
Li44NjJmODM3YmMwNWM1NWU2YjQ3NDgzZTAxNTQyMDBlZGQ1ZjNhYmI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIGJv
b2wgT3BlcmF0aW5nRGF0ZTo6b3BlcmF0b3I8PShjb25zdCBPcGVyYXRpbmdEYXRlJiBvdGhlcikg
Y29uc3QKICAgICByZXR1cm4gc2Vjb25kc1NpbmNlRXBvY2goKSA8PSBvdGhlci5zZWNvbmRzU2lu
Y2VFcG9jaCgpOwogfQogCi1SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIHN0b3JlLCBX
b3JrUXVldWUmIHdvcmtRdWV1ZSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRl
TG9jYWxob3N0KQorUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSwgU3VzcGVu
ZGFibGVXb3JrUXVldWUmIHdvcmtRdWV1ZSwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJ
bmNsdWRlTG9jYWxob3N0KQogICAgIDogbV9zdG9yZShzdG9yZSkKICAgICAsIG1fd29ya1F1ZXVl
KHdvcmtRdWV1ZSkKICAgICAsIG1fc2hvdWxkSW5jbHVkZUxvY2FsaG9zdChzaG91bGRJbmNsdWRl
TG9jYWxob3N0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4
IDZhNTYwNTZjYzU5NDYyODQyMWNmY2NhOGZmZDkxNTY1ZjhhYTg2NTcuLjI0MjJmYzg0ZjU0ZWU3
Y2QzMGVlNDBmMTQyMDQyZDQxZWJmNTFiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgKQEAgLTMyLDkgKzMyLDkgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9Db25zb2xlVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0j
aW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCiAjaWYgSEFWRShDT1JFX1BSRURJQ1RJT04pCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5oIgpAQCAtMjE3
LDcgKzIxNyw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdW5zaWduZWQgY29t
cHV0ZUltcG9ydGFuY2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwog
Ci0gICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSYsIFdvcmtRdWV1ZSYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOworICAgIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmLCBT
dXNwZW5kYWJsZVdvcmtRdWV1ZSYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwogICAgIAogICAg
IGJvb2wgZGF0YVJlY29yZHNCZWluZ1JlbW92ZWQoKSBjb25zdCB7IHJldHVybiBtX2RhdGFSZWNv
cmRzQmVpbmdSZW1vdmVkOyB9CiAKQEAgLTIyOCw3ICsyMjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCB2b2lkIHBydW5lU3RhdGlzdGljc0lmTmVlZGVkKCkgPSAwOwogCiAgICAgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSgpIHsgcmV0dXJuIG1fc3RvcmU7IH0KLSAg
ICBSZWY8V29ya1F1ZXVlPiYgd29ya1F1ZXVlKCkgeyByZXR1cm4gbV93b3JrUXVldWU7IH0KKyAg
ICBSZWY8U3VzcGVuZGFibGVXb3JrUXVldWU+JiB3b3JrUXVldWUoKSB7IHJldHVybiBtX3dvcmtR
dWV1ZTsgfQogI2lmIEhBVkUoQ09SRV9QUkVESUNUSU9OKQogICAgIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NDbGFzc2lmaWVyQ29jb2EmIGNsYXNzaWZpZXIoKSB7IHJldHVybiBtX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NDbGFzc2lmaWVyOyB9CiAjZWxzZQpAQCAtMjc4LDcgKzI3OCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB1cGRhdGVDbGllbnRTaWRlQ29va2llc0FnZUNhcCgpOwogCiAgICAgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBtX3N0b3JlOwotICAgIFJlZjxXb3JrUXVldWU+
IG1fd29ya1F1ZXVlOworICAgIFJlZjxTdXNwZW5kYWJsZVdvcmtRdWV1ZT4gbV93b3JrUXVldWU7
CiAjaWYgSEFWRShDT1JFX1BSRURJQ1RJT04pCiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Ns
YXNzaWZpZXJDb2NvYSBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyOwogI2Vsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXgg
NGY4MDc1MWRmMDAzMGY2Y2YyOThkMDRkZDcwMGQ5N2UzZmIyOWUxZS4uN2ZiMDgyOThkNDQ2MGI5
NWMwM2RkNzM5YjQ3OWFjZThhNjQ0ZWU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTU0LDE2ICs1NCwxMiBAQAogI2luY2x1ZGUgPHd0
Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIu
aD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU3VzcGVu
ZGFibGVXb3JrUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3Rh
dGljIExvY2sgZ2xvYmFsU3VzcGVuc2lvbkxvY2s7Ci1zdGF0aWMgQ29uZGl0aW9uIGdsb2JhbFN1
c3BlbnNpb25Db25kaXRpb247Ci1zdGF0aWMgYm9vbCBnbG9iYWxTaG91bGRTdXNwZW5kIFdURl9H
VUFSREVEX0JZX0xPQ0soZ2xvYmFsU3VzcGVuc2lvbkxvY2spIHsgZmFsc2UgfTsKLXN0YXRpYyB1
aW50NjRfdCBnbG9iYWxTdXNwZW5zaW9uSWRlbnRpZmllciBXVEZfR1VBUkRFRF9CWV9MT0NLKGds
b2JhbFN1c3BlbnNpb25Mb2NrKSB7IDAgfTsKLQogY29uc3QgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4mIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVz
KCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4+IGRhdGFUeXBlcyhzdGQ6OmluaXRpYWxpemVyX2xpc3Q8V2Vic2l0ZURhdGFUeXBlPih7CkBA
IC0xNDcsOSArMTQzLDkgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNl
dFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHMKICAgICB9KTsKIH0KIAot
c3RhdGljIFJlZjxXb3JrUXVldWU+IHNoYXJlZFN0YXRpc3RpY3NRdWV1ZSgpCitzdGF0aWMgUmVm
PFN1c3BlbmRhYmxlV29ya1F1ZXVlPiBzaGFyZWRTdGF0aXN0aWNzUXVldWUoKQogewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZWY8V29ya1F1ZXVlPj4gcXVldWUoV29ya1F1ZXVlOjpjcmVh
dGUoIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBQcm9jZXNzIERhdGEgUXVldWUiLCBX
b3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OlV0aWxpdHkpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFN1c3BlbmRhYmxlV29ya1F1ZXVlPj4gcXVldWUoU3Vz
cGVuZGFibGVXb3JrUXVldWU6OmNyZWF0ZSgiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
IFByb2Nlc3MgRGF0YSBRdWV1ZSIsICBXb3JrUXVldWU6OlFPUzo6VXRpbGl0eSkpOwogICAgIHJl
dHVybiBxdWV1ZS5nZXQoKS5jb3B5UmVmKCk7CiB9CiAKQEAgLTE0NDgsMzMgKzE0NDQsMTkgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5
RGF0YShDb21wbGV0aW9uSGFuZGxlcjwKIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIExvY2tlciBzdXNwZW5zaW9uTG9ja2VyIHsgZ2xvYmFsU3VzcGVuc2lvbkxv
Y2sgfTsKLSAgICBnbG9iYWxTaG91bGRTdXNwZW5kID0gdHJ1ZTsKLQotICAgIHNoYXJlZFN0YXRp
c3RpY3NRdWV1ZSgpLT5kaXNwYXRjaChbc3VzcGVuc2lvbklkZW50aWZpZXIgPSArK2dsb2JhbFN1
c3BlbnNpb25JZGVudGlmaWVyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgTG9ja2VyIHN1c3BlbnNpb25Mb2NrZXIg
eyBnbG9iYWxTdXNwZW5zaW9uTG9jayB9OwotICAgICAgICBpZiAoIWdsb2JhbFNob3VsZFN1c3Bl
bmQgfHwgc3VzcGVuc2lvbklkZW50aWZpZXIgIT0gZ2xvYmFsU3VzcGVuc2lvbklkZW50aWZpZXIp
IHsKLSAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKIAorICAgIHNoYXJlZFN0YXRpc3RpY3NRdWV1ZSgpLT5zdXNwZW5kKFtdKCkgbXV0
YWJsZSB7CiAgICAgICAgIGZvciAoYXV0byYgZGF0YWJhc2VTdG9yZSA6IFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphbGxTdG9yZXMoKSkKICAgICAgICAgICAgIGRhdGFiYXNl
U3RvcmUtPmludGVycnVwdCgpOwotCi0gICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwotCi0gICAgICAgIHdoaWxlIChnbG9iYWxTaG91bGRTdXNwZW5kKQot
ICAgICAgICAgICAgZ2xvYmFsU3VzcGVuc2lvbkNvbmRpdGlvbi53YWl0KGdsb2JhbFN1c3BlbnNp
b25Mb2NrKTsKLSAgICB9KTsKKyAgICB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXN1bWUoKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrZXIgc3VzcGVuc2lvbkxvY2tl
ciB7IGdsb2JhbFN1c3BlbnNpb25Mb2NrIH07Ci0gICAgZ2xvYmFsU2hvdWxkU3VzcGVuZCA9IGZh
bHNlOwotICAgIGdsb2JhbFN1c3BlbnNpb25Db25kaXRpb24ubm90aWZ5T25lKCk7CisgICAgc2hh
cmVkU3RhdGlzdGljc1F1ZXVlKCktPnJlc3VtZSgpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlz
UGFzc2VkLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1
dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmgKaW5kZXggMGIyNjEwNGZlMjBlOTk2ZmNiZWU0MWRmN2RhMjY5YTA1
NmIwOTQzOC4uZjMwMzM2MjFhY2M1MmNhNTNkY2M3OTJkOTY1ZWQ0OGMzZjc5ZGRhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtNDIsNiArNDIs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaD4KICNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+Cisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBA
IC01MCwxMCArNTEsNiBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBXVEYgewotY2xhc3MgV29ya1F1ZXVlOwot
fQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBzdHJ1Y3Qg
UmVzb3VyY2VMb2FkU3RhdGlzdGljczsKQEAgLTE0NCw3ICsxNDEsNyBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgY29uc3QgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4mIG1vbml0b3JlZERhdGFU
eXBlcygpOwogCi0gICAgV1RGOjpXb3JrUXVldWUmIHN0YXRpc3RpY3NRdWV1ZSgpIHsgcmV0dXJu
IG1fc3RhdGlzdGljc1F1ZXVlLmdldCgpOyB9CisgICAgU3VzcGVuZGFibGVXb3JrUXVldWUmIHN0
YXRpc3RpY3NRdWV1ZSgpIHsgcmV0dXJuIG1fc3RhdGlzdGljc1F1ZXVlLmdldCgpOyB9CiAKICAg
ICB2b2lkIHBvcHVsYXRlTWVtb3J5U3RvcmVGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgc2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5l
ZChib29sKTsKQEAgLTI3Niw3ICsyNzMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveVJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
CiAgICAgV2Vha1B0cjxOZXR3b3JrU2Vzc2lvbj4gbV9uZXR3b3JrU2Vzc2lvbjsKLSAgICBSZWY8
V1RGOjpXb3JrUXVldWU+IG1fc3RhdGlzdGljc1F1ZXVlOworICAgIFJlZjxTdXNwZW5kYWJsZVdv
cmtRdWV1ZT4gbV9zdGF0aXN0aWNzUXVldWU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZT4gbV9zdGF0aXN0aWNzU3RvcmU7CiAKICAgICBSdW5Mb29wOjpU
aW1lcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1fZGFpbHlUYXNrc1RpbWVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2Fs
U3RvcmFnZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKaW5kZXggNTY5ZmRiMmRmOGY1M2VhYmNmMTkx
ODEyNDMwYWI2ZmRhNjgwMjU0MC4uYmMzZTg4OTk4MTAxMWNhNjZkMzlmZGRhMThmNjkzNDg1MGY0
ODY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3VzcGVuZGFibGVXb3JrUXVl
dWUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAg
LTQyLDEyICs0MywxMiBAQCBjb25zdGV4cHIgYXV0byBnZXRJdGVtc1F1ZXJ5U3RyaW5nIHsgIlNF
TEVDVCBrZXksIHZhbHVlIEZST00gSXRlbVRhYmxlIl9zIH07CiBjb25zdGV4cHIgdW5zaWduZWQg
bWF4aW11bVNpemVGb3JWYWx1ZXNLZXB0SW5NZW1vcnkgeyAxMDI0IH07IC8vIDEgS0IKIGNvbnN0
ZXhwciBTZWNvbmRzIHRyYW5zYWN0aW9uRHVyYXRpb24geyA1MDBfbXMgfTsKIAotUmVmPExvY2Fs
U3RvcmFnZURhdGFiYXNlPiBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6Y3JlYXRlKFJlZjxXb3JrUXVl
dWU+JiYgd29ya1F1ZXVlLCBTdHJpbmcmJiBkYXRhYmFzZVBhdGgsIHVuc2lnbmVkIHF1b3RhSW5C
eXRlcykKK1JlZjxMb2NhbFN0b3JhZ2VEYXRhYmFzZT4gTG9jYWxTdG9yYWdlRGF0YWJhc2U6OmNy
ZWF0ZShSZWY8U3VzcGVuZGFibGVXb3JrUXVldWU+JiYgd29ya1F1ZXVlLCBTdHJpbmcmJiBkYXRh
YmFzZVBhdGgsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBMb2NhbFN0b3JhZ2VEYXRhYmFzZShXVEZNb3ZlKHdvcmtRdWV1ZSksIFdURk1vdmUoZGF0
YWJhc2VQYXRoKSwgcXVvdGFJbkJ5dGVzKSk7CiB9CiAKLUxvY2FsU3RvcmFnZURhdGFiYXNlOjpM
b2NhbFN0b3JhZ2VEYXRhYmFzZShSZWY8V29ya1F1ZXVlPiYmIHdvcmtRdWV1ZSwgU3RyaW5nJiYg
ZGF0YWJhc2VQYXRoLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCitMb2NhbFN0b3JhZ2VEYXRhYmFz
ZTo6TG9jYWxTdG9yYWdlRGF0YWJhc2UoUmVmPFN1c3BlbmRhYmxlV29ya1F1ZXVlPiYmIHdvcmtR
dWV1ZSwgU3RyaW5nJiYgZGF0YWJhc2VQYXRoLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCiAgICAg
OiBtX3dvcmtRdWV1ZShXVEZNb3ZlKHdvcmtRdWV1ZSkpCiAgICAgLCBtX2RhdGFiYXNlUGF0aChX
VEZNb3ZlKGRhdGFiYXNlUGF0aCkpCiAgICAgLCBtX3F1b3RhSW5CeXRlcyhxdW90YUluQnl0ZXMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5oCmluZGV4IDZkNjY0NjFlODA1MjQ4ZWRjMjEzNGFk
MTA1NmI1YmViOGM5N2RiZDEuLjM5YjMyZjIwNjM4MmY0NmFhMDQwMWY4YzBiODE4YTU3NDgyYWMz
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5oCkBAIC0yNiw5ICsyNiw5IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2UuaD4KKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KLSNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlOwpAQCAtNDEsNyArNDEs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTG9jYWxTdG9yYWdlRGF0YWJhc2UgOiBw
dWJsaWMgUmVmQ291bnRlZDxMb2NhbFN0b3JhZ2VEYXRhYmFzZT4sIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxMb2NhbFN0b3JhZ2VEYXRhYmFzZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TG9j
YWxTdG9yYWdlRGF0YWJhc2U+IGNyZWF0ZShSZWY8V29ya1F1ZXVlPiYmLCBTdHJpbmcmJiBkYXRh
YmFzZVBhdGgsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxMb2NhbFN0
b3JhZ2VEYXRhYmFzZT4gY3JlYXRlKFJlZjxTdXNwZW5kYWJsZVdvcmtRdWV1ZT4mJiwgU3RyaW5n
JiYgZGF0YWJhc2VQYXRoLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwogICAgIH5Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZSgpOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gaXRlbXMoKSBjb25z
dDsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlTG93TWVtb3J5V2Fy
bmluZygpOwogCiBwcml2YXRlOgotICAgIExvY2FsU3RvcmFnZURhdGFiYXNlKFJlZjxXb3JrUXVl
dWU+JiYsIFN0cmluZyYmIGRhdGFiYXNlUGF0aCwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAg
ICBMb2NhbFN0b3JhZ2VEYXRhYmFzZShSZWY8U3VzcGVuZGFibGVXb3JrUXVldWU+JiYsIFN0cmlu
ZyYmIGRhdGFiYXNlUGF0aCwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKIAogICAgIGVudW0gY2xh
c3MgU2hvdWxkQ3JlYXRlRGF0YWJhc2UgOiBib29sIHsgTm8sIFllcyB9OwogICAgIGJvb2wgb3Bl
bkRhdGFiYXNlKFNob3VsZENyZWF0ZURhdGFiYXNlKTsKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0
ZToKIAogICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlIHNjb3BlZFN0
YXRlbWVudChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PiYsIEFTQ0lJ
TGl0ZXJhbCBxdWVyeSkgY29uc3Q7CiAKLSAgICBSZWY8V29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsK
KyAgICBSZWY8U3VzcGVuZGFibGVXb3JrUXVldWU+IG1fd29ya1F1ZXVlOwogICAgIFN0cmluZyBt
X2RhdGFiYXNlUGF0aDsKICAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlIG1fZGF0
YWJhc2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uPiBt
X3RyYW5zYWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcAppbmRleCA2MDE1
M2JmN2Q2YjA3ZjU4ZTBlYTE1OTVhMTRmYzhjODEzNTNjMTQ5Li4wNGM0OWJiNGM5MTRlYmQ5M2M3
YmNjMDkxNTRlOGMxZDc2ZTg0NGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNw
cApAQCAtNDcsNyArNDcsNyBAQCBMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6On5Mb2NhbFN0b3JhZ2VO
YW1lc3BhY2UoKQogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogfQogCi1TdG9yYWdl
QXJlYSYgTG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3Vy
aXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luLCBJc0VwaGVtZXJhbCBpc0VwaGVtZXJhbCwg
UmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCitTdG9yYWdlQXJlYSYgTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3Vy
aXR5T3JpZ2luLCBJc0VwaGVtZXJhbCBpc0VwaGVtZXJhbCwgUmVmPFN1c3BlbmRhYmxlV29ya1F1
ZXVlPiYmIHdvcmtRdWV1ZSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAg
ICByZXR1cm4gKm1fc3RvcmFnZUFyZWFNYXAuZW5zdXJlKHNlY3VyaXR5T3JpZ2luLCBbJl0oKSBt
dXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaAppbmRleCBhZGNhOWY0YTI1NWY1
OGUyMTA2ZGQ2YTRlY2VhZGRmZmYyNDUxYWMzLi43M2MzNWZjNjE1Zjg4YThkMzEzODQ4YTQzODQ4
NzVhYzdkNDI1MDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5oCkBAIC0zMSw3ICsz
MSw2IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDgsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgU3Rv
cmFnZU1hbmFnZXIqIHN0b3JhZ2VNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gJm1fc3RvcmFnZU1h
bmFnZXI7IH0KIAogICAgIGVudW0gY2xhc3MgSXNFcGhlbWVyYWwgOiBib29sIHsgTm8sIFllcyB9
OwotICAgIFN0b3JhZ2VBcmVhJiBnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmLCBJc0VwaGVtZXJhbCwgUmVmPFdvcmtRdWV1ZT4mJik7CisgICAgU3Rv
cmFnZUFyZWEmIGdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiYsIElzRXBoZW1lcmFsLCBSZWY8U3VzcGVuZGFibGVXb3JrUXVldWU+JiYpOwogCiAgICAg
dm9pZCBjbGVhclN0b3JhZ2VBcmVhc01hdGNoaW5nT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYpOwogICAgIHZvaWQgY2xlYXJBbGxTdG9yYWdlQXJlYXMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuY3BwCmluZGV4IDZjNmE4YTI5YTZmYjkwMDk4NWQx
NTM5MTVjNWY5MjE3N2FjNTRjYmEuLjczNWQ0MTZjOWZmNjk4Yjg5MGM3MDc1ZGQyNjNhZDU3ZDE4
NGZmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9TZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmNwcApAQCAtNDMsNyAr
NDMsNyBAQCBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6flNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KCkKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KIAotU3RvcmFnZUFyZWEmIFNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3Jp
Z2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luLCBSZWY8V29ya1F1ZXVlPiYmIHdvcmtRdWV1ZSkKK1N0
b3JhZ2VBcmVhJiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6Z2V0T3JDcmVhdGVTdG9yYWdlQXJl
YShTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1cml0eU9yaWdpbiwgUmVmPFN1c3BlbmRhYmxlV29y
a1F1ZXVlPiYmIHdvcmtRdWV1ZSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
ICAgICByZXR1cm4gKm1fc3RvcmFnZUFyZWFNYXAuZW5zdXJlKHNlY3VyaXR5T3JpZ2luLCBbJl0o
KSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmgKaW5kZXggZjU1M2Y0
YzJjYWUxODEwMmU2M2YyNTUwNjNmZTMzMGIwM2ZmOWYxZS4uZmFhZWQ5ODk3ZGYwMjhkNGZhMWY5
NWQ3YTQ0N2ZhYzE3YzY1YTQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmgK
QEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9zdG9yYWdlQXJlYU1hcC5pc0VtcHR5KCk7IH0KIAotICAgIFN0b3JhZ2VBcmVhJiBn
ZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBSZWY8
V29ya1F1ZXVlPiYmKTsKKyAgICBTdG9yYWdlQXJlYSYgZ2V0T3JDcmVhdGVTdG9yYWdlQXJlYShX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgUmVmPFN1c3BlbmRhYmxlV29ya1F1ZXVlPiYm
KTsKIAogICAgIHZvaWQgY2xvbmVUbyhTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSYgbmV3U2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcAppbmRleCA4MzE5NGIwNWZiNGVlMTE3
NzdkZGYxMGFlZDI3OGY2MGMwYjk5ODJjLi5kZDkxZTc4YTViMTYwOTE1MWVhYjExZTY0MDZkZjY1
OWQxYmQ1MDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAKQEAgLTMwLDEyICszMCwxMyBAQAogI2luY2x1ZGUg
IkxvY2FsU3RvcmFnZU5hbWVzcGFjZS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJTdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgPHd0Zi9TdXNwZW5k
YWJsZVdvcmtRdWV1ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKLVN0b3JhZ2VBcmVhOjpTdG9yYWdlQXJlYShMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UqIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1
cml0eU9yaWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBSZWY8V29ya1F1ZXVlPiYmIHF1ZXVl
KQorU3RvcmFnZUFyZWE6OlN0b3JhZ2VBcmVhKExvY2FsU3RvcmFnZU5hbWVzcGFjZSogbG9jYWxT
dG9yYWdlTmFtZXNwYWNlLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2lu
LCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFJlZjxTdXNwZW5kYWJsZVdvcmtRdWV1ZT4mJiBxdWV1
ZSkKICAgICA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlKG1ha2VXZWFrUHRyKGxvY2FsU3RvcmFn
ZU5hbWVzcGFjZSkpCiAgICAgLCBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKQogICAg
ICwgbV9xdW90YUluQnl0ZXMocXVvdGFJbkJ5dGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuaAppbmRleCA5YzcxNTcwMmRi
ZTY5YjdmMzNjN2MzMWJlNDU3NzliMzJlYTk2YTM0Li5mNTdhNzJiNmJkYzMzODI0NjlkNjlhZGIx
YjEyMDFjN2E5ZjA3YTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBTdG9y
YWdlQXJlYSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTdG9yYWdlQXJlYT4gewogcHVibGljOgog
ICAgIHVzaW5nIElkZW50aWZpZXIgPSBTdG9yYWdlQXJlYUlkZW50aWZpZXI7CiAgICAgCi0gICAg
U3RvcmFnZUFyZWEoTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBSZWY8V29ya1F1ZXVlPiYmKTsK
KyAgICBTdG9yYWdlQXJlYShMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqLCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFJlZjxTdXNwZW5kYWJs
ZVdvcmtRdWV1ZT4mJik7CiAgICAgflN0b3JhZ2VBcmVhKCk7CiAKICAgICBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9z
ZWN1cml0eU9yaWdpbjsgfQpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8
SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRD4gbV9ldmVudExpc3RlbmVyczsKIAogICAgIElkZW50
aWZpZXIgbV9pZGVudGlmaWVyOwotICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CisgICAgUmVm
PFN1c3BlbmRhYmxlV29ya1F1ZXVlPiBtX3F1ZXVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA1YmNjYTI5OWJhNDE1ZTM5YzAyODQ1OTk3ZTU4
MDZiMjg0NmRhOTNjLi4yOTViNDRjN2ZkZWNhNWMzNDQwN2RiZjlhOTZhNjJhMzNiOGFkYTQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+
CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvU3VzcGVuZGFibGVXb3JrUXVldWUuaD4KICNpbmNsdWRl
IDx3dGYvV29ya1F1ZXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjExLDcgKzIxMiw3
IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmln
aW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yCiAgICAgfQogfQogCi1TdG9yYWdlQXJlYSogU3Rv
cmFnZU1hbmFnZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZUFyZWEoU3RvcmFnZU5hbWVzcGFjZUlkZW50
aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW4sIFJl
ZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlKQorU3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpj
cmVhdGVMb2NhbFN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VO
YW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luLCBSZWY8U3VzcGVuZGFibGVX
b3JrUXVldWU+JiYgd29ya1F1ZXVlKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCkBAIC0yMjEsNyArMjIyLDcgQEAgU3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpjcmVh
dGVMb2NhbFN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHMKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotU3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVUcmFu
c2llbnRMb2NhbFN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VO
YW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wTGV2ZWxPcmlnaW4sIFNlY3VyaXR5
T3JpZ2luRGF0YSYmIG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCitTdG9yYWdl
QXJlYSogU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoU3Rv
cmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdp
bkRhdGEmJiB0b3BMZXZlbE9yaWdpbiwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luLCBSZWY8
U3VzcGVuZGFibGVXb3JrUXVldWU+JiYgd29ya1F1ZXVlKQogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogICAgIEFTU0VSVCgoSGFzaE1hcDxTdG9yYWdlTmFtZXNwYWNlSWRlbnRp
ZmllciwgUmVmUHRyPFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZT4+Ojppc1ZhbGlkS2V5
KHN0b3JhZ2VOYW1lc3BhY2VJRCkpKTsKQEAgLTIzMiw3ICsyMzMsNyBAQCBTdG9yYWdlQXJlYSog
U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoU3RvcmFnZU5h
bWVzcGFjZUlkZQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1TdG9yYWdlQXJlYSogU3RvcmFn
ZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlQXJlYShTdG9yYWdlTmFtZXNwYWNlSWRlbnRp
ZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbiwgUmVm
PFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCitTdG9yYWdlQXJlYSogU3RvcmFnZU1hbmFnZXI6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlQXJlYShTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBzdG9yYWdl
TmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbiwgUmVmPFN1c3BlbmRhYmxl
V29ya1F1ZXVlPiYmIHdvcmtRdWV1ZSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKICAgICBBU1NFUlQoKEhhc2hNYXA8U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFJlZlB0
cjxTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZT4+Ojppc1ZhbGlkS2V5KHN0b3JhZ2VOYW1lc3BhY2VJ
RCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggMGQ2ZTdhZWRmZjY4MjI3YmY3ZGM4YWI3MTg0YWJj
NmZkMzMyMWM1NC4uNDdjODRlNDgzZmE5MzY3MjgxNTY1MWIzZDIxOTZhMmI1NmNiMDJhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VNYW5hZ2VyLmgKQEAgLTgwLDkgKzgwLDkgQEAgcHVibGljOgogICAgIAogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVF1b3RhSW5CeXRlczsKIAotICAg
IFN0b3JhZ2VBcmVhKiBjcmVhdGVMb2NhbFN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVu
dGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgUmVmPFdvcmtRdWV1ZT4mJik7
Ci0gICAgU3RvcmFnZUFyZWEqIGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoU3RvcmFn
ZU5hbWVzcGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgUmVmPFdvcmtRdWV1ZT4mJik7Ci0gICAgU3RvcmFn
ZUFyZWEqIGNyZWF0ZVNlc3Npb25TdG9yYWdlQXJlYShTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmll
ciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFJlZjxXb3JrUXVldWU+JiYpOworICAg
IFN0b3JhZ2VBcmVhKiBjcmVhdGVMb2NhbFN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVu
dGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgUmVmPFN1c3BlbmRhYmxlV29y
a1F1ZXVlPiYmKTsKKyAgICBTdG9yYWdlQXJlYSogY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdl
QXJlYShTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBSZWY8U3VzcGVuZGFibGVXb3Jr
UXVldWU+JiYpOworICAgIFN0b3JhZ2VBcmVhKiBjcmVhdGVTZXNzaW9uU3RvcmFnZUFyZWEoU3Rv
cmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBS
ZWY8U3VzcGVuZGFibGVXb3JrUXVldWU+JiYpOwogCiAgICAgVmVjdG9yPFN0b3JhZ2VBcmVhSWRl
bnRpZmllcj4gYWxsU3RvcmFnZUFyZWFJZGVudGlmaWVycygpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJT
ZXQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyU2V0LmNwcAppbmRleCAzNmFiZWE1MDUwYjg0YjE4YzkyMjcxNTY2OWI3OTIzYTA4ZGNh
ZGZmLi5lNGU4OGExMTMxMWFiYTQ5YzY1ZTZiYzg0NzY3YTExODg1ODhkYjM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJT
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTWFuYWdlclNldC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgUmVmPFN0b3JhZ2VNYW5hZ2VyU2V0
PiBTdG9yYWdlTWFuYWdlclNldDo6Y3JlYXRlKCkKIH0KIAogU3RvcmFnZU1hbmFnZXJTZXQ6OlN0
b3JhZ2VNYW5hZ2VyU2V0KCkKLSAgICA6IG1fcXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5h
cHBsZS5XZWJLaXQuV2ViU3RvcmFnZSIpKQorICAgIDogbV9xdWV1ZShTdXNwZW5kYWJsZVdvcmtR
dWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LldlYlN0b3JhZ2UiKSkKIHsKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xNzcsMzQgKzE3NywxNiBAQCB2b2lkIFN0b3Jh
Z2VNYW5hZ2VyU2V0OjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9j
a2VyIHN1c3BlbnNpb25Mb2NrZXIgeyBtX3N1c3BlbnNpb25Mb2NrIH07Ci0gICAgbV9zaG91bGRT
dXNwZW5kID0gdHJ1ZTsKLQotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHN1c3BlbnNpb25JZGVudGlmaWVyID0gKyttX3N1c3BlbnNp
b25JZGVudGlmaWVyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgTG9ja2VyIHN1c3BlbnNpb25Mb2NrZXIgeyBtX3N1
c3BlbnNpb25Mb2NrIH07Ci0gICAgICAgIGlmICghbV9zaG91bGRTdXNwZW5kIHx8IHN1c3BlbnNp
b25JZGVudGlmaWVyICE9IG1fc3VzcGVuc2lvbklkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZmx1
c2ggbG9jYWwgc3RvcmFnZSB0byBkaXNrIGJlZm9yZSB3ZSBzdXNwZW5kIHRoZSB0aHJlYWQgYXMg
d2Ugd2FudCB0byBtYWtlIHN1cmUgYW55IHBlbmRpbmcKLSAgICAgICAgLy8gU1FMIHRyYW5zYWN0
aW9uIGhhcyBiZWVuIGNvbW1pdHRlZC4KLSAgICAgICAgZmx1c2hMb2NhbFN0b3JhZ2UoKTsKLQot
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwotCi0gICAgICAgIHdoaWxlIChtX3Nob3VsZFN1c3BlbmQpCi0gICAgICAgICAgICBtX3N1
c3BlbnNpb25Db25kaXRpb24ud2FpdChtX3N1c3BlbnNpb25Mb2NrKTsKLSAgICB9KTsKKyAgICBt
X3F1ZXVlLT5zdXNwZW5kKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+Zmx1c2hMb2NhbFN0b3JhZ2UoKTsKKyAgICB9LCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OnJlc3VtZSgp
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tlciBzdXNwZW5z
aW9uTG9ja2VyIHsgbV9zdXNwZW5zaW9uTG9jayB9OwotICAgIG1fc2hvdWxkU3VzcGVuZCA9IGZh
bHNlOwotICAgIG1fc3VzcGVuc2lvbkNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICBtX3F1ZXVl
LT5yZXN1bWUoKTsKIH0KIAogdm9pZCBTdG9yYWdlTWFuYWdlclNldDo6Z2V0U2Vzc2lvblN0b3Jh
Z2VPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgR2V0T3JpZ2luc0NhbGxiYWNrJiYg
Y29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5oCmluZGV4IDA3OWFhZGMxMTUw
NTI4MTU4OThhNWM3Y2JkYmExNTI1Mjc1YmMwOWIuLmQ2MDJhNWY5MDk5OWZjN2Y0NDBlMjQ2OGQ0
MDMzMjYyNWVkMzcwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5oCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4K
ICNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9TdXNwZW5kYWJsZVdvcmtRdWV1
ZS5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIHVzaW5nIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YTsKQEAgLTk4LDEyICs5OSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdG9y
YWdlQXJlYUlkZW50aWZpZXIsIFdlYWtQdHI8U3RvcmFnZUFyZWE+PiBtX3N0b3JhZ2VBcmVhczsK
IAogICAgIEhhc2hTZXQ8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRD4gbV9jb25uZWN0aW9uczsK
LSAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwotCi0gICAgTG9jayBtX3N1c3BlbnNpb25Mb2Nr
OwotICAgIENvbmRpdGlvbiBtX3N1c3BlbnNpb25Db25kaXRpb247Ci0gICAgYm9vbCBtX3Nob3Vs
ZFN1c3BlbmQgV1RGX0dVQVJERURfQllfTE9DSyhtX3N1c3BlbnNpb25Mb2NrKSB7IGZhbHNlIH07
Ci0gICAgdWludDY0X3QgbV9zdXNwZW5zaW9uSWRlbnRpZmllciBXVEZfR1VBUkRFRF9CWV9MT0NL
KG1fc3VzcGVuc2lvbkxvY2spIHsgMCB9OworICAgIFJlZjxTdXNwZW5kYWJsZVdvcmtRdWV1ZT4g
bV9xdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1RyYW5zaWVudExvY2FsU3RvcmFnZU5h
bWVzcGFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcAppbmRleCA2NzAxNTE2MTc4ZTE5YmNjYmQ2
OTM2NDdiZTI2YzBhMzQzM2Y3ZWEyLi5lZWVjNTUwZWVmNjNhZTU5YTFlYWIzYWE4YTQ5N2EzMmMx
MDUwNjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
LmNwcApAQCAtNDQsNyArNDQsNyBAQCBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6On5U
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoKQogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogfQogCi1TdG9yYWdlQXJlYSYgVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
OjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3Jp
Z2luLCBSZWY8V29ya1F1ZXVlPiYmIHdvcmtRdWV1ZSkKK1N0b3JhZ2VBcmVhJiBUcmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoU2VjdXJpdHlPcmln
aW5EYXRhJiYgc2VjdXJpdHlPcmlnaW4sIFJlZjxTdXNwZW5kYWJsZVdvcmtRdWV1ZT4mJiB3b3Jr
UXVldWUpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgcmV0dXJuICpt
X3N0b3JhZ2VBcmVhTWFwLmVuc3VyZShzZWN1cml0eU9yaWdpbiwgWyZdKCkgbXV0YWJsZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmgKaW5kZXggYTQ4NzJm
YTZlYTZkMTlmN2FiMDM1ZDkyZjI4MmNlMDhmZDZhMmE3YS4uYzRkZjYyMjM3Mjc2OWQ3YzBhNTk3
ODczYzFmZGMzYzBiYmEzYWY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL1RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9UcmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKCk7CiAgICAgflRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZSgpOwogCi0gICAgU3RvcmFnZUFyZWEmIGdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFJlZjxXb3JrUXVldWU+JiYpOworICAgIFN0b3JhZ2VBcmVh
JiBnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBS
ZWY8U3VzcGVuZGFibGVXb3JrUXVldWU+JiYpOwogICAgIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGE+IG9yaWdpbnMoKSBjb25zdDsKIAogICAgIHZvaWQgY2xlYXJTdG9yYWdlQXJl
YXNNYXRjaGluZ09yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>