<?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>198923</bug_id>
          
          <creation_ts>2019-06-17 10:27:14 -0700</creation_ts>
          <short_desc>Support ITP on a per-session basis</short_desc>
          <delta_ts>2019-09-16 09:39:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>Safari 10</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=198797</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=201550</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=201821</see_also>
          <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="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1545290</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-06-17 10:27:14 -0700</bug_when>
    <thetext>ITP should be controllable on a per-session basis, for example to allow different ITP behavior for ephemeral sessions. Currently there is only a single global flag controlling behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560450</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-12 10:06:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/54213854&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563842</commentid>
    <comment_count>2</comment_count>
      <attachid>376954</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-08-21 17:31:24 -0700</bug_when>
    <thetext>Created attachment 376954
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563918</commentid>
    <comment_count>3</comment_count>
      <attachid>376954</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-08-21 20:04:33 -0700</bug_when>
    <thetext>Comment on attachment 376954
Patch

This change looks good. In my opinion this patch would benefit by defining a type alias for HashMap&lt;PAL::SessionID, Vector&lt;ResourceLoadStatistics&gt;&gt; because:

1. It’s long to type out this type.
2. Less chance for misspelling with a shorter type =&gt; less re-compiles =&gt; increase developer productivity.
3. The alias’s name could be more succinct/canonical and easier to refer to both in new code and conversations about this code.
4. Allow us to re-define this type later in one central place, reducing the amount of future code changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563993</commentid>
    <comment_count>4</comment_count>
      <attachid>376954</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-22 01:49:48 -0700</bug_when>
    <thetext>Comment on attachment 376954
Patch

Patch looks almost ready to me as well.
A couple of small improvements below.
The main change to consider is whether we really need to transfer a map&lt;sessionID, statistics&gt; from WebProcess to NetworkProcess.
Passing a Vector would probably be more efficient, which could impact the notification callback signature.

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

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:57
&gt; +void ResourceLoadObserver::setStatisticsUpdatedCallback(WTF::Function&lt;void(HashMap&lt;PAL::SessionID, Vector&lt;ResourceLoadStatistics&gt;&gt;)&gt;&amp;&amp; notificationCallback)

No need for WTF:: here and in setRequestStorageAccessUnderOpenerCallback below.

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:365
&gt; +        addResult.iterator-&gt;value = makeUnique&lt;HashMap&lt;RegistrableDomain, ResourceLoadStatistics&gt;&gt;();

You can use m_perSessionResourceStatisticsMap.ensure here.

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:400
&gt; +            statistics.uncheckedAppend(WTFMove(statistic));

You move statistic but statistic will stay in m_perSessionResourceStatisticsMap.
Is it by design?
This might be okish here but maybe we can improve things.
1. Copy instead of move although I guess this is not what we want here.
2. Clear m_perSessionResourceStatisticsMap. Probably fine but maybe this is not done for perf reasons?
3. Add a take method to ResourceLoadStatistics and call statistics.uncheckedAppend(statistic.take()) here. The take method will be responsible to move statistic internals and keep it in a proper state.

&gt; Source/WebCore/loader/ResourceLoadObserver.h:76
&gt; +    WEBCORE_EXPORT void setStatisticsUpdatedCallback(WTF::Function&lt;void(HashMap&lt;PAL::SessionID, Vector&lt;ResourceLoadStatistics&gt;&gt;)&gt;&amp;&amp;);

No need for WTF::

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:715
&gt; +void NetworkConnectionToWebProcess::resourceLoadStatisticsUpdated(HashMap&lt;PAL::SessionID, Vector&lt;ResourceLoadStatistics&gt;&gt;&amp;&amp; statistics)

There is no real need to have a HashMap here, a Vector&lt;struct {SessionID, ResourceLoadStatistics}&gt; would be good enough and probably more efficient.

&gt; Source/WebKit/WebProcess/WebProcess.cpp:221
&gt;          ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::ResourceLoadStatisticsUpdated(WTFMove(statistics)), 0);

I believe there is no need to WTFMove(statistics) here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564155</commentid>
    <comment_count>5</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-08-22 11:57:01 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #4)
&gt; Comment on attachment 376954 [details]
&gt; Patch
&gt; 
&gt; Patch looks almost ready to me as well.
&gt; A couple of small improvements below.
&gt; The main change to consider is whether we really need to transfer a
&gt; map&lt;sessionID, statistics&gt; from WebProcess to NetworkProcess.
&gt; Passing a Vector would probably be more efficient, which could impact the
&gt; notification callback signature.

Thanks for the feedback! I&apos;m updating the patch now and had some followup questions.

&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=376954&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/ResourceLoadObserver.cpp:57
&gt; &gt; +void ResourceLoadObserver::setStatisticsUpdatedCallback(WTF::Function&lt;void(HashMap&lt;PAL::SessionID, Vector&lt;ResourceLoadStatistics&gt;&gt;)&gt;&amp;&amp; notificationCallback)
&gt; 
&gt; No need for WTF:: here and in setRequestStorageAccessUnderOpenerCallback
&gt; below.

Yes, you&apos;re right -- thanks.

&gt; 
&gt; &gt; Source/WebCore/loader/ResourceLoadObserver.cpp:365
&gt; &gt; +        addResult.iterator-&gt;value = makeUnique&lt;HashMap&lt;RegistrableDomain, ResourceLoadStatistics&gt;&gt;();
&gt; 
&gt; You can use m_perSessionResourceStatisticsMap.ensure here.
&gt; 

I think add is more readable. However, if there is a performance reason to use ensure I will happily change it.

&gt; &gt; Source/WebCore/loader/ResourceLoadObserver.cpp:400
&gt; &gt; +            statistics.uncheckedAppend(WTFMove(statistic));
&gt; 
&gt; You move statistic but statistic will stay in
&gt; m_perSessionResourceStatisticsMap.
&gt; Is it by design?
&gt; This might be okish here but maybe we can improve things.
&gt; 1. Copy instead of move although I guess this is not what we want here.
&gt; 2. Clear m_perSessionResourceStatisticsMap. Probably fine but maybe this is
&gt; not done for perf reasons?
&gt; 3. Add a take method to ResourceLoadStatistics and call
&gt; statistics.uncheckedAppend(statistic.take()) here. The take method will be
&gt; responsible to move statistic internals and keep it in a proper state.
&gt; 

Still looking into this... I agree it is weird. Thanks for the suggestions! 

&gt; &gt; Source/WebCore/loader/ResourceLoadObserver.h:76
&gt; &gt; +    WEBCORE_EXPORT void setStatisticsUpdatedCallback(WTF::Function&lt;void(HashMap&lt;PAL::SessionID, Vector&lt;ResourceLoadStatistics&gt;&gt;)&gt;&amp;&amp;);
&gt; 
&gt; No need for WTF::
&gt; 

Got it. 

&gt; &gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:715
&gt; &gt; +void NetworkConnectionToWebProcess::resourceLoadStatisticsUpdated(HashMap&lt;PAL::SessionID, Vector&lt;ResourceLoadStatistics&gt;&gt;&amp;&amp; statistics)
&gt; 
&gt; There is no real need to have a HashMap here, a Vector&lt;struct {SessionID,
&gt; ResourceLoadStatistics}&gt; would be good enough and probably more efficient.
&gt; 

Sounds good. Would a Vector of tuples or pairs be easier than declaring a new struct?

&gt; &gt; Source/WebKit/WebProcess/WebProcess.cpp:221
&gt; &gt;          ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::ResourceLoadStatisticsUpdated(WTFMove(statistics)), 0);
&gt; 
&gt; I believe there is no need to WTFMove(statistics) here

Okay. I&apos;m not familiar with why -- can we be sure that statistics won&apos;t be copied without the WTFMove?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564164</commentid>
    <comment_count>6</comment_count>
      <attachid>376954</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-22 12:11:51 -0700</bug_when>
    <thetext>Comment on attachment 376954
Patch

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

&gt;&gt;&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:365
&gt;&gt;&gt; +        addResult.iterator-&gt;value = makeUnique&lt;HashMap&lt;RegistrableDomain, ResourceLoadStatistics&gt;&gt;();
&gt;&gt; 
&gt;&gt; You can use m_perSessionResourceStatisticsMap.ensure here.
&gt; 
&gt; I think add is more readable. However, if there is a performance reason to use ensure I will happily change it.

ah ah, I made the same comment than Youenn offline. It feel very weird to add nullptr and then overwrite the value with something else, now that we have ensure(), not to mention this is unnecessary work. I do believe ensure() is faster for this reason, but I have not measured.

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:380
&gt; +    auto mapIter = m_perSessionResourceStatisticsMap.find(sessionID);

I think this would look better with a get() than a find().

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:-390
&gt; -    m_resourceStatisticsMap.clear();

Is it me or is m_resourceStatisticsMap no longer cleared now? This seems like a bug.

&gt;&gt;&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:715
&gt;&gt;&gt; +void NetworkConnectionToWebProcess::resourceLoadStatisticsUpdated(HashMap&lt;PAL::SessionID, Vector&lt;ResourceLoadStatistics&gt;&gt;&amp;&amp; statistics)
&gt;&gt; 
&gt;&gt; There is no real need to have a HashMap here, a Vector&lt;struct {SessionID, ResourceLoadStatistics}&gt; would be good enough and probably more efficient.
&gt; 
&gt; Sounds good. Would a Vector of tuples or pairs be easier than declaring a new struct?

Yes, a vector of std::pair would be fine IMO.

&gt;&gt;&gt; Source/WebKit/WebProcess/WebProcess.cpp:221
&gt;&gt;&gt;          ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::ResourceLoadStatisticsUpdated(WTFMove(statistics)), 0);
&gt;&gt; 
&gt;&gt; I believe there is no need to WTFMove(statistics) here
&gt; 
&gt; Okay. I&apos;m not familiar with why -- can we be sure that statistics won&apos;t be copied without the WTFMove?

The WTFMove() does not hurt here, it also does not do anything. I would just keep it personally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564175</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-22 12:50:36 -0700</bug_when>
    <thetext>&gt; &gt;&gt; I believe there is no need to WTFMove(statistics) here
&gt; &gt; 
&gt; &gt; Okay. I&apos;m not familiar with why -- can we be sure that statistics won&apos;t be copied without the WTFMove?

The IPC message is taking a const reference so the WTFMove has no runtime impact.

&gt; 
&gt; The WTFMove() does not hurt here, it also does not do anything. I would just
&gt; keep it personally.

Agreed it has no runtime impact but it is misleading when reading the code.
For instance, it gives the false impression that the callback should be given an r-value. In practice, a const ref is sufficient.
I would remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564176</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-22 12:53:29 -0700</bug_when>
    <thetext>&gt; Sounds good. Would a Vector of tuples or pairs be easier than declaring a
&gt; new struct?

I usually personally prefer a struct over a pair as I find the code easier to read.
In this particular case though, the struct is mainly for IPC and we would need to add encode/decode for these routines.
This is given for free with a pair so a pair is probably the way to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564189</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-22 13:08:51 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #7)
&gt; &gt; &gt;&gt; I believe there is no need to WTFMove(statistics) here
&gt; &gt; &gt; 
&gt; &gt; &gt; Okay. I&apos;m not familiar with why -- can we be sure that statistics won&apos;t be copied without the WTFMove?
&gt; 
&gt; The IPC message is taking a const reference so the WTFMove has no runtime
&gt; impact.
&gt; 
&gt; &gt; 
&gt; &gt; The WTFMove() does not hurt here, it also does not do anything. I would just
&gt; &gt; keep it personally.
&gt; 
&gt; Agreed it has no runtime impact but it is misleading when reading the code.
&gt; For instance, it gives the false impression that the callback should be
&gt; given an r-value. In practice, a const ref is sufficient.
&gt; I would remove it.

I don&apos;t feel as strongly as you so whatever, but to me WTFMove() is merely a cast indicating to the callee that it may take the value because the current method does not need it anymore. The callee may or may not to do now (or in the future). The point here is that the caller definitely does not need that statistics anymore, it is merely forwarding them to the IPC so I feel WTFMove() is appropriate, even if the particular callee does not leverage the r-value reference right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564304</commentid>
    <comment_count>10</comment_count>
      <attachid>377075</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-08-22 16:41:48 -0700</bug_when>
    <thetext>Created attachment 377075
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564321</commentid>
    <comment_count>11</comment_count>
      <attachid>377075</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-22 17:05:10 -0700</bug_when>
    <thetext>Comment on attachment 377075
Patch

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

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:57
&gt; +void ResourceLoadObserver::setStatisticsUpdatedCallback(Function&lt;void(ResourceLoadObserver::PerSessionResourceLoadData)&gt;&amp;&amp; notificationCallback)

ResourceLoadObserver:: should not be needed.

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:380
&gt; +    auto resourceStatisticsByDomain = m_perSessionResourceStatisticsMap.get(sessionID);

auto* to make it clear it is a raw pointer.

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:391
&gt; +ResourceLoadObserver::PerSessionResourceLoadData ResourceLoadObserver::takeStatistics()

I personally like:
auto ResourceLoadObserver::takeStatistics() -&gt; PerSessionResourceLoadData

so that ResourceLoadObserver:: scope is not needed, but your call.

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:393
&gt; +    ResourceLoadObserver::PerSessionResourceLoadData perSessionStatistics;

ResourceLoadObserver:: should not be needed.

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:402
&gt; +        perSessionStatistics.uncheckedAppend(std::make_pair(iter.key, WTFMove(statistics)));

uncheckedAppend() is unsafe here since you did not reserve capacity. This should just be an append().

&gt; Source/WebCore/loader/ResourceLoadObserver.h:62
&gt; +    typedef Vector&lt;std::pair&lt;PAL::SessionID, Vector&lt;ResourceLoadStatistics&gt;&gt;&gt; PerSessionResourceLoadData;

I think we like using statements better nowadays:
using PerSessionResourceLoadData = Vector&lt;std::pair&lt;PAL::SessionID, Vector&lt;ResourceLoadStatistics&gt;&gt;&gt;;

&gt; Source/WebCore/loader/ResourceLoadObserver.h:77
&gt; +    WEBCORE_EXPORT void setStatisticsUpdatedCallback(Function&lt;void(PerSessionResourceLoadData)&gt;&amp;&amp;);

PerSessionResourceLoadData&amp;&amp;, not a copy.

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:226
&gt; +        void resourceLoadStatisticsUpdated(WebCore::ResourceLoadObserver::PerSessionResourceLoadData&amp;&amp;);

indentation problem

&gt; Source/WebKit/WebProcess/WebProcess.cpp:220
&gt; +    ResourceLoadObserver::shared().setStatisticsUpdatedCallback([this] (ResourceLoadObserver::PerSessionResourceLoadData&amp;&amp; statistics) {

I believe auto&amp;&amp; would work here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564474</commentid>
    <comment_count>12</comment_count>
      <attachid>377129</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-08-23 09:39:43 -0700</bug_when>
    <thetext>Created attachment 377129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564476</commentid>
    <comment_count>13</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-08-23 09:40:14 -0700</bug_when>
    <thetext>Thanks Chris!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564490</commentid>
    <comment_count>14</comment_count>
      <attachid>377129</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-23 10:19:21 -0700</bug_when>
    <thetext>Comment on attachment 377129
Patch

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

r=me with fix.

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:403
&gt; +        iter.value-&gt;clear();

Rather than doing this, I would do m_perSessionResourceStatisticsMap.clear() *after* the loop. No reason to keep the sessionIDs in the map.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564494</commentid>
    <comment_count>15</comment_count>
      <attachid>377133</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-08-23 10:27:03 -0700</bug_when>
    <thetext>Created attachment 377133
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564498</commentid>
    <comment_count>16</comment_count>
      <attachid>377133</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-23 10:32:15 -0700</bug_when>
    <thetext>Comment on attachment 377133
Patch

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

&gt; Source/WebCore/ChangeLog:6
&gt; +        Reviewed by NOBODY (OOPS!).

Once you get a r+ with changes, you can already put the reviewer&apos;s name in the change logs so that the reviewer does not have to r+ again. Just so you know in the future, I will r+ again here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564500</commentid>
    <comment_count>17</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2019-08-23 10:34:10 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #16)
&gt; Comment on attachment 377133 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=377133&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:6
&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; 
&gt; Once you get a r+ with changes, you can already put the reviewer&apos;s name in
&gt; the change logs so that the reviewer does not have to r+ again. Just so you
&gt; know in the future, I will r+ again here.

Thanks! I&apos;ll make sure to do this next time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564516</commentid>
    <comment_count>18</comment_count>
      <attachid>377133</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-23 11:14:49 -0700</bug_when>
    <thetext>Comment on attachment 377133
Patch

Clearing flags on attachment: 377133

Committed r249056: &lt;https://trac.webkit.org/changeset/249056&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564517</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-23 11:14:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376954</attachid>
            <date>2019-08-21 17:31:24 -0700</date>
            <delta_ts>2019-08-22 16:41:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198923-20190821173123.patch</filename>
            <type>text/plain</type>
            <size>25249</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4OTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjYwZmI1YTM3MzlkMTMz
MmUyZDc1MDQzMzk0MGZmYjk2ODkzZTYwZi4uMGUxZGRhODQzMzM4NTY5NTYyNWM2NTU3Y2JlMDE3
NTI5YWNkMmQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTA4LTIxICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQg
SVRQIG9uIGEgcGVyLXNlc3Npb24gYmFzaXMgKDE5ODkyMykKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODkyMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggdXBkYXRlZCB0aGUgZGF0YSBz
dHJ1Y3R1cmUgdXNlZCB0byBjb2xsZWN0IHJlc291cmNlIGxvYWQKKyAgICAgICAgc3RhdGlzdGlj
cyBpbiBvcmRlciB0byBzdXBwb3J0IElUUCBkYXRhIGNvbGxlY3Rpb24gb24gYSBwZXIgc2Vzc2lv
bgorICAgICAgICBiYXNpcy4gRWFjaCBzZXNzaW9uSUQgaXMgc3RvcmVkIGFzIGEga2V5LXZhbHVl
IHBhaXIgd2l0aCBpdHMgb3duIG1hcAorICAgICAgICBvZiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LgorCisgICAgICAgIEl0IGFsc28gdXBkYXRlZCB0aGUgc3RhdGlzdGljc0ZvclVSTCBmdW5jdGlv
biBjYWxsIHRvIHBlcmZvcm0gbG9va3VwcworICAgICAgICBvZiBVUkwgZGF0YSBiYXNlZCBvbiBz
ZXNzaW9uSUQuCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NVcGRh
dGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
b3VsZExvZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
bG9nU3VicmVzb3VyY2VMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9i
c2VydmVyOjpsb2dXZWJTb2NrZXRMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGb250TG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nQ2FudmFzUmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nQ2FudmFzV3JpdGVP
ck1lYXN1cmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ05h
dmlnYXRvckFQSUFjY2Vzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2Vy
dmVyOjpsb2dTY3JlZW5BUElBY2Nlc3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4p
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnN0YXRpc3RpY3NGb3JV
UkwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnRha2VTdGF0aXN0
aWNzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpjbGVhclN0YXRl
KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlc291
cmNlTG9hZFN0YXRpc3RpY3NGb3JVUkwpOgorCiAyMDE5LTA4LTE2ICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFRoZSBkZWZhdWx0IHRhYiBpbmRleCBvZiBvdXRw
dXQgYW5kIGZpZWxkc2V0IHNob3VsZCBiZSAtMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhZWViNWI5MDE5OGNjOTEz
MTZjOWU4ZTZkMWM0ZjMzNmIwZTRhYzk1Li5jMTM1MWUxOWRiNTJmYTUzYzEzY2VlZmYzZmExOTQz
YjdmMjgzNzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTA4LTIxICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgSVRQ
IG9uIGEgcGVyLXNlc3Npb24gYmFzaXMgKDE5ODkyMykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODkyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiBvZiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZAorICAgICAgICBkaWQgbm90IGFsbG93IGZvciBJ
VFAgb24gYSBwZXIgc2Vzc2lvbiBiYXNpcyBkdWUgdG8gdGhlIHNlc3Npb25JRAorICAgICAgICBu
b3QgYmVpbmcgcGFzc2VkIHRvIHRoZSByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZCBmdW5j
dGlvbi4KKyAgICAgICAgVGhpcyBwYXRjaCBhbGxvd3MgYWNjZXNzIG9mIHRoZSBjb3JyZWN0IG5l
dHdvcmtTZXNzaW9uIGJ5IHBhc3NpbmcKKyAgICAgICAgYWxsIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgaW4gYSBuZXcgZGF0YSBzdHJ1Y3R1cmUgb2Yga2V5LXZhbHVlCisgICAgICAgIHBhaXJzLCB3
aGVyZSB0aGUgc2Vzc2lvbklEIGlzIHRoZSBrZXkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRl
ZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAyMDE5LTA4LTIw
ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtGVFddIEZp
eCBzY3JvbGxpbmcgaW4gbW9kZXJuIFdlYktpdCB2aWV3cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKaW5kZXggZmZhZGExYzQ1YmU0NjZiN2ZhZGNm
ZDA2OTEwMTMyNWVjYTM5ZDU1Ni4uN2I1YzUyNzkzODg1ZjRjNDMwZTVmMDRiMTZmMTI2MThlODA4
MjIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
Y3BwCkBAIC01NCw3ICs1NCw3IEBAIFJlc291cmNlTG9hZE9ic2VydmVyJiBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkKCkKICAgICByZXR1cm4gcmVzb3VyY2VMb2FkT2JzZXJ2ZXI7CiB9CiAK
LXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NVcGRhdGVkQ2FsbGJhY2so
V1RGOjpGdW5jdGlvbjx2b2lkKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKT4mJiBu
b3RpZmljYXRpb25DYWxsYmFjaykKK3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFN0YXRp
c3RpY3NVcGRhdGVkQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKEhhc2hNYXA8UEFMOjpTZXNz
aW9uSUQsIFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPj4pPiYmIG5vdGlmaWNhdGlvbkNh
bGxiYWNrKQogewogICAgIEFTU0VSVCghbV9ub3RpZmljYXRpb25DYWxsYmFjayk7CiAgICAgbV9u
b3RpZmljYXRpb25DYWxsYmFjayA9IFdURk1vdmUobm90aWZpY2F0aW9uQ2FsbGJhY2spOwpAQCAt
OTUsOSArOTUsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXMzeHhSZWRpcmVjdChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICByZXR1cm4gcmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSA+PSAzMDAgJiYgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA8PSAzOTk7CiB9CiAKLWJv
b2wgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNob3VsZExvZyhib29sIHVzZXNFcGhlbWVyYWxTZXNz
aW9uKSBjb25zdAorYm9vbCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hvdWxkTG9nKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgY29uc3QKIHsKLSAgICByZXR1cm4gRGVwcmVjYXRlZEdsb2JhbFNl
dHRpbmdzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpICYmICF1c2VzRXBoZW1lcmFs
U2Vzc2lvbiAmJiBtX25vdGlmaWNhdGlvbkNhbGxiYWNrOworICAgIHJldHVybiBEZXByZWNhdGVk
R2xvYmFsU2V0dGluZ3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgJiYgIXNlc3Np
b25JRC5pc0VwaGVtZXJhbCgpICYmIG1fbm90aWZpY2F0aW9uQ2FsbGJhY2s7CiB9CiAKIHZvaWQg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZyhjb25zdCBGcmFtZSog
ZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIFJlc291
cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjZUxvYWRpbmcoY29uc3QgRnJhbWUqIGZyYW1l
LCBjb25zdCBSZXNvdQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvKiBwYWdlID0gZnJhbWUt
PnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UgfHwgIXNob3VsZExvZyhwYWdlLT51c2VzRXBoZW1lcmFs
U2Vzc2lvbigpKSkKKyAgICBpZiAoIXBhZ2UgfHwgIXNob3VsZExvZyhwYWdlLT5zZXNzaW9uSUQo
KSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgaXNSZWRpcmVjdCA9IGlzM3h4UmVkaXJl
Y3QocmVkaXJlY3RSZXNwb25zZSk7CkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29u
c3QgUmVzb3UKICAgICAgICAgcmV0dXJuOwogCiAgICAgewotICAgICAgICBhdXRvJiB0YXJnZXRT
dGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4o
dGFyZ2V0RG9tYWluKTsKKyAgICAgICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVuc3VyZVJl
c291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHBhZ2UtPnNlc3Npb25JRCgpLCB0
YXJnZXREb21haW4pOwogICAgICAgICBhdXRvIGxhc3RTZWVuID0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljczo6cmVkdWNlVGltZVJlc29sdXRpb24oV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgdGFy
Z2V0U3RhdGlzdGljcy5sYXN0U2VlbiA9IGxhc3RTZWVuOwogICAgICAgICB0YXJnZXRTdGF0aXN0
aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMuYWRkKHRvcEZyYW1lRG9tYWluKTsK
QEAgLTEzOSw5ICsxMzksOSBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNv
dXJjZUxvYWRpbmcoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdQogICAgIH0KIAogICAg
IGlmIChpc1JlZGlyZWN0KSB7Ci0gICAgICAgIGF1dG8mIHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlz
dGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZGly
ZWN0ZWRGcm9tRG9tYWluKTsKKyAgICAgICAgYXV0byYgcmVkaXJlY3RpbmdPcmlnaW5TdGF0aXN0
aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4ocGFnZS0+
c2Vzc2lvbklEKCksIHJlZGlyZWN0ZWRGcm9tRG9tYWluKTsKICAgICAgICAgcmVkaXJlY3RpbmdP
cmlnaW5TdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8uYWRkKHRhcmdldERv
bWFpbik7Ci0gICAgICAgIGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0
YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbih0YXJnZXREb21haW4pOworICAgICAgICBhdXRv
JiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFi
bGVEb21haW4ocGFnZS0+c2Vzc2lvbklEKCksIHRhcmdldERvbWFpbik7CiAgICAgICAgIHRhcmdl
dFN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tLmFkZChyZWRpcmVjdGVk
RnJvbURvbWFpbik7CiAKICAgICAgICAgbV9sb2dTdWJyZXNvdXJjZVJlZGlyZWN0Tm90aWZpY2F0
aW9uQ2FsbGJhY2socGFnZS0+c2Vzc2lvbklEKCksIHJlZGlyZWN0ZWRGcm9tRG9tYWluLCB0YXJn
ZXREb21haW4pOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OmxvZ1N1YnJlc291cmNlTG9hZGluZyhjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291CiAK
IHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgVVJM
JiB0YXJnZXRVUkwsIGNvbnN0IFVSTCYgbWFpbkZyYW1lVVJMLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiB7Ci0gICAgaWYgKCFzaG91bGRMb2coc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpKQor
ICAgIGlmICghc2hvdWxkTG9nKHNlc3Npb25JRCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1
dG8gdGFyZ2V0SG9zdCA9IHRhcmdldFVSTC5ob3N0KCk7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nV2ViU29ja2V0TG9hZGluZyhjb25zdCBVUkwmIHRh
cmdldFVSTCwgY29uc3QgVVJMJgogCiAgICAgYXV0byBsYXN0U2VlbiA9IFJlc291cmNlTG9hZFN0
YXRpc3RpY3M6OnJlZHVjZVRpbWVSZXNvbHV0aW9uKFdhbGxUaW1lOjpub3coKSk7CiAKLSAgICBh
dXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0
cmFibGVEb21haW4odGFyZ2V0RG9tYWluKTsKKyAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0g
ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oc2Vzc2lvbklELCB0
YXJnZXREb21haW4pOwogICAgIHRhcmdldFN0YXRpc3RpY3MubGFzdFNlZW4gPSBsYXN0U2VlbjsK
ICAgICB0YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMuYWRk
KHRvcEZyYW1lRG9tYWluKTsKIApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OmxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgVVJMJiB0YXJnZXRVUkwsIGNvbnN0
IFVSTCYKIAogdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uV2l0
aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAg
aWYgKCFkb2N1bWVudC5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkgfHwgIXNob3VsZExvZyhkb2N1bWVu
dC5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKSkKKyAgICBpZiAoIWRvY3VtZW50LnNlc3Npb25J
RCgpLmlzVmFsaWQoKSB8fCAhc2hvdWxkTG9nKGRvY3VtZW50LnNlc3Npb25JRCgpKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgYXV0byYgdXJsID0gZG9jdW1lbnQudXJsKCk7CkBAIC0xOTEsNyAr
MTkxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uV2l0
aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdCBEb2MKIAogICAgIG1fbGFzdFJlcG9ydGVkVXNl
ckludGVyYWN0aW9uTWFwLnNldCh0b3BGcmFtZURvbWFpbiwgbmV3VGltZSk7CiAKLSAgICBhdXRv
JiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21h
aW4odG9wRnJhbWVEb21haW4pOworICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJj
ZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihkb2N1bWVudC5zZXNzaW9uSUQoKSwgdG9w
RnJhbWVEb21haW4pOwogICAgIHN0YXRpc3RpY3MuaGFkVXNlckludGVyYWN0aW9uID0gdHJ1ZTsK
ICAgICBzdGF0aXN0aWNzLmxhc3RTZWVuID0gbmV3VGltZTsKICAgICBzdGF0aXN0aWNzLm1vc3RS
ZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0gbmV3VGltZTsKQEAgLTI1MSwxMCArMjUxLDEwIEBA
IHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvCiB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dG
b250TG9hZChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFt
ZSwgYm9vbCBsb2FkU3RhdHVzKQogewogI2lmIEVOQUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCi0g
ICAgaWYgKCFzaG91bGRMb2coZG9jdW1lbnQuc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkpCisg
ICAgaWYgKCFzaG91bGRMb2coZG9jdW1lbnQuc2Vzc2lvbklEKCkpKQogICAgICAgICByZXR1cm47
CiAgICAgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4geyBkb2N1bWVudC51cmwo
KSB9OwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JS
ZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgYXV0byYgc3RhdGlzdGlj
cyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGRvY3VtZW50
LnNlc3Npb25JRCwgcmVnaXN0cmFibGVEb21haW4pOwogICAgIGJvb2wgc2hvdWxkQ2FsbE5vdGlm
aWNhdGlvbkNhbGxiYWNrID0gZmFsc2U7CiAgICAgaWYgKCFsb2FkU3RhdHVzKSB7CiAgICAgICAg
IGlmIChzdGF0aXN0aWNzLmZvbnRzRmFpbGVkVG9Mb2FkLmFkZChmYW1pbHlOYW1lKS5pc05ld0Vu
dHJ5KQpAQCAtMjc4LDEwICsyNzgsMTAgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9n
Rm9udExvYWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGYKIHZvaWQg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0NhbnZhc1JlYWQoY29uc3QgRG9jdW1lbnQmIGRvY3Vt
ZW50KQogewogI2lmIEVOQUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCi0gICAgaWYgKCFzaG91bGRM
b2coZG9jdW1lbnQuc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkpCisgICAgaWYgKCFzaG91bGRM
b2coZG9jdW1lbnQuc2Vzc2lvbklEKCkpKQogICAgICAgICByZXR1cm47CiAgICAgUmVnaXN0cmFi
bGVEb21haW4gcmVnaXN0cmFibGVEb21haW4geyBkb2N1bWVudC51cmwoKSB9OwotICAgIGF1dG8m
IHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFp
bihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGRvY3VtZW50LnNlc3Npb25JRCgpLCBy
ZWdpc3RyYWJsZURvbWFpbik7CiAgICAgUmVnaXN0cmFibGVEb21haW4gbWFpbkZyYW1lUmVnaXN0
cmFibGVEb21haW4geyBkb2N1bWVudC50b3BEb2N1bWVudCgpLnVybCgpIH07CiAgICAgc3RhdGlz
dGljcy5jYW52YXNBY3Rpdml0eVJlY29yZC53YXNEYXRhUmVhZCA9IHRydWU7CiAgICAgaWYgKHN0
YXRpc3RpY3MudG9wRnJhbWVSZWdpc3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2ViQVBJcy5h
ZGQobWFpbkZyYW1lUmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkpLmlzTmV3RW50cnkpCkBAIC0y
OTQsMTAgKzI5NCwxMCBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dDYW52YXNSZWFk
KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Omxv
Z0NhbnZhc1dyaXRlT3JNZWFzdXJlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiB0ZXh0V3JpdHRlbikKIHsKICNpZiBFTkFCTEUoV0VCX0FQSV9TVEFUSVNUSUNTKQotICAg
IGlmICghc2hvdWxkTG9nKGRvY3VtZW50LnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpKQorICAg
IGlmICghc2hvdWxkTG9nKGRvY3VtZW50LnNlc3Npb25JRCgpKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluIHsgZG9jdW1lbnQudXJsKCkg
fTsKLSAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVn
aXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOworICAgIGF1dG8mIHN0YXRpc3RpY3Mg
PSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihkb2N1bWVudC5z
ZXNzaW9uSUQsIHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBib29sIHNob3VsZENhbGxOb3RpZmlj
YXRpb25DYWxsYmFjayA9IGZhbHNlOwogICAgIFJlZ2lzdHJhYmxlRG9tYWluIG1haW5GcmFtZVJl
Z2lzdHJhYmxlRG9tYWluIHsgZG9jdW1lbnQudG9wRG9jdW1lbnQoKS51cmwoKSB9OwogICAgIGlm
IChzdGF0aXN0aWNzLmNhbnZhc0FjdGl2aXR5UmVjb3JkLnJlY29yZFdyaXR0ZW5Pck1lYXN1cmVk
VGV4dCh0ZXh0V3JpdHRlbikpCkBAIC0zMTUsMTAgKzMxNSwxMCBAQCB2b2lkIFJlc291cmNlTG9h
ZE9ic2VydmVyOjpsb2dDYW52YXNXcml0ZU9yTWVhc3VyZShjb25zdCBEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbgogdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nTmF2aWdhdG9yQVBJQWNjZXNz
ZWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
OjpOYXZpZ2F0b3JBUEkgZnVuY3Rpb25OYW1lKQogewogI2lmIEVOQUJMRShXRUJfQVBJX1NUQVRJ
U1RJQ1MpCi0gICAgaWYgKCFzaG91bGRMb2coZG9jdW1lbnQuc2Vzc2lvbklEKCkuaXNFcGhlbWVy
YWwoKSkpCisgICAgaWYgKCFzaG91bGRMb2coZG9jdW1lbnQuc2Vzc2lvbklEKCkpKQogICAgICAg
ICByZXR1cm47CiAgICAgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4geyBkb2N1
bWVudC51cmwoKSB9OwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRp
c3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgYXV0byYg
c3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWlu
KGRvY3VtZW50LnNlc3Npb25JRCwgcmVnaXN0cmFibGVEb21haW4pOwogICAgIGJvb2wgc2hvdWxk
Q2FsbE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gZmFsc2U7CiAgICAgaWYgKCFzdGF0aXN0aWNzLm5h
dmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2VkLmNvbnRhaW5zKGZ1bmN0aW9uTmFtZSkpIHsKICAgICAg
ICAgc3RhdGlzdGljcy5uYXZpZ2F0b3JGdW5jdGlvbnNBY2Nlc3NlZC5hZGQoZnVuY3Rpb25OYW1l
KTsKQEAgLTMzOCwxMCArMzM4LDEwIEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ05h
dmlnYXRvckFQSUFjY2Vzc2VkKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uCiB2b2lkIFJl
c291cmNlTG9hZE9ic2VydmVyOjpsb2dTY3JlZW5BUElBY2Nlc3NlZChjb25zdCBEb2N1bWVudCYg
ZG9jdW1lbnQsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OlNjcmVlbkFQSSBmdW5jdGlv
bk5hbWUpCiB7CiAjaWYgRU5BQkxFKFdFQl9BUElfU1RBVElTVElDUykKLSAgICBpZiAoIXNob3Vs
ZExvZyhkb2N1bWVudC5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKSkKKyAgICBpZiAoIXNob3Vs
ZExvZyhkb2N1bWVudC5zZXNzaW9uSUQoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBSZWdpc3Ry
YWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IGRvY3VtZW50LnVybCgpIH07Ci0gICAgYXV0
byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9t
YWluKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVz
b3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oZG9jdW1lbnQuc2Vzc2lvbklELCBy
ZWdpc3RyYWJsZURvbWFpbik7CiAgICAgYm9vbCBzaG91bGRDYWxsTm90aWZpY2F0aW9uQ2FsbGJh
Y2sgPSBmYWxzZTsKICAgICBpZiAoIXN0YXRpc3RpY3Muc2NyZWVuRnVuY3Rpb25zQWNjZXNzZWQu
Y29udGFpbnMoZnVuY3Rpb25OYW1lKSkgewogICAgICAgICBzdGF0aXN0aWNzLnNjcmVlbkZ1bmN0
aW9uc0FjY2Vzc2VkLmFkZChmdW5jdGlvbk5hbWUpOwpAQCAtMzU4LDEyICszNTgsMTYgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU2NyZWVuQVBJQWNjZXNzZWQoY29uc3QgRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdAogI2VuZGlmCiB9CiAgICAgCi1SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzJiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVn
aXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKK1Jlc291cmNl
TG9hZFN0YXRpc3RpY3MmIFJlc291cmNlTG9hZE9ic2VydmVyOjplbnN1cmVSZXNvdXJjZVN0YXRp
c3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3Jl
c291cmNlU3RhdGlzdGljc01hcC5lbnN1cmUoZG9tYWluLCBbJmRvbWFpbl0geworICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9wZXJTZXNzaW9uUmVzb3VyY2VTdGF0aXN0aWNzTWFwLmFkZChzZXNzaW9u
SUQsIG51bGxwdHIpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8SGFzaE1hcDxSZWdpc3RyYWJsZURv
bWFpbiwgUmVzb3VyY2VMb2FkU3RhdGlzdGljcz4+KCk7CisKKyAgICBhdXRvIGFkZERvbWFpblJl
c3VsdCA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmVuc3VyZShkb21haW4sIFsmZG9tYWlu
XSB7CiAgICAgICAgIHJldHVybiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKGRvbWFpbik7CiAgICAg
fSk7Ci0gICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgcmV0dXJuIGFk
ZERvbWFpblJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnVwZGF0ZUNlbnRyYWxTdGF0aXN0aWNzU3RvcmUoKQpAQCAtMzcxLDMwICszNzUsMzkg
QEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6dXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9y
ZSgpCiAgICAgbV9ub3RpZmljYXRpb25DYWxsYmFjayh0YWtlU3RhdGlzdGljcygpKTsKIH0KIAot
U3RyaW5nIFJlc291cmNlTG9hZE9ic2VydmVyOjpzdGF0aXN0aWNzRm9yVVJMKGNvbnN0IFVSTCYg
dXJsKQorU3RyaW5nIFJlc291cmNlTG9hZE9ic2VydmVyOjpzdGF0aXN0aWNzRm9yVVJMKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgYXV0byBpdGVyID0g
bV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZmluZChSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9KTsK
LSAgICBpZiAoaXRlciA9PSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSkKKyAgICBhdXRv
IG1hcEl0ZXIgPSBtX3BlclNlc3Npb25SZXNvdXJjZVN0YXRpc3RpY3NNYXAuZmluZChzZXNzaW9u
SUQpOworICAgIGlmIChtYXBJdGVyID09IG1fcGVyU2Vzc2lvblJlc291cmNlU3RhdGlzdGljc01h
cC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICBhdXRvIGl0ZXIg
PSBtYXBJdGVyLT52YWx1ZS0+ZmluZChSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9KTsKKyAgICBp
ZiAoaXRlciA9PSBtYXBJdGVyLT52YWx1ZS0+ZW5kKCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwogCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlN0YXRpc3RpY3MgZm9yICIsIHVybC5o
b3N0KCkudG9TdHJpbmcoKSwgIjpcbiIsIGl0ZXItPnZhbHVlLnRvU3RyaW5nKCkpOwogfQogCi1W
ZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnRha2VT
dGF0aXN0aWNzKCkKK0hhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFZlY3RvcjxSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzPj4gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnRha2VTdGF0aXN0aWNzKCkKIHsKLSAg
ICBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gc3RhdGlzdGljczsKLSAgICBzdGF0aXN0
aWNzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuc2l6ZSgp
KTsKLSAgICBmb3IgKGF1dG8mIHN0YXRpc3RpYyA6IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnZh
bHVlcygpKQotICAgICAgICBzdGF0aXN0aWNzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKHN0YXRp
c3RpYykpOworICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFZlY3RvcjxSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzPj4gcGVyU2Vzc2lvblN0YXRpc3RpY3M7CiAKLSAgICBtX3Jlc291cmNlU3RhdGlz
dGljc01hcC5jbGVhcigpOworICAgIGZvciAoYXV0byYgaXRlciA6IG1fcGVyU2Vzc2lvblJlc291
cmNlU3RhdGlzdGljc01hcCkgeworICAgICAgICBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGlj
cz4gc3RhdGlzdGljczsKKyAgICAgICAgc3RhdGlzdGljcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGl0ZXIudmFsdWUtPnNpemUoKSk7CisKKyAgICAgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBp
dGVyLnZhbHVlLT52YWx1ZXMoKSkKKyAgICAgICAgICAgIHN0YXRpc3RpY3MudW5jaGVja2VkQXBw
ZW5kKFdURk1vdmUoc3RhdGlzdGljKSk7CisKKyAgICAgICAgcGVyU2Vzc2lvblN0YXRpc3RpY3Mu
YWRkKGl0ZXIua2V5LCBXVEZNb3ZlKHN0YXRpc3RpY3MpKTsKKyAgICB9CiAKLSAgICByZXR1cm4g
c3RhdGlzdGljczsKKyAgICByZXR1cm4gcGVyU2Vzc2lvblN0YXRpc3RpY3M7CiB9CiAKIHZvaWQg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmNsZWFyU3RhdGUoKQogewotICAgIG1fcmVzb3VyY2VTdGF0
aXN0aWNzTWFwLmNsZWFyKCk7CisgICAgbV9wZXJTZXNzaW9uUmVzb3VyY2VTdGF0aXN0aWNzTWFw
LmNsZWFyKCk7CiAgICAgbV9sYXN0UmVwb3J0ZWRVc2VySW50ZXJhY3Rpb25NYXAuY2xlYXIoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2Vy
dmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAppbmRl
eCBkZTFjOTRhNzJjZDQ3MWNjZjdmODJiNWEyY2JiOTE3N2RiNTY4MGI3Li4xYmVjZGI5MWNlY2U5
NGFjYWMzODdhYzVlNDYyYzg2N2Y2Zjg3MzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAtNzEsOSArNzEsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBsb2dOYXZpZ2F0b3JBUElBY2Nlc3NlZChjb25zdCBEb2N1bWVudCYsIGNvbnN0IFJlc291cmNl
TG9hZFN0YXRpc3RpY3M6Ok5hdmlnYXRvckFQSSk7CiAgICAgdm9pZCBsb2dTY3JlZW5BUElBY2Nl
c3NlZChjb25zdCBEb2N1bWVudCYsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OlNjcmVl
bkFQSSk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhdGlzdGljc0ZvclVSTChjb25z
dCBVUkwmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhdGlzdGljc0ZvclVSTChQQUw6
OlNlc3Npb25JRCwgY29uc3QgVVJMJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0
YXRpc3RpY3NVcGRhdGVkQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKFZlY3RvcjxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPiYmKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdGF0
aXN0aWNzVXBkYXRlZENhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChIYXNoTWFwPFBBTDo6U2Vz
c2lvbklELCBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4+KT4mJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2so
RnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBQ
YWdlSWRlbnRpZmllciwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4mJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRMb2dVc2VySW50ZXJhY3Rpb25Ob3RpZmljYXRpb25DYWxsYmFjayhG
dW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpPiYm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExvZ1dlYlNvY2tldExvYWRpbmdOb3RpZmlj
YXRpb25DYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiYmKTsKQEAg
LTg5LDE4ICs4OSwxOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBib29sIHNo
b3VsZExvZyhib29sIHVzZXNFcGhlbWVyYWxTZXNzaW9uKSBjb25zdDsKLSAgICBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzJiBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFp
bihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOworICAgIGJvb2wgc2hvdWxkTG9nKFBBTDo6U2Vz
c2lvbklEKSBjb25zdDsKKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBlbnN1cmVSZXNvdXJj
ZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mKTsKIAotICAgIFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiB0
YWtlU3RhdGlzdGljcygpOworICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFZlY3RvcjxSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzPj4gdGFrZVN0YXRpc3RpY3MoKTsKIAogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVy
T3BlbmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIERvY3VtZW50
JiBvcGVuZXJEb2N1bWVudCk7CiAjZW5kaWYKIAotICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21h
aW4sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M+IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwOworICAg
IEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxIYXNoTWFwPFJlZ2lzdHJh
YmxlRG9tYWluLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPj4+IG1fcGVyU2Vzc2lvblJlc291cmNl
U3RhdGlzdGljc01hcDsKICAgICBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBXVEY6OldhbGxU
aW1lPiBtX2xhc3RSZXBvcnRlZFVzZXJJbnRlcmFjdGlvbk1hcDsKLSAgICBGdW5jdGlvbjx2b2lk
KFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKT4gbV9ub3RpZmljYXRpb25DYWxsYmFj
azsKKyAgICBGdW5jdGlvbjx2b2lkKEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFZlY3RvcjxSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzPj4pPiBtX25vdGlmaWNhdGlvbkNhbGxiYWNrOwogICAgIEZ1bmN0
aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgUGFnZUlk
ZW50aWZpZXIsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+IG1fcmVxdWVzdFN0b3JhZ2VBY2Nl
c3NVbmRlck9wZW5lckNhbGxiYWNrOwogICAgIEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+IG1fbG9nVXNlckludGVyYWN0aW9uTm90aWZpY2F0
aW9uQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1lKT4gbV9s
b2dXZWJTb2NrZXRMb2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKaW5kZXggMzZlN2Q2OWMzZGI2Y2I4ZmU2OWMyZjAxZTk1MmVmOTRjOGMw
NzI4Mi4uMDJlMDdhYTQ4NzVjMGNiMTNhNWFlYTQwMzk2M2ZmODA4YTA3N2Y3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNDQzNCw3ICs0NDM0LDExIEBAIEpTVmFsdWUg
SW50ZXJuYWxzOjpjbG9uZUFycmF5QnVmZmVyKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1
ZSBidWZmZXIsIEpTVmFsCiAKIFN0cmluZyBJbnRlcm5hbHM6OnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NGb3JVUkwoY29uc3QgRE9NVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlTG9hZE9i
c2VydmVyOjpzaGFyZWQoKS5zdGF0aXN0aWNzRm9yVVJMKHVybC5ocmVmKCkpOworICAgIGF1dG8q
IGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNoYXJlZCgpLnN0YXRpc3RpY3NGb3JVUkwoZG9jdW1lbnQtPnNlc3Npb25JRCgpLCB1cmwu
aHJlZigpKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkKGJvb2wgZW5hYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA5YjEx
Mjc5MTIzNzdiZjMzYTg5YTc1ODU2Y2U1YjU4YTMyZWM1YjViLi43MWY4ZGMyNzQyOGI2NDZiMzI5
ZDAzYzdkZjNlZDRlNWZlOGMyZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAt
NzEyLDE0ICs3MTIsMTQgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bG9n
U3VicmVzb3VyY2VSZWRpcmVjdChQQUw6OlNlc3Npb25JRCBzZXNzaW8KICAgICB9CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NV
cGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmIHN0YXRpc3Rp
Y3MpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVXBkYXRlZChIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBWZWN0b3I8UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4+JiYgc3RhdGlzdGljcykKIHsKLSAgICBhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9
IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb25CeUNvbm5lY3Rpb24oY29ubmVjdGlvbigp
KTsKLSAgICBpZiAoIW5ldHdvcmtTZXNzaW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkpCi0gICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlc291cmNl
TG9hZFN0YXRpc3RpY3NVcGRhdGVkKFdURk1vdmUoc3RhdGlzdGljcykpOworICAgIGZvciAoYXV0
byYgaXRlciA6IHN0YXRpc3RpY3MpIHsKKyAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9u
ID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihpdGVyLmtleSkpIHsKKyAgICAgICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChXVEZNb3ZlKGl0ZXIudmFsdWUp
KTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvcEZyYW1lRG9tYWluLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIg
cGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDBhYTAyZDMyODJkYzE3OTcxNmNiMmJmNmQ2
Y2Q3OTY3ODJhZmQ0MzYuLjRiZDVhMDJjNjNkYTUyMWJhMzJmNzFjMjFhNzIxYjQzMmVkYjBjZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTIyMiw3ICsyMjIsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgbG9nV2ViU29ja2V0TG9hZGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZy
YW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2Vlbik7CiAgICAgdm9pZCBsb2dTdWJyZXNvdXJjZUxv
YWRpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0YXJnZXREb21h
aW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgV2FsbFRpbWUgbGFz
dFNlZW4pOwogICAgIHZvaWQgbG9nU3VicmVzb3VyY2VSZWRpcmVjdChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHRhcmdldERvbWFpbik7Ci0gICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBk
YXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik7CisgICAgdm9p
ZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBW
ZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4+JiYpOwogICAgIHZvaWQgaGFz
U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1
YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJP
cGVuZXIoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWlu
SW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdl
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGZkNGIyNDhjNDdlNjY4YTc3
ZWZjZDcyMGVhZDJkNmY1NjRhY2FhMzcuLjcxMmJjMzE4YzhiN2VjMWQ3OTE5ZTExNjIwMTUxZjRk
YTNkOTMwZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpA
QCAtNjQsNyArNjQsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyBMZWdhY3lSZWNlaXZlciB7CiAgICAgTG9nV2ViU29ja2V0TG9hZGluZyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRhcmdldERvbWFpbiwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdhbGxUaW1lIGxhc3RTZWVu
KQogICAgIExvZ1N1YnJlc291cmNlTG9hZGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRhcmdldERvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdhbGxUaW1lIGxhc3RTZWVuKQogICAgIExvZ1N1YnJl
c291cmNlUmVkaXJlY3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBzb3VyY2VEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRhcmdl
dERvbWFpbikKLSAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29y
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gc3RhdGlzdGljcykKKyAgICBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVXBkYXRlZChIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4+IHN0YXRpc3RpY3MpCiAgICAgSGFzU3RvcmFnZUFjY2Vz
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1
YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKICAgICBSZXF1ZXN0U3Rv
cmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFt
ZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYwogICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNz
VW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWlu
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDc0ZjU5YzIyMzYw
OGI0ZWUyN2JkZjc5OTcyOWQwNDVmNzg4OWM2YTQuLjY3ZTdiM2Q5YTg5NDhjMzBlMTlmN2IwZmMy
NjA3ZGNkODI4OTRkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
QEAgLTIxNyw3ICsyMTcsNyBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICBtX3BsdWdJ
bkF1dG9TdGFydE9yaWdpbkhhc2hlcy5hZGQoUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSwgSGFzaE1hcDx1bnNpZ25lZCwgV2FsbFRpbWU+KCkpOwogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCku
c2V0U3RhdGlzdGljc1VwZGF0ZWRDYWxsYmFjayhbdGhpc10gKFZlY3RvcjxSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzPiYmIHN0YXRpc3RpY3MpIHsKKyAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hh
cmVkKCkuc2V0U3RhdGlzdGljc1VwZGF0ZWRDYWxsYmFjayhbdGhpc10gKEhhc2hNYXA8UEFMOjpT
ZXNzaW9uSUQsIFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPj4mJiBzdGF0aXN0aWNzKSB7
CiAgICAgICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1VwZGF0ZWQoV1RGTW92ZShzdGF0aXN0aWNzKSksIDApOwogICAgIH0pOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377075</attachid>
            <date>2019-08-22 16:41:48 -0700</date>
            <delta_ts>2019-08-23 09:39:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198923-20190822164147.patch</filename>
            <type>text/plain</type>
            <size>26766</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4OTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjYwZmI1YTM3MzlkMTMz
MmUyZDc1MDQzMzk0MGZmYjk2ODkzZTYwZi4uNTI5MDRjZTdiZWQ2YzczNmMxZDRmNjNmMGNhMzBk
ZmEwZmNiMDE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTA4LTIyICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQg
SVRQIG9uIGEgcGVyLXNlc3Npb24gYmFzaXMgKDE5ODkyMykKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODkyMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggdXBkYXRlZCB0aGUgZGF0YSBz
dHJ1Y3R1cmUgdXNlZCB0byBjb2xsZWN0IHJlc291cmNlIGxvYWQKKyAgICAgICAgc3RhdGlzdGlj
cyBpbiBvcmRlciB0byBzdXBwb3J0IElUUCBkYXRhIGNvbGxlY3Rpb24gb24gYSBwZXIgc2Vzc2lv
bgorICAgICAgICBiYXNpcy4gRWFjaCBzZXNzaW9uSUQgaXMgc3RvcmVkIGFzIGEga2V5LXZhbHVl
IHBhaXIgd2l0aCBpdHMgb3duIG1hcAorICAgICAgICBvZiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LgorCisgICAgICAgIEl0IGFsc28gdXBkYXRlZCB0aGUgc3RhdGlzdGljc0ZvclVSTCBmdW5jdGlv
biBjYWxsIHRvIHBlcmZvcm0gbG9va3VwcworICAgICAgICBvZiBVUkwgZGF0YSBiYXNlZCBvbiBz
ZXNzaW9uSUQuCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NVcGRh
dGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
b3VsZExvZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
bG9nU3VicmVzb3VyY2VMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9i
c2VydmVyOjpsb2dXZWJTb2NrZXRMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGb250TG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nQ2FudmFzUmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nQ2FudmFzV3JpdGVP
ck1lYXN1cmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ05h
dmlnYXRvckFQSUFjY2Vzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2Vy
dmVyOjpsb2dTY3JlZW5BUElBY2Nlc3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4p
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnN0YXRpc3RpY3NGb3JV
UkwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnRha2VTdGF0aXN0
aWNzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpjbGVhclN0YXRl
KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlc291
cmNlTG9hZFN0YXRpc3RpY3NGb3JVUkwpOgorCiAyMDE5LTA4LTE2ICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFRoZSBkZWZhdWx0IHRhYiBpbmRleCBvZiBvdXRw
dXQgYW5kIGZpZWxkc2V0IHNob3VsZCBiZSAtMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhZWViNWI5MDE5OGNjOTEz
MTZjOWU4ZTZkMWM0ZjMzNmIwZTRhYzk1Li40YzYyYzM2MmE0YTU3Y2Y1NWE5YzQ5MjY0NGJmYTRi
NjVkOWMzYjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTA4LTIyICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgSVRQ
IG9uIGEgcGVyLXNlc3Npb24gYmFzaXMgKDE5ODkyMykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODkyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiBvZiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZAorICAgICAgICBkaWQgbm90IGFsbG93IGZvciBJ
VFAgb24gYSBwZXIgc2Vzc2lvbiBiYXNpcyBkdWUgdG8gdGhlIHNlc3Npb25JRAorICAgICAgICBu
b3QgYmVpbmcgcGFzc2VkIHRvIHRoZSByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZCBmdW5j
dGlvbi4KKyAgICAgICAgVGhpcyBwYXRjaCBhbGxvd3MgYWNjZXNzIG9mIHRoZSBjb3JyZWN0IG5l
dHdvcmtTZXNzaW9uIGJ5IHBhc3NpbmcKKyAgICAgICAgYWxsIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgaW4gYSBuZXcgZGF0YSBzdHJ1Y3R1cmUgb2Yga2V5LXZhbHVlCisgICAgICAgIHBhaXJzLCB3
aGVyZSB0aGUgc2Vzc2lvbklEIGlzIHRoZSBrZXkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRl
ZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAyMDE5LTA4LTIw
ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtGVFddIEZp
eCBzY3JvbGxpbmcgaW4gbW9kZXJuIFdlYktpdCB2aWV3cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKaW5kZXggZmZhZGExYzQ1YmU0NjZiN2ZhZGNm
ZDA2OTEwMTMyNWVjYTM5ZDU1Ni4uYmFkMjU3ZGQ2NWI2YjQwMDcxZGRkZDE0OWZhMDk0N2M4ZTFm
MGZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
Y3BwCkBAIC01NCwxMyArNTQsMTMgQEAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXImIFJlc291cmNlTG9h
ZE9ic2VydmVyOjpzaGFyZWQoKQogICAgIHJldHVybiByZXNvdXJjZUxvYWRPYnNlcnZlcjsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U3RhdGlzdGljc1VwZGF0ZWRDYWxsYmFj
ayhXVEY6OkZ1bmN0aW9uPHZvaWQoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpPiYm
IG5vdGlmaWNhdGlvbkNhbGxiYWNrKQordm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U3Rh
dGlzdGljc1VwZGF0ZWRDYWxsYmFjayhGdW5jdGlvbjx2b2lkKFJlc291cmNlTG9hZE9ic2VydmVy
OjpQZXJTZXNzaW9uUmVzb3VyY2VMb2FkRGF0YSk+JiYgbm90aWZpY2F0aW9uQ2FsbGJhY2spCiB7
CiAgICAgQVNTRVJUKCFtX25vdGlmaWNhdGlvbkNhbGxiYWNrKTsKICAgICBtX25vdGlmaWNhdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShub3RpZmljYXRpb25DYWxsYmFjayk7CiB9CiAKLXZvaWQgUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxs
YmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRp
ZmllciBvcGVuZXJQYWdlSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBvcGVuZXJEb21haW4p
PiYmIGNhbGxiYWNrKQordm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0UmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdl
QWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBvcGVuZXJEb21haW4pPiYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVCghbV9yZXF1ZXN0
U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2spOwogICAgIG1fcmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CkBAIC05NSw5ICs5
NSw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpczN4eFJlZGlyZWN0KGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQogICAgIHJldHVybiByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID49
IDMwMCAmJiByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpIDw9IDM5OTsKIH0KIAotYm9vbCBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2hvdWxkTG9nKGJvb2wgdXNlc0VwaGVtZXJhbFNlc3Npb24pIGNv
bnN0Citib29sIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaG91bGRMb2coUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKSBjb25zdAogewotICAgIHJldHVybiBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6
OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgJiYgIXVzZXNFcGhlbWVyYWxTZXNzaW9u
ICYmIG1fbm90aWZpY2F0aW9uQ2FsbGJhY2s7CisgICAgcmV0dXJuIERlcHJlY2F0ZWRHbG9iYWxT
ZXR0aW5nczo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSAmJiAhc2Vzc2lvbklELmlz
RXBoZW1lcmFsKCkgJiYgbV9ub3RpZmljYXRpb25DYWxsYmFjazsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKGNvbnN0IEZyYW1lKiBmcmFtZSwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlKQpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZyhjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0
IFJlc291CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgp
OwotICAgIGlmICghcGFnZSB8fCAhc2hvdWxkTG9nKHBhZ2UtPnVzZXNFcGhlbWVyYWxTZXNzaW9u
KCkpKQorICAgIGlmICghcGFnZSB8fCAhc2hvdWxkTG9nKHBhZ2UtPnNlc3Npb25JRCgpKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBpc1JlZGlyZWN0ID0gaXMzeHhSZWRpcmVjdChyZWRp
cmVjdFJlc3BvbnNlKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2Vy
dmVyOjpsb2dTdWJyZXNvdXJjZUxvYWRpbmcoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNv
dQogICAgICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIGF1dG8mIHRhcmdldFN0YXRpc3Rp
Y3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbih0YXJnZXRE
b21haW4pOworICAgICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VT
dGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4ocGFnZS0+c2Vzc2lvbklEKCksIHRhcmdldERv
bWFpbik7CiAgICAgICAgIGF1dG8gbGFzdFNlZW4gPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpy
ZWR1Y2VUaW1lUmVzb2x1dGlvbihXYWxsVGltZTo6bm93KCkpOwogICAgICAgICB0YXJnZXRTdGF0
aXN0aWNzLmxhc3RTZWVuID0gbGFzdFNlZW47CiAgICAgICAgIHRhcmdldFN0YXRpc3RpY3Muc3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucy5hZGQodG9wRnJhbWVEb21haW4pOwpAQCAtMTM5
LDkgKzEzOSw5IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9h
ZGluZyhjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291CiAgICAgfQogCiAgICAgaWYgKGlz
UmVkaXJlY3QpIHsKLSAgICAgICAgYXV0byYgcmVkaXJlY3RpbmdPcmlnaW5TdGF0aXN0aWNzID0g
ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4ocmVkaXJlY3RlZEZy
b21Eb21haW4pOworICAgICAgICBhdXRvJiByZWRpcmVjdGluZ09yaWdpblN0YXRpc3RpY3MgPSBl
bnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihwYWdlLT5zZXNzaW9u
SUQoKSwgcmVkaXJlY3RlZEZyb21Eb21haW4pOwogICAgICAgICByZWRpcmVjdGluZ09yaWdpblN0
YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5hZGQodGFyZ2V0RG9tYWluKTsK
LSAgICAgICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGlj
c0ZvclJlZ2lzdHJhYmxlRG9tYWluKHRhcmdldERvbWFpbik7CisgICAgICAgIGF1dG8mIHRhcmdl
dFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFp
bihwYWdlLT5zZXNzaW9uSUQoKSwgdGFyZ2V0RG9tYWluKTsKICAgICAgICAgdGFyZ2V0U3RhdGlz
dGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20uYWRkKHJlZGlyZWN0ZWRGcm9tRG9t
YWluKTsKIAogICAgICAgICBtX2xvZ1N1YnJlc291cmNlUmVkaXJlY3ROb3RpZmljYXRpb25DYWxs
YmFjayhwYWdlLT5zZXNzaW9uSUQoKSwgcmVkaXJlY3RlZEZyb21Eb21haW4sIHRhcmdldERvbWFp
bik7CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU3Vi
cmVzb3VyY2VMb2FkaW5nKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3UKIAogdm9pZCBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nV2ViU29ja2V0TG9hZGluZyhjb25zdCBVUkwmIHRhcmdl
dFVSTCwgY29uc3QgVVJMJiBtYWluRnJhbWVVUkwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
IHsKLSAgICBpZiAoIXNob3VsZExvZyhzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkpCisgICAgaWYg
KCFzaG91bGRMb2coc2Vzc2lvbklEKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byB0YXJn
ZXRIb3N0ID0gdGFyZ2V0VVJMLmhvc3QoKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFJlc291
cmNlTG9hZE9ic2VydmVyOjpsb2dXZWJTb2NrZXRMb2FkaW5nKGNvbnN0IFVSTCYgdGFyZ2V0VVJM
LCBjb25zdCBVUkwmCiAKICAgICBhdXRvIGxhc3RTZWVuID0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
czo6cmVkdWNlVGltZVJlc29sdXRpb24oV2FsbFRpbWU6Om5vdygpKTsKIAotICAgIGF1dG8mIHRh
cmdldFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURv
bWFpbih0YXJnZXREb21haW4pOworICAgIGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1cmVS
ZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihzZXNzaW9uSUQsIHRhcmdldERv
bWFpbik7CiAgICAgdGFyZ2V0U3RhdGlzdGljcy5sYXN0U2VlbiA9IGxhc3RTZWVuOwogICAgIHRh
cmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucy5hZGQodG9wRnJh
bWVEb21haW4pOwogCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6bG9nV2ViU29ja2V0TG9hZGluZyhjb25zdCBVUkwmIHRhcmdldFVSTCwgY29uc3QgVVJMJgog
CiB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb25XaXRoUmVkdWNl
ZFRpbWVSZXNvbHV0aW9uKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBpZiAoIWRv
Y3VtZW50LnNlc3Npb25JRCgpLmlzVmFsaWQoKSB8fCAhc2hvdWxkTG9nKGRvY3VtZW50LnNlc3Np
b25JRCgpLmlzRXBoZW1lcmFsKCkpKQorICAgIGlmICghZG9jdW1lbnQuc2Vzc2lvbklEKCkuaXNW
YWxpZCgpIHx8ICFzaG91bGRMb2coZG9jdW1lbnQuc2Vzc2lvbklEKCkpKQogICAgICAgICByZXR1
cm47CiAKICAgICBhdXRvJiB1cmwgPSBkb2N1bWVudC51cmwoKTsKQEAgLTE5MSw3ICsxOTEsNyBA
QCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb25XaXRoUmVkdWNl
ZFRpbWVSZXNvbHV0aW9uKGNvbnN0IERvYwogCiAgICAgbV9sYXN0UmVwb3J0ZWRVc2VySW50ZXJh
Y3Rpb25NYXAuc2V0KHRvcEZyYW1lRG9tYWluLCBuZXdUaW1lKTsKIAotICAgIGF1dG8mIHN0YXRp
c3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbih0b3BG
cmFtZURvbWFpbik7CisgICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlz
dGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGRvY3VtZW50LnNlc3Npb25JRCgpLCB0b3BGcmFtZURv
bWFpbik7CiAgICAgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSB0cnVlOwogICAgIHN0
YXRpc3RpY3MubGFzdFNlZW4gPSBuZXdUaW1lOwogICAgIHN0YXRpc3RpY3MubW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvblRpbWUgPSBuZXdUaW1lOwpAQCAtMjUxLDEwICsyNTEsMTAgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6
OlNlc3Npb25JRCBzZXNzaW8KIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0ZvbnRMb2Fk
KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lLCBib29s
IGxvYWRTdGF0dXMpCiB7CiAjaWYgRU5BQkxFKFdFQl9BUElfU1RBVElTVElDUykKLSAgICBpZiAo
IXNob3VsZExvZyhkb2N1bWVudC5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKSkKKyAgICBpZiAo
IXNob3VsZExvZyhkb2N1bWVudC5zZXNzaW9uSUQoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBS
ZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IGRvY3VtZW50LnVybCgpIH07Ci0g
ICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJh
YmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5z
dXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oZG9jdW1lbnQuc2Vzc2lv
bklELCByZWdpc3RyYWJsZURvbWFpbik7CiAgICAgYm9vbCBzaG91bGRDYWxsTm90aWZpY2F0aW9u
Q2FsbGJhY2sgPSBmYWxzZTsKICAgICBpZiAoIWxvYWRTdGF0dXMpIHsKICAgICAgICAgaWYgKHN0
YXRpc3RpY3MuZm9udHNGYWlsZWRUb0xvYWQuYWRkKGZhbWlseU5hbWUpLmlzTmV3RW50cnkpCkBA
IC0yNzgsMTAgKzI3OCwxMCBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGb250TG9h
ZChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZgogdm9pZCBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6bG9nQ2FudmFzUmVhZChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7
CiAjaWYgRU5BQkxFKFdFQl9BUElfU1RBVElTVElDUykKLSAgICBpZiAoIXNob3VsZExvZyhkb2N1
bWVudC5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKSkKKyAgICBpZiAoIXNob3VsZExvZyhkb2N1
bWVudC5zZXNzaW9uSUQoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBSZWdpc3RyYWJsZURvbWFp
biByZWdpc3RyYWJsZURvbWFpbiB7IGRvY3VtZW50LnVybCgpIH07Ci0gICAgYXV0byYgc3RhdGlz
dGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lz
dHJhYmxlRG9tYWluKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0
aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oZG9jdW1lbnQuc2Vzc2lvbklEKCksIHJlZ2lzdHJh
YmxlRG9tYWluKTsKICAgICBSZWdpc3RyYWJsZURvbWFpbiBtYWluRnJhbWVSZWdpc3RyYWJsZURv
bWFpbiB7IGRvY3VtZW50LnRvcERvY3VtZW50KCkudXJsKCkgfTsKICAgICBzdGF0aXN0aWNzLmNh
bnZhc0FjdGl2aXR5UmVjb3JkLndhc0RhdGFSZWFkID0gdHJ1ZTsKICAgICBpZiAoc3RhdGlzdGlj
cy50b3BGcmFtZVJlZ2lzdHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzLmFkZChtYWlu
RnJhbWVSZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKSkuaXNOZXdFbnRyeSkKQEAgLTI5NCwxMCAr
Mjk0LDEwIEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0NhbnZhc1JlYWQoY29uc3Qg
RG9jdW1lbnQmIGRvY3VtZW50KQogdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nQ2FudmFz
V3JpdGVPck1lYXN1cmUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRl
eHRXcml0dGVuKQogewogI2lmIEVOQUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCi0gICAgaWYgKCFz
aG91bGRMb2coZG9jdW1lbnQuc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkpCisgICAgaWYgKCFz
aG91bGRMb2coZG9jdW1lbnQuc2Vzc2lvbklEKCkpKQogICAgICAgICByZXR1cm47CiAgICAgUmVn
aXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4geyBkb2N1bWVudC51cmwoKSB9OwotICAg
IGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJs
ZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3Vy
ZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGRvY3VtZW50LnNlc3Npb25J
RCwgcmVnaXN0cmFibGVEb21haW4pOwogICAgIGJvb2wgc2hvdWxkQ2FsbE5vdGlmaWNhdGlvbkNh
bGxiYWNrID0gZmFsc2U7CiAgICAgUmVnaXN0cmFibGVEb21haW4gbWFpbkZyYW1lUmVnaXN0cmFi
bGVEb21haW4geyBkb2N1bWVudC50b3BEb2N1bWVudCgpLnVybCgpIH07CiAgICAgaWYgKHN0YXRp
c3RpY3MuY2FudmFzQWN0aXZpdHlSZWNvcmQucmVjb3JkV3JpdHRlbk9yTWVhc3VyZWRUZXh0KHRl
eHRXcml0dGVuKSkKQEAgLTMxNSwxMCArMzE1LDEwIEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OmxvZ0NhbnZhc1dyaXRlT3JNZWFzdXJlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29u
CiB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dOYXZpZ2F0b3JBUElBY2Nlc3NlZChjb25z
dCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6Ok5hdmln
YXRvckFQSSBmdW5jdGlvbk5hbWUpCiB7CiAjaWYgRU5BQkxFKFdFQl9BUElfU1RBVElTVElDUykK
LSAgICBpZiAoIXNob3VsZExvZyhkb2N1bWVudC5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKSkK
KyAgICBpZiAoIXNob3VsZExvZyhkb2N1bWVudC5zZXNzaW9uSUQoKSkpCiAgICAgICAgIHJldHVy
bjsKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IGRvY3VtZW50LnVy
bCgpIH07Ci0gICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0Zv
clJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBhdXRvJiBzdGF0aXN0
aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oZG9jdW1l
bnQuc2Vzc2lvbklELCByZWdpc3RyYWJsZURvbWFpbik7CiAgICAgYm9vbCBzaG91bGRDYWxsTm90
aWZpY2F0aW9uQ2FsbGJhY2sgPSBmYWxzZTsKICAgICBpZiAoIXN0YXRpc3RpY3MubmF2aWdhdG9y
RnVuY3Rpb25zQWNjZXNzZWQuY29udGFpbnMoZnVuY3Rpb25OYW1lKSkgewogICAgICAgICBzdGF0
aXN0aWNzLm5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2VkLmFkZChmdW5jdGlvbk5hbWUpOwpAQCAt
MzM4LDEwICszMzgsMTAgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nTmF2aWdhdG9y
QVBJQWNjZXNzZWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb24KIHZvaWQgUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OmxvZ1NjcmVlbkFQSUFjY2Vzc2VkKGNvbnN0IERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6U2NyZWVuQVBJIGZ1bmN0aW9uTmFtZSkK
IHsKICNpZiBFTkFCTEUoV0VCX0FQSV9TVEFUSVNUSUNTKQotICAgIGlmICghc2hvdWxkTG9nKGRv
Y3VtZW50LnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpKQorICAgIGlmICghc2hvdWxkTG9nKGRv
Y3VtZW50LnNlc3Npb25JRCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIFJlZ2lzdHJhYmxlRG9t
YWluIHJlZ2lzdHJhYmxlRG9tYWluIHsgZG9jdW1lbnQudXJsKCkgfTsKLSAgICBhdXRvJiBzdGF0
aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4ocmVn
aXN0cmFibGVEb21haW4pOworICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0
YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihkb2N1bWVudC5zZXNzaW9uSUQsIHJlZ2lzdHJh
YmxlRG9tYWluKTsKICAgICBib29sIHNob3VsZENhbGxOb3RpZmljYXRpb25DYWxsYmFjayA9IGZh
bHNlOwogICAgIGlmICghc3RhdGlzdGljcy5zY3JlZW5GdW5jdGlvbnNBY2Nlc3NlZC5jb250YWlu
cyhmdW5jdGlvbk5hbWUpKSB7CiAgICAgICAgIHN0YXRpc3RpY3Muc2NyZWVuRnVuY3Rpb25zQWNj
ZXNzZWQuYWRkKGZ1bmN0aW9uTmFtZSk7CkBAIC0zNTgsMTIgKzM1OCwxNiBAQCB2b2lkIFJlc291
cmNlTG9hZE9ic2VydmVyOjpsb2dTY3JlZW5BUElBY2Nlc3NlZChjb25zdCBEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0CiAjZW5kaWYKIH0KICAgICAKLVJlc291cmNlTG9hZFN0YXRpc3RpY3MmIFJl
c291cmNlTG9hZE9ic2VydmVyOjplbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJs
ZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQorUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyYgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0Zv
clJlZ2lzdHJhYmxlRG9tYWluKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbikKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVzb3VyY2VT
dGF0aXN0aWNzTWFwLmVuc3VyZShkb21haW4sIFsmZG9tYWluXSB7CisgICAgYXV0byBhZGRSZXN1
bHQgPSBtX3BlclNlc3Npb25SZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5zdXJlKHNlc3Npb25JRCwg
W10geworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWlu
LCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPj4oKTsKKyAgICB9KTsKKworICAgIGF1dG8gYWRkRG9t
YWluUmVzdWx0ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+ZW5zdXJlKGRvbWFpbiwgWyZk
b21haW5dIHsKICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFN0YXRpc3RpY3MoZG9tYWluKTsK
ICAgICB9KTsKLSAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1
cm4gYWRkRG9tYWluUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogdm9pZCBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6dXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSgpCkBAIC0zNzEsMzAgKzM3
NSw0MCBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjp1cGRhdGVDZW50cmFsU3RhdGlzdGlj
c1N0b3JlKCkKICAgICBtX25vdGlmaWNhdGlvbkNhbGxiYWNrKHRha2VTdGF0aXN0aWNzKCkpOwog
fQogCi1TdHJpbmcgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnN0YXRpc3RpY3NGb3JVUkwoY29uc3Qg
VVJMJiB1cmwpCitTdHJpbmcgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnN0YXRpc3RpY3NGb3JVUkwo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCkKIHsKLSAgICBhdXRvIGl0
ZXIgPSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5maW5kKFJlZ2lzdHJhYmxlRG9tYWluIHsgdXJs
IH0pOwotICAgIGlmIChpdGVyID09IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuZCgpKQorICAg
IGF1dG8gcmVzb3VyY2VTdGF0aXN0aWNzQnlEb21haW4gPSBtX3BlclNlc3Npb25SZXNvdXJjZVN0
YXRpc3RpY3NNYXAuZ2V0KHNlc3Npb25JRCk7CisgICAgaWYgKCFyZXNvdXJjZVN0YXRpc3RpY3NC
eURvbWFpbikKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICBhdXRvIGl0ZXIg
PSByZXNvdXJjZVN0YXRpc3RpY3NCeURvbWFpbi0+ZmluZChSZWdpc3RyYWJsZURvbWFpbiB7IHVy
bCB9KTsKKyAgICBpZiAoaXRlciA9PSByZXNvdXJjZVN0YXRpc3RpY3NCeURvbWFpbi0+ZW5kKCkp
CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgcmV0dXJuIG1ha2VTdHJpbmco
IlN0YXRpc3RpY3MgZm9yICIsIHVybC5ob3N0KCkudG9TdHJpbmcoKSwgIjpcbiIsIGl0ZXItPnZh
bHVlLnRvU3RyaW5nKCkpOwogfQogCi1WZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnRha2VTdGF0aXN0aWNzKCkKK1Jlc291cmNlTG9hZE9ic2VydmVy
OjpQZXJTZXNzaW9uUmVzb3VyY2VMb2FkRGF0YSBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6dGFrZVN0
YXRpc3RpY3MoKQogewotICAgIFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBzdGF0aXN0
aWNzOwotICAgIHN0YXRpc3RpY3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3Jlc291cmNlU3Rh
dGlzdGljc01hcC5zaXplKCkpOwotICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogbV9yZXNvdXJj
ZVN0YXRpc3RpY3NNYXAudmFsdWVzKCkpCi0gICAgICAgIHN0YXRpc3RpY3MudW5jaGVja2VkQXBw
ZW5kKFdURk1vdmUoc3RhdGlzdGljKSk7CisgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OlBlclNl
c3Npb25SZXNvdXJjZUxvYWREYXRhIHBlclNlc3Npb25TdGF0aXN0aWNzOwogCi0gICAgbV9yZXNv
dXJjZVN0YXRpc3RpY3NNYXAuY2xlYXIoKTsKKyAgICBmb3IgKGF1dG8mIGl0ZXIgOiBtX3BlclNl
c3Npb25SZXNvdXJjZVN0YXRpc3RpY3NNYXApIHsKKyAgICAgICAgVmVjdG9yPFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M+IHN0YXRpc3RpY3M7CisgICAgICAgIHN0YXRpc3RpY3MucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShpdGVyLnZhbHVlLT5zaXplKCkpOworCisgICAgICAgIGZvciAoYXV0byYgc3Rh
dGlzdGljIDogaXRlci52YWx1ZS0+dmFsdWVzKCkpCisgICAgICAgICAgICBzdGF0aXN0aWNzLnVu
Y2hlY2tlZEFwcGVuZChXVEZNb3ZlKHN0YXRpc3RpYykpOworCisgICAgICAgIHBlclNlc3Npb25T
dGF0aXN0aWNzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihpdGVyLmtleSwgV1RGTW92
ZShzdGF0aXN0aWNzKSkpOworICAgICAgICBpdGVyLnZhbHVlLT5jbGVhcigpOworICAgIH0KIAot
ICAgIHJldHVybiBzdGF0aXN0aWNzOworICAgIHJldHVybiBwZXJTZXNzaW9uU3RhdGlzdGljczsK
IH0KIAogdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y2xlYXJTdGF0ZSgpCiB7Ci0gICAgbV9y
ZXNvdXJjZVN0YXRpc3RpY3NNYXAuY2xlYXIoKTsKKyAgICBtX3BlclNlc3Npb25SZXNvdXJjZVN0
YXRpc3RpY3NNYXAuY2xlYXIoKTsKICAgICBtX2xhc3RSZXBvcnRlZFVzZXJJbnRlcmFjdGlvbk1h
cC5jbGVhcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNl
cnZlci5oCmluZGV4IGRlMWM5NGE3MmNkNDcxY2NmN2Y4MmI1YTJjYmI5MTc3ZGI1NjgwYjcuLjll
Mjk1YTQ1NWU3ZDhmZDc3OThjNDM1MWE0M2FhZTNlZTNiNmE4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCkBAIC01OSw2ICs1OSw3IEBAIHN0cnVj
dCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogY2xhc3MgUmVzb3VyY2VMb2FkT2JzZXJ2ZXIgewog
ICAgIGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVkPFJlc291cmNlTG9hZE9ic2VydmVy
PjsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8UEFMOjpTZXNzaW9uSUQs
IFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPj4+IFBlclNlc3Npb25SZXNvdXJjZUxvYWRE
YXRhOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZXNvdXJjZUxvYWRPYnNlcnZlciYgc2hh
cmVkKCk7CiAKICAgICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhjb25zdCBGcmFtZSosIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVkaXJlY3RSZXNwb25zZSk7CkBAIC03MSw5ICs3Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGxv
Z05hdmlnYXRvckFQSUFjY2Vzc2VkKGNvbnN0IERvY3VtZW50JiwgY29uc3QgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljczo6TmF2aWdhdG9yQVBJKTsKICAgICB2b2lkIGxvZ1NjcmVlbkFQSUFjY2Vzc2Vk
KGNvbnN0IERvY3VtZW50JiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6U2NyZWVuQVBJ
KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0aXN0aWNzRm9yVVJMKGNvbnN0IFVS
TCYpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0aXN0aWNzRm9yVVJMKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBVUkwmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3RhdGlz
dGljc1VwZGF0ZWRDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoVmVjdG9yPFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M+JiYpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0YXRpc3Rp
Y3NVcGRhdGVkQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQZXJTZXNzaW9uUmVzb3VyY2VMb2FkRGF0
YSk+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NV
bmRlck9wZW5lckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgUGFnZUlkZW50aWZpZXIsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
Jik+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TG9nVXNlckludGVyYWN0aW9uTm90
aWZpY2F0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dXZWJT
b2NrZXRMb2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IFdhbGxUaW1lKT4mJik7CkBAIC04OSwxOCArOTAsMTggQEAgcHVibGljOgogI2VuZGlmCiAKIHBy
aXZhdGU6Ci0gICAgYm9vbCBzaG91bGRMb2coYm9vbCB1c2VzRXBoZW1lcmFsU2Vzc2lvbikgY29u
c3Q7Ci0gICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNz
Rm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBib29s
IHNob3VsZExvZyhQQUw6OlNlc3Npb25JRCkgY29uc3Q7CisgICAgUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyYgZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAKLSAgICBWZWN0b3I8UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcz4gdGFrZVN0YXRpc3RpY3MoKTsKKyAgICBQZXJTZXNzaW9uUmVzb3Vy
Y2VMb2FkRGF0YSB0YWtlU3RhdGlzdGljcygpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3Jh
Z2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRv
Y3VtZW50KTsKICNlbmRpZgogCi0gICAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcz4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXA7CisgICAgSGFzaE1hcDxQ
QUw6OlNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4s
IFJlc291cmNlTG9hZFN0YXRpc3RpY3M+Pj4gbV9wZXJTZXNzaW9uUmVzb3VyY2VTdGF0aXN0aWNz
TWFwOwogICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdURjo6V2FsbFRpbWU+IG1fbGFz
dFJlcG9ydGVkVXNlckludGVyYWN0aW9uTWFwOwotICAgIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFJl
c291cmNlTG9hZFN0YXRpc3RpY3M+JiYpPiBtX25vdGlmaWNhdGlvbkNhbGxiYWNrOworICAgIEZ1
bmN0aW9uPHZvaWQoUGVyU2Vzc2lvblJlc291cmNlTG9hZERhdGEpPiBtX25vdGlmaWNhdGlvbkNh
bGxiYWNrOwogICAgIEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiwgUGFnZUlkZW50aWZpZXIsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+IG1f
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrOwogICAgIEZ1bmN0aW9uPHZv
aWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+IG1fbG9nVXNlcklu
dGVyYWN0aW9uTm90aWZpY2F0aW9uQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYsIFdhbGxUaW1lKT4gbV9sb2dXZWJTb2NrZXRMb2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJhY2s7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMzZlN2Q2OWMzZGI2Y2I4ZmU2
OWMyZjAxZTk1MmVmOTRjOGMwNzI4Mi4uMDJlMDdhYTQ4NzVjMGNiMTNhNWFlYTQwMzk2M2ZmODA4
YTA3N2Y3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNDQzNCw3ICs0
NDM0LDExIEBAIEpTVmFsdWUgSW50ZXJuYWxzOjpjbG9uZUFycmF5QnVmZmVyKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgSlNWYWx1ZSBidWZmZXIsIEpTVmFsCiAKIFN0cmluZyBJbnRlcm5hbHM6OnJl
c291cmNlTG9hZFN0YXRpc3RpY3NGb3JVUkwoY29uc3QgRE9NVVJMJiB1cmwpCiB7Ci0gICAgcmV0
dXJuIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zdGF0aXN0aWNzRm9yVVJMKHVybC5o
cmVmKCkpOworICAgIGF1dG8qIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7CisgICAgaWYg
KCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4g
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnN0YXRpc3RpY3NGb3JVUkwoZG9jdW1lbnQt
PnNlc3Npb25JRCgpLCB1cmwuaHJlZigpKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAppbmRleCA5YjExMjc5MTIzNzdiZjMzYTg5YTc1ODU2Y2U1YjU4YTMyZWM1YjViLi40
ZWFjZmEwNjJmMGQwOTJiMDliYTFiMzE5NmE3ZmNlZjhmMzYwZWRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcApAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3Mu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2FtZVNpdGVJbmZvLmg+CkBAIC03MTIsMTQgKzcxMywxNCBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dTdWJyZXNvdXJjZVJlZGly
ZWN0KFBBTDo6U2Vzc2lvbklEIHNlc3NpbwogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdl
YkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYgc3RhdGlzdGljcykKK3ZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFJl
c291cmNlTG9hZE9ic2VydmVyOjpQZXJTZXNzaW9uUmVzb3VyY2VMb2FkRGF0YSYmIHN0YXRpc3Rp
Y3MpCiB7Ci0gICAgYXV0byogbmV0d29ya1Nlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdv
cmtTZXNzaW9uQnlDb25uZWN0aW9uKGNvbm5lY3Rpb24oKSk7Ci0gICAgaWYgKCFuZXR3b3JrU2Vz
c2lvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAg
ICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChX
VEZNb3ZlKHN0YXRpc3RpY3MpKTsKKyAgICBmb3IgKGF1dG8mIGl0ZXIgOiBzdGF0aXN0aWNzKSB7
CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0
d29ya1Nlc3Npb24oaXRlci5maXJzdCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
KSkKKyAgICAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVXBkYXRlZChXVEZNb3ZlKGl0ZXIuc2Vjb25kKSk7CisgICAgICAgIH0KKyAgICB9
CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nl
c3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3Vi
RnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaAppbmRleCAwYWEwMmQzMjgyZGMxNzk3MTZjYjJiZjZkNmNkNzk2NzgyYWZkNDM2Li42Nzg5
NTBiN2U0YzViM2FhYjFhNzc5YjM0NDlhM2JlOTliMTBkMmU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxv
YWRPYnNlcnZlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBQ
QUwgewpAQCAtMjIyLDcgKzIyMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2dXZWJTb2NrZXRM
b2FkaW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGFyZ2V0RG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIFdhbGxUaW1lIGxh
c3RTZWVuKTsKICAgICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhQQUw6OlNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2Vlbik7CiAgICAgdm9pZCBsb2dT
dWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGFyZ2V0RG9tYWluKTsK
LSAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsKKyAgICAgICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVXBkYXRlZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6UGVyU2Vzc2lvblJl
c291cmNlTG9hZERhdGEmJik7CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
dG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwogICAg
IHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiBvcGVuZXJEb21haW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KaW5kZXggZmQ0YjI0OGM0N2U2NjhhNzdlZmNkNzIwZWFkMmQ2ZjU2NGFjYWEzNy4u
NmVlMjJkMzM0MGYwNWRmMzUyYjI3ZDA1OTJjNTc3ZDRlMzUwNTlkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC02NCw3ICs2NCw3IEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBM
b2dXZWJTb2NrZXRMb2FkaW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gdGFyZ2V0RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0
b3BGcmFtZURvbWFpbiwgV2FsbFRpbWUgbGFzdFNlZW4pCiAgICAgTG9nU3VicmVzb3VyY2VMb2Fk
aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
dGFyZ2V0RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwg
V2FsbFRpbWUgbGFzdFNlZW4pCiAgICAgTG9nU3VicmVzb3VyY2VSZWRpcmVjdChQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHNvdXJjZURvbWFpbiwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdGFyZ2V0RG9tYWluKQotICAgIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
PiBzdGF0aXN0aWNzKQorICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3Rvcjxz
dGQ6OnBhaXI8UEFMOjpTZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzPj4+IHN0YXRpc3RpY3MpCiAgICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJv
b2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKICAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1l
RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFu
dGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21w
dFdhc1Nob3duKSBBc3luYwogICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJ
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWluKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDc0ZjU5YzIyMzYwOGI0ZWUyN2JkZjc5OTcy
OWQwNDVmNzg4OWM2YTQuLmU4OThkYWMwNGFlNGYxNWYxMzk1ZDg2ZjFjNzdhYzZlZjY5ZGE0ZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTIxNyw3ICsyMTcs
NyBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICBtX3BsdWdJbkF1dG9TdGFydE9yaWdp
bkhhc2hlcy5hZGQoUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgSGFzaE1hcDx1
bnNpZ25lZCwgV2FsbFRpbWU+KCkpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLSAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc2V0U3RhdGlzdGljc1Vw
ZGF0ZWRDYWxsYmFjayhbdGhpc10gKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmIHN0
YXRpc3RpY3MpIHsKKyAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc2V0U3RhdGlz
dGljc1VwZGF0ZWRDYWxsYmFjayhbdGhpc10gKFJlc291cmNlTG9hZE9ic2VydmVyOjpQZXJTZXNz
aW9uUmVzb3VyY2VMb2FkRGF0YSYmIHN0YXRpc3RpY3MpIHsKICAgICAgICAgZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChXVEZN
b3ZlKHN0YXRpc3RpY3MpKSwgMCk7CiAgICAgfSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377129</attachid>
            <date>2019-08-23 09:39:43 -0700</date>
            <delta_ts>2019-08-23 10:27:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198923-20190823093943.patch</filename>
            <type>text/plain</type>
            <size>26656</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4OTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjYwZmI1YTM3MzlkMTMz
MmUyZDc1MDQzMzk0MGZmYjk2ODkzZTYwZi4uMzAxZDBkYmY4NzEzYTc4NjQ4OTViYjVlODEyNjUy
Mjc1ZTA1MzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTA4LTIzICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQg
SVRQIG9uIGEgcGVyLXNlc3Npb24gYmFzaXMgKDE5ODkyMykKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODkyMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggdXBkYXRlZCB0aGUgZGF0YSBz
dHJ1Y3R1cmUgdXNlZCB0byBjb2xsZWN0IHJlc291cmNlIGxvYWQKKyAgICAgICAgc3RhdGlzdGlj
cyBpbiBvcmRlciB0byBzdXBwb3J0IElUUCBkYXRhIGNvbGxlY3Rpb24gb24gYSBwZXIgc2Vzc2lv
bgorICAgICAgICBiYXNpcy4gRWFjaCBzZXNzaW9uSUQgaXMgc3RvcmVkIGFzIGEga2V5LXZhbHVl
IHBhaXIgd2l0aCBpdHMgb3duIG1hcAorICAgICAgICBvZiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LgorCisgICAgICAgIEl0IGFsc28gdXBkYXRlZCB0aGUgc3RhdGlzdGljc0ZvclVSTCBmdW5jdGlv
biBjYWxsIHRvIHBlcmZvcm0gbG9va3VwcworICAgICAgICBvZiBVUkwgZGF0YSBiYXNlZCBvbiBz
ZXNzaW9uSUQuCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NVcGRh
dGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
b3VsZExvZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
bG9nU3VicmVzb3VyY2VMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9i
c2VydmVyOjpsb2dXZWJTb2NrZXRMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGb250TG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nQ2FudmFzUmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nQ2FudmFzV3JpdGVP
ck1lYXN1cmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ05h
dmlnYXRvckFQSUFjY2Vzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2Vy
dmVyOjpsb2dTY3JlZW5BUElBY2Nlc3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4p
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnN0YXRpc3RpY3NGb3JV
UkwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnRha2VTdGF0aXN0
aWNzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpjbGVhclN0YXRl
KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlc291
cmNlTG9hZFN0YXRpc3RpY3NGb3JVUkwpOgorCiAyMDE5LTA4LTE2ICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFRoZSBkZWZhdWx0IHRhYiBpbmRleCBvZiBvdXRw
dXQgYW5kIGZpZWxkc2V0IHNob3VsZCBiZSAtMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhZWViNWI5MDE5OGNjOTEz
MTZjOWU4ZTZkMWM0ZjMzNmIwZTRhYzk1Li5lYjAyYThlMGQwZjZlYTRkNzJiNzJhODYwNzhmNDBm
OGM2OGViODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTA4LTIzICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgSVRQ
IG9uIGEgcGVyLXNlc3Npb24gYmFzaXMgKDE5ODkyMykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODkyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiBvZiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZAorICAgICAgICBkaWQgbm90IGFsbG93IGZvciBJ
VFAgb24gYSBwZXIgc2Vzc2lvbiBiYXNpcyBkdWUgdG8gdGhlIHNlc3Npb25JRAorICAgICAgICBu
b3QgYmVpbmcgcGFzc2VkIHRvIHRoZSByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZCBmdW5j
dGlvbi4KKyAgICAgICAgVGhpcyBwYXRjaCBhbGxvd3MgYWNjZXNzIG9mIHRoZSBjb3JyZWN0IG5l
dHdvcmtTZXNzaW9uIGJ5IHBhc3NpbmcKKyAgICAgICAgYWxsIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgaW4gYSBuZXcgZGF0YSBzdHJ1Y3R1cmUgb2Yga2V5LXZhbHVlCisgICAgICAgIHBhaXJzLCB3
aGVyZSB0aGUgc2Vzc2lvbklEIGlzIHRoZSBrZXkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRl
ZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAyMDE5LTA4LTIw
ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtGVFddIEZp
eCBzY3JvbGxpbmcgaW4gbW9kZXJuIFdlYktpdCB2aWV3cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKaW5kZXggZmZhZGExYzQ1YmU0NjZiN2ZhZGNm
ZDA2OTEwMTMyNWVjYTM5ZDU1Ni4uNzY5YTcyYTA1ODFlZmFlZmNhMDM4NzdjNDhiYjkyNWFmZjE3
MmM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
Y3BwCkBAIC01NCwxMyArNTQsMTMgQEAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXImIFJlc291cmNlTG9h
ZE9ic2VydmVyOjpzaGFyZWQoKQogICAgIHJldHVybiByZXNvdXJjZUxvYWRPYnNlcnZlcjsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U3RhdGlzdGljc1VwZGF0ZWRDYWxsYmFj
ayhXVEY6OkZ1bmN0aW9uPHZvaWQoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpPiYm
IG5vdGlmaWNhdGlvbkNhbGxiYWNrKQordm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U3Rh
dGlzdGljc1VwZGF0ZWRDYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBlclNlc3Npb25SZXNvdXJjZUxv
YWREYXRhJiYpPiYmIG5vdGlmaWNhdGlvbkNhbGxiYWNrKQogewogICAgIEFTU0VSVCghbV9ub3Rp
ZmljYXRpb25DYWxsYmFjayk7CiAgICAgbV9ub3RpZmljYXRpb25DYWxsYmFjayA9IFdURk1vdmUo
bm90aWZpY2F0aW9uQ2FsbGJhY2spOwogfQogCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpz
ZXRSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2
b2lkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRv
bWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVyRG9tYWluKT4mJiBjYWxsYmFjaykKK3ZvaWQg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJD
YWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZp
ZXIgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVyRG9tYWluKT4m
JiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoIW1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lckNhbGxiYWNrKTsKICAgICBtX3JlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwpAQCAtOTUsOSArOTUsOSBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgaXMzeHhSZWRpcmVjdChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAg
ICByZXR1cm4gcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSAzMDAgJiYgcmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSA8PSAzOTk7CiB9CiAKLWJvb2wgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
b3VsZExvZyhib29sIHVzZXNFcGhlbWVyYWxTZXNzaW9uKSBjb25zdAorYm9vbCBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2hvdWxkTG9nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgY29uc3QKIHsK
LSAgICByZXR1cm4gRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpyZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZCgpICYmICF1c2VzRXBoZW1lcmFsU2Vzc2lvbiAmJiBtX25vdGlmaWNhdGlvbkNh
bGxiYWNrOworICAgIHJldHVybiBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKCkgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIG1fbm90
aWZpY2F0aW9uQ2FsbGJhY2s7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1
YnJlc291cmNlTG9hZGluZyhjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkK
QEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNv
dXJjZUxvYWRpbmcoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdQogICAgICAgICByZXR1
cm47CiAKICAgICBhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UgfHwg
IXNob3VsZExvZyhwYWdlLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKSkKKyAgICBpZiAoIXBhZ2Ug
fHwgIXNob3VsZExvZyhwYWdlLT5zZXNzaW9uSUQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGJvb2wgaXNSZWRpcmVjdCA9IGlzM3h4UmVkaXJlY3QocmVkaXJlY3RSZXNwb25zZSk7CkBAIC0x
MzAsNyArMTMwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VM
b2FkaW5nKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3UKICAgICAgICAgcmV0dXJuOwog
CiAgICAgewotICAgICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VT
dGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4odGFyZ2V0RG9tYWluKTsKKyAgICAgICAgYXV0
byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJh
YmxlRG9tYWluKHBhZ2UtPnNlc3Npb25JRCgpLCB0YXJnZXREb21haW4pOwogICAgICAgICBhdXRv
IGxhc3RTZWVuID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6cmVkdWNlVGltZVJlc29sdXRpb24o
V2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgdGFyZ2V0U3RhdGlzdGljcy5sYXN0U2VlbiA9IGxh
c3RTZWVuOwogICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbnMuYWRkKHRvcEZyYW1lRG9tYWluKTsKQEAgLTEzOSw5ICsxMzksOSBAQCB2b2lkIFJl
c291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjZUxvYWRpbmcoY29uc3QgRnJhbWUqIGZy
YW1lLCBjb25zdCBSZXNvdQogICAgIH0KIAogICAgIGlmIChpc1JlZGlyZWN0KSB7Ci0gICAgICAg
IGF1dG8mIHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlz
dGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZGlyZWN0ZWRGcm9tRG9tYWluKTsKKyAgICAgICAg
YXV0byYgcmVkaXJlY3RpbmdPcmlnaW5TdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0
aWNzRm9yUmVnaXN0cmFibGVEb21haW4ocGFnZS0+c2Vzc2lvbklEKCksIHJlZGlyZWN0ZWRGcm9t
RG9tYWluKTsKICAgICAgICAgcmVkaXJlY3RpbmdPcmlnaW5TdGF0aXN0aWNzLnN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RzVG8uYWRkKHRhcmdldERvbWFpbik7Ci0gICAgICAgIGF1dG8mIHRhcmdl
dFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFp
bih0YXJnZXREb21haW4pOworICAgICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJl
UmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4ocGFnZS0+c2Vzc2lvbklEKCks
IHRhcmdldERvbWFpbik7CiAgICAgICAgIHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNGcm9tLmFkZChyZWRpcmVjdGVkRnJvbURvbWFpbik7CiAKICAgICAgICAgbV9s
b2dTdWJyZXNvdXJjZVJlZGlyZWN0Tm90aWZpY2F0aW9uQ2FsbGJhY2socGFnZS0+c2Vzc2lvbklE
KCksIHJlZGlyZWN0ZWRGcm9tRG9tYWluLCB0YXJnZXREb21haW4pOwpAQCAtMTUwLDcgKzE1MCw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZyhjb25z
dCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291CiAKIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OmxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgVVJMJiB0YXJnZXRVUkwsIGNvbnN0IFVSTCYgbWFp
bkZyYW1lVVJMLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgaWYgKCFzaG91bGRM
b2coc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpKQorICAgIGlmICghc2hvdWxkTG9nKHNlc3Npb25J
RCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gdGFyZ2V0SG9zdCA9IHRhcmdldFVSTC5o
b3N0KCk7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9n
V2ViU29ja2V0TG9hZGluZyhjb25zdCBVUkwmIHRhcmdldFVSTCwgY29uc3QgVVJMJgogCiAgICAg
YXV0byBsYXN0U2VlbiA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnJlZHVjZVRpbWVSZXNvbHV0
aW9uKFdhbGxUaW1lOjpub3coKSk7CiAKLSAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5z
dXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4odGFyZ2V0RG9tYWluKTsK
KyAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9y
UmVnaXN0cmFibGVEb21haW4oc2Vzc2lvbklELCB0YXJnZXREb21haW4pOwogICAgIHRhcmdldFN0
YXRpc3RpY3MubGFzdFNlZW4gPSBsYXN0U2VlbjsKICAgICB0YXJnZXRTdGF0aXN0aWNzLnN1YnJl
c291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMuYWRkKHRvcEZyYW1lRG9tYWluKTsKIApAQCAtMTc2
LDcgKzE3Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1dlYlNvY2tldExvYWRp
bmcoY29uc3QgVVJMJiB0YXJnZXRVUkwsIGNvbnN0IFVSTCYKIAogdm9pZCBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25z
dCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgaWYgKCFkb2N1bWVudC5zZXNzaW9uSUQoKS5p
c1ZhbGlkKCkgfHwgIXNob3VsZExvZyhkb2N1bWVudC5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgp
KSkKKyAgICBpZiAoIWRvY3VtZW50LnNlc3Npb25JRCgpLmlzVmFsaWQoKSB8fCAhc2hvdWxkTG9n
KGRvY3VtZW50LnNlc3Npb25JRCgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgdXJs
ID0gZG9jdW1lbnQudXJsKCk7CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25z
dCBEb2MKIAogICAgIG1fbGFzdFJlcG9ydGVkVXNlckludGVyYWN0aW9uTWFwLnNldCh0b3BGcmFt
ZURvbWFpbiwgbmV3VGltZSk7CiAKLSAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3Vy
Y2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4odG9wRnJhbWVEb21haW4pOworICAgIGF1
dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURv
bWFpbihkb2N1bWVudC5zZXNzaW9uSUQoKSwgdG9wRnJhbWVEb21haW4pOwogICAgIHN0YXRpc3Rp
Y3MuaGFkVXNlckludGVyYWN0aW9uID0gdHJ1ZTsKICAgICBzdGF0aXN0aWNzLmxhc3RTZWVuID0g
bmV3VGltZTsKICAgICBzdGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0g
bmV3VGltZTsKQEAgLTI1MSwxMCArMjUxLDEwIEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvCiB2
b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGb250TG9hZChjb25zdCBEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZSwgYm9vbCBsb2FkU3RhdHVzKQogewogI2lm
IEVOQUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCi0gICAgaWYgKCFzaG91bGRMb2coZG9jdW1lbnQu
c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkpCisgICAgaWYgKCFzaG91bGRMb2coZG9jdW1lbnQu
c2Vzc2lvbklEKCkpKQogICAgICAgICByZXR1cm47CiAgICAgUmVnaXN0cmFibGVEb21haW4gcmVn
aXN0cmFibGVEb21haW4geyBkb2N1bWVudC51cmwoKSB9OwotICAgIGF1dG8mIHN0YXRpc3RpY3Mg
PSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJs
ZURvbWFpbik7CisgICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGlj
c0ZvclJlZ2lzdHJhYmxlRG9tYWluKGRvY3VtZW50LnNlc3Npb25JRCwgcmVnaXN0cmFibGVEb21h
aW4pOwogICAgIGJvb2wgc2hvdWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gZmFsc2U7CiAg
ICAgaWYgKCFsb2FkU3RhdHVzKSB7CiAgICAgICAgIGlmIChzdGF0aXN0aWNzLmZvbnRzRmFpbGVk
VG9Mb2FkLmFkZChmYW1pbHlOYW1lKS5pc05ld0VudHJ5KQpAQCAtMjc4LDEwICsyNzgsMTAgQEAg
dm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nRm9udExvYWQoY29uc3QgRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBTdHJpbmcmIGYKIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0Nh
bnZhc1JlYWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewogI2lmIEVOQUJMRShXRUJfQVBJ
X1NUQVRJU1RJQ1MpCi0gICAgaWYgKCFzaG91bGRMb2coZG9jdW1lbnQuc2Vzc2lvbklEKCkuaXNF
cGhlbWVyYWwoKSkpCisgICAgaWYgKCFzaG91bGRMb2coZG9jdW1lbnQuc2Vzc2lvbklEKCkpKQog
ICAgICAgICByZXR1cm47CiAgICAgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4g
eyBkb2N1bWVudC51cmwoKSB9OwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJj
ZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAg
YXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxl
RG9tYWluKGRvY3VtZW50LnNlc3Npb25JRCgpLCByZWdpc3RyYWJsZURvbWFpbik7CiAgICAgUmVn
aXN0cmFibGVEb21haW4gbWFpbkZyYW1lUmVnaXN0cmFibGVEb21haW4geyBkb2N1bWVudC50b3BE
b2N1bWVudCgpLnVybCgpIH07CiAgICAgc3RhdGlzdGljcy5jYW52YXNBY3Rpdml0eVJlY29yZC53
YXNEYXRhUmVhZCA9IHRydWU7CiAgICAgaWYgKHN0YXRpc3RpY3MudG9wRnJhbWVSZWdpc3RyYWJs
ZURvbWFpbnNXaGljaEFjY2Vzc2VkV2ViQVBJcy5hZGQobWFpbkZyYW1lUmVnaXN0cmFibGVEb21h
aW4uc3RyaW5nKCkpLmlzTmV3RW50cnkpCkBAIC0yOTQsMTAgKzI5NCwxMCBAQCB2b2lkIFJlc291
cmNlTG9hZE9ic2VydmVyOjpsb2dDYW52YXNSZWFkKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkK
IHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0NhbnZhc1dyaXRlT3JNZWFzdXJlKGNvbnN0
IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0V3JpdHRlbikKIHsKICNpZiBF
TkFCTEUoV0VCX0FQSV9TVEFUSVNUSUNTKQotICAgIGlmICghc2hvdWxkTG9nKGRvY3VtZW50LnNl
c3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpKQorICAgIGlmICghc2hvdWxkTG9nKGRvY3VtZW50LnNl
c3Npb25JRCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lz
dHJhYmxlRG9tYWluIHsgZG9jdW1lbnQudXJsKCkgfTsKLSAgICBhdXRvJiBzdGF0aXN0aWNzID0g
ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVE
b21haW4pOworICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JSZWdpc3RyYWJsZURvbWFpbihkb2N1bWVudC5zZXNzaW9uSUQsIHJlZ2lzdHJhYmxlRG9tYWlu
KTsKICAgICBib29sIHNob3VsZENhbGxOb3RpZmljYXRpb25DYWxsYmFjayA9IGZhbHNlOwogICAg
IFJlZ2lzdHJhYmxlRG9tYWluIG1haW5GcmFtZVJlZ2lzdHJhYmxlRG9tYWluIHsgZG9jdW1lbnQu
dG9wRG9jdW1lbnQoKS51cmwoKSB9OwogICAgIGlmIChzdGF0aXN0aWNzLmNhbnZhc0FjdGl2aXR5
UmVjb3JkLnJlY29yZFdyaXR0ZW5Pck1lYXN1cmVkVGV4dCh0ZXh0V3JpdHRlbikpCkBAIC0zMTUs
MTAgKzMxNSwxMCBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dDYW52YXNXcml0ZU9y
TWVhc3VyZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbgogdm9pZCBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6bG9nTmF2aWdhdG9yQVBJQWNjZXNzZWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpOYXZpZ2F0b3JBUEkgZnVuY3Rpb25OYW1l
KQogewogI2lmIEVOQUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCi0gICAgaWYgKCFzaG91bGRMb2co
ZG9jdW1lbnQuc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkpCisgICAgaWYgKCFzaG91bGRMb2co
ZG9jdW1lbnQuc2Vzc2lvbklEKCkpKQogICAgICAgICByZXR1cm47CiAgICAgUmVnaXN0cmFibGVE
b21haW4gcmVnaXN0cmFibGVEb21haW4geyBkb2N1bWVudC51cmwoKSB9OwotICAgIGF1dG8mIHN0
YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihy
ZWdpc3RyYWJsZURvbWFpbik7CisgICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNl
U3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGRvY3VtZW50LnNlc3Npb25JRCwgcmVnaXN0
cmFibGVEb21haW4pOwogICAgIGJvb2wgc2hvdWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxiYWNrID0g
ZmFsc2U7CiAgICAgaWYgKCFzdGF0aXN0aWNzLm5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2VkLmNv
bnRhaW5zKGZ1bmN0aW9uTmFtZSkpIHsKICAgICAgICAgc3RhdGlzdGljcy5uYXZpZ2F0b3JGdW5j
dGlvbnNBY2Nlc3NlZC5hZGQoZnVuY3Rpb25OYW1lKTsKQEAgLTMzOCwxMCArMzM4LDEwIEBAIHZv
aWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ05hdmlnYXRvckFQSUFjY2Vzc2VkKGNvbnN0IERv
Y3VtZW50JiBkb2N1bWVudCwgY29uCiB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTY3Jl
ZW5BUElBY2Nlc3NlZChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M6OlNjcmVlbkFQSSBmdW5jdGlvbk5hbWUpCiB7CiAjaWYgRU5BQkxFKFdFQl9B
UElfU1RBVElTVElDUykKLSAgICBpZiAoIXNob3VsZExvZyhkb2N1bWVudC5zZXNzaW9uSUQoKS5p
c0VwaGVtZXJhbCgpKSkKKyAgICBpZiAoIXNob3VsZExvZyhkb2N1bWVudC5zZXNzaW9uSUQoKSkp
CiAgICAgICAgIHJldHVybjsKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFp
biB7IGRvY3VtZW50LnVybCgpIH07Ci0gICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAg
ICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFi
bGVEb21haW4oZG9jdW1lbnQuc2Vzc2lvbklELCByZWdpc3RyYWJsZURvbWFpbik7CiAgICAgYm9v
bCBzaG91bGRDYWxsTm90aWZpY2F0aW9uQ2FsbGJhY2sgPSBmYWxzZTsKICAgICBpZiAoIXN0YXRp
c3RpY3Muc2NyZWVuRnVuY3Rpb25zQWNjZXNzZWQuY29udGFpbnMoZnVuY3Rpb25OYW1lKSkgewog
ICAgICAgICBzdGF0aXN0aWNzLnNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkLmFkZChmdW5jdGlvbk5h
bWUpOwpAQCAtMzU4LDEyICszNTgsMTYgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9n
U2NyZWVuQVBJQWNjZXNzZWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdAogI2VuZGlm
CiB9CiAgICAgCi1SZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbikKK1Jlc291cmNlTG9hZFN0YXRpc3RpY3MmIFJlc291cmNlTG9h
ZE9ic2VydmVyOjplbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4p
CiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbnN1cmUo
ZG9tYWluLCBbJmRvbWFpbl0geworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9wZXJTZXNzaW9uUmVz
b3VyY2VTdGF0aXN0aWNzTWFwLmVuc3VyZShzZXNzaW9uSUQsIFtdIHsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8SGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVzb3VyY2VMb2FkU3RhdGlz
dGljcz4+KCk7CisgICAgfSk7CisKKyAgICBhdXRvIGFkZERvbWFpblJlc3VsdCA9IGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUtPmVuc3VyZShkb21haW4sIFsmZG9tYWluXSB7CiAgICAgICAgIHJl
dHVybiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKGRvbWFpbik7CiAgICAgfSk7Ci0gICAgcmV0dXJu
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgcmV0dXJuIGFkZERvbWFpblJlc3VsdC5p
dGVyYXRvci0+dmFsdWU7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnVwZGF0ZUNl
bnRyYWxTdGF0aXN0aWNzU3RvcmUoKQpAQCAtMzcxLDMwICszNzUsNDAgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6dXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSgpCiAgICAgbV9ub3Rp
ZmljYXRpb25DYWxsYmFjayh0YWtlU3RhdGlzdGljcygpKTsKIH0KIAotU3RyaW5nIFJlc291cmNl
TG9hZE9ic2VydmVyOjpzdGF0aXN0aWNzRm9yVVJMKGNvbnN0IFVSTCYgdXJsKQorU3RyaW5nIFJl
c291cmNlTG9hZE9ic2VydmVyOjpzdGF0aXN0aWNzRm9yVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgYXV0byBpdGVyID0gbV9yZXNvdXJjZVN0YXRp
c3RpY3NNYXAuZmluZChSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9KTsKLSAgICBpZiAoaXRlciA9
PSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSkKKyAgICBhdXRvKiByZXNvdXJjZVN0YXRp
c3RpY3NCeURvbWFpbiA9IG1fcGVyU2Vzc2lvblJlc291cmNlU3RhdGlzdGljc01hcC5nZXQoc2Vz
c2lvbklEKTsKKyAgICBpZiAoIXJlc291cmNlU3RhdGlzdGljc0J5RG9tYWluKQorICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIGF1dG8gaXRlciA9IHJlc291cmNlU3RhdGlzdGlj
c0J5RG9tYWluLT5maW5kKFJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH0pOworICAgIGlmIChpdGVy
ID09IHJlc291cmNlU3RhdGlzdGljc0J5RG9tYWluLT5lbmQoKSkKICAgICAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CiAKICAgICByZXR1cm4gbWFrZVN0cmluZygiU3RhdGlzdGljcyBmb3IgIiwg
dXJsLmhvc3QoKS50b1N0cmluZygpLCAiOlxuIiwgaXRlci0+dmFsdWUudG9TdHJpbmcoKSk7CiB9
CiAKLVZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
dGFrZVN0YXRpc3RpY3MoKQorYXV0byBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6dGFrZVN0YXRpc3Rp
Y3MoKSAtPiBQZXJTZXNzaW9uUmVzb3VyY2VMb2FkRGF0YQogewotICAgIFZlY3RvcjxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPiBzdGF0aXN0aWNzOwotICAgIHN0YXRpc3RpY3MucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zaXplKCkpOwotICAgIGZvciAoYXV0
byYgc3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAudmFsdWVzKCkpCi0gICAgICAg
IHN0YXRpc3RpY3MudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoc3RhdGlzdGljKSk7CisgICAgUGVy
U2Vzc2lvblJlc291cmNlTG9hZERhdGEgcGVyU2Vzc2lvblN0YXRpc3RpY3M7CiAKLSAgICBtX3Jl
c291cmNlU3RhdGlzdGljc01hcC5jbGVhcigpOworICAgIGZvciAoYXV0byYgaXRlciA6IG1fcGVy
U2Vzc2lvblJlc291cmNlU3RhdGlzdGljc01hcCkgeworICAgICAgICBWZWN0b3I8UmVzb3VyY2VM
b2FkU3RhdGlzdGljcz4gc3RhdGlzdGljczsKKyAgICAgICAgc3RhdGlzdGljcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGl0ZXIudmFsdWUtPnNpemUoKSk7CisKKyAgICAgICAgZm9yIChhdXRvJiBz
dGF0aXN0aWMgOiBpdGVyLnZhbHVlLT52YWx1ZXMoKSkKKyAgICAgICAgICAgIHN0YXRpc3RpY3Mu
dW5jaGVja2VkQXBwZW5kKFdURk1vdmUoc3RhdGlzdGljKSk7CisKKyAgICAgICAgcGVyU2Vzc2lv
blN0YXRpc3RpY3MuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGl0ZXIua2V5LCBXVEZNb3ZlKHN0YXRp
c3RpY3MpKSk7CisgICAgICAgIGl0ZXIudmFsdWUtPmNsZWFyKCk7CisgICAgfQogCi0gICAgcmV0
dXJuIHN0YXRpc3RpY3M7CisgICAgcmV0dXJuIHBlclNlc3Npb25TdGF0aXN0aWNzOwogfQogCiB2
b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpjbGVhclN0YXRlKCkKIHsKLSAgICBtX3Jlc291cmNl
U3RhdGlzdGljc01hcC5jbGVhcigpOworICAgIG1fcGVyU2Vzc2lvblJlc291cmNlU3RhdGlzdGlj
c01hcC5jbGVhcigpOwogICAgIG1fbGFzdFJlcG9ydGVkVXNlckludGVyYWN0aW9uTWFwLmNsZWFy
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRP
YnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgK
aW5kZXggZGUxYzk0YTcyY2Q0NzFjY2Y3ZjgyYjVhMmNiYjkxNzdkYjU2ODBiNy4uZGRmZWU3Mzhh
MzI2YWM5MWEwZTc4YzVhOTAyMmY1OWM1MjE4M2Y5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKQEAgLTU5LDYgKzU5LDcgQEAgc3RydWN0IFJlc291
cmNlTG9hZFN0YXRpc3RpY3M7CiBjbGFzcyBSZXNvdXJjZUxvYWRPYnNlcnZlciB7CiAgICAgZnJp
ZW5kIGNsYXNzIFdURjo6TmV2ZXJEZXN0cm95ZWQ8UmVzb3VyY2VMb2FkT2JzZXJ2ZXI+OwogcHVi
bGljOgorICAgIHVzaW5nIFBlclNlc3Npb25SZXNvdXJjZUxvYWREYXRhID0gVmVjdG9yPHN0ZDo6
cGFpcjxQQUw6OlNlc3Npb25JRCwgVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+Pj47CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlc291cmNlTG9hZE9ic2VydmVyJiBzaGFyZWQoKTsK
IAogICAgIHZvaWQgbG9nU3VicmVzb3VyY2VMb2FkaW5nKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVj
dFJlc3BvbnNlKTsKQEAgLTcxLDkgKzcyLDkgQEAgcHVibGljOgogICAgIHZvaWQgbG9nTmF2aWdh
dG9yQVBJQWNjZXNzZWQoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjpOYXZpZ2F0b3JBUEkpOwogICAgIHZvaWQgbG9nU2NyZWVuQVBJQWNjZXNzZWQoY29uc3Qg
RG9jdW1lbnQmLCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpTY3JlZW5BUEkpOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0YXRpc3RpY3NGb3JVUkwoY29uc3QgVVJMJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0YXRpc3RpY3NGb3JVUkwoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFVSTCYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdGF0aXN0aWNzVXBk
YXRlZENhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlz
dGljcz4mJik+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3RhdGlzdGljc1VwZGF0
ZWRDYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBlclNlc3Npb25SZXNvdXJjZUxvYWREYXRhJiYpPiYm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJP
cGVuZXJDYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYsIFBhZ2VJZGVudGlmaWVyLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpPiYm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExvZ1VzZXJJbnRlcmFjdGlvbk5vdGlmaWNh
dGlvbkNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJik+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TG9nV2ViU29ja2V0
TG9hZGluZ05vdGlmaWNhdGlvbkNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBXYWxs
VGltZSk+JiYpOwpAQCAtODksMTggKzkwLDE4IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRl
OgotICAgIGJvb2wgc2hvdWxkTG9nKGJvb2wgdXNlc0VwaGVtZXJhbFNlc3Npb24pIGNvbnN0Owot
ICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJl
Z2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgYm9vbCBzaG91
bGRMb2coUEFMOjpTZXNzaW9uSUQpIGNvbnN0OworICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3Mm
IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogCi0gICAgVmVjdG9yPFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M+IHRha2VTdGF0aXN0aWNzKCk7CisgICAgUGVyU2Vzc2lvblJlc291cmNlTG9h
ZERhdGEgdGFrZVN0YXRpc3RpY3MoKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNj
ZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIERvY3VtZW50JiBvcGVuZXJEb2N1bWVu
dCk7CiAjZW5kaWYKIAotICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M+IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwOworICAgIEhhc2hNYXA8UEFMOjpT
ZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzPj4+IG1fcGVyU2Vzc2lvblJlc291cmNlU3RhdGlzdGljc01hcDsK
ICAgICBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBXVEY6OldhbGxUaW1lPiBtX2xhc3RSZXBv
cnRlZFVzZXJJbnRlcmFjdGlvbk1hcDsKLSAgICBGdW5jdGlvbjx2b2lkKFZlY3RvcjxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPiYmKT4gbV9ub3RpZmljYXRpb25DYWxsYmFjazsKKyAgICBGdW5jdGlv
bjx2b2lkKFBlclNlc3Npb25SZXNvdXJjZUxvYWREYXRhKT4gbV9ub3RpZmljYXRpb25DYWxsYmFj
azsKICAgICBGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYsIFBhZ2VJZGVudGlmaWVyLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpPiBtX3JlcXVl
c3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjazsKICAgICBGdW5jdGlvbjx2b2lkKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpPiBtX2xvZ1VzZXJJbnRlcmFj
dGlvbk5vdGlmaWNhdGlvbkNhbGxiYWNrOwogICAgIEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBX
YWxsVGltZSk+IG1fbG9nV2ViU29ja2V0TG9hZGluZ05vdGlmaWNhdGlvbkNhbGxiYWNrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDM2ZTdkNjljM2RiNmNiOGZlNjljMmYw
MWU5NTJlZjk0YzhjMDcyODIuLjAyZTA3YWE0ODc1YzBjYjEzYTVhZWE0MDM5NjNmZjgwOGEwNzdm
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTQ0MzQsNyArNDQzNCwx
MSBAQCBKU1ZhbHVlIEludGVybmFsczo6Y2xvbmVBcnJheUJ1ZmZlcihKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgYnVmZmVyLCBKU1ZhbAogCiBTdHJpbmcgSW50ZXJuYWxzOjpyZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRm9yVVJMKGNvbnN0IERPTVVSTCYgdXJsKQogewotICAgIHJldHVybiBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc3RhdGlzdGljc0ZvclVSTCh1cmwuaHJlZigp
KTsKKyAgICBhdXRvKiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOworICAgIGlmICghZG9j
dW1lbnQpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgcmV0dXJuIFJlc291
cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zdGF0aXN0aWNzRm9yVVJMKGRvY3VtZW50LT5zZXNz
aW9uSUQoKSwgdXJsLmhyZWYoKSk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggOWIxMTI3OTEyMzc3YmYzM2E4OWE3NTg1NmNlNWI1OGEzMmVjNWI1Yi4uNGVhY2Zh
MDYyZjBkMDkyYjA5YmExYjMxOTZhN2ZjZWY4ZjM2MGVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlTG9hZE9ic2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRlSW5mby5oPgpAQCAtNzEyLDE0ICs3MTMsMTQgQEAgdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bG9nU3VicmVzb3VyY2VSZWRpcmVjdChQ
QUw6OlNlc3Npb25JRCBzZXNzaW8KICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmIHN0YXRpc3RpY3MpCit2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6UGVyU2Vzc2lvblJlc291cmNlTG9hZERhdGEmJiBzdGF0aXN0aWNzKQog
ewotICAgIGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vz
c2lvbkJ5Q29ubmVjdGlvbihjb25uZWN0aW9uKCkpOwotICAgIGlmICghbmV0d29ya1Nlc3Npb24p
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
ID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoV1RGTW92
ZShzdGF0aXN0aWNzKSk7CisgICAgZm9yIChhdXRvJiBpdGVyIDogc3RhdGlzdGljcykgeworICAg
ICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtT
ZXNzaW9uKGl0ZXIuZmlyc3QpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisg
ICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cmVzb3VyY2VMb2FkU3RhdGlz
dGljc1VwZGF0ZWQoV1RGTW92ZShpdGVyLnNlY29uZCkpOworICAgICAgICB9CisgICAgfQogfQog
CiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1l
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
aW5kZXggMGFhMDJkMzI4MmRjMTc5NzE2Y2IyYmY2ZDZjZDc5Njc4MmFmZDQzNi4uMDU1OGQ3MWNj
MmZlOTFkNDZhNTM3YWU1MjNjNzk5Y2MwNjVjNTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgUEFMIHsK
QEAgLTIyMiw3ICsyMjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9nV2ViU29ja2V0TG9hZGlu
ZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2Vl
bik7CiAgICAgdm9pZCBsb2dTdWJyZXNvdXJjZUxvYWRpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0YXJnZXREb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiB0b3BGcmFtZURvbWFpbiwgV2FsbFRpbWUgbGFzdFNlZW4pOwogICAgIHZvaWQgbG9nU3VicmVz
b3VyY2VSZWRpcmVjdChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHNv
dXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbik7Ci0gICAg
dm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcz4mJik7CisgICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBk
YXRlZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6UGVyU2Vzc2lvblJlc291cmNlTG9h
ZERhdGEmJik7CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9p
ZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQs
IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwogICAgIHZvaWQgcmVx
dWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBv
cGVuZXJEb21haW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
aW5kZXggZmQ0YjI0OGM0N2U2NjhhNzdlZmNkNzIwZWFkMmQ2ZjU2NGFjYWEzNy4uNmVlMjJkMzM0
MGYwNWRmMzUyYjI3ZDA1OTJjNTc3ZDRlMzUwNTlkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC02NCw3ICs2NCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBMb2dXZWJTb2Nr
ZXRMb2FkaW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gdGFyZ2V0RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURv
bWFpbiwgV2FsbFRpbWUgbGFzdFNlZW4pCiAgICAgTG9nU3VicmVzb3VyY2VMb2FkaW5nKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdGFyZ2V0RG9t
YWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2FsbFRpbWUg
bGFzdFNlZW4pCiAgICAgTG9nU3VicmVzb3VyY2VSZWRpcmVjdChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHNvdXJjZURvbWFpbiwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gdGFyZ2V0RG9tYWluKQotICAgIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBzdGF0aXN0
aWNzKQorICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxzdGQ6OnBhaXI8
UEFMOjpTZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPj4+
IHN0YXRpc3RpY3MpCiAgICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3Rv
cmFnZUFjY2VzcykgQXN5bmMKICAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGVu
dW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBlbnVt
OmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3du
KSBBc3luYwogICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWluKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCmluZGV4IDc0ZjU5YzIyMzYwOGI0ZWUyN2JkZjc5OTcyOWQwNDVmNzg4
OWM2YTQuLjAzNjAzMmU0MjU5NzVlODU3OTAxNDg1ZGY5ZjQ5Zjk4NTM5ODNkNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTIxNyw3ICsyMTcsNyBAQCBXZWJQ
cm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5h
ZGQoUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgSGFzaE1hcDx1bnNpZ25lZCwg
V2FsbFRpbWU+KCkpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAg
ICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc2V0U3RhdGlzdGljc1VwZGF0ZWRDYWxs
YmFjayhbdGhpc10gKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmIHN0YXRpc3RpY3Mp
IHsKKyAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc2V0U3RhdGlzdGljc1VwZGF0
ZWRDYWxsYmFjayhbdGhpc10gKGF1dG8mJiBzdGF0aXN0aWNzKSB7CiAgICAgICAgIGVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQo
V1RGTW92ZShzdGF0aXN0aWNzKSksIDApOwogICAgIH0pOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377133</attachid>
            <date>2019-08-23 10:27:03 -0700</date>
            <delta_ts>2019-08-23 11:14:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198923-20190823102702.patch</filename>
            <type>text/plain</type>
            <size>26678</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4OTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjYwZmI1YTM3MzlkMTMz
MmUyZDc1MDQzMzk0MGZmYjk2ODkzZTYwZi4uMzAxZDBkYmY4NzEzYTc4NjQ4OTViYjVlODEyNjUy
Mjc1ZTA1MzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTA4LTIzICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQg
SVRQIG9uIGEgcGVyLXNlc3Npb24gYmFzaXMgKDE5ODkyMykKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODkyMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggdXBkYXRlZCB0aGUgZGF0YSBz
dHJ1Y3R1cmUgdXNlZCB0byBjb2xsZWN0IHJlc291cmNlIGxvYWQKKyAgICAgICAgc3RhdGlzdGlj
cyBpbiBvcmRlciB0byBzdXBwb3J0IElUUCBkYXRhIGNvbGxlY3Rpb24gb24gYSBwZXIgc2Vzc2lv
bgorICAgICAgICBiYXNpcy4gRWFjaCBzZXNzaW9uSUQgaXMgc3RvcmVkIGFzIGEga2V5LXZhbHVl
IHBhaXIgd2l0aCBpdHMgb3duIG1hcAorICAgICAgICBvZiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LgorCisgICAgICAgIEl0IGFsc28gdXBkYXRlZCB0aGUgc3RhdGlzdGljc0ZvclVSTCBmdW5jdGlv
biBjYWxsIHRvIHBlcmZvcm0gbG9va3VwcworICAgICAgICBvZiBVUkwgZGF0YSBiYXNlZCBvbiBz
ZXNzaW9uSUQuCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NVcGRh
dGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
b3VsZExvZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
bG9nU3VicmVzb3VyY2VMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9i
c2VydmVyOjpsb2dXZWJTb2NrZXRMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGb250TG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nQ2FudmFzUmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nQ2FudmFzV3JpdGVP
ck1lYXN1cmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ05h
dmlnYXRvckFQSUFjY2Vzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2Vy
dmVyOjpsb2dTY3JlZW5BUElBY2Nlc3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4p
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnN0YXRpc3RpY3NGb3JV
UkwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnRha2VTdGF0aXN0
aWNzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpjbGVhclN0YXRl
KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlc291
cmNlTG9hZFN0YXRpc3RpY3NGb3JVUkwpOgorCiAyMDE5LTA4LTE2ICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFRoZSBkZWZhdWx0IHRhYiBpbmRleCBvZiBvdXRw
dXQgYW5kIGZpZWxkc2V0IHNob3VsZCBiZSAtMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhZWViNWI5MDE5OGNjOTEz
MTZjOWU4ZTZkMWM0ZjMzNmIwZTRhYzk1Li5lYjAyYThlMGQwZjZlYTRkNzJiNzJhODYwNzhmNDBm
OGM2OGViODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTA4LTIzICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgSVRQ
IG9uIGEgcGVyLXNlc3Npb24gYmFzaXMgKDE5ODkyMykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODkyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiBvZiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZAorICAgICAgICBkaWQgbm90IGFsbG93IGZvciBJ
VFAgb24gYSBwZXIgc2Vzc2lvbiBiYXNpcyBkdWUgdG8gdGhlIHNlc3Npb25JRAorICAgICAgICBu
b3QgYmVpbmcgcGFzc2VkIHRvIHRoZSByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZCBmdW5j
dGlvbi4KKyAgICAgICAgVGhpcyBwYXRjaCBhbGxvd3MgYWNjZXNzIG9mIHRoZSBjb3JyZWN0IG5l
dHdvcmtTZXNzaW9uIGJ5IHBhc3NpbmcKKyAgICAgICAgYWxsIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgaW4gYSBuZXcgZGF0YSBzdHJ1Y3R1cmUgb2Yga2V5LXZhbHVlCisgICAgICAgIHBhaXJzLCB3
aGVyZSB0aGUgc2Vzc2lvbklEIGlzIHRoZSBrZXkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRl
ZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAyMDE5LTA4LTIw
ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtGVFddIEZp
eCBzY3JvbGxpbmcgaW4gbW9kZXJuIFdlYktpdCB2aWV3cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKaW5kZXggZmZhZGExYzQ1YmU0NjZiN2ZhZGNm
ZDA2OTEwMTMyNWVjYTM5ZDU1Ni4uNzJiYmQ5Mzc5Mjc0MDM4MDliZWVmMTk0M2E1ODAwNjNhMjNk
ZmE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
Y3BwCkBAIC01NCwxMyArNTQsMTMgQEAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXImIFJlc291cmNlTG9h
ZE9ic2VydmVyOjpzaGFyZWQoKQogICAgIHJldHVybiByZXNvdXJjZUxvYWRPYnNlcnZlcjsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U3RhdGlzdGljc1VwZGF0ZWRDYWxsYmFj
ayhXVEY6OkZ1bmN0aW9uPHZvaWQoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpPiYm
IG5vdGlmaWNhdGlvbkNhbGxiYWNrKQordm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U3Rh
dGlzdGljc1VwZGF0ZWRDYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBlclNlc3Npb25SZXNvdXJjZUxv
YWREYXRhJiYpPiYmIG5vdGlmaWNhdGlvbkNhbGxiYWNrKQogewogICAgIEFTU0VSVCghbV9ub3Rp
ZmljYXRpb25DYWxsYmFjayk7CiAgICAgbV9ub3RpZmljYXRpb25DYWxsYmFjayA9IFdURk1vdmUo
bm90aWZpY2F0aW9uQ2FsbGJhY2spOwogfQogCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpz
ZXRSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2
b2lkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRv
bWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVyRG9tYWluKT4mJiBjYWxsYmFjaykKK3ZvaWQg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJD
YWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZp
ZXIgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVyRG9tYWluKT4m
JiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoIW1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lckNhbGxiYWNrKTsKICAgICBtX3JlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwpAQCAtOTUsOSArOTUsOSBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgaXMzeHhSZWRpcmVjdChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAg
ICByZXR1cm4gcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSAzMDAgJiYgcmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSA8PSAzOTk7CiB9CiAKLWJvb2wgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
b3VsZExvZyhib29sIHVzZXNFcGhlbWVyYWxTZXNzaW9uKSBjb25zdAorYm9vbCBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2hvdWxkTG9nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgY29uc3QKIHsK
LSAgICByZXR1cm4gRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpyZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZCgpICYmICF1c2VzRXBoZW1lcmFsU2Vzc2lvbiAmJiBtX25vdGlmaWNhdGlvbkNh
bGxiYWNrOworICAgIHJldHVybiBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKCkgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIG1fbm90
aWZpY2F0aW9uQ2FsbGJhY2s7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1
YnJlc291cmNlTG9hZGluZyhjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkK
QEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNv
dXJjZUxvYWRpbmcoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdQogICAgICAgICByZXR1
cm47CiAKICAgICBhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UgfHwg
IXNob3VsZExvZyhwYWdlLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKSkKKyAgICBpZiAoIXBhZ2Ug
fHwgIXNob3VsZExvZyhwYWdlLT5zZXNzaW9uSUQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGJvb2wgaXNSZWRpcmVjdCA9IGlzM3h4UmVkaXJlY3QocmVkaXJlY3RSZXNwb25zZSk7CkBAIC0x
MzAsNyArMTMwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VM
b2FkaW5nKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3UKICAgICAgICAgcmV0dXJuOwog
CiAgICAgewotICAgICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VT
dGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4odGFyZ2V0RG9tYWluKTsKKyAgICAgICAgYXV0
byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJh
YmxlRG9tYWluKHBhZ2UtPnNlc3Npb25JRCgpLCB0YXJnZXREb21haW4pOwogICAgICAgICBhdXRv
IGxhc3RTZWVuID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6cmVkdWNlVGltZVJlc29sdXRpb24o
V2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgdGFyZ2V0U3RhdGlzdGljcy5sYXN0U2VlbiA9IGxh
c3RTZWVuOwogICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbnMuYWRkKHRvcEZyYW1lRG9tYWluKTsKQEAgLTEzOSw5ICsxMzksOSBAQCB2b2lkIFJl
c291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjZUxvYWRpbmcoY29uc3QgRnJhbWUqIGZy
YW1lLCBjb25zdCBSZXNvdQogICAgIH0KIAogICAgIGlmIChpc1JlZGlyZWN0KSB7Ci0gICAgICAg
IGF1dG8mIHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlz
dGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZGlyZWN0ZWRGcm9tRG9tYWluKTsKKyAgICAgICAg
YXV0byYgcmVkaXJlY3RpbmdPcmlnaW5TdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0
aWNzRm9yUmVnaXN0cmFibGVEb21haW4ocGFnZS0+c2Vzc2lvbklEKCksIHJlZGlyZWN0ZWRGcm9t
RG9tYWluKTsKICAgICAgICAgcmVkaXJlY3RpbmdPcmlnaW5TdGF0aXN0aWNzLnN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RzVG8uYWRkKHRhcmdldERvbWFpbik7Ci0gICAgICAgIGF1dG8mIHRhcmdl
dFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFp
bih0YXJnZXREb21haW4pOworICAgICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJl
UmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4ocGFnZS0+c2Vzc2lvbklEKCks
IHRhcmdldERvbWFpbik7CiAgICAgICAgIHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNGcm9tLmFkZChyZWRpcmVjdGVkRnJvbURvbWFpbik7CiAKICAgICAgICAgbV9s
b2dTdWJyZXNvdXJjZVJlZGlyZWN0Tm90aWZpY2F0aW9uQ2FsbGJhY2socGFnZS0+c2Vzc2lvbklE
KCksIHJlZGlyZWN0ZWRGcm9tRG9tYWluLCB0YXJnZXREb21haW4pOwpAQCAtMTUwLDcgKzE1MCw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZyhjb25z
dCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291CiAKIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OmxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgVVJMJiB0YXJnZXRVUkwsIGNvbnN0IFVSTCYgbWFp
bkZyYW1lVVJMLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgaWYgKCFzaG91bGRM
b2coc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpKQorICAgIGlmICghc2hvdWxkTG9nKHNlc3Npb25J
RCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gdGFyZ2V0SG9zdCA9IHRhcmdldFVSTC5o
b3N0KCk7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9n
V2ViU29ja2V0TG9hZGluZyhjb25zdCBVUkwmIHRhcmdldFVSTCwgY29uc3QgVVJMJgogCiAgICAg
YXV0byBsYXN0U2VlbiA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnJlZHVjZVRpbWVSZXNvbHV0
aW9uKFdhbGxUaW1lOjpub3coKSk7CiAKLSAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5z
dXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4odGFyZ2V0RG9tYWluKTsK
KyAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9y
UmVnaXN0cmFibGVEb21haW4oc2Vzc2lvbklELCB0YXJnZXREb21haW4pOwogICAgIHRhcmdldFN0
YXRpc3RpY3MubGFzdFNlZW4gPSBsYXN0U2VlbjsKICAgICB0YXJnZXRTdGF0aXN0aWNzLnN1YnJl
c291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMuYWRkKHRvcEZyYW1lRG9tYWluKTsKIApAQCAtMTc2
LDcgKzE3Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1dlYlNvY2tldExvYWRp
bmcoY29uc3QgVVJMJiB0YXJnZXRVUkwsIGNvbnN0IFVSTCYKIAogdm9pZCBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25z
dCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgaWYgKCFkb2N1bWVudC5zZXNzaW9uSUQoKS5p
c1ZhbGlkKCkgfHwgIXNob3VsZExvZyhkb2N1bWVudC5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgp
KSkKKyAgICBpZiAoIWRvY3VtZW50LnNlc3Npb25JRCgpLmlzVmFsaWQoKSB8fCAhc2hvdWxkTG9n
KGRvY3VtZW50LnNlc3Npb25JRCgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgdXJs
ID0gZG9jdW1lbnQudXJsKCk7CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25z
dCBEb2MKIAogICAgIG1fbGFzdFJlcG9ydGVkVXNlckludGVyYWN0aW9uTWFwLnNldCh0b3BGcmFt
ZURvbWFpbiwgbmV3VGltZSk7CiAKLSAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3Vy
Y2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4odG9wRnJhbWVEb21haW4pOworICAgIGF1
dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURv
bWFpbihkb2N1bWVudC5zZXNzaW9uSUQoKSwgdG9wRnJhbWVEb21haW4pOwogICAgIHN0YXRpc3Rp
Y3MuaGFkVXNlckludGVyYWN0aW9uID0gdHJ1ZTsKICAgICBzdGF0aXN0aWNzLmxhc3RTZWVuID0g
bmV3VGltZTsKICAgICBzdGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0g
bmV3VGltZTsKQEAgLTI1MSwxMCArMjUxLDEwIEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvCiB2
b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGb250TG9hZChjb25zdCBEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZSwgYm9vbCBsb2FkU3RhdHVzKQogewogI2lm
IEVOQUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCi0gICAgaWYgKCFzaG91bGRMb2coZG9jdW1lbnQu
c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkpCisgICAgaWYgKCFzaG91bGRMb2coZG9jdW1lbnQu
c2Vzc2lvbklEKCkpKQogICAgICAgICByZXR1cm47CiAgICAgUmVnaXN0cmFibGVEb21haW4gcmVn
aXN0cmFibGVEb21haW4geyBkb2N1bWVudC51cmwoKSB9OwotICAgIGF1dG8mIHN0YXRpc3RpY3Mg
PSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJs
ZURvbWFpbik7CisgICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGlj
c0ZvclJlZ2lzdHJhYmxlRG9tYWluKGRvY3VtZW50LnNlc3Npb25JRCwgcmVnaXN0cmFibGVEb21h
aW4pOwogICAgIGJvb2wgc2hvdWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gZmFsc2U7CiAg
ICAgaWYgKCFsb2FkU3RhdHVzKSB7CiAgICAgICAgIGlmIChzdGF0aXN0aWNzLmZvbnRzRmFpbGVk
VG9Mb2FkLmFkZChmYW1pbHlOYW1lKS5pc05ld0VudHJ5KQpAQCAtMjc4LDEwICsyNzgsMTAgQEAg
dm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nRm9udExvYWQoY29uc3QgRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBTdHJpbmcmIGYKIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0Nh
bnZhc1JlYWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewogI2lmIEVOQUJMRShXRUJfQVBJ
X1NUQVRJU1RJQ1MpCi0gICAgaWYgKCFzaG91bGRMb2coZG9jdW1lbnQuc2Vzc2lvbklEKCkuaXNF
cGhlbWVyYWwoKSkpCisgICAgaWYgKCFzaG91bGRMb2coZG9jdW1lbnQuc2Vzc2lvbklEKCkpKQog
ICAgICAgICByZXR1cm47CiAgICAgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4g
eyBkb2N1bWVudC51cmwoKSB9OwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJj
ZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAg
YXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxl
RG9tYWluKGRvY3VtZW50LnNlc3Npb25JRCgpLCByZWdpc3RyYWJsZURvbWFpbik7CiAgICAgUmVn
aXN0cmFibGVEb21haW4gbWFpbkZyYW1lUmVnaXN0cmFibGVEb21haW4geyBkb2N1bWVudC50b3BE
b2N1bWVudCgpLnVybCgpIH07CiAgICAgc3RhdGlzdGljcy5jYW52YXNBY3Rpdml0eVJlY29yZC53
YXNEYXRhUmVhZCA9IHRydWU7CiAgICAgaWYgKHN0YXRpc3RpY3MudG9wRnJhbWVSZWdpc3RyYWJs
ZURvbWFpbnNXaGljaEFjY2Vzc2VkV2ViQVBJcy5hZGQobWFpbkZyYW1lUmVnaXN0cmFibGVEb21h
aW4uc3RyaW5nKCkpLmlzTmV3RW50cnkpCkBAIC0yOTQsMTAgKzI5NCwxMCBAQCB2b2lkIFJlc291
cmNlTG9hZE9ic2VydmVyOjpsb2dDYW52YXNSZWFkKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkK
IHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0NhbnZhc1dyaXRlT3JNZWFzdXJlKGNvbnN0
IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0V3JpdHRlbikKIHsKICNpZiBF
TkFCTEUoV0VCX0FQSV9TVEFUSVNUSUNTKQotICAgIGlmICghc2hvdWxkTG9nKGRvY3VtZW50LnNl
c3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpKQorICAgIGlmICghc2hvdWxkTG9nKGRvY3VtZW50LnNl
c3Npb25JRCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lz
dHJhYmxlRG9tYWluIHsgZG9jdW1lbnQudXJsKCkgfTsKLSAgICBhdXRvJiBzdGF0aXN0aWNzID0g
ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVE
b21haW4pOworICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JSZWdpc3RyYWJsZURvbWFpbihkb2N1bWVudC5zZXNzaW9uSUQsIHJlZ2lzdHJhYmxlRG9tYWlu
KTsKICAgICBib29sIHNob3VsZENhbGxOb3RpZmljYXRpb25DYWxsYmFjayA9IGZhbHNlOwogICAg
IFJlZ2lzdHJhYmxlRG9tYWluIG1haW5GcmFtZVJlZ2lzdHJhYmxlRG9tYWluIHsgZG9jdW1lbnQu
dG9wRG9jdW1lbnQoKS51cmwoKSB9OwogICAgIGlmIChzdGF0aXN0aWNzLmNhbnZhc0FjdGl2aXR5
UmVjb3JkLnJlY29yZFdyaXR0ZW5Pck1lYXN1cmVkVGV4dCh0ZXh0V3JpdHRlbikpCkBAIC0zMTUs
MTAgKzMxNSwxMCBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dDYW52YXNXcml0ZU9y
TWVhc3VyZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbgogdm9pZCBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6bG9nTmF2aWdhdG9yQVBJQWNjZXNzZWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpOYXZpZ2F0b3JBUEkgZnVuY3Rpb25OYW1l
KQogewogI2lmIEVOQUJMRShXRUJfQVBJX1NUQVRJU1RJQ1MpCi0gICAgaWYgKCFzaG91bGRMb2co
ZG9jdW1lbnQuc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkpCisgICAgaWYgKCFzaG91bGRMb2co
ZG9jdW1lbnQuc2Vzc2lvbklEKCkpKQogICAgICAgICByZXR1cm47CiAgICAgUmVnaXN0cmFibGVE
b21haW4gcmVnaXN0cmFibGVEb21haW4geyBkb2N1bWVudC51cmwoKSB9OwotICAgIGF1dG8mIHN0
YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihy
ZWdpc3RyYWJsZURvbWFpbik7CisgICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNl
U3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGRvY3VtZW50LnNlc3Npb25JRCwgcmVnaXN0
cmFibGVEb21haW4pOwogICAgIGJvb2wgc2hvdWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxiYWNrID0g
ZmFsc2U7CiAgICAgaWYgKCFzdGF0aXN0aWNzLm5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2VkLmNv
bnRhaW5zKGZ1bmN0aW9uTmFtZSkpIHsKICAgICAgICAgc3RhdGlzdGljcy5uYXZpZ2F0b3JGdW5j
dGlvbnNBY2Nlc3NlZC5hZGQoZnVuY3Rpb25OYW1lKTsKQEAgLTMzOCwxMCArMzM4LDEwIEBAIHZv
aWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ05hdmlnYXRvckFQSUFjY2Vzc2VkKGNvbnN0IERv
Y3VtZW50JiBkb2N1bWVudCwgY29uCiB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTY3Jl
ZW5BUElBY2Nlc3NlZChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M6OlNjcmVlbkFQSSBmdW5jdGlvbk5hbWUpCiB7CiAjaWYgRU5BQkxFKFdFQl9B
UElfU1RBVElTVElDUykKLSAgICBpZiAoIXNob3VsZExvZyhkb2N1bWVudC5zZXNzaW9uSUQoKS5p
c0VwaGVtZXJhbCgpKSkKKyAgICBpZiAoIXNob3VsZExvZyhkb2N1bWVudC5zZXNzaW9uSUQoKSkp
CiAgICAgICAgIHJldHVybjsKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFp
biB7IGRvY3VtZW50LnVybCgpIH07Ci0gICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAg
ICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFi
bGVEb21haW4oZG9jdW1lbnQuc2Vzc2lvbklELCByZWdpc3RyYWJsZURvbWFpbik7CiAgICAgYm9v
bCBzaG91bGRDYWxsTm90aWZpY2F0aW9uQ2FsbGJhY2sgPSBmYWxzZTsKICAgICBpZiAoIXN0YXRp
c3RpY3Muc2NyZWVuRnVuY3Rpb25zQWNjZXNzZWQuY29udGFpbnMoZnVuY3Rpb25OYW1lKSkgewog
ICAgICAgICBzdGF0aXN0aWNzLnNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkLmFkZChmdW5jdGlvbk5h
bWUpOwpAQCAtMzU4LDEyICszNTgsMTYgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9n
U2NyZWVuQVBJQWNjZXNzZWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdAogI2VuZGlm
CiB9CiAgICAgCi1SZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbikKK1Jlc291cmNlTG9hZFN0YXRpc3RpY3MmIFJlc291cmNlTG9h
ZE9ic2VydmVyOjplbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4p
CiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbnN1cmUo
ZG9tYWluLCBbJmRvbWFpbl0geworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9wZXJTZXNzaW9uUmVz
b3VyY2VTdGF0aXN0aWNzTWFwLmVuc3VyZShzZXNzaW9uSUQsIFtdIHsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8SGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVzb3VyY2VMb2FkU3RhdGlz
dGljcz4+KCk7CisgICAgfSk7CisKKyAgICBhdXRvIGFkZERvbWFpblJlc3VsdCA9IGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUtPmVuc3VyZShkb21haW4sIFsmZG9tYWluXSB7CiAgICAgICAgIHJl
dHVybiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKGRvbWFpbik7CiAgICAgfSk7Ci0gICAgcmV0dXJu
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgcmV0dXJuIGFkZERvbWFpblJlc3VsdC5p
dGVyYXRvci0+dmFsdWU7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnVwZGF0ZUNl
bnRyYWxTdGF0aXN0aWNzU3RvcmUoKQpAQCAtMzcxLDMwICszNzUsNDAgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6dXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSgpCiAgICAgbV9ub3Rp
ZmljYXRpb25DYWxsYmFjayh0YWtlU3RhdGlzdGljcygpKTsKIH0KIAotU3RyaW5nIFJlc291cmNl
TG9hZE9ic2VydmVyOjpzdGF0aXN0aWNzRm9yVVJMKGNvbnN0IFVSTCYgdXJsKQorU3RyaW5nIFJl
c291cmNlTG9hZE9ic2VydmVyOjpzdGF0aXN0aWNzRm9yVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgYXV0byBpdGVyID0gbV9yZXNvdXJjZVN0YXRp
c3RpY3NNYXAuZmluZChSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9KTsKLSAgICBpZiAoaXRlciA9
PSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSkKKyAgICBhdXRvKiByZXNvdXJjZVN0YXRp
c3RpY3NCeURvbWFpbiA9IG1fcGVyU2Vzc2lvblJlc291cmNlU3RhdGlzdGljc01hcC5nZXQoc2Vz
c2lvbklEKTsKKyAgICBpZiAoIXJlc291cmNlU3RhdGlzdGljc0J5RG9tYWluKQorICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIGF1dG8gaXRlciA9IHJlc291cmNlU3RhdGlzdGlj
c0J5RG9tYWluLT5maW5kKFJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH0pOworICAgIGlmIChpdGVy
ID09IHJlc291cmNlU3RhdGlzdGljc0J5RG9tYWluLT5lbmQoKSkKICAgICAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CiAKICAgICByZXR1cm4gbWFrZVN0cmluZygiU3RhdGlzdGljcyBmb3IgIiwg
dXJsLmhvc3QoKS50b1N0cmluZygpLCAiOlxuIiwgaXRlci0+dmFsdWUudG9TdHJpbmcoKSk7CiB9
CiAKLVZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
dGFrZVN0YXRpc3RpY3MoKQorYXV0byBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6dGFrZVN0YXRpc3Rp
Y3MoKSAtPiBQZXJTZXNzaW9uUmVzb3VyY2VMb2FkRGF0YQogewotICAgIFZlY3RvcjxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPiBzdGF0aXN0aWNzOwotICAgIHN0YXRpc3RpY3MucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zaXplKCkpOwotICAgIGZvciAoYXV0
byYgc3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAudmFsdWVzKCkpCi0gICAgICAg
IHN0YXRpc3RpY3MudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoc3RhdGlzdGljKSk7CisgICAgUGVy
U2Vzc2lvblJlc291cmNlTG9hZERhdGEgcGVyU2Vzc2lvblN0YXRpc3RpY3M7CiAKLSAgICBtX3Jl
c291cmNlU3RhdGlzdGljc01hcC5jbGVhcigpOworICAgIGZvciAoYXV0byYgaXRlciA6IG1fcGVy
U2Vzc2lvblJlc291cmNlU3RhdGlzdGljc01hcCkgeworICAgICAgICBWZWN0b3I8UmVzb3VyY2VM
b2FkU3RhdGlzdGljcz4gc3RhdGlzdGljczsKKyAgICAgICAgc3RhdGlzdGljcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGl0ZXIudmFsdWUtPnNpemUoKSk7CiAKLSAgICByZXR1cm4gc3RhdGlzdGlj
czsKKyAgICAgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBpdGVyLnZhbHVlLT52YWx1ZXMoKSkK
KyAgICAgICAgICAgIHN0YXRpc3RpY3MudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoc3RhdGlzdGlj
KSk7CisKKyAgICAgICAgcGVyU2Vzc2lvblN0YXRpc3RpY3MuYXBwZW5kKHN0ZDo6bWFrZV9wYWly
KGl0ZXIua2V5LCBXVEZNb3ZlKHN0YXRpc3RpY3MpKSk7CisgICAgfQorICAgIAorICAgIG1fcGVy
U2Vzc2lvblJlc291cmNlU3RhdGlzdGljc01hcC5jbGVhcigpOworICAgIHJldHVybiBwZXJTZXNz
aW9uU3RhdGlzdGljczsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y2xlYXJTdGF0
ZSgpCiB7Ci0gICAgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuY2xlYXIoKTsKKyAgICBtX3BlclNl
c3Npb25SZXNvdXJjZVN0YXRpc3RpY3NNYXAuY2xlYXIoKTsKICAgICBtX2xhc3RSZXBvcnRlZFVz
ZXJJbnRlcmFjdGlvbk1hcC5jbGVhcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4IGRlMWM5NGE3MmNkNDcxY2NmN2Y4MmI1YTJjYmI5
MTc3ZGI1NjgwYjcuLmRkZmVlNzM4YTMyNmFjOTFhMGU3OGM1YTkwMjJmNTljNTIxODNmOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCkBAIC01OSw2
ICs1OSw3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogY2xhc3MgUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIgewogICAgIGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVkPFJlc291
cmNlTG9hZE9ic2VydmVyPjsKIHB1YmxpYzoKKyAgICB1c2luZyBQZXJTZXNzaW9uUmVzb3VyY2VM
b2FkRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8UEFMOjpTZXNzaW9uSUQsIFZlY3RvcjxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPj4+OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZXNvdXJjZUxv
YWRPYnNlcnZlciYgc2hhcmVkKCk7CiAKICAgICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhj
b25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CkBAIC03MSw5ICs3Miw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGxvZ05hdmlnYXRvckFQSUFjY2Vzc2VkKGNvbnN0IERvY3VtZW50JiwgY29u
c3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6TmF2aWdhdG9yQVBJKTsKICAgICB2b2lkIGxvZ1Nj
cmVlbkFQSUFjY2Vzc2VkKGNvbnN0IERvY3VtZW50JiwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlz
dGljczo6U2NyZWVuQVBJKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0aXN0aWNz
Rm9yVVJMKGNvbnN0IFVSTCYpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0aXN0aWNz
Rm9yVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0U3RhdGlzdGljc1VwZGF0ZWRDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoVmVj
dG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFN0YXRpc3RpY3NVcGRhdGVkQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQZXJTZXNzaW9u
UmVzb3VyY2VMb2FkRGF0YSYmKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZXF1
ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBQYWdlSWRlbnRpZmllciwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dV
c2VySW50ZXJhY3Rpb25Ob3RpZmljYXRpb25DYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldExvZ1dlYlNvY2tldExvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjayhGdW5jdGlv
bjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiYmKTsKQEAgLTg5LDE4ICs5MCwxOCBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBib29sIHNob3VsZExvZyhib29sIHVzZXNFcGhl
bWVyYWxTZXNzaW9uKSBjb25zdDsKLSAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBlbnN1cmVS
ZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYpOworICAgIGJvb2wgc2hvdWxkTG9nKFBBTDo6U2Vzc2lvbklEKSBjb25zdDsKKyAgICBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3Ry
YWJsZURvbWFpbihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKIAot
ICAgIFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiB0YWtlU3RhdGlzdGljcygpOworICAg
IFBlclNlc3Npb25SZXNvdXJjZUxvYWREYXRhIHRha2VTdGF0aXN0aWNzKCk7CiAKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nl
c3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRv
bWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBE
b2N1bWVudCYgb3BlbmVyRG9jdW1lbnQpOwogI2VuZGlmCiAKLSAgICBIYXNoTWFwPFJlZ2lzdHJh
YmxlRG9tYWluLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBtX3Jlc291cmNlU3RhdGlzdGljc01h
cDsKKyAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8SGFzaE1hcDxS
ZWdpc3RyYWJsZURvbWFpbiwgUmVzb3VyY2VMb2FkU3RhdGlzdGljcz4+PiBtX3BlclNlc3Npb25S
ZXNvdXJjZVN0YXRpc3RpY3NNYXA7CiAgICAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV1RG
OjpXYWxsVGltZT4gbV9sYXN0UmVwb3J0ZWRVc2VySW50ZXJhY3Rpb25NYXA7Ci0gICAgRnVuY3Rp
b248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik+IG1fbm90aWZpY2F0aW9u
Q2FsbGJhY2s7CisgICAgRnVuY3Rpb248dm9pZChQZXJTZXNzaW9uUmVzb3VyY2VMb2FkRGF0YSk+
IG1fbm90aWZpY2F0aW9uQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBQYWdlSWRlbnRpZmllciwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mKT4gbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7
CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mKT4gbV9sb2dVc2VySW50ZXJhY3Rpb25Ob3RpZmljYXRpb25DYWxsYmFjazsKICAgICBGdW5j
dGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiBtX2xvZ1dlYlNvY2tldExvYWRpbmdOb3Rp
ZmljYXRpb25DYWxsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAz
NmU3ZDY5YzNkYjZjYjhmZTY5YzJmMDFlOTUyZWY5NGM4YzA3MjgyLi4wMmUwN2FhNDg3NWMwY2Ix
M2E1YWVhNDAzOTYzZmY4MDhhMDc3ZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCkBAIC00NDM0LDcgKzQ0MzQsMTEgQEAgSlNWYWx1ZSBJbnRlcm5hbHM6OmNsb25lQXJyYXlC
dWZmZXIoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIGJ1ZmZlciwgSlNWYWwKIAogU3Ry
aW5nIEludGVybmFsczo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclVSTChjb25zdCBET01VUkwm
IHVybCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnN0YXRp
c3RpY3NGb3JVUkwodXJsLmhyZWYoKSk7CisgICAgYXV0byogZG9jdW1lbnQgPSBjb250ZXh0RG9j
dW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKKworICAgIHJldHVybiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc3RhdGlzdGlj
c0ZvclVSTChkb2N1bWVudC0+c2Vzc2lvbklEKCksIHVybC5ocmVmKCkpOwogfQogCiB2b2lkIElu
dGVybmFsczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDliMTEyNzkxMjM3N2JmMzNhODlhNzU4NTZj
ZTViNThhMzJlYzViNWIuLjRlYWNmYTA2MmYwZDA5MmIwOWJhMWIzMTk2YTdmY2VmOGYzNjBlZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RvY3Vt
ZW50U3RvcmFnZUFjY2Vzcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRPYnNlcnZlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TYW1lU2l0ZUluZm8uaD4KQEAg
LTcxMiwxNCArNzEzLDE0IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omxv
Z1N1YnJlc291cmNlUmVkaXJlY3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvCiAgICAgfQogfQogCi12
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJiBzdGF0aXN0
aWNzKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1VwZGF0ZWQoUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OlBlclNlc3Npb25SZXNvdXJjZUxv
YWREYXRhJiYgc3RhdGlzdGljcykKIHsKLSAgICBhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IG5ldHdv
cmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb25CeUNvbm5lY3Rpb24oY29ubmVjdGlvbigpKTsKLSAg
ICBpZiAoIW5ldHdvcmtTZXNzaW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoYXV0byog
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKCkpCi0gICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlc291cmNlTG9hZFN0
YXRpc3RpY3NVcGRhdGVkKFdURk1vdmUoc3RhdGlzdGljcykpOworICAgIGZvciAoYXV0byYgaXRl
ciA6IHN0YXRpc3RpY3MpIHsKKyAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gbmV0
d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihpdGVyLmZpcnN0KSkgeworICAgICAgICAgICAg
aWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpKQorICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFdURk1vdmUoaXRlci5zZWNvbmQpKTsK
KyAgICAgICAgfQorICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
cEZyYW1lRG9tYWluLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDBhYTAyZDMyODJkYzE3OTcxNmNiMmJmNmQ2Y2Q3
OTY3ODJhZmQ0MzYuLjA1NThkNzFjYzJmZTkxZDQ2YTUzN2FlNTIzYzc5OWNjMDY1YzU4ODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlTG9hZE9ic2VydmVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KIAogbmFtZXNwYWNlIFBBTCB7CkBAIC0yMjIsNyArMjIzLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGxvZ1dlYlNvY2tldExvYWRpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiB0YXJnZXREb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURv
bWFpbiwgV2FsbFRpbWUgbGFzdFNlZW4pOwogICAgIHZvaWQgbG9nU3VicmVzb3VyY2VMb2FkaW5n
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGFyZ2V0RG9tYWluLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIFdhbGxUaW1lIGxhc3RTZWVu
KTsKICAgICB2b2lkIGxvZ1N1YnJlc291cmNlUmVkaXJlY3QoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiB0YXJnZXREb21haW4pOwotICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQo
VmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpOworICAgIHZvaWQgcmVz
b3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OlBlclNlc3Npb25SZXNvdXJjZUxvYWREYXRhJiYpOwogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vz
cyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWlu
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d24pPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpT
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9y
YWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGZkNGIyNDhjNDdlNjY4YTc3ZWZjZDcyMGVhZDJk
NmY1NjRhY2FhMzcuLjZlZTIyZDMzNDBmMDVkZjM1MmIyN2QwNTkyYzU3N2Q0ZTM1MDU5ZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNjQsNyArNjQs
NyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNl
aXZlciB7CiAgICAgTG9nV2ViU29ja2V0TG9hZGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRhcmdldERvbWFpbiwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdhbGxUaW1lIGxhc3RTZWVuKQogICAgIExvZ1N1
YnJlc291cmNlTG9hZGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHRhcmdldERvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9w
RnJhbWVEb21haW4sIFdhbGxUaW1lIGxhc3RTZWVuKQogICAgIExvZ1N1YnJlc291cmNlUmVkaXJl
Y3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBz
b3VyY2VEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRhcmdldERvbWFpbikKLSAg
ICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljcz4gc3RhdGlzdGljcykKKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBk
YXRlZChWZWN0b3I8c3RkOjpwYWlyPFBBTDo6U2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljcz4+PiBzdGF0aXN0aWNzKQogICAgIEhhc1N0b3JhZ2VBY2Nlc3Mo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJG
cmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5jCiAgICAgUmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVE
b21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQpIC0+IChlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQgd2FzR3JhbnRlZCwgZW51bTpib29sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93biBwcm9tcHRXYXNTaG93bikgQXN5bmMKICAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA3NGY1OWMyMjM2MDhi
NGVlMjdiZGY3OTk3MjlkMDQ1Zjc4ODljNmE0Li4wMzYwMzJlNDI1OTc1ZTg1NzkwMTQ4NWRmOWY0
OWY5ODUzOTgzZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBA
IC0yMTcsNyArMjE3LDcgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAgICAgbV9wbHVnSW5B
dXRvU3RhcnRPcmlnaW5IYXNoZXMuYWRkKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCksIEhhc2hNYXA8dW5zaWduZWQsIFdhbGxUaW1lPigpKTsKIAogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNl
dFN0YXRpc3RpY3NVcGRhdGVkQ2FsbGJhY2soW3RoaXNdIChWZWN0b3I8UmVzb3VyY2VMb2FkU3Rh
dGlzdGljcz4mJiBzdGF0aXN0aWNzKSB7CisgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJl
ZCgpLnNldFN0YXRpc3RpY3NVcGRhdGVkQ2FsbGJhY2soW3RoaXNdIChhdXRvJiYgc3RhdGlzdGlj
cykgewogICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NVcGRhdGVkKFdURk1vdmUoc3RhdGlzdGljcykpLCAwKTsKICAgICB9KTsK
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>