<?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>186545</bug_id>
          
          <creation_ts>2018-06-11 15:46:01 -0700</creation_ts>
          <short_desc>PSON: http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-collusion.html ASSERTS with process swap enabled</short_desc>
          <delta_ts>2018-06-13 15:17:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>186542</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1432091</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-06-11 15:46:01 -0700</bug_when>
    <thetext>PSON: http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-collusion.html ASSERTS with process swap enabled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1432093</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-06-11 15:47:19 -0700</bug_when>
    <thetext>ASSERTION FAILED: !statistics.isEmpty()
/Volumes/Data/git/OpenSource/Source/WebKit/WebProcess/WebProcess.cpp(203) : auto WebKit::WebProcess::WebProcess()::(anonymous class)::operator()(Vector&lt;WebCore::ResourceLoadStatistics&gt; &amp;&amp;) const
1   0x63f992ad9 WTFCrash
2   0x1064acbf5 WebKit::WebProcess::WebProcess()::$_1::operator()(WTF::Vector&lt;WebCore::ResourceLoadStatistics, 0ul, WTF::CrashOnOverflow, 16ul&gt;&amp;&amp;) const
3   0x1064acaf4 WTF::Function&lt;void (WTF::Vector&lt;WebCore::ResourceLoadStatistics, 0ul, WTF::CrashOnOverflow, 16ul&gt;&amp;&amp;)&gt;::CallableWrapper&lt;WebKit::WebProcess::WebProcess()::$_1&gt;::call(WTF::Vector&lt;WebCore::ResourceLoadStatistics, 0ul, WTF::CrashOnOverflow, 16ul&gt;&amp;&amp;)
4   0x63263205e WTF::Function&lt;void (WTF::Vector&lt;WebCore::ResourceLoadStatistics, 0ul, WTF::CrashOnOverflow, 16ul&gt;&amp;&amp;)&gt;::operator()(WTF::Vector&lt;WebCore::ResourceLoadStatistics, 0ul, WTF::CrashOnOverflow, 16ul&gt;&amp;&amp;) const
5   0x63262fd6b WebCore::ResourceLoadObserver::notifyObserver()
6   0x10675f049 WKBundleResourceLoadStatisticsNotifyObserver
7   0x645f189e8 WTR::InjectedBundle::statisticsNotifyObserver()
8   0x645f4f399 WTR::TestRunner::statisticsNotifyObserver()
9   0x645f44347 WTR::JSTestRunner::statisticsNotifyObserver(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**)
10  0x63fb05757 long long JSC::APICallbackFunction::call&lt;JSC::JSCallbackFunction&gt;(JSC::ExecState*)
11  0xdc233ba02d
12  0x63fa85146 llint_entry
13  0x63fa7cb32 vmEntryToJavaScript
14  0x6408d90ba JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*)
15  0x6408d8661 JSC::Interpreter::executeProgram(JSC::SourceCode const&amp;, JSC::ExecState*, JSC::JSObject*)
16  0x640b8fb87 JSC::evaluate(JSC::ExecState*, JSC::SourceCode const&amp;, JSC::JSValue, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
17  0x640b8fd10 JSC::profiledEvaluate(JSC::ExecState*, JSC::ProfilingReason, JSC::SourceCode const&amp;, JSC::JSValue, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
18  0x63195b46b WebCore::JSMainThreadExecState::profiledEvaluate(JSC::ExecState*, JSC::ProfilingReason, JSC::SourceCode const&amp;, JSC::JSValue, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
19  0x63195b1d6 WebCore::ScriptController::evaluateInWorld(WebCore::ScriptSourceCode const&amp;, WebCore::DOMWrapperWorld&amp;, WebCore::ExceptionDetails*)
20  0x63195b54d WebCore::ScriptController::evaluate(WebCore::ScriptSourceCode const&amp;, WebCore::ExceptionDetails*)
21  0x631f3ea27 WebCore::ScriptElement::executeClassicScript(WebCore::ScriptSourceCode const&amp;)
22  0x631f3cf09 WebCore::ScriptElement::prepareScript(WTF::TextPosition const&amp;, WebCore::ScriptElement::LegacyTypeSupport)
23  0x6323735b0 WebCore::HTMLScriptRunner::runScript(WebCore::ScriptElement&amp;, WTF::TextPosition const&amp;)
24  0x63237341f WebCore::HTMLScriptRunner::execute(WTF::Ref&lt;WebCore::ScriptElement, WTF::DumbPtrTraits&lt;WebCore::ScriptElement&gt; &gt;&amp;&amp;, WTF::TextPosition const&amp;)
25  0x632356135 WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder()
26  0x6323565f3 WebCore::HTMLDocumentParser::pumpTokenizerLoop(WebCore::HTMLDocumentParser::SynchronousMode, bool, WebCore::PumpSession&amp;)
27  0x632355338 WebCore::HTMLDocumentParser::pumpTokenizer(WebCore::HTMLDocumentParser::SynchronousMode)
28  0x632354eab WebCore::HTMLDocumentParser::pumpTokenizerIfPossible(WebCore::HTMLDocumentParser::SynchronousMode)
29  0x632358049 WebCore::HTMLDocumentParser::resumeParsingAfterScriptExecution()
30  0x63235844e WebCore::HTMLDocumentParser::notifyFinished(WebCore::PendingScript&amp;)
31  0x6323584ac non-virtual thunk to WebCore::HTMLDocumentParser::notifyFinished(WebCore::PendingScript&amp;)
#CRASHED - com.apple.WebKit.WebContent.Development (pid 50455)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1432101</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-06-11 16:12:48 -0700</bug_when>
    <thetext>ResourceLoadStatistics is fundamentally broken in PSON

We either need to move a statistics map from the old process to the new one, or just host statistics in the UIProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1432102</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-06-11 16:15:01 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #2)
&gt; ResourceLoadStatistics is fundamentally broken in PSON
&gt; 
&gt; We either need to move a statistics map from the old process to the new one,
&gt; or just host statistics in the UIProcess.

Chris tells me that RLS are hosted in the UI process, but driven by data pushed out from WebProcesses. This test failure a case of a new WebProcess not having what is expected of it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1432105</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-11 16:23:28 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #3)
&gt; (In reply to Brady Eidson from comment #2)
&gt; &gt; ResourceLoadStatistics is fundamentally broken in PSON
&gt; &gt; 
&gt; &gt; We either need to move a statistics map from the old process to the new one,
&gt; &gt; or just host statistics in the UIProcess.
&gt; 
&gt; Chris tells me that RLS are hosted in the UI process, but driven by data
&gt; pushed out from WebProcesses. This test failure a case of a new WebProcess
&gt; not having what is expected of it!

The test is relying on a test runner API to force the WebProcess to send its RLS to the UIProcess:
6   0x10675f049 WKBundleResourceLoadStatisticsNotifyObserver
7   0x645f189e8 WTR::InjectedBundle::statisticsNotifyObserver()
8   0x645f4f399 WTR::TestRunner::statisticsNotifyObserver()

Because of process swap, it is asking to new WebProcess instead of the old one, we hit an assertion because we&apos;re not supposed to notify the client of new statistics with no statistics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1432109</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-06-11 16:29:38 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; (In reply to Brady Eidson from comment #3)
&gt; &gt; (In reply to Brady Eidson from comment #2)
&gt; &gt; &gt; ResourceLoadStatistics is fundamentally broken in PSON
&gt; &gt; &gt; 
&gt; &gt; &gt; We either need to move a statistics map from the old process to the new one,
&gt; &gt; &gt; or just host statistics in the UIProcess.
&gt; &gt; 
&gt; &gt; Chris tells me that RLS are hosted in the UI process, but driven by data
&gt; &gt; pushed out from WebProcesses. This test failure a case of a new WebProcess
&gt; &gt; not having what is expected of it!
&gt; 
&gt; The test is relying on a test runner API to force the WebProcess to send its
&gt; RLS to the UIProcess:
&gt; 6   0x10675f049 WKBundleResourceLoadStatisticsNotifyObserver
&gt; 7   0x645f189e8 WTR::InjectedBundle::statisticsNotifyObserver()
&gt; 8   0x645f4f399 WTR::TestRunner::statisticsNotifyObserver()
&gt; 
&gt; Because of process swap, it is asking to new WebProcess instead of the old
&gt; one, we hit an assertion because we&apos;re not supposed to notify the client of
&gt; new statistics with no statistics.

Yup, and when I simply make the ASSERT a no-op instead the test passes.

/me shrugs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1432112</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-11 16:39:07 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #5)
&gt; (In reply to Chris Dumez from comment #4)
&gt; &gt; (In reply to Brady Eidson from comment #3)
&gt; &gt; &gt; (In reply to Brady Eidson from comment #2)
&gt; &gt; &gt; &gt; ResourceLoadStatistics is fundamentally broken in PSON
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; We either need to move a statistics map from the old process to the new one,
&gt; &gt; &gt; &gt; or just host statistics in the UIProcess.
&gt; &gt; &gt; 
&gt; &gt; &gt; Chris tells me that RLS are hosted in the UI process, but driven by data
&gt; &gt; &gt; pushed out from WebProcesses. This test failure a case of a new WebProcess
&gt; &gt; &gt; not having what is expected of it!
&gt; &gt; 
&gt; &gt; The test is relying on a test runner API to force the WebProcess to send its
&gt; &gt; RLS to the UIProcess:
&gt; &gt; 6   0x10675f049 WKBundleResourceLoadStatisticsNotifyObserver
&gt; &gt; 7   0x645f189e8 WTR::InjectedBundle::statisticsNotifyObserver()
&gt; &gt; 8   0x645f4f399 WTR::TestRunner::statisticsNotifyObserver()
&gt; &gt; 
&gt; &gt; Because of process swap, it is asking to new WebProcess instead of the old
&gt; &gt; one, we hit an assertion because we&apos;re not supposed to notify the client of
&gt; &gt; new statistics with no statistics.
&gt; 
&gt; Yup, and when I simply make the ASSERT a no-op instead the test passes.
&gt; 
&gt; /me shrugs

The test is marked as flaky, which is why it may have passed from you locally. However, I do think we would break the test here. We need the previous WebProcess do send its RLS to the UIProcess.

We may want to update the testRunner API to ask all WebProcesses to send their data to the UIProcess, instead of merely the current one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1432113</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-11 16:40:14 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; (In reply to Brady Eidson from comment #5)
&gt; &gt; (In reply to Chris Dumez from comment #4)
&gt; &gt; &gt; (In reply to Brady Eidson from comment #3)
&gt; &gt; &gt; &gt; (In reply to Brady Eidson from comment #2)
&gt; &gt; &gt; &gt; &gt; ResourceLoadStatistics is fundamentally broken in PSON
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; We either need to move a statistics map from the old process to the new one,
&gt; &gt; &gt; &gt; &gt; or just host statistics in the UIProcess.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Chris tells me that RLS are hosted in the UI process, but driven by data
&gt; &gt; &gt; &gt; pushed out from WebProcesses. This test failure a case of a new WebProcess
&gt; &gt; &gt; &gt; not having what is expected of it!
&gt; &gt; &gt; 
&gt; &gt; &gt; The test is relying on a test runner API to force the WebProcess to send its
&gt; &gt; &gt; RLS to the UIProcess:
&gt; &gt; &gt; 6   0x10675f049 WKBundleResourceLoadStatisticsNotifyObserver
&gt; &gt; &gt; 7   0x645f189e8 WTR::InjectedBundle::statisticsNotifyObserver()
&gt; &gt; &gt; 8   0x645f4f399 WTR::TestRunner::statisticsNotifyObserver()
&gt; &gt; &gt; 
&gt; &gt; &gt; Because of process swap, it is asking to new WebProcess instead of the old
&gt; &gt; &gt; one, we hit an assertion because we&apos;re not supposed to notify the client of
&gt; &gt; &gt; new statistics with no statistics.
&gt; &gt; 
&gt; &gt; Yup, and when I simply make the ASSERT a no-op instead the test passes.
&gt; &gt; 
&gt; &gt; /me shrugs
&gt; 
&gt; The test is marked as flaky, which is why it may have passed from you
&gt; locally. However, I do think we would break the test here. We need the
&gt; previous WebProcess do send its RLS to the UIProcess.
&gt; 
&gt; We may want to update the testRunner API to ask all WebProcesses to send
&gt; their data to the UIProcess, instead of merely the current one.

Personally, I have this failure if I enable JSON and unskip the test:
--- /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/layout-test-results/http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-collusion-expected.txt
+++ /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/layout-test-results/http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-collusion-actual.txt
@@ -7,7 +7,6 @@
 PASS Colluding host 2 got set as prevalent resource.
 PASS Colluding host 3 got set as prevalent resource.
 PASS Colluding host 4 got set as prevalent resource.
-PASS Colluding localhost got set as prevalent resource after actual navigational redirect.
 PASS successfullyParsed is true</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1432345</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-12 10:11:44 -0700</bug_when>
    <thetext>Updating testRunner.statisticsNotifyObserver() to sync all WebProcess instead of merely  the current one is not sufficient. When running with PSON, none of the 2 WebProcesses have any statistics to sync..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1432367</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-12 10:53:10 -0700</bug_when>
    <thetext>OK, plan B: Have ITP log frame navigations on the UIProcess instead of the WebProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1432484</commentid>
    <comment_count>10</comment_count>
      <attachid>342596</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-12 14:46:58 -0700</bug_when>
    <thetext>Created attachment 342596
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1432506</commentid>
    <comment_count>11</comment_count>
      <attachid>342605</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-12 15:47:29 -0700</bug_when>
    <thetext>Created attachment 342605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1432747</commentid>
    <comment_count>12</comment_count>
      <attachid>342605</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2018-06-13 12:08:02 -0700</bug_when>
    <thetext>Comment on attachment 342605
Patch

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

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:341
&gt; +    cancelPendingStatisticsProcessingRequest();

We should augment the comment above to explain that we cancel any pending statistics processing because we are about to call processStatisticsAndDataRecords() directly here.

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:564
&gt; +    m_statisticsQueue-&gt;dispatchAfter(minimumStatisticsProcessingInterval, [this, protectedThis = makeRef(*this), statisticsProcessingRequestIdentifier = *m_pendingStatisticsProcessingRequestIdentifier] {

We are already on the worker thread here. Does that matter when dispatching again?

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:582
&gt; +void WebResourceLoadStatisticsStore::logFrameNavigation(const WebFrameProxy&amp; frame, const URL&amp; pageURL, const WebCore::ResourceRequest&amp; request, const WebCore::URL&amp; redirectURL)

Does this function handle both top frame and sub frame navigations? The logic indicates that it is the case. I&apos;m asking since top frame navigations are what the PSON changes deal with.

&gt; LayoutTests/platform/wk2/TestExpectations:708
&gt; +http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-collusion.html [ Pass ]

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1432753</commentid>
    <comment_count>13</comment_count>
      <attachid>342605</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-13 12:19:53 -0700</bug_when>
    <thetext>Comment on attachment 342605
Patch

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

&gt;&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:341
&gt;&gt; +    cancelPendingStatisticsProcessingRequest();
&gt; 
&gt; We should augment the comment above to explain that we cancel any pending statistics processing because we are about to call processStatisticsAndDataRecords() directly here.

Ok, can do this before landing.

&gt;&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:564
&gt;&gt; +    m_statisticsQueue-&gt;dispatchAfter(minimumStatisticsProcessingInterval, [this, protectedThis = makeRef(*this), statisticsProcessingRequestIdentifier = *m_pendingStatisticsProcessingRequestIdentifier] {
&gt; 
&gt; We are already on the worker thread here. Does that matter when dispatching again?

Yes we are, I still would think we would not want to call updateCookiePartitioning / processStatisticsAndDataRecords too often, right? I applied the same rate limiting as what was used for the WebProcess to send its statistics.

&gt;&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:582
&gt;&gt; +void WebResourceLoadStatisticsStore::logFrameNavigation(const WebFrameProxy&amp; frame, const URL&amp; pageURL, const WebCore::ResourceRequest&amp; request, const WebCore::URL&amp; redirectURL)
&gt; 
&gt; Does this function handle both top frame and sub frame navigations? The logic indicates that it is the case. I&apos;m asking since top frame navigations are what the PSON changes deal with.

Yes, for all frames. This is called from decidePolicyForNavigationAction, which we have to call for every navigation, in every frame. It is true that PSON only applies to main frame but it does not impact logFrameNavigation().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1432766</commentid>
    <comment_count>14</comment_count>
      <attachid>342605</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-06-13 12:41:55 -0700</bug_when>
    <thetext>Comment on attachment 342605
Patch

Fine with me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1432820</commentid>
    <comment_count>15</comment_count>
      <attachid>342693</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-13 14:31:12 -0700</bug_when>
    <thetext>Created attachment 342693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1432833</commentid>
    <comment_count>16</comment_count>
      <attachid>342693</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-13 15:16:18 -0700</bug_when>
    <thetext>Comment on attachment 342693
Patch

Clearing flags on attachment: 342693

Committed r232814: &lt;https://trac.webkit.org/changeset/232814&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1432834</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-13 15:16:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1432835</commentid>
    <comment_count>18</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-13 15:17:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/41103929&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342596</attachid>
            <date>2018-06-12 14:46:58 -0700</date>
            <delta_ts>2018-06-12 15:47:27 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>186545_ResourceLoadStatistics_PSON_wip.patch</filename>
            <type>text/plain</type>
            <size>52654</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggODk1YjJjMWUx
OTkuLjQ4YTc4NzY3ZjAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtNzA1LDcgKzcwNSw3IEBAIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tc3ViLWZyYW1lLXVuZGVyCiBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9u
LXN1YnJlc291cmNlLXVuZGVyLXRvcC1mcmFtZS1vcmlnaW5zLmh0bWwgWyBQYXNzIF0KIGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQt
b24tc3VicmVzb3VyY2UtdW5pcXVlLXJlZGlyZWN0cy10by5odG1sIFsgUGFzcyBdCiBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9u
LXN1YnJlc291cmNlLXJlZGlyZWN0LWNvbGx1c2lvbi5odG1sIFsgUGFzcyBdCi1odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRv
cC1mcmFtZS1yZWRpcmVjdC1jb2xsdXNpb24uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCitodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9u
LXRvcC1mcmFtZS1yZWRpcmVjdC1jb2xsdXNpb24uaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3At
ZnJhbWUtdW5pcXVlLXJlZGlyZWN0cy10by5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvY2xlYXItaW4tbWVtb3J5LWFuZC1wZXJzaXN0ZW50LXN0b3JlLmh0
bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9ncmFuZGZhdGhl
cmluZy5odG1sIFsgUGFzcyBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAppbmRleCBmYjA3ZWU1M2JkNS4uNDdhMzY5ZTEwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNTkxLDggKzU5MSw2IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjCiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgQVNTRVJUKHRv
cEZyYW1lLmRvY3VtZW50KCkpOwotCi0gICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgp
LmxvZ0ZyYW1lTmF2aWdhdGlvbigqbV9mcmFtZSwgdG9wRnJhbWUsIG5ld1JlcXVlc3QsIHJlZGly
ZWN0UmVzcG9uc2UudXJsKCkpOwogICAgIAogICAgIC8vIFVwZGF0ZSBjb29raWUgcG9saWN5IGJh
c2UgVVJMIGFzIFVSTCBjaGFuZ2VzLCBleGNlcHQgZm9yIHN1YmZyYW1lcywgd2hpY2ggdXNlIHRo
ZQogICAgIC8vIFVSTCBvZiB0aGUgbWFpbiBmcmFtZSB3aGljaCBkb2Vzbid0IGNoYW5nZSB3aGVu
IHdlIHJlZGlyZWN0LgpAQCAtNjU3LDcgKzY1NSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Ondp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJj
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVj
a2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFdURk1vdmUobmV3UmVxdWVzdCksIGRpZFJlY2Vp
dmVSZWRpcmVjdFJlc3BvbnNlLCBXVEZNb3ZlKG5hdmlnYXRpb25Qb2xpY3lDb21wbGV0aW9uSGFu
ZGxlcikpOworICAgIGZyYW1lTG9hZGVyKCktPnBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRp
b25Qb2xpY3koV1RGTW92ZShuZXdSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgV1RGTW92ZShu
YXZpZ2F0aW9uUG9saWN5Q29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogYm9vbCBEb2N1bWVudExv
YWRlcjo6dHJ5TG9hZGluZ1JlcXVlc3RGcm9tQXBwbGljYXRpb25DYWNoZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDYwNTNiODc4YjJmLi5jMzNiYzAzNTg1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTQ0Niw3ICs0NDYsNyBA
QCB2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYQogewogfQogCi12b2lkIEVtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCwgRm9ybVN0YXRlKiwg
UG9saWN5RGVjaXNpb25Nb2RlLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpCit2b2lkIEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIEZvcm1TdGF0ZSosIFBvbGljeURlY2lzaW9uTW9kZSwgRnJhbWVQb2xp
Y3lGdW5jdGlvbiYmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJh
bWVMb2FkZXJDbGllbnQuaAppbmRleCAzNGE1MDhhYjU4Yy4uZGNmYWY5MDc1OWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtOTUsNyAr
OTUsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50IDogcHVi
bGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKIAogICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmLCBGcmFtZVBvbGlj
eUZ1bmN0aW9uJiYpIGZpbmFsOwotICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlLCBGb3JtU3RhdGUqLCBQb2xpY3lE
ZWNpc2lvbk1vZGUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CisgICAgdm9pZCBkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlv
biYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UsIEZvcm1TdGF0ZSosIFBvbGljeURlY2lzaW9uTW9kZSwgRnJhbWVQb2xpY3lG
dW5jdGlvbiYmKSBmaW5hbDsKICAgICB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgZmluYWwgeyB9
CiAKICAgICB2b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5k
ZXggMDRkNDM2ZTI5ODIuLjlkNzI2YWI0OGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKQEAgLTEzODAsNyArMTM4MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwo
RnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmCiAg
ICAgICAgIG9sZERvY3VtZW50TG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0KCkpOwogICAgICAgICBwb2xpY3lDaGVja2VyKCkuc3RvcENoZWNrKCk7CiAgICAgICAg
IHBvbGljeUNoZWNrZXIoKS5zZXRMb2FkVHlwZShuZXdMb2FkVHlwZSk7Ci0gICAgICAgIHBvbGlj
eUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koV1RGTW92ZShyZXF1ZXN0KSwgZmFsc2Ug
LyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgp
LCBXVEZNb3ZlKGZvcm1TdGF0ZSksIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9m
cmFtZSldIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRl
PiYmLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgeworICAgICAgICBwb2xpY3lDaGVj
a2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFdURk1vdmUocmVxdWVzdCksIFJlc291cmNlUmVz
cG9uc2UgeyB9IC8qIHJlZGlyZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgp
LCBXVEZNb3ZlKGZvcm1TdGF0ZSksIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9m
cmFtZSldIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRl
PiYmLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgewogICAgICAgICAgICAgY29udGlu
dWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeShyZXF1ZXN0LCBzaG91bGRDb250
aW51ZSA9PSBTaG91bGRDb250aW51ZTo6WWVzKTsKICAgICAgICAgfSwgUG9saWN5RGVjaXNpb25N
b2RlOjpTeW5jaHJvbm91cyk7CiAgICAgICAgIHJldHVybjsKQEAgLTE1NTUsNyArMTU1NSw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgRnJhbWVMb2FkVHlwZSB0CiAgICAgICAgIG9sZERvY3VtZW50TG9hZGVyLT5zZXRU
cmlnZ2VyaW5nQWN0aW9uKGFjdGlvbik7CiAgICAgICAgIG9sZERvY3VtZW50TG9hZGVyLT5zZXRM
YXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwogICAgICAgICBwb2xpY3lDaGVj
a2VyKCkuc3RvcENoZWNrKCk7Ci0gICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRp
b25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+cmVxdWVzdCgpKSwgZmFsc2UgLyogZGlk
UmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBXVEZN
b3ZlKGZvcm1TdGF0ZSksIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSld
IChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmLCBT
aG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgeworICAgICAgICBwb2xpY3lDaGVja2VyKCku
Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSks
IFJlc291cmNlUmVzcG9uc2UgeyB9ICAvKiByZWRpcmVjdFJlc3BvbnNlICovLCBvbGREb2N1bWVu
dExvYWRlci5nZXQoKSwgV1RGTW92ZShmb3JtU3RhdGUpLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUg
PSBtYWtlUmVmKG1fZnJhbWUpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFr
UHRyPEZvcm1TdGF0ZT4mJiwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIHsKICAgICAg
ICAgICAgIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVz
dCwgc2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29udGludWU6Olllcyk7CiAgICAgICAgIH0sIFBv
bGljeURlY2lzaW9uTW9kZTo6U3luY2hyb25vdXMpOwogICAgICAgICByZXR1cm47CkBAIC0xNTg5
LDcgKzE1ODksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdAogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJj
ZVJlcXVlc3QobG9hZGVyLT5yZXF1ZXN0KCkpLCBmYWxzZSAvKiBkaWRSZWNlaXZlUmVkaXJlY3RS
ZXNwb25zZSAqLywgbG9hZGVyLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIFt0aGlzLCBwcm90ZWN0ZWRG
cmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgY29t
cGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCldIChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0
ZSwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIHsKKyAgICBwb2xpY3lDaGVja2VyKCku
Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSks
IFJlc291cmNlUmVzcG9uc2UgeyB9IC8qIHJlZGlyZWN0UmVzcG9uc2UgKi8sIGxvYWRlciwgV1RG
TW92ZShmb3JtU3RhdGUpLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUp
LCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxl
dGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIFNob3VsZENvbnRpbnVlIHNob3Vs
ZENvbnRpbnVlKSB7CiAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShy
ZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIHNob3VsZENvbnRpbnVlLCBhbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkwpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBjNmY2N2RlMTM3OC4u
ZjcyMjYxODY3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
CkBAIC0xOTEsNyArMTkxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGly
ZWN0UmVzcG9uc2UsIEZvcm1TdGF0ZSosIFBvbGljeURlY2lzaW9uTW9kZSwgRnJhbWVQb2xpY3lG
dW5jdGlvbiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgRm9ybVN0
YXRlKiwgUG9saWN5RGVjaXNpb25Nb2RlLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBSZXNvdXJjZUVycm9yJikg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCmluZGV4IDVmOTc1MWNi
NmUzLi40ZTBlZWRjNTEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGlj
eUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNw
cApAQCAtNzksOSArNzksOSBAQCBQb2xpY3lDaGVja2VyOjpQb2xpY3lDaGVja2VyKEZyYW1lJiBm
cmFtZSkKIHsKIH0KIAotdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3ko
UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNw
b25zZSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24mJiBmdW5jdGlvbikKK3ZvaWQg
UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmIG5l
d1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7Ci0gICAgY2hlY2tOYXZp
Z2F0aW9uUG9saWN5KFdURk1vdmUobmV3UmVxdWVzdCksIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3Bv
bnNlLCBtX2ZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCksIHsgfSwgV1RGTW92
ZShmdW5jdGlvbikpOworICAgIGNoZWNrTmF2aWdhdGlvblBvbGljeShXVEZNb3ZlKG5ld1JlcXVl
c3QpLCByZWRpcmVjdFJlc3BvbnNlLCBtX2ZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9h
ZGVyKCksIHsgfSwgV1RGTW92ZShmdW5jdGlvbikpOwogfQogCiBDb21wbGV0aW9uSGFuZGxlckNh
bGxpbmdTY29wZSBQb2xpY3lDaGVja2VyOjpleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2Fy
eShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0CkBAIC05OCw3ICs5OCw3IEBAIENvbXBs
ZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIFBvbGljeUNoZWNrZXI6OmV4dGVuZEJsb2JVUkxMaWZl
dGltZUlmTmVjZXNzYXJ5KFJlCiAgICAgfSk7CiB9CiAKLXZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hl
Y2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGJvb2wgZGlkUmVj
ZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlZlB0cjxGb3Jt
U3RhdGU+JiYgZm9ybVN0YXRlLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiYmIGZ1
bmN0aW9uLCBQb2xpY3lEZWNpc2lvbk1vZGUgcG9saWN5RGVjaXNpb25Nb2RlKQordm9pZCBQb2xp
Y3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgUmVmUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIE5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbkZ1bmN0aW9uJiYgZnVuY3Rpb24sIFBvbGljeURlY2lzaW9uTW9kZSBwb2xpY3lE
ZWNpc2lvbk1vZGUpCiB7CiAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24gPSBsb2FkZXItPnRy
aWdnZXJpbmdBY3Rpb24oKTsKICAgICBpZiAoYWN0aW9uLmlzRW1wdHkoKSkgewpAQCAtMTI4LDcg
KzEyOCw3IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGJvb2wgZGlkUmVjCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBpZiAoIWlzQWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KHJlcXVlc3QudXJs
KCksIG1fZnJhbWUub3duZXJFbGVtZW50KCksIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKSkg
eworICAgIGlmICghaXNBbGxvd2VkQnlDb250ZW50U2VjdXJpdHlQb2xpY3kocmVxdWVzdC51cmwo
KSwgbV9mcmFtZS5vd25lckVsZW1lbnQoKSwgIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpKSB7
CiAgICAgICAgIGlmIChtX2ZyYW1lLm93bmVyRWxlbWVudCgpKSB7CiAgICAgICAgICAgICAvLyBG
aXJlIGEgbG9hZCBldmVudCAoZXZlbiB0aG91Z2ggd2Ugd2VyZSBibG9ja2VkIGJ5IENTUCkgYXMg
dGltaW5nIGF0dGFja3Mgd291bGQgb3RoZXJ3aXNlCiAgICAgICAgICAgICAvLyByZXZlYWwgdGhh
dCB0aGUgZnJhbWUgd2FzIGJsb2NrZWQuIFRoaXMgd2F5LCBpdCBsb29rcyBsaWtlIGFueSBvdGhl
ciBjcm9zcy1vcmlnaW4gcGFnZSBsb2FkLgpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgUG9saWN5
Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IGJvb2wgZGlkUmVjCiAKICAgICBtX2RlbGVnYXRlSXNEZWNpZGluZ05hdmlnYXRpb25Qb2xpY3kg
PSB0cnVlOwogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IGFjdGlvbi5kb3dubG9hZEF0
dHJpYnV0ZSgpLmlzRW1wdHkoKSA/IG51bGxBdG9tKCkgOiBhY3Rpb24uZG93bmxvYWRBdHRyaWJ1
dGUoKTsKLSAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbihhY3Rpb24sIHJlcXVlc3QsIGRpZFJlY2VpdmVSZWRpcmVjdFJl
c3BvbnNlLCBmb3JtU3RhdGUuZ2V0KCksIHBvbGljeURlY2lzaW9uTW9kZSwgW3RoaXMsIGZ1bmN0
aW9uID0gV1RGTW92ZShmdW5jdGlvbiksIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QocmVxdWVz
dCksIGZvcm1TdGF0ZSA9IFdURk1vdmUoZm9ybVN0YXRlKSwgc3VnZ2VzdGVkRmlsZW5hbWUgPSBX
VEZNb3ZlKHN1Z2dlc3RlZEZpbGVuYW1lKSwgYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gV1RG
TW92ZShibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24pXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
KSBtdXRhYmxlIHsKKyAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihhY3Rpb24sIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UsIGZvcm1TdGF0ZS5nZXQoKSwgcG9saWN5RGVjaXNpb25Nb2RlLCBbdGhpcywgZnVuY3Rpb24g
PSBXVEZNb3ZlKGZ1bmN0aW9uKSwgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwg
Zm9ybVN0YXRlID0gV1RGTW92ZShmb3JtU3RhdGUpLCBzdWdnZXN0ZWRGaWxlbmFtZSA9IFdURk1v
dmUoc3VnZ2VzdGVkRmlsZW5hbWUpLCBibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gPSBXVEZNb3Zl
KGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbildKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11
dGFibGUgewogICAgICAgICBtX2RlbGVnYXRlSXNEZWNpZGluZ05hdmlnYXRpb25Qb2xpY3kgPSBm
YWxzZTsKIAogICAgICAgICBzd2l0Y2ggKHBvbGljeUFjdGlvbikgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qb2xpY3lDaGVja2VyLmgKaW5kZXggOWYwNDg5NzM4MTkuLjIwNzFmZmFiMTc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmgKQEAgLTY5LDggKzY5LDggQEAgY2xhc3MgUG9s
aWN5Q2hlY2tlciB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUG9saWN5Q2hlY2tlcihGcmFtZSYp
OwogCi0gICAgdm9pZCBjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYsIGJv
b2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIERvY3VtZW50TG9hZGVyKiwgUmVmUHRyPEZv
cm1TdGF0ZT4mJiwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24mJiwgUG9saWN5RGVj
aXNpb25Nb2RlID0gUG9saWN5RGVjaXNpb25Nb2RlOjpBc3luY2hyb25vdXMpOwotICAgIHZvaWQg
Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmLCBib29sIGRpZFJlY2VpdmVS
ZWRpcmVjdFJlc3BvbnNlLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiYmKTsKKyAg
ICB2b2lkIGNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgRG9jdW1lbnRMb2FkZXIqLCBSZWZQdHI8
Rm9ybVN0YXRlPiYmLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiYmLCBQb2xpY3lE
ZWNpc2lvbk1vZGUgPSBQb2xpY3lEZWNpc2lvbk1vZGU6OkFzeW5jaHJvbm91cyk7CisgICAgdm9p
ZCBjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0
aW9uJiYpOwogICAgIHZvaWQgY2hlY2tOZXdXaW5kb3dQb2xpY3koTmF2aWdhdGlvbkFjdGlvbiYm
LCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVmUHRyPEZvcm1TdGF0ZT4mJiwgY29uc3QgU3RyaW5nJiBm
cmFtZU5hbWUsIE5ld1dpbmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24mJik7CiAKICAgICB2b2lk
IHN0b3BDaGVjaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNl
cnZlci5jcHAKaW5kZXggZjVmNWVmOGJmNmIuLmFjZTJmMTUzYWFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSBTdHJpbmcgcHJpbWFyeURvbWFpbihj
b25zdCBUJiB2YWx1ZSkKICAgICByZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6cHJpbWFy
eURvbWFpbih2YWx1ZSk7CiB9CiAKLXN0YXRpYyBTZWNvbmRzIHRpbWVzdGFtcFJlc29sdXRpb24g
eyA1X3MgfTsKIHN0YXRpYyBjb25zdCBTZWNvbmRzIG1pbmltdW1Ob3RpZmljYXRpb25JbnRlcnZh
bCB7IDVfcyB9OwogCiBSZXNvdXJjZUxvYWRPYnNlcnZlciYgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OnNoYXJlZCgpCkBAIC02OSwzNiArNjgsOSBAQCBzdGF0aWMgYm9vbCBzaG91bGRFbmFibGVTaXRl
U3BlY2lmaWNRdWlya3MoUGFnZSogcGFnZSkKICNlbmRpZgogfQogCi0vLyBGSVhNRTogVGVtcG9y
YXJ5IGZpeCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzMyMzQzMjU2PiB1bnRpbCBjb250ZW50IGNhbiBi
ZSB1cGRhdGVkLgogc3RhdGljIGJvb2wgYXJlRG9tYWluc0Fzc29jaWF0ZWQoUGFnZSogcGFnZSwg
Y29uc3QgU3RyaW5nJiBmaXJzdERvbWFpbiwgY29uc3QgU3RyaW5nJiBzZWNvbmREb21haW4pCiB7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25lZD4+IG1l
dGFEb21haW5JZGVudGlmaWVycyA9IFtdIHsKLSAgICAgICAgSGFzaE1hcDxTdHJpbmcsIHVuc2ln
bmVkPiBtYXA7Ci0KLSAgICAgICAgLy8gRG9tYWlucyBvd25lZCBieSBEb3cgSm9uZXMgJiBDb21w
YW55LCBJbmMuCi0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGRvd0pvbmVzSWRlbnRpZmllciA9IDE7
Ci0gICAgICAgIG1hcC5hZGQoQVNDSUlMaXRlcmFsKCJkb3dqb25lcy5jb20iKSwgZG93Sm9uZXNJ
ZGVudGlmaWVyKTsKLSAgICAgICAgbWFwLmFkZChBU0NJSUxpdGVyYWwoIndzai5jb20iKSwgZG93
Sm9uZXNJZGVudGlmaWVyKTsKLSAgICAgICAgbWFwLmFkZChBU0NJSUxpdGVyYWwoImJhcnJvbnMu
Y29tIiksIGRvd0pvbmVzSWRlbnRpZmllcik7Ci0gICAgICAgIG1hcC5hZGQoQVNDSUlMaXRlcmFs
KCJtYXJrZXR3YXRjaC5jb20iKSwgZG93Sm9uZXNJZGVudGlmaWVyKTsKLSAgICAgICAgbWFwLmFk
ZChBU0NJSUxpdGVyYWwoIndzanBsdXMuY29tIiksIGRvd0pvbmVzSWRlbnRpZmllcik7Ci0KLSAg
ICAgICAgcmV0dXJuIG1hcDsKLSAgICB9KCk7Ci0KLSAgICBpZiAoZmlyc3REb21haW4gPT0gc2Vj
b25kRG9tYWluKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIEFTU0VSVCghZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShmaXJzdERvbWFpbiwgc2Vjb25kRG9tYWluKSk7Ci0KLSAgICBpZiAoIXNo
b3VsZEVuYWJsZVNpdGVTcGVjaWZpY1F1aXJrcyhwYWdlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgdW5zaWduZWQgZmlyc3RNZXRhRG9tYWluSWRlbnRpZmllciA9IG1ldGFEb21haW5J
ZGVudGlmaWVycy5nZXQoKS5nZXQoZmlyc3REb21haW4pOwotICAgIGlmICghZmlyc3RNZXRhRG9t
YWluSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGZpcnN0
TWV0YURvbWFpbklkZW50aWZpZXIgPT0gbWV0YURvbWFpbklkZW50aWZpZXJzLmdldCgpLmdldChz
ZWNvbmREb21haW4pOworICAgIHJldHVybiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjphcmVEb21h
aW5zQXNzb2NpYXRlZChzaG91bGRFbmFibGVTaXRlU3BlY2lmaWNRdWlya3MocGFnZSksIGZpcnN0
RG9tYWluLCBzZWNvbmREb21haW4pOwogfQogCiB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpz
ZXROb3RpZmljYXRpb25DYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPiYmKT4mJiBub3RpZmljYXRpb25DYWxsYmFjaykKQEAgLTEzMiw3NSAr
MTA0LDYgQEAgYm9vbCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hvdWxkTG9nKFBhZ2UqIHBhZ2Up
IGNvbnN0CiAgICAgcmV0dXJuIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6cmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQoKSAmJiAhcGFnZS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSAmJiBt
X25vdGlmaWNhdGlvbkNhbGxiYWNrOwogfQogCi1zdGF0aWMgV2FsbFRpbWUgcmVkdWNlVGltZVJl
c29sdXRpb24oV2FsbFRpbWUgdGltZSkKLXsKLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdT
ZWNvbmRzKHN0ZDo6Zmxvb3IodGltZS5zZWNvbmRzU2luY2VFcG9jaCgpIC8gdGltZXN0YW1wUmVz
b2x1dGlvbikgKiB0aW1lc3RhbXBSZXNvbHV0aW9uLnNlY29uZHMoKSk7Ci19Ci0KLXZvaWQgUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBGcmFtZSYgZnJhbWUs
IGNvbnN0IEZyYW1lJiB0b3BGcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0
LCBjb25zdCBVUkwmIHJlZGlyZWN0VXJsKQotewotICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgp
KTsKLSAgICBBU1NFUlQodG9wRnJhbWUuZG9jdW1lbnQoKSk7Ci0gICAgQVNTRVJUKHRvcEZyYW1l
LnBhZ2UoKSk7Ci0KLSAgICBhdXRvKiBwYWdlID0gdG9wRnJhbWUucGFnZSgpOwotICAgIGlmICgh
c2hvdWxkTG9nKHBhZ2UpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHNvdXJjZVVSTCA9
IHJlZGlyZWN0VXJsOwotICAgIGJvb2wgaXNSZWRpcmVjdCA9ICFyZWRpcmVjdFVybC5pc051bGwo
KTsKLSAgICBpZiAoIWlzUmVkaXJlY3QpCi0gICAgICAgIHNvdXJjZVVSTCA9IG5vbk51bGxPd25l
clVSTCgqZnJhbWUuZG9jdW1lbnQoKSk7Ci0KLSAgICBhdXRvJiB0YXJnZXRVUkwgPSBuZXdSZXF1
ZXN0LnVybCgpOwotICAgIGF1dG8mIG1haW5GcmFtZVVSTCA9IHRvcEZyYW1lLmRvY3VtZW50KCkt
PnVybCgpOwotICAgIAotICAgIGlmICghdGFyZ2V0VVJMLmlzVmFsaWQoKSB8fCAhbWFpbkZyYW1l
VVJMLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byB0YXJnZXRIb3N0ID0g
dGFyZ2V0VVJMLmhvc3QoKTsKLSAgICBhdXRvIG1haW5GcmFtZUhvc3QgPSBtYWluRnJhbWVVUkwu
aG9zdCgpOwotCi0gICAgaWYgKHRhcmdldEhvc3QuaXNFbXB0eSgpIHx8IG1haW5GcmFtZUhvc3Qu
aXNFbXB0eSgpIHx8IHRhcmdldEhvc3QgPT0gc291cmNlVVJMLmhvc3QoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgYXV0byB0YXJnZXRQcmltYXJ5RG9tYWluID0gcHJpbWFyeURvbWFpbih0YXJn
ZXRVUkwpOwotICAgIGF1dG8gbWFpbkZyYW1lUHJpbWFyeURvbWFpbiA9IHByaW1hcnlEb21haW4o
bWFpbkZyYW1lVVJMKTsKLSAgICBhdXRvIHNvdXJjZVByaW1hcnlEb21haW4gPSBwcmltYXJ5RG9t
YWluKHNvdXJjZVVSTCk7Ci0gICAgYm9vbCBzaG91bGRDYWxsTm90aWZpY2F0aW9uQ2FsbGJhY2sg
PSBmYWxzZTsKLQotICAgIGlmICh0YXJnZXRIb3N0ICE9IG1haW5GcmFtZUhvc3QKLSAgICAgICAg
JiYgIShhcmVEb21haW5zQXNzb2NpYXRlZChwYWdlLCB0YXJnZXRQcmltYXJ5RG9tYWluLCBtYWlu
RnJhbWVQcmltYXJ5RG9tYWluKSB8fCBhcmVEb21haW5zQXNzb2NpYXRlZChwYWdlLCB0YXJnZXRQ
cmltYXJ5RG9tYWluLCBzb3VyY2VQcmltYXJ5RG9tYWluKSkpIHsKLSAgICAgICAgYXV0byYgdGFy
Z2V0U3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4o
dGFyZ2V0UHJpbWFyeURvbWFpbik7Ci0gICAgICAgIHRhcmdldFN0YXRpc3RpY3MubGFzdFNlZW4g
PSByZWR1Y2VUaW1lUmVzb2x1dGlvbihXYWxsVGltZTo6bm93KCkpOwotICAgICAgICBpZiAodGFy
Z2V0U3RhdGlzdGljcy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zLmFkZChtYWluRnJhbWVQ
cmltYXJ5RG9tYWluKS5pc05ld0VudHJ5KQotICAgICAgICAgICAgc2hvdWxkQ2FsbE5vdGlmaWNh
dGlvbkNhbGxiYWNrID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBpZiAoaXNSZWRpcmVjdAotICAgICAg
ICAmJiAhYXJlRG9tYWluc0Fzc29jaWF0ZWQocGFnZSwgc291cmNlUHJpbWFyeURvbWFpbiwgdGFy
Z2V0UHJpbWFyeURvbWFpbikpIHsKLSAgICAgICAgYm9vbCBpc05ld1JlZGlyZWN0VG9FbnRyeSA9
IGZhbHNlOwotICAgICAgICBib29sIGlzTmV3UmVkaXJlY3RGcm9tRW50cnkgPSBmYWxzZTsKLSAg
ICAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgICAgIGF1dG8mIHJlZGly
ZWN0aW5nT3JpZ2luU3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1h
cnlEb21haW4oc291cmNlUHJpbWFyeURvbWFpbik7Ci0gICAgICAgICAgICBpc05ld1JlZGlyZWN0
VG9FbnRyeSA9IHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcy50b3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c1RvLmFkZCh0YXJnZXRQcmltYXJ5RG9tYWluKS5pc05ld0VudHJ5OwotICAgICAgICAgICAg
YXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1h
cnlEb21haW4odGFyZ2V0UHJpbWFyeURvbWFpbik7Ci0gICAgICAgICAgICBpc05ld1JlZGlyZWN0
RnJvbUVudHJ5ID0gdGFyZ2V0U3RhdGlzdGljcy50b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20u
YWRkKHNvdXJjZVByaW1hcnlEb21haW4pLmlzTmV3RW50cnk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBhdXRvJiByZWRpcmVjdGluZ09yaWdpblN0YXRpc3RpY3MgPSBlbnN1cmVSZXNv
dXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHNvdXJjZVByaW1hcnlEb21haW4pOwotICAg
ICAgICAgICAgaXNOZXdSZWRpcmVjdFRvRW50cnkgPSByZWRpcmVjdGluZ09yaWdpblN0YXRpc3Rp
Y3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5hZGQodGFyZ2V0UHJpbWFyeURvbWFpbiku
aXNOZXdFbnRyeTsKLSAgICAgICAgICAgIGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1cmVS
ZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHRhcmdldFByaW1hcnlEb21haW4pOwot
ICAgICAgICAgICAgaXNOZXdSZWRpcmVjdEZyb21FbnRyeSA9IHRhcmdldFN0YXRpc3RpY3Muc3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tLmFkZChzb3VyY2VQcmltYXJ5RG9tYWluKS5pc05l
d0VudHJ5OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzTmV3UmVkaXJlY3RUb0VudHJ5IHx8
IGlzTmV3UmVkaXJlY3RGcm9tRW50cnkpCi0gICAgICAgICAgICBzaG91bGRDYWxsTm90aWZpY2F0
aW9uQ2FsbGJhY2sgPSB0cnVlOwotICAgIH0KLQotICAgIGlmIChzaG91bGRDYWxsTm90aWZpY2F0
aW9uQ2FsbGJhY2spCi0gICAgICAgIHNjaGVkdWxlTm90aWZpY2F0aW9uSWZOZWVkZWQoKTsKLX0K
LQogLy8gRklYTUU6IFRoaXMgcXVpcmsgd2FzIGFkZGVkIHRvIGFkZHJlc3MgPHJkYXI6Ly9wcm9i
bGVtLzMzMzI1ODgxPiBhbmQgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBjb250ZW50IGlzIGZpeGVk
Lgogc3RhdGljIGJvb2wgcmVzb3VyY2VOZWVkc1NTT1F1aXJrKFBhZ2UqIHBhZ2UsIGNvbnN0IFVS
TCYgdXJsKQogewpAQCAtMjQyLDcgKzE0NSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OmxvZ1N1YnJlc291cmNlTG9hZGluZyhjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291CiAg
ICAgYm9vbCBzaG91bGRDYWxsTm90aWZpY2F0aW9uQ2FsbGJhY2sgPSBmYWxzZTsKICAgICB7CiAg
ICAgICAgIGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JQcmltYXJ5RG9tYWluKHRhcmdldFByaW1hcnlEb21haW4pOwotICAgICAgICB0YXJnZXRTdGF0
aXN0aWNzLmxhc3RTZWVuID0gcmVkdWNlVGltZVJlc29sdXRpb24oV2FsbFRpbWU6Om5vdygpKTsK
KyAgICAgICAgdGFyZ2V0U3RhdGlzdGljcy5sYXN0U2VlbiA9IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M6OnJlZHVjZVRpbWVSZXNvbHV0aW9uKFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGlmICh0
YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMuYWRkKG1haW5G
cmFtZVByaW1hcnlEb21haW4pLmlzTmV3RW50cnkpCiAgICAgICAgICAgICBzaG91bGRDYWxsTm90
aWZpY2F0aW9uQ2FsbGJhY2sgPSB0cnVlOwogICAgIH0KQEAgLTI4Nyw3ICsxOTAsNyBAQCB2b2lk
IFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dXZWJTb2NrZXRMb2FkaW5nKGNvbnN0IEZyYW1lKiBm
cmFtZSwgY29uc3QgVVJMJiB0YQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiB0YXJnZXRT
dGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbih0YXJn
ZXRQcmltYXJ5RG9tYWluKTsKLSAgICB0YXJnZXRTdGF0aXN0aWNzLmxhc3RTZWVuID0gcmVkdWNl
VGltZVJlc29sdXRpb24oV2FsbFRpbWU6Om5vdygpKTsKKyAgICB0YXJnZXRTdGF0aXN0aWNzLmxh
c3RTZWVuID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6cmVkdWNlVGltZVJlc29sdXRpb24oV2Fs
bFRpbWU6Om5vdygpKTsKICAgICBpZiAodGFyZ2V0U3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVPcmlnaW5zLmFkZChtYWluRnJhbWVQcmltYXJ5RG9tYWluKS5pc05ld0VudHJ5KQog
ICAgICAgICBzY2hlZHVsZU5vdGlmaWNhdGlvbklmTmVlZGVkKCk7CiB9CkBAIC0zMDQsNyArMjA3
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJl
ZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdCBEb2MKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0
byBkb21haW4gPSBwcmltYXJ5RG9tYWluKHVybCk7Ci0gICAgYXV0byBuZXdUaW1lID0gcmVkdWNl
VGltZVJlc29sdXRpb24oV2FsbFRpbWU6Om5vdygpKTsKKyAgICBhdXRvIG5ld1RpbWUgPSBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzOjpyZWR1Y2VUaW1lUmVzb2x1dGlvbihXYWxsVGltZTo6bm93KCkp
OwogICAgIGF1dG8gbGFzdFJlcG9ydGVkVXNlckludGVyYWN0aW9uID0gbV9sYXN0UmVwb3J0ZWRV
c2VySW50ZXJhY3Rpb25NYXAuZ2V0KGRvbWFpbik7CiAgICAgaWYgKG5ld1RpbWUgPT0gbGFzdFJl
cG9ydGVkVXNlckludGVyYWN0aW9uKQogICAgICAgICByZXR1cm47CkBAIC00MDQsNyArMzA3LDkg
QEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bm90aWZ5T2JzZXJ2ZXIoKQogewogICAgIEFT
U0VSVChtX25vdGlmaWNhdGlvbkNhbGxiYWNrKTsKICAgICBtX25vdGlmaWNhdGlvblRpbWVyLnN0
b3AoKTsKLSAgICBtX25vdGlmaWNhdGlvbkNhbGxiYWNrKHRha2VTdGF0aXN0aWNzKCkpOworICAg
IGF1dG8gc3RhdGlzdGljcyA9IHRha2VTdGF0aXN0aWNzKCk7CisgICAgaWYgKCFzdGF0aXN0aWNz
LmlzRW1wdHkoKSkKKyAgICAgICAgbV9ub3RpZmljYXRpb25DYWxsYmFjayhXVEZNb3ZlKHN0YXRp
c3RpY3MpKTsKIH0KIAogU3RyaW5nIFJlc291cmNlTG9hZE9ic2VydmVyOjpzdGF0aXN0aWNzRm9y
T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuaAppbmRleCAxODgwZjY3MGJkYS4uNTI1NzBhNzlhYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCkBAIC01Myw3ICs1
Myw2IEBAIGNsYXNzIFJlc291cmNlTG9hZE9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVzb3VyY2VMb2FkT2JzZXJ2ZXImIHNoYXJlZCgpOwogCi0gICAgdm9p
ZCBsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgRnJhbWUmLCBjb25zdCBGcmFtZSYgdG9wRnJhbWUs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwgY29uc3QgVVJMJiByZWRpcmVjdFVy
bCk7CiAgICAgdm9pZCBsb2dTdWJyZXNvdXJjZUxvYWRpbmcoY29uc3QgRnJhbWUqLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgbG9nV2ViU29ja2V0TG9hZGluZyhjb25zdCBGcmFtZSos
IGNvbnN0IFVSTCYpOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1l
UmVzb2x1dGlvbihjb25zdCBEb2N1bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCmluZGV4IGFkYjEzNmVlODM5Li40MDU5OWQ3MWY3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LmNwcApAQCAtMjgsMTEgKzI4LDE0IEBACiAKICNpbmNsdWRlICJLZXllZENvZGluZy5oIgogI2lu
Y2x1ZGUgIlB1YmxpY1N1ZmZpeC5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgU2Vjb25kcyB0aW1lc3Rh
bXBSZXNvbHV0aW9uIHsgNV9zIH07CisKIHR5cGVkZWYgV1RGOjpIYXNoTWFwPFN0cmluZywgdW5z
aWduZWQsIFN0cmluZ0hhc2gsIEhhc2hUcmFpdHM8U3RyaW5nPiwgSGFzaFRyYWl0czx1bnNpZ25l
ZD4+OjpLZXlWYWx1ZVBhaXJUeXBlIFJlc291cmNlTG9hZFN0YXRpc3RpY3NWYWx1ZTsKIAogc3Rh
dGljIHZvaWQgZW5jb2RlSGFzaENvdW50ZWRTZXQoS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBTdHJpbmcmIGxhYmVsLCBjb25zdCBIYXNoQ291bnRlZFNldDxTdHJpbmc+JiBoYXNoQ291bnRl
ZFNldCkKQEAgLTM1Miw0ICszNTUsNDMgQEAgU3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6
OnByaW1hcnlEb21haW4oU3RyaW5nVmlldyBob3N0KQogICAgIHJldHVybiBob3N0U3RyaW5nOwog
fQogCisvLyBGSVhNRTogVGVtcG9yYXJ5IGZpeCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzMyMzQzMjU2
PiB1bnRpbCBjb250ZW50IGNhbiBiZSB1cGRhdGVkLgorYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjphcmVEb21haW5zQXNzb2NpYXRlZChib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzLCBj
b25zdCBTdHJpbmcmIGZpcnN0RG9tYWluLCBjb25zdCBTdHJpbmcmIHNlY29uZERvbWFpbikKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25lZD4+IG1ldGFEb21haW5JZGVudGlmaWVycyA9IFtdIHsK
KyAgICAgICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBtYXA7CisKKyAgICAgICAgLy8gRG9t
YWlucyBvd25lZCBieSBEb3cgSm9uZXMgJiBDb21wYW55LCBJbmMuCisgICAgICAgIGNvbnN0IHVu
c2lnbmVkIGRvd0pvbmVzSWRlbnRpZmllciA9IDE7CisgICAgICAgIG1hcC5hZGQoQVNDSUlMaXRl
cmFsKCJkb3dqb25lcy5jb20iKSwgZG93Sm9uZXNJZGVudGlmaWVyKTsKKyAgICAgICAgbWFwLmFk
ZChBU0NJSUxpdGVyYWwoIndzai5jb20iKSwgZG93Sm9uZXNJZGVudGlmaWVyKTsKKyAgICAgICAg
bWFwLmFkZChBU0NJSUxpdGVyYWwoImJhcnJvbnMuY29tIiksIGRvd0pvbmVzSWRlbnRpZmllcik7
CisgICAgICAgIG1hcC5hZGQoQVNDSUlMaXRlcmFsKCJtYXJrZXR3YXRjaC5jb20iKSwgZG93Sm9u
ZXNJZGVudGlmaWVyKTsKKyAgICAgICAgbWFwLmFkZChBU0NJSUxpdGVyYWwoIndzanBsdXMuY29t
IiksIGRvd0pvbmVzSWRlbnRpZmllcik7CisKKyAgICAgICAgcmV0dXJuIG1hcDsKKyAgICB9KCk7
CisKKyAgICBpZiAoZmlyc3REb21haW4gPT0gc2Vjb25kRG9tYWluKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIEFTU0VSVCghZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShmaXJzdERvbWFpbiwg
c2Vjb25kRG9tYWluKSk7CisKKyAgICBpZiAoIW5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1bnNpZ25lZCBmaXJzdE1ldGFEb21haW5JZGVudGlm
aWVyID0gbWV0YURvbWFpbklkZW50aWZpZXJzLmdldCgpLmdldChmaXJzdERvbWFpbik7CisgICAg
aWYgKCFmaXJzdE1ldGFEb21haW5JZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gZmlyc3RNZXRhRG9tYWluSWRlbnRpZmllciA9PSBtZXRhRG9tYWluSWRlbnRp
ZmllcnMuZ2V0KCkuZ2V0KHNlY29uZERvbWFpbik7Cit9CisKK1dhbGxUaW1lIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M6OnJlZHVjZVRpbWVSZXNvbHV0aW9uKFdhbGxUaW1lIHRpbWUpCit7CisgICAg
cmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzdGQ6OmZsb29yKHRpbWUuc2Vjb25kc1Np
bmNlRXBvY2goKSAvIHRpbWVzdGFtcFJlc29sdXRpb24pICogdGltZXN0YW1wUmVzb2x1dGlvbi5z
ZWNvbmRzKCkpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljcy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MuaAppbmRleCA1MDBkMmQ4ZGRkZS4uZjA0N2M3N2NkZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaApAQCAtNTMsNiArNTMs
OSBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyB7CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFN0cmluZyBwcmltYXJ5RG9tYWluKGNvbnN0IFVSTCYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBTdHJpbmcgcHJpbWFyeURvbWFpbihTdHJpbmdWaWV3IGhvc3QpOwogCisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgYXJlRG9tYWluc0Fzc29jaWF0ZWQoYm9vbCBuZWVk
c1NpdGVTcGVjaWZpY1F1aXJrcywgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFdhbGxUaW1lIHJlZHVjZVRpbWVSZXNvbHV0aW9uKFdhbGxU
aW1lKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5jb2RlKEtleWVkRW5jb2RlciYpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZGVjb2RlKEtleWVkRGVjb2RlciYsIHVuc2ln
bmVkIG1vZGVsVmVyc2lvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDhjMWQzNWZhYzA4Li40OWU2ZDZjOTcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMTUsNiArMTE1LDcgQEAKICNpbmNsdWRlICJXZWJQ
cm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldl
YlByb3RlY3Rpb25TcGFjZS5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oIgogI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXIuaCIKICNpbmNsdWRlICJXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUu
aCIKQEAgLTM5ODEsNyArMzk4Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmcmFtZURpZEJlY29t
ZUZyYW1lU2V0KHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgdmFsdWUpCiAgICAgICAgIG1fZnJhbWVT
ZXRMYXJnZXN0RnJhbWUgPSB2YWx1ZSA/IG1fbWFpbkZyYW1lIDogMDsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0
X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3Jp
Z2luYWxSZXF1ZXN0LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5l
cklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgRnJhbWVJ
bmZvRGF0YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1Bh
Z2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAg
ICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24gLSBPcmlnaW5hbCBVUkwgJXMsIGN1cnJlbnQgdGFyZ2V0IFVSTCAlcyIsIG9yaWdpbmFs
UmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0LnVybCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogCkBAIC00MDQwLDYgKzQwNDEsOSBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBTZWN1cgogCiAgICAgV2ViRnJhbWVQcm94eSogb3JpZ2luYXRpbmdGcmFtZSA9IG1fcHJv
Y2Vzcy0+d2ViRnJhbWUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQpOwogCisgICAg
aWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmUo
KS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS0+bG9nRnJhbWVOYXZpZ2F0aW9uKCpmcmFtZSwgVVJMKFVSTCgpLCBtX3BhZ2VMb2Fk
U3RhdGUudXJsKCkpLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLnVybCgpKTsKKwogICAgIGlm
IChtX25hdmlnYXRpb25DbGllbnQpIHsKICAgICAgICAgYXV0byBkZXN0aW5hdGlvbkZyYW1lSW5m
byA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKmZyYW1lLCBmcmFtZVNlY3VyaXR5T3JpZ2luLnNl
Y3VyaXR5T3JpZ2luKCkpOwogICAgICAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IHNvdXJjZUZy
YW1lSW5mbzsKQEAgLTQwNjAsMTIgKzQwNjQsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXIK
ICAgICBtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNp
b24gPSBmYWxzZTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBjb25zdCBGcmFtZUlu
Zm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFn
ZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCit2b2lkIFdl
YlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5
T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJ
bmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYgcmVw
bHkpCiB7CiAgICAgQVNTRVJUKCFtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkpOwog
ICAgIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lSZXBseSA9IFdURk1vdmUocmVwbHkpOwog
Ci0gICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihmcmFtZUlELCBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBv
cmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVl
c3QsIFdURk1vdmUocmVxdWVzdCksIGxpc3RlbmVySUQsIHVzZXJEYXRhKTsKKyAgICBkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGZyYW1lSUQsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIG5h
dmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIG9yaWdpbmF0aW5nRnJh
bWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgbGlzdGVuZXJJRCwgdXNlckRhdGEp
OwogCiAgICAgLy8gSWYgdGhlIGNsaWVudCBkaWQgbm90IHJlc3BvbmQgc3luY2hyb25vdXNseSwg
cHJvY2VlZCB3aXRoIHRoZSBsb2FkLgogICAgIGlmIChhdXRvIHN5bmNOYXZpZ2F0aW9uQWN0aW9u
UG9saWN5UmVwbHkgPSBXVEZNb3ZlKG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lSZXBseSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDAzOTI1MGYxOTNkLi5i
MTA1MGM5NDA5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEz
OTksOCArMTM5OSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZERlc3Ryb3lOYXZpZ2F0aW9u
KHVpbnQ2NF90IG5hdmlnYXRpb25JRCk7CiAKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmln
YXRpb25BY3Rpb25EYXRhJiYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50NjRfdCBvcmlnaW5h
dGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25z
dCBVc2VyRGF0YSYpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5
bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBm
cmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rp
b25EYXRhJiYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0
YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25TeW5jOjpEZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRp
bmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlZGlyZWN0UmVzcG9uc2UsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7
CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgY29u
c3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCB1
aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7
CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2lu
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29u
c3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRh
Jik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50
NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgdW5hYmxlVG9JbXBs
ZW1lbnRQb2xpY3kodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIGNvbnN0IFVzZXJEYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMTA1MDBlZTQ5ZmQuLjdmM2M2NjgzYzYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC05OSw4ICs5OSw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICAjIFBvbGlj
eSBtZXNzYWdlcwogICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQs
IHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNl
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlv
bkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFt
ZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgc3RydWN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmln
YXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5n
RnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAo
dWludDY0X3QgbmV3TmF2aWdhdGlvbklELCBlbnVtIFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xp
Y3lBY3Rpb24sIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6Om9wdGlvbmFsPFdl
YktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzKSBEZWxheWVkCisgICAg
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdG
cmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlv
bkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9E
YXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgdWludDY0X3QgbGlzdGVuZXJJ
RCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKHVpbnQ2NF90IG5ld05hdmlnYXRpb25J
RCwgZW51bSBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBXZWJLaXQ6OkRvd25s
b2FkSUQgZG93bmxvYWRJRCwgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0Rh
dGE+IHdlYnNpdGVQb2xpY2llcykgRGVsYXllZAogICAgIERlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25E
YXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgU3RyaW5nIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0
YSB1c2VyRGF0YSkKICAgICBVbmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlE
LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA1MzgyYTU1NjEwZi4uMzg0NDgxYmYzYjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgogI2luY2x1ZGUgIlBsdWdpblBy
b2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgIldlYkZyYW1lUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQ
YWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmVNZXNzYWdlcy5oIgpAQCAtNTgsNiArNjAsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Rh
dGljIGlubGluZSBTdHJpbmcgaXNvbGF0ZWRQcmltYXJ5RG9tYWluKGNvbnN0IFQmIHZhbHVlKQog
ICAgIHJldHVybiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpwcmltYXJ5RG9tYWluKHZhbHVlKS5p
c29sYXRlZENvcHkoKTsKIH0KIAorc3RhdGljIGJvb2wgYXJlRG9tYWluc0Fzc29jaWF0ZWQoV2Vi
UGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIGZpcnN0RG9tYWluLCBjb25zdCBTdHJpbmcm
IHNlY29uZERvbWFpbikKK3sKKyAgICBib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzID0gcGFn
ZSAmJiBwYWdlLT5wcmVmZXJlbmNlcygpLm5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCk7CisgICAg
cmV0dXJuIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmFyZURvbWFpbnNBc3NvY2lhdGVkKG5lZWRz
U2l0ZVNwZWNpZmljUXVpcmtzLCBmaXJzdERvbWFpbiwgc2Vjb25kRG9tYWluKTsKK30KKwogY29u
c3QgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4mIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4+IGRhdGFUeXBlcyhzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8V2Vic2l0ZURhdGFUeXBlPih7CkBAIC01NDYsNiArNTU0LDc5IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2Rl
KGJvb2wgZW5hCiAjZW5kaWYKIH0KIAordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3Qg
VVJMJiBwYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKKworICAgIGF1dG8gc291cmNlVVJMID0gcmVkaXJlY3RVUkw7CisgICAgYm9vbCBp
c1JlZGlyZWN0ID0gIXJlZGlyZWN0VVJMLmlzTnVsbCgpOworICAgIGlmICghaXNSZWRpcmVjdCkg
eworICAgICAgICBzb3VyY2VVUkwgPSBmcmFtZS51cmwoKTsKKyAgICAgICAgaWYgKHNvdXJjZVVS
TC5pc051bGwoKSkKKyAgICAgICAgICAgIHNvdXJjZVVSTCA9IHBhZ2VVUkw7CisgICAgfQorCisg
ICAgYXV0byYgdGFyZ2V0VVJMID0gcmVxdWVzdC51cmwoKTsKKworICAgIGlmICghdGFyZ2V0VVJM
LmlzVmFsaWQoKSB8fCAhcGFnZVVSTC5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gdGFyZ2V0SG9zdCA9IHRhcmdldFVSTC5ob3N0KCk7CisgICAgYXV0byBtYWluRnJhbWVI
b3N0ID0gcGFnZVVSTC5ob3N0KCk7CisKKyAgICBpZiAodGFyZ2V0SG9zdC5pc0VtcHR5KCkgfHwg
bWFpbkZyYW1lSG9zdC5pc0VtcHR5KCkgfHwgdGFyZ2V0SG9zdCA9PSBzb3VyY2VVUkwuaG9zdCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBwYWdlID0gZnJhbWUucGFnZSgpOworICAg
IGF1dG8gdGFyZ2V0UHJpbWFyeURvbWFpbiA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnByaW1h
cnlEb21haW4odGFyZ2V0VVJMKTsKKyAgICBhdXRvIG1haW5GcmFtZVByaW1hcnlEb21haW4gPSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpwcmltYXJ5RG9tYWluKHBhZ2VVUkwpOworICAgIGF1dG8g
c291cmNlUHJpbWFyeURvbWFpbiA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnByaW1hcnlEb21h
aW4oc291cmNlVVJMKTsKKworICAgIGJvb2wgYXJlVGFyZ2V0QW5kTWFpbkZyYW1lRG9tYWluc0Fz
c29jaWF0ZWQgPSBhcmVEb21haW5zQXNzb2NpYXRlZChwYWdlLCB0YXJnZXRQcmltYXJ5RG9tYWlu
LCBtYWluRnJhbWVQcmltYXJ5RG9tYWluKTsKKyAgICBib29sIGFyZVRhcmdldEFuZFNvdXJjZURv
bWFpbnNBc3NvY2lhdGVkID0gYXJlRG9tYWluc0Fzc29jaWF0ZWQocGFnZSwgdGFyZ2V0UHJpbWFy
eURvbWFpbiwgc291cmNlUHJpbWFyeURvbWFpbik7CisKKyAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGFyZ2V0UHJp
bWFyeURvbWFpbiA9IHRhcmdldFByaW1hcnlEb21haW4uaXNvbGF0ZWRDb3B5KCksIG1haW5GcmFt
ZVByaW1hcnlEb21haW4gPSBtYWluRnJhbWVQcmltYXJ5RG9tYWluLmlzb2xhdGVkQ29weSgpLCBz
b3VyY2VQcmltYXJ5RG9tYWluID0gc291cmNlUHJpbWFyeURvbWFpbi5pc29sYXRlZENvcHkoKSwg
dGFyZ2V0SG9zdCA9IHRhcmdldEhvc3QudG9TdHJpbmcoKS5pc29sYXRlZENvcHkoKSwgbWFpbkZy
YW1lSG9zdCA9IG1haW5GcmFtZUhvc3QudG9TdHJpbmcoKS5pc29sYXRlZENvcHkoKSwgYXJlVGFy
Z2V0QW5kTWFpbkZyYW1lRG9tYWluc0Fzc29jaWF0ZWQsIGFyZVRhcmdldEFuZFNvdXJjZURvbWFp
bnNBc3NvY2lhdGVkLCBpc1JlZGlyZWN0LCBpc01haW5GcmFtZSA9IGZyYW1lLmlzTWFpbkZyYW1l
KCldIHsKKyAgICAgICAgYm9vbCBzdGF0aXN0aWNzV2VyZVVwZGF0ZWQgPSBmYWxzZTsKKyAgICAg
ICAgaWYgKHRhcmdldEhvc3QgIT0gbWFpbkZyYW1lSG9zdCAmJiAhKGFyZVRhcmdldEFuZE1haW5G
cmFtZURvbWFpbnNBc3NvY2lhdGVkIHx8IGFyZVRhcmdldEFuZFNvdXJjZURvbWFpbnNBc3NvY2lh
dGVkKSkgeworICAgICAgICAgICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4odGFyZ2V0UHJpbWFyeURvbWFpbik7CisgICAg
ICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLmxhc3RTZWVuID0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
czo6cmVkdWNlVGltZVJlc29sdXRpb24oV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRTdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMuYWRkKG1haW5G
cmFtZVByaW1hcnlEb21haW4pLmlzTmV3RW50cnkpCisgICAgICAgICAgICAgICAgc3RhdGlzdGlj
c1dlcmVVcGRhdGVkID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpc1JlZGlyZWN0
ICYmICFhcmVUYXJnZXRBbmRTb3VyY2VEb21haW5zQXNzb2NpYXRlZCkgeworICAgICAgICAgICAg
aWYgKGlzTWFpbkZyYW1lKSB7CisgICAgICAgICAgICAgICAgYXV0byYgcmVkaXJlY3RpbmdPcmln
aW5TdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihz
b3VyY2VQcmltYXJ5RG9tYWluKTsKKyAgICAgICAgICAgICAgICBpZiAocmVkaXJlY3RpbmdPcmln
aW5TdGF0aXN0aWNzLnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8uYWRkKHRhcmdldFByaW1hcnlE
b21haW4pLmlzTmV3RW50cnkpCisgICAgICAgICAgICAgICAgICAgIHN0YXRpc3RpY3NXZXJlVXBk
YXRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVu
c3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4odGFyZ2V0UHJpbWFyeURvbWFp
bik7CisgICAgICAgICAgICAgICAgaWYgKHRhcmdldFN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNGcm9tLmFkZChzb3VyY2VQcmltYXJ5RG9tYWluKS5pc05ld0VudHJ5KQorICAgICAg
ICAgICAgICAgICAgICBzdGF0aXN0aWNzV2VyZVVwZGF0ZWQgPSB0cnVlOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvJiByZWRpcmVjdGluZ09yaWdpblN0YXRpc3Rp
Y3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHNvdXJjZVByaW1h
cnlEb21haW4pOworICAgICAgICAgICAgICAgIGlmIChyZWRpcmVjdGluZ09yaWdpblN0YXRpc3Rp
Y3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5hZGQodGFyZ2V0UHJpbWFyeURvbWFpbiku
aXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljc1dlcmVVcGRhdGVkID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVz
b3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbih0YXJnZXRQcmltYXJ5RG9tYWluKTsKKyAg
ICAgICAgICAgICAgICBpZiAodGFyZ2V0U3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c0Zyb20uYWRkKHNvdXJjZVByaW1hcnlEb21haW4pLmlzTmV3RW50cnkpCisgICAgICAgICAg
ICAgICAgICAgIHN0YXRpc3RpY3NXZXJlVXBkYXRlZCA9IHRydWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIXN0YXRpc3RpY3NXZXJlVXBkYXRlZCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBpZiAobV9oYXNTY2hlZHVsZWRQcm9jZXNzU3RhdHMpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9oYXNTY2hlZHVsZWRQcm9jZXNzU3RhdHMg
PSB0cnVlOworICAgICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2hBZnRlcigxX3MsIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgICAgIG1faGFz
U2NoZWR1bGVkUHJvY2Vzc1N0YXRzID0gZmFsc2U7CisgICAgICAgICAgICB1cGRhdGVDb29raWVQ
YXJ0aXRpb25pbmcoW10oKSB7IH0pOworICAgICAgICAgICAgcHJvY2Vzc1N0YXRpc3RpY3NBbmRE
YXRhUmVjb3JkcygpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCkK
IHsKICAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAppbmRleCA0NjhkNTk0ODY4OS4uY2U5YzNjYmZlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBA
IC00OCw2ICs0OCw3IEBAIGNsYXNzIFdvcmtRdWV1ZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEtleWVkRGVjb2RlcjsKIGNsYXNzIEtleWVkRW5jb2RlcjsKK2NsYXNzIFJlc291cmNlUmVx
dWVzdDsKIGNsYXNzIFVSTDsKIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogfQpAQCAt
NTUsNiArNTYsNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBPcGVyYXRpbmdEYXRlOworY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNs
YXNzIFdlYlByb2Nlc3NQcm94eTsKIAogZW51bSBjbGFzcyBTaG91bGRDbGVhckZpcnN0OwpAQCAt
OTksNiArMTAxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlv
bihXZWJQcm9jZXNzUHJveHkmLCBJUEM6OkNvbm5lY3Rpb24mKTsKICAgICB2b2lkIGFwcGxpY2F0
aW9uV2lsbFRlcm1pbmF0ZSgpOwogCisgICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oY29uc3Qg
V2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcGFnZVVSTCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6VVJMJiByZWRpcmVjdFVSTCk7CiAg
ICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7CiAgICAgdm9p
ZCBsb2dOb25SZWNlbnRVc2VySW50ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7CiAgICAg
dm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmKTsKQEAgLTI0MSw2
ICsyNDQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kZWJ1Z01vZGVFbmFibGVkIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fZGVidWdMb2dnaW5nRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X3N0b3JhZ2VBY2Nlc3NQcm9tcHRzRW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1Nj
aGVkdWxlZFByb2Nlc3NTdGF0cyB7IGZhbHNlIH07CiAKICAgICBGdW5jdGlvbjx2b2lkIChjb25z
dCBTdHJpbmcmKT4gbV9zdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDAxOWQ4YmU1OTBhLi44NDMwZmI2YWQwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC04MTMsNyArODEzLDcgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6YXBwbHlUb0RvY3VtZW50TG9hZGVyKFdlYnNpdGVQb2xpY2llc0Rh
dGEmJiB3ZWJzaXRlUG8KICAgICBXZWJzaXRlUG9saWNpZXNEYXRhOjphcHBseVRvRG9jdW1lbnRM
b2FkZXIoV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCAqZG9jdW1lbnRMb2FkZXIpOwogfQogCi12
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNl
LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgUG9saWN5RGVjaXNpb25Nb2RlIHBvbGljeURlY2lzaW9u
TW9kZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQordm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgRm9ybVN0
YXRlKiBmb3JtU3RhdGUsIFBvbGljeURlY2lzaW9uTW9kZSBwb2xpY3lEZWNpc2lvbk1vZGUsIEZy
YW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0g
bV9mcmFtZSA/IG1fZnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CiAgICAgaWYgKCF3ZWJQYWdlKSB7
CkBAIC04NjQsNyArODY0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICBuYXZpZ2F0
aW9uQWN0aW9uRGF0YS5jYW5IYW5kbGVSZXF1ZXN0ID0gd2ViUGFnZS0+Y2FuSGFuZGxlUmVxdWVz
dChyZXF1ZXN0KTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5ID0gbmF2aWdhdGlvbkFjdGlvbi5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
KCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuZG93bmxvYWRBdHRyaWJ1dGUgPSBuYXZpZ2F0
aW9uQWN0aW9uLmRvd25sb2FkQXR0cmlidXRlKCk7Ci0gICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEu
aXNSZWRpcmVjdCA9IGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlOworICAgIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLmlzUmVkaXJlY3QgPSAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKTsKICAgICBu
YXZpZ2F0aW9uQWN0aW9uRGF0YS50cmVhdEFzU2FtZU9yaWdpbk5hdmlnYXRpb24gPSBuYXZpZ2F0
aW9uQWN0aW9uLnRyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbigpOwogICAgIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLmlzQ3Jvc3NPcmlnaW5XaW5kb3dPcGVuTmF2aWdhdGlvbiA9IG5hdmlnYXRpb25B
Y3Rpb24uaXNDcm9zc09yaWdpbldpbmRvd09wZW5OYXZpZ2F0aW9uKCk7CiAgICAgbmF2aWdhdGlv
bkFjdGlvbkRhdGEuaGFzT3BlbmVkRnJhbWVzID0gbmF2aWdhdGlvbkFjdGlvbi5oYXNPcGVuZWRG
cmFtZXMoKTsKQEAgLTg5Miw3ICs4OTIsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdAogICAg
ICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQ7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2Vic2l0
ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzOwogCi0gICAgICAgIGlmICghd2ViUGFnZS0+
c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvblN5bmMobV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21G
cmFtZShjb3JlRnJhbWUpLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRp
b25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlE
LCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LCBsaXN0ZW5lcklE
LCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5k
bGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6UmVwbHkobmV3TmF2aWdhdGlvbklELCBw
b2xpY3lBY3Rpb24sIGRvd25sb2FkSUQsIHdlYnNpdGVQb2xpY2llcykpKSB7CisgICAgICAgIGlm
ICghd2ViUGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMobV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklE
KCksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdp
bmF0aW5nUGFnZUlELCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0
LCByZWRpcmVjdFJlc3BvbnNlLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkp
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
U3luYzo6UmVwbHkobmV3TmF2aWdhdGlvbklELCBwb2xpY3lBY3Rpb24sIGRvd25sb2FkSUQsIHdl
YnNpdGVQb2xpY2llcykpKSB7CiAgICAgICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9KTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtOTAyLDcgKzkwMiw3IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihjb25zdCBOYXZpZ2F0CiAgICAgfQogCiAgICAgQVNTRVJUKHBvbGljeURlY2lzaW9uTW9k
ZSA9PSBQb2xpY3lEZWNpc2lvbk1vZGU6OkFzeW5jaHJvbm91cyk7Ci0gICAgaWYgKCF3ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24obV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShj
b3JlRnJhbWUpLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25BY3Rp
b25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBuYXZp
Z2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LCBsaXN0ZW5lcklELCBVc2Vy
RGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVz
ZXJEYXRhLmdldCgpKS5nZXQoKSkpKSkKKyAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihtX2ZyYW1lLT5m
cmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksIGRvY3Vt
ZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0
aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVz
b3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIGxpc3RlbmVySUQsIFVz
ZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMo
dXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpKQogICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAxZjkyNzAxYzNiYi4uNjNj
YmIxMmZjYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMjUsNyArMTI1LDcg
QEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CiAgICAg
dm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBXZWJDb3Jl
OjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2Vi
Q29yZTo6Rm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OkZyYW1l
UG9saWN5RnVuY3Rpb24mJikgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9u
c2UsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIFdlYkNvcmU6OlBvbGljeURlY2lzaW9uTW9kZSwgV2Vi
Q29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0
aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgV2Vi
Q29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYp
IGZpbmFsOwogICAgIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSBmaW5hbDsKICAgICAKICAgICB2
b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMGQ2YWFmODdh
ZjMuLjM4OGQxNGFiZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTEyOCw3ICsx
MjgsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwogICAg
IHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgV2ViQ29y
ZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdl
YkNvcmU6OkZvcm1TdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6
OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0
UmVzcG9uc2UsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIFdlYkNvcmU6OlBvbGljeURlY2lzaW9uTW9k
ZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0
aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6Rm9ybVN0YXRl
KiwgV2ViQ29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0
aW9uJiYpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSBmaW5hbDsKIAogICAg
IHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGU1OWMx
ODk5MWM3Li40OTg3MGRlYjU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTkw
MSw3ICs5MDEsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aQogICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNldFVwUG9saWN5TGlzdGVuZXIoV1RGTW92ZShmdW5j
dGlvbiksIFBvbGljeUFjdGlvbjo6SWdub3JlLCB0cnlBcHBMaW5rID8gKE5TVVJMICopcmVxdWVz
dC51cmwoKSA6IG5pbCkuZ2V0KCldOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wsIEZvcm1T
dGF0ZSogZm9ybVN0YXRlLCBQb2xpY3lEZWNpc2lvbk1vZGUsIEZyYW1lUG9saWN5RnVuY3Rpb24m
JiBmdW5jdGlvbikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIEZv
cm1TdGF0ZSogZm9ybVN0YXRlLCBQb2xpY3lEZWNpc2lvbk1vZGUsIEZyYW1lUG9saWN5RnVuY3Rp
b24mJiBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dl
YkZyYW1lLmdldCgpKTsKICAgICBCT09MIHRyeUFwcExpbmsgPSBzaG91bGRUcnlBcHBMaW5rKHdl
YlZpZXcsIGFjdGlvbiwgY29yZShtX3dlYkZyYW1lLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKaW5kZXggZDQ1ZjNjMzE0MWMuLjIwNThiZTU2ZTMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCkBAIC01NjUsNyArNTY1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2
aWdhdGkKICAgICBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZS0+bV9wb2xpY3lGdW5jdGlvbihQb2xp
Y3lBY3Rpb246OlVzZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBh
Y3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCwgRm9ybVN0YXRlKiBm
b3JtU3RhdGUsIFdlYkNvcmU6OlBvbGljeURlY2lzaW9uTW9kZSwgRnJhbWVQb2xpY3lGdW5jdGlv
biYmIGZ1bmN0aW9uKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Rm9ybVN0YXRlKiBmb3JtU3RhdGUsIFdlYkNvcmU6OlBvbGljeURlY2lzaW9uTW9kZSwgRnJhbWVQ
b2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dl
YkZyYW1lLT53ZWJWaWV3KCk7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUobV93ZWJGcmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAxYTAzMTA2ZjM5Ny4uMzViNjY1YTRm
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTAyLDcgKzEwMiw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
V2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRp
b25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGb3Jt
U3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1lLCBXZWJDb3JlOjpGcmFtZVBvbGlj
eUZ1bmN0aW9uJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNl
LCBXZWJDb3JlOjpGb3JtU3RhdGUqLCBXZWJDb3JlOjpQb2xpY3lEZWNpc2lvbk1vZGUsIFdlYkNv
cmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFj
dGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIFdl
YkNvcmU6OlBvbGljeURlY2lzaW9uTW9kZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYm
KSBvdmVycmlkZTsKICAgICB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAppbmRleCBiYTg1MTg5NTQ5ZC4uNzlhM2Y1NTk3ZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC00MTQsNiArNDE0LDcgQEAgV0tSZXRhaW5Q
dHI8V0tDb250ZXh0Q29uZmlndXJhdGlvblJlZj4gVGVzdENvbnRyb2xsZXI6OmdlbmVyYXRlQ29u
dGV4dENvbmZpZ3VyYXQKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdFdLKFdLQ29udGV4
dENvbmZpZ3VyYXRpb25DcmVhdGUoKSk7CiAgICAgV0tDb250ZXh0Q29uZmlndXJhdGlvblNldElu
amVjdGVkQnVuZGxlUGF0aChjb25maWd1cmF0aW9uLmdldCgpLCBpbmplY3RlZEJ1bmRsZVBhdGgo
KSk7CiAgICAgV0tDb250ZXh0Q29uZmlndXJhdGlvblNldEZ1bGx5U3luY2hyb25vdXNNb2RlSXNB
bGxvd2VkRm9yVGVzdGluZyhjb25maWd1cmF0aW9uLmdldCgpLCB0cnVlKTsKKyAgICBXS0NvbnRl
eHRDb25maWd1cmF0aW9uU2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uKGNvbmZpZ3VyYXRpb24u
Z2V0KCksIHRydWUpOwogCiAgICAgaWYgKGNvbnN0IGNoYXIqIGR1bXBSZW5kZXJUcmVlVGVtcCA9
IGxpYnJhcnlQYXRoRm9yVGVzdGluZygpKSB7CiAgICAgICAgIFN0cmluZyB0ZW1wb3JhcnlGb2xk
ZXIgPSBTdHJpbmc6OmZyb21VVEY4KGR1bXBSZW5kZXJUcmVlVGVtcCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342605</attachid>
            <date>2018-06-12 15:47:29 -0700</date>
            <delta_ts>2018-06-13 14:31:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186545-20180612154728.patch</filename>
            <type>text/plain</type>
            <size>66297</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyNzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk2ZjgwZjE5YzIzMmJk
YjEzYTRiNjQ5MTZlYzYyZTE4MzFiMzRjZS4uMjU5MDBhOTc5MzViZWY2OWY1YjhhMDEyNDE4ZjU5
Mzk5NGNmZTAwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE4LTA2LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUFNPTjogaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3At
ZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWwgQVNTRVJUUyB3aXRoIHByb2Nlc3Mgc3dhcCBl
bmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODY1NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
b3ZlIGZyYW1lIG5hdmlnYXRpb24gbG9nZ2luZyBmb3IgSVRQIHB1cnBvc2VzIGZyb20gdGhlIFdl
YlByb2Nlc3MgdG8gdGhlIFVJUHJvY2Vzcy4KKyAgICAgICAgVGhpcyBpbmZvcm1hdGlvbiB3YXMg
cHJldmlvdXNseSBsb2dnZWQgaW4gRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCgpIGFu
ZCB3YXMgZ2V0dGluZworICAgICAgICBzeW5jJ2QgdG8gdGhlIFVJUHJvY2VzcyBhdCByZWd1bGFy
IGludGVydmFscyBvciB3aGVuIHRoZSBsYXlvdXQgdGVzdHMgY2FsbCB0ZXN0UnVubmVyJ3MKKyAg
ICAgICAgc3RhdGlzdGljc05vdGlmeU9ic2VydmVyKCkuIFdlIG5vdyBkbyB0aGUgbG9nZ2luZyBk
aXJlY3RseSBpbiB0aGUgVUlQcm9jZXNzLCBpbgorICAgICAgICBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gKHdoaWNoIHdhcyBnZXR0aW5nIGNhbGxlZCB2aWEg
SVBDIGZyb20KKyAgICAgICAgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCgpKS4KKwor
ICAgICAgICBUaGlzIGlzIG1vcmUgZWZmaWNpZW50IGFuZCB3aWxsIGFsc28gYmUgbmVlZGVkIHNv
b24gZHVlIHRvIHRoZSB3YXkgcHJvY2VzcyBzd2FwIG9uIG5hdmlnYXRpb24KKyAgICAgICAgZGVh
bHMgd2l0aCBjcm9zcy1vcmlnaW4gcmVkaXJlY3RzLiBPbiBjcm9zcy1vcmlnaW4gcmVkaXJlY3Qg
b2YgdGhlIG1haW4gZnJhbWUsIFBTT04gY2FuY2VscworICAgICAgICB0aGUgbG9hZCBhbmQgc3Rh
cnRlZCBhIG5ldyBsb2FkIHRvIHRoZSByZWRpcmVjdGVkIHRvIFVSTCBpbiB0aGUgbmV3IFdlYlBy
b2Nlc3MuIEFzIGEgcmVzdWx0LAorICAgICAgICB0aGUgbmV3IFdlYlByb2Nlc3MgaXMgbm90IGF3
YXJlIHRoYXQgdGhlIGxvYWQgaXMgYSByZWRpcmVjdCwgd2hpY2ggaXMgaW5mb3JtYXRpb24gdGhh
dCBJVFAKKyAgICAgICAgcmVxdWlyZXMuIEJ5IG1vdmluZyB0aGUgSVRQIGxvZ2dpbmcgdG8gdGhl
IFVJUHJvY2Vzcywgd2Ugc3RpbGwgaGF2ZSBhY2Nlc3MgdG8gdGhpcworICAgICAgICBpbmZvcm1h
dGlvbi4gCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIFN0b3Ag
bG9nZ2luZyB0aGUgbmF2aWdhdGlvbiBub3cgdGhhdCBpdCBpcyBsb2dnZWQgaW4gdGhlIFVJUHJv
Y2Vzcy4KKworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6bG9hZFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9h
ZFdpdGhEb2N1bWVudExvYWRlcik6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKiBsb2Fk
ZXIvUG9saWN5Q2hlY2tlci5oOgorICAgICAgICBXZSBub3cgcGFzcyB0aGUgZnVsbCByZWRpcmVj
dCByZXF1ZXN0IHRvIHRoZSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uCisgICAgICAg
IGRlbGVnYXRlIGluc3RlYWQgb2YgYSBzaW1wbGUgaXNSZWRpcmVjdCBib29sZWFuLCBzbyB0aGF0
IHdlIGhhdmUgdGhlIHJlZGlyZWN0CisgICAgICAgIHJlc3BvbnNlIFVSTCBpbiB0aGUgVUlQcm9j
ZXNzIGZvciBJVFAgbG9nZ2luZy4KKworICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRPYnNl
cnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcmVEb21haW5zQXNzb2NpYXRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dXZWJTb2NrZXRM
b2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2Vy
SW50ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKToKKyAgICAgICAgKiBsb2FkZXIv
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjph
cmVEb21haW5zQXNzb2NpYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzOjpyZWR1Y2VUaW1lUmVzb2x1dGlvbik6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3MuaDoKKyAgICAgICAgLSBSZW1vdmUgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OmxvZ0ZyYW1lTmF2aWdhdGlvbigpIG5vdyB0aGF0IGl0IGlzIG9uIHRoZSBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuCisgICAgICAgIC0gTW92ZSBzb21lIGNvZGUgZnJvbSBSZXNvdXJj
ZUxvYWRPYnNlcnZlciB0byBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHNvIHRoYXQgaXQgY2FuCisg
ICAgICAgICAgYmUgY2FsbGVkIGZyb20gdGhlIFVJUHJvY2VzcyBhbmQgdG8gYXZvaWQgY29kZSBk
dXBsaWNhdGlvbi4KKwogMjAxOC0wNi0xMiAgSmlhbmp1biBaaHUgIDxqaWFuanVuLnpodUBpbnRl
bC5jb20+CiAKICAgICAgICAgSGFzaCBkZXZpY2VJZCBhbmQgZ3JvdXBJZCBvZiBNZWRpYVRyYWNr
Q2FwYWJpbGl0aWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1MTdiODdjMjliM2RkNjEyNzFiZmNmM2VmMWU5NTlh
MjUxOGE1NTFkLi5jNjliMTU5ZTJhNDdjOWQ3OGZhY2ExZTEzYTEwZjJiNjRmYzBhYzE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE4LTA2LTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgUFNPTjogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtcmVkaXJlY3QtY29s
bHVzaW9uLmh0bWwgQVNTRVJUUyB3aXRoIHByb2Nlc3Mgc3dhcCBlbmFibGVkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY1NDUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGZyYW1lIG5hdmlnYXRp
b24gbG9nZ2luZyBmb3IgSVRQIHB1cnBvc2VzIGZyb20gdGhlIFdlYlByb2Nlc3MgdG8gdGhlIFVJ
UHJvY2Vzcy4KKyAgICAgICAgVGhpcyBpbmZvcm1hdGlvbiB3YXMgcHJldmlvdXNseSBsb2dnZWQg
aW4gRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCgpIGFuZCB3YXMgZ2V0dGluZworICAg
ICAgICBzeW5jJ2QgdG8gdGhlIFVJUHJvY2VzcyBhdCByZWd1bGFyIGludGVydmFscyBvciB3aGVu
IHRoZSBsYXlvdXQgdGVzdHMgY2FsbCB0ZXN0UnVubmVyJ3MKKyAgICAgICAgc3RhdGlzdGljc05v
dGlmeU9ic2VydmVyKCkuIFdlIG5vdyBkbyB0aGUgbG9nZ2luZyBkaXJlY3RseSBpbiB0aGUgVUlQ
cm9jZXNzLCBpbgorICAgICAgICBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24gKHdoaWNoIHdhcyBnZXR0aW5nIGNhbGxlZCB2aWEgSVBDIGZyb20KKyAgICAgICAg
RG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCgpKS4KKworICAgICAgICBUaGlzIGlzIG1v
cmUgZWZmaWNpZW50IGFuZCB3aWxsIGFsc28gYmUgbmVlZGVkIHNvb24gZHVlIHRvIHRoZSB3YXkg
cHJvY2VzcyBzd2FwIG9uIG5hdmlnYXRpb24gCisgICAgICAgIGRlYWxzIHdpdGggY3Jvc3Mtb3Jp
Z2luIHJlZGlyZWN0cy4gT24gY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0IG9mIHRoZSBtYWluIGZyYW1l
LCBQU09OIGNhbmNlbHMKKyAgICAgICAgdGhlIGxvYWQgYW5kIHN0YXJ0ZWQgYSBuZXcgbG9hZCB0
byB0aGUgcmVkaXJlY3RlZCB0byBVUkwgaW4gdGhlIG5ldyBXZWJQcm9jZXNzLiBBcyBhIHJlc3Vs
dCwKKyAgICAgICAgdGhlIG5ldyBXZWJQcm9jZXNzIGlzIG5vdCBhd2FyZSB0aGF0IHRoZSBsb2Fk
IGlzIGEgcmVkaXJlY3QsIHdoaWNoIGlzIGluZm9ybWF0aW9uIHRoYXQgSVRQCisgICAgICAgIHJl
cXVpcmVzLiBCeSBtb3ZpbmcgdGhlIElUUCBsb2dnaW5nIHRvIHRoZSBVSVByb2Nlc3MsIHdlIHN0
aWxsIGhhdmUgYWNjZXNzIHRvIHRoaXMKKyAgICAgICAgaW5mb3JtYXRpb24uCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgIC0gV2Ugbm93IHBhc3MgdGhlIGZ1bGwgcmVk
aXJlY3QgcmVzcG9uc2UgdGhlIHRoZSBkZWxlZ2F0ZSBtZXRob2QgaW5zdGVhZCBvZiBhIHNpbXBs
ZQorICAgICAgICBpc1JlZGlyZWN0IGJvb2xlYW4uCisgICAgICAgIC0gTG9nIHRoZSBuYXZpZ2F0
aW9uIGluIHRoZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgZm9yIElUUCBwdXJwb3Nl
cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjphcmVEb21haW5zQXNzb2NpYXRlZCk6CisgICAgICAgIEVx
dWl2YWxlbnQgb2YgUmVzb3VyY2VMb2FkT2JzZXJ2ZXIncyBhcmVEb21haW5zQXNzb2NpYXRlZCgp
LiBNb3N0IG9mIHRoZSBsb2dpYyB3YXMgbW92ZWQKKyAgICAgICAgdG8gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljczo6YXJlRG9tYWluc0Fzc29jaWF0ZWQoKSB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9u
LgorCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVz
b3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQpOgorICAgICAgICBUaGlzIGlzIGNhbGxlZCB3aGVu
ZXZlciBhIFdlYlByb2Nlc3Mgc2VuZHMgbmV3IHJlc291cmNlIGxvYWQgc3RhdGlzdGljcyB0byB0
aGUgVUlQcm9jZXNzLgorICAgICAgICBXaGVuZXZlciB0aGlzIGhhcHBlbnMsIHdlIGNhbGwgcHJv
Y2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpIHJpZ2h0IGF3YXksIHdoaWNoIGlzCisgICAg
ICAgIHNvbWV0aW1lcyB0aGUgdGVzdHMgY3VycmVudGx5IHJlbHkgb24uIEFzIGEgcmVzdWx0LCB3
ZSBjYW4gY2FuY2VscyBhbnkgcGVuZGluZyBzdGF0aXN0aWNzCisgICAgICAgIHByb2Nlc3Npbmcg
cmVxdWVzdCB0aGF0IHdhcyBzY2hlZHVsZWQgYnkgbG9nRnJhbWVOYXZpZ2F0aW9uKCkuCisKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZVN0
YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdElmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYW5jZWxQZW5kaW5nU3RhdGlzdGljc1By
b2Nlc3NpbmdSZXF1ZXN0KToKKyAgICAgICAgV2hlbmV2ZXIgYSBuYXZpZ2F0aW9uIGlzIGxvZ2dl
ZCBhbmQgc3RhdGlzdGljcyBoYXZlIGJlZW4gdXBkYXRlZCwgd2UgbmVlZCB0byBtYWtlIHN1cmUg
d2UKKyAgICAgICAgc2NoZWR1bGUgYSAidGltZXIiIHRvIHByb2Nlc3MgdGhlIG5ldyBkYXRhLiBX
ZSBkbyB0aGlzIGF0IG1vc3QgZXZlcnkgNSBzZWNvbmRzIGZvciBwZXJmb3JtYW5jZQorICAgICAg
ICByZWFzb25zLiBUaGlzIDUgc2Vjb25kIGludGVydmFsIG1hdGNoZXMgd2hhdCB0aGUgUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIgaXMgdXNpbmcgaW4gdGhlIFdlYlByb2Nlc3MKKyAgICAgICAgdG8gbm90
aWZ5IHRoZSBVSVByb2Nlc3Mgb2YgbmV3IGRhdGEuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpsb2dGcmFtZU5hdmlnYXRpb24pOgorICAgICAgICBU
aGlzIGNvZGUgd2FzIG1vdmVkIGZyb20gUmVzb3VyY2VMb2FkT2JzZXJ2ZXIgdG8gV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlIG5vdyB0aGF0IHdlCisgICAgICAgIGRvIHRoaXMgbG9nZ2lu
ZyBpbiB0aGUgVUlQcm9jZXNzIGluc3RlYWQgb2YgdGhlIFdlYlByb2Nlc3MuIE9uZSBkaWZmZXJl
bmNlIHdpdGggV2ViQ29yZSBpcworICAgICAgICB0aGF0IHdlIHVzZSBXZWJQYWdlUHJveHk6OnBh
Z2VMb2FkU3RhdGUoKS51cmwoKSBhcyBtYWluRnJhbWVVUkwgaW5zdGVhZCBvZgorICAgICAgICBX
ZWJQYWdlUHJveHk6Om1haW5GcmFtZSgpLnVybCgpLiBUaGUgcmVhc29uIGZvciB0aGF0IGlzIHRo
YXQgV2ViUGFnZVByb3h5OjptYWluRnJhbWUoKS51cmwoKQorICAgICAgICBiZWNvbWVzIGVtcHR5
IGluIGNhc2Ugb2YgcHJvY2VzcyBzd2FwIGJ1dCBJVFAgc3RpbGwgbmVlZHMgdGhlIGFjdHVhbCBt
YWluIGZyYW1lIFVSTCB3aGVuIHRoZQorICAgICAgICBuYXZpZ2F0aW9uIHdhcyB0cmlnZ2VyZWQu
IFdlYlBhZ2VQcm94eTo6cGFnZUxvYWRTdGF0ZSgpLnVybCgpIGdpdmVzIHVzIHRoaXMgaW5mb3Jt
YXRpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICBXZSBu
b3cgcGFzcyB0aGUgZnVsbCByZWRpcmVjdCByZXNwb25zZSB0aGUgdGhlIGRlbGVnYXRlIG1ldGhv
ZCBpbnN0ZWFkIG9mIGEgc2ltcGxlCisgICAgICAgIGlzUmVkaXJlY3QgYm9vbGVhbi4KKwogMjAx
OC0wNi0xMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZC4gVXBkYXRlIE9wdGlvbnNHVEsuY21ha2UgYW5kIE5FV1MgZm9yIDIu
MjEuNCByZWxlYXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDljYTY2Njg3ZWJh
OWIxNzNjOTkxMGU3YWRmZTMwNzRmNGE4MGI4MmYuLjQ0YjUwZWIzYmU2OTlkZmQ5NDhmYmViYjZk
NmJmZjdjZGY1MTRkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxOC0wNi0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFBTT046IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1w
cmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXJlZGlyZWN0LWNvbGx1c2lvbi5odG1sIEFTU0VS
VFMgd2l0aCBwcm9jZXNzIHN3YXAgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2NTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNsaWVudCBkZWxlZ2F0ZSBub3cgdGhhdCBwYXJh
bWV0ZXIgdHlwZSBoYXMgY2hhbmdlZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKwogMjAxOC0wNi0xMSAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBMaW5rIGRyYWcgaW1hZ2UgaXMg
aW5jb25zaXN0ZW50bHkgdW5yZWFkYWJsZSBpbiBkYXJrIG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwppbmRleCA5ODgxODdhMDYwYTA4MGY2Mjk5NGQyNDMxZmJmYmVkYTIxY2JjOTYxLi41
YzdiMzJjZjU4YzFmZDZhOTYyYjRlMzYyMjE1ZmU2MmE0NjI1ZGE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMDYtMTIgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBQU09OOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1mcmFtZS1yZWRp
cmVjdC1jb2xsdXNpb24uaHRtbCBBU1NFUlRTIHdpdGggcHJvY2VzcyBzd2FwIGVuYWJsZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjU0NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjbGll
bnQgZGVsZWdhdGUgbm93IHRoYXQgcGFyYW1ldGVyIHR5cGUgaGFzIGNoYW5nZWQuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgor
CiAyMDE4LTA2LTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
aHR0cC90ZXN0cy9zZWN1cml0eS9jb3JzLXBvc3QtcmVkaXJlY3QtMzA3Lmh0bWwgZmFpbHMgd2l0
aCBQU09OIGVuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmlu
ZGV4IGZiMDdlZTUzYmQ1YTRhNDBkYzY0OGFiNTMzOWNhMGNjNTRlMTI2OWUuLjQ3YTM2OWUxMGNj
YzFhNzY0NTc3YjAxNjJhMWFjN2I2MTFiMDFiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcApAQCAtNTkxLDggKzU5MSw2IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNv
dXJjCiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgQVNTRVJUKHRvcEZy
YW1lLmRvY3VtZW50KCkpOwotCi0gICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxv
Z0ZyYW1lTmF2aWdhdGlvbigqbV9mcmFtZSwgdG9wRnJhbWUsIG5ld1JlcXVlc3QsIHJlZGlyZWN0
UmVzcG9uc2UudXJsKCkpOwogICAgIAogICAgIC8vIFVwZGF0ZSBjb29raWUgcG9saWN5IGJhc2Ug
VVJMIGFzIFVSTCBjaGFuZ2VzLCBleGNlcHQgZm9yIHN1YmZyYW1lcywgd2hpY2ggdXNlIHRoZQog
ICAgIC8vIFVSTCBvZiB0aGUgbWFpbiBmcmFtZSB3aGljaCBkb2Vzbid0IGNoYW5nZSB3aGVuIHdl
IHJlZGlyZWN0LgpAQCAtNjU3LDcgKzY1NSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxT
ZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2Vy
KCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFdURk1vdmUobmV3UmVxdWVzdCksIGRpZFJlY2VpdmVS
ZWRpcmVjdFJlc3BvbnNlLCBXVEZNb3ZlKG5hdmlnYXRpb25Qb2xpY3lDb21wbGV0aW9uSGFuZGxl
cikpOworICAgIGZyYW1lTG9hZGVyKCktPnBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Q
b2xpY3koV1RGTW92ZShuZXdSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgV1RGTW92ZShuYXZp
Z2F0aW9uUG9saWN5Q29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogYm9vbCBEb2N1bWVudExvYWRl
cjo6dHJ5TG9hZGluZ1JlcXVlc3RGcm9tQXBwbGljYXRpb25DYWNoZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDYwNTNiODc4YjJmMDQ1NDAwM2RmMTQ3MDFlYThj
YmE0ZDAzOWRhYzcuLmMzM2JjMDM1ODUwYWQ0YWM5Yjc4M2E2ZDExNjllMDRjNzY1MWQ1ZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC00NDYsNyArNDQ2LDcgQEAg
dm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbihjb25zdCBOYXZpZ2EKIHsKIH0KIAotdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wsIEZvcm1TdGF0ZSosIFBv
bGljeURlY2lzaW9uTW9kZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKQordm9pZCBFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29u
c3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBGb3JtU3RhdGUqLCBQb2xpY3lEZWNpc2lvbk1vZGUsIEZyYW1lUG9saWN5
RnVuY3Rpb24mJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1l
TG9hZGVyQ2xpZW50LmgKaW5kZXggMzRhNTA4YWI1OGM2ZDY3YWRlMjM1Nzc5NjAzZDQ3ZDlkNDIz
YTkyOC4uZGNmYWY5MDc1OWNjYmNkYzM0ZGZiOGM4NDI0MTI4YzA3NjIxODI4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCkBAIC05NSw3ICs5
NSw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQgOiBwdWJs
aWMgRnJhbWVMb2FkZXJDbGllbnQgewogCiAgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZv
clJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsIHsgfQogICAgIHZvaWQgZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYsIEZyYW1lUG9saWN5
RnVuY3Rpb24mJikgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIEZvcm1TdGF0ZSosIFBvbGljeURl
Y2lzaW9uTW9kZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9u
JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSwgRm9ybVN0YXRlKiwgUG9saWN5RGVjaXNpb25Nb2RlLCBGcmFtZVBvbGljeUZ1
bmN0aW9uJiYpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSBmaW5hbCB7IH0K
IAogICAgIHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBSZXNvdXJj
ZUVycm9yJikgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRl
eCAwNGQ0MzZlMjk4MjVjNjI1N2ExZjQ3NjExZTMxNDA0MTQxOTMyMGFkLi45ZDcyNmFiNDhmNDBk
OGY4Y2ZmMThkZjBlMmMyODk2YjI1MjQ5ZmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKQEAgLTEzODAsNyArMTM4MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwo
RnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmCiAg
ICAgICAgIG9sZERvY3VtZW50TG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0KCkpOwogICAgICAgICBwb2xpY3lDaGVja2VyKCkuc3RvcENoZWNrKCk7CiAgICAgICAg
IHBvbGljeUNoZWNrZXIoKS5zZXRMb2FkVHlwZShuZXdMb2FkVHlwZSk7Ci0gICAgICAgIHBvbGlj
eUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koV1RGTW92ZShyZXF1ZXN0KSwgZmFsc2Ug
LyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgp
LCBXVEZNb3ZlKGZvcm1TdGF0ZSksIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9m
cmFtZSldIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRl
PiYmLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgeworICAgICAgICBwb2xpY3lDaGVj
a2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFdURk1vdmUocmVxdWVzdCksIFJlc291cmNlUmVz
cG9uc2UgeyB9IC8qIHJlZGlyZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgp
LCBXVEZNb3ZlKGZvcm1TdGF0ZSksIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9m
cmFtZSldIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRl
PiYmLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgewogICAgICAgICAgICAgY29udGlu
dWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeShyZXF1ZXN0LCBzaG91bGRDb250
aW51ZSA9PSBTaG91bGRDb250aW51ZTo6WWVzKTsKICAgICAgICAgfSwgUG9saWN5RGVjaXNpb25N
b2RlOjpTeW5jaHJvbm91cyk7CiAgICAgICAgIHJldHVybjsKQEAgLTE1NTUsNyArMTU1NSw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgRnJhbWVMb2FkVHlwZSB0CiAgICAgICAgIG9sZERvY3VtZW50TG9hZGVyLT5zZXRU
cmlnZ2VyaW5nQWN0aW9uKGFjdGlvbik7CiAgICAgICAgIG9sZERvY3VtZW50TG9hZGVyLT5zZXRM
YXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwogICAgICAgICBwb2xpY3lDaGVj
a2VyKCkuc3RvcENoZWNrKCk7Ci0gICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRp
b25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+cmVxdWVzdCgpKSwgZmFsc2UgLyogZGlk
UmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBXVEZN
b3ZlKGZvcm1TdGF0ZSksIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSld
IChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmLCBT
aG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgeworICAgICAgICBwb2xpY3lDaGVja2VyKCku
Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSks
IFJlc291cmNlUmVzcG9uc2UgeyB9ICAvKiByZWRpcmVjdFJlc3BvbnNlICovLCBvbGREb2N1bWVu
dExvYWRlci5nZXQoKSwgV1RGTW92ZShmb3JtU3RhdGUpLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUg
PSBtYWtlUmVmKG1fZnJhbWUpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWFr
UHRyPEZvcm1TdGF0ZT4mJiwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIHsKICAgICAg
ICAgICAgIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVz
dCwgc2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29udGludWU6Olllcyk7CiAgICAgICAgIH0sIFBv
bGljeURlY2lzaW9uTW9kZTo6U3luY2hyb25vdXMpOwogICAgICAgICByZXR1cm47CkBAIC0xNTg5
LDcgKzE1ODksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdAogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJj
ZVJlcXVlc3QobG9hZGVyLT5yZXF1ZXN0KCkpLCBmYWxzZSAvKiBkaWRSZWNlaXZlUmVkaXJlY3RS
ZXNwb25zZSAqLywgbG9hZGVyLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIFt0aGlzLCBwcm90ZWN0ZWRG
cmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgY29t
cGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCldIChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0
ZSwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIHsKKyAgICBwb2xpY3lDaGVja2VyKCku
Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSks
IFJlc291cmNlUmVzcG9uc2UgeyB9IC8qIHJlZGlyZWN0UmVzcG9uc2UgKi8sIGxvYWRlciwgV1RG
TW92ZShmb3JtU3RhdGUpLCBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUp
LCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxl
dGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUsIFNob3VsZENvbnRpbnVlIHNob3Vs
ZENvbnRpbnVlKSB7CiAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShy
ZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIHNob3VsZENvbnRpbnVlLCBhbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkwpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBjNmY2N2RlMTM3ODJh
NzMyMGM1MDYzMDU5OTM5ODliMGFjMjI1NGU3Li5mNzIyNjE4Njc2NzNiNmM5NzI4Yzk1YzJhMWU0
ZTI0MmViNzNjOTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aApAQCAtMTkxLDcgKzE5MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmln
YXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBib29sIGRpZFJlY2VpdmVSZWRp
cmVjdFJlc3BvbnNlLCBGb3JtU3RhdGUqLCBQb2xpY3lEZWNpc2lvbk1vZGUsIEZyYW1lUG9saWN5
RnVuY3Rpb24mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIEZvcm1T
dGF0ZSosIFBvbGljeURlY2lzaW9uTW9kZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAppbmRleCA1Zjk3NTFj
YjZlM2U5MDQ0MGMwOTBlZDhmNjI3OGUwYzA1OTk1NGY4Li40ZTBlZWRjNTEyY2Y0MDRiMzk0ZDIz
ZmE0MDg1ZTE4ZGEyYWU2MzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9s
aWN5Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIu
Y3BwCkBAIC03OSw5ICs3OSw5IEBAIFBvbGljeUNoZWNrZXI6OlBvbGljeUNoZWNrZXIoRnJhbWUm
IGZyYW1lKQogewogfQogCi12b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGlj
eShSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJl
c3BvbnNlLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiYmIGZ1bmN0aW9uKQordm9p
ZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYg
bmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgTmF2
aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKLSAgICBjaGVja05h
dmlnYXRpb25Qb2xpY3koV1RGTW92ZShuZXdSZXF1ZXN0KSwgZGlkUmVjZWl2ZVJlZGlyZWN0UmVz
cG9uc2UsIG1fZnJhbWUubG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSwgeyB9LCBXVEZN
b3ZlKGZ1bmN0aW9uKSk7CisgICAgY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFdURk1vdmUobmV3UmVx
dWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIG1fZnJhbWUubG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRM
b2FkZXIoKSwgeyB9LCBXVEZNb3ZlKGZ1bmN0aW9uKSk7CiB9CiAKIENvbXBsZXRpb25IYW5kbGVy
Q2FsbGluZ1Njb3BlIFBvbGljeUNoZWNrZXI6OmV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNz
YXJ5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKQEAgLTk4LDcgKzk4LDcgQEAgQ29t
cGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgUG9saWN5Q2hlY2tlcjo6ZXh0ZW5kQmxvYlVSTExp
ZmV0aW1lSWZOZWNlc3NhcnkoUmUKICAgICB9KTsKIH0KIAotdm9pZCBQb2xpY3lDaGVja2VyOjpj
aGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBkaWRS
ZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVmUHRyPEZv
cm1TdGF0ZT4mJiBmb3JtU3RhdGUsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYg
ZnVuY3Rpb24sIFBvbGljeURlY2lzaW9uTW9kZSBwb2xpY3lEZWNpc2lvbk1vZGUpCit2b2lkIFBv
bGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBEb2N1bWVudExv
YWRlciogbG9hZGVyLCBSZWZQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSwgTmF2aWdhdGlvblBv
bGljeURlY2lzaW9uRnVuY3Rpb24mJiBmdW5jdGlvbiwgUG9saWN5RGVjaXNpb25Nb2RlIHBvbGlj
eURlY2lzaW9uTW9kZSkKIHsKICAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbiA9IGxvYWRlci0+
dHJpZ2dlcmluZ0FjdGlvbigpOwogICAgIGlmIChhY3Rpb24uaXNFbXB0eSgpKSB7CkBAIC0xMjgs
NyArMTI4LDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBkaWRSZWMKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmICghaXNBbGxvd2VkQnlDb250ZW50U2VjdXJpdHlQb2xpY3kocmVxdWVzdC51
cmwoKSwgbV9mcmFtZS5vd25lckVsZW1lbnQoKSwgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2Up
KSB7CisgICAgaWYgKCFpc0FsbG93ZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeShyZXF1ZXN0LnVy
bCgpLCBtX2ZyYW1lLm93bmVyRWxlbWVudCgpLCAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSkp
IHsKICAgICAgICAgaWYgKG1fZnJhbWUub3duZXJFbGVtZW50KCkpIHsKICAgICAgICAgICAgIC8v
IEZpcmUgYSBsb2FkIGV2ZW50IChldmVuIHRob3VnaCB3ZSB3ZXJlIGJsb2NrZWQgYnkgQ1NQKSBh
cyB0aW1pbmcgYXR0YWNrcyB3b3VsZCBvdGhlcndpc2UKICAgICAgICAgICAgIC8vIHJldmVhbCB0
aGF0IHRoZSBmcmFtZSB3YXMgYmxvY2tlZC4gVGhpcyB3YXksIGl0IGxvb2tzIGxpa2UgYW55IG90
aGVyIGNyb3NzLW9yaWdpbiBwYWdlIGxvYWQuCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBQb2xp
Y3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgYm9vbCBkaWRSZWMKIAogICAgIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGlj
eSA9IHRydWU7CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gYWN0aW9uLmRvd25sb2Fk
QXR0cmlidXRlKCkuaXNFbXB0eSgpID8gbnVsbEF0b20oKSA6IGFjdGlvbi5kb3dubG9hZEF0dHJp
YnV0ZSgpOwotICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGFjdGlvbiwgcmVxdWVzdCwgZGlkUmVjZWl2ZVJlZGlyZWN0
UmVzcG9uc2UsIGZvcm1TdGF0ZS5nZXQoKSwgcG9saWN5RGVjaXNpb25Nb2RlLCBbdGhpcywgZnVu
Y3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKSwgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChyZXF1
ZXN0KSwgZm9ybVN0YXRlID0gV1RGTW92ZShmb3JtU3RhdGUpLCBzdWdnZXN0ZWRGaWxlbmFtZSA9
IFdURk1vdmUoc3VnZ2VzdGVkRmlsZW5hbWUpLCBibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gPSBX
VEZNb3ZlKGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbildKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rp
b24pIG11dGFibGUgeworICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGFjdGlvbiwgcmVxdWVzdCwgcmVkaXJlY3RSZXNw
b25zZSwgZm9ybVN0YXRlLmdldCgpLCBwb2xpY3lEZWNpc2lvbk1vZGUsIFt0aGlzLCBmdW5jdGlv
biA9IFdURk1vdmUoZnVuY3Rpb24pLCByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3Qp
LCBmb3JtU3RhdGUgPSBXVEZNb3ZlKGZvcm1TdGF0ZSksIHN1Z2dlc3RlZEZpbGVuYW1lID0gV1RG
TW92ZShzdWdnZXN0ZWRGaWxlbmFtZSksIGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiA9IFdURk1v
dmUoYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uKV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikg
bXV0YWJsZSB7CiAgICAgICAgIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGljeSA9
IGZhbHNlOwogCiAgICAgICAgIHN3aXRjaCAocG9saWN5QWN0aW9uKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1BvbGljeUNoZWNrZXIuaAppbmRleCA5ZjA0ODk3MzgxOTE5MzVjMzNkOWM3MmNiMDU1MThh
MzcwOGZhOGFhLi4yMDcxZmZhYjE3NDZmMDViZjQyMGMwNWExNGZlZmUwNDU1MzhiZmVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmgKQEAgLTY5LDggKzY5LDggQEAgY2xhc3Mg
UG9saWN5Q2hlY2tlciB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUG9saWN5Q2hlY2tlcihGcmFt
ZSYpOwogCi0gICAgdm9pZCBjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYs
IGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIERvY3VtZW50TG9hZGVyKiwgUmVmUHRy
PEZvcm1TdGF0ZT4mJiwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24mJiwgUG9saWN5
RGVjaXNpb25Nb2RlID0gUG9saWN5RGVjaXNpb25Nb2RlOjpBc3luY2hyb25vdXMpOwotICAgIHZv
aWQgY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmLCBib29sIGRpZFJlY2Vp
dmVSZWRpcmVjdFJlc3BvbnNlLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiYmKTsK
KyAgICB2b2lkIGNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgRG9jdW1lbnRMb2FkZXIqLCBSZWZQ
dHI8Rm9ybVN0YXRlPiYmLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiYmLCBQb2xp
Y3lEZWNpc2lvbk1vZGUgPSBQb2xpY3lEZWNpc2lvbk1vZGU6OkFzeW5jaHJvbm91cyk7CisgICAg
dm9pZCBjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1
bmN0aW9uJiYpOwogICAgIHZvaWQgY2hlY2tOZXdXaW5kb3dQb2xpY3koTmF2aWdhdGlvbkFjdGlv
biYmLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVmUHRyPEZvcm1TdGF0ZT4mJiwgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIE5ld1dpbmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24mJik7CiAKICAgICB2
b2lkIHN0b3BDaGVjaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRP
YnNlcnZlci5jcHAKaW5kZXggZjVmNWVmOGJmNmJiMzg1N2FlYTg4YzliODQyYTk2NzIyODViNWEz
Yi4uOGI5ODM2ZTFjZTEyNzE0YmVkMmI2YzJjYWUyNmYxZmE3OGM5YTg1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC00Nyw3ICs0Nyw2
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBpbmxpbmUgU3RyaW5nIHByaW1hcnlEb21h
aW4oY29uc3QgVCYgdmFsdWUpCiAgICAgcmV0dXJuIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnBy
aW1hcnlEb21haW4odmFsdWUpOwogfQogCi1zdGF0aWMgU2Vjb25kcyB0aW1lc3RhbXBSZXNvbHV0
aW9uIHsgNV9zIH07CiBzdGF0aWMgY29uc3QgU2Vjb25kcyBtaW5pbXVtTm90aWZpY2F0aW9uSW50
ZXJ2YWwgeyA1X3MgfTsKIAogUmVzb3VyY2VMb2FkT2JzZXJ2ZXImIFJlc291cmNlTG9hZE9ic2Vy
dmVyOjpzaGFyZWQoKQpAQCAtNjksMzYgKzY4LDkgQEAgc3RhdGljIGJvb2wgc2hvdWxkRW5hYmxl
U2l0ZVNwZWNpZmljUXVpcmtzKFBhZ2UqIHBhZ2UpCiAjZW5kaWYKIH0KIAotLy8gRklYTUU6IFRl
bXBvcmFyeSBmaXggZm9yIDxyZGFyOi8vcHJvYmxlbS8zMjM0MzI1Nj4gdW50aWwgY29udGVudCBj
YW4gYmUgdXBkYXRlZC4KIHN0YXRpYyBib29sIGFyZURvbWFpbnNBc3NvY2lhdGVkKFBhZ2UqIHBh
Z2UsIGNvbnN0IFN0cmluZyYgZmlyc3REb21haW4sIGNvbnN0IFN0cmluZyYgc2Vjb25kRG9tYWlu
KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFN0cmluZywgdW5zaWduZWQ+
PiBtZXRhRG9tYWluSWRlbnRpZmllcnMgPSBbXSB7Ci0gICAgICAgIEhhc2hNYXA8U3RyaW5nLCB1
bnNpZ25lZD4gbWFwOwotCi0gICAgICAgIC8vIERvbWFpbnMgb3duZWQgYnkgRG93IEpvbmVzICYg
Q29tcGFueSwgSW5jLgotICAgICAgICBjb25zdCB1bnNpZ25lZCBkb3dKb25lc0lkZW50aWZpZXIg
PSAxOwotICAgICAgICBtYXAuYWRkKEFTQ0lJTGl0ZXJhbCgiZG93am9uZXMuY29tIiksIGRvd0pv
bmVzSWRlbnRpZmllcik7Ci0gICAgICAgIG1hcC5hZGQoQVNDSUlMaXRlcmFsKCJ3c2ouY29tIiks
IGRvd0pvbmVzSWRlbnRpZmllcik7Ci0gICAgICAgIG1hcC5hZGQoQVNDSUlMaXRlcmFsKCJiYXJy
b25zLmNvbSIpLCBkb3dKb25lc0lkZW50aWZpZXIpOwotICAgICAgICBtYXAuYWRkKEFTQ0lJTGl0
ZXJhbCgibWFya2V0d2F0Y2guY29tIiksIGRvd0pvbmVzSWRlbnRpZmllcik7Ci0gICAgICAgIG1h
cC5hZGQoQVNDSUlMaXRlcmFsKCJ3c2pwbHVzLmNvbSIpLCBkb3dKb25lc0lkZW50aWZpZXIpOwot
Ci0gICAgICAgIHJldHVybiBtYXA7Ci0gICAgfSgpOwotCi0gICAgaWYgKGZpcnN0RG9tYWluID09
IHNlY29uZERvbWFpbikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBBU1NFUlQoIWVxdWFs
SWdub3JpbmdBU0NJSUNhc2UoZmlyc3REb21haW4sIHNlY29uZERvbWFpbikpOwotCi0gICAgaWYg
KCFzaG91bGRFbmFibGVTaXRlU3BlY2lmaWNRdWlya3MocGFnZSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHVuc2lnbmVkIGZpcnN0TWV0YURvbWFpbklkZW50aWZpZXIgPSBtZXRhRG9t
YWluSWRlbnRpZmllcnMuZ2V0KCkuZ2V0KGZpcnN0RG9tYWluKTsKLSAgICBpZiAoIWZpcnN0TWV0
YURvbWFpbklkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBm
aXJzdE1ldGFEb21haW5JZGVudGlmaWVyID09IG1ldGFEb21haW5JZGVudGlmaWVycy5nZXQoKS5n
ZXQoc2Vjb25kRG9tYWluKTsKKyAgICByZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6YXJl
RG9tYWluc0Fzc29jaWF0ZWQoc2hvdWxkRW5hYmxlU2l0ZVNwZWNpZmljUXVpcmtzKHBhZ2UpLCBm
aXJzdERvbWFpbiwgc2Vjb25kRG9tYWluKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6c2V0Tm90aWZpY2F0aW9uQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkIChWZWN0b3I8UmVz
b3VyY2VMb2FkU3RhdGlzdGljcz4mJik+JiYgbm90aWZpY2F0aW9uQ2FsbGJhY2spCkBAIC0xMzIs
NzUgKzEwNCw2IEBAIGJvb2wgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNob3VsZExvZyhQYWdlKiBw
YWdlKSBjb25zdAogICAgIHJldHVybiBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgJiYgIXBhZ2UtPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkg
JiYgbV9ub3RpZmljYXRpb25DYWxsYmFjazsKIH0KIAotc3RhdGljIFdhbGxUaW1lIHJlZHVjZVRp
bWVSZXNvbHV0aW9uKFdhbGxUaW1lIHRpbWUpCi17Ci0gICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9t
UmF3U2Vjb25kcyhzdGQ6OmZsb29yKHRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKSAvIHRpbWVzdGFt
cFJlc29sdXRpb24pICogdGltZXN0YW1wUmVzb2x1dGlvbi5zZWNvbmRzKCkpOwotfQotCi12b2lk
IFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgRnJhbWUmIGZy
YW1lLCBjb25zdCBGcmFtZSYgdG9wRnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgbmV3UmVx
dWVzdCwgY29uc3QgVVJMJiByZWRpcmVjdFVybCkKLXsKLSAgICBBU1NFUlQoZnJhbWUuZG9jdW1l
bnQoKSk7Ci0gICAgQVNTRVJUKHRvcEZyYW1lLmRvY3VtZW50KCkpOwotICAgIEFTU0VSVCh0b3BG
cmFtZS5wYWdlKCkpOwotCi0gICAgYXV0byogcGFnZSA9IHRvcEZyYW1lLnBhZ2UoKTsKLSAgICBp
ZiAoIXNob3VsZExvZyhwYWdlKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBzb3VyY2VV
UkwgPSByZWRpcmVjdFVybDsKLSAgICBib29sIGlzUmVkaXJlY3QgPSAhcmVkaXJlY3RVcmwuaXNO
dWxsKCk7Ci0gICAgaWYgKCFpc1JlZGlyZWN0KQotICAgICAgICBzb3VyY2VVUkwgPSBub25OdWxs
T3duZXJVUkwoKmZyYW1lLmRvY3VtZW50KCkpOwotCi0gICAgYXV0byYgdGFyZ2V0VVJMID0gbmV3
UmVxdWVzdC51cmwoKTsKLSAgICBhdXRvJiBtYWluRnJhbWVVUkwgPSB0b3BGcmFtZS5kb2N1bWVu
dCgpLT51cmwoKTsKLSAgICAKLSAgICBpZiAoIXRhcmdldFVSTC5pc1ZhbGlkKCkgfHwgIW1haW5G
cmFtZVVSTC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gdGFyZ2V0SG9z
dCA9IHRhcmdldFVSTC5ob3N0KCk7Ci0gICAgYXV0byBtYWluRnJhbWVIb3N0ID0gbWFpbkZyYW1l
VVJMLmhvc3QoKTsKLQotICAgIGlmICh0YXJnZXRIb3N0LmlzRW1wdHkoKSB8fCBtYWluRnJhbWVI
b3N0LmlzRW1wdHkoKSB8fCB0YXJnZXRIb3N0ID09IHNvdXJjZVVSTC5ob3N0KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGF1dG8gdGFyZ2V0UHJpbWFyeURvbWFpbiA9IHByaW1hcnlEb21haW4o
dGFyZ2V0VVJMKTsKLSAgICBhdXRvIG1haW5GcmFtZVByaW1hcnlEb21haW4gPSBwcmltYXJ5RG9t
YWluKG1haW5GcmFtZVVSTCk7Ci0gICAgYXV0byBzb3VyY2VQcmltYXJ5RG9tYWluID0gcHJpbWFy
eURvbWFpbihzb3VyY2VVUkwpOwotICAgIGJvb2wgc2hvdWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxi
YWNrID0gZmFsc2U7Ci0KLSAgICBpZiAodGFyZ2V0SG9zdCAhPSBtYWluRnJhbWVIb3N0Ci0gICAg
ICAgICYmICEoYXJlRG9tYWluc0Fzc29jaWF0ZWQocGFnZSwgdGFyZ2V0UHJpbWFyeURvbWFpbiwg
bWFpbkZyYW1lUHJpbWFyeURvbWFpbikgfHwgYXJlRG9tYWluc0Fzc29jaWF0ZWQocGFnZSwgdGFy
Z2V0UHJpbWFyeURvbWFpbiwgc291cmNlUHJpbWFyeURvbWFpbikpKSB7Ci0gICAgICAgIGF1dG8m
IHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9t
YWluKHRhcmdldFByaW1hcnlEb21haW4pOwotICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLmxhc3RT
ZWVuID0gcmVkdWNlVGltZVJlc29sdXRpb24oV2FsbFRpbWU6Om5vdygpKTsKLSAgICAgICAgaWYg
KHRhcmdldFN0YXRpc3RpY3Muc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucy5hZGQobWFpbkZy
YW1lUHJpbWFyeURvbWFpbikuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgIHNob3VsZENhbGxOb3Rp
ZmljYXRpb25DYWxsYmFjayA9IHRydWU7Ci0gICAgfQotCi0gICAgaWYgKGlzUmVkaXJlY3QKLSAg
ICAgICAgJiYgIWFyZURvbWFpbnNBc3NvY2lhdGVkKHBhZ2UsIHNvdXJjZVByaW1hcnlEb21haW4s
IHRhcmdldFByaW1hcnlEb21haW4pKSB7Ci0gICAgICAgIGJvb2wgaXNOZXdSZWRpcmVjdFRvRW50
cnkgPSBmYWxzZTsKLSAgICAgICAgYm9vbCBpc05ld1JlZGlyZWN0RnJvbUVudHJ5ID0gZmFsc2U7
Ci0gICAgICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgICAgICBhdXRvJiBy
ZWRpcmVjdGluZ09yaWdpblN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQ
cmltYXJ5RG9tYWluKHNvdXJjZVByaW1hcnlEb21haW4pOwotICAgICAgICAgICAgaXNOZXdSZWRp
cmVjdFRvRW50cnkgPSByZWRpcmVjdGluZ09yaWdpblN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdHNUby5hZGQodGFyZ2V0UHJpbWFyeURvbWFpbikuaXNOZXdFbnRyeTsKLSAgICAgICAg
ICAgIGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQ
cmltYXJ5RG9tYWluKHRhcmdldFByaW1hcnlEb21haW4pOwotICAgICAgICAgICAgaXNOZXdSZWRp
cmVjdEZyb21FbnRyeSA9IHRhcmdldFN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNG
cm9tLmFkZChzb3VyY2VQcmltYXJ5RG9tYWluKS5pc05ld0VudHJ5OwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgYXV0byYgcmVkaXJlY3RpbmdPcmlnaW5TdGF0aXN0aWNzID0gZW5zdXJl
UmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihzb3VyY2VQcmltYXJ5RG9tYWluKTsK
LSAgICAgICAgICAgIGlzTmV3UmVkaXJlY3RUb0VudHJ5ID0gcmVkaXJlY3RpbmdPcmlnaW5TdGF0
aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8uYWRkKHRhcmdldFByaW1hcnlEb21h
aW4pLmlzTmV3RW50cnk7Ci0gICAgICAgICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5z
dXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbih0YXJnZXRQcmltYXJ5RG9tYWlu
KTsKLSAgICAgICAgICAgIGlzTmV3UmVkaXJlY3RGcm9tRW50cnkgPSB0YXJnZXRTdGF0aXN0aWNz
LnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbS5hZGQoc291cmNlUHJpbWFyeURvbWFpbiku
aXNOZXdFbnRyeTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpc05ld1JlZGlyZWN0VG9FbnRy
eSB8fCBpc05ld1JlZGlyZWN0RnJvbUVudHJ5KQotICAgICAgICAgICAgc2hvdWxkQ2FsbE5vdGlm
aWNhdGlvbkNhbGxiYWNrID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBpZiAoc2hvdWxkQ2FsbE5vdGlm
aWNhdGlvbkNhbGxiYWNrKQotICAgICAgICBzY2hlZHVsZU5vdGlmaWNhdGlvbklmTmVlZGVkKCk7
Ci19Ci0KIC8vIEZJWE1FOiBUaGlzIHF1aXJrIHdhcyBhZGRlZCB0byBhZGRyZXNzIDxyZGFyOi8v
cHJvYmxlbS8zMzMyNTg4MT4gYW5kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgY29udGVudCBpcyBm
aXhlZC4KIHN0YXRpYyBib29sIHJlc291cmNlTmVlZHNTU09RdWlyayhQYWdlKiBwYWdlLCBjb25z
dCBVUkwmIHVybCkKIHsKQEAgLTI0Miw3ICsxNDUsNyBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2Vy
dmVyOjpsb2dTdWJyZXNvdXJjZUxvYWRpbmcoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNv
dQogICAgIGJvb2wgc2hvdWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gZmFsc2U7CiAgICAg
ewogICAgICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0
aWNzRm9yUHJpbWFyeURvbWFpbih0YXJnZXRQcmltYXJ5RG9tYWluKTsKLSAgICAgICAgdGFyZ2V0
U3RhdGlzdGljcy5sYXN0U2VlbiA9IHJlZHVjZVRpbWVSZXNvbHV0aW9uKFdhbGxUaW1lOjpub3co
KSk7CisgICAgICAgIHRhcmdldFN0YXRpc3RpY3MubGFzdFNlZW4gPSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzOjpyZWR1Y2VUaW1lUmVzb2x1dGlvbihXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBp
ZiAodGFyZ2V0U3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zLmFkZCht
YWluRnJhbWVQcmltYXJ5RG9tYWluKS5pc05ld0VudHJ5KQogICAgICAgICAgICAgc2hvdWxkQ2Fs
bE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gdHJ1ZTsKICAgICB9CkBAIC0yODcsNyArMTkwLDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nV2ViU29ja2V0TG9hZGluZyhjb25zdCBGcmFt
ZSogZnJhbWUsIGNvbnN0IFVSTCYgdGEKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgdGFy
Z2V0U3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4o
dGFyZ2V0UHJpbWFyeURvbWFpbik7Ci0gICAgdGFyZ2V0U3RhdGlzdGljcy5sYXN0U2VlbiA9IHJl
ZHVjZVRpbWVSZXNvbHV0aW9uKFdhbGxUaW1lOjpub3coKSk7CisgICAgdGFyZ2V0U3RhdGlzdGlj
cy5sYXN0U2VlbiA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnJlZHVjZVRpbWVSZXNvbHV0aW9u
KFdhbGxUaW1lOjpub3coKSk7CiAgICAgaWYgKHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VV
bmRlclRvcEZyYW1lT3JpZ2lucy5hZGQobWFpbkZyYW1lUHJpbWFyeURvbWFpbikuaXNOZXdFbnRy
eSkKICAgICAgICAgc2NoZWR1bGVOb3RpZmljYXRpb25JZk5lZWRlZCgpOwogfQpAQCAtMzA0LDcg
KzIwNyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbldp
dGhSZWR1Y2VkVGltZVJlc29sdXRpb24oY29uc3QgRG9jCiAgICAgICAgIHJldHVybjsKIAogICAg
IGF1dG8gZG9tYWluID0gcHJpbWFyeURvbWFpbih1cmwpOwotICAgIGF1dG8gbmV3VGltZSA9IHJl
ZHVjZVRpbWVSZXNvbHV0aW9uKFdhbGxUaW1lOjpub3coKSk7CisgICAgYXV0byBuZXdUaW1lID0g
UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6cmVkdWNlVGltZVJlc29sdXRpb24oV2FsbFRpbWU6Om5v
dygpKTsKICAgICBhdXRvIGxhc3RSZXBvcnRlZFVzZXJJbnRlcmFjdGlvbiA9IG1fbGFzdFJlcG9y
dGVkVXNlckludGVyYWN0aW9uTWFwLmdldChkb21haW4pOwogICAgIGlmIChuZXdUaW1lID09IGxh
c3RSZXBvcnRlZFVzZXJJbnRlcmFjdGlvbikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAppbmRleCAxODgwZjY3MGJkYWVjMzU0
YjQ1NDY0MzIzZGVlMDJhZTUyNmQzNWFlLi41MjU3MGE3OWFhOGZmZGNiZmI5YjA3OWYzNzVmMjgz
NTI2MTkzNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuaApAQCAtNTMsNyArNTMsNiBAQCBjbGFzcyBSZXNvdXJjZUxvYWRPYnNlcnZlciB7CiBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlc291cmNlTG9hZE9ic2VydmVyJiBzaGFy
ZWQoKTsKIAotICAgIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IEZyYW1lJiwgY29uc3Qg
RnJhbWUmIHRvcEZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0
IFVSTCYgcmVkaXJlY3RVcmwpOwogICAgIHZvaWQgbG9nU3VicmVzb3VyY2VMb2FkaW5nKGNvbnN0
IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKICAgICB2b2lkIGxvZ1dlYlNvY2tldExvYWRp
bmcoY29uc3QgRnJhbWUqLCBjb25zdCBVUkwmKTsKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlv
bldpdGhSZWR1Y2VkVGltZVJlc29sdXRpb24oY29uc3QgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAppbmRleCBhZGIxMzZl
ZTgzOWU5NmVkZDRiMjEyY2RjYmE1MjdmODg3NTdiOTlmLi40MDU5OWQ3MWY3NTUxZjY2NTg1MTBl
Y2E1Y2NkN2YyNDZlZjUyYTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MuY3BwCkBAIC0yOCwxMSArMjgsMTQgQEAKIAogI2luY2x1ZGUgIktl
eWVkQ29kaW5nLmgiCiAjaW5jbHVkZSAiUHVibGljU3VmZml4LmgiCisjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRp
YyBTZWNvbmRzIHRpbWVzdGFtcFJlc29sdXRpb24geyA1X3MgfTsKKwogdHlwZWRlZiBXVEY6Okhh
c2hNYXA8U3RyaW5nLCB1bnNpZ25lZCwgU3RyaW5nSGFzaCwgSGFzaFRyYWl0czxTdHJpbmc+LCBI
YXNoVHJhaXRzPHVuc2lnbmVkPj46OktleVZhbHVlUGFpclR5cGUgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1ZhbHVlOwogCiBzdGF0aWMgdm9pZCBlbmNvZGVIYXNoQ291bnRlZFNldChLZXllZEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IEhhc2hDb3VudGVkU2V0PFN0
cmluZz4mIGhhc2hDb3VudGVkU2V0KQpAQCAtMzUyLDQgKzM1NSw0MyBAQCBTdHJpbmcgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljczo6cHJpbWFyeURvbWFpbihTdHJpbmdWaWV3IGhvc3QpCiAgICAgcmV0
dXJuIGhvc3RTdHJpbmc7CiB9CiAKKy8vIEZJWE1FOiBUZW1wb3JhcnkgZml4IGZvciA8cmRhcjov
L3Byb2JsZW0vMzIzNDMyNTY+IHVudGlsIGNvbnRlbnQgY2FuIGJlIHVwZGF0ZWQuCitib29sIFJl
c291cmNlTG9hZFN0YXRpc3RpY3M6OmFyZURvbWFpbnNBc3NvY2lhdGVkKGJvb2wgbmVlZHNTaXRl
U3BlY2lmaWNRdWlya3MsIGNvbnN0IFN0cmluZyYgZmlyc3REb21haW4sIGNvbnN0IFN0cmluZyYg
c2Vjb25kRG9tYWluKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPj4gbWV0YURvbWFpbklk
ZW50aWZpZXJzID0gW10geworICAgICAgICBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQ+IG1hcDsK
KworICAgICAgICAvLyBEb21haW5zIG93bmVkIGJ5IERvdyBKb25lcyAmIENvbXBhbnksIEluYy4K
KyAgICAgICAgY29uc3QgdW5zaWduZWQgZG93Sm9uZXNJZGVudGlmaWVyID0gMTsKKyAgICAgICAg
bWFwLmFkZChBU0NJSUxpdGVyYWwoImRvd2pvbmVzLmNvbSIpLCBkb3dKb25lc0lkZW50aWZpZXIp
OworICAgICAgICBtYXAuYWRkKEFTQ0lJTGl0ZXJhbCgid3NqLmNvbSIpLCBkb3dKb25lc0lkZW50
aWZpZXIpOworICAgICAgICBtYXAuYWRkKEFTQ0lJTGl0ZXJhbCgiYmFycm9ucy5jb20iKSwgZG93
Sm9uZXNJZGVudGlmaWVyKTsKKyAgICAgICAgbWFwLmFkZChBU0NJSUxpdGVyYWwoIm1hcmtldHdh
dGNoLmNvbSIpLCBkb3dKb25lc0lkZW50aWZpZXIpOworICAgICAgICBtYXAuYWRkKEFTQ0lJTGl0
ZXJhbCgid3NqcGx1cy5jb20iKSwgZG93Sm9uZXNJZGVudGlmaWVyKTsKKworICAgICAgICByZXR1
cm4gbWFwOworICAgIH0oKTsKKworICAgIGlmIChmaXJzdERvbWFpbiA9PSBzZWNvbmREb21haW4p
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgQVNTRVJUKCFlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKGZpcnN0RG9tYWluLCBzZWNvbmREb21haW4pKTsKKworICAgIGlmICghbmVlZHNTaXRlU3Bl
Y2lmaWNRdWlya3MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVuc2lnbmVkIGZpcnN0
TWV0YURvbWFpbklkZW50aWZpZXIgPSBtZXRhRG9tYWluSWRlbnRpZmllcnMuZ2V0KCkuZ2V0KGZp
cnN0RG9tYWluKTsKKyAgICBpZiAoIWZpcnN0TWV0YURvbWFpbklkZW50aWZpZXIpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBmaXJzdE1ldGFEb21haW5JZGVudGlmaWVyID09
IG1ldGFEb21haW5JZGVudGlmaWVycy5nZXQoKS5nZXQoc2Vjb25kRG9tYWluKTsKK30KKworV2Fs
bFRpbWUgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6cmVkdWNlVGltZVJlc29sdXRpb24oV2FsbFRp
bWUgdGltZSkKK3sKKyAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0ZDo6Zmxv
b3IodGltZS5zZWNvbmRzU2luY2VFcG9jaCgpIC8gdGltZXN0YW1wUmVzb2x1dGlvbikgKiB0aW1l
c3RhbXBSZXNvbHV0aW9uLnNlY29uZHMoKSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCmluZGV4IDUwMGQyZDhkZGRlOTJmZDVhY2Rl
OTQxNzY4ZWQyMWY1YWUzMzg4NTMuLmYwNDdjNzdjZGRiZmYyYzYyZDI2MmI5N2RiZDhhZDZiNWZj
ODE0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuaApAQCAtNTMsNiArNTMsOSBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyB7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBwcmltYXJ5RG9tYWluKGNvbnN0IFVSTCYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgcHJpbWFyeURvbWFpbihTdHJpbmdW
aWV3IGhvc3QpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgYXJlRG9tYWluc0Fz
c29jaWF0ZWQoYm9vbCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcywgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFdhbGxUaW1lIHJlZHVjZVRp
bWVSZXNvbHV0aW9uKFdhbGxUaW1lKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5jb2Rl
KEtleWVkRW5jb2RlciYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZGVjb2RlKEtl
eWVkRGVjb2RlciYsIHVuc2lnbmVkIG1vZGVsVmVyc2lvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDhjMWQzNWZhYzA4NTU3ODdhNTY2OGI3OTRjZjE2
ZjVjMmFlYTY3NDUuLjQ5ZTZkNmM5NzFhNmFiNjg0Y2NiYTFmN2U1NjkyYzNlMTYxN2Y0MGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTE1LDYgKzExNSw3
IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJv
eHkuaCIKICNpbmNsdWRlICJXZWJQcm90ZWN0aW9uU3BhY2UuaCIKKyNpbmNsdWRlICJXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVy
LmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YVN0b3JlLmgiCkBAIC0zOTgxLDcgKzM5ODIsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZnJhbWVEaWRCZWNvbWVGcmFtZVNldCh1aW50NjRfdCBmcmFtZUlELCBib29sIHZhbHVl
KQogICAgICAgICBtX2ZyYW1lU2V0TGFyZ2VzdEZyYW1lID0gdmFsdWUgPyBtX21haW5GcmFtZSA6
IDA7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1
cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0Zy
YW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlv
bkRhdGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWlu
dDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXF1ZXN0LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uIC0gT3JpZ2luYWwgVVJMICVzLCBjdXJyZW50IHRhcmdl
dCBVUkwgJXMiLCBvcmlnaW5hbFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwg
cmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIApAQCAtNDA0MCw2ICs0MDQx
LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXIKIAogICAgIFdlYkZyYW1lUHJveHkqIG9yaWdp
bmF0aW5nRnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0
YS5mcmFtZUlEKTsKIAorICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUg
PSB3ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgICAgICBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUtPmxvZ0ZyYW1lTmF2aWdhdGlvbigqZnJhbWUsIFVS
TChVUkwoKSwgbV9wYWdlTG9hZFN0YXRlLnVybCgpKSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25z
ZS51cmwoKSk7CisKICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7CiAgICAgICAgIGF1dG8g
ZGVzdGluYXRpb25GcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpmcmFtZSwgZnJh
bWVTZWN1cml0eU9yaWdpbi5zZWN1cml0eU9yaWdpbigpKTsKICAgICAgICAgUmVmUHRyPEFQSTo6
RnJhbWVJbmZvPiBzb3VyY2VGcmFtZUluZm87CkBAIC00MDYwLDEyICs0MDY0LDEyIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFNlY3VyCiAgICAgbV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2
aWdhdGlvblBvbGljeURlY2lzaW9uID0gZmFsc2U7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgY29uc3QgRnJhbWVJbmZvRGF0YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50
NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBv
cmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBs
eSYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBjb25zdCBGcmFtZUluZm9EYXRh
JiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6
OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIEFTU0VSVCghbV9zeW5jTmF2aWdhdGlvbkFj
dGlvblBvbGljeVJlcGx5KTsKICAgICBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkg
PSBXVEZNb3ZlKHJlcGx5KTsKIAotICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
ZnJhbWVJRCwgZnJhbWVTZWN1cml0eU9yaWdpbiwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmln
YXRpb25BY3Rpb25EYXRhKSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1Bh
Z2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBsaXN0ZW5lcklELCB1c2Vy
RGF0YSk7CisgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihmcmFtZUlELCBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRh
dGEpLCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5h
bFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIGxp
c3RlbmVySUQsIHVzZXJEYXRhKTsKIAogICAgIC8vIElmIHRoZSBjbGllbnQgZGlkIG5vdCByZXNw
b25kIHN5bmNocm9ub3VzbHksIHByb2NlZWQgd2l0aCB0aGUgbG9hZC4KICAgICBpZiAoYXV0byBz
eW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5ID0gV1RGTW92ZShtX3N5bmNOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5UmVwbHkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCAwMzkyNTBmMTkzZDI3YjhmNzY0NmZkMDFiNDhiZjAzYjZjZmI1OGE5Li5iMTA1MGM5NDA5
NzFhOGZlODk2ZDFmZWEwYzBmNGQ1NGU5MzgxNDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtMTM5OSw4ICsxMzk5LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
ZGlkRGVzdHJveU5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKTsKIAotICAgIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgY29uc3QgRnJhbWVJbmZvRGF0
YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2
NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9y
aWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVpbnQ2NF90IGxpc3Rl
bmVySUQsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIGNvbnN0IEZyYW1lSW5mb0RhdGEm
LCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgdWludDY0X3QgbGlzdGVuZXJJ
RCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRp
bmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlZGlyZWN0UmVzcG9uc2UsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5
bmM6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IGZyYW1lU2VjdXJpdHlPcmlnaW4sIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNl
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJh
bWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBj
YW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAg
ICAgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxMDUwMGVlNDlm
ZGNmMDgzM2IwMTAyMzIxOTA4NjliMzYyNmFhOTE1Li43ZjNjNjY4M2M2MWE1ZjY0OGRiODI5ZjFi
MTU0NDA4MjBlMDQwYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC05OSw4ICs5OSw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQ
cm94eSB7CiAKICAgICAjIFBvbGljeSBtZXNzYWdlcwogICAgIERlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwg
Ym9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpCi0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRf
dCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJp
dHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlv
bkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5m
b0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpCi0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWlu
dDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmln
YXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFt
ZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVz
ZXJEYXRhIHVzZXJEYXRhKSAtPiAodWludDY0X3QgbmV3TmF2aWdhdGlvbklELCBlbnVtIFdlYkNv
cmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9h
ZElELCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBv
bGljaWVzKSBEZWxheWVkCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50
NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdh
dGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1l
SW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1Bh
Z2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJl
Y3RSZXNwb25zZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKKyAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFt
ZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmln
aW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlv
bkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEg
b3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25z
ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKHVp
bnQ2NF90IG5ld05hdmlnYXRpb25JRCwgZW51bSBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5
QWN0aW9uLCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgc3RkOjpvcHRpb25hbDxXZWJL
aXQ6OldlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llcykgRGVsYXllZAogICAgIERl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHN0cnVjdCBXZWJL
aXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBVbmFibGVUb0ltcGxlbWVudFBv
bGljeSh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJL
aXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA1MzgyYTU1
NjEwZjczMGM0Zjg1YmU4OGE2N2EyZDU1NmRmNzBmNTg4Li5mMDViYzM1NDYyMGQ2YmU2YzNkNTFh
Zjk3NjliNjJjNDI1ZmUzZGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTI5LDYgKzI5LDgg
QEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01hbmFnZXIu
aCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlICJXZWJGcmFtZVBy
b3h5LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCIKQEAgLTUyLDEyICs1NCwxOSBAQCBj
b25zdGV4cHIgdW5zaWduZWQgb3BlcmF0aW5nRGF0ZXNXaW5kb3cgeyAzMCB9OwogY29uc3RleHBy
IHVuc2lnbmVkIHN0YXRpc3RpY3NNb2RlbFZlcnNpb24geyAxMiB9OwogY29uc3RleHByIHVuc2ln
bmVkIG1heEltcG9ydGFuY2UgeyAzIH07CiBjb25zdGV4cHIgdW5zaWduZWQgbWF4TnVtYmVyT2ZS
ZWN1cnNpdmVDYWxsc0luUmVkaXJlY3RUcmFjZUJhY2sgeyA1MCB9OworY29uc3RleHByIFNlY29u
ZHMgbWluaW11bVN0YXRpc3RpY3NQcm9jZXNzaW5nSW50ZXJ2YWwgeyA1X3MgfTsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSBTdHJpbmcgaXNvbGF0ZWRQcmltYXJ5RG9tYWlu
KGNvbnN0IFQmIHZhbHVlKQogewogICAgIHJldHVybiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpw
cmltYXJ5RG9tYWluKHZhbHVlKS5pc29sYXRlZENvcHkoKTsKIH0KIAorc3RhdGljIGJvb2wgYXJl
RG9tYWluc0Fzc29jaWF0ZWQoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIGZpcnN0
RG9tYWluLCBjb25zdCBTdHJpbmcmIHNlY29uZERvbWFpbikKK3sKKyAgICBib29sIG5lZWRzU2l0
ZVNwZWNpZmljUXVpcmtzID0gcGFnZSAmJiBwYWdlLT5wcmVmZXJlbmNlcygpLm5lZWRzU2l0ZVNw
ZWNpZmljUXVpcmtzKCk7CisgICAgcmV0dXJuIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmFyZURv
bWFpbnNBc3NvY2lhdGVkKG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzLCBmaXJzdERvbWFpbiwgc2Vj
b25kRG9tYWluKTsKK30KKwogY29uc3QgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4mIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVzKCkKIHsKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4+IGRhdGFUeXBl
cyhzdGQ6OmluaXRpYWxpemVyX2xpc3Q8V2Vic2l0ZURhdGFUeXBlPih7CkBAIC0zMjksNiArMzM4
LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0
YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3IKIAogICAgIG1lcmdlU3RhdGlzdGljcyhXVEZN
b3ZlKG9yaWdpbnMpKTsKICAgICAvLyBGaXJlIGJlZm9yZSBwcm9jZXNzaW5nIHN0YXRpc3RpY3Mg
dG8gcHJvcGFnYXRlIHVzZXIgaW50ZXJhY3Rpb24gYXMgZmFzdCBhcyBwb3NzaWJsZSB0byB0aGUg
bmV0d29yayBwcm9jZXNzLgorICAgIGNhbmNlbFBlbmRpbmdTdGF0aXN0aWNzUHJvY2Vzc2luZ1Jl
cXVlc3QoKTsKICAgICB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmcoW10oKSB7IH0pOwogICAgIHBy
b2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKIH0KQEAgLTU0Niw2ICs1NTYsOTIgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEZWJ1Z01vZGUoYm9vbCBlbmEKICNlbmRpZgogfQogCit2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVTdGF0aXN0aWNzUHJvY2Vzc2luZ1JlcXVlc3RJZk5l
Y2Vzc2FyeSgpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBtX3Bl
bmRpbmdTdGF0aXN0aWNzUHJvY2Vzc2luZ1JlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RTdGF0
aXN0aWNzUHJvY2Vzc2luZ1JlcXVlc3RJZGVudGlmaWVyOworICAgIG1fc3RhdGlzdGljc1F1ZXVl
LT5kaXNwYXRjaEFmdGVyKG1pbmltdW1TdGF0aXN0aWNzUHJvY2Vzc2luZ0ludGVydmFsLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdGF0aXN0aWNzUHJvY2Vzc2luZ1Jl
cXVlc3RJZGVudGlmaWVyID0gKm1fcGVuZGluZ1N0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdElk
ZW50aWZpZXJdIHsKKyAgICAgICAgaWYgKCFtX3BlbmRpbmdTdGF0aXN0aWNzUHJvY2Vzc2luZ1Jl
cXVlc3RJZGVudGlmaWVyIHx8ICptX3BlbmRpbmdTdGF0aXN0aWNzUHJvY2Vzc2luZ1JlcXVlc3RJ
ZGVudGlmaWVyICE9IHN0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdElkZW50aWZpZXIpIHsKKyAg
ICAgICAgICAgIC8vIFRoaXMgcmVxdWVzdCBoYXMgYmVlbiBjYW5jZWxlZC4KKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyhb
XSgpIHsgfSk7CisgICAgICAgIHByb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKKyAg
ICB9KTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbmNlbFBl
bmRpbmdTdGF0aXN0aWNzUHJvY2Vzc2luZ1JlcXVlc3QoKQoreworICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOworCisgICAgbV9wZW5kaW5nU3RhdGlzdGljc1Byb2Nlc3NpbmdSZXF1ZXN0
SWRlbnRpZmllciA9IHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5JiBmcmFt
ZSwgY29uc3QgVVJMJiBwYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpCit7CisgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGF1dG8gc291cmNlVVJMID0gcmVkaXJlY3RVUkw7Cisg
ICAgYm9vbCBpc1JlZGlyZWN0ID0gIXJlZGlyZWN0VVJMLmlzTnVsbCgpOworICAgIGlmICghaXNS
ZWRpcmVjdCkgeworICAgICAgICBzb3VyY2VVUkwgPSBmcmFtZS51cmwoKTsKKyAgICAgICAgaWYg
KHNvdXJjZVVSTC5pc051bGwoKSkKKyAgICAgICAgICAgIHNvdXJjZVVSTCA9IHBhZ2VVUkw7Cisg
ICAgfQorCisgICAgYXV0byYgdGFyZ2V0VVJMID0gcmVxdWVzdC51cmwoKTsKKworICAgIGlmICgh
dGFyZ2V0VVJMLmlzVmFsaWQoKSB8fCAhcGFnZVVSTC5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8gdGFyZ2V0SG9zdCA9IHRhcmdldFVSTC5ob3N0KCk7CisgICAgYXV0byBt
YWluRnJhbWVIb3N0ID0gcGFnZVVSTC5ob3N0KCk7CisKKyAgICBpZiAodGFyZ2V0SG9zdC5pc0Vt
cHR5KCkgfHwgbWFpbkZyYW1lSG9zdC5pc0VtcHR5KCkgfHwgdGFyZ2V0SG9zdCA9PSBzb3VyY2VV
UkwuaG9zdCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBwYWdlID0gZnJhbWUucGFn
ZSgpOworICAgIGF1dG8gdGFyZ2V0UHJpbWFyeURvbWFpbiA9IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M6OnByaW1hcnlEb21haW4odGFyZ2V0VVJMKTsKKyAgICBhdXRvIG1haW5GcmFtZVByaW1hcnlE
b21haW4gPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpwcmltYXJ5RG9tYWluKHBhZ2VVUkwpOwor
ICAgIGF1dG8gc291cmNlUHJpbWFyeURvbWFpbiA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnBy
aW1hcnlEb21haW4oc291cmNlVVJMKTsKKworICAgIGJvb2wgYXJlVGFyZ2V0QW5kTWFpbkZyYW1l
RG9tYWluc0Fzc29jaWF0ZWQgPSBhcmVEb21haW5zQXNzb2NpYXRlZChwYWdlLCB0YXJnZXRQcmlt
YXJ5RG9tYWluLCBtYWluRnJhbWVQcmltYXJ5RG9tYWluKTsKKyAgICBib29sIGFyZVRhcmdldEFu
ZFNvdXJjZURvbWFpbnNBc3NvY2lhdGVkID0gYXJlRG9tYWluc0Fzc29jaWF0ZWQocGFnZSwgdGFy
Z2V0UHJpbWFyeURvbWFpbiwgc291cmNlUHJpbWFyeURvbWFpbik7CisKKyAgICBtX3N0YXRpc3Rp
Y3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
dGFyZ2V0UHJpbWFyeURvbWFpbiA9IHRhcmdldFByaW1hcnlEb21haW4uaXNvbGF0ZWRDb3B5KCks
IG1haW5GcmFtZVByaW1hcnlEb21haW4gPSBtYWluRnJhbWVQcmltYXJ5RG9tYWluLmlzb2xhdGVk
Q29weSgpLCBzb3VyY2VQcmltYXJ5RG9tYWluID0gc291cmNlUHJpbWFyeURvbWFpbi5pc29sYXRl
ZENvcHkoKSwgdGFyZ2V0SG9zdCA9IHRhcmdldEhvc3QudG9TdHJpbmcoKS5pc29sYXRlZENvcHko
KSwgbWFpbkZyYW1lSG9zdCA9IG1haW5GcmFtZUhvc3QudG9TdHJpbmcoKS5pc29sYXRlZENvcHko
KSwgYXJlVGFyZ2V0QW5kTWFpbkZyYW1lRG9tYWluc0Fzc29jaWF0ZWQsIGFyZVRhcmdldEFuZFNv
dXJjZURvbWFpbnNBc3NvY2lhdGVkLCBpc1JlZGlyZWN0LCBpc01haW5GcmFtZSA9IGZyYW1lLmlz
TWFpbkZyYW1lKCldIHsKKyAgICAgICAgYm9vbCBzdGF0aXN0aWNzV2VyZVVwZGF0ZWQgPSBmYWxz
ZTsKKyAgICAgICAgaWYgKHRhcmdldEhvc3QgIT0gbWFpbkZyYW1lSG9zdCAmJiAhKGFyZVRhcmdl
dEFuZE1haW5GcmFtZURvbWFpbnNBc3NvY2lhdGVkIHx8IGFyZVRhcmdldEFuZFNvdXJjZURvbWFp
bnNBc3NvY2lhdGVkKSkgeworICAgICAgICAgICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVu
c3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4odGFyZ2V0UHJpbWFyeURvbWFp
bik7CisgICAgICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLmxhc3RTZWVuID0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljczo6cmVkdWNlVGltZVJlc29sdXRpb24oV2FsbFRpbWU6Om5vdygpKTsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRTdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMu
YWRkKG1haW5GcmFtZVByaW1hcnlEb21haW4pLmlzTmV3RW50cnkpCisgICAgICAgICAgICAgICAg
c3RhdGlzdGljc1dlcmVVcGRhdGVkID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChp
c1JlZGlyZWN0ICYmICFhcmVUYXJnZXRBbmRTb3VyY2VEb21haW5zQXNzb2NpYXRlZCkgeworICAg
ICAgICAgICAgaWYgKGlzTWFpbkZyYW1lKSB7CisgICAgICAgICAgICAgICAgYXV0byYgcmVkaXJl
Y3RpbmdPcmlnaW5TdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFy
eURvbWFpbihzb3VyY2VQcmltYXJ5RG9tYWluKTsKKyAgICAgICAgICAgICAgICBpZiAocmVkaXJl
Y3RpbmdPcmlnaW5TdGF0aXN0aWNzLnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8uYWRkKHRhcmdl
dFByaW1hcnlEb21haW4pLmlzTmV3RW50cnkpCisgICAgICAgICAgICAgICAgICAgIHN0YXRpc3Rp
Y3NXZXJlVXBkYXRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYXV0byYgdGFyZ2V0U3RhdGlz
dGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4odGFyZ2V0UHJp
bWFyeURvbWFpbik7CisgICAgICAgICAgICAgICAgaWYgKHRhcmdldFN0YXRpc3RpY3MudG9wRnJh
bWVVbmlxdWVSZWRpcmVjdHNGcm9tLmFkZChzb3VyY2VQcmltYXJ5RG9tYWluKS5pc05ld0VudHJ5
KQorICAgICAgICAgICAgICAgICAgICBzdGF0aXN0aWNzV2VyZVVwZGF0ZWQgPSB0cnVlOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvJiByZWRpcmVjdGluZ09yaWdp
blN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHNv
dXJjZVByaW1hcnlEb21haW4pOworICAgICAgICAgICAgICAgIGlmIChyZWRpcmVjdGluZ09yaWdp
blN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5hZGQodGFyZ2V0UHJpbWFy
eURvbWFpbikuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljc1dlcmVV
cGRhdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0g
ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbih0YXJnZXRQcmltYXJ5RG9t
YWluKTsKKyAgICAgICAgICAgICAgICBpZiAodGFyZ2V0U3RhdGlzdGljcy5zdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c0Zyb20uYWRkKHNvdXJjZVByaW1hcnlEb21haW4pLmlzTmV3RW50cnkpCisg
ICAgICAgICAgICAgICAgICAgIHN0YXRpc3RpY3NXZXJlVXBkYXRlZCA9IHRydWU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RhdGlzdGljc1dlcmVVcGRhdGVkKQor
ICAgICAgICAgICAgc2NoZWR1bGVTdGF0aXN0aWNzUHJvY2Vzc2luZ1JlcXVlc3RJZk5lY2Vzc2Fy
eSgpOworICAgIH0pOworfQorCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICh1cmwuaXNCbGFu
a1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDQ2OGQ1OTQ4Njg5
OTY3MTY1NzliYzc1ZmQzMmE1YWVhZTc3Zjg1MjAuLjFmYTg2NDYzZWU0NDdjMjExMTk0ZTdjNTYz
MjJiMzY3YTM5YzI4YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNz
IFdvcmtRdWV1ZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEtleWVkRGVjb2RlcjsKIGNs
YXNzIEtleWVkRW5jb2RlcjsKK2NsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFVSTDsKIHN0
cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogfQpAQCAtNTUsNiArNTYsNyBAQCBzdHJ1Y3Qg
UmVzb3VyY2VMb2FkU3RhdGlzdGljczsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBPcGVy
YXRpbmdEYXRlOworY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsK
IAogZW51bSBjbGFzcyBTaG91bGRDbGVhckZpcnN0OwpAQCAtOTksNiArMTAxLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBJ
UEM6OkNvbm5lY3Rpb24mKTsKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZSgpOwog
CisgICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgV2ViRnJhbWVQcm94eSYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgcGFnZVVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiByZWRpcmVjdFVSTCk7CiAgICAgdm9pZCBsb2dVc2VySW50ZXJh
Y3Rpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7CiAgICAgdm9pZCBsb2dOb25SZWNlbnRVc2VySW50
ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7CiAgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFj
dGlvbihjb25zdCBXZWJDb3JlOjpVUkwmKTsKQEAgLTE4NSw2ICsxODgsOSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljcyYsIFJlc291cmNlTG9hZFByZXZhbGVuY2UpOwogICAgIHZvaWQgcHJvY2Vzc1N0YXRpc3Rp
Y3NBbmREYXRhUmVjb3JkcygpOwogCisgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNz
aW5nUmVxdWVzdElmTmVjZXNzYXJ5KCk7CisgICAgdm9pZCBjYW5jZWxQZW5kaW5nU3RhdGlzdGlj
c1Byb2Nlc3NpbmdSZXF1ZXN0KCk7CisKICAgICB2b2lkIHJlc2V0Q29va2llUGFydGl0aW9uaW5n
U3RhdGUoKTsKICAgICBTdG9yYWdlQWNjZXNzU3RhdHVzIHN0b3JhZ2VBY2Nlc3NTdGF0dXMoY29u
c3QgU3RyaW5nJiBzdWJGcmFtZVByaW1hcnlEb21haW4sIGNvbnN0IFN0cmluZyYgdG9wRnJhbWVQ
cmltYXJ5RG9tYWluKTsKICAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN0cmlu
ZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdXNlcldhc1Byb21wdGVkTm93
T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKQEAgLTI0MSw4ICsy
NDcsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZGVidWdNb2RlRW5hYmxlZCB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX2RlYnVnTG9nZ2luZ0VuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9z
dG9yYWdlQWNjZXNzUHJvbXB0c0VuYWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNTY2hl
ZHVsZWRQcm9jZXNzU3RhdHMgeyBmYWxzZSB9OwogCiAgICAgRnVuY3Rpb248dm9pZCAoY29uc3Qg
U3RyaW5nJik+IG1fc3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazsKKworICAgIHVpbnQ2NF90IG1f
bGFzdFN0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdElkZW50aWZpZXIgeyAwIH07CisgICAgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gbV9wZW5kaW5nU3RhdGlzdGljc1Byb2Nlc3NpbmdSZXF1ZXN0
SWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKaW5kZXggMDE5ZDhiZTU5MGE1YTYyZWZlNGViZTBkZDM2ZWY3ZWRmY2Jj
MjZjYi4uODQzMGZiNmFkMGRlNGMzZGIyNTNmOGMxMTY2MGNkOTI1ZDA3ZDMzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC04MTMsNyArODEzLDcgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6YXBwbHlUb0RvY3VtZW50TG9hZGVyKFdlYnNpdGVQb2xpY2llc0RhdGEm
JiB3ZWJzaXRlUG8KICAgICBXZWJzaXRlUG9saWNpZXNEYXRhOjphcHBseVRvRG9jdW1lbnRMb2Fk
ZXIoV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCAqZG9jdW1lbnRMb2FkZXIpOwogfQogCi12b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlLCBG
b3JtU3RhdGUqIGZvcm1TdGF0ZSwgUG9saWN5RGVjaXNpb25Nb2RlIHBvbGljeURlY2lzaW9uTW9k
ZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQordm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmln
YXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgRm9ybVN0YXRl
KiBmb3JtU3RhdGUsIFBvbGljeURlY2lzaW9uTW9kZSBwb2xpY3lEZWNpc2lvbk1vZGUsIEZyYW1l
UG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9m
cmFtZSA/IG1fZnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CiAgICAgaWYgKCF3ZWJQYWdlKSB7CkBA
IC04NjQsNyArODY0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICBuYXZpZ2F0aW9u
QWN0aW9uRGF0YS5jYW5IYW5kbGVSZXF1ZXN0ID0gd2ViUGFnZS0+Y2FuSGFuZGxlUmVxdWVzdChy
ZXF1ZXN0KTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5ID0gbmF2aWdhdGlvbkFjdGlvbi5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCk7
CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuZG93bmxvYWRBdHRyaWJ1dGUgPSBuYXZpZ2F0aW9u
QWN0aW9uLmRvd25sb2FkQXR0cmlidXRlKCk7Ci0gICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuaXNS
ZWRpcmVjdCA9IGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlOworICAgIG5hdmlnYXRpb25BY3Rp
b25EYXRhLmlzUmVkaXJlY3QgPSAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKTsKICAgICBuYXZp
Z2F0aW9uQWN0aW9uRGF0YS50cmVhdEFzU2FtZU9yaWdpbk5hdmlnYXRpb24gPSBuYXZpZ2F0aW9u
QWN0aW9uLnRyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbigpOwogICAgIG5hdmlnYXRpb25BY3Rp
b25EYXRhLmlzQ3Jvc3NPcmlnaW5XaW5kb3dPcGVuTmF2aWdhdGlvbiA9IG5hdmlnYXRpb25BY3Rp
b24uaXNDcm9zc09yaWdpbldpbmRvd09wZW5OYXZpZ2F0aW9uKCk7CiAgICAgbmF2aWdhdGlvbkFj
dGlvbkRhdGEuaGFzT3BlbmVkRnJhbWVzID0gbmF2aWdhdGlvbkFjdGlvbi5oYXNPcGVuZWRGcmFt
ZXMoKTsKQEAgLTg5Miw3ICs4OTIsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdAogICAgICAg
ICBEb3dubG9hZElEIGRvd25sb2FkSUQ7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBv
bGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzOwogCi0gICAgICAgIGlmICghd2ViUGFnZS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvblN5bmMobV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFt
ZShjb3JlRnJhbWUpLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBu
YXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LCBsaXN0ZW5lcklELCBV
c2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVz
KHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6UmVwbHkobmV3TmF2aWdhdGlvbklELCBwb2xp
Y3lBY3Rpb24sIGRvd25sb2FkSUQsIHdlYnNpdGVQb2xpY2llcykpKSB7CisgICAgICAgIGlmICgh
d2ViUGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvblN5bmMobV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCks
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0
aW5nUGFnZUlELCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LCBy
ZWRpcmVjdFJlc3BvbnNlLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3lu
Yzo6UmVwbHkobmV3TmF2aWdhdGlvbklELCBwb2xpY3lBY3Rpb24sIGRvd25sb2FkSUQsIHdlYnNp
dGVQb2xpY2llcykpKSB7CiAgICAgICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24obGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9KTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtOTAyLDcgKzkwMiw3IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihjb25zdCBOYXZpZ2F0CiAgICAgfQogCiAgICAgQVNTRVJUKHBvbGljeURlY2lzaW9uTW9kZSA9
PSBQb2xpY3lEZWNpc2lvbk1vZGU6OkFzeW5jaHJvbm91cyk7Ci0gICAgaWYgKCF3ZWJQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24obV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3Jl
RnJhbWUpLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBuYXZpZ2F0
aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LCBsaXN0ZW5lcklELCBVc2VyRGF0
YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJE
YXRhLmdldCgpKS5nZXQoKSkpKSkKKyAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihtX2ZyYW1lLT5mcmFt
ZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksIGRvY3VtZW50
TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5n
RnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3Vy
Y2VSZXF1ZXN0KCksIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIGxpc3RlbmVySUQsIFVzZXJE
YXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNl
ckRhdGEuZ2V0KCkpLmdldCgpKSkpKQogICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAxZjkyNzAxYzNiYmUzMGUxMGYz
OWE2YTM0Nzg1YWQ0NjE1ZjBjOWRlLi42M2NiYjEyZmNiMTRkODk1NDBiNjFkNGI0NTI1ZjZlZGVj
Y2ViZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTI1LDcgKzEyNSw3IEBA
IHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwogICAgIHZv
aWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgV2ViQ29yZTo6
TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNv
cmU6OkZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBXZWJDb3JlOjpGcmFtZVBv
bGljeUZ1bmN0aW9uJiYpIGZpbmFsOwotICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNl
LCBXZWJDb3JlOjpGb3JtU3RhdGUqLCBXZWJDb3JlOjpQb2xpY3lEZWNpc2lvbk1vZGUsIFdlYkNv
cmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlv
biYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIFdlYkNv
cmU6OlBvbGljeURlY2lzaW9uTW9kZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBm
aW5hbDsKICAgICB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgZmluYWw7CiAgICAgCiAgICAgdm9p
ZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRl
eCA2OWI3Njg3MTU0OWFhMWRmNWExMzYwOWJjZDkyOTNmNzE2NDAxYzM5Li42NDkyYmViYmZlODZm
NWU0MmUxZTUzZjRiMWFiNmIzNTg4N2QxNjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCkBAIC0yMDAsNyArMjAwLDYgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2Vzcygp
CiAgICAgbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuYWRkKFBBTDo6U2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCksIEhhc2hNYXA8dW5zaWduZWQsIFdhbGxUaW1lPigpKTsKIAogICAg
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXROb3RpZmljYXRpb25DYWxsYmFjayhb
dGhpc10gKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmIHN0YXRpc3RpY3MpIHsKLSAg
ICAgICAgQVNTRVJUKCFzdGF0aXN0aWNzLmlzRW1wdHkoKSk7CiAgICAgICAgIHBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoV1RGTW92ZShzdGF0aXN0aWNzKSks
IDApOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAwZDZhYWY4N2Fm
MzIwYjgxMjZmZDQ0MGYwNDE5ODZiZTVjODIzMzRjLi4zODhkMTRhYmY4YWE2MjkzYzQ2ODg1YmQw
NjViM2M0MjAxNzY0MzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTEyOCw3ICsx
MjgsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwogICAg
IHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgV2ViQ29y
ZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdl
YkNvcmU6OkZvcm1TdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6
OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0
UmVzcG9uc2UsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIFdlYkNvcmU6OlBvbGljeURlY2lzaW9uTW9k
ZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0
aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6Rm9ybVN0YXRl
KiwgV2ViQ29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0
aW9uJiYpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSBmaW5hbDsKIAogICAg
IHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGU1OWMx
ODk5MWM3ZjQ0NTlmMjA5YzIyNDAyNDU2NjllZjcxMjQ5N2QuLjQ5ODcwZGViNTlkNGIzYjVhN2Q4
MGJmY2ZiMzFhNmY2MmM0OTJmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC05
MDEsNyArOTAxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVjaXNpb25MaXN0ZW5lcjpzZXRVcFBvbGljeUxpc3RlbmVyKFdURk1vdmUoZnVu
Y3Rpb24pLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgdHJ5QXBwTGluayA/IChOU1VSTCAqKXJlcXVl
c3QudXJsKCkgOiBuaWwpLmdldCgpXTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25B
Y3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sLCBGb3Jt
U3RhdGUqIGZvcm1TdGF0ZSwgUG9saWN5RGVjaXNpb25Nb2RlLCBGcmFtZVBvbGljeUZ1bmN0aW9u
JiYgZnVuY3Rpb24pCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBG
b3JtU3RhdGUqIGZvcm1TdGF0ZSwgUG9saWN5RGVjaXNpb25Nb2RlLCBGcmFtZVBvbGljeUZ1bmN0
aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93
ZWJGcmFtZS5nZXQoKSk7CiAgICAgQk9PTCB0cnlBcHBMaW5rID0gc2hvdWxkVHJ5QXBwTGluayh3
ZWJWaWV3LCBhY3Rpb24sIGNvcmUobV93ZWJGcmFtZS5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCmluZGV4IGQ0NWYzYzMxNDFjODYxNWI2MDQ0NjBhZTRkYTc3ODE4NmIwMTdj
ZDEuLjIwNThiZTU2ZTMxOTNkNTZiYTZkMjljYzMwZGZhZWZiMjI0YjIyZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTU2NSw3ICs1NjUsNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBO
YXZpZ2F0aQogICAgIG1fcG9saWN5TGlzdGVuZXJQcml2YXRlLT5tX3BvbGljeUZ1bmN0aW9uKFBv
bGljeUFjdGlvbjo6VXNlKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
IGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sLCBGb3JtU3RhdGUq
IGZvcm1TdGF0ZSwgV2ViQ29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBGcmFtZVBvbGljeUZ1bmN0
aW9uJiYgZnVuY3Rpb24pCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9u
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgV2ViQ29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBGcmFt
ZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgV2ViVmlldyogd2ViVmlldyA9IG1f
d2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX3dlYkZy
YW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDFhMDMxMDZmMzk3NGZiMDNjMDVk
YmVjZDI5MGZkNzZlZTE4NzU4MDYuLjM1YjY2NWE0Zjg5ZWFhNWRjZWRiYWVmYzk3MmE0Zjg4MTdi
YzBhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTAyLDcgKzEwMiw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmln
YXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpG
b3JtU3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1lLCBXZWJDb3JlOjpGcmFtZVBv
bGljeUZ1bmN0aW9uJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3Bv
bnNlLCBXZWJDb3JlOjpGb3JtU3RhdGUqLCBXZWJDb3JlOjpQb2xpY3lEZWNpc2lvbk1vZGUsIFdl
YkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlv
bkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OkZvcm1TdGF0ZSos
IFdlYkNvcmU6OlBvbGljeURlY2lzaW9uTW9kZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlv
biYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhiOWQzODE2NWQ0ODAwZjFhN2JiOWQ1
MjM0YzkwMGUzNGIxNzhhNWUuLmVhZjJlYjRkNzBlZWFkZjA4Y2IxOGZjM2MyOTJhNWM5MWUyMmU5
NGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wNi0xMiAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFBTT046IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXJlZGlyZWN0
LWNvbGx1c2lvbi5odG1sIEFTU0VSVFMgd2l0aCBwcm9jZXNzIHN3YXAgZW5hYmxlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2NTQ1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXR0ZW1wdCB0byBtYXJr
IHRoZSB0ZXN0IGFzIG5vbi1mbGFreSBub3cgdGhhdCBpdCBubyBsb25nZXIgcmVsaWVzIG9uIHN5
bmMnaW5nIGZyb20gdGhlIFdlYlByb2Nlc3MKKyAgICAgICAgdG8gdGhlIFVJUHJvY2Vzcy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE4LTA2LTEyICBK
aWFuanVuIFpodSAgPGppYW5qdW4uemh1QGludGVsLmNvbT4KIAogICAgICAgICBIYXNoIGRldmlj
ZUlkIGFuZCBncm91cElkIG9mIE1lZGlhVHJhY2tDYXBhYmlsaXRpZXMuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDg5NWIyYzFlMTk5MjgxZTAyMWQ1ZGNk
Nzg0NDJlN2E4YTdjZDU3ODMuLjQ4YTc4NzY3ZjAzNzc0MTEzZGY1MmMyY2JkMzcwMTE2NzNmM2Jh
YzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCkBAIC03MDUs
NyArNzA1LDcgQEAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFz
LXByZXZhbGVudC1iYXNlZC1vbi1zdWItZnJhbWUtdW5kZXIKIGh0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tc3VicmVzb3VyY2Ut
dW5kZXItdG9wLWZyYW1lLW9yaWdpbnMuaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi1zdWJyZXNvdXJj
ZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tc3VicmVzb3VyY2Ut
cmVkaXJlY3QtY29sbHVzaW9uLmh0bWwgWyBQYXNzIF0KLWh0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXJlZGly
ZWN0LWNvbGx1c2lvbi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXJl
ZGlyZWN0LWNvbGx1c2lvbi5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUt
cmVkaXJlY3RzLXRvLmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9jbGVhci1pbi1tZW1vcnktYW5kLXBlcnNpc3RlbnQtc3RvcmUuaHRtbCBbIFBhc3MgXQog
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2dyYW5kZmF0aGVyaW5nLmh0bWwgWyBQ
YXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342693</attachid>
            <date>2018-06-13 14:31:12 -0700</date>
            <delta_ts>2018-06-13 15:16:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186545-20180613143111.patch</filename>
            <type>text/plain</type>
            <size>66435</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyODExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGM0YzFhMjNlZjk3MGEx
OGMyODBkNWQ0OWJjZmY5Mjc4OTBlZmQ5MS4uOTllMjg0MDAwYjU3N2M1NjYzZTAxMWUzZDA4ZWUw
ODY2ZjczZmQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE4LTA2LTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUFNPTjogaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3At
ZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWwgQVNTRVJUUyB3aXRoIHByb2Nlc3Mgc3dhcCBl
bmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODY1NDUKKworICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCisKKyAgICAgICAgTW92
ZSBmcmFtZSBuYXZpZ2F0aW9uIGxvZ2dpbmcgZm9yIElUUCBwdXJwb3NlcyBmcm9tIHRoZSBXZWJQ
cm9jZXNzIHRvIHRoZSBVSVByb2Nlc3MuCisgICAgICAgIFRoaXMgaW5mb3JtYXRpb24gd2FzIHBy
ZXZpb3VzbHkgbG9nZ2VkIGluIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoKSBhbmQg
d2FzIGdldHRpbmcKKyAgICAgICAgc3luYydkIHRvIHRoZSBVSVByb2Nlc3MgYXQgcmVndWxhciBp
bnRlcnZhbHMgb3Igd2hlbiB0aGUgbGF5b3V0IHRlc3RzIGNhbGwgdGVzdFJ1bm5lcidzCisgICAg
ICAgIHN0YXRpc3RpY3NOb3RpZnlPYnNlcnZlcigpLiBXZSBub3cgZG8gdGhlIGxvZ2dpbmcgZGly
ZWN0bHkgaW4gdGhlIFVJUHJvY2VzcywgaW4KKyAgICAgICAgV2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uICh3aGljaCB3YXMgZ2V0dGluZyBjYWxsZWQgdmlhIElQ
QyBmcm9tCisgICAgICAgIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoKSkuCisKKyAg
ICAgICAgVGhpcyBpcyBtb3JlIGVmZmljaWVudCBhbmQgd2lsbCBhbHNvIGJlIG5lZWRlZCBzb29u
IGR1ZSB0byB0aGUgd2F5IHByb2Nlc3Mgc3dhcCBvbiBuYXZpZ2F0aW9uCisgICAgICAgIGRlYWxz
IHdpdGggY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0cy4gT24gY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0IG9m
IHRoZSBtYWluIGZyYW1lLCBQU09OIGNhbmNlbHMKKyAgICAgICAgdGhlIGxvYWQgYW5kIHN0YXJ0
ZWQgYSBuZXcgbG9hZCB0byB0aGUgcmVkaXJlY3RlZCB0byBVUkwgaW4gdGhlIG5ldyBXZWJQcm9j
ZXNzLiBBcyBhIHJlc3VsdCwKKyAgICAgICAgdGhlIG5ldyBXZWJQcm9jZXNzIGlzIG5vdCBhd2Fy
ZSB0aGF0IHRoZSBsb2FkIGlzIGEgcmVkaXJlY3QsIHdoaWNoIGlzIGluZm9ybWF0aW9uIHRoYXQg
SVRQCisgICAgICAgIHJlcXVpcmVzLiBCeSBtb3ZpbmcgdGhlIElUUCBsb2dnaW5nIHRvIHRoZSBV
SVByb2Nlc3MsIHdlIHN0aWxsIGhhdmUgYWNjZXNzIHRvIHRoaXMKKyAgICAgICAgaW5mb3JtYXRp
b24uIAorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICBTdG9wIGxv
Z2dpbmcgdGhlIG5hdmlnYXRpb24gbm93IHRoYXQgaXQgaXMgbG9nZ2VkIGluIHRoZSBVSVByb2Nl
c3MuCisKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbik6CisgICAgICAgICogbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRX
aXRoRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeSk6CisgICAgICAgICogbG9hZGVy
L1BvbGljeUNoZWNrZXIuaDoKKyAgICAgICAgV2Ugbm93IHBhc3MgdGhlIGZ1bGwgcmVkaXJlY3Qg
cmVxdWVzdCB0byB0aGUgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbgorICAgICAgICBk
ZWxlZ2F0ZSBpbnN0ZWFkIG9mIGEgc2ltcGxlIGlzUmVkaXJlY3QgYm9vbGVhbiwgc28gdGhhdCB3
ZSBoYXZlIHRoZSByZWRpcmVjdAorICAgICAgICByZXNwb25zZSBVUkwgaW4gdGhlIFVJUHJvY2Vz
cyBmb3IgSVRQIGxvZ2dpbmcuCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXJlRG9tYWluc0Fzc29jaWF0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nV2ViU29ja2V0TG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlcklu
dGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbik6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZE9ic2VydmVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6YXJl
RG9tYWluc0Fzc29jaWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljczo6cmVkdWNlVGltZVJlc29sdXRpb24pOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLmg6CisgICAgICAgIC0gUmVtb3ZlIFJlc291cmNlTG9hZE9ic2VydmVyOjps
b2dGcmFtZU5hdmlnYXRpb24oKSBub3cgdGhhdCBpdCBpcyBvbiB0aGUgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLgorICAgICAgICAtIE1vdmUgc29tZSBjb2RlIGZyb20gUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIgdG8gUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBzbyB0aGF0IGl0IGNhbgorICAg
ICAgICAgIGJlIGNhbGxlZCBmcm9tIHRoZSBVSVByb2Nlc3MgYW5kIHRvIGF2b2lkIGNvZGUgZHVw
bGljYXRpb24uCisKIDIwMTgtMDYtMTMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudCBpcyBvbmx5IG5lZWRlZCBmb3IgQVJN
IENQVXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDI0Nzg2MjE1NDEwMDhkNjA3ZjQwY2MzNTRmMGYxMjUyNGYzOTI1
ZDkuLjBjYzAzMjJhOTg1MjRiZTFmYzlmMTk1MmM2NDJkZDdjNThlOGRlNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjcgQEAKKzIwMTgtMDYtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBQU09OOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xh
c3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1mcmFtZS1yZWRpcmVjdC1jb2xsdXNpb24u
aHRtbCBBU1NFUlRTIHdpdGggcHJvY2VzcyBzd2FwIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjU0NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICBNb3ZlIGZyYW1lIG5hdmlnYXRpb24gbG9nZ2lu
ZyBmb3IgSVRQIHB1cnBvc2VzIGZyb20gdGhlIFdlYlByb2Nlc3MgdG8gdGhlIFVJUHJvY2Vzcy4K
KyAgICAgICAgVGhpcyBpbmZvcm1hdGlvbiB3YXMgcHJldmlvdXNseSBsb2dnZWQgaW4gRG9jdW1l
bnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCgpIGFuZCB3YXMgZ2V0dGluZworICAgICAgICBzeW5j
J2QgdG8gdGhlIFVJUHJvY2VzcyBhdCByZWd1bGFyIGludGVydmFscyBvciB3aGVuIHRoZSBsYXlv
dXQgdGVzdHMgY2FsbCB0ZXN0UnVubmVyJ3MKKyAgICAgICAgc3RhdGlzdGljc05vdGlmeU9ic2Vy
dmVyKCkuIFdlIG5vdyBkbyB0aGUgbG9nZ2luZyBkaXJlY3RseSBpbiB0aGUgVUlQcm9jZXNzLCBp
bgorICAgICAgICBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24g
KHdoaWNoIHdhcyBnZXR0aW5nIGNhbGxlZCB2aWEgSVBDIGZyb20KKyAgICAgICAgRG9jdW1lbnRM
b2FkZXI6OndpbGxTZW5kUmVxdWVzdCgpKS4KKworICAgICAgICBUaGlzIGlzIG1vcmUgZWZmaWNp
ZW50IGFuZCB3aWxsIGFsc28gYmUgbmVlZGVkIHNvb24gZHVlIHRvIHRoZSB3YXkgcHJvY2VzcyBz
d2FwIG9uIG5hdmlnYXRpb24gCisgICAgICAgIGRlYWxzIHdpdGggY3Jvc3Mtb3JpZ2luIHJlZGly
ZWN0cy4gT24gY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0IG9mIHRoZSBtYWluIGZyYW1lLCBQU09OIGNh
bmNlbHMKKyAgICAgICAgdGhlIGxvYWQgYW5kIHN0YXJ0ZWQgYSBuZXcgbG9hZCB0byB0aGUgcmVk
aXJlY3RlZCB0byBVUkwgaW4gdGhlIG5ldyBXZWJQcm9jZXNzLiBBcyBhIHJlc3VsdCwKKyAgICAg
ICAgdGhlIG5ldyBXZWJQcm9jZXNzIGlzIG5vdCBhd2FyZSB0aGF0IHRoZSBsb2FkIGlzIGEgcmVk
aXJlY3QsIHdoaWNoIGlzIGluZm9ybWF0aW9uIHRoYXQgSVRQCisgICAgICAgIHJlcXVpcmVzLiBC
eSBtb3ZpbmcgdGhlIElUUCBsb2dnaW5nIHRvIHRoZSBVSVByb2Nlc3MsIHdlIHN0aWxsIGhhdmUg
YWNjZXNzIHRvIHRoaXMKKyAgICAgICAgaW5mb3JtYXRpb24uCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgIC0gV2Ugbm93IHBhc3MgdGhlIGZ1bGwgcmVkaXJlY3QgcmVz
cG9uc2UgdGhlIHRoZSBkZWxlZ2F0ZSBtZXRob2QgaW5zdGVhZCBvZiBhIHNpbXBsZQorICAgICAg
ICBpc1JlZGlyZWN0IGJvb2xlYW4uCisgICAgICAgIC0gTG9nIHRoZSBuYXZpZ2F0aW9uIGluIHRo
ZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgZm9yIElUUCBwdXJwb3Nlcy4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjphcmVEb21haW5zQXNzb2NpYXRlZCk6CisgICAgICAgIEVxdWl2YWxlbnQg
b2YgUmVzb3VyY2VMb2FkT2JzZXJ2ZXIncyBhcmVEb21haW5zQXNzb2NpYXRlZCgpLiBNb3N0IG9m
IHRoZSBsb2dpYyB3YXMgbW92ZWQKKyAgICAgICAgdG8gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6
YXJlRG9tYWluc0Fzc29jaWF0ZWQoKSB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLgorCisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1VwZGF0ZWQpOgorICAgICAgICBUaGlzIGlzIGNhbGxlZCB3aGVuZXZlciBhIFdl
YlByb2Nlc3Mgc2VuZHMgbmV3IHJlc291cmNlIGxvYWQgc3RhdGlzdGljcyB0byB0aGUgVUlQcm9j
ZXNzLgorICAgICAgICBXaGVuZXZlciB0aGlzIGhhcHBlbnMsIHdlIGNhbGwgcHJvY2Vzc1N0YXRp
c3RpY3NBbmREYXRhUmVjb3JkcygpIHJpZ2h0IGF3YXksIHdoaWNoIGlzCisgICAgICAgIHNvbWV0
aW1lcyB0aGUgdGVzdHMgY3VycmVudGx5IHJlbHkgb24uIEFzIGEgcmVzdWx0LCB3ZSBjYW4gY2Fu
Y2VscyBhbnkgcGVuZGluZyBzdGF0aXN0aWNzCisgICAgICAgIHByb2Nlc3NpbmcgcmVxdWVzdCB0
aGF0IHdhcyBzY2hlZHVsZWQgYnkgbG9nRnJhbWVOYXZpZ2F0aW9uKCkuCisKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZVN0YXRpc3RpY3NQ
cm9jZXNzaW5nUmVxdWVzdElmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYW5jZWxQZW5kaW5nU3RhdGlzdGljc1Byb2Nlc3NpbmdS
ZXF1ZXN0KToKKyAgICAgICAgV2hlbmV2ZXIgYSBuYXZpZ2F0aW9uIGlzIGxvZ2dlZCBhbmQgc3Rh
dGlzdGljcyBoYXZlIGJlZW4gdXBkYXRlZCwgd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UKKyAgICAg
ICAgc2NoZWR1bGUgYSAidGltZXIiIHRvIHByb2Nlc3MgdGhlIG5ldyBkYXRhLiBXZSBkbyB0aGlz
IGF0IG1vc3QgZXZlcnkgNSBzZWNvbmRzIGZvciBwZXJmb3JtYW5jZQorICAgICAgICByZWFzb25z
LiBUaGlzIDUgc2Vjb25kIGludGVydmFsIG1hdGNoZXMgd2hhdCB0aGUgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIgaXMgdXNpbmcgaW4gdGhlIFdlYlByb2Nlc3MKKyAgICAgICAgdG8gbm90aWZ5IHRoZSBV
SVByb2Nlc3Mgb2YgbmV3IGRhdGEuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpsb2dGcmFtZU5hdmlnYXRpb24pOgorICAgICAgICBUaGlzIGNvZGUg
d2FzIG1vdmVkIGZyb20gUmVzb3VyY2VMb2FkT2JzZXJ2ZXIgdG8gV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlIG5vdyB0aGF0IHdlCisgICAgICAgIGRvIHRoaXMgbG9nZ2luZyBpbiB0aGUg
VUlQcm9jZXNzIGluc3RlYWQgb2YgdGhlIFdlYlByb2Nlc3MuIE9uZSBkaWZmZXJlbmNlIHdpdGgg
V2ViQ29yZSBpcworICAgICAgICB0aGF0IHdlIHVzZSBXZWJQYWdlUHJveHk6OnBhZ2VMb2FkU3Rh
dGUoKS51cmwoKSBhcyBtYWluRnJhbWVVUkwgaW5zdGVhZCBvZgorICAgICAgICBXZWJQYWdlUHJv
eHk6Om1haW5GcmFtZSgpLnVybCgpLiBUaGUgcmVhc29uIGZvciB0aGF0IGlzIHRoYXQgV2ViUGFn
ZVByb3h5OjptYWluRnJhbWUoKS51cmwoKQorICAgICAgICBiZWNvbWVzIGVtcHR5IGluIGNhc2Ug
b2YgcHJvY2VzcyBzd2FwIGJ1dCBJVFAgc3RpbGwgbmVlZHMgdGhlIGFjdHVhbCBtYWluIGZyYW1l
IFVSTCB3aGVuIHRoZQorICAgICAgICBuYXZpZ2F0aW9uIHdhcyB0cmlnZ2VyZWQuIFdlYlBhZ2VQ
cm94eTo6cGFnZUxvYWRTdGF0ZSgpLnVybCgpIGdpdmVzIHVzIHRoaXMgaW5mb3JtYXRpb24uCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICBXZSBub3cgcGFzcyB0
aGUgZnVsbCByZWRpcmVjdCByZXNwb25zZSB0aGUgdGhlIGRlbGVnYXRlIG1ldGhvZCBpbnN0ZWFk
IG9mIGEgc2ltcGxlCisgICAgICAgIGlzUmVkaXJlY3QgYm9vbGVhbi4KKwogMjAxOC0wNi0xMyAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaCBkdXJp
bmcgaW50ZXJydXB0ZWQgcHJvY2VzcyB0ZXJtaW5hdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCmluZGV4IDljYTY2Njg3ZWJhOWIxNzNjOTkxMGU3YWRmZTMwNzRmNGE4MGI4MmYuLjhhMTIw
NDE1YjY0NjgxMzU5YTQwMDk0NjZkYzg3NjZmOTg1ODQ5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOC0wNi0xMyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFBTT046IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXJlZGlyZWN0
LWNvbGx1c2lvbi5odG1sIEFTU0VSVFMgd2l0aCBwcm9jZXNzIHN3YXAgZW5hYmxlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2NTQ1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgorCisgICAgICAgIFVwZGF0ZSBjbGllbnQgZGVs
ZWdhdGUgbm93IHRoYXQgcGFyYW1ldGVyIHR5cGUgaGFzIGNoYW5nZWQuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisKIDIwMTgt
MDYtMTEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
TGluayBkcmFnIGltYWdlIGlzIGluY29uc2lzdGVudGx5IHVucmVhZGFibGUgaW4gZGFyayBtb2Rl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggOTg4MTg3YTA2MGEwODBmNjI5OTRkMjQz
MWZiZmJlZGEyMWNiYzk2MS4uMTk1ODdlN2JmNWNlOGRhZTRmMDY1YTY5OWNiNzgxODMxMzAwMGM4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTA2
LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUFNPTjogaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNl
ZC1vbi10b3AtZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWwgQVNTRVJUUyB3aXRoIHByb2Nl
c3Mgc3dhcCBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODY1NDUKKworICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCisKKyAg
ICAgICAgVXBkYXRlIGNsaWVudCBkZWxlZ2F0ZSBub3cgdGhhdCBwYXJhbWV0ZXIgdHlwZSBoYXMg
Y2hhbmdlZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lmg6CisKIDIwMTgtMDYtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvcnMtcG9zdC1yZWRpcmVjdC0z
MDcuaHRtbCBmYWlscyB3aXRoIFBTT04gZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKaW5kZXggZmIwN2VlNTNiZDVhNGE0MGRjNjQ4YWI1MzM5Y2EwY2M1NGUx
MjY5ZS4uNDdhMzY5ZTEwY2NjMWE3NjQ1NzdiMDE2MmExYWM3YjYxMWIwMWI1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC01OTEsOCArNTkxLDYgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1Jl
cXVlc3QsIGNvbnN0IFJlc291cmMKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsK
ICAgICBBU1NFUlQodG9wRnJhbWUuZG9jdW1lbnQoKSk7Ci0KLSAgICBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2hhcmVkKCkubG9nRnJhbWVOYXZpZ2F0aW9uKCptX2ZyYW1lLCB0b3BGcmFtZSwgbmV3
UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZS51cmwoKSk7CiAgICAgCiAgICAgLy8gVXBkYXRlIGNv
b2tpZSBwb2xpY3kgYmFzZSBVUkwgYXMgVVJMIGNoYW5nZXMsIGV4Y2VwdCBmb3Igc3ViZnJhbWVz
LCB3aGljaCB1c2UgdGhlCiAgICAgLy8gVVJMIG9mIHRoZSBtYWluIGZyYW1lIHdoaWNoIGRvZXNu
J3QgY2hhbmdlIHdoZW4gd2UgcmVkaXJlY3QuCkBAIC02NTcsNyArNjU1LDcgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3Qs
IGNvbnN0IFJlc291cmMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGZyYW1lTG9hZGVy
KCktPnBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koV1RGTW92ZShuZXdSZXF1
ZXN0KSwgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIFdURk1vdmUobmF2aWdhdGlvblBvbGlj
eUNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgZnJhbWVMb2FkZXIoKS0+cG9saWN5Q2hlY2tlcigp
LmNoZWNrTmF2aWdhdGlvblBvbGljeShXVEZNb3ZlKG5ld1JlcXVlc3QpLCByZWRpcmVjdFJlc3Bv
bnNlLCBXVEZNb3ZlKG5hdmlnYXRpb25Qb2xpY3lDb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiBi
b29sIERvY3VtZW50TG9hZGVyOjp0cnlMb2FkaW5nUmVxdWVzdEZyb21BcHBsaWNhdGlvbkNhY2hl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggNjA1M2I4NzhiMmYw
NDU0MDAzZGYxNDcwMWVhOGNiYTRkMDM5ZGFjNy4uYzMzYmMwMzU4NTBhZDRhYzliNzgzYTZkMTE2
OWUwNGM3NjUxZDVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAg
LTQ0Niw3ICs0NDYsNyBAQCB2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYQogewogfQogCi12b2lkIEVt
cHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgYm9v
bCwgRm9ybVN0YXRlKiwgUG9saWN5RGVjaXNpb25Nb2RlLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYp
Cit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIEZvcm1TdGF0ZSosIFBvbGljeURlY2lzaW9u
TW9kZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAzNGE1MDhhYjU4YzZkNjdhZGUy
MzU3Nzk2MDNkNDdkOWQ0MjNhOTI4Li5kY2ZhZjkwNzU5Y2NiY2RjMzRkZmI4Yzg0MjQxMjhjMDc2
MjE4Mjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50LmgKQEAgLTk1LDcgKzk1LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgRW1wdHlGcmFtZUxv
YWRlckNsaWVudCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CiAKICAgICB2b2lkIGRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWwgeyB9CiAgICAg
dm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3Ry
aW5nJiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKLSAgICB2b2lkIGRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgRm9y
bVN0YXRlKiwgUG9saWN5RGVjaXNpb25Nb2RlLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFs
OworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBGb3JtU3RhdGUqLCBQb2xpY3lEZWNpc2lvbk1v
ZGUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CiAgICAgdm9pZCBjYW5jZWxQb2xpY3lD
aGVjaygpIGZpbmFsIHsgfQogCiAgICAgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9s
aWN5KGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCmluZGV4IDA0ZDQzNmUyOTgyNWM2MjU3YTFmNDc2MTFlMzE0MDQxNDE5MzIw
YWQuLjlkNzI2YWI0OGY0MGQ4ZjhjZmYxOGRmMGUyYzI4OTZiMjUyNDlmYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTM4MCw3ICsxMzgwLDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6bG9hZFVSTChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2FkUmVxdWVzdCwgY29u
c3QgU3RyaW5nJiByZWYKICAgICAgICAgb2xkRG9jdW1lbnRMb2FkZXItPnNldExhc3RDaGVja2Vk
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAgICAgIHBvbGljeUNoZWNrZXIoKS5zdG9w
Q2hlY2soKTsKICAgICAgICAgcG9saWN5Q2hlY2tlcigpLnNldExvYWRUeXBlKG5ld0xvYWRUeXBl
KTsKLSAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShXVEZNb3Zl
KHJlcXVlc3QpLCBmYWxzZSAvKiBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSAqLywgb2xkRG9j
dW1lbnRMb2FkZXIuZ2V0KCksIFdURk1vdmUoZm9ybVN0YXRlKSwgW3RoaXMsIHByb3RlY3RlZEZy
YW1lID0gbWFrZVJlZihtX2ZyYW1lKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
V2Vha1B0cjxGb3JtU3RhdGU+JiYsIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7Cisg
ICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koV1RGTW92ZShyZXF1
ZXN0KSwgUmVzb3VyY2VSZXNwb25zZSB7IH0gLyogcmVkaXJlY3RSZXNwb25zZSAqLywgb2xkRG9j
dW1lbnRMb2FkZXIuZ2V0KCksIFdURk1vdmUoZm9ybVN0YXRlKSwgW3RoaXMsIHByb3RlY3RlZEZy
YW1lID0gbWFrZVJlZihtX2ZyYW1lKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
V2Vha1B0cjxGb3JtU3RhdGU+JiYsIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7CiAg
ICAgICAgICAgICBjb250aW51ZUZyYWdtZW50U2Nyb2xsQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHJl
cXVlc3QsIHNob3VsZENvbnRpbnVlID09IFNob3VsZENvbnRpbnVlOjpZZXMpOwogICAgICAgICB9
LCBQb2xpY3lEZWNpc2lvbk1vZGU6OlN5bmNocm9ub3VzKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MTU1NSw3ICsxNTU1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRl
cihEb2N1bWVudExvYWRlciogbG9hZGVyLCBGcmFtZUxvYWRUeXBlIHQKICAgICAgICAgb2xkRG9j
dW1lbnRMb2FkZXItPnNldFRyaWdnZXJpbmdBY3Rpb24oYWN0aW9uKTsKICAgICAgICAgb2xkRG9j
dW1lbnRMb2FkZXItPnNldExhc3RDaGVja2VkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoKSk7CiAg
ICAgICAgIHBvbGljeUNoZWNrZXIoKS5zdG9wQ2hlY2soKTsKLSAgICAgICAgcG9saWN5Q2hlY2tl
cigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QobG9hZGVyLT5yZXF1ZXN0
KCkpLCBmYWxzZSAvKiBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSAqLywgb2xkRG9jdW1lbnRM
b2FkZXIuZ2V0KCksIFdURk1vdmUoZm9ybVN0YXRlKSwgW3RoaXMsIHByb3RlY3RlZEZyYW1lID0g
bWFrZVJlZihtX2ZyYW1lKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2Vha1B0
cjxGb3JtU3RhdGU+JiYsIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7CisgICAgICAg
IHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0KGxv
YWRlci0+cmVxdWVzdCgpKSwgUmVzb3VyY2VSZXNwb25zZSB7IH0gIC8qIHJlZGlyZWN0UmVzcG9u
c2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIFt0aGlz
LCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSldIChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmLCBTaG91bGRDb250aW51ZSBzaG91bGRD
b250aW51ZSkgewogICAgICAgICAgICAgY29udGludWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2aWdh
dGlvblBvbGljeShyZXF1ZXN0LCBzaG91bGRDb250aW51ZSA9PSBTaG91bGRDb250aW51ZTo6WWVz
KTsKICAgICAgICAgfSwgUG9saWN5RGVjaXNpb25Nb2RlOjpTeW5jaHJvbm91cyk7CiAgICAgICAg
IHJldHVybjsKQEAgLTE1ODksNyArMTU4OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRo
RG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgRnJhbWVMb2FkVHlwZSB0CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0
aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChsb2FkZXItPnJlcXVlc3QoKSksIGZhbHNlIC8qIGRp
ZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlICovLCBsb2FkZXIsIFdURk1vdmUoZm9ybVN0YXRlKSwg
W3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwgYWxsb3dOYXZpZ2F0aW9u
VG9JbnZhbGlkVVJMLCBjb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVy
LnJlbGVhc2UoKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2Vha1B0cjxGb3Jt
U3RhdGU+JiYgZm9ybVN0YXRlLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgeworICAg
IHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0KGxv
YWRlci0+cmVxdWVzdCgpKSwgUmVzb3VyY2VSZXNwb25zZSB7IH0gLyogcmVkaXJlY3RSZXNwb25z
ZSAqLywgbG9hZGVyLCBXVEZNb3ZlKGZvcm1TdGF0ZSksIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9
IG1ha2VSZWYobV9mcmFtZSksIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgY29tcGxldGlv
bkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCldIChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSwgU2hv
dWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIHsKICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJO
YXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0ZS5nZXQoKSwgc2hvdWxkQ29udGludWUs
IGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmlu
ZGV4IGM2ZjY3ZGUxMzc4MmE3MzIwYzUwNjMwNTk5Mzk4OWIwYWMyMjU0ZTcuLmY3MjI2MTg2NzY3
M2I2Yzk3MjhjOTVjMmExZTRlMjQyZWI3M2M5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCkBAIC0xOTEsNyArMTkxLDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9y
bVN0YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJv
b2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIEZvcm1TdGF0ZSosIFBvbGljeURlY2lzaW9u
TW9kZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9u
JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSwgRm9ybVN0YXRlKiwgUG9saWN5RGVjaXNpb25Nb2RlLCBGcmFtZVBvbGljeUZ1
bmN0aW9uJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSA9IDA7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25z
dCBSZXNvdXJjZUVycm9yJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1BvbGljeUNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIu
Y3BwCmluZGV4IDVmOTc1MWNiNmUzZTkwNDQwYzA5MGVkOGY2Mjc4ZTBjMDU5OTU0ZjguLjRlMGVl
ZGM1MTJjZjQwNGIzOTRkMjNmYTQwODVlMThkYTJhZTYzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUG9saWN5Q2hlY2tlci5jcHAKQEAgLTc5LDkgKzc5LDkgQEAgUG9saWN5Q2hlY2tlcjo6UG9s
aWN5Q2hlY2tlcihGcmFtZSYgZnJhbWUpCiB7CiB9CiAKLXZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hl
Y2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGJvb2wgZGlk
UmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9u
JiYgZnVuY3Rpb24pCit2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShS
ZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiYmIGZ1bmN0aW9u
KQogewotICAgIGNoZWNrTmF2aWdhdGlvblBvbGljeShXVEZNb3ZlKG5ld1JlcXVlc3QpLCBkaWRS
ZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgbV9mcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExv
YWRlcigpLCB7IH0sIFdURk1vdmUoZnVuY3Rpb24pKTsKKyAgICBjaGVja05hdmlnYXRpb25Qb2xp
Y3koV1RGTW92ZShuZXdSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgbV9mcmFtZS5sb2FkZXIo
KS5hY3RpdmVEb2N1bWVudExvYWRlcigpLCB7IH0sIFdURk1vdmUoZnVuY3Rpb24pKTsKIH0KIAog
Q29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgUG9saWN5Q2hlY2tlcjo6ZXh0ZW5kQmxvYlVS
TExpZmV0aW1lSWZOZWNlc3NhcnkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdApAQCAt
OTgsNyArOTgsNyBAQCBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBQb2xpY3lDaGVja2Vy
OjpleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShSZQogICAgIH0pOwogfQogCi12b2lk
IFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlLCBEb2N1bWVudExvYWRlciog
bG9hZGVyLCBSZWZQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSwgTmF2aWdhdGlvblBvbGljeURl
Y2lzaW9uRnVuY3Rpb24mJiBmdW5jdGlvbiwgUG9saWN5RGVjaXNpb25Nb2RlIHBvbGljeURlY2lz
aW9uTW9kZSkKK3ZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVz
cG9uc2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlZlB0cjxGb3JtU3RhdGU+JiYgZm9ybVN0
YXRlLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiYmIGZ1bmN0aW9uLCBQb2xpY3lE
ZWNpc2lvbk1vZGUgcG9saWN5RGVjaXNpb25Nb2RlKQogewogICAgIE5hdmlnYXRpb25BY3Rpb24g
YWN0aW9uID0gbG9hZGVyLT50cmlnZ2VyaW5nQWN0aW9uKCk7CiAgICAgaWYgKGFjdGlvbi5pc0Vt
cHR5KCkpIHsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2
aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBib29sIGRpZFJlYwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFpc0FsbG93ZWRCeUNvbnRlbnRTZWN1cml0
eVBvbGljeShyZXF1ZXN0LnVybCgpLCBtX2ZyYW1lLm93bmVyRWxlbWVudCgpLCBkaWRSZWNlaXZl
UmVkaXJlY3RSZXNwb25zZSkpIHsKKyAgICBpZiAoIWlzQWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5
UG9saWN5KHJlcXVlc3QudXJsKCksIG1fZnJhbWUub3duZXJFbGVtZW50KCksICFyZWRpcmVjdFJl
c3BvbnNlLmlzTnVsbCgpKSkgewogICAgICAgICBpZiAobV9mcmFtZS5vd25lckVsZW1lbnQoKSkg
ewogICAgICAgICAgICAgLy8gRmlyZSBhIGxvYWQgZXZlbnQgKGV2ZW4gdGhvdWdoIHdlIHdlcmUg
YmxvY2tlZCBieSBDU1ApIGFzIHRpbWluZyBhdHRhY2tzIHdvdWxkIG90aGVyd2lzZQogICAgICAg
ICAgICAgLy8gcmV2ZWFsIHRoYXQgdGhlIGZyYW1lIHdhcyBibG9ja2VkLiBUaGlzIHdheSwgaXQg
bG9va3MgbGlrZSBhbnkgb3RoZXIgY3Jvc3Mtb3JpZ2luIHBhZ2UgbG9hZC4KQEAgLTE2OCw3ICsx
NjgsNyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBib29sIGRpZFJlYwogCiAgICAgbV9kZWxlZ2F0ZUlzRGVjaWRp
bmdOYXZpZ2F0aW9uUG9saWN5ID0gdHJ1ZTsKICAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUg
PSBhY3Rpb24uZG93bmxvYWRBdHRyaWJ1dGUoKS5pc0VtcHR5KCkgPyBudWxsQXRvbSgpIDogYWN0
aW9uLmRvd25sb2FkQXR0cmlidXRlKCk7Ci0gICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5k
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oYWN0aW9uLCByZXF1ZXN0LCBk
aWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgZm9ybVN0YXRlLmdldCgpLCBwb2xpY3lEZWNpc2lv
bk1vZGUsIFt0aGlzLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCByZXF1ZXN0ID0gUmVz
b3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBmb3JtU3RhdGUgPSBXVEZNb3ZlKGZvcm1TdGF0ZSksIHN1
Z2dlc3RlZEZpbGVuYW1lID0gV1RGTW92ZShzdWdnZXN0ZWRGaWxlbmFtZSksIGJsb2JVUkxMaWZl
dGltZUV4dGVuc2lvbiA9IFdURk1vdmUoYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uKV0oUG9saWN5
QWN0aW9uIHBvbGljeUFjdGlvbikgbXV0YWJsZSB7CisgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGll
bnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oYWN0aW9uLCByZXF1
ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCBmb3JtU3RhdGUuZ2V0KCksIHBvbGljeURlY2lzaW9uTW9k
ZSwgW3RoaXMsIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbiksIHJlcXVlc3QgPSBSZXNvdXJj
ZVJlcXVlc3QocmVxdWVzdCksIGZvcm1TdGF0ZSA9IFdURk1vdmUoZm9ybVN0YXRlKSwgc3VnZ2Vz
dGVkRmlsZW5hbWUgPSBXVEZNb3ZlKHN1Z2dlc3RlZEZpbGVuYW1lKSwgYmxvYlVSTExpZmV0aW1l
RXh0ZW5zaW9uID0gV1RGTW92ZShibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24pXShQb2xpY3lBY3Rp
b24gcG9saWN5QWN0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgbV9kZWxlZ2F0ZUlzRGVjaWRpbmdO
YXZpZ2F0aW9uUG9saWN5ID0gZmFsc2U7CiAKICAgICAgICAgc3dpdGNoIChwb2xpY3lBY3Rpb24p
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5oCmluZGV4IDlmMDQ4OTczODE5MTkz
NWMzM2Q5YzcyY2IwNTUxOGEzNzA4ZmE4YWEuLjIwNzFmZmFiMTc0NmYwNWJmNDIwYzA1YTE0ZmVm
ZTA0NTUzOGJmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVj
a2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaApAQCAtNjks
OCArNjksOCBAQCBjbGFzcyBQb2xpY3lDaGVja2VyIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQ
b2xpY3lDaGVja2VyKEZyYW1lJik7CiAKLSAgICB2b2lkIGNoZWNrTmF2aWdhdGlvblBvbGljeShS
ZXNvdXJjZVJlcXVlc3QmJiwgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgRG9jdW1l
bnRMb2FkZXIqLCBSZWZQdHI8Rm9ybVN0YXRlPiYmLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25G
dW5jdGlvbiYmLCBQb2xpY3lEZWNpc2lvbk1vZGUgPSBQb2xpY3lEZWNpc2lvbk1vZGU6OkFzeW5j
aHJvbm91cyk7Ci0gICAgdm9pZCBjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0
JiYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbkZ1bmN0aW9uJiYpOworICAgIHZvaWQgY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNl
UmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBEb2N1
bWVudExvYWRlciosIFJlZlB0cjxGb3JtU3RhdGU+JiYsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bkZ1bmN0aW9uJiYsIFBvbGljeURlY2lzaW9uTW9kZSA9IFBvbGljeURlY2lzaW9uTW9kZTo6QXN5
bmNocm9ub3VzKTsKKyAgICB2b2lkIGNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgTmF2aWdhdGlv
blBvbGljeURlY2lzaW9uRnVuY3Rpb24mJik7CiAgICAgdm9pZCBjaGVja05ld1dpbmRvd1BvbGlj
eShOYXZpZ2F0aW9uQWN0aW9uJiYsIFJlc291cmNlUmVxdWVzdCYmLCBSZWZQdHI8Rm9ybVN0YXRl
PiYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgTmV3V2luZG93UG9saWN5RGVjaXNpb25GdW5j
dGlvbiYmKTsKIAogICAgIHZvaWQgc3RvcENoZWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAppbmRleCBmNWY1ZWY4YmY2YmIzODU3YWVhODhj
OWI4NDJhOTY3MjI4NWI1YTNiLi44Yjk4MzZlMWNlMTI3MTRiZWQyYjZjMmNhZTI2ZjFmYTc4Yzlh
ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5j
cHAKQEAgLTQ3LDcgKzQ3LDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSBT
dHJpbmcgcHJpbWFyeURvbWFpbihjb25zdCBUJiB2YWx1ZSkKICAgICByZXR1cm4gUmVzb3VyY2VM
b2FkU3RhdGlzdGljczo6cHJpbWFyeURvbWFpbih2YWx1ZSk7CiB9CiAKLXN0YXRpYyBTZWNvbmRz
IHRpbWVzdGFtcFJlc29sdXRpb24geyA1X3MgfTsKIHN0YXRpYyBjb25zdCBTZWNvbmRzIG1pbmlt
dW1Ob3RpZmljYXRpb25JbnRlcnZhbCB7IDVfcyB9OwogCiBSZXNvdXJjZUxvYWRPYnNlcnZlciYg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpCkBAIC02OSwzNiArNjgsOSBAQCBzdGF0aWMg
Ym9vbCBzaG91bGRFbmFibGVTaXRlU3BlY2lmaWNRdWlya3MoUGFnZSogcGFnZSkKICNlbmRpZgog
fQogCi0vLyBGSVhNRTogVGVtcG9yYXJ5IGZpeCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzMyMzQzMjU2
PiB1bnRpbCBjb250ZW50IGNhbiBiZSB1cGRhdGVkLgogc3RhdGljIGJvb2wgYXJlRG9tYWluc0Fz
c29jaWF0ZWQoUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBmaXJzdERvbWFpbiwgY29uc3QgU3Ry
aW5nJiBzZWNvbmREb21haW4pCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8
U3RyaW5nLCB1bnNpZ25lZD4+IG1ldGFEb21haW5JZGVudGlmaWVycyA9IFtdIHsKLSAgICAgICAg
SGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBtYXA7Ci0KLSAgICAgICAgLy8gRG9tYWlucyBvd25l
ZCBieSBEb3cgSm9uZXMgJiBDb21wYW55LCBJbmMuCi0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGRv
d0pvbmVzSWRlbnRpZmllciA9IDE7Ci0gICAgICAgIG1hcC5hZGQoQVNDSUlMaXRlcmFsKCJkb3dq
b25lcy5jb20iKSwgZG93Sm9uZXNJZGVudGlmaWVyKTsKLSAgICAgICAgbWFwLmFkZChBU0NJSUxp
dGVyYWwoIndzai5jb20iKSwgZG93Sm9uZXNJZGVudGlmaWVyKTsKLSAgICAgICAgbWFwLmFkZChB
U0NJSUxpdGVyYWwoImJhcnJvbnMuY29tIiksIGRvd0pvbmVzSWRlbnRpZmllcik7Ci0gICAgICAg
IG1hcC5hZGQoQVNDSUlMaXRlcmFsKCJtYXJrZXR3YXRjaC5jb20iKSwgZG93Sm9uZXNJZGVudGlm
aWVyKTsKLSAgICAgICAgbWFwLmFkZChBU0NJSUxpdGVyYWwoIndzanBsdXMuY29tIiksIGRvd0pv
bmVzSWRlbnRpZmllcik7Ci0KLSAgICAgICAgcmV0dXJuIG1hcDsKLSAgICB9KCk7Ci0KLSAgICBp
ZiAoZmlyc3REb21haW4gPT0gc2Vjb25kRG9tYWluKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
ICAgIEFTU0VSVCghZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShmaXJzdERvbWFpbiwgc2Vjb25kRG9t
YWluKSk7Ci0KLSAgICBpZiAoIXNob3VsZEVuYWJsZVNpdGVTcGVjaWZpY1F1aXJrcyhwYWdlKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgdW5zaWduZWQgZmlyc3RNZXRhRG9tYWluSWRl
bnRpZmllciA9IG1ldGFEb21haW5JZGVudGlmaWVycy5nZXQoKS5nZXQoZmlyc3REb21haW4pOwot
ICAgIGlmICghZmlyc3RNZXRhRG9tYWluSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgcmV0dXJuIGZpcnN0TWV0YURvbWFpbklkZW50aWZpZXIgPT0gbWV0YURvbWFpbklk
ZW50aWZpZXJzLmdldCgpLmdldChzZWNvbmREb21haW4pOworICAgIHJldHVybiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzOjphcmVEb21haW5zQXNzb2NpYXRlZChzaG91bGRFbmFibGVTaXRlU3BlY2lm
aWNRdWlya3MocGFnZSksIGZpcnN0RG9tYWluLCBzZWNvbmREb21haW4pOwogfQogCiB2b2lkIFJl
c291cmNlTG9hZE9ic2VydmVyOjpzZXROb3RpZmljYXRpb25DYWxsYmFjayhXVEY6OkZ1bmN0aW9u
PHZvaWQgKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKT4mJiBub3RpZmljYXRpb25D
YWxsYmFjaykKQEAgLTEzMiw3NSArMTA0LDYgQEAgYm9vbCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
c2hvdWxkTG9nKFBhZ2UqIHBhZ2UpIGNvbnN0CiAgICAgcmV0dXJuIERlcHJlY2F0ZWRHbG9iYWxT
ZXR0aW5nczo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSAmJiAhcGFnZS0+dXNlc0Vw
aGVtZXJhbFNlc3Npb24oKSAmJiBtX25vdGlmaWNhdGlvbkNhbGxiYWNrOwogfQogCi1zdGF0aWMg
V2FsbFRpbWUgcmVkdWNlVGltZVJlc29sdXRpb24oV2FsbFRpbWUgdGltZSkKLXsKLSAgICByZXR1
cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0ZDo6Zmxvb3IodGltZS5zZWNvbmRzU2luY2VF
cG9jaCgpIC8gdGltZXN0YW1wUmVzb2x1dGlvbikgKiB0aW1lc3RhbXBSZXNvbHV0aW9uLnNlY29u
ZHMoKSk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0ZyYW1lTmF2aWdhdGlv
bihjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IEZyYW1lJiB0b3BGcmFtZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBVUkwmIHJlZGlyZWN0VXJsKQotewotICAgIEFT
U0VSVChmcmFtZS5kb2N1bWVudCgpKTsKLSAgICBBU1NFUlQodG9wRnJhbWUuZG9jdW1lbnQoKSk7
Ci0gICAgQVNTRVJUKHRvcEZyYW1lLnBhZ2UoKSk7Ci0KLSAgICBhdXRvKiBwYWdlID0gdG9wRnJh
bWUucGFnZSgpOwotICAgIGlmICghc2hvdWxkTG9nKHBhZ2UpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBhdXRvIHNvdXJjZVVSTCA9IHJlZGlyZWN0VXJsOwotICAgIGJvb2wgaXNSZWRpcmVjdCA9
ICFyZWRpcmVjdFVybC5pc051bGwoKTsKLSAgICBpZiAoIWlzUmVkaXJlY3QpCi0gICAgICAgIHNv
dXJjZVVSTCA9IG5vbk51bGxPd25lclVSTCgqZnJhbWUuZG9jdW1lbnQoKSk7Ci0KLSAgICBhdXRv
JiB0YXJnZXRVUkwgPSBuZXdSZXF1ZXN0LnVybCgpOwotICAgIGF1dG8mIG1haW5GcmFtZVVSTCA9
IHRvcEZyYW1lLmRvY3VtZW50KCktPnVybCgpOwotICAgIAotICAgIGlmICghdGFyZ2V0VVJMLmlz
VmFsaWQoKSB8fCAhbWFpbkZyYW1lVVJMLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgYXV0byB0YXJnZXRIb3N0ID0gdGFyZ2V0VVJMLmhvc3QoKTsKLSAgICBhdXRvIG1haW5GcmFt
ZUhvc3QgPSBtYWluRnJhbWVVUkwuaG9zdCgpOwotCi0gICAgaWYgKHRhcmdldEhvc3QuaXNFbXB0
eSgpIHx8IG1haW5GcmFtZUhvc3QuaXNFbXB0eSgpIHx8IHRhcmdldEhvc3QgPT0gc291cmNlVVJM
Lmhvc3QoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byB0YXJnZXRQcmltYXJ5RG9tYWlu
ID0gcHJpbWFyeURvbWFpbih0YXJnZXRVUkwpOwotICAgIGF1dG8gbWFpbkZyYW1lUHJpbWFyeURv
bWFpbiA9IHByaW1hcnlEb21haW4obWFpbkZyYW1lVVJMKTsKLSAgICBhdXRvIHNvdXJjZVByaW1h
cnlEb21haW4gPSBwcmltYXJ5RG9tYWluKHNvdXJjZVVSTCk7Ci0gICAgYm9vbCBzaG91bGRDYWxs
Tm90aWZpY2F0aW9uQ2FsbGJhY2sgPSBmYWxzZTsKLQotICAgIGlmICh0YXJnZXRIb3N0ICE9IG1h
aW5GcmFtZUhvc3QKLSAgICAgICAgJiYgIShhcmVEb21haW5zQXNzb2NpYXRlZChwYWdlLCB0YXJn
ZXRQcmltYXJ5RG9tYWluLCBtYWluRnJhbWVQcmltYXJ5RG9tYWluKSB8fCBhcmVEb21haW5zQXNz
b2NpYXRlZChwYWdlLCB0YXJnZXRQcmltYXJ5RG9tYWluLCBzb3VyY2VQcmltYXJ5RG9tYWluKSkp
IHsKLSAgICAgICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlz
dGljc0ZvclByaW1hcnlEb21haW4odGFyZ2V0UHJpbWFyeURvbWFpbik7Ci0gICAgICAgIHRhcmdl
dFN0YXRpc3RpY3MubGFzdFNlZW4gPSByZWR1Y2VUaW1lUmVzb2x1dGlvbihXYWxsVGltZTo6bm93
KCkpOwotICAgICAgICBpZiAodGFyZ2V0U3RhdGlzdGljcy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVP
cmlnaW5zLmFkZChtYWluRnJhbWVQcmltYXJ5RG9tYWluKS5pc05ld0VudHJ5KQotICAgICAgICAg
ICAgc2hvdWxkQ2FsbE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBp
ZiAoaXNSZWRpcmVjdAotICAgICAgICAmJiAhYXJlRG9tYWluc0Fzc29jaWF0ZWQocGFnZSwgc291
cmNlUHJpbWFyeURvbWFpbiwgdGFyZ2V0UHJpbWFyeURvbWFpbikpIHsKLSAgICAgICAgYm9vbCBp
c05ld1JlZGlyZWN0VG9FbnRyeSA9IGZhbHNlOwotICAgICAgICBib29sIGlzTmV3UmVkaXJlY3RG
cm9tRW50cnkgPSBmYWxzZTsKLSAgICAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKLSAg
ICAgICAgICAgIGF1dG8mIHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcyA9IGVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oc291cmNlUHJpbWFyeURvbWFpbik7Ci0gICAg
ICAgICAgICBpc05ld1JlZGlyZWN0VG9FbnRyeSA9IHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGlj
cy50b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvLmFkZCh0YXJnZXRQcmltYXJ5RG9tYWluKS5pc05l
d0VudHJ5OwotICAgICAgICAgICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4odGFyZ2V0UHJpbWFyeURvbWFpbik7Ci0gICAg
ICAgICAgICBpc05ld1JlZGlyZWN0RnJvbUVudHJ5ID0gdGFyZ2V0U3RhdGlzdGljcy50b3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0c0Zyb20uYWRkKHNvdXJjZVByaW1hcnlEb21haW4pLmlzTmV3RW50cnk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRvJiByZWRpcmVjdGluZ09yaWdpblN0
YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHNvdXJj
ZVByaW1hcnlEb21haW4pOwotICAgICAgICAgICAgaXNOZXdSZWRpcmVjdFRvRW50cnkgPSByZWRp
cmVjdGluZ09yaWdpblN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5hZGQo
dGFyZ2V0UHJpbWFyeURvbWFpbikuaXNOZXdFbnRyeTsKLSAgICAgICAgICAgIGF1dG8mIHRhcmdl
dFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHRh
cmdldFByaW1hcnlEb21haW4pOwotICAgICAgICAgICAgaXNOZXdSZWRpcmVjdEZyb21FbnRyeSA9
IHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tLmFkZChzb3Vy
Y2VQcmltYXJ5RG9tYWluKS5pc05ld0VudHJ5OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlz
TmV3UmVkaXJlY3RUb0VudHJ5IHx8IGlzTmV3UmVkaXJlY3RGcm9tRW50cnkpCi0gICAgICAgICAg
ICBzaG91bGRDYWxsTm90aWZpY2F0aW9uQ2FsbGJhY2sgPSB0cnVlOwotICAgIH0KLQotICAgIGlm
IChzaG91bGRDYWxsTm90aWZpY2F0aW9uQ2FsbGJhY2spCi0gICAgICAgIHNjaGVkdWxlTm90aWZp
Y2F0aW9uSWZOZWVkZWQoKTsKLX0KLQogLy8gRklYTUU6IFRoaXMgcXVpcmsgd2FzIGFkZGVkIHRv
IGFkZHJlc3MgPHJkYXI6Ly9wcm9ibGVtLzMzMzI1ODgxPiBhbmQgc2hvdWxkIGJlIHJlbW92ZWQg
b25jZSBjb250ZW50IGlzIGZpeGVkLgogc3RhdGljIGJvb2wgcmVzb3VyY2VOZWVkc1NTT1F1aXJr
KFBhZ2UqIHBhZ2UsIGNvbnN0IFVSTCYgdXJsKQogewpAQCAtMjQyLDcgKzE0NSw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZyhjb25zdCBGcmFtZSog
ZnJhbWUsIGNvbnN0IFJlc291CiAgICAgYm9vbCBzaG91bGRDYWxsTm90aWZpY2F0aW9uQ2FsbGJh
Y2sgPSBmYWxzZTsKICAgICB7CiAgICAgICAgIGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1
cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHRhcmdldFByaW1hcnlEb21haW4p
OwotICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLmxhc3RTZWVuID0gcmVkdWNlVGltZVJlc29sdXRp
b24oV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAgdGFyZ2V0U3RhdGlzdGljcy5sYXN0U2VlbiA9
IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnJlZHVjZVRpbWVSZXNvbHV0aW9uKFdhbGxUaW1lOjpu
b3coKSk7CiAgICAgICAgIGlmICh0YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZU9yaWdpbnMuYWRkKG1haW5GcmFtZVByaW1hcnlEb21haW4pLmlzTmV3RW50cnkpCiAgICAg
ICAgICAgICBzaG91bGRDYWxsTm90aWZpY2F0aW9uQ2FsbGJhY2sgPSB0cnVlOwogICAgIH0KQEAg
LTI4Nyw3ICsxOTAsNyBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dXZWJTb2NrZXRM
b2FkaW5nKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB0YQogICAgICAgICByZXR1cm47
CiAKICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNz
Rm9yUHJpbWFyeURvbWFpbih0YXJnZXRQcmltYXJ5RG9tYWluKTsKLSAgICB0YXJnZXRTdGF0aXN0
aWNzLmxhc3RTZWVuID0gcmVkdWNlVGltZVJlc29sdXRpb24oV2FsbFRpbWU6Om5vdygpKTsKKyAg
ICB0YXJnZXRTdGF0aXN0aWNzLmxhc3RTZWVuID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6cmVk
dWNlVGltZVJlc29sdXRpb24oV2FsbFRpbWU6Om5vdygpKTsKICAgICBpZiAodGFyZ2V0U3RhdGlz
dGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zLmFkZChtYWluRnJhbWVQcmltYXJ5
RG9tYWluKS5pc05ld0VudHJ5KQogICAgICAgICBzY2hlZHVsZU5vdGlmaWNhdGlvbklmTmVlZGVk
KCk7CiB9CkBAIC0zMDQsNyArMjA3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9n
VXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdCBEb2MKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgYXV0byBkb21haW4gPSBwcmltYXJ5RG9tYWluKHVybCk7Ci0gICAg
YXV0byBuZXdUaW1lID0gcmVkdWNlVGltZVJlc29sdXRpb24oV2FsbFRpbWU6Om5vdygpKTsKKyAg
ICBhdXRvIG5ld1RpbWUgPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpyZWR1Y2VUaW1lUmVzb2x1
dGlvbihXYWxsVGltZTo6bm93KCkpOwogICAgIGF1dG8gbGFzdFJlcG9ydGVkVXNlckludGVyYWN0
aW9uID0gbV9sYXN0UmVwb3J0ZWRVc2VySW50ZXJhY3Rpb25NYXAuZ2V0KGRvbWFpbik7CiAgICAg
aWYgKG5ld1RpbWUgPT0gbGFzdFJlcG9ydGVkVXNlckludGVyYWN0aW9uKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4
IDE4ODBmNjcwYmRhZWMzNTRiNDU0NjQzMjNkZWUwMmFlNTI2ZDM1YWUuLjUyNTcwYTc5YWE4ZmZk
Y2JmYjliMDc5ZjM3NWYyODM1MjYxOTM0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRPYnNlcnZlci5oCkBAIC01Myw3ICs1Myw2IEBAIGNsYXNzIFJlc291cmNlTG9h
ZE9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVzb3VyY2VM
b2FkT2JzZXJ2ZXImIHNoYXJlZCgpOwogCi0gICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oY29u
c3QgRnJhbWUmLCBjb25zdCBGcmFtZSYgdG9wRnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
bmV3UmVxdWVzdCwgY29uc3QgVVJMJiByZWRpcmVjdFVybCk7CiAgICAgdm9pZCBsb2dTdWJyZXNv
dXJjZUxvYWRpbmcoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQg
bG9nV2ViU29ja2V0TG9hZGluZyhjb25zdCBGcmFtZSosIGNvbnN0IFVSTCYpOwogICAgIHZvaWQg
bG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdCBEb2N1bWVu
dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3Mu
Y3BwCmluZGV4IGFkYjEzNmVlODM5ZTk2ZWRkNGIyMTJjZGNiYTUyN2Y4ODc1N2I5OWYuLjQwNTk5
ZDcxZjc1NTFmNjY1ODUxMGVjYTVjY2Q3ZjI0NmVmNTJhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKQEAgLTI4LDExICsyOCwxNCBA
QAogCiAjaW5jbHVkZSAiS2V5ZWRDb2RpbmcuaCIKICNpbmNsdWRlICJQdWJsaWNTdWZmaXguaCIK
KyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorc3RhdGljIFNlY29uZHMgdGltZXN0YW1wUmVzb2x1dGlvbiB7IDVfcyB9Owor
CiB0eXBlZGVmIFdURjo6SGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkLCBTdHJpbmdIYXNoLCBIYXNo
VHJhaXRzPFN0cmluZz4sIEhhc2hUcmFpdHM8dW5zaWduZWQ+Pjo6S2V5VmFsdWVQYWlyVHlwZSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVmFsdWU7CiAKIHN0YXRpYyB2b2lkIGVuY29kZUhhc2hDb3Vu
dGVkU2V0KEtleWVkRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qg
SGFzaENvdW50ZWRTZXQ8U3RyaW5nPiYgaGFzaENvdW50ZWRTZXQpCkBAIC0zNTIsNCArMzU1LDQz
IEBAIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpwcmltYXJ5RG9tYWluKFN0cmluZ1Zp
ZXcgaG9zdCkKICAgICByZXR1cm4gaG9zdFN0cmluZzsKIH0KIAorLy8gRklYTUU6IFRlbXBvcmFy
eSBmaXggZm9yIDxyZGFyOi8vcHJvYmxlbS8zMjM0MzI1Nj4gdW50aWwgY29udGVudCBjYW4gYmUg
dXBkYXRlZC4KK2Jvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6YXJlRG9tYWluc0Fzc29jaWF0
ZWQoYm9vbCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcywgY29uc3QgU3RyaW5nJiBmaXJzdERvbWFp
biwgY29uc3QgU3RyaW5nJiBzZWNvbmREb21haW4pCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFN0cmluZywgdW5zaWdu
ZWQ+PiBtZXRhRG9tYWluSWRlbnRpZmllcnMgPSBbXSB7CisgICAgICAgIEhhc2hNYXA8U3RyaW5n
LCB1bnNpZ25lZD4gbWFwOworCisgICAgICAgIC8vIERvbWFpbnMgb3duZWQgYnkgRG93IEpvbmVz
ICYgQ29tcGFueSwgSW5jLgorICAgICAgICBjb25zdCB1bnNpZ25lZCBkb3dKb25lc0lkZW50aWZp
ZXIgPSAxOworICAgICAgICBtYXAuYWRkKEFTQ0lJTGl0ZXJhbCgiZG93am9uZXMuY29tIiksIGRv
d0pvbmVzSWRlbnRpZmllcik7CisgICAgICAgIG1hcC5hZGQoQVNDSUlMaXRlcmFsKCJ3c2ouY29t
IiksIGRvd0pvbmVzSWRlbnRpZmllcik7CisgICAgICAgIG1hcC5hZGQoQVNDSUlMaXRlcmFsKCJi
YXJyb25zLmNvbSIpLCBkb3dKb25lc0lkZW50aWZpZXIpOworICAgICAgICBtYXAuYWRkKEFTQ0lJ
TGl0ZXJhbCgibWFya2V0d2F0Y2guY29tIiksIGRvd0pvbmVzSWRlbnRpZmllcik7CisgICAgICAg
IG1hcC5hZGQoQVNDSUlMaXRlcmFsKCJ3c2pwbHVzLmNvbSIpLCBkb3dKb25lc0lkZW50aWZpZXIp
OworCisgICAgICAgIHJldHVybiBtYXA7CisgICAgfSgpOworCisgICAgaWYgKGZpcnN0RG9tYWlu
ID09IHNlY29uZERvbWFpbikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBBU1NFUlQoIWVx
dWFsSWdub3JpbmdBU0NJSUNhc2UoZmlyc3REb21haW4sIHNlY29uZERvbWFpbikpOworCisgICAg
aWYgKCFuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgdW5zaWduZWQgZmlyc3RNZXRhRG9tYWluSWRlbnRpZmllciA9IG1ldGFEb21haW5JZGVudGlm
aWVycy5nZXQoKS5nZXQoZmlyc3REb21haW4pOworICAgIGlmICghZmlyc3RNZXRhRG9tYWluSWRl
bnRpZmllcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGZpcnN0TWV0YURv
bWFpbklkZW50aWZpZXIgPT0gbWV0YURvbWFpbklkZW50aWZpZXJzLmdldCgpLmdldChzZWNvbmRE
b21haW4pOworfQorCitXYWxsVGltZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpyZWR1Y2VUaW1l
UmVzb2x1dGlvbihXYWxsVGltZSB0aW1lKQoreworICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJh
d1NlY29uZHMoc3RkOjpmbG9vcih0aW1lLnNlY29uZHNTaW5jZUVwb2NoKCkgLyB0aW1lc3RhbXBS
ZXNvbHV0aW9uKSAqIHRpbWVzdGFtcFJlc29sdXRpb24uc2Vjb25kcygpKTsKK30KKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgKaW5kZXggNTAw
ZDJkOGRkZGU5MmZkNWFjZGU5NDE3NjhlZDIxZjVhZTMzODg1My4uZjA0N2M3N2NkZGJmZjJjNjJk
MjYyYjk3ZGJkOGFkNmI1ZmM4MTRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljcy5oCkBAIC01Myw2ICs1Myw5IEBAIHN0cnVjdCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzIHsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHByaW1hcnlE
b21haW4oY29uc3QgVVJMJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBwcmlt
YXJ5RG9tYWluKFN0cmluZ1ZpZXcgaG9zdCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
Ym9vbCBhcmVEb21haW5zQXNzb2NpYXRlZChib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
V2FsbFRpbWUgcmVkdWNlVGltZVJlc29sdXRpb24oV2FsbFRpbWUpOworCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBlbmNvZGUoS2V5ZWRFbmNvZGVyJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBkZWNvZGUoS2V5ZWREZWNvZGVyJiwgdW5zaWduZWQgbW9kZWxWZXJzaW9uKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGMxZDM1ZmFjMDg1
NTc4N2E1NjY4Yjc5NGNmMTZmNWMyYWVhNjc0NS4uNDllNmQ2Yzk3MWE2YWI2ODRjY2JhMWY3ZTU2
OTJjM2UxNjE3ZjQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC0xMTUsNiArMTE1LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb3RlY3Rpb25TcGFjZS5oIgor
I2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgIldl
YlVSTFNjaGVtZUhhbmRsZXIuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKQEAgLTM5ODEsNyArMzk4Miw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmcmFtZURpZEJlY29tZUZyYW1lU2V0KHVpbnQ2NF90IGZy
YW1lSUQsIGJvb2wgdmFsdWUpCiAgICAgICAgIG1fZnJhbWVTZXRMYXJnZXN0RnJhbWUgPSB2YWx1
ZSA/IG1fbWFpbkZyYW1lIDogMDsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmln
YXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IEZyYW1lSW5mb0Rh
dGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEm
JiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgRnJhbWVJbmZvRGF0YSYgb3JpZ2luYXRpbmdG
cmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCB1aW50NjRfdCBsaXN0ZW5l
cklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gLSBPcmlnaW5hbCBVUkwg
JXMsIGN1cnJlbnQgdGFyZ2V0IFVSTCAlcyIsIG9yaWdpbmFsUmVxdWVzdC51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
CkBAIC00MDQwLDYgKzQwNDEsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cgogCiAgICAgV2Vi
RnJhbWVQcm94eSogb3JpZ2luYXRpbmdGcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUob3JpZ2lu
YXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQpOwogCisgICAgaWYgKGF1dG8qIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpCisgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS0+bG9nRnJhbWVOYXZp
Z2F0aW9uKCpmcmFtZSwgVVJMKFVSTCgpLCBtX3BhZ2VMb2FkU3RhdGUudXJsKCkpLCByZXF1ZXN0
LCByZWRpcmVjdFJlc3BvbnNlLnVybCgpKTsKKwogICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQp
IHsKICAgICAgICAgYXV0byBkZXN0aW5hdGlvbkZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpj
cmVhdGUoKmZyYW1lLCBmcmFtZVNlY3VyaXR5T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpOwogICAg
ICAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IHNvdXJjZUZyYW1lSW5mbzsKQEAgLTQwNjAsMTIg
KzQwNjQsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXIKICAgICBtX3Nob3VsZFN1cHByZXNz
QXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSBmYWxzZTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1
cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0Zy
YW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRh
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
U3luYzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNv
bnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3Jp
Z2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgQVNTRVJUKCFt
X3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkpOwogICAgIG1fc3luY05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3lSZXBseSA9IFdURk1vdmUocmVwbHkpOwogCi0gICAgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihmcmFtZUlELCBmcmFtZVNlY3VyaXR5T3JpZ2luLCBuYXZpZ2F0aW9u
SUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0Rh
dGEsIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCks
IGxpc3RlbmVySUQsIHVzZXJEYXRhKTsKKyAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKGZyYW1lSUQsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIG5hdmlnYXRpb25JRCwgV1RGTW92ZShu
YXZpZ2F0aW9uQWN0aW9uRGF0YSksIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRp
bmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWRp
cmVjdFJlc3BvbnNlKSwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOwogCiAgICAgLy8gSWYgdGhlIGNs
aWVudCBkaWQgbm90IHJlc3BvbmQgc3luY2hyb25vdXNseSwgcHJvY2VlZCB3aXRoIHRoZSBsb2Fk
LgogICAgIGlmIChhdXRvIHN5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkgPSBXVEZNb3Zl
KG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lSZXBseSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IDAzOTI1MGYxOTNkMjdiOGY3NjQ2ZmQwMWI0OGJmMDNiNmNm
YjU4YTkuLmIxMDUwYzk0MDk3MWE4ZmU4OTZkMWZlYTBjMGY0ZDU0ZTkzODE0OGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMzk5LDggKzEzOTksOCBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBkaWREZXN0cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9u
SUQpOwogCi0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0
eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBj
b25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2
b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBjb25zdCBGcmFt
ZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5
JiYpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgY29u
c3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCB1
aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1
aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgdWludDY0X3QgbGlzdGVuZXJJRCwg
Y29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29u
c3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHVuYWJsZVRvSW1wbGVtZW50UG9saWN5KHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CmluZGV4IDEwNTAwZWU0OWZkY2YwODMzYjAxMDIzMjE5MDg2OWIzNjI2YWE5MTUuLjdmM2M2Njgz
YzYxYTVmNjQ4ZGI4MjlmMWIxNTQ0MDgyMGUwNDBiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTk5LDggKzk5LDggQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgICMgUG9saWN5IG1lc3NhZ2VzCiAgICAgRGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJ
RCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3Qg
V2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0
IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90
IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgdWludDY0X3QgbGlzdGVuZXJJ
RCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3Ry
dWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0
cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50
NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFs
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHVpbnQ2NF90IGxpc3Rl
bmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+ICh1aW50NjRfdCBuZXdOYXZpZ2F0
aW9uSUQsIGVudW0gV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgV2ViS2l0OjpE
b3dubG9hZElEIGRvd25sb2FkSUQsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlUG9saWNp
ZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXMpIERlbGF5ZWQKKyAgICBEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1
Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3Ry
dWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2
NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6
OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25T
eW5jKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0
OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktp
dDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdp
bmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSByZWRpcmVjdFJlc3BvbnNlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRh
IHVzZXJEYXRhKSAtPiAodWludDY0X3QgbmV3TmF2aWdhdGlvbklELCBlbnVtIFdlYkNvcmU6OlBv
bGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBz
dGQ6Om9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVz
KSBEZWxheWVkCiAgICAgRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZy
YW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9y
aWdpbiwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlv
bkRhdGEsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgZnJhbWVOYW1l
LCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIFVu
YWJsZVRvSW1wbGVtZW50UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgZXJyb3IsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwCmluZGV4IDUzODJhNTU2MTBmNzMwYzRmODViZTg4YTY3YTJkNTU2ZGY3MGY1ODguLjA2ZWY5
ZmYwNGJkMWVmZjNjNDc0YTY1ZWQ2NjkxNTMzMGY0ZTJjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbHVn
aW5Qcm9jZXNzTWFuYWdlci5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NQcm94eS5oIgorI2lu
Y2x1ZGUgIldlYkZyYW1lUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIK
ICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oIgpAQCAt
NTIsMTIgKzU0LDE5IEBAIGNvbnN0ZXhwciB1bnNpZ25lZCBvcGVyYXRpbmdEYXRlc1dpbmRvdyB7
IDMwIH07CiBjb25zdGV4cHIgdW5zaWduZWQgc3RhdGlzdGljc01vZGVsVmVyc2lvbiB7IDEyIH07
CiBjb25zdGV4cHIgdW5zaWduZWQgbWF4SW1wb3J0YW5jZSB7IDMgfTsKIGNvbnN0ZXhwciB1bnNp
Z25lZCBtYXhOdW1iZXJPZlJlY3Vyc2l2ZUNhbGxzSW5SZWRpcmVjdFRyYWNlQmFjayB7IDUwIH07
Citjb25zdGV4cHIgU2Vjb25kcyBtaW5pbXVtU3RhdGlzdGljc1Byb2Nlc3NpbmdJbnRlcnZhbCB7
IDVfcyB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgaW5saW5lIFN0cmluZyBpc29s
YXRlZFByaW1hcnlEb21haW4oY29uc3QgVCYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIFJlc291cmNl
TG9hZFN0YXRpc3RpY3M6OnByaW1hcnlEb21haW4odmFsdWUpLmlzb2xhdGVkQ29weSgpOwogfQog
CitzdGF0aWMgYm9vbCBhcmVEb21haW5zQXNzb2NpYXRlZChXZWJQYWdlUHJveHkqIHBhZ2UsIGNv
bnN0IFN0cmluZyYgZmlyc3REb21haW4sIGNvbnN0IFN0cmluZyYgc2Vjb25kRG9tYWluKQorewor
ICAgIGJvb2wgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MgPSBwYWdlICYmIHBhZ2UtPnByZWZlcmVu
Y2VzKCkubmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKTsKKyAgICByZXR1cm4gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljczo6YXJlRG9tYWluc0Fzc29jaWF0ZWQobmVlZHNTaXRlU3BlY2lmaWNRdWlya3Ms
IGZpcnN0RG9tYWluLCBzZWNvbmREb21haW4pOworfQorCiBjb25zdCBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiYgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptb25pdG9yZWREYXRh
VHlwZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPj4gZGF0YVR5cGVzKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxXZWJzaXRlRGF0YVR5cGU+
KHsKQEAgLTMyOCw2ICszMzcsMTAgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3IKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIG1lcmdlU3RhdGlzdGljcyhXVEZNb3ZlKG9y
aWdpbnMpKTsKKworICAgIC8vIFdlIGNhbiBjYW5jZWwgYW55IHBlbmRpbmcgcmVxdWVzdCB0byBw
cm9jZXNzIHN0YXRpc3RpY3Mgc2luY2Ugd2UncmUgZG9pbmcgaXQgc3luY2hyb25vdXNseSBiZWxv
dy4KKyAgICBjYW5jZWxQZW5kaW5nU3RhdGlzdGljc1Byb2Nlc3NpbmdSZXF1ZXN0KCk7CisKICAg
ICAvLyBGaXJlIGJlZm9yZSBwcm9jZXNzaW5nIHN0YXRpc3RpY3MgdG8gcHJvcGFnYXRlIHVzZXIg
aW50ZXJhY3Rpb24gYXMgZmFzdCBhcyBwb3NzaWJsZSB0byB0aGUgbmV0d29yayBwcm9jZXNzLgog
ICAgIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZyhbXSgpIHsgfSk7CiAgICAgcHJvY2Vzc1N0YXRp
c3RpY3NBbmREYXRhUmVjb3JkcygpOwpAQCAtNTQ2LDYgKzU1OSw5MiBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZShib29sIGVuYQogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpzY2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdElmTmVjZXNzYXJ5KCkKK3sK
KyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIG1fcGVuZGluZ1N0YXRpc3Rp
Y3NQcm9jZXNzaW5nUmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFN0YXRpc3RpY3NQcm9jZXNz
aW5nUmVxdWVzdElkZW50aWZpZXI7CisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoQWZ0
ZXIobWluaW11bVN0YXRpc3RpY3NQcm9jZXNzaW5nSW50ZXJ2YWwsIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHN0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdElkZW50aWZp
ZXIgPSAqbV9wZW5kaW5nU3RhdGlzdGljc1Byb2Nlc3NpbmdSZXF1ZXN0SWRlbnRpZmllcl0gewor
ICAgICAgICBpZiAoIW1fcGVuZGluZ1N0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdElkZW50aWZp
ZXIgfHwgKm1fcGVuZGluZ1N0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdElkZW50aWZpZXIgIT0g
c3RhdGlzdGljc1Byb2Nlc3NpbmdSZXF1ZXN0SWRlbnRpZmllcikgeworICAgICAgICAgICAgLy8g
VGhpcyByZXF1ZXN0IGhhcyBiZWVuIGNhbmNlbGVkLgorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nKFtdKCkgeyB9KTsKKyAg
ICAgICAgcHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOworICAgIH0pOworfQorCit2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FuY2VsUGVuZGluZ1N0YXRpc3Rp
Y3NQcm9jZXNzaW5nUmVxdWVzdCgpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CisKKyAgICBtX3BlbmRpbmdTdGF0aXN0aWNzUHJvY2Vzc2luZ1JlcXVlc3RJZGVudGlmaWVyID0g
c3RkOjpudWxsb3B0OworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
bG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IFdlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25zdCBVUkwm
IHBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
V2ViQ29yZTo6VVJMJiByZWRpcmVjdFVSTCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOworCisgICAgYXV0byBzb3VyY2VVUkwgPSByZWRpcmVjdFVSTDsKKyAgICBib29sIGlzUmVk
aXJlY3QgPSAhcmVkaXJlY3RVUkwuaXNOdWxsKCk7CisgICAgaWYgKCFpc1JlZGlyZWN0KSB7Cisg
ICAgICAgIHNvdXJjZVVSTCA9IGZyYW1lLnVybCgpOworICAgICAgICBpZiAoc291cmNlVVJMLmlz
TnVsbCgpKQorICAgICAgICAgICAgc291cmNlVVJMID0gcGFnZVVSTDsKKyAgICB9CisKKyAgICBh
dXRvJiB0YXJnZXRVUkwgPSByZXF1ZXN0LnVybCgpOworCisgICAgaWYgKCF0YXJnZXRVUkwuaXNW
YWxpZCgpIHx8ICFwYWdlVVJMLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byB0YXJnZXRIb3N0ID0gdGFyZ2V0VVJMLmhvc3QoKTsKKyAgICBhdXRvIG1haW5GcmFtZUhvc3Qg
PSBwYWdlVVJMLmhvc3QoKTsKKworICAgIGlmICh0YXJnZXRIb3N0LmlzRW1wdHkoKSB8fCBtYWlu
RnJhbWVIb3N0LmlzRW1wdHkoKSB8fCB0YXJnZXRIb3N0ID09IHNvdXJjZVVSTC5ob3N0KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIHBhZ2UgPSBmcmFtZS5wYWdlKCk7CisgICAgYXV0
byB0YXJnZXRQcmltYXJ5RG9tYWluID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6cHJpbWFyeURv
bWFpbih0YXJnZXRVUkwpOworICAgIGF1dG8gbWFpbkZyYW1lUHJpbWFyeURvbWFpbiA9IFJlc291
cmNlTG9hZFN0YXRpc3RpY3M6OnByaW1hcnlEb21haW4ocGFnZVVSTCk7CisgICAgYXV0byBzb3Vy
Y2VQcmltYXJ5RG9tYWluID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6cHJpbWFyeURvbWFpbihz
b3VyY2VVUkwpOworCisgICAgYm9vbCBhcmVUYXJnZXRBbmRNYWluRnJhbWVEb21haW5zQXNzb2Np
YXRlZCA9IGFyZURvbWFpbnNBc3NvY2lhdGVkKHBhZ2UsIHRhcmdldFByaW1hcnlEb21haW4sIG1h
aW5GcmFtZVByaW1hcnlEb21haW4pOworICAgIGJvb2wgYXJlVGFyZ2V0QW5kU291cmNlRG9tYWlu
c0Fzc29jaWF0ZWQgPSBhcmVEb21haW5zQXNzb2NpYXRlZChwYWdlLCB0YXJnZXRQcmltYXJ5RG9t
YWluLCBzb3VyY2VQcmltYXJ5RG9tYWluKTsKKworICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0YXJnZXRQcmltYXJ5
RG9tYWluID0gdGFyZ2V0UHJpbWFyeURvbWFpbi5pc29sYXRlZENvcHkoKSwgbWFpbkZyYW1lUHJp
bWFyeURvbWFpbiA9IG1haW5GcmFtZVByaW1hcnlEb21haW4uaXNvbGF0ZWRDb3B5KCksIHNvdXJj
ZVByaW1hcnlEb21haW4gPSBzb3VyY2VQcmltYXJ5RG9tYWluLmlzb2xhdGVkQ29weSgpLCB0YXJn
ZXRIb3N0ID0gdGFyZ2V0SG9zdC50b1N0cmluZygpLmlzb2xhdGVkQ29weSgpLCBtYWluRnJhbWVI
b3N0ID0gbWFpbkZyYW1lSG9zdC50b1N0cmluZygpLmlzb2xhdGVkQ29weSgpLCBhcmVUYXJnZXRB
bmRNYWluRnJhbWVEb21haW5zQXNzb2NpYXRlZCwgYXJlVGFyZ2V0QW5kU291cmNlRG9tYWluc0Fz
c29jaWF0ZWQsIGlzUmVkaXJlY3QsIGlzTWFpbkZyYW1lID0gZnJhbWUuaXNNYWluRnJhbWUoKV0g
eworICAgICAgICBib29sIHN0YXRpc3RpY3NXZXJlVXBkYXRlZCA9IGZhbHNlOworICAgICAgICBp
ZiAodGFyZ2V0SG9zdCAhPSBtYWluRnJhbWVIb3N0ICYmICEoYXJlVGFyZ2V0QW5kTWFpbkZyYW1l
RG9tYWluc0Fzc29jaWF0ZWQgfHwgYXJlVGFyZ2V0QW5kU291cmNlRG9tYWluc0Fzc29jaWF0ZWQp
KSB7CisgICAgICAgICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VT
dGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbih0YXJnZXRQcmltYXJ5RG9tYWluKTsKKyAgICAgICAg
ICAgIHRhcmdldFN0YXRpc3RpY3MubGFzdFNlZW4gPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpy
ZWR1Y2VUaW1lUmVzb2x1dGlvbihXYWxsVGltZTo6bm93KCkpOworICAgICAgICAgICAgaWYgKHRh
cmdldFN0YXRpc3RpY3Muc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucy5hZGQobWFpbkZyYW1l
UHJpbWFyeURvbWFpbikuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAgICBzdGF0aXN0aWNzV2Vy
ZVVwZGF0ZWQgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGlzUmVkaXJlY3QgJiYg
IWFyZVRhcmdldEFuZFNvdXJjZURvbWFpbnNBc3NvY2lhdGVkKSB7CisgICAgICAgICAgICBpZiAo
aXNNYWluRnJhbWUpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiByZWRpcmVjdGluZ09yaWdpblN0
YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHNvdXJj
ZVByaW1hcnlEb21haW4pOworICAgICAgICAgICAgICAgIGlmIChyZWRpcmVjdGluZ09yaWdpblN0
YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUby5hZGQodGFyZ2V0UHJpbWFyeURvbWFp
bikuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljc1dlcmVVcGRhdGVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJl
UmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbih0YXJnZXRQcmltYXJ5RG9tYWluKTsK
KyAgICAgICAgICAgICAgICBpZiAodGFyZ2V0U3RhdGlzdGljcy50b3BGcmFtZVVuaXF1ZVJlZGly
ZWN0c0Zyb20uYWRkKHNvdXJjZVByaW1hcnlEb21haW4pLmlzTmV3RW50cnkpCisgICAgICAgICAg
ICAgICAgICAgIHN0YXRpc3RpY3NXZXJlVXBkYXRlZCA9IHRydWU7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGF1dG8mIHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcyA9
IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oc291cmNlUHJpbWFyeURv
bWFpbik7CisgICAgICAgICAgICAgICAgaWYgKHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcy5z
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLmFkZCh0YXJnZXRQcmltYXJ5RG9tYWluKS5pc05l
d0VudHJ5KQorICAgICAgICAgICAgICAgICAgICBzdGF0aXN0aWNzV2VyZVVwZGF0ZWQgPSB0cnVl
OworICAgICAgICAgICAgICAgIGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJj
ZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHRhcmdldFByaW1hcnlEb21haW4pOworICAgICAg
ICAgICAgICAgIGlmICh0YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
RnJvbS5hZGQoc291cmNlUHJpbWFyeURvbWFpbikuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAg
ICAgICAgc3RhdGlzdGljc1dlcmVVcGRhdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChzdGF0aXN0aWNzV2VyZVVwZGF0ZWQpCisgICAgICAgICAgICBz
Y2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdElmTmVjZXNzYXJ5KCk7CisgICAgfSk7
Cit9CisKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpsb2dVc2VySW50ZXJh
Y3Rpb24oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJs
LmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggNDY4ZDU5NDg2ODk5NjcxNjU3OWJjNzVm
ZDMyYTVhZWFlNzdmODUyMC4uMWZhODY0NjNlZTQ0N2MyMTExOTRlN2M1NjMyMmIzNjdhMzljMjhi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgV29ya1F1ZXVlOwog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgS2V5ZWREZWNvZGVyOwogY2xhc3MgS2V5ZWRFbmNv
ZGVyOworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgVVJMOwogc3RydWN0IFJlc291cmNl
TG9hZFN0YXRpc3RpY3M7CiB9CkBAIC01NSw2ICs1Niw3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE9wZXJhdGluZ0RhdGU7Citj
bGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiBlbnVtIGNsYXNz
IFNob3VsZENsZWFyRmlyc3Q7CkBAIC05OSw2ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBw
cm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIElQQzo6Q29ubmVjdGlv
biYpOwogICAgIHZvaWQgYXBwbGljYXRpb25XaWxsVGVybWluYXRlKCk7CiAKKyAgICB2b2lkIGxv
Z0ZyYW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJM
JiBwYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHJlZGlyZWN0VVJMKTsKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBX
ZWJDb3JlOjpVUkwmKTsKICAgICB2b2lkIGxvZ05vblJlY2VudFVzZXJJbnRlcmFjdGlvbihjb25z
dCBXZWJDb3JlOjpVUkwmKTsKICAgICB2b2lkIGNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFdl
YkNvcmU6OlVSTCYpOwpAQCAtMTg1LDYgKzE4OCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRQ
cmV2YWxlbnRSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgUmVzb3Vy
Y2VMb2FkUHJldmFsZW5jZSk7CiAgICAgdm9pZCBwcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNv
cmRzKCk7CiAKKyAgICB2b2lkIHNjaGVkdWxlU3RhdGlzdGljc1Byb2Nlc3NpbmdSZXF1ZXN0SWZO
ZWNlc3NhcnkoKTsKKyAgICB2b2lkIGNhbmNlbFBlbmRpbmdTdGF0aXN0aWNzUHJvY2Vzc2luZ1Jl
cXVlc3QoKTsKKwogICAgIHZvaWQgcmVzZXRDb29raWVQYXJ0aXRpb25pbmdTdGF0ZSgpOwogICAg
IFN0b3JhZ2VBY2Nlc3NTdGF0dXMgc3RvcmFnZUFjY2Vzc1N0YXR1cyhjb25zdCBTdHJpbmcmIHN1
YkZyYW1lUHJpbWFyeURvbWFpbiwgY29uc3QgU3RyaW5nJiB0b3BGcmFtZVByaW1hcnlEb21haW4p
OwogICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3RyaW5nJiYgc3ViRnJhbWVI
b3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB1c2VyV2FzUHJvbXB0ZWROb3dPckVhcmxpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpAQCAtMjQxLDggKzI0NywxMiBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9kZWJ1Z01vZGVFbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1f
ZGVidWdMb2dnaW5nRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3N0b3JhZ2VBY2Nlc3NQ
cm9tcHRzRW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1NjaGVkdWxlZFByb2Nlc3NT
dGF0cyB7IGZhbHNlIH07CiAKICAgICBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmKT4gbV9z
dGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOworCisgICAgdWludDY0X3QgbV9sYXN0U3RhdGlzdGlj
c1Byb2Nlc3NpbmdSZXF1ZXN0SWRlbnRpZmllciB7IDAgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBtX3BlbmRpbmdTdGF0aXN0aWNzUHJvY2Vzc2luZ1JlcXVlc3RJZGVudGlmaWVyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAppbmRleCAwMTlkOGJlNTkwYTVhNjJlZmU0ZWJlMGRkMzZlZjdlZGZjYmMyNmNiLi44NDMwZmI2
YWQwZGU0YzNkYjI1M2Y4YzExNjYwY2Q5MjVkMDdkMzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKQEAgLTgxMyw3ICs4MTMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjphcHBseVRvRG9jdW1lbnRMb2FkZXIoV2Vic2l0ZVBvbGljaWVzRGF0YSYmIHdlYnNpdGVQbwog
ICAgIFdlYnNpdGVQb2xpY2llc0RhdGE6OmFwcGx5VG9Eb2N1bWVudExvYWRlcihXVEZNb3ZlKHdl
YnNpdGVQb2xpY2llcyksICpkb2N1bWVudExvYWRlcik7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIEZvcm1TdGF0ZSogZm9y
bVN0YXRlLCBQb2xpY3lEZWNpc2lvbk1vZGUgcG9saWN5RGVjaXNpb25Nb2RlLCBGcmFtZVBvbGlj
eUZ1bmN0aW9uJiYgZnVuY3Rpb24pCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYg
bmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwg
UG9saWN5RGVjaXNpb25Nb2RlIHBvbGljeURlY2lzaW9uTW9kZSwgRnJhbWVQb2xpY3lGdW5jdGlv
biYmIGZ1bmN0aW9uKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lID8gbV9mcmFt
ZS0+cGFnZSgpIDogbnVsbHB0cjsKICAgICBpZiAoIXdlYlBhZ2UpIHsKQEAgLTg2NCw3ICs4NjQs
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdAogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmNh
bkhhbmRsZVJlcXVlc3QgPSB3ZWJQYWdlLT5jYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpOwogICAg
IG5hdmlnYXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBuYXZp
Z2F0aW9uQWN0aW9uLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKTsKICAgICBuYXZpZ2F0
aW9uQWN0aW9uRGF0YS5kb3dubG9hZEF0dHJpYnV0ZSA9IG5hdmlnYXRpb25BY3Rpb24uZG93bmxv
YWRBdHRyaWJ1dGUoKTsKLSAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5pc1JlZGlyZWN0ID0gZGlk
UmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2U7CisgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuaXNSZWRp
cmVjdCA9ICFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpOwogICAgIG5hdmlnYXRpb25BY3Rpb25E
YXRhLnRyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbiA9IG5hdmlnYXRpb25BY3Rpb24udHJlYXRB
c1NhbWVPcmlnaW5OYXZpZ2F0aW9uKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuaXNDcm9z
c09yaWdpbldpbmRvd09wZW5OYXZpZ2F0aW9uID0gbmF2aWdhdGlvbkFjdGlvbi5pc0Nyb3NzT3Jp
Z2luV2luZG93T3Blbk5hdmlnYXRpb24oKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5oYXNP
cGVuZWRGcmFtZXMgPSBuYXZpZ2F0aW9uQWN0aW9uLmhhc09wZW5lZEZyYW1lcygpOwpAQCAtODky
LDcgKzg5Miw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0CiAgICAgICAgIERvd25sb2FkSUQg
ZG93bmxvYWRJRDsKICAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiB3
ZWJzaXRlUG9saWNpZXM7CiAKLSAgICAgICAgaWYgKCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhtX2Zy
YW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSks
IGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9y
aWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rp
b24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0
KCkpLmdldCgpKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25TeW5jOjpSZXBseShuZXdOYXZpZ2F0aW9uSUQsIHBvbGljeUFjdGlvbiwgZG93
bmxvYWRJRCwgd2Vic2l0ZVBvbGljaWVzKSkpIHsKKyAgICAgICAgaWYgKCF3ZWJQYWdlLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uU3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1l
KGNvcmVGcmFtZSksIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5h
dmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9y
bU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSksIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpSZXBseShuZXdO
YXZpZ2F0aW9uSUQsIHBvbGljeUFjdGlvbiwgZG93bmxvYWRJRCwgd2Vic2l0ZVBvbGljaWVzKSkp
IHsKICAgICAgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5l
cklELCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0pOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CkBAIC05MDIsNyArOTAyLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmln
YXQKICAgICB9CiAKICAgICBBU1NFUlQocG9saWN5RGVjaXNpb25Nb2RlID09IFBvbGljeURlY2lz
aW9uTW9kZTo6QXN5bmNocm9ub3VzKTsKLSAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihtX2ZyYW1lLT5m
cmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksIGRvY3Vt
ZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0
aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVz
b3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdl
dCgpKSkpKQorICAgIGlmICghd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgZG9jdW1lbnRMb2FkZXItPm5hdmln
YXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRh
LCBvcmlnaW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwg
cmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSku
Z2V0KCkpKSkpCiAgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0
ZW5lcklELCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0pOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDFmOTI3MDFjM2JiZTMwZTEwZjM5YTZhMzQ3ODVhZDQ2
MTVmMGM5ZGUuLjYzY2JiMTJmY2IxNGQ4OTU0MGI2MWQ0YjQ1MjVmNmVkZWNjZWJkM2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAg
ICAKICAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdl
YkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0
aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Rm9ybVN0YXRl
KiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24m
JikgZmluYWw7Ci0gICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OkZv
cm1TdGF0ZSosIFdlYkNvcmU6OlBvbGljeURlY2lzaW9uTW9kZSwgV2ViQ29yZTo6RnJhbWVQb2xp
Y3lGdW5jdGlvbiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYg
cmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgV2ViQ29yZTo6UG9saWN5RGVj
aXNpb25Nb2RlLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwogICAgIHZv
aWQgY2FuY2VsUG9saWN5Q2hlY2soKSBmaW5hbDsKICAgICAKICAgICB2b2lkIGRpc3BhdGNoVW5h
YmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDY5Yjc2ODcxNTQ5
YWExZGY1YTEzNjA5YmNkOTI5M2Y3MTY0MDFjMzkuLjY0OTJiZWJiZmU4NmY1ZTQyZTFlNTNmNGIx
YWI2YjM1ODg3ZDE2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
QEAgLTIwMCw3ICsyMDAsNiBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICBtX3BsdWdJ
bkF1dG9TdGFydE9yaWdpbkhhc2hlcy5hZGQoUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSwgSGFzaE1hcDx1bnNpZ25lZCwgV2FsbFRpbWU+KCkpOwogCiAgICAgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnNoYXJlZCgpLnNldE5vdGlmaWNhdGlvbkNhbGxiYWNrKFt0aGlzXSAoVmVjdG9y
PFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYgc3RhdGlzdGljcykgewotICAgICAgICBBU1NFUlQo
IXN0YXRpc3RpY3MuaXNFbXB0eSgpKTsKICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChXVEZNb3ZlKHN0YXRpc3RpY3MpKSwgMCk7CiAgICAgfSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDBkNmFhZjg3YWYzMjBiODEyNmZkNDQw
ZjA0MTk4NmJlNWM4MjMzNGMuLjM4OGQxNGFiZjhhYTYyOTNjNDY4ODViZDA2NWIzYzQyMDE3NjQz
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9u
QWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Rm9ybVN0
YXRlKiwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lG
dW5jdGlvbiYmKSBmaW5hbDsKLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgV2Vi
Q29yZTo6Rm9ybVN0YXRlKiwgV2ViQ29yZTo6UG9saWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpG
cmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBXZWJDb3JlOjpGb3JtU3RhdGUqLCBXZWJDb3JlOjpQ
b2xpY3lEZWNpc2lvbk1vZGUsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7
CiAgICAgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpIGZpbmFsOwogCiAgICAgdm9pZCBkaXNwYXRj
aFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggZTU5YzE4OTkxYzdmNDQ1OWYy
MDljMjI0MDI0NTY2OWVmNzEyNDk3ZC4uNDk4NzBkZWI1OWQ0YjNiNWE3ZDgwYmZjZmIzMWE2ZjYy
YzQ5MmZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTkwMSw3ICs5MDEsNyBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aQogICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNp
c2lvbkxpc3RlbmVyOnNldFVwUG9saWN5TGlzdGVuZXIoV1RGTW92ZShmdW5jdGlvbiksIFBvbGlj
eUFjdGlvbjo6SWdub3JlLCB0cnlBcHBMaW5rID8gKE5TVVJMICopcmVxdWVzdC51cmwoKSA6IG5p
bCkuZ2V0KCldOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9u
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wsIEZvcm1TdGF0ZSogZm9ybVN0
YXRlLCBQb2xpY3lEZWNpc2lvbk1vZGUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlvbikK
K3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIEZvcm1TdGF0ZSogZm9y
bVN0YXRlLCBQb2xpY3lEZWNpc2lvbk1vZGUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlv
bikKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgp
KTsKICAgICBCT09MIHRyeUFwcExpbmsgPSBzaG91bGRUcnlBcHBMaW5rKHdlYlZpZXcsIGFjdGlv
biwgY29yZShtX3dlYkZyYW1lLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
aW5kZXggZDQ1ZjNjMzE0MWM4NjE1YjYwNDQ2MGFlNGRhNzc4MTg2YjAxN2NkMS4uMjA1OGJlNTZl
MzE5M2Q1NmJhNmQyOWNjMzBkZmFlZmIyMjRiMjJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcApAQCAtNTY1LDcgKzU2NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpCiAgICAg
bV9wb2xpY3lMaXN0ZW5lclByaXZhdGUtPm1fcG9saWN5RnVuY3Rpb24oUG9saWN5QWN0aW9uOjpV
c2UpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBX
ZWJDb3JlOjpQb2xpY3lEZWNpc2lvbk1vZGUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlv
bikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIEZvcm1TdGF0ZSog
Zm9ybVN0YXRlLCBXZWJDb3JlOjpQb2xpY3lEZWNpc2lvbk1vZGUsIEZyYW1lUG9saWN5RnVuY3Rp
b24mJiBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2Vi
VmlldygpOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMWEwMzEwNmYzOTc0ZmIwM2MwNWRiZWNkMjkwZmQ3NmVl
MTg3NTgwNi4uMzViNjY1YTRmODllYWE1ZGNlZGJhZWZjOTcyYTRmODgxN2JjMGEyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpG
cmFtZVBvbGljeUZ1bmN0aW9uJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZvcm1TdGF0ZSosIGNv
bnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24m
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6
OkZvcm1TdGF0ZSosIFdlYkNvcmU6OlBvbGljeURlY2lzaW9uTW9kZSwgV2ViQ29yZTo6RnJhbWVQ
b2xpY3lGdW5jdGlvbiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgV2ViQ29yZTo6UG9s
aWN5RGVjaXNpb25Nb2RlLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIG92ZXJyaWRl
OwogICAgIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlz
cGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGQ2NTg2MjRkZDI2YWIzOTEzZDVmNTMxYzBlNzk3YWFhZTEx
MzFhOC4uMWRlNzEwMDJkM2QyMzViOWQzMTYwNjQxOGY5Y2EwNmE5ODBjMjQ2NiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDE4LTA2LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgUFNPTjogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNz
aWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJhbWUtcmVkaXJlY3QtY29sbHVzaW9uLmh0
bWwgQVNTRVJUUyB3aXRoIHByb2Nlc3Mgc3dhcCBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY1NDUKKworICAgICAgICBSZXZpZXdlZCBi
eSBCcmFkeSBFaWRzb24uCisKKyAgICAgICAgQXR0ZW1wdCB0byBtYXJrIHRoZSB0ZXN0IGFzIG5v
bi1mbGFreSBub3cgdGhhdCBpdCBubyBsb25nZXIgcmVsaWVzIG9uIHN5bmMnaW5nIGZyb20gdGhl
IFdlYlByb2Nlc3MKKyAgICAgICAgdG8gdGhlIFVJUHJvY2Vzcy4KKworICAgICAgICAqIHBsYXRm
b3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE4LTA2LTEzICBNYXJrIExhbSAgPG1hcmsu
bGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBHYXJkZW5pbmc6IExheW91dCBUZXN0IGpzL2Vycm9y
LXNob3VsZC1ub3Qtc3Ryb25nLXJlZmVyZW5jZS1nbG9iYWwtb2JqZWN0Lmh0bWwgaXMgYSBmbGFr
eSBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDg5NWIyYzFlMTk5MjgxZTAyMWQ1ZGNkNzg0NDJlN2E4YTdjZDU3ODMuLjQ4YTc4NzY3ZjAzNzc0
MTEzZGY1MmMyY2JkMzcwMTE2NzNmM2JhYzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9U
ZXN0RXhwZWN0YXRpb25zCkBAIC03MDUsNyArNzA1LDcgQEAgaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi1zdWItZnJhbWUtdW5k
ZXIKIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxl
bnQtYmFzZWQtb24tc3VicmVzb3VyY2UtdW5kZXItdG9wLWZyYW1lLW9yaWdpbnMuaHRtbCBbIFBh
c3MgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZh
bGVudC1iYXNlZC1vbi1zdWJyZXNvdXJjZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWwgWyBQYXNz
IF0KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxl
bnQtYmFzZWQtb24tc3VicmVzb3VyY2UtcmVkaXJlY3QtY29sbHVzaW9uLmh0bWwgWyBQYXNzIF0K
LWh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQt
YmFzZWQtb24tdG9wLWZyYW1lLXJlZGlyZWN0LWNvbGx1c2lvbi5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxl
bnQtYmFzZWQtb24tdG9wLWZyYW1lLXJlZGlyZWN0LWNvbGx1c2lvbi5odG1sIFsgUGFzcyBdCiBo
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJh
c2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWwgWyBQYXNzIF0KIGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGVhci1pbi1tZW1vcnktYW5kLXBlcnNpc3Rl
bnQtc3RvcmUuaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2dyYW5kZmF0aGVyaW5nLmh0bWwgWyBQYXNzIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>