<?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>37394</bug_id>
          
          <creation_ts>2010-04-10 16:13:09 -0700</creation_ts>
          <short_desc>inspector/timeline-network-resource.html fails when run twice</short_desc>
          <delta_ts>2011-01-12 05:07:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>49412</blocked>
    
    <blocked>50822</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>apavlov</cc>
    
    <cc>dglazkov</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>podivilov</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>211207</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-10 16:13:09 -0700</bug_when>
    <thetext>inspector/timeline-network-resource.html fails when run twice


--- /tmp/layout-test-results/inspector/timeline-network-resource-expected.txt	2010-04-10 16:09:53.000000000 -0700
+++ /tmp/layout-test-results/inspector/timeline-network-resource-actual.txt	2010-04-10 16:09:53.000000000 -0700
@@ -13,21 +13,6 @@
 + usedHeapSize : * DEFINED *
 + totalHeapSize : * DEFINED *
 
-ResourceReceiveResponse Properties:
-+ startTime : * DEFINED *
-+ data : {
-+- identifier : * DEFINED *
-+- statusCode : 0
-+- mimeType : * DEFINED *
-+- expectedContentLength : 210
-+- url : * DEFINED *
-+ }
-+ children : * DEFINED *
-+ endTime : * DEFINED *
-+ type : 13
-+ usedHeapSize : * DEFINED *
-+ totalHeapSize : * DEFINED *
-
 ResourceFinish Properties:
 + startTime : * DEFINED *
 + data : {

http://trac.webkit.org/browser/trunk/LayoutTests/inspector/timeline-network-resource.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211210</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-10 16:15:43 -0700</bug_when>
    <thetext>run-webkit-tests inspector/timeline-network-resource.html inspector/timeline-network-resource.html
will reproduce the failure.

I noticed this while trying to redprocue bug 36946.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326620</commentid>
    <comment_count>2</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-24 08:32:22 -0800</bug_when>
    <thetext>O c</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326622</commentid>
    <comment_count>3</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-24 08:34:13 -0800</bug_when>
    <thetext>I was running this test on Linux Gtk Debug and it would fail every second run with the same diff as Eric posted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327213</commentid>
    <comment_count>4</comment_count>
      <attachid>77547</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-28 03:57:58 -0800</bug_when>
    <thetext>Created attachment 77547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327215</commentid>
    <comment_count>5</comment_count>
      <attachid>77547</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-12-28 04:33:39 -0800</bug_when>
    <thetext>Comment on attachment 77547
Patch

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

looks good to me

&gt; LayoutTests/inspector/timeline-network-resource.html:19
&gt; +function runAfterScriptIsEvaluated()
&gt;  {
&gt; -    function step()
&gt; -    {
&gt; -        if (!window.scriptEvaluated)
&gt; -            setTimeout(step, 100);
&gt; -        else
&gt; -            continuation();
&gt; -    }
&gt; -    setTimeout(step, 100);
&gt; +      printTimelineRecords(null, null, function(record) {
&gt; +          if (record.type === timelineAgentRecordType[&quot;ResourceSendRequest&quot;])
&gt; +              printSend(record);
&gt; +          else if (record.type === timelineAgentRecordType[&quot;ResourceReceiveResponse&quot;])
&gt; +              printReceive(record);
&gt; +          else if (record.type === timelineAgentRecordType[&quot;ResourceFinish&quot;])
&gt; +              printFinish(record);
&gt; +      });
&gt;  }

wrong indentation

&gt; LayoutTests/inspector/timeline-network-resource.js:6
&gt;  window.scriptEvaluated = true;

is not required anymore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327520</commentid>
    <comment_count>6</comment_count>
      <attachid>77608</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-29 02:20:18 -0800</bug_when>
    <thetext>Created attachment 77608
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327521</commentid>
    <comment_count>7</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-29 02:21:17 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=77608) [details]
&gt; Patch

The same patch with all comments addressed and the small refactoring that was discussed offline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327523</commentid>
    <comment_count>8</comment_count>
      <attachid>77609</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-29 02:23:34 -0800</bug_when>
    <thetext>Created attachment 77609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327524</commentid>
    <comment_count>9</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-29 02:24:41 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=77609) [details]
&gt; Patch

ChangeLog cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327528</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-29 03:19:52 -0800</bug_when>
    <thetext>Attachment 77608 did not build on mac:
Build output: http://queues.webkit.org/results/7205246</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327531</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-29 03:30:49 -0800</bug_when>
    <thetext>Attachment 77609 did not build on mac:
Build output: http://queues.webkit.org/results/7231237</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327576</commentid>
    <comment_count>12</comment_count>
      <attachid>77609</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-12-29 08:33:15 -0800</bug_when>
    <thetext>Comment on attachment 77609
Patch

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

&gt; WebCore/inspector/InspectorController.cpp:803
&gt; +    request.setReportLoadTiming(true);

This call should be made in case of no front-end as well. Otherwise WebTiming breaks. Condition should be: enable load timing in case of (isMainResource || m_frontend).

&gt; WebCore/inspector/InspectorController.cpp:807
&gt; +    request.setReportRawHeaders(true);

raw headers should be collected only for the case of m_frontend.

&gt; WebCore/inspector/InspectorController.h:280
&gt; +    void willSendRequest(unsigned long identifier, ResourceRequest&amp;, const ResourceResponse&amp; redirectResponse);

Please make sure that order in cpp file matches the order in header.

&gt; WebCore/inspector/InspectorInstrumentation.cpp:380
&gt; +    ic-&gt;ensureSettingsLoaded();

Could you add a comment on why this call is important to make here?

&gt; WebCore/inspector/InspectorInstrumentation.cpp:427
&gt; +InspectorInstrumentationCookie InspectorInstrumentation::willReceiveResourceResponseImpl(InspectorController* inspectorController, unsigned long identifier, DocumentLoader* loader, const ResourceResponse&amp; response)

Should willReceiveResponse call didReceiveResponse in inspector?

&gt; WebCore/inspector/InspectorInstrumentation.cpp:437
&gt; +        resourceAgent-&gt;didReceiveResponse(identifier, loader, response);
&gt; +    inspectorController-&gt;didReceiveResponse(identifier, response);

I feel that we should inline addConsoleMessage here instead. No need to make inspector controller involved.

&gt; WebCore/inspector/InspectorInstrumentation.cpp:463
&gt; +    ic-&gt;didFailLoading(identifier, error);

ditto

&gt; WebCore/inspector/InspectorInstrumentation.cpp:472
&gt; +    ic-&gt;resourceRetrievedByXMLHttpRequest(url, sendURL, sendLineNumber);

Almost ditto, but depends on inspector state, I know...

&gt; WebCore/inspector/InspectorInstrumentation.h:458
&gt; +    if (!frame)

Are you not using inspectorControllerForFrame in order to get called in case of no front-ends? You should then be explicit and document it here.

&gt; WebCore/inspector/InspectorInstrumentation.h:475
&gt; +#if ENABLE(INSPECTOR)

We only inline methods and delegate to Impl in case we do a fast InspectorController fetch. I don&apos;t see how this inline helps.

&gt; WebCore/inspector/InspectorInstrumentation.h:483
&gt; +    didLoadResourceFromMemoryCacheImpl(page-&gt;inspectorController(), loader, resource);

ditto

&gt; WebCore/inspector/front-end/NetworkManager.js:92
&gt; +            this.mainResourceIdentifier = identifier;

Now mainResourceIdentifier might conflict mainResource defined in didCommitLoadForFrame. You should instead mark resource as main here and assign WebInspector.mainResource to it (and nuke didCommitLoadForFrame).

&gt; WebCore/loader/ResourceLoadNotifier.cpp:69
&gt; +    InspectorInstrumentationCookie cookie = InspectorInstrumentation::willReceiveResourceResponse(loader-&gt;frameLoader()-&gt;frame(), loader-&gt;identifier(), loader-&gt;documentLoader(), r);

We are now going to receive dupes / miss notifications. Please do not modify original inspector controller resource reporting in this change.

&gt; WebCore/loader/ResourceLoadNotifier.cpp:-139
&gt; -        page-&gt;inspectorController()-&gt;didReceiveResponse(identifier, loader, r);

This clearly is a regression - you should call InspectorInstrumentation here.

&gt; WebCore/loader/ResourceLoadNotifier.cpp:158
&gt; +        InspectorInstrumentationCookie cookie = InspectorInstrumentation::willReceiveResourceResponse(loader-&gt;frameLoader()-&gt;frame(), identifier, loader, response);

You should not make calls to inspector controller in the new places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332323</commentid>
    <comment_count>13</comment_count>
      <attachid>78529</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-11 07:41:43 -0800</bug_when>
    <thetext>Created attachment 78529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332331</commentid>
    <comment_count>14</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-11 07:48:06 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 77609 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=77609&amp;action=review
&gt; 
&gt; &gt; WebCore/inspector/InspectorController.cpp:803
&gt; &gt; +    request.setReportLoadTiming(true);
&gt; 
&gt; This call should be made in case of no front-end as well. Otherwise WebTiming breaks. Condition should be: enable load timing in case of (isMainResource || m_frontend).
&gt; 
Done.

&gt; &gt; WebCore/inspector/InspectorController.cpp:807
&gt; &gt; +    request.setReportRawHeaders(true);
&gt; 
&gt; raw headers should be collected only for the case of m_frontend.
&gt; 
Done.

&gt; &gt; WebCore/inspector/InspectorController.h:280
&gt; &gt; +    void willSendRequest(unsigned long identifier, ResourceRequest&amp;, const ResourceResponse&amp; redirectResponse);
&gt; 
&gt; Please make sure that order in cpp file matches the order in header.
&gt; 
Done.

&gt; &gt; WebCore/inspector/InspectorInstrumentation.cpp:380
&gt; &gt; +    ic-&gt;ensureSettingsLoaded();
&gt; 
&gt; Could you add a comment on why this call is important to make here?
&gt; 
I believe we don&apos;t need this call here at all. It should be done in connectFrontend and on XHR response.


&gt; &gt; WebCore/inspector/InspectorInstrumentation.cpp:427
&gt; &gt; +InspectorInstrumentationCookie InspectorInstrumentation::willReceiveResourceResponseImpl(InspectorController* inspectorController, unsigned long identifier, DocumentLoader* loader, const ResourceResponse&amp; response)
&gt; 
&gt; Should willReceiveResponse call didReceiveResponse in inspector?
&gt; 
Fixed. 

&gt; &gt; WebCore/inspector/InspectorInstrumentation.cpp:437
&gt; &gt; +        resourceAgent-&gt;didReceiveResponse(identifier, loader, response);
&gt; &gt; +    inspectorController-&gt;didReceiveResponse(identifier, response);
&gt; 
&gt; I feel that we should inline addConsoleMessage here instead. No need to make inspector controller involved.
&gt; 
I&apos;d rather move console-related stuff into console agent in the next change.

&gt; &gt; WebCore/inspector/InspectorInstrumentation.cpp:463
&gt; &gt; +    ic-&gt;didFailLoading(identifier, error);
&gt; 
&gt; ditto
&gt; 
ditto

&gt; &gt; WebCore/inspector/InspectorInstrumentation.cpp:472
&gt; &gt; +    ic-&gt;resourceRetrievedByXMLHttpRequest(url, sendURL, sendLineNumber);
&gt; 
&gt; Almost ditto, but depends on inspector state, I know...
&gt; 
&gt; &gt; WebCore/inspector/InspectorInstrumentation.h:458
&gt; &gt; +    if (!frame)
&gt; 
&gt; Are you not using inspectorControllerForFrame in order to get called in case of no front-ends? You should then be explicit and document it here.
&gt;
Done.
 
&gt; &gt; WebCore/inspector/InspectorInstrumentation.h:475
&gt; &gt; +#if ENABLE(INSPECTOR)
&gt; 
&gt; We only inline methods and delegate to Impl in case we do a fast InspectorController fetch. I don&apos;t see how this inline helps.
&gt; 
We need to put #if ENABLE(INSPECTOR) guard into the inlined method to avoid overhead when inspector is disabled.

&gt; &gt; WebCore/inspector/InspectorInstrumentation.h:483
&gt; &gt; +    didLoadResourceFromMemoryCacheImpl(page-&gt;inspectorController(), loader, resource);
&gt; 
&gt; ditto
&gt; 
ditto.

&gt; &gt; WebCore/inspector/front-end/NetworkManager.js:92
&gt; &gt; +            this.mainResourceIdentifier = identifier;
&gt; 
&gt; Now mainResourceIdentifier might conflict mainResource defined in didCommitLoadForFrame. You should instead mark resource as main here and assign WebInspector.mainResource to it (and nuke didCommitLoadForFrame).
&gt; 
&gt; &gt; WebCore/loader/ResourceLoadNotifier.cpp:69
&gt; &gt; +    InspectorInstrumentationCookie cookie = InspectorInstrumentation::willReceiveResourceResponse(loader-&gt;frameLoader()-&gt;frame(), loader-&gt;identifier(), loader-&gt;documentLoader(), r);
&gt; 
&gt; We are now going to receive dupes / miss notifications. Please do not modify original inspector controller resource reporting in this change.
&gt; 
Fixed.

&gt; &gt; WebCore/loader/ResourceLoadNotifier.cpp:-139
&gt; &gt; -        page-&gt;inspectorController()-&gt;didReceiveResponse(identifier, loader, r);
&gt; 
&gt; This clearly is a regression - you should call InspectorInstrumentation here.
&gt; 
&gt; &gt; WebCore/loader/ResourceLoadNotifier.cpp:158
&gt; &gt; +        InspectorInstrumentationCookie cookie = InspectorInstrumentation::willReceiveResourceResponse(loader-&gt;frameLoader()-&gt;frame(), identifier, loader, response);
&gt; 
&gt; You should not make calls to inspector controller in the new places.
Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332333</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-11 07:51:04 -0800</bug_when>
    <thetext>Attachment 78529 did not build on chromium:
Build output: http://queues.webkit.org/results/7409118</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332342</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-11 08:10:03 -0800</bug_when>
    <thetext>Attachment 78529 did not build on chromium:
Build output: http://queues.webkit.org/results/7419109</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332344</commentid>
    <comment_count>17</comment_count>
      <attachid>78529</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-11 08:13:56 -0800</bug_when>
    <thetext>Comment on attachment 78529
Patch

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

&gt; Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp:51
&gt; +    m_inspectorController-&gt;didReceiveResponse(identifier, response);

You should call InspectorInstrumentation::didReceiveResponse (here and in other places).

&gt; Source/WebCore/inspector/InspectorController.h:162
&gt; +    void didReceiveResponse(unsigned long identifier, const ResourceResponse&amp;);

Make this private as well.

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:443
&gt; +    ic-&gt;didReceiveResponse(identifier, response);

Add // FIXME: move this to console agent.

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:464
&gt; +    ic-&gt;didFailLoading(identifier, error);

ditto

&gt; Source/WebCore/inspector/front-end/NetworkManager.js:-228
&gt; -                mainResource.isMainResource = true;

You will need to rebaseline this.

&gt; WebKit/chromium/src/WebDevToolsAgentImpl.cpp:295
&gt; +        InspectorInstrumentation::willSendRequest(mainFrame(), resourceId, request.toMutableResourceRequest(), ResourceResponse());

mainFrame will be used by the InspectorResourceAgent and plugin resources will belong to the wrong node in the frame tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332981</commentid>
    <comment_count>18</comment_count>
      <attachid>78667</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-12 02:40:43 -0800</bug_when>
    <thetext>Created attachment 78667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332985</commentid>
    <comment_count>19</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-12 02:43:00 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 78529 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78529&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp:51
&gt; &gt; +    m_inspectorController-&gt;didReceiveResponse(identifier, response);
&gt; 
&gt; You should call InspectorInstrumentation::didReceiveResponse (here and in other places).
&gt; 
Done.

&gt; &gt; Source/WebCore/inspector/InspectorController.h:162
&gt; &gt; +    void didReceiveResponse(unsigned long identifier, const ResourceResponse&amp;);
&gt; 
&gt; Make this private as well.
&gt; 
Done.

&gt; &gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:443
&gt; &gt; +    ic-&gt;didReceiveResponse(identifier, response);
&gt; 
&gt; Add // FIXME: move this to console agent.
&gt; 
Done.

&gt; &gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:464
&gt; &gt; +    ic-&gt;didFailLoading(identifier, error);
&gt; 
&gt; ditto
&gt;
Done.
 
&gt; &gt; Source/WebCore/inspector/front-end/NetworkManager.js:-228
&gt; &gt; -                mainResource.isMainResource = true;
&gt; 
&gt; You will need to rebaseline this.
&gt; 
Done.

&gt; &gt; WebKit/chromium/src/WebDevToolsAgentImpl.cpp:295
&gt; &gt; +        InspectorInstrumentation::willSendRequest(mainFrame(), resourceId, request.toMutableResourceRequest(), ResourceResponse());
&gt; 
&gt; mainFrame will be used by the InspectorResourceAgent and plugin resources will belong to the wrong node in the frame tree.

The frame is only used to get corresponding inspectorcontroller instance, all frame&lt;-&gt;resource matching is done by means of loader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332992</commentid>
    <comment_count>20</comment_count>
      <attachid>78671</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-12 02:59:30 -0800</bug_when>
    <thetext>Created attachment 78671
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333033</commentid>
    <comment_count>21</comment_count>
      <attachid>78671</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-12 04:39:08 -0800</bug_when>
    <thetext>Comment on attachment 78671
Patch

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

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:532
&gt; +        bool isNowOnline = networkStateNotifier().onLine();

ditto

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:540
&gt; +        ApplicationCacheHost::Status status = frame-&gt;loader()-&gt;documentLoader()-&gt;applicationCacheHost()-&gt;status();

It is weird that instrumentation delegate dives into the appcache domain logic.

&gt; Source/WebCore/inspector/InspectorInstrumentation.h:630
&gt; +inline void InspectorInstrumentation::updateApplicationCacheStatus(Frame* frame)

You might want to change WebKit/chromium/src/ApplicationCacheHost.cpp as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333040</commentid>
    <comment_count>22</comment_count>
      <attachid>78681</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-12 05:02:52 -0800</bug_when>
    <thetext>Created attachment 78681
Patch that I&apos;m going to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333041</commentid>
    <comment_count>23</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-12 05:03:17 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 78671 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78671&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:532
&gt; &gt; +        bool isNowOnline = networkStateNotifier().onLine();
&gt; 
&gt; ditto
&gt; 
Done.

&gt; &gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:540
&gt; &gt; +        ApplicationCacheHost::Status status = frame-&gt;loader()-&gt;documentLoader()-&gt;applicationCacheHost()-&gt;status();
&gt; 
&gt; It is weird that instrumentation delegate dives into the appcache domain logic.
&gt; 
Done.

&gt; &gt; Source/WebCore/inspector/InspectorInstrumentation.h:630
&gt; &gt; +inline void InspectorInstrumentation::updateApplicationCacheStatus(Frame* frame)
&gt; 
&gt; You might want to change WebKit/chromium/src/ApplicationCacheHost.cpp as well.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333042</commentid>
    <comment_count>24</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-12 05:07:16 -0800</bug_when>
    <thetext>Committed r75604: &lt;http://trac.webkit.org/changeset/75604&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77547</attachid>
            <date>2010-12-28 03:57:58 -0800</date>
            <delta_ts>2010-12-29 02:20:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37394-20101228145755.patch</filename>
            <type>text/plain</type>
            <size>7599</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiNDg4NjM1MTRmMzIwNGY3Yzg3NzNiY2U2Njk5ZTkxN2NlNGUwMjcyLi4yYjM3OWJk
MTE1OGFkMjRmYjZjM2Y0ODQzZjRkY2JhZWEwNmYyODIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMTItMjggIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaW5zcGVjdG9yL3Rp
bWVsaW5lLW5ldHdvcmstcmVzb3VyY2UuaHRtbCBmYWlscyB3aGVuIHJ1biB0d2ljZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzczOTQKKworICAgICAg
ICAqIGluc3BlY3Rvci90aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS5odG1sOgorICAgICAg
ICAqIGluc3BlY3Rvci90aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmpzOgorCiAyMDEwLTEyLTI3
ICBTaGluaWNoaXJvIEhhbWFqaSAgPHNoaW5pY2hpcm8uaGFtYWppQGdtYWlsLmNvbT4KIAogICAg
ICAgICBDaHJvbWl1bSBleHBlY3RhdGlvbiB1cGRhdGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS1leHBlY3RlZC50eHQK
aW5kZXggZDk0MThjYTgwMjk4ZmYzZDc3MTgyNTY1M2NlMjYwMzgzNzYwZmE0OS4uOTQ5ZDgwZWM2
OTljOWU1MGRmOTQwYzZmOGNmNGU1ZWMyZmY3ZDhkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3RpbWVsaW5lLW5ldHdvcmstcmVzb3VyY2UtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLWV4cGVjdGVkLnR4
dApAQCAtMjIsNyArMjIsNyBAQCBSZXNvdXJjZVJlY2VpdmVSZXNwb25zZSBQcm9wZXJ0aWVzOgog
ICAgICAgICBpZGVudGlmaWVyIDogPG51bWJlcj4KICAgICAgICAgc3RhdHVzQ29kZSA6IDAKICAg
ICAgICAgbWltZVR5cGUgOiA8c3RyaW5nPgotICAgICAgICBleHBlY3RlZENvbnRlbnRMZW5ndGgg
OiAyMTAKKyAgICAgICAgZXhwZWN0ZWRDb250ZW50TGVuZ3RoIDogMjM5CiAgICAgICAgIHVybCA6
IDxzdHJpbmc+CiAgICAgfQogICAgIGNoaWxkcmVuIDogPG9iamVjdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS5odG1sCmluZGV4IGZl
MjhlZDNiOGVkYmU4ZWM1ZTFjN2FkZDFkODUyNDljYTBlNzAyZjcuLmFkZjUxZmQxODU1NWQyZmNj
NDczMDdhOGIwNmRjMjNhYjExZmZjZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci90aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3RpbWVsaW5lLW5ldHdvcmstcmVzb3VyY2UuaHRtbApAQCAtNiwxNiArNiwxNiBAQAogCiB2
YXIgc2NyaXB0VXJsID0gInRpbWVsaW5lLW5ldHdvcmstcmVzb3VyY2UuanMiOwogCi1mdW5jdGlv
biBydW5BZnRlclNjcmlwdElzRXZhbHVhdGVkKGNvbnRpbnVhdGlvbikKK2Z1bmN0aW9uIHJ1bkFm
dGVyU2NyaXB0SXNFdmFsdWF0ZWQoKQogewotICAgIGZ1bmN0aW9uIHN0ZXAoKQotICAgIHsKLSAg
ICAgICAgaWYgKCF3aW5kb3cuc2NyaXB0RXZhbHVhdGVkKQotICAgICAgICAgICAgc2V0VGltZW91
dChzdGVwLCAxMDApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250aW51YXRpb24oKTsK
LSAgICB9Ci0gICAgc2V0VGltZW91dChzdGVwLCAxMDApOworICAgICAgcHJpbnRUaW1lbGluZVJl
Y29yZHMobnVsbCwgbnVsbCwgZnVuY3Rpb24ocmVjb3JkKSB7CisgICAgICAgICAgaWYgKHJlY29y
ZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZVsiUmVzb3VyY2VTZW5kUmVxdWVzdCJd
KQorICAgICAgICAgICAgICBwcmludFNlbmQocmVjb3JkKTsKKyAgICAgICAgICBlbHNlIGlmIChy
ZWNvcmQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJlY29yZFR5cGVbIlJlc291cmNlUmVjZWl2ZVJl
c3BvbnNlIl0pCisgICAgICAgICAgICAgIHByaW50UmVjZWl2ZShyZWNvcmQpOworICAgICAgICAg
IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZVsiUmVzb3Vy
Y2VGaW5pc2giXSkKKyAgICAgICAgICAgICAgcHJpbnRGaW5pc2gocmVjb3JkKTsKKyAgICAgIH0p
OwogfQogCiBmdW5jdGlvbiBwcmludFJlY29yZChyZWNvcmQpCkBAIC02MCwxNyArNjAsNiBAQCBm
dW5jdGlvbiBkb2l0KCkKICAgICB2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
c2NyaXB0Iik7CiAgICAgc2NyaXB0LnNyYyA9IHNjcmlwdFVybDsKICAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKHNjcmlwdCk7Ci0gICAgcnVuQWZ0ZXJTY3JpcHRJc0V2YWx1YXRlZChmdW5j
dGlvbigpIHsKLSAgICAgICAgcHJpbnRUaW1lbGluZVJlY29yZHMobnVsbCwgbnVsbCwgZnVuY3Rp
b24ocmVjb3JkKSB7Ci0gICAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IHRpbWVsaW5lQWdl
bnRSZWNvcmRUeXBlWyJSZXNvdXJjZVNlbmRSZXF1ZXN0Il0pCi0gICAgICAgICAgICAgICAgcHJp
bnRTZW5kKHJlY29yZCk7Ci0gICAgIAotICAgICAgICAgICAgZWxzZSBpZiAocmVjb3JkLnR5cGUg
PT09IHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBlWyJSZXNvdXJjZVJlY2VpdmVSZXNwb25zZSJdKQot
ICAgICAgICAgICAgICAgIHByaW50UmVjZWl2ZShyZWNvcmQpOwotICAgICAgICAgICAgZWxzZSBp
ZiAocmVjb3JkLnR5cGUgPT09IHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBlWyJSZXNvdXJjZUZpbmlz
aCJdKQotICAgICAgICAgICAgICAgIHByaW50RmluaXNoKHJlY29yZCk7Ci0gICAgICAgIH0pOwot
ICAgIH0pOwogfQogCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci90aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Rp
bWVsaW5lLW5ldHdvcmstcmVzb3VyY2UuanMKaW5kZXggNmZlMGQxOGQ4MDBlZDdlMDBkMWJlODIw
ODg4M2EzMDZjMDk0ZWE0OS4uNjJiM2MzODk3Y2JmNGM4NDU5Zjc4MGM1ZmJlOTBmZGU0YTJiM2Q4
NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLW5ldHdvcmstcmVz
b3VyY2UuanMKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLW5ldHdvcmstcmVz
b3VyY2UuanMKQEAgLTQsMyArNCw0IEBAIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CiBlbGVtZW50LmlubmVySFRNTCA9ICJTY3JpcHQgcmVzb3VyY2UgbG9hZGVk
IjsKIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CiB3aW5kb3cuc2NyaXB0RXZh
bHVhdGVkID0gdHJ1ZTsKK3J1bkFmdGVyU2NyaXB0SXNFdmFsdWF0ZWQoKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM4Y2NhNGQwZTUw
NTU3YTk4MmMzYmVlZDgwOTE2ODIzMmQyOGEwNS4uZjA1ZDZmOTRjMDk1ODgyZDdjODE5OTU1NjYx
MTNmMjYzOTg3NTExOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0xMi0yOCAgWXVyeSBTZW1pa2hhdHNr
eSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBpbnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS5odG1s
IGZhaWxzIHdoZW4gcnVuIHR3aWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNzM5NAorCisgICAgICAgIFNlbmQgZGlkUmVjZWl2ZVJlc3BvbnNlIG5v
dGlmaWNhdGlvbiB0byB0aGUgdGltZWxpbmUgYWdlbnQgZnJvbSBSZXNvdXJjZUxvYWROb3RpZmll
cgorICAgICAgICBpbnN0ZWFkIG9mIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Ug
dG8gY29udmVyIHRoZSBjYXNlcyB3aGVuIHJlc291cmNlcworICAgICAgICBhcmUgbG9hZGVkIGZy
b20gbWVtb3J5IGNhY2hlLgorCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRS
ZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZSk6CisKIDIwMTAtMTItMjcgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZE5vdGlmaWVyLmNwcAppbmRleCBkMDAyZWYzOGNiZjhlMmQ5MGM4ZTAzYjAwNzkzZTc0
ZGViYjFlMmZlLi5iMzI0YTQwY2U1NDZlNDc0MDAyNzg4ZWY0OTRiMDdhMzUzZDg4MWViIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKKysrIGIvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFj
a2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKQEAgLTY2LDEyICs2NywxNiBAQCB2
b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VMb2FkZXIq
IGxvYWRlciwgUmVzb3VyY2VSZXF1ZQogCiB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcikKIHsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UobG9h
ZGVyLT5mcmFtZUxvYWRlcigpLT5mcmFtZSgpLCBsb2FkZXItPmlkZW50aWZpZXIoKSwgcik7CisK
ICAgICBsb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmFkZFJlc3BvbnNlKHIpOwogCiAgICAgaWYg
KFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHBhZ2UtPnByb2dyZXNzKCkt
PmluY3JlbWVudFByb2dyZXNzKGxvYWRlci0+aWRlbnRpZmllcigpLCByKTsKIAogICAgIGRpc3Bh
dGNoRGlkUmVjZWl2ZVJlc3BvbnNlKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5p
ZGVudGlmaWVyKCksIHIpOworCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZShjb29raWUpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZE5vdGlm
aWVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCkBAIC0xNzAsOCArMTc1LDExIEBA
IHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoVHJhbnNmZXJMb2FkaW5nUmVzb3Vy
Y2VGcm9tUGFnZSh1bnNpZ25lZCBsb25nCiAKIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OnNl
bmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGlu
dCBsZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIGlmICghcmVzcG9u
c2UuaXNOdWxsKCkpCisgICAgaWYgKCFyZXNwb25zZS5pc051bGwoKSkgeworICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UobG9hZGVyLT5mcmFtZUxvYWRlcigpLT5m
cmFtZSgpLCBpZGVudGlmaWVyLCByZXNwb25zZSk7CiAgICAgICAgIGRpc3BhdGNoRGlkUmVjZWl2
ZVJlc3BvbnNlKGxvYWRlciwgaWRlbnRpZmllciwgcmVzcG9uc2UpOworICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGNvb2tpZSk7Cisg
ICAgfQogCiAgICAgaWYgKGxlbmd0aCA+IDApCiAgICAgICAgIGRpc3BhdGNoRGlkUmVjZWl2ZUNv
bnRlbnRMZW5ndGgobG9hZGVyLCBpZGVudGlmaWVyLCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IGRlMzk5ODY2NWNiZWJhYzE0MGMzNGI4MDFmYzVkNDYyMjc1ODBiNDEu
LmVhMGQwMmE4ZjgzNDk0MzZhY2MyMWQyNWU0ZDJkNmFjZTU0NWI2YjcgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTQyMCw5ICs0MjAsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JgogICAgIGlmIChkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXli
ZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKHRoaXMsIHJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJu
OwogI2VuZGlmCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1fZnJh
bWUuZ2V0KCksIGlkZW50aWZpZXIoKSwgcmVzcG9uc2UpOwogICAgIGRpZFJlY2VpdmVSZXNwb25z
ZShyZXNwb25zZSk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVz
b3VyY2VSZXNwb25zZShjb29raWUpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGlu
dCBsZW5ndGhSZWNlaXZlZCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77608</attachid>
            <date>2010-12-29 02:20:18 -0800</date>
            <delta_ts>2010-12-29 02:23:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37394-20101229132014.patch</filename>
            <type>text/plain</type>
            <size>73045</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlZTg0MGNjYzYxYTY4MGEwMjBlMjEzOTY1MDMwMzlmMjRlODk1M2RhLi42ZjRhMjgz
YTZiNzg5YzM0MDNlZDRlZWY1Yzc2NmNhNDA0MmI4YzVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAK
KzIwMTAtMTItMjkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaW5zcGVjdG9yL3Rp
bWVsaW5lLW5ldHdvcmstcmVzb3VyY2UuaHRtbCBmYWlscyB3aGVuIHJ1biB0d2ljZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzczOTQKKworICAgICAg
ICBTZW5kIGRpZFJlY2VpdmVSZXNwb25zZSBub3RpZmljYXRpb24gdG8gdGhlIHRpbWVsaW5lIGFn
ZW50IGZyb20gUmVzb3VyY2VMb2FkTm90aWZpZXIKKyAgICAgICAgaW5zdGVhZCBvZiBSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlIHRvIGNvdmVyIHRoZSBjYXNlcyB3aGVuIHJlc291
cmNlcworICAgICAgICBhcmUgbG9hZGVkIGZyb20gbWVtb3J5IGNhY2hlLgorCisgICAgICAgIE5l
dHdvcmsgbm90aWZpY2F0aW9ucyBhcmUgbm93IHNlbmQgdG8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uIHdoaWNoIGRpc3BhdGNoZXMKKyAgICAgICAgdGhlbSB0byBpbnRlcmVzdGVkIGFnZW50cyBh
bmQgSW5zcGVjdG9yQ29udHJvbGxlci4KKyAgICAgICAgZml4CisKKyAgICAgICAgKiBpbnNwZWN0
b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5z
cGVjdG9yL3RpbWVsaW5lLW5ldHdvcmstcmVzb3VyY2UuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS5qczoKKworMjAxMC0xMi0yOCAgWXVyeSBTZW1p
a2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBpbnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJj
ZS5odG1sIGZhaWxzIHdoZW4gcnVuIHR3aWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNzM5NAorCisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5l
LW5ldHdvcmstcmVzb3VyY2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci90aW1l
bGluZS1uZXR3b3JrLXJlc291cmNlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5l
LW5ldHdvcmstcmVzb3VyY2UuanM6CisKIDIwMTAtMTItMjcgIFNoaW5pY2hpcm8gSGFtYWppICA8
c2hpbmljaGlyby5oYW1hamlAZ21haWwuY29tPgogCiAgICAgICAgIENocm9taXVtIGV4cGVjdGF0
aW9uIHVwZGF0ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1u
ZXR3b3JrLXJlc291cmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1l
bGluZS1uZXR3b3JrLXJlc291cmNlLWV4cGVjdGVkLnR4dAppbmRleCBkOTQxOGNhODAyOThmZjNk
NzcxODI1NjUzY2UyNjAzODM3NjBmYTQ5Li45MjY5Nzc1YTE1MjU3YmQ0OWE3M2IzZjk0Y2Y3ZGMz
ZDIxMzAwNjcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbmV0
d29yay1yZXNvdXJjZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Rp
bWVsaW5lLW5ldHdvcmstcmVzb3VyY2UtZXhwZWN0ZWQudHh0CkBAIC04LDcgKzgsNiBAQCBSZXNv
dXJjZVNlbmRSZXF1ZXN0IFByb3BlcnRpZXM6CiAgICAgICAgIGlkZW50aWZpZXIgOiA8bnVtYmVy
PgogICAgICAgICB1cmwgOiA8c3RyaW5nPgogICAgICAgICByZXF1ZXN0TWV0aG9kIDogIkdFVCIK
LSAgICAgICAgaXNNYWluUmVzb3VyY2UgOiBmYWxzZQogICAgIH0KICAgICB0eXBlIDogMTIKICAg
ICB1c2VkSGVhcFNpemUgOiA8bnVtYmVyPgpAQCAtMjIsNyArMjEsNyBAQCBSZXNvdXJjZVJlY2Vp
dmVSZXNwb25zZSBQcm9wZXJ0aWVzOgogICAgICAgICBpZGVudGlmaWVyIDogPG51bWJlcj4KICAg
ICAgICAgc3RhdHVzQ29kZSA6IDAKICAgICAgICAgbWltZVR5cGUgOiA8c3RyaW5nPgotICAgICAg
ICBleHBlY3RlZENvbnRlbnRMZW5ndGggOiAyMTAKKyAgICAgICAgZXhwZWN0ZWRDb250ZW50TGVu
Z3RoIDogMjA4CiAgICAgICAgIHVybCA6IDxzdHJpbmc+CiAgICAgfQogICAgIGNoaWxkcmVuIDog
PG9iamVjdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1uZXR3
b3JrLXJlc291cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbmV0d29y
ay1yZXNvdXJjZS5odG1sCmluZGV4IGZlMjhlZDNiOGVkYmU4ZWM1ZTFjN2FkZDFkODUyNDljYTBl
NzAyZjcuLjcyODZmYjZhYWM4ODJhYzgxYWRjYmFkZjE1NDNmNjc1NDkwNTExNjMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLW5ldHdvcmstcmVzb3VyY2UuaHRt
bApAQCAtNiwxNiArNiwxNiBAQAogCiB2YXIgc2NyaXB0VXJsID0gInRpbWVsaW5lLW5ldHdvcmst
cmVzb3VyY2UuanMiOwogCi1mdW5jdGlvbiBydW5BZnRlclNjcmlwdElzRXZhbHVhdGVkKGNvbnRp
bnVhdGlvbikKK2Z1bmN0aW9uIHJ1bkFmdGVyU2NyaXB0SXNFdmFsdWF0ZWQoKQogewotICAgIGZ1
bmN0aW9uIHN0ZXAoKQotICAgIHsKLSAgICAgICAgaWYgKCF3aW5kb3cuc2NyaXB0RXZhbHVhdGVk
KQotICAgICAgICAgICAgc2V0VGltZW91dChzdGVwLCAxMDApOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBjb250aW51YXRpb24oKTsKLSAgICB9Ci0gICAgc2V0VGltZW91dChzdGVwLCAxMDAp
OworICAgIHByaW50VGltZWxpbmVSZWNvcmRzKG51bGwsIG51bGwsIGZ1bmN0aW9uKHJlY29yZCkg
eworICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBlWyJS
ZXNvdXJjZVNlbmRSZXF1ZXN0Il0pCisgICAgICAgICAgICBwcmludFNlbmQocmVjb3JkKTsKKyAg
ICAgICAgZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBlWyJS
ZXNvdXJjZVJlY2VpdmVSZXNwb25zZSJdKQorICAgICAgICAgICAgcHJpbnRSZWNlaXZlKHJlY29y
ZCk7CisgICAgICAgIGVsc2UgaWYgKHJlY29yZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3Jk
VHlwZVsiUmVzb3VyY2VGaW5pc2giXSkKKyAgICAgICAgICAgIHByaW50RmluaXNoKHJlY29yZCk7
CisgICAgfSk7CiB9CiAKIGZ1bmN0aW9uIHByaW50UmVjb3JkKHJlY29yZCkKQEAgLTYwLDE3ICs2
MCw2IEBAIGZ1bmN0aW9uIGRvaXQoKQogICAgIHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJzY3JpcHQiKTsKICAgICBzY3JpcHQuc3JjID0gc2NyaXB0VXJsOwogICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKLSAgICBydW5BZnRlclNjcmlwdElzRXZhbHVh
dGVkKGZ1bmN0aW9uKCkgewotICAgICAgICBwcmludFRpbWVsaW5lUmVjb3JkcyhudWxsLCBudWxs
LCBmdW5jdGlvbihyZWNvcmQpIHsKLSAgICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gdGlt
ZWxpbmVBZ2VudFJlY29yZFR5cGVbIlJlc291cmNlU2VuZFJlcXVlc3QiXSkKLSAgICAgICAgICAg
ICAgICBwcmludFNlbmQocmVjb3JkKTsKLSAgICAgCi0gICAgICAgICAgICBlbHNlIGlmIChyZWNv
cmQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJlY29yZFR5cGVbIlJlc291cmNlUmVjZWl2ZVJlc3Bv
bnNlIl0pCi0gICAgICAgICAgICAgICAgcHJpbnRSZWNlaXZlKHJlY29yZCk7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJlY29yZFR5cGVbIlJlc291
cmNlRmluaXNoIl0pCi0gICAgICAgICAgICAgICAgcHJpbnRGaW5pc2gocmVjb3JkKTsKLSAgICAg
ICAgfSk7Ci0gICAgfSk7CiB9CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3RpbWVsaW5lLW5ldHdvcmstcmVzb3VyY2UuanMgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS5qcwppbmRleCA2ZmUwZDE4ZDgwMGVkN2Uw
MGQxYmU4MjA4ODgzYTMwNmMwOTRlYTQ5Li5kZTdjNzIwZjU4Zjc3NzljYmJmNmNlNzE1N2IyNTFm
NjE1MjlkMDVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbmV0
d29yay1yZXNvdXJjZS5qcworKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbmV0
d29yay1yZXNvdXJjZS5qcwpAQCAtMyw0ICszLDQgQEAKIHZhciBlbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CiBlbGVtZW50LmlubmVySFRNTCA9ICJTY3JpcHQgcmVzb3Vy
Y2UgbG9hZGVkIjsKIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7Ci13aW5kb3cu
c2NyaXB0RXZhbHVhdGVkID0gdHJ1ZTsKK3J1bkFmdGVyU2NyaXB0SXNFdmFsdWF0ZWQoKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA4
N2FkNjQ2YmE0MDRhOWQ0YTFhNTUxODE3YThhZGE2Yjc0MjQ1MC4uMGQyY2I0ZmNiNDdiMmRjZTJh
MDc4MjFiZjhiZWFlYTFiMmUyNDI1YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MyBAQAorMjAxMC0xMi0yOSAgWXVyeSBT
ZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBpbnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNv
dXJjZS5odG1sIGZhaWxzIHdoZW4gcnVuIHR3aWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzM5NAorCisgICAgICAgIFNlbmQgZGlkUmVjZWl2ZVJl
c3BvbnNlIG5vdGlmaWNhdGlvbiB0byB0aGUgdGltZWxpbmUgYWdlbnQgZnJvbSBSZXNvdXJjZUxv
YWROb3RpZmllcgorICAgICAgICBpbnN0ZWFkIG9mIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UgdG8gY292ZXIgdGhlIGNhc2VzIHdoZW4gcmVzb3VyY2VzCisgICAgICAgIGFyZSBs
b2FkZWQgZnJvbSBtZW1vcnkgY2FjaGUuCisKKyAgICAgICAgTmV0d29yayBub3RpZmljYXRpb25z
IGFyZSBub3cgc2VudCB0byBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gd2hpY2ggZGlzcGF0Y2hl
cworICAgICAgICB0aGVtIHRvIGludGVyZXN0ZWQgYWdlbnRzIGFuZCBJbnNwZWN0b3JDb250cm9s
bGVyLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5pZGw6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmRpZFJlY2VpdmVNYW5pZmVzdFJl
c3BvbnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1pdExvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbFNlbmRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRGYWlsTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZXNvdXJjZVJl
dHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlkZW50
aWZpZXJGb3JJbml0aWFsUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWRJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291cmNl
RnJvbU1lbW9yeUNhY2hlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlQ29udGVudExlbmd0aElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5p
c2hMb2FkaW5nSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEZhaWxMb2FkaW5nSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdEltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXRyaWV2
ZVJlc291cmNlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aWRl
bnRpZmllckZvckluaXRpYWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5
Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
UmVjZWl2ZVJlc291cmNlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlQ29udGVudExlbmd0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlc291cmNlUmV0cmlldmVk
QnlYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OnNjcmlwdEltcG9ydGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
d2lsbFNlbmRSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JU
aW1lbGluZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9y
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJl
c291cmNlU2VuZFJlcXVlc3REYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVSZWNv
cmRGYWN0b3J5Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdl
ci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuaWRl
bnRpZmllckZvckluaXRpYWxSZXF1ZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1RpbWVsaW5lUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5w
cm90b3R5cGUuYWRkUmVjb3JkVG9UaW1lbGluZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZy
b21NZW1vcnlDYWNoZSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZEZhaWxU
b0xvYWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmFzc2lnbklk
ZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZE5vdGlmaWVyOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRl
bnRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3Bh
dGNoRGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3Rp
Zmllcjo6c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMpOgorICAgICAgICAqIGxvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
Y3JlYXRlUmVzb3VyY2VIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZUdyb3VwOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUdyb3VwOjpkaWRGYWlsKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmg6CisgICAgICAgICogd29ya2Vycy9EZWZhdWx0U2hhcmVk
V29ya2VyUmVwb3NpdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4
dDo6aW1wb3J0U2NyaXB0cyk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKToKKwogMjAx
MC0xMi0yOCAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3IuaWRsIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRl
eCA1NmZlYjAxM2I5ZGM0NDI2YWRkZDA2ZmYyOTg2ZWJhYzc0ODBmYzVhLi4yYzM0ZTgxNGNlYTk4
OWYwMWViNWZmZDYwMTFhZjRkOTRiMjUzMzJlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuaWRsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKQEAg
LTg0LDcgKzg0LDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICAvLyBOZXR3b3JrIEFQSQogICAg
ICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwogCi0gICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2
b2lkIGlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQg
U3RyaW5nIHVybCwgb3V0IE9iamVjdCBsb2FkZXIsIG91dCBWYWx1ZSBjYWxsU3RhY2spOworICAg
ICAgICBbbm90aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCBpZGVudGlmaWVyRm9ySW5pdGlhbFJl
cXVlc3Qob3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IFN0cmluZyB1cmwsIG91dCBPYmplY3QgbG9h
ZGVyLCBvdXQgYm9vbGVhbiBpc01haW5SZXNvdXJjZUxvYWRlciwgb3V0IFZhbHVlIGNhbGxTdGFj
ayk7CiAgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIHdpbGxTZW5kUmVxdWVz
dChvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgZG91YmxlIHRpbWUsIG91dCBPYmplY3QgcmVxdWVz
dCwgb3V0IE9iamVjdCByZWRpcmVjdFJlc3BvbnNlKTsKICAgICAgICAgW25vdGlmeSwgZG9tYWlu
PU5ldHdvcmtdIHZvaWQgbWFya1Jlc291cmNlQXNDYWNoZWQob3V0IGxvbmcgaWRlbnRpZmllcik7
CiAgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgZG91YmxlIHRpbWUsIG91dCBTdHJpbmcgcmVzb3Vy
Y2VUeXBlLCBvdXQgT2JqZWN0IHJlc3BvbnNlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCmluZGV4IGNlZDYxYzVkZDJkM2Yy
ZTk5YzA0OTIwNmYzMjk5ZDAxN2ZkZDk4MzYuLjkxODY0M2IxOTJjMDkzMzEyZTQwNjE5NjQ1ZTA4
MTkzMGIyYzMxMGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtNDgsNyArNDgsNyBAQCBJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChJbnNwZWN0b3JD
b250cm9sbAogCiB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZGlkUmVjZWl2
ZU1hbmlmZXN0UmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmRpZFJl
Y2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCAwLCByZXNwb25zZSk7CisgICAgbV9pbnNwZWN0b3JD
b250cm9sbGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQog
CiB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6dXBkYXRlQXBwbGljYXRpb25D
YWNoZVN0YXR1cyhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6U3RhdHVzIHN0YXR1cykKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggODM1NWNkZjVlYjQwMDNiNjFi
MDg5MjUxOWNjN2NlOGQ4MzRkYzBlYi4uM2I0YmI3MGNlOGFmNWUzYmE5MWE2NjJjNjVmOTc5NjY1
ZDk0ZDkxMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAg
LTE0MCw3ICsxNDAsNiBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVy
KFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQogICAgICwgbV9jbGllbnQoY2xp
ZW50KQogICAgICwgbV9vcGVuaW5nRnJvbnRlbmQoZmFsc2UpCiAgICAgLCBtX2Nzc0FnZW50KG5l
dyBJbnNwZWN0b3JDU1NBZ2VudCgpKQotICAgICwgbV9tYWluUmVzb3VyY2VJZGVudGlmaWVyKDAp
CiAgICAgLCBtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50KDApCiAgICAgLCBtX3ByZXZpb3Vz
TWVzc2FnZSgwKQogICAgICwgbV9zZXR0aW5nc0xvYWRlZChmYWxzZSkKQEAgLTc0OSw3ICs3NDgs
NiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1pdExvYWQoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlcikKICNlbmRpZgogCiAgICAgICAgIGlmIChtX2Zyb250ZW5kKSB7Ci0gICAgICAg
ICAgICBtX21haW5SZXNvdXJjZUlkZW50aWZpZXIgPSAwOwogICAgICAgICAgICAgbV9mcm9udGVu
ZC0+ZGlkQ29tbWl0TG9hZCgpOwogICAgICAgICAgICAgbV9kb21BZ2VudC0+c2V0RG9jdW1lbnQo
bV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKSk7CiAgICAgICAgIH0KQEAg
LTc2NSwzMyArNzYzLDYgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpmcmFtZURldGFjaGVk
RnJvbVBhcmVudChGcmFtZSogcm9vdEZyYW1lKQogICAgICAgICBtX3Jlc291cmNlQWdlbnQtPmZy
YW1lRGV0YWNoZWRGcm9tUGFyZW50KHJvb3RGcmFtZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIGNvbnN0IENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKLXsKLSAgICBpZiAo
IWVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZW5zdXJlU2V0dGluZ3NMb2FkZWQo
KTsKLQotICAgIGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+
ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKGxvYWRlciwgY2FjaGVkUmVzb3VyY2UpOwot
fQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVz
dCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBpZiAoIWVuYWJsZWQoKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIEFTU0VSVChtX2luc3BlY3RlZFBhZ2UpOwotCi0gICAgYm9vbCBpc01h
aW5SZXNvdXJjZSA9IGlzTWFpblJlc291cmNlTG9hZGVyKGxvYWRlciwgcmVxdWVzdC51cmwoKSk7
Ci0gICAgaWYgKGlzTWFpblJlc291cmNlKQotICAgICAgICBtX21haW5SZXNvdXJjZUlkZW50aWZp
ZXIgPSBpZGVudGlmaWVyOwotCi0gICAgZW5zdXJlU2V0dGluZ3NMb2FkZWQoKTsKLQotICAgIGlm
IChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+aWRlbnRpZmllckZv
ckluaXRpYWxSZXF1ZXN0KGlkZW50aWZpZXIsIHJlcXVlc3QudXJsKCksIGxvYWRlcik7Ci19Ci0K
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6bWFpblJlc291cmNlRmlyZWRET01Db250ZW50RXZl
bnQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgS1VSTCYgdXJsKQogewogICAgIGlmICgh
ZW5hYmxlZCgpIHx8ICFpc01haW5SZXNvdXJjZUxvYWRlcihsb2FkZXIsIHVybCkpCkBAIC04MjQs
MTA4ICs3OTUsNTMgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFJlcXVlc3Qo
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXUKICAgICBpZiAoIWVuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVxdWVzdC5zZXRSZXBvcnRMb2FkVGltaW5nKHRy
dWUpOwotCi0gICAgaWYgKG1fZnJvbnRlbmQpIHsKLSAgICAgICAgLy8gT25seSBlbmFibGUgcmF3
IGhlYWRlcnMgaWYgZnJvbnQtZW5kIGlzIGF0dGFjaGVkLCBhcyBvdGhlcndpc2Ugd2UgbWF5IGxh
Y2sKLSAgICAgICAgLy8gcGVybWlzc2lvbnMgdG8gZmV0Y2ggdGhlIGhlYWRlcnMuCi0gICAgICAg
IHJlcXVlc3Quc2V0UmVwb3J0UmF3SGVhZGVycyh0cnVlKTsKLQotICAgICAgICBpZiAobV9leHRy
YUhlYWRlcnMpIHsKLSAgICAgICAgICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IG1fZXh0cmFIZWFkZXJzLT5lbmQoKTsKLSAgICAgICAgICAgIGZvciAoSFRUUEhlYWRlck1h
cDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2V4dHJhSGVhZGVycy0+YmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQotICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKGl0LT5m
aXJzdCwgaXQtPnNlY29uZCk7Ci0gICAgICAgIH0KKyAgICBpZiAoIW1fZnJvbnRlbmQpIHsKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBib29sIGlzTWFpblJlc291cmNlID0gbV9tYWluUmVzb3VyY2VJZGVudGlmaWVyID09IGlkZW50
aWZpZXI7Ci0gICAgaWYgKG1fdGltZWxpbmVBZ2VudCkKLSAgICAgICAgbV90aW1lbGluZUFnZW50
LT53aWxsU2VuZFJlc291cmNlUmVxdWVzdChpZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSwgcmVx
dWVzdCk7Ci0KLSAgICBpZiAobV9yZXNvdXJjZUFnZW50KQotICAgICAgICBtX3Jlc291cmNlQWdl
bnQtPndpbGxTZW5kUmVxdWVzdChpZGVudGlmaWVyLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNl
KTsKLX0KKyAgICByZXF1ZXN0LnNldFJlcG9ydExvYWRUaW1pbmcodHJ1ZSk7CiAKLXZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6bWFya1Jlc291cmNlQXNDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyKQotewotICAgIGlmICghZW5hYmxlZCgpKQotICAgICAgICByZXR1cm47CisgICAgLy8g
T25seSBlbmFibGUgcmF3IGhlYWRlcnMgaWYgZnJvbnQtZW5kIGlzIGF0dGFjaGVkLCBhcyBvdGhl
cndpc2Ugd2UgbWF5IGxhY2sKKyAgICAvLyBwZXJtaXNzaW9ucyB0byBmZXRjaCB0aGUgaGVhZGVy
cy4KKyAgICByZXF1ZXN0LnNldFJlcG9ydFJhd0hlYWRlcnModHJ1ZSk7CiAKLSAgICBpZiAobV9y
ZXNvdXJjZUFnZW50KQotICAgICAgICBtX3Jlc291cmNlQWdlbnQtPm1hcmtSZXNvdXJjZUFzQ2Fj
aGVkKGlkZW50aWZpZXIpOworICAgIGlmIChtX2V4dHJhSGVhZGVycykgeworICAgICAgICBIVFRQ
SGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2V4dHJhSGVhZGVycy0+ZW5kKCk7Cisg
ICAgICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2V4dHJhSGVh
ZGVycy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAgcmVxdWVzdC5zZXRI
VFRQSGVhZGVyRmllbGQoaXQtPmZpcnN0LCBpdC0+c2Vjb25kKTsKKyAgICB9CiB9CiAKLXZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogewogICAgIGlmICghZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9y
ZXNvdXJjZUFnZW50KQotICAgICAgICBtX3Jlc291cmNlQWdlbnQtPmRpZFJlY2VpdmVSZXNwb25z
ZShpZGVudGlmaWVyLCBsb2FkZXIsIHJlc3BvbnNlKTsKLQogICAgIGlmIChyZXNwb25zZS5odHRw
U3RhdHVzQ29kZSgpID49IDQwMCkgewogICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJp
bmcoIkZhaWxlZCB0byBsb2FkIHJlc291cmNlOiB0aGUgc2VydmVyIHJlc3BvbmRlZCB3aXRoIGEg
c3RhdHVzIG9mICIsIFN0cmluZzo6bnVtYmVyKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpLCAi
ICgiLCByZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpLCAnKScpOwogICAgICAgICBhZGRDb25zb2xl
TWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBOZXR3b3JrRXJy
b3JNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIHJlc3BvbnNlLnVybCgp
LnN0cmluZygpLCBpZGVudGlmaWVyKSk7CiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
aW50IGxlbmd0aFJlY2VpdmVkKQotewotICAgIGlmICghZW5hYmxlZCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAobV9yZXNvdXJjZUFnZW50KQotICAgICAgICBtX3Jlc291cmNlQWdlbnQt
PmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGlkZW50aWZpZXIsIGxlbmd0aFJlY2VpdmVkKTsKLX0K
LQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCi17Ci0gICAgaWYgKCFlbmFibGVkKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCi0gICAgICAgIG1f
dGltZWxpbmVBZ2VudC0+ZGlkRmluaXNoTG9hZGluZ1Jlc291cmNlKGlkZW50aWZpZXIsIGZhbHNl
LCBmaW5pc2hUaW1lKTsKLQotICAgIGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVz
b3VyY2VBZ2VudC0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKLX0K
LQogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIGlmICghZW5h
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV90aW1lbGluZUFnZW50KQotICAg
ICAgICBtX3RpbWVsaW5lQWdlbnQtPmRpZEZpbmlzaExvYWRpbmdSZXNvdXJjZShpZGVudGlmaWVy
LCB0cnVlLCAwKTsKLQogICAgIFN0cmluZyBtZXNzYWdlID0gIkZhaWxlZCB0byBsb2FkIHJlc291
cmNlIjsKLSAgICAgICAgaWYgKCFlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIG1lc3NhZ2UgKz0gIjogIiArIGVycm9yLmxvY2FsaXplZERlc2NyaXB0
aW9uKCk7Ci0gICAgICAgIGFkZENvbnNvbGVNZXNzYWdlKG5ldyBDb25zb2xlTWVzc2FnZShPdGhl
ck1lc3NhZ2VTb3VyY2UsIE5ldHdvcmtFcnJvck1lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZl
bCwgbWVzc2FnZSwgZXJyb3IuZmFpbGluZ1VSTCgpLCBpZGVudGlmaWVyKSk7Ci0KLSAgICBpZiAo
bV9yZXNvdXJjZUFnZW50KQotICAgICAgICBtX3Jlc291cmNlQWdlbnQtPmRpZEZhaWxMb2FkaW5n
KGlkZW50aWZpZXIsIGVycm9yKTsKKyAgICBpZiAoIWVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9u
KCkuaXNFbXB0eSgpKQorICAgICAgICBtZXNzYWdlICs9ICI6ICIgKyBlcnJvci5sb2NhbGl6ZWRE
ZXNjcmlwdGlvbigpOworICAgIGFkZENvbnNvbGVNZXNzYWdlKG5ldyBDb25zb2xlTWVzc2FnZShP
dGhlck1lc3NhZ2VTb3VyY2UsIE5ldHdvcmtFcnJvck1lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VM
ZXZlbCwgbWVzc2FnZSwgZXJyb3IuZmFpbGluZ1VSTCgpLCBpZGVudGlmaWVyKSk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5l
TnVtYmVyKQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1M
SHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5z
aWduZWQgc2VuZExpbmVOdW1iZXIpCiB7CiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKEluc3BlY3RvclN0YXRlOjptb25p
dG9yaW5nWEhSKSkKICAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2Us
IExvZ01lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsICJYSFIgZmluaXNoZWQgbG9hZGluZzog
XCIiICsgdXJsICsgIlwiLiIsIHNlbmRMaW5lTnVtYmVyLCBzZW5kVVJMKTsKLQotICAgIGlmICht
X3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+c2V0SW5pdGlhbENvbnRl
bnQoaWRlbnRpZmllciwgc291cmNlU3RyaW5nLCAiWEhSIik7Ci19Ci0KLXZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6c2NyaXB0SW1wb3J0ZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVN0cmluZykKLXsKLSAgICBpZiAoIWVuYWJsZWQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAgICAgICAgbV9yZXNvdXJjZUFn
ZW50LT5zZXRJbml0aWFsQ29udGVudChpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcsICJTY3JpcHQi
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVTZXR0aW5nc0xvYWRlZCgp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZTU3MGM5OGRhOGMx
OWU4NDcwYzM4MmZlMzkxMTU3NjA5MzM2ZDhhNy4uYjBmMTFlM2E4OGY5ZTNjNzUxOTYzMGQxZDBm
OWFkYmVlMjVkM2E1MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApA
QCAtMTYyLDIyICsxNjIsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRDb21taXRMb2FkKERv
Y3VtZW50TG9hZGVyKik7CiAgICAgdm9pZCBmcmFtZURldGFjaGVkRnJvbVBhcmVudChGcmFtZSop
OwotICAgIHZvaWQgZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVy
KiwgY29uc3QgQ2FjaGVkUmVzb3VyY2UqKTsKIAotICAgIHZvaWQgaWRlbnRpZmllckZvckluaXRp
YWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UpOwotICAgIHZvaWQgbWFya1Jlc291cmNlQXNDYWNoZWQodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpOwotICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsKLSAgICB2b2lkIGRp
ZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJv
ciYpOwotICAgIHZvaWQgcmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsK
LSAgICB2b2lkIHNjcmlwdEltcG9ydGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VTdHJpbmcpOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgdm9p
ZCBzZXRFeHRyYUhlYWRlcnMoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KTsKIAotICAgIHZv
aWQgZW5zdXJlU2V0dGluZ3NMb2FkZWQoKTsKLQogICAgIHZvaWQgc3RhcnRUaW1lbGluZVByb2Zp
bGVyKCk7CiAgICAgdm9pZCBzdG9wVGltZWxpbmVQcm9maWxlcigpOwogICAgIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQoKSB7IHJldHVybiBtX3RpbWVsaW5lQWdlbnQuZ2V0
KCk7IH0KQEAgLTI4MywyMSArMjcyLDI2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgZGVmYXVsdEF0dGFjaGVkSGVpZ2h0OwogCiBwcml2YXRlOgotICAgIHZvaWQgZ2V0SW5z
cGVjdG9yU3RhdGUoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHN0YXRlKTsKLSAgICB2b2lkIHNl
dENvbnNvbGVNZXNzYWdlc0VuYWJsZWQoYm9vbCBlbmFibGVkKTsKLQogICAgIGZyaWVuZCBjbGFz
cyBJbnNwZWN0b3JCYWNrZW5kOwogICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjsKICAgICBmcmllbmQgY2xhc3MgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOwogICAg
IGZyaWVuZCBjbGFzcyBJbmplY3RlZFNjcmlwdEhvc3Q7CiAKKyAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOworICAgIHZvaWQgZGlkRmFpbExvYWRp
bmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAg
dm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpOworCisgICAg
dm9pZCBlbnN1cmVTZXR0aW5nc0xvYWRlZCgpOworCisgICAgdm9pZCBnZXRJbnNwZWN0b3JTdGF0
ZShSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogc3RhdGUpOworICAgIHZvaWQgc2V0Q29uc29sZU1l
c3NhZ2VzRW5hYmxlZChib29sKTsKKworICAgIHZvaWQgcG9wdWxhdGVTY3JpcHRPYmplY3RzKCk7
CisgICAgdm9pZCByZXN0b3JlRGVidWdnZXIoKTsKICAgICBlbnVtIFByb2ZpbGVyUmVzdG9yZUFj
dGlvbiB7CiAgICAgICAgIFByb2ZpbGVyUmVzdG9yZU5vQWN0aW9uID0gMCwKICAgICAgICAgUHJv
ZmlsZXJSZXN0b3JlUmVzZXRBZ2VudCA9IDEKICAgICB9OwotICAgIAotICAgIHZvaWQgcG9wdWxh
dGVTY3JpcHRPYmplY3RzKCk7Ci0gICAgdm9pZCByZXN0b3JlRGVidWdnZXIoKTsKICAgICB2b2lk
IHJlc3RvcmVQcm9maWxlcihQcm9maWxlclJlc3RvcmVBY3Rpb24gYWN0aW9uKTsKICAgICB2b2lk
IHVuYmluZEFsbFJlc291cmNlcygpOwogICAgIHZvaWQgc2V0U2VhcmNoaW5nRm9yTm9kZShib29s
IGVuYWJsZWQpOwpAQCAtMzU2LDcgKzM1MCw2IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8Tm9k
ZT4gbV9ub2RlVG9Gb2N1czsKICAgICBSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2VBZ2VudD4gbV9y
ZXNvdXJjZUFnZW50OwotICAgIHVuc2lnbmVkIGxvbmcgbV9tYWluUmVzb3VyY2VJZGVudGlmaWVy
OwogICAgIFZlY3RvcjxPd25QdHI8Q29uc29sZU1lc3NhZ2U+ID4gbV9jb25zb2xlTWVzc2FnZXM7
CiAgICAgdW5zaWduZWQgbV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudDsKICAgICBIYXNoTWFw
PFN0cmluZywgZG91YmxlPiBtX3RpbWVzOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggZjNhNzNiYTE2NTkzMjlkMTJhOGI0NWJjNmEzNDM3
YjgwMDU2NWI3Ny4uOTZmMWJkZGEzY2U3NDk0MDQ3ODIyNjU0YzNiNzNlOGNiNGQ5Mjg5NCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0z
OSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
IgorI2luY2x1ZGUgIkluc3BlY3RvclJlc291cmNlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JUaW1lbGluZUFnZW50LmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0zNzIsNiArMzczLDQwIEBAIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNhbGN1bGF0ZVN0eWxlSW1wbChjb25zdCBJbnNwZWN0b3JJ
bnN0cnVtZW50CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFJlY2FsY3VsYXRlU3R5bGUoKTsK
IH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlkZW50aWZpZXJGb3JJbml0aWFs
UmVxdWVzdEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaWMsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQoreworICAgIGlmICghaWMtPmVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlj
LT5lbnN1cmVTZXR0aW5nc0xvYWRlZCgpOworCisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdl
bnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaWMpKQorICAgICAgICBy
ZXNvdXJjZUFnZW50LT5pZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QoaWRlbnRpZmllciwgcmVx
dWVzdC51cmwoKSwgbG9hZGVyLCBpYy0+aXNNYWluUmVzb3VyY2VMb2FkZXIobG9hZGVyLCByZXF1
ZXN0LnVybCgpKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2Vu
ZFJlcXVlc3RJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVkaXJlY3RSZXNwb25zZSkKK3sKKyAgICBpYy0+d2lsbFNlbmRSZXF1ZXN0KGlkZW50aWZpZXIs
IHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGljKSkKKyAgICAgICAg
dGltZWxpbmVBZ2VudC0+d2lsbFNlbmRSZXNvdXJjZVJlcXVlc3QoaWRlbnRpZmllciwgcmVxdWVz
dCk7CisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRy
aWV2ZVJlc291cmNlQWdlbnQoaWMpKQorICAgICAgICByZXNvdXJjZUFnZW50LT53aWxsU2VuZFJl
cXVlc3QoaWRlbnRpZmllciwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Cit9CisKK3ZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptYXJrUmVzb3VyY2VBc0NhY2hlZEltcGwoSW5zcGVj
dG9yQ29udHJvbGxlciogaWMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK3sKKyAgICBpZiAo
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VB
Z2VudChpYykpCisgICAgICAgIHJlc291cmNlQWdlbnQtPm1hcmtSZXNvdXJjZUFzQ2FjaGVkKGlk
ZW50aWZpZXIpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFJl
c291cmNlRnJvbU1lbW9yeUNhY2hlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpYywgRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgY29uc3QgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQor
eworICAgIGlmICghaWMtPmVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGljLT5lbnN1
cmVTZXR0aW5nc0xvYWRlZCgpOworICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNv
dXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGljKSkKKyAgICAgICAgcmVzb3VyY2VB
Z2VudC0+ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKGxvYWRlciwgY2FjaGVkUmVzb3Vy
Y2UpOworfQorCiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlRGF0YUltcGwoSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yQ29udHJvbGxlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogewogICAg
IGludCB0aW1lbGluZUFnZW50SWQgPSAwOwpAQCAtMzg5LDcgKzQyNCw3IEBAIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbChjb25zdCBJbnNw
ZWN0b3JJbnN0cnVtCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFJlY2VpdmVSZXNvdXJjZURh
dGEoKTsKIH0KIAotSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3Bv
bnNlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOwogICAg
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5l
QWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlcik7CkBAIC0zOTcsNiArNDMyLDkgQEAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2Vp
dmVSZXNvdXJjZVJlc3AKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFJlY2VpdmVSZXNvdXJj
ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICAgICAgdGltZWxpbmVBZ2VudElk
ID0gdGltZWxpbmVBZ2VudC0+aWQoKTsKICAgICB9CisgICAgaWYgKEluc3BlY3RvclJlc291cmNl
QWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaW5zcGVjdG9yQ29u
dHJvbGxlcikpCisgICAgICAgIHJlc291cmNlQWdlbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVu
dGlmaWVyLCBsb2FkZXIsIHJlc3BvbnNlKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5kaWRS
ZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogICAgIHJldHVybiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUoaW5zcGVjdG9yQ29udHJvbGxlciwgdGltZWxpbmVBZ2Vu
dElkKTsKIH0KIApAQCAtNDA2LDYgKzQ0NCw0MiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKGNvbnN0IEluc3BlY3Rvcklucwog
ICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZSgpOwogfQog
Cit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGhJ
bXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGlu
dCBsZW5ndGhSZWNlaXZlZCkKK3sKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVz
b3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisgICAgICAgIHJlc291cmNl
QWdlbnQtPmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGlkZW50aWZpZXIsIGxlbmd0aFJlY2VpdmVk
KTsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmdJ
bXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRv
dWJsZSBmaW5pc2hUaW1lKQoreworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1l
bGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGljKSkKKyAgICAgICAgdGltZWxpbmVB
Z2VudC0+ZGlkRmluaXNoTG9hZGluZ1Jlc291cmNlKGlkZW50aWZpZXIsIGZhbHNlLCBmaW5pc2hU
aW1lKTsKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJl
dHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisgICAgICAgIHJlc291cmNlQWdlbnQtPmRpZEZpbmlz
aExvYWRpbmcoaWRlbnRpZmllciwgZmluaXNoVGltZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZ0ltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaWMs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7
CisgICAgaWMtPmRpZEZhaWxMb2FkaW5nKGlkZW50aWZpZXIsIGVycm9yKTsKKyAgICBpZiAoSW5z
cGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2Vu
dChpYykpCisgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEZpbmlzaExvYWRpbmdSZXNvdXJjZShp
ZGVudGlmaWVyLCB0cnVlLCAwKTsKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVz
b3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisgICAgICAgIHJlc291cmNl
QWdlbnQtPmRpZEZhaWxMb2FkaW5nKGlkZW50aWZpZXIsIGVycm9yKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdElt
cGwoSW5zcGVjdG9yQ29udHJvbGxlciogaWMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKQoreworICAgIGljLT5yZXNvdXJjZVJl
dHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodXJsLCBzZW5kVVJMLCBzZW5kTGluZU51bWJlcik7Cisg
ICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJl
c291cmNlQWdlbnQoaWMpKQorICAgICAgICByZXNvdXJjZUFnZW50LT5zZXRJbml0aWFsQ29udGVu
dChpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcsICJYSFIiKTsKK30KKwordm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBp
YywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZykK
K3sKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJp
ZXZlUmVzb3VyY2VBZ2VudChpYykpCisgICAgICAgIHJlc291cmNlQWdlbnQtPnNldEluaXRpYWxD
b250ZW50KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZywgIlNjcmlwdCIpOworfQorCiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsV3Jp
dGVIVE1MSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCB1bnNp
Z25lZCBpbnQgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgc3RhcnRMaW5lKQogewogICAgIGludCB0aW1l
bGluZUFnZW50SWQgPSAwOwpAQCAtNDkwLDYgKzU2NCwxMSBAQCBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJldHJpZXZlVGltZWxpbmVBZ2VudChjb25z
dCBJbgogICAgIHJldHVybiAwOwogfQogCitJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnJldHJpZXZlUmVzb3VyY2VBZ2VudChJbnNwZWN0b3JDb250cm9s
bGVyKiBpYykKK3sKKyAgICByZXR1cm4gaWMtPm1fcmVzb3VyY2VBZ2VudC5nZXQoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gIUVOQUJMRShJTlNQRUNUT1IpCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDdmMjQx
YzQxMTg0YTQxZmI2N2UwMDIyOWY5MGMxMGQ3Y2ZiYTU2M2UuLmJmN2JkM2FiYWFjODMyNmQ4ZTEz
ZTRhMjc1ZjMyYzIyYWY2YWU0MzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oCkBAIC00MSwxMiArNDEsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQ2hhcmFjdGVyRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBFdmVudENvbnRleHQ7
CitjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CitjbGFz
cyBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDsK
IGNsYXNzIEtVUkw7CiBjbGFzcyBOb2RlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBY
TUxIdHRwUmVxdWVzdDsKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKQEAgLTkwLDEwICs5Mywy
MCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlkUGFpbnQoY29uc3QgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSB3aWxsUmVjYWxjdWxhdGVTdHlsZShEb2N1bWVudCopOwogICAgIHN0YXRpYyB2b2lk
IGRpZFJlY2FsY3VsYXRlU3R5bGUoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
Jik7CisKKyAgICBzdGF0aWMgdm9pZCBpZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QoRnJhbWUq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KEZyYW1lKiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICBzdGF0aWMgdm9pZCBtYXJrUmVzb3VyY2VB
c0NhY2hlZChQYWdlKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgdm9p
ZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoUGFnZSosIERvY3VtZW50TG9hZGVyKiwg
Y29uc3QgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIHdpbGxSZWNlaXZlUmVzb3VyY2VEYXRhKEZyYW1lKiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VEYXRhKGNvbnN0
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgd2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1lKiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSk7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVjZWl2
ZVJlc291cmNlUmVzcG9uc2UoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3Vt
ZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSYpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKEZyYW1lKiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpOworICAgIHN0YXRp
YyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGRvdWJsZSBmaW5pc2hUaW1lKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFt
ZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAg
IHN0YXRpYyB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5z
aWduZWQgc2VuZExpbmVOdW1iZXIpOworICAgIHN0YXRpYyB2b2lkIHNjcmlwdEltcG9ydGVkKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlU3RyaW5nKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIHdpbGxXcml0ZUhUTUwoRG9jdW1lbnQqLCB1bnNpZ25lZCBpbnQgbGVuZ3RoLCB1bnNp
Z25lZCBpbnQgc3RhcnRMaW5lKTsKICAgICBzdGF0aWMgdm9pZCBkaWRXcml0ZUhUTUwoY29uc3Qg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiwgdW5zaWduZWQgaW50IGVuZExpbmUpOwog
CkBAIC0xNDcsMTAgKzE2MCwxOSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZFBhaW50
SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNhbGN1bGF0ZVN0eWxlSW1wbChJ
bnNwZWN0b3JDb250cm9sbGVyKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjYWxjdWxhdGVTdHls
ZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CisgICAgc3RhdGlj
IHZvaWQgaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0SW1wbChJbnNwZWN0b3JDb250cm9sbGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kUmVxdWVzdEltcGwoSW5zcGVj
dG9yQ29udHJvbGxlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgc3RhdGlj
IHZvaWQgbWFya1Jlc291cmNlQXNDYWNoZWRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIpOworICAgIHN0YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZy
b21NZW1vcnlDYWNoZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIERvY3VtZW50TG9hZGVyKiwg
Y29uc3QgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIHdpbGxSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbChJbnNwZWN0b3JDb250cm9sbGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZl
UmVzb3VyY2VEYXRhSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsK
LSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNlaXZlUmVz
b3VyY2VSZXNwb25zZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpOworICAgIHN0YXRpYyBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNl
SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1
bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llJik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGhJbXBs
KEluc3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludCBsZW5n
dGhSZWNlaXZlZCk7CisgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zcGVj
dG9yQ29udHJvbGxlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRp
bWUpOworICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nSW1wbChJbnNwZWN0b3JDb250cm9s
bGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7Cisg
ICAgc3RhdGljIHZvaWQgcmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0SW1wbChJbnNw
ZWN0b3JDb250cm9sbGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwg
dW5zaWduZWQgc2VuZExpbmVOdW1iZXIpOworICAgIHN0YXRpYyB2b2lkIHNjcmlwdEltcG9ydGVk
SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVN0cmluZyk7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSB3aWxsV3JpdGVIVE1MSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWdu
ZWQgaW50IGxlbmd0aCwgdW5zaWduZWQgaW50IHN0YXJ0TGluZSk7CiAgICAgc3RhdGljIHZvaWQg
ZGlkV3JpdGVIVE1MSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCB1
bnNpZ25lZCBpbnQgZW5kTGluZSk7CiAKQEAgLTE3MSw2ICsxOTMsNyBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyB2b2lkIGNhbmNlbFBhdXNlT25OYXRpdmVFdmVudChJbnNwZWN0b3JDb250cm9sbGVy
Kik7CiAgICAgc3RhdGljIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHJldHJpZXZlVGltZWxpbmVB
Z2VudChJbnNwZWN0b3JDb250cm9sbGVyKik7CiAgICAgc3RhdGljIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIHJldHJpZXZlVGltZWxpbmVBZ2VudChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUmKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmV0cmlldmVS
ZXNvdXJjZUFnZW50KEluc3BlY3RvckNvbnRyb2xsZXIqKTsKIAogICAgIHN0YXRpYyBpbnQgc19m
cm9udGVuZENvdW50ZXI7CiAjZW5kaWYKQEAgLTQyOSw2ICs0NTIsMzggQEAgaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNhbGN1bGF0ZVN0eWxlKGNvbnN0IEluc3Bl
Y3Rvckluc3RydW0KICNlbmRpZgogfQogCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChGcmFtZSogZnJhbWUsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKCFmcmFt
ZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpYyA9IGZy
YW1lLT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgaWRlbnRpZmllckZv
ckluaXRpYWxSZXF1ZXN0SW1wbChpYywgaWRlbnRpZmllciwgbG9hZGVyLCByZXF1ZXN0KTsKKyNl
bmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5k
UmVxdWVzdChGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
KQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIq
IGljID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgd2lsbFNl
bmRSZXF1ZXN0SW1wbChpYywgaWRlbnRpZmllciwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7
CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptYXJr
UmVzb3VyY2VBc0NhY2hlZChQYWdlKiBwYWdlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit7
CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBtYXJrUmVzb3VyY2VBc0NhY2hlZEltcGwocGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBpZGVudGlmaWVyKTsgCisjZW5kaWYKK30KKworaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVt
b3J5Q2FjaGUoUGFnZSogcGFnZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgZGlkTG9h
ZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlSW1wbChwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCks
IGxvYWRlciwgcmVzb3VyY2UpOworI2VuZGlmCit9CisKIGlubGluZSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291
cmNlRGF0YShGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIHsKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQpAQCAtNDQ2LDExICs1MDEsMTEgQEAgaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VEYXRhKGNvbnN0IEluc3BlY3Rv
ckluc3QKICNlbmRpZgogfQogCi1pbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZy
YW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKK2lubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoRnJhbWUq
IGZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCiAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBp
bnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQotICAgICAgICByZXR1cm4gd2lsbFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBpZGVudGlmaWVy
LCByZXNwb25zZSk7CisgICAgICAgIHJldHVybiB3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJ
bXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGlkZW50aWZpZXIsIGxvYWRlciwgcmVzcG9uc2UpOwog
I2VuZGlmCiAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwogfQpA
QCAtNDYzLDYgKzUxOCw0NiBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEluc3BlY3RvcgogI2VuZGlmCiB9CiAK
K2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZUNvbnRlbnRM
ZW5ndGgoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludCBsZW5ndGhS
ZWNlaXZlZCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1l
KGZyYW1lKSkKKyAgICAgICAgZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGhJbXBsKGluc3BlY3RvckNv
bnRyb2xsZXIsIGlkZW50aWZpZXIsIGxlbmd0aFJlY2VpdmVkKTsKKyNlbmRpZgorfQorCitpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcoRnJhbWUq
IGZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQorewor
I2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQorICAg
ICAgICBkaWRGaW5pc2hMb2FkaW5nSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBpZGVudGlmaWVy
LCBmaW5pc2hUaW1lKTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyNpZiBFTkFCTEUoSU5TUEVD
VE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0g
aW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgZGlkRmFpbExvYWRp
bmdJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGlkZW50aWZpZXIsIGVycm9yKTsKKyNlbmRpZgor
fQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlc291cmNlUmV0cmll
dmVkQnlYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJl
cikKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyID0gY29udGV4dC0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQor
ICAgICAgICByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3RJbXBsKGluc3BlY3RvckNv
bnRyb2xsZXIsIGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZywgdXJsLCBzZW5kVVJMLCBzZW5kTGlu
ZU51bWJlcik7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpzY3JpcHRJbXBvcnRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKQoreworI2lm
IEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIgPSBjb250ZXh0LT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgIHNj
cmlwdEltcG9ydGVkSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBpZGVudGlmaWVyLCBzb3VyY2VT
dHJpbmcpOworI2VuZGlmCit9CisKIGlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsV3JpdGVIVE1MKERvY3VtZW50KiBkb2N1
bWVudCwgdW5zaWduZWQgaW50IGxlbmd0aCwgdW5zaWduZWQgaW50IHN0YXJ0TGluZSkKIHsKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmNwcAppbmRleCA4ZjU0NTc4ODNjYTdjMzJhMTY2OTZmYWJjMGNkNWE4YWZjYjFiNzA5
Li4yYzAxMTEyOTk5NDg2NjIwZTFjZjUyN2Y3YzI0ZGUzMTBhMDMyM2I4IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtMjgzLDcgKzI4Myw3IEBA
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6On5JbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkKIHsKIH0K
IAotdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVl
c3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiB1cmwsIERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIpCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmlkZW50aWZpZXJGb3JJ
bml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmIHVybCwg
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgYm9vbCBpc01haW5SZXNvdXJjZSkKIHsKICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBsb2FkZXJPYmplY3QgPSBidWlsZE9iamVjdEZvckRvY3VtZW50
TG9hZGVyKGxvYWRlcik7CiAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrID0g
Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRv
Q2FwdHVyZSwgdHJ1ZSk7CkBAIC0yOTIsNyArMjkyLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlm
aWUKICAgICAgICAgY2FsbFN0YWNrVmFsdWUgPSBjYWxsU3RhY2stPmJ1aWxkSW5zcGVjdG9yT2Jq
ZWN0KCk7CiAgICAgZWxzZQogICAgICAgICBjYWxsU3RhY2tWYWx1ZSA9IEluc3BlY3RvclZhbHVl
OjpudWxsKCk7Ci0gICAgbV9mcm9udGVuZC0+aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KGlk
ZW50aWZpZXIsIHVybC5zdHJpbmcoKSwgbG9hZGVyT2JqZWN0LCBjYWxsU3RhY2tWYWx1ZSk7Cisg
ICAgbV9mcm9udGVuZC0+aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KGlkZW50aWZpZXIsIHVy
bC5zdHJpbmcoKSwgbG9hZGVyT2JqZWN0LCBpc01haW5SZXNvdXJjZSwgY2FsbFN0YWNrVmFsdWUp
OwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuaAppbmRleCAxZTc3ZDU4Yzg1MzViZDdlYTY2MzhkNjY0NjRkMzZk
NjlmODVlNTE1Li5mM2YzMjExYjI5MzA2YmIyNmZjNmNjN2Q3YzJlY2VhOWNlMGUxYjE2IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC03Nyw3ICs3Nyw3
IEBAIHB1YmxpYzoKIAogICAgIH5JbnNwZWN0b3JSZXNvdXJjZUFnZW50KCk7CiAKLSAgICB2b2lk
IGlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IEtVUkwmLCBEb2N1bWVudExvYWRlciopOworICAgIHZvaWQgaWRlbnRpZmllckZvckluaXRp
YWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYsIERvY3VtZW50
TG9hZGVyKiwgYm9vbCBpc01haW5SZXNvdXJjZSk7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3Qo
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKICAgICB2b2lkIG1hcmtSZXNvdXJjZUFzQ2Fj
aGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbGFvZGVyLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwCmluZGV4IDc0NzM5ZTE4ZGFkNDVlM2I2NDE4NjRlNTYzYzZiNzQ2NTA5OTU4
MzUuLjA4MWE1ZjBkYmY0MzBjOTA2Y2FlZDMzNzkzM2RiZGJjNmNiZjdiMmIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC0yMDksMTIgKzIwOSwx
MSBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFNjaGVkdWxlUmVzb3VyY2VSZXF1
ZXN0KGNvbnN0IFN0cmluZyYgdXJsKQogICAgIGFkZFJlY29yZFRvVGltZWxpbmUocmVjb3JkLnJl
bGVhc2UoKSwgU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3RUaW1lbGluZVJlY29yZFR5cGUpOwogfQog
Ci12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxTZW5kUmVzb3VyY2VSZXF1ZXN0KHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgYm9vbCBpc01haW5SZXNvdXJjZSwKLSAgICBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Ondp
bGxTZW5kUmVzb3VyY2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIHB1c2hHQ0V2ZW50UmVjb3JkcygpOwogICAg
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29yZCA9IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6
Y3JlYXRlR2VuZXJpY1JlY29yZChXVEY6OmN1cnJlbnRUaW1lTVMoKSk7Ci0gICAgcmVjb3JkLT5z
ZXRPYmplY3QoImRhdGEiLCBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJlc291cmNlU2Vu
ZFJlcXVlc3REYXRhKGlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlLCByZXF1ZXN0KSk7CisgICAg
cmVjb3JkLT5zZXRPYmplY3QoImRhdGEiLCBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJl
c291cmNlU2VuZFJlcXVlc3REYXRhKGlkZW50aWZpZXIsIHJlcXVlc3QpKTsKICAgICByZWNvcmQt
PnNldE51bWJlcigidHlwZSIsIFJlc291cmNlU2VuZFJlcXVlc3RUaW1lbGluZVJlY29yZFR5cGUp
OwogICAgIHNldEhlYXBTaXplU3RhdGlzdGljKHJlY29yZC5nZXQoKSk7CiAgICAgbV9mcm9udGVu
ZC0+YWRkUmVjb3JkVG9UaW1lbGluZShyZWNvcmQucmVsZWFzZSgpKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCBiYzFlMDI3YjRlNGZjYjQ2Y2UyMDRk
ZGQyOGE3Yjc1MzRiYzU3MTUxLi4zM2UyNzM3ZmM2Mjk5MzJlNTIyNzBjMTA1YWVkMGYzMDQ4Mzky
ZmM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCkBAIC0x
MTksNyArMTE5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTWFya0xvYWRFdmVudCgpOwogCiAg
ICAgdm9pZCBkaWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCk7Ci0g
ICAgdm9pZCB3aWxsU2VuZFJlc291cmNlUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBib29sIGlzTWFp
blJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIHdpbGxTZW5kUmVz
b3VyY2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAg
IHZvaWQgd2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKCk7
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nUmVzb3VyY2UodW5zaWduZWQgbG9uZywgYm9vbCBk
aWRGYWlsLCBkb3VibGUgZmluaXNoVGltZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVS
ZWNvcmRGYWN0b3J5LmNwcAppbmRleCA3ZjMzOWNkZWEzM2E2MTliNzhiNmY0MTQ4MTFlMTBkMTQ3
N2NlNDAyLi5kZDdmMmJlNTExZWI5MjRiM2FkNWMzMDg5ZDJjNTdjMDFjMjcxYWE5IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKQEAgLTEyOSwxMyArMTI5
LDEyIEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6
OmNyZWF0ZVNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0CiAgICAgcmV0dXJuIGRhdGEucmVsZWFzZSgp
OwogfQogCi1QYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5
OjpjcmVhdGVSZXNvdXJjZVNlbmRSZXF1ZXN0RGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGJvb2wgaXNNYWluUmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK1Bh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJl
c291cmNlU2VuZFJlcXVlc3REYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRh
dGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGRhdGEtPnNldE51bWJlcigiaWRl
bnRpZmllciIsIGlkZW50aWZpZXIpOwogICAgIGRhdGEtPnNldFN0cmluZygidXJsIiwgcmVxdWVz
dC51cmwoKS5zdHJpbmcoKSk7CiAgICAgZGF0YS0+c2V0U3RyaW5nKCJyZXF1ZXN0TWV0aG9kIiwg
cmVxdWVzdC5odHRwTWV0aG9kKCkpOwotICAgIGRhdGEtPnNldEJvb2xlYW4oImlzTWFpblJlc291
cmNlIiwgaXNNYWluUmVzb3VyY2UpOwogICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggYi9X
ZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaAppbmRleCA1ZDRjYjc3NDNm
MmZkODY0ZDJjYjdmMDYyMzViMzU0N2M5ZmE3MzI2Li5mYWZlYWU2ZjhlYTI3NDg3YzE1ZjdmNDcy
MmViYjRlYzIwMjY5MTcyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJl
Y29yZEZhY3RvcnkuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3Rv
cnkuaApAQCAtNjQsOCArNjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVNYXJrVGltZWxpbmVEYXRhKGNv
bnN0IFN0cmluZyYpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gY3JlYXRlUmVzb3VyY2VTZW5kUmVxdWVzdERhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LAotICAgICAgICAgICAgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlUmVz
b3VyY2VTZW5kUmVxdWVzdERhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKTsKIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGNyZWF0ZVNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0RGF0YShjb25zdCBTdHJpbmcmKTsKIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpz
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzCmluZGV4IGI4
Y2Q0ODFmYWFiOWIyYThmMDY3MmYwY2RiMmVmZjZkZTc0NjAyMzguLmViNTIzZGU3YmU1ZWU5ODk0
ZjI4NWM0YTliMDVhNjI5ZWE1Mjc4ZTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9OZXR3b3JrTWFuYWdlci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvTmV0d29ya01hbmFnZXIuanMKQEAgLTg2LDggKzg2LDExIEBAIFdlYkluc3BlY3Rvci5OZXR3
b3JrTWFuYWdlci51cGRhdGVSZXNvdXJjZVdpdGhDYWNoZWRSZXNvdXJjZSA9IGZ1bmN0aW9uKHJl
c291cmNlCiB9CiAKIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUgPSB7Ci0g
ICAgaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0OiBmdW5jdGlvbihpZGVudGlmaWVyLCB1cmws
IGxvYWRlciwgY2FsbFN0YWNrKQorICAgIGlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdDogZnVu
Y3Rpb24oaWRlbnRpZmllciwgdXJsLCBsb2FkZXIsIGlzTWFpblJlc291cmNlLCBjYWxsU3RhY2sp
CiAgICAgeworICAgICAgICBpZiAoaXNNYWluUmVzb3VyY2UpCisgICAgICAgICAgICB0aGlzLm1h
aW5SZXNvdXJjZUlkZW50aWZpZXIgPSBpZGVudGlmaWVyOworCiAgICAgICAgIHZhciByZXNvdXJj
ZSA9IHRoaXMuX2NyZWF0ZVJlc291cmNlKGlkZW50aWZpZXIsIHVybCwgbG9hZGVyLCBjYWxsU3Rh
Y2spOwogCiAgICAgICAgIC8vIEl0IGlzIGltcG9ydGFudCB0byBiaW5kIHJlc291cmNlIHVybCBl
YXJseSAoYmVmb3JlIHNjcmlwdHMgY29tcGlsZSkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9UaW1lbGluZVBhbmVsLmpzCmluZGV4IGE2NjFiNzU3YTIyYTRkMTk0MjE0M2JlNmZkMjRk
YzM4MzM2NzA4N2MuLmI4NjU2N2JlMDIxYWE4ZGEyZTFjMzVhMDdkZmMyOGMwYTJkMDRhYTkgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCkBAIC0yOTcs
OCArMjk3LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogCiAg
ICAgYWRkUmVjb3JkVG9UaW1lbGluZTogZnVuY3Rpb24ocmVjb3JkKQogICAgIHsKLSAgICAgICAg
aWYgKHJlY29yZC50eXBlID09IFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUu
UmVzb3VyY2VTZW5kUmVxdWVzdCAmJiByZWNvcmQuZGF0YS5pc01haW5SZXNvdXJjZSkgewotICAg
ICAgICAgICAgaWYgKHRoaXMuX21haW5SZXNvdXJjZUlkZW50aWZpZXIgIT0gcmVjb3JkLmRhdGEu
aWRlbnRpZmllcikgeworICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT0gV2ViSW5zcGVjdG9yLlRp
bWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5SZXNvdXJjZVNlbmRSZXF1ZXN0KSB7CisgICAgICAgICAg
ICB2YXIgaXNNYWluUmVzb3VyY2UgPSAocmVjb3JkLmRhdGEuaWRlbnRpZmllciA9PT0gV2ViSW5z
cGVjdG9yLm5ldHdvcmtNYW5hZ2VyLm1haW5SZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICAg
ICAgaWYgKGlzTWFpblJlc291cmNlICYmIHRoaXMuX21haW5SZXNvdXJjZUlkZW50aWZpZXIgIT09
IHJlY29yZC5kYXRhLmlkZW50aWZpZXIpIHsKICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgbG9h
ZGluZyBuZXcgbWFpbiByZXNvdXJjZSAtPiBjbGVhciB0aGUgcGFuZWwuIENoZWNrIGFib3ZlIGlz
IG5lY2Vzc2FyeSBzaW5jZQogICAgICAgICAgICAgICAgIC8vIHRoZXJlIG1heSBiZSBzZXZlcmFs
IHJlc291cmNlIGxvYWRzIHdpdGggbWFpbiByZXNvdXJjZSBtYXJrZXIgdXBvbiByZWRpcmVjdHMs
IHJlZGlyZWN0cyBhcmUgcmVwb3J0ZWQgd2l0aAogICAgICAgICAgICAgICAgIC8vIHRoZSBvcmln
aW5hbCBpZGVudGlmaWVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGVmNjkyYjY3NGQyNTVm
YzEzNThmMTM0NDljYTBhMzAyMmMwOGEwNmEuLjI5MTVlZDVmY2RkOTZiZmMwYzM2MzIxNjg5ZjFi
YTlkNjA0MTA0ZGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAor
KysgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTcwLDYgKzcwLDcgQEAKICNp
bmNsdWRlICJJY29uRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJY29uTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiTWFpblJlc291cmNlTG9hZGVyLmgiCkBAIC0zMDA1LDkgKzMwMDYsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShjb25zdCBD
YWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghcGFn
ZS0+YXJlTWVtb3J5Q2FjaGVDbGllbnRDYWxsc0VuYWJsZWQoKSkgewotI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCi0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlkTG9hZFJlc291
cmNlRnJvbU1lbW9yeUNhY2hlKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIHJlc291cmNlKTsKLSNl
bmRpZgorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExvYWRSZXNvdXJjZUZy
b21NZW1vcnlDYWNoZShwYWdlLCBtX2RvY3VtZW50TG9hZGVyLmdldCgpLCByZXNvdXJjZSk7CiAg
ICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPnJlY29yZE1lbW9yeUNhY2hlTG9hZEZvckZ1dHVyZUNs
aWVudE5vdGlmaWNhdGlvbihyZXNvdXJjZS0+dXJsKCkpOwogICAgICAgICBtX2RvY3VtZW50TG9h
ZGVyLT5kaWRUZWxsQ2xpZW50QWJvdXRMb2FkKHJlc291cmNlLT51cmwoKSk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTMwMTUsOSArMzAxNCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRlZFJlc291
cmNlRnJvbU1lbW9yeUNhY2hlKGNvbnN0IENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIAogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHJlc291cmNlLT51cmwoKSk7CiAgICAgaWYgKG1fY2xp
ZW50LT5kaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShtX2RvY3VtZW50TG9h
ZGVyLmdldCgpLCByZXF1ZXN0LCByZXNvdXJjZS0+cmVzcG9uc2UoKSwgcmVzb3VyY2UtPmVuY29k
ZWRTaXplKCkpKSB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgcGFnZS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5kaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUobV9kb2N1bWVu
dExvYWRlci5nZXQoKSwgcmVzb3VyY2UpOwotI2VuZGlmCisgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKHBhZ2UsIG1fZG9jdW1l
bnRMb2FkZXIuZ2V0KCksIHJlc291cmNlKTsKICAgICAgICAgbV9kb2N1bWVudExvYWRlci0+ZGlk
VGVsbENsaWVudEFib3V0TG9hZChyZXNvdXJjZS0+dXJsKCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMzAyNSw5ICszMDIyLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZGVkUmVzb3Vy
Y2VGcm9tTWVtb3J5Q2FjaGUoY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllcjsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIHJl
cXVlc3RGcm9tRGVsZWdhdGUocmVxdWVzdCwgaWRlbnRpZmllciwgZXJyb3IpOwotI2lmIEVOQUJM
RShJTlNQRUNUT1IpCi0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5tYXJrUmVzb3Vy
Y2VBc0NhY2hlZChpZGVudGlmaWVyKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWQocGFnZSwgaWRlbnRpZmllcik7CiAgICAgbm90aWZp
ZXIoKS0+c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQo
KSwgaWRlbnRpZmllciwgcmVzb3VyY2UtPnJlc3BvbnNlKCksIHJlc291cmNlLT5lbmNvZGVkU2l6
ZSgpLCBlcnJvcik7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE5vdGlmaWVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcApp
bmRleCBkMDAyZWYzOGNiZjhlMmQ5MGM4ZTAzYjAwNzkzZTc0ZGViYjFlMmZlLi5mZTc0OWNiN2Q2
YTFlZDdmZTkxZDY2ZGU1MzU2N2RjNzU5MTFlZWM5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkTm90aWZpZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCi0j
aW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNr
ZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlci5oIgpAQCAtNjYsMTIgKzY2LDE2IEBAIHZv
aWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUxvYWRlciog
bG9hZGVyLCBSZXNvdXJjZVJlcXVlCiAKIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByKQogeworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShsb2Fk
ZXItPmZyYW1lTG9hZGVyKCktPmZyYW1lKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCBsb2FkZXIt
PmRvY3VtZW50TG9hZGVyKCksIHIpOworCiAgICAgbG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5h
ZGRSZXNwb25zZShyKTsKIAogICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQog
ICAgICAgICBwYWdlLT5wcm9ncmVzcygpLT5pbmNyZW1lbnRQcm9ncmVzcyhsb2FkZXItPmlkZW50
aWZpZXIoKSwgcik7CiAKICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShsb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCByKTsKKworICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoY29va2llKTsKIH0K
IAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2Fk
ZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgaW50IGxlbmd0aFJlY2Vp
dmVkKQpAQCAtOTcsMjAgKzEwMSwxNCBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRG
YWlsVG9Mb2FkKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlRQogICAgIGlm
ICghZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+
ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhsb2FkZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRlci0+
aWRlbnRpZmllcigpLCBlcnJvcik7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChQ
YWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQotICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCktPmRpZEZhaWxMb2FkaW5nKGxvYWRlci0+aWRlbnRpZmllcigpLCBlcnJvcik7Ci0j
ZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKG1fZnJh
bWUsIGxvYWRlci0+aWRlbnRpZmllcigpLCBlcnJvcik7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2Fk
Tm90aWZpZXI6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogewogICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+YXNzaWduSWRl
bnRpZmllclRvSW5pdGlhbFJlcXVlc3QoaWRlbnRpZmllciwgbG9hZGVyLCByZXF1ZXN0KTsKIAot
I2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCkpCi0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+aWRlbnRpZmllckZvcklu
aXRpYWxSZXF1ZXN0KGlkZW50aWZpZXIsIGxvYWRlciwgcmVxdWVzdCk7Ci0jZW5kaWYKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChtX2Zy
YW1lLCBpZGVudGlmaWVyLCBsb2FkZXIsIHJlcXVlc3QpOwogfQogCiB2b2lkIFJlc291cmNlTG9h
ZE5vdGlmaWVyOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlciogbG9hZGVy
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKQEAgLTEyNCw0MCArMTIyLDI2
IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnCiAgICAgaWYgKCFyZXF1ZXN0LmlzTnVsbCgpICYm
IG9sZFJlcXVlc3RVUkwgIT0gcmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkpCiAgICAgICAg
IG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5kaWRUZWxsQ2xpZW50QWJvdXRM
b2FkKHJlcXVlc3QudXJsKCkpOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoUGFn
ZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLT53aWxsU2VuZFJlcXVlc3QoaWRlbnRpZmllciwgcmVxdWVzdCwgcmVkaXJlY3RSZXNw
b25zZSk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVx
dWVzdChtX2ZyYW1lLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKIH0K
IAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2Uo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByKQogewogICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+
ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UobG9hZGVyLCBpZGVudGlmaWVyLCByKTsKLQotI2lm
IEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkp
Ci0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNl
KGlkZW50aWZpZXIsIGxvYWRlciwgcik7Ci0jZW5kaWYKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRO
b3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChEb2N1bWVudExvYWRlciog
bG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludCBsZW5ndGgpCiB7CiAgICAgbV9m
cmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3Ro
KGxvYWRlciwgaWRlbnRpZmllciwgbGVuZ3RoKTsKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0g
ICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS0+ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoaWRlbnRpZmllciwgbGVu
Z3RoKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZUNv
bnRlbnRMZW5ndGgobV9mcmFtZSwgaWRlbnRpZmllciwgbGVuZ3RoKTsKIH0KIAogdm9pZCBSZXNv
dXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCiB7
CiAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERpZEZpbmlzaExvYWRp
bmcobG9hZGVyLCBpZGVudGlmaWVyKTsKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYg
KFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKLSNl
bmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhtX2Zy
YW1lLCBpZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWROb3Rp
Zmllcjo6ZGlzcGF0Y2hUcmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBQYWdlKiBvbGRQYWdlKQpAQCAtMTcwLDggKzE1NCwxMSBAQCB2b2lkIFJl
c291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaFRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBh
Z2UodW5zaWduZWQgbG9uZwogCiB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWlu
aW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBpbnQgbGVuZ3Ro
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBpZiAoIXJlc3BvbnNlLmlzTnVs
bCgpKQorICAgIGlmICghcmVzcG9uc2UuaXNOdWxsKCkpIHsKKyAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKSwg
aWRlbnRpZmllciwgbG9hZGVyLCByZXNwb25zZSk7CiAgICAgICAgIGRpc3BhdGNoRGlkUmVjZWl2
ZVJlc3BvbnNlKGxvYWRlciwgaWRlbnRpZmllciwgcmVzcG9uc2UpOworICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGNvb2tpZSk7Cisg
ICAgfQogCiAgICAgaWYgKGxlbmd0aCA+IDApCiAgICAgICAgIGRpc3BhdGNoRGlkUmVjZWl2ZUNv
bnRlbnRMZW5ndGgobG9hZGVyLCBpZGVudGlmaWVyLCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IGRlMzk5ODY2NWNiZWJhYzE0MGMzNGI4MDFmYzVkNDYyMjc1ODBiNDEu
LmVhMGQwMmE4ZjgzNDk0MzZhY2MyMWQyNWU0ZDJkNmFjZTU0NWI2YjcgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTQyMCw5ICs0MjAsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JgogICAgIGlmIChkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXli
ZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKHRoaXMsIHJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJu
OwogI2VuZGlmCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1fZnJh
bWUuZ2V0KCksIGlkZW50aWZpZXIoKSwgcmVzcG9uc2UpOwogICAgIGRpZFJlY2VpdmVSZXNwb25z
ZShyZXNwb25zZSk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVz
b3VyY2VSZXNwb25zZShjb29raWUpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGlu
dCBsZW5ndGhSZWNlaXZlZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDY0NTRiOTAzNGNhMmEwMTQxNzdmZDU1NDlkNTAyZjg3
MDVhZDQzYjEuLmRhYzU0ZDVhM2M0MWFmZWNjZmRiMDExOTNlN2I2ZmZmYTIxYWVkNDkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAK
KysrIGIvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApA
QCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk1haW5SZXNvdXJjZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIk1hbmlmZXN0UGFyc2VyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNDk2LDI1ICs0
OTcsMTMgQEAgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gQXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpjcmVhdGVSZXNvdXJjZUhhbmRsZShjb25zdCBLVVIKICAgICAvLyBCZWNhdXNlIHdpbGxTZW5k
UmVxdWVzdCBvbmx5IGdldHMgY2FsbGVkIGR1cmluZyByZWRpcmVjdHMsIHdlIGluaXRpYWxpemUK
ICAgICAvLyB0aGUgaWRlbnRpZmllciBhbmQgdGhlIGZpcnN0IHdpbGxTZW5kUmVxdWVzdCBoZXJl
LgogICAgIG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciA9IG1fZnJhbWUtPnBhZ2UoKS0+cHJv
Z3Jlc3MoKS0+Y3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwotICAgIGlmIChQYWdlKiBwYWdlID0g
bV9mcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIgPSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7Ci0gICAgICAgIGluc3Bl
Y3RvckNvbnRyb2xsZXItPmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChtX2N1cnJlbnRSZXNv
dXJjZUlkZW50aWZpZXIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLCBoYW5k
bGUtPmZpcnN0UmVxdWVzdCgpKTsKLSAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJl
c3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwotICAgICAgICBpbnNwZWN0b3JDb250cm9sbGVy
LT53aWxsU2VuZFJlcXVlc3QobV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCByZXF1ZXN0LCBy
ZWRpcmVjdFJlc3BvbnNlKTsKLSAgICB9CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpp
ZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QobV9mcmFtZSwgbV9jdXJyZW50UmVzb3VyY2VJZGVu
dGlmaWVyLCBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSwgaGFuZGxlLT5maXJz
dFJlcXVlc3QoKSk7CisgICAgUmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlID0gUmVz
b3VyY2VSZXNwb25zZSgpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRS
ZXF1ZXN0KG1fZnJhbWUsIG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwgcmVxdWVzdCwgcmVk
aXJlY3RSZXNwb25zZSk7CiAjZW5kaWYKICAgICByZXR1cm4gaGFuZGxlOwogfQogCi0jaWYgRU5B
QkxFKElOU1BFQ1RPUikKLXZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjp3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCi17Ci0gICAgLy8gVGhpcyBvbmx5IGdldHMg
Y2FsbGVkIGJ5IFJlc291cmNlSGFuZGxlTWFjIGlmIHRoZXJlIGlzIGEgcmVkaXJlY3QuCi0gICAg
aWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS0+d2lsbFNlbmRSZXF1ZXN0KG1fY3VycmVudFJlc291cmNlSWRlbnRpZmll
ciwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxl
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQpAQCAtNTIyLDggKzUxMSwxMSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlcwogICAgICAg
ICBpZiAoaGFuZGxlID09IG1fbWFuaWZlc3RIYW5kbGUpIHsKICAgICAgICAgICAgIGlmIChJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQqIGFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA9IHBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YXBwbGljYXRpb25DYWNoZUFnZW50KCkpCiAgICAgICAg
ICAgICAgICAgYXBwbGljYXRpb25DYWNoZUFnZW50LT5kaWRSZWNlaXZlTWFuaWZlc3RSZXNwb25z
ZShtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIHJlc3BvbnNlKTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpZFJlY2VpdmVSZXNw
b25zZShtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1
bWVudExvYWRlcigpLCByZXNwb25zZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBE
b2N1bWVudExvYWRlciogbG9hZGVyID0gbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVy
KCk7CisgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UobV9m
cmFtZSwgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCBsb2FkZXIsIHJlc3BvbnNlKTsKKyAg
ICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVz
cG9uc2UoY29va2llKTsKKyAgICAgICAgfQogICAgIH0KICNlbmRpZgogCkBAIC01OTMsMTIgKzU4
NSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdy
b3VwOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCiB7Ci0jaWYgRU5BQkxFKElOU1BF
Q1RPUikKLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaWRSZWNlaXZlQ29udGVudExlbmd0aChtX2N1cnJl
bnRSZXNvdXJjZUlkZW50aWZpZXIsIGxlbmd0aFJlY2VpdmVkKTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKGxlbmd0aFJlY2VpdmVkKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgobV9mcmFtZSwgbV9jdXJyZW50UmVzb3VyY2VJ
ZGVudGlmaWVyLCBsZW5ndGhSZWNlaXZlZCk7CiAKICAgICBpZiAoaGFuZGxlID09IG1fbWFuaWZl
c3RIYW5kbGUpIHsKICAgICAgICAgZGlkUmVjZWl2ZU1hbmlmZXN0RGF0YShkYXRhLCBsZW5ndGgp
OwpAQCAtNjE1LDEwICs2MDIsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgY2hhciogZAogCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBkb3VibGUgZmluaXNoVGltZSkKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlm
IChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQotICAgICAgICBwYWdlLT5pbnNwZWN0b3JD
b250cm9sbGVyKCktPmRpZEZpbmlzaExvYWRpbmcobV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVy
LCBmaW5pc2hUaW1lKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RmluaXNoTG9hZGluZyhtX2ZyYW1lLCBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIGZpbmlz
aFRpbWUpOwogCiAgICAgaWYgKGhhbmRsZSA9PSBtX21hbmlmZXN0SGFuZGxlKSB7CiAgICAgICAg
IGRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpOwpAQCAtNjU3LDEyICs2NDEsNyBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBkb3VibGUgZmluaQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmFpbChS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgp
KQotICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpZEZhaWxMb2FkaW5nKG1f
Y3VycmVudFJlc291cmNlSWRlbnRpZmllciwgZXJyb3IpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0oZXJyb3IpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWls
TG9hZGluZyhtX2ZyYW1lLCBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIGVycm9yKTsKIAog
ICAgIGlmIChoYW5kbGUgPT0gbV9tYW5pZmVzdEhhbmRsZSkgewogICAgICAgICBjYWNoZVVwZGF0
ZUZhaWxlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmggYi9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuaAppbmRleCAyOWQwNzQ5ZDhmNjdlYzg4ZWIyOGM5YThiMGJhMzBjYzVkYmZjZTY5Li4y
ZDhiODNlMWM3NDhhMDlkMDE1ODk3OTQ2OTkyNjc5MzU3Y2UzM2IzIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAorKysgYi9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaApAQCAtMTEwLDkgKzExMCw2
IEBAIHByaXZhdGU6CiAgICAgLy8gdGhlIGV4aXN0aW5nIGNsaWVudCBjYWxsYmFjayBjYW5ub3Qg
YmUgdXNlZCwgc28gYXNzdW1lIHRoYXQgYW55IGNsaWVudCB0aGF0IGVuYWJsZXMgYXBwbGljYXRp
b24gY2FjaGUgYWxzbyB3YW50cyBpdCB0byB1c2UgY3JlZGVudGlhbCBzdG9yYWdlLgogICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIHsg
cmV0dXJuIHRydWU7IH0KIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgdmlydHVhbCB2b2lk
IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKLSNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhcios
IGludCBsZW5ndGgsIGludCBsZW5ndGhSZWNlaXZlZCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUgZmluaXNoVGltZSk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwIGIv
V2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAppbmRleCA0
YThlOTQ3MzFiYWE2MjBkYmU5ZGY1ZDM0MDk3N2IwOTliMGEwNjQ0Li4zYTE0YjYyZGU1YzI3NWRj
MTk1MWJjNTQ5Y2MwZDlmOWU5MTViMmJkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvRGVm
YXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9EZWZh
dWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRl
ICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQu
aCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CkBAIC0yOTEsMTAgKzI5MSw3IEBAIHZvaWQgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpub3Rp
ZnlGaW5pc2hlZCgpCiAgICAgaWYgKG1fc2NyaXB0TG9hZGVyLT5mYWlsZWQoKSkKICAgICAgICAg
bV93b3JrZXItPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JF
dmVudCwgZmFsc2UsIHRydWUpKTsKICAgICBlbHNlIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQot
ICAgICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yID0gbV93b3JrZXItPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICAg
ICAgaW5zcGVjdG9yLT5zY3JpcHRJbXBvcnRlZChtX3NjcmlwdExvYWRlci0+aWRlbnRpZmllcigp
LCBtX3NjcmlwdExvYWRlci0+c2NyaXB0KCkpOwotI2VuZGlmCisgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQobV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgbV9zY3JpcHRMb2FkZXItPmlkZW50aWZpZXIoKSwgbV9zY3JpcHRMb2FkZXItPnNj
cmlwdCgpKTsKICAgICAgICAgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6Omluc3RhbmNl
KCkud29ya2VyU2NyaXB0TG9hZGVkKCptX3Byb3h5LCBtX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT51c2VyQWdlbnQobV9zY3JpcHRMb2FkZXItPnVybCgpKSwgbV9zY3JpcHRMb2Fk
ZXItPnNjcmlwdCgpLCBtX3BvcnQucmVsZWFzZSgpKTsKICAgICB9CiAgICAgbV93b3JrZXItPnVu
c2V0UGVuZGluZ0FjdGl2aXR5KG1fd29ya2VyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXIuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKaW5kZXggMzJl
Yzk5NzU2MmJmNzIyOTgyNjBjMTZhYmJmNDljYzk3NzNhYzdlOC4uOGEyZjYyYWUyYTNmMThkYzc0
ZDIxNjg4Y2VkMTcxMTFjMDg3YmMyMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ci5jcHAKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKQEAgLTQxLDYgKzQxLDcgQEAK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5o
IgogI2luY2x1ZGUgIldvcmtlckNvbnRleHRQcm94eS5oIgpAQCAtMTM1LDEwICsxMzYsNyBAQCB2
b2lkIFdvcmtlcjo6bm90aWZ5RmluaXNoZWQoKQogICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCB0cnVlKSk7CiAgICAgZWxz
ZSB7CiAgICAgICAgIG1fY29udGV4dFByb3h5LT5zdGFydFdvcmtlckNvbnRleHQobV9zY3JpcHRM
b2FkZXItPnVybCgpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnVzZXJBZ2VudChtX3Njcmlw
dExvYWRlci0+dXJsKCkpLCBtX3NjcmlwdExvYWRlci0+c2NyaXB0KCkpOwotI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCi0gICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3IgPSBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKLSAgICAgICAg
ICAgIGluc3BlY3Rvci0+c2NyaXB0SW1wb3J0ZWQobV9zY3JpcHRMb2FkZXItPmlkZW50aWZpZXIo
KSwgbV9zY3JpcHRMb2FkZXItPnNjcmlwdCgpKTsKLSNlbmRpZgorICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
bV9zY3JpcHRMb2FkZXItPmlkZW50aWZpZXIoKSwgbV9zY3JpcHRMb2FkZXItPnNjcmlwdCgpKTsK
ICAgICB9CiAgICAgbV9zY3JpcHRMb2FkZXIgPSAwOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29udGV4dC5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5j
cHAKaW5kZXggMzQ1ZTViNzYwNDcyYmMxYjJmODJiOWM3ZWM1NzljYzBkODBkNGQ1Yi4uNmM1MGYx
YTIyNDczZDMxYThjMjdkZTgwNWYwMmRhZjBkYWFiZDM5ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250
ZXh0LmNwcApAQCAtNDIsNyArNDIsNyBAQAogI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKICNpbmNs
dWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiSW5z
cGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCkBAIC0yNDUsMTAgKzI0NSw3IEBAIHZvaWQgV29ya2VyQ29udGV4
dDo6aW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCi0gICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3IgPSBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKLSAgICAgICAgICAg
IGluc3BlY3Rvci0+c2NyaXB0SW1wb3J0ZWQoc2NyaXB0TG9hZGVyLmlkZW50aWZpZXIoKSwgc2Ny
aXB0TG9hZGVyLnNjcmlwdCgpKTsKLSNlbmRpZgorICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6c2NyaXB0SW1wb3J0ZWQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzY3JpcHRMb2Fk
ZXIuaWRlbnRpZmllcigpLCBzY3JpcHRMb2FkZXIuc2NyaXB0KCkpOwogCiAgICAgICAgIFNjcmlw
dFZhbHVlIGV4Y2VwdGlvbjsKICAgICAgICAgbV9zY3JpcHQtPmV2YWx1YXRlKFNjcmlwdFNvdXJj
ZUNvZGUoc2NyaXB0TG9hZGVyLnNjcmlwdCgpLCAqaXQpLCAmZXhjZXB0aW9uKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcAppbmRleCBmYzdlYjllMmQ0OTU1YTI2OTI1MGU0OWRhMmE1OWYzZmRkMWQ4YTQ4
Li5kODY2OTQ3NGIxMDBiZTdjMTU0MWJhMGY0MDExN2VkZWRmNGQ3NWUwIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2lu
Y2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgotI2luY2x1ZGUgIkluc3Bl
Y3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0Lmgi
CkBAIC0xMDAyLDEwICsxMDAxLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiAgICAgLy8gRklYTUU6IFNldCBtX3Jlc3Bv
bnNlQmxvYiB0byBzb21ldGhpbmcgaGVyZSBpbiB0aGUgUmVzcG9uc2VUeXBlQmxvYiBjYXNlLgog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9s
bGVyKiBpbnNwZWN0b3IgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmluc3BlY3RvckNvbnRy
b2xsZXIoKSkKLSAgICAgICAgaW5zcGVjdG9yLT5yZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJl
cXVlc3QoaWRlbnRpZmllciwgbV9yZXNwb25zZUJ1aWxkZXIudG9TdHJpbmdQcmVzZXJ2ZUNhcGFj
aXR5KCksIG1fdXJsLCBtX2xhc3RTZW5kVVJMLCBtX2xhc3RTZW5kTGluZU51bWJlcik7Ci0jZW5k
aWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlc291cmNlUmV0cmlldmVkQnlYTUxI
dHRwUmVxdWVzdChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGlkZW50aWZpZXIsIG1fcmVzcG9u
c2VCdWlsZGVyLnRvU3RyaW5nUHJlc2VydmVDYXBhY2l0eSgpLCBtX3VybCwgbV9sYXN0U2VuZFVS
TCwgbV9sYXN0U2VuZExpbmVOdW1iZXIpOwogCiAgICAgYm9vbCBoYWRMb2FkZXIgPSBtX2xvYWRl
cjsKICAgICBtX2xvYWRlciA9IDA7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBmMGU1Nzg0ZjhhNjNmYjE0NWI4
MDA3NTQ3YjMxODFhNGU1ZjMwYTdiLi4zYTgxNzQzN2E2MWFjNWI4OGQyMTM3OTQ3ZTU1YWE1MWM0
MGViMzk2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMC0xMi0yOSAgWXVyeSBT
ZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBpbnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNv
dXJjZS5odG1sIGZhaWxzIHdoZW4gcnVuIHR3aWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzM5NAorCisgICAgICAgIFNlbmQgZGlkUmVjZWl2ZVJl
c3BvbnNlIG5vdGlmaWNhdGlvbiB0byB0aGUgdGltZWxpbmUgYWdlbnQgZnJvbSBSZXNvdXJjZUxv
YWROb3RpZmllcgorICAgICAgICBpbnN0ZWFkIG9mIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UgdG8gY292ZXIgdGhlIGNhc2VzIHdoZW4gcmVzb3VyY2VzCisgICAgICAgIGFyZSBs
b2FkZWQgZnJvbSBtZW1vcnkgY2FjaGUuCisKKyAgICAgICAgTmV0d29yayBub3RpZmljYXRpb25z
IGFyZSBub3cgc2VudCB0byBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gd2hpY2ggZGlzcGF0Y2hl
cworICAgICAgICB0aGVtIHRvIGludGVyZXN0ZWQgYWdlbnRzIGFuZCBJbnNwZWN0b3JDb250cm9s
bGVyLgorCisgICAgICAgICogc3JjL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6Cisg
ICAgICAgICogc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRGV2VG9vbHNBZ2VudEltcGw6Om1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkRl
dlRvb2xzQWdlbnRJbXBsOjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJbXBsOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpZEZhaWxMb2FkaW5nKToKKyAg
ICAgICAgKiBzcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaDoKKwogMjAxMC0xMi0yMyAgU2hlcmlm
ZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjc0NTYxLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9T
aGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU2hhcmVkV29y
a2VyUmVwb3NpdG9yeS5jcHAKaW5kZXggODhkM2VjNTRmZTg3ODZlYzU0MzIwMTM0N2I1M2RkZjcw
ZGM1MzViZi4uM2Q0NDI4YWM0YTY0ZmY5YWM5MzI3MTIyYjY4MmU1ZDJjMTcyNTU2ZiAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCkBAIC0zNiw3
ICszNiw3IEBACiAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIK
LSNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnRDaGFubmVsLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCkBAIC0xNjIsMTAgKzE2Miw3IEBAIHZvaWQgU2hhcmVkV29ya2VyU2NyaXB0
TG9hZGVyOjpub3RpZnlGaW5pc2hlZCgpCiAgICAgICAgIG1fd29ya2VyLT5kaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCB0cnVlKSk7CiAg
ICAgICAgIGRlbGV0ZSB0aGlzOwogICAgIH0gZWxzZSB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikK
LSAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvciA9IG1fd29ya2VyLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKLSAgICAgICAg
ICAgIGluc3BlY3Rvci0+c2NyaXB0SW1wb3J0ZWQobV9zY3JpcHRMb2FkZXIuaWRlbnRpZmllcigp
LCBtX3NjcmlwdExvYWRlci5zY3JpcHQoKSk7Ci0jZW5kaWYKKyAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZChtX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBtX3NjcmlwdExvYWRlci5pZGVudGlmaWVyKCksIG1fc2NyaXB0TG9hZGVyLnNjcmlw
dCgpKTsKICAgICAgICAgLy8gUGFzcyB0aGUgc2NyaXB0IG9mZiB0byB0aGUgd29ya2VyLCB0aGVu
IHNlbmQgYSBjb25uZWN0IGV2ZW50LgogICAgICAgICBtX3dlYldvcmtlci0+c3RhcnRXb3JrZXJD
b250ZXh0KG1fdXJsLCBtX25hbWUsIG1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnVzZXJBZ2VudChtX3VybCksIG1fc2NyaXB0TG9hZGVyLnNjcmlwdCgpLCBtX3Jlc3BvbnNlQXBw
Q2FjaGVJRCk7CiAgICAgICAgIHNlbmRDb25uZWN0KCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCmluZGV4IDlmNGNlODdlODliMmQ3MmRiY2M1YzY5NDA0
MzI0M2YyYmY3N2UxMzEuLjlhYjJmZTU1MzIzMTYyMTc0ZGE1OWY5ZTYwYjFjM2NjZmQ2ZWFmMWYg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3Bw
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9s
bGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCkBAIC02OSw2ICs3MCw4IEBAIHVzaW5nIFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDsK
IHVzaW5nIFdlYkNvcmU6Okluc3BlY3RvckFycmF5OwogdXNpbmcgV2ViQ29yZTo6SW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI7CiB1c2luZyBXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOwor
dXNpbmcgV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOwordXNpbmcgV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llOwogdXNpbmcgV2ViQ29yZTo6Tm9kZTsKIHVz
aW5nIFdlYkNvcmU6OlBhZ2U7CiB1c2luZyBXZWJDb3JlOjpSZXNvdXJjZUVycm9yOwpAQCAtMzAy
LDI1ICszMDUsMzAgQEAgV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciogV2ViRGV2VG9vbHNB
Z2VudEltcGw6Omluc3BlY3RvckNvbnRyb2xsZXIoKQogICAgIHJldHVybiAwOwogfQogCitXZWJD
b3JlOjpGcmFtZSogV2ViRGV2VG9vbHNBZ2VudEltcGw6Om1haW5GcmFtZSgpCit7CisgICAgaWYg
KFBhZ2UqIHBhZ2UgPSBtX3dlYlZpZXdJbXBsLT5wYWdlKCkpCisgICAgICAgIHJldHVybiBwYWdl
LT5tYWluRnJhbWUoKTsKKyAgICByZXR1cm4gMDsKK30KKwogCiAvLy0tLS0tLS0gcGx1Z2luIHJl
c291cmNlIGxvYWQgbm90aWZpY2F0aW9ucyAtLS0tLS0tLS0tLS0tLS0KIHZvaWQgV2ViRGV2VG9v
bHNBZ2VudEltcGw6OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCgKICAgICB1bnNpZ25lZCBs
b25nIHJlc291cmNlSWQsCi0gICAgV2ViRnJhbWUqIGZyYW1lLAorICAgIFdlYkZyYW1lKiB3ZWJG
cmFtZSwKICAgICBjb25zdCBXZWJVUkxSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGlmIChJbnNw
ZWN0b3JDb250cm9sbGVyKiBpYyA9IGluc3BlY3RvckNvbnRyb2xsZXIoKSkgewotICAgICAgICBX
ZWJGcmFtZUltcGwqIHdlYkZyYW1lSW1wbCA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KGZy
YW1lKTsKLSAgICAgICAgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyID0gd2ViRnJhbWVJbXBsLT5m
cmFtZSgpLT5sb2FkZXIoKTsKLSAgICAgICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGZyYW1l
TG9hZGVyLT5hY3RpdmVEb2N1bWVudExvYWRlcigpOwotICAgICAgICBpYy0+aWRlbnRpZmllckZv
ckluaXRpYWxSZXF1ZXN0KHJlc291cmNlSWQsIGxvYWRlciwgcmVxdWVzdC50b1Jlc291cmNlUmVx
dWVzdCgpKTsKLSAgICB9CisgICAgV2ViRnJhbWVJbXBsKiB3ZWJGcmFtZUltcGwgPSBzdGF0aWNf
Y2FzdDxXZWJGcmFtZUltcGwqPih3ZWJGcmFtZSk7CisgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1l
ID0gd2ViRnJhbWVJbXBsLT5mcmFtZSgpOworICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBm
cmFtZS0+bG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCk7CisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QoZnJhbWUsIHJlc291cmNl
SWQsIGxvYWRlciwgcmVxdWVzdC50b1Jlc291cmNlUmVxdWVzdCgpKTsKIH0KIAogdm9pZCBXZWJE
ZXZUb29sc0FnZW50SW1wbDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VJ
ZCwgV2ViVVJMUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxl
ciogaWMgPSBpbnNwZWN0b3JDb250cm9sbGVyKCkpIHsKLSAgICAgICAgaWMtPndpbGxTZW5kUmVx
dWVzdChyZXNvdXJjZUlkLCByZXF1ZXN0LnRvTXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLCBSZXNv
dXJjZVJlc3BvbnNlKCkpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxT
ZW5kUmVxdWVzdChtYWluRnJhbWUoKSwgcmVzb3VyY2VJZCwgcmVxdWVzdC50b011dGFibGVSZXNv
dXJjZVJlcXVlc3QoKSwgUmVzb3VyY2VSZXNwb25zZSgpKTsKICAgICAgICAgaWYgKGljLT5oYXNG
cm9udGVuZCgpICYmIHJlcXVlc3QucmVwb3J0TG9hZFRpbWluZygpKQogICAgICAgICAgICAgcmVx
dWVzdC5zZXRSZXBvcnRSYXdIZWFkZXJzKHRydWUpOwogICAgIH0KQEAgLTMyOCwyNyArMzM2LDIz
IEBAIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBs
b25nIHJlc291cmNlSWQsIFdlYlVSTFJlcXVlCiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6
OmRpZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VJZCwgaW50IGxlbmd0aCkKIHsK
LSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaWMgPSBpbnNwZWN0b3JDb250cm9sbGVyKCkp
Ci0gICAgICAgIGljLT5kaWRSZWNlaXZlQ29udGVudExlbmd0aChyZXNvdXJjZUlkLCBsZW5ndGgp
OworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgo
bWFpbkZyYW1lKCksIHJlc291cmNlSWQsIGxlbmd0aCk7CiB9CiAKIHZvaWQgV2ViRGV2VG9vbHNB
Z2VudEltcGw6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIHJlc291cmNlSWQsIGNv
bnN0IFdlYlVSTFJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJv
bGxlciogaWMgPSBpbnNwZWN0b3JDb250cm9sbGVyKCkpCi0gICAgICAgIGljLT5kaWRSZWNlaXZl
UmVzcG9uc2UocmVzb3VyY2VJZCwgMCwgcmVzcG9uc2UudG9SZXNvdXJjZVJlc3BvbnNlKCkpOwor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtYWluRnJhbWUoKSwgcmVz
b3VyY2VJZCwgMCwgcmVzcG9uc2UudG9SZXNvdXJjZVJlc3BvbnNlKCkpOworICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoY29va2llKTsKIH0K
IAogdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nIHJlc291cmNlSWQpCiB7Ci0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW5z
cGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICBpYy0+ZGlkRmluaXNoTG9hZGluZyhyZXNvdXJj
ZUlkLCAwKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmco
bWFpbkZyYW1lKCksIHJlc291cmNlSWQsIDApOwogfQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJ
bXBsOjpkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIHJlc291cmNlSWQsIGNvbnN0IFdlYlVS
TEVycm9yJiBlcnJvcikKIHsKLSAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3I7Ci0gICAg
aWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAg
ICAgICBpYy0+ZGlkRmFpbExvYWRpbmcocmVzb3VyY2VJZCwgcmVzb3VyY2VFcnJvcik7CisgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhtYWluRnJhbWUoKSwgcmVz
b3VyY2VJZCwgZXJyb3IpOwogfQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjppbnNwZWN0
b3JEZXN0cm95ZWQoKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29s
c0FnZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5o
CmluZGV4IDQ4N2NmMGM1NzRiZDQ4MmRmOWY0OWI0ODNiMTNlZWYwZTljOGFjOWQuLjFiMWY4MjY0
YWRjOTBlOGViNTI3NDdlZDhlNDQwYmIwMjNiZjU3YTkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKQEAgLTEwNCw2ICsxMDQsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgY29ubmVjdEZyb250ZW5kKGJvb2wgYWZ0ZXJOYXZpZ2F0aW9uKTsKIAogICAgIFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIoKTsKKyAgICBXZWJD
b3JlOjpGcmFtZSogbWFpbkZyYW1lKCk7CiAKICAgICBpbnQgbV9ob3N0SWQ7CiAgICAgV2ViRGV2
VG9vbHNBZ2VudENsaWVudCogbV9jbGllbnQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77609</attachid>
            <date>2010-12-29 02:23:34 -0800</date>
            <delta_ts>2011-01-11 07:41:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37394-20101229132330.patch</filename>
            <type>text/plain</type>
            <size>72657</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlZTg0MGNjYzYxYTY4MGEwMjBlMjEzOTY1MDMwMzlmMjRlODk1M2RhLi4zOTFlZWRi
ZDE2YjQ4NGY5Y2Q0MTE5OWZjMDYyNGFlZGVhYTA5N2ZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTAtMTItMjkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaW5zcGVjdG9yL3Rp
bWVsaW5lLW5ldHdvcmstcmVzb3VyY2UuaHRtbCBmYWlscyB3aGVuIHJ1biB0d2ljZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzczOTQKKworICAgICAg
ICBTZW5kIGRpZFJlY2VpdmVSZXNwb25zZSBub3RpZmljYXRpb24gdG8gdGhlIHRpbWVsaW5lIGFn
ZW50IGZyb20gUmVzb3VyY2VMb2FkTm90aWZpZXIKKyAgICAgICAgaW5zdGVhZCBvZiBSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlIHRvIGNvdmVyIHRoZSBjYXNlcyB3aGVuIHJlc291
cmNlcworICAgICAgICBhcmUgbG9hZGVkIGZyb20gbWVtb3J5IGNhY2hlLgorCisgICAgICAgIE5l
dHdvcmsgbm90aWZpY2F0aW9ucyBhcmUgbm93IHNlbmQgdG8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uIHdoaWNoIGRpc3BhdGNoZXMKKyAgICAgICAgdGhlbSB0byBpbnRlcmVzdGVkIGFnZW50cyBh
bmQgSW5zcGVjdG9yQ29udHJvbGxlci4KKyAgICAgICAgZml4CisKKyAgICAgICAgKiBpbnNwZWN0
b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5z
cGVjdG9yL3RpbWVsaW5lLW5ldHdvcmstcmVzb3VyY2UuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS5qczoKKwogMjAxMC0xMi0yNyAgU2hpbmljaGly
byBIYW1hamkgIDxzaGluaWNoaXJvLmhhbWFqaUBnbWFpbC5jb20+CiAKICAgICAgICAgQ2hyb21p
dW0gZXhwZWN0YXRpb24gdXBkYXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3RpbWVsaW5lLW5ldHdvcmstcmVzb3VyY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3RpbWVsaW5lLW5ldHdvcmstcmVzb3VyY2UtZXhwZWN0ZWQudHh0CmluZGV4IGQ5NDE4
Y2E4MDI5OGZmM2Q3NzE4MjU2NTNjZTI2MDM4Mzc2MGZhNDkuLjkyNjk3NzVhMTUyNTdiZDQ5YTcz
YjNmOTRjZjdkYzNkMjEzMDA2NzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS1leHBlY3RlZC50eHQKQEAgLTgsNyAr
OCw2IEBAIFJlc291cmNlU2VuZFJlcXVlc3QgUHJvcGVydGllczoKICAgICAgICAgaWRlbnRpZmll
ciA6IDxudW1iZXI+CiAgICAgICAgIHVybCA6IDxzdHJpbmc+CiAgICAgICAgIHJlcXVlc3RNZXRo
b2QgOiAiR0VUIgotICAgICAgICBpc01haW5SZXNvdXJjZSA6IGZhbHNlCiAgICAgfQogICAgIHR5
cGUgOiAxMgogICAgIHVzZWRIZWFwU2l6ZSA6IDxudW1iZXI+CkBAIC0yMiw3ICsyMSw3IEBAIFJl
c291cmNlUmVjZWl2ZVJlc3BvbnNlIFByb3BlcnRpZXM6CiAgICAgICAgIGlkZW50aWZpZXIgOiA8
bnVtYmVyPgogICAgICAgICBzdGF0dXNDb2RlIDogMAogICAgICAgICBtaW1lVHlwZSA6IDxzdHJp
bmc+Ci0gICAgICAgIGV4cGVjdGVkQ29udGVudExlbmd0aCA6IDIxMAorICAgICAgICBleHBlY3Rl
ZENvbnRlbnRMZW5ndGggOiAyMDgKICAgICAgICAgdXJsIDogPHN0cmluZz4KICAgICB9CiAgICAg
Y2hpbGRyZW4gOiA8b2JqZWN0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Rp
bWVsaW5lLW5ldHdvcmstcmVzb3VyY2UuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1l
bGluZS1uZXR3b3JrLXJlc291cmNlLmh0bWwKaW5kZXggZmUyOGVkM2I4ZWRiZThlYzVlMWM3YWRk
MWQ4NTI0OWNhMGU3MDJmNy4uNzI4NmZiNmFhYzg4MmFjODFhZGNiYWRmMTU0M2Y2NzU0OTA1MTE2
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLW5ldHdvcmstcmVz
b3VyY2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1y
ZXNvdXJjZS5odG1sCkBAIC02LDE2ICs2LDE2IEBACiAKIHZhciBzY3JpcHRVcmwgPSAidGltZWxp
bmUtbmV0d29yay1yZXNvdXJjZS5qcyI7CiAKLWZ1bmN0aW9uIHJ1bkFmdGVyU2NyaXB0SXNFdmFs
dWF0ZWQoY29udGludWF0aW9uKQorZnVuY3Rpb24gcnVuQWZ0ZXJTY3JpcHRJc0V2YWx1YXRlZCgp
CiB7Ci0gICAgZnVuY3Rpb24gc3RlcCgpCi0gICAgewotICAgICAgICBpZiAoIXdpbmRvdy5zY3Jp
cHRFdmFsdWF0ZWQpCi0gICAgICAgICAgICBzZXRUaW1lb3V0KHN0ZXAsIDEwMCk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGNvbnRpbnVhdGlvbigpOwotICAgIH0KLSAgICBzZXRUaW1lb3V0
KHN0ZXAsIDEwMCk7CisgICAgcHJpbnRUaW1lbGluZVJlY29yZHMobnVsbCwgbnVsbCwgZnVuY3Rp
b24ocmVjb3JkKSB7CisgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJl
Y29yZFR5cGVbIlJlc291cmNlU2VuZFJlcXVlc3QiXSkKKyAgICAgICAgICAgIHByaW50U2VuZChy
ZWNvcmQpOworICAgICAgICBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJl
Y29yZFR5cGVbIlJlc291cmNlUmVjZWl2ZVJlc3BvbnNlIl0pCisgICAgICAgICAgICBwcmludFJl
Y2VpdmUocmVjb3JkKTsKKyAgICAgICAgZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IHRpbWVsaW5l
QWdlbnRSZWNvcmRUeXBlWyJSZXNvdXJjZUZpbmlzaCJdKQorICAgICAgICAgICAgcHJpbnRGaW5p
c2gocmVjb3JkKTsKKyAgICB9KTsKIH0KIAogZnVuY3Rpb24gcHJpbnRSZWNvcmQocmVjb3JkKQpA
QCAtNjAsMTcgKzYwLDYgQEAgZnVuY3Rpb24gZG9pdCgpCiAgICAgdmFyIHNjcmlwdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOwogICAgIHNjcmlwdC5zcmMgPSBzY3JpcHRVcmw7
CiAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpOwotICAgIHJ1bkFmdGVyU2Ny
aXB0SXNFdmFsdWF0ZWQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHByaW50VGltZWxpbmVSZWNvcmRz
KG51bGwsIG51bGwsIGZ1bmN0aW9uKHJlY29yZCkgewotICAgICAgICAgICAgaWYgKHJlY29yZC50
eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZVsiUmVzb3VyY2VTZW5kUmVxdWVzdCJdKQot
ICAgICAgICAgICAgICAgIHByaW50U2VuZChyZWNvcmQpOwotICAgICAKLSAgICAgICAgICAgIGVs
c2UgaWYgKHJlY29yZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZVsiUmVzb3VyY2VS
ZWNlaXZlUmVzcG9uc2UiXSkKLSAgICAgICAgICAgICAgICBwcmludFJlY2VpdmUocmVjb3JkKTsK
LSAgICAgICAgICAgIGVsc2UgaWYgKHJlY29yZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3Jk
VHlwZVsiUmVzb3VyY2VGaW5pc2giXSkKLSAgICAgICAgICAgICAgICBwcmludEZpbmlzaChyZWNv
cmQpOwotICAgICAgICB9KTsKLSAgICB9KTsKIH0KIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS5qcyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmpzCmluZGV4IDZmZTBk
MThkODAwZWQ3ZTAwZDFiZTgyMDg4ODNhMzA2YzA5NGVhNDkuLmRlN2M3MjBmNThmNzc3OWNiYmY2
Y2U3MTU3YjI1MWY2MTUyOWQwNWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmpzCkBAIC0zLDQgKzMsNCBAQAogdmFyIGVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKIGVsZW1lbnQuaW5uZXJIVE1MID0gIlNj
cmlwdCByZXNvdXJjZSBsb2FkZWQiOwogZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50
KTsKLXdpbmRvdy5zY3JpcHRFdmFsdWF0ZWQgPSB0cnVlOworcnVuQWZ0ZXJTY3JpcHRJc0V2YWx1
YXRlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBjMDg3YWQ2NDZiYTQwNGE5ZDRhMWE1NTE4MTdhOGFkYTZiNzQyNDUwLi4wZDJjYjRm
Y2I0N2IyZGNlMmEwNzgyMWJmOGJlYWVhMWIyZTI0MjViIDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDEwLTEy
LTI5ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGluc3BlY3Rvci90aW1lbGluZS1u
ZXR3b3JrLXJlc291cmNlLmh0bWwgZmFpbHMgd2hlbiBydW4gdHdpY2UKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3Mzk0CisKKyAgICAgICAgU2VuZCBk
aWRSZWNlaXZlUmVzcG9uc2Ugbm90aWZpY2F0aW9uIHRvIHRoZSB0aW1lbGluZSBhZ2VudCBmcm9t
IFJlc291cmNlTG9hZE5vdGlmaWVyCisgICAgICAgIGluc3RlYWQgb2YgUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZSB0byBjb3ZlciB0aGUgY2FzZXMgd2hlbiByZXNvdXJjZXMKKyAg
ICAgICAgYXJlIGxvYWRlZCBmcm9tIG1lbW9yeSBjYWNoZS4KKworICAgICAgICBOZXR3b3JrIG5v
dGlmaWNhdGlvbnMgYXJlIG5vdyBzZW50IHRvIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiB3aGlj
aCBkaXNwYXRjaGVzCisgICAgICAgIHRoZW0gdG8gaW50ZXJlc3RlZCBhZ2VudHMgYW5kIEluc3Bl
Y3RvckNvbnRyb2xsZXIuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmlkbDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZGlkUmVjZWl2
ZU1hbmlmZXN0UmVzcG9uc2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3Rv
ckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlk
Q29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxs
U2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0SW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdEltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptYXJrUmVzb3VyY2VBc0NhY2hl
ZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRM
b2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVDb250
ZW50TGVuZ3RoSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEZpbmlzaExvYWRpbmdJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmdJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlw
dEltcG9ydGVkSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnJldHJpZXZlUmVzb3VyY2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptYXJrUmVzb3VyY2VBc0NhY2hlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExvYWRSZXNvdXJj
ZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2Fk
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVzb3Vy
Y2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1l
bGluZUFnZW50Ojp3aWxsU2VuZFJlc291cmNlUmVxdWVzdCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVS
ZWNvcmRGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9y
eTo6Y3JlYXRlUmVzb3VyY2VTZW5kUmVxdWVzdERhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9U
aW1lbGluZVJlY29yZEZhY3RvcnkuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05l
dHdvcmtNYW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnBy
b3RvdHlwZS5pZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZVBhbmVsLnByb3RvdHlwZS5hZGRSZWNvcmRUb1RpbWVsaW5lKToKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRl
ZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2Fk
Tm90aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmll
cjo6ZGlkRmFpbFRvTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmll
cjo6YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlQ29udGVudExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3Rp
Zmllcjo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyk6CisgICAgICAg
ICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZUdyb3VwOjpjcmVhdGVSZXNvdXJjZUhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZhaWwpOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaDoKKyAgICAgICAgKiB3b3JrZXJzL0Rl
ZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlclNjcmlwdExvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6bm90aWZ5RmluaXNoZWQpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRp
bmcpOgorCiAyMDEwLTEyLTI4ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuaWRsCmluZGV4IDU2ZmViMDEzYjlkYzQ0MjZhZGRkMDZmZjI5ODZlYmFjNzQ4MGZjNWEuLjJj
MzRlODE0Y2VhOTg5ZjAxZWI1ZmZkNjAxMWFmNGQ5NGIyNTMzMmUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmlkbApAQCAtODQsNyArODQsNyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIC8vIE5ldHdv
cmsgQVBJCiAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKLSAgICAgICAgW25vdGlmeSwgZG9tYWlu
PU5ldHdvcmtdIHZvaWQgaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KG91dCBsb25nIGlkZW50
aWZpZXIsIG91dCBTdHJpbmcgdXJsLCBvdXQgT2JqZWN0IGxvYWRlciwgb3V0IFZhbHVlIGNhbGxT
dGFjayk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIGlkZW50aWZpZXJG
b3JJbml0aWFsUmVxdWVzdChvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgU3RyaW5nIHVybCwgb3V0
IE9iamVjdCBsb2FkZXIsIG91dCBib29sZWFuIGlzTWFpblJlc291cmNlTG9hZGVyLCBvdXQgVmFs
dWUgY2FsbFN0YWNrKTsKICAgICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtdIHZvaWQgd2ls
bFNlbmRSZXF1ZXN0KG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0IE9i
amVjdCByZXF1ZXN0LCBvdXQgT2JqZWN0IHJlZGlyZWN0UmVzcG9uc2UpOwogICAgICAgICBbbm90
aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCBtYXJrUmVzb3VyY2VBc0NhY2hlZChvdXQgbG9uZyBp
ZGVudGlmaWVyKTsKICAgICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtdIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0IFN0
cmluZyByZXNvdXJjZVR5cGUsIG91dCBPYmplY3QgcmVzcG9uc2UpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXggY2Vk
NjFjNWRkMmQzZjJlOTljMDQ5MjA2ZjMyOTlkMDE3ZmRkOTgzNi4uOTE4NjQzYjE5MmMwOTMzMTJl
NDA2MTk2NDVlMDgxOTMwYjJjMzEwZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
KEluc3BlY3RvckNvbnRyb2xsCiAKIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
OjpkaWRSZWNlaXZlTWFuaWZlc3RSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIG1faW5zcGVjdG9yQ29udHJv
bGxlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIDAsIHJlc3BvbnNlKTsKKyAgICBt
X2luc3BlY3RvckNvbnRyb2xsZXItPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNw
b25zZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojp1cGRhdGVB
cHBsaWNhdGlvbkNhY2hlU3RhdHVzKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpTdGF0dXMgc3RhdHVz
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA4MzU1Y2Rm
NWViNDAwM2I2MWIwODkyNTE5Y2M3Y2U4ZDgzNGRjMGViLi4zYjRiYjcwY2U4YWY1ZTNiYTkxYTY2
MmM2NWY5Nzk2NjVkOTRkOTEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcApAQCAtMTQwLDcgKzE0MCw2IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3Rv
ckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgLCBt
X2NsaWVudChjbGllbnQpCiAgICAgLCBtX29wZW5pbmdGcm9udGVuZChmYWxzZSkKICAgICAsIG1f
Y3NzQWdlbnQobmV3IEluc3BlY3RvckNTU0FnZW50KCkpCi0gICAgLCBtX21haW5SZXNvdXJjZUlk
ZW50aWZpZXIoMCkKICAgICAsIG1fZXhwaXJlZENvbnNvbGVNZXNzYWdlQ291bnQoMCkKICAgICAs
IG1fcHJldmlvdXNNZXNzYWdlKDApCiAgICAgLCBtX3NldHRpbmdzTG9hZGVkKGZhbHNlKQpAQCAt
NzQ5LDcgKzc0OCw2IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0TG9hZChE
b2N1bWVudExvYWRlciogbG9hZGVyKQogI2VuZGlmCiAKICAgICAgICAgaWYgKG1fZnJvbnRlbmQp
IHsKLSAgICAgICAgICAgIG1fbWFpblJlc291cmNlSWRlbnRpZmllciA9IDA7CiAgICAgICAgICAg
ICBtX2Zyb250ZW5kLT5kaWRDb21taXRMb2FkKCk7CiAgICAgICAgICAgICBtX2RvbUFnZW50LT5z
ZXREb2N1bWVudChtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpKTsKICAg
ICAgICAgfQpAQCAtNzY1LDMzICs3NjMsNiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmZy
YW1lRGV0YWNoZWRGcm9tUGFyZW50KEZyYW1lKiByb290RnJhbWUpCiAgICAgICAgIG1fcmVzb3Vy
Y2VBZ2VudC0+ZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQocm9vdEZyYW1lKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgY29uc3QgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQot
ewotICAgIGlmICghZW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBlbnN1cmVTZXR0
aW5nc0xvYWRlZCgpOwotCi0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAgICAgICAgbV9yZXNv
dXJjZUFnZW50LT5kaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUobG9hZGVyLCBjYWNoZWRS
ZXNvdXJjZSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aWRlbnRpZmllckZvcklu
aXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQotewotICAgIGlmICghZW5hYmxl
ZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKG1faW5zcGVjdGVkUGFnZSk7Ci0KLSAg
ICBib29sIGlzTWFpblJlc291cmNlID0gaXNNYWluUmVzb3VyY2VMb2FkZXIobG9hZGVyLCByZXF1
ZXN0LnVybCgpKTsKLSAgICBpZiAoaXNNYWluUmVzb3VyY2UpCi0gICAgICAgIG1fbWFpblJlc291
cmNlSWRlbnRpZmllciA9IGlkZW50aWZpZXI7Ci0KLSAgICBlbnN1cmVTZXR0aW5nc0xvYWRlZCgp
OwotCi0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAgICAgICAgbV9yZXNvdXJjZUFnZW50LT5p
ZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QoaWRlbnRpZmllciwgcmVxdWVzdC51cmwoKSwgbG9h
ZGVyKTsKLX0KLQogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjptYWluUmVzb3VyY2VGaXJlZERP
TUNvbnRlbnRFdmVudChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiB1cmwpCiB7
CiAgICAgaWYgKCFlbmFibGVkKCkgfHwgIWlzTWFpblJlc291cmNlTG9hZGVyKGxvYWRlciwgdXJs
KSkKQEAgLTgyNCwxMDggKzc5NSw1MyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxT
ZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdQogICAgIGlm
ICghZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICByZXF1ZXN0LnNldFJlcG9ydExv
YWRUaW1pbmcodHJ1ZSk7Ci0KLSAgICBpZiAobV9mcm9udGVuZCkgewotICAgICAgICAvLyBPbmx5
IGVuYWJsZSByYXcgaGVhZGVycyBpZiBmcm9udC1lbmQgaXMgYXR0YWNoZWQsIGFzIG90aGVyd2lz
ZSB3ZSBtYXkgbGFjawotICAgICAgICAvLyBwZXJtaXNzaW9ucyB0byBmZXRjaCB0aGUgaGVhZGVy
cy4KLSAgICAgICAgcmVxdWVzdC5zZXRSZXBvcnRSYXdIZWFkZXJzKHRydWUpOwotCi0gICAgICAg
IGlmIChtX2V4dHJhSGVhZGVycykgewotICAgICAgICAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gbV9leHRyYUhlYWRlcnMtPmVuZCgpOwotICAgICAgICAgICAgZm9yIChI
VFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fZXh0cmFIZWFkZXJzLT5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVy
RmllbGQoaXQtPmZpcnN0LCBpdC0+c2Vjb25kKTsKLSAgICAgICAgfQorICAgIGlmICghbV9mcm9u
dGVuZCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGJvb2wgaXNNYWluUmVzb3VyY2UgPSBtX21haW5SZXNvdXJjZUlkZW50aWZp
ZXIgPT0gaWRlbnRpZmllcjsKLSAgICBpZiAobV90aW1lbGluZUFnZW50KQotICAgICAgICBtX3Rp
bWVsaW5lQWdlbnQtPndpbGxTZW5kUmVzb3VyY2VSZXF1ZXN0KGlkZW50aWZpZXIsIGlzTWFpblJl
c291cmNlLCByZXF1ZXN0KTsKLQotICAgIGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1f
cmVzb3VyY2VBZ2VudC0+d2lsbFNlbmRSZXF1ZXN0KGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlZGly
ZWN0UmVzcG9uc2UpOwotfQorICAgIHJlcXVlc3Quc2V0UmVwb3J0TG9hZFRpbWluZyh0cnVlKTsK
IAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjptYXJrUmVzb3VyY2VBc0NhY2hlZCh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIpCi17Ci0gICAgaWYgKCFlbmFibGVkKCkpCi0gICAgICAgIHJldHVy
bjsKKyAgICAvLyBPbmx5IGVuYWJsZSByYXcgaGVhZGVycyBpZiBmcm9udC1lbmQgaXMgYXR0YWNo
ZWQsIGFzIG90aGVyd2lzZSB3ZSBtYXkgbGFjaworICAgIC8vIHBlcm1pc3Npb25zIHRvIGZldGNo
IHRoZSBoZWFkZXJzLgorICAgIHJlcXVlc3Quc2V0UmVwb3J0UmF3SGVhZGVycyh0cnVlKTsKIAot
ICAgIGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+bWFya1Jl
c291cmNlQXNDYWNoZWQoaWRlbnRpZmllcik7CisgICAgaWYgKG1fZXh0cmFIZWFkZXJzKSB7Cisg
ICAgICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fZXh0cmFIZWFkZXJz
LT5lbmQoKTsKKyAgICAgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1fZXh0cmFIZWFkZXJzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICBy
ZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQpOworICAgIH0K
IH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIGxvYWRlciwgcmVzcG9uc2UpOwotCiAgICAgaWYgKHJl
c3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKSB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdl
ID0gbWFrZVN0cmluZygiRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2U6IHRoZSBzZXJ2ZXIgcmVzcG9u
ZGVkIHdpdGggYSBzdGF0dXMgb2YgIiwgU3RyaW5nOjpudW1iZXIocmVzcG9uc2UuaHR0cFN0YXR1
c0NvZGUoKSksICIgKCIsIHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCksICcpJyk7CiAgICAgICAg
IGFkZENvbnNvbGVNZXNzYWdlKG5ldyBDb25zb2xlTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2Us
IE5ldHdvcmtFcnJvck1lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgcmVz
cG9uc2UudXJsKCkuc3RyaW5nKCksIGlkZW50aWZpZXIpKTsKICAgICB9CiB9CiAKLXZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCi17Ci0gICAgaWYgKCFlbmFibGVkKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVz
b3VyY2VBZ2VudC0+ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoaWRlbnRpZmllciwgbGVuZ3RoUmVj
ZWl2ZWQpOwotfQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEZpbmlzaExvYWRpbmco
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSkKLXsKLSAgICBpZiAo
IWVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fdGltZWxpbmVBZ2VudCkK
LSAgICAgICAgbV90aW1lbGluZUFnZW50LT5kaWRGaW5pc2hMb2FkaW5nUmVzb3VyY2UoaWRlbnRp
ZmllciwgZmFsc2UsIGZpbmlzaFRpbWUpOwotCi0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAg
ICAgICAgbV9yZXNvdXJjZUFnZW50LT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZpbmlz
aFRpbWUpOwotfQotCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEZhaWxMb2FkaW5nKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAg
ICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3RpbWVsaW5l
QWdlbnQpCi0gICAgICAgIG1fdGltZWxpbmVBZ2VudC0+ZGlkRmluaXNoTG9hZGluZ1Jlc291cmNl
KGlkZW50aWZpZXIsIHRydWUsIDApOwotCiAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiRmFpbGVkIHRv
IGxvYWQgcmVzb3VyY2UiOwotICAgICAgICBpZiAoIWVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9u
KCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWVzc2FnZSArPSAiOiAiICsgZXJyb3IubG9jYWxp
emVkRGVzY3JpcHRpb24oKTsKLSAgICAgICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3IENvbnNvbGVN
ZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTmV0d29ya0Vycm9yTWVzc2FnZVR5cGUsIEVycm9y
TWVzc2FnZUxldmVsLCBtZXNzYWdlLCBlcnJvci5mYWlsaW5nVVJMKCksIGlkZW50aWZpZXIpKTsK
LQotICAgIGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+ZGlk
RmFpbExvYWRpbmcoaWRlbnRpZmllciwgZXJyb3IpOworICAgIGlmICghZXJyb3IubG9jYWxpemVk
RGVzY3JpcHRpb24oKS5pc0VtcHR5KCkpCisgICAgICAgIG1lc3NhZ2UgKz0gIjogIiArIGVycm9y
LmxvY2FsaXplZERlc2NyaXB0aW9uKCk7CisgICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3IENvbnNv
bGVNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTmV0d29ya0Vycm9yTWVzc2FnZVR5cGUsIEVy
cm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBlcnJvci5mYWlsaW5nVVJMKCksIGlkZW50aWZpZXIp
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1M
SHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWdu
ZWQgc2VuZExpbmVOdW1iZXIpCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc291cmNlUmV0
cmlldmVkQnlYTUxIdHRwUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBz
ZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlcikKIHsKICAgICBpZiAoIWVuYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oSW5zcGVjdG9y
U3RhdGU6Om1vbml0b3JpbmdYSFIpKQogICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVz
c2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgIlhIUiBmaW5pc2hl
ZCBsb2FkaW5nOiBcIiIgKyB1cmwgKyAiXCIuIiwgc2VuZExpbmVOdW1iZXIsIHNlbmRVUkwpOwot
Ci0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAgICAgICAgbV9yZXNvdXJjZUFnZW50LT5zZXRJ
bml0aWFsQ29udGVudChpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcsICJYSFIiKTsKLX0KLQotdm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzY3JpcHRJbXBvcnRlZCh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKQotewotICAgIGlmICghZW5hYmxlZCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9yZXNvdXJjZUFnZW50KQotICAgICAgICBt
X3Jlc291cmNlQWdlbnQtPnNldEluaXRpYWxDb250ZW50KGlkZW50aWZpZXIsIHNvdXJjZVN0cmlu
ZywgIlNjcmlwdCIpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZVNldHRp
bmdzTG9hZGVkKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBl
NTcwYzk4ZGE4YzE5ZTg0NzBjMzgyZmUzOTExNTc2MDkzMzZkOGE3Li5iMGYxMWUzYTg4ZjllM2M3
NTE5NjMwZDFkMGY5YWRiZWUyNWQzYTUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oCkBAIC0xNjIsMjIgKzE2MiwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZENv
bW1pdExvYWQoRG9jdW1lbnRMb2FkZXIqKTsKICAgICB2b2lkIGZyYW1lRGV0YWNoZWRGcm9tUGFy
ZW50KEZyYW1lKik7Ci0gICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9j
dW1lbnRMb2FkZXIqLCBjb25zdCBDYWNoZWRSZXNvdXJjZSopOwogCi0gICAgdm9pZCBpZGVudGlm
aWVyRm9ySW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExv
YWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwotICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgdm9pZCBtYXJrUmVzb3VyY2VBc0Nh
Y2hlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQ29udGVudExlbmd0aCh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGludCBsZW5ndGhSZWNlaXZlZCk7Ci0gICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpOwot
ICAgIHZvaWQgZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZUVycm9yJik7Ci0gICAgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVl
c3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywg
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExp
bmVOdW1iZXIpOwotICAgIHZvaWQgc2NyaXB0SW1wb3J0ZWQodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZyk7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAKICAgICB2b2lkIHNldEV4dHJhSGVhZGVycyhQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4p
OwogCi0gICAgdm9pZCBlbnN1cmVTZXR0aW5nc0xvYWRlZCgpOwotCiAgICAgdm9pZCBzdGFydFRp
bWVsaW5lUHJvZmlsZXIoKTsKICAgICB2b2lkIHN0b3BUaW1lbGluZVByb2ZpbGVyKCk7CiAgICAg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCgpIHsgcmV0dXJuIG1fdGltZWxp
bmVBZ2VudC5nZXQoKTsgfQpAQCAtMjgzLDIxICsyNzIsMjYgQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBkZWZhdWx0QXR0YWNoZWRIZWlnaHQ7CiAKIHByaXZhdGU6Ci0gICAg
dm9pZCBnZXRJbnNwZWN0b3JTdGF0ZShSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogc3RhdGUpOwot
ICAgIHZvaWQgc2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChib29sIGVuYWJsZWQpOwotCiAgICAg
ZnJpZW5kIGNsYXNzIEluc3BlY3RvckJhY2tlbmQ7CiAgICAgZnJpZW5kIGNsYXNzIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOwogICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb247CiAgICAgZnJpZW5kIGNsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsKIAorICAgIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgdm9pZCBk
aWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKKyAgICB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdChjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJl
cik7CisKKyAgICB2b2lkIGVuc3VyZVNldHRpbmdzTG9hZGVkKCk7CisKKyAgICB2b2lkIGdldElu
c3BlY3RvclN0YXRlKFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBzdGF0ZSk7CisgICAgdm9pZCBz
ZXRDb25zb2xlTWVzc2FnZXNFbmFibGVkKGJvb2wpOworCisgICAgdm9pZCBwb3B1bGF0ZVNjcmlw
dE9iamVjdHMoKTsKKyAgICB2b2lkIHJlc3RvcmVEZWJ1Z2dlcigpOwogICAgIGVudW0gUHJvZmls
ZXJSZXN0b3JlQWN0aW9uIHsKICAgICAgICAgUHJvZmlsZXJSZXN0b3JlTm9BY3Rpb24gPSAwLAog
ICAgICAgICBQcm9maWxlclJlc3RvcmVSZXNldEFnZW50ID0gMQogICAgIH07Ci0gICAgCi0gICAg
dm9pZCBwb3B1bGF0ZVNjcmlwdE9iamVjdHMoKTsKLSAgICB2b2lkIHJlc3RvcmVEZWJ1Z2dlcigp
OwogICAgIHZvaWQgcmVzdG9yZVByb2ZpbGVyKFByb2ZpbGVyUmVzdG9yZUFjdGlvbiBhY3Rpb24p
OwogICAgIHZvaWQgdW5iaW5kQWxsUmVzb3VyY2VzKCk7CiAgICAgdm9pZCBzZXRTZWFyY2hpbmdG
b3JOb2RlKGJvb2wgZW5hYmxlZCk7CkBAIC0zNTYsNyArMzUwLDYgQEAgcHJpdmF0ZToKIAogICAg
IFJlZlB0cjxOb2RlPiBtX25vZGVUb0ZvY3VzOwogICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50PiBtX3Jlc291cmNlQWdlbnQ7Ci0gICAgdW5zaWduZWQgbG9uZyBtX21haW5SZXNvdXJj
ZUlkZW50aWZpZXI7CiAgICAgVmVjdG9yPE93blB0cjxDb25zb2xlTWVzc2FnZT4gPiBtX2NvbnNv
bGVNZXNzYWdlczsKICAgICB1bnNpZ25lZCBtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50Owog
ICAgIEhhc2hNYXA8U3RyaW5nLCBkb3VibGU+IG1fdGltZXM7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBmM2E3M2JhMTY1OTMyOWQxMmE4
YjQ1YmM2YTM0MzdiODAwNTY1Yjc3Li45NmYxYmRkYTNjZTc0OTQwNDc4MjI2NTRjM2I3M2U4Y2I0
ZDkyODk0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdC5o
IgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTM3Miw2ICszNzMsNDAgQEAgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2FsY3VsYXRlU3R5bGVJbXBsKGNvbnN0
IEluc3BlY3Rvckluc3RydW1lbnQKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUmVjYWxjdWxh
dGVTdHlsZSgpOwogfQogCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aWRlbnRpZmll
ckZvckluaXRpYWxSZXF1ZXN0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpYywgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCit7CisgICAgaWYgKCFpYy0+ZW5hYmxlZCgpKQorICAgICAgICByZXR1
cm47CisgICAgaWMtPmVuc3VyZVNldHRpbmdzTG9hZGVkKCk7CisKKyAgICBpZiAoSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpYykp
CisgICAgICAgIHJlc291cmNlQWdlbnQtPmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChpZGVu
dGlmaWVyLCByZXF1ZXN0LnVybCgpLCBsb2FkZXIsIGljLT5pc01haW5SZXNvdXJjZUxvYWRlcihs
b2FkZXIsIHJlcXVlc3QudXJsKCkpKTsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxTZW5kUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaWMsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQoreworICAgIGljLT53aWxsU2VuZFJlcXVlc3Qo
aWRlbnRpZmllciwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaWMp
KQorICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsU2VuZFJlc291cmNlUmVxdWVzdChpZGVudGlm
aWVyLCByZXF1ZXN0KTsKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VB
Z2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisgICAgICAgIHJlc291cmNlQWdlbnQt
PndpbGxTZW5kUmVxdWVzdChpZGVudGlmaWVyLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsK
K30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1hcmtSZXNvdXJjZUFzQ2FjaGVk
SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpYywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQor
eworICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmll
dmVSZXNvdXJjZUFnZW50KGljKSkKKyAgICAgICAgcmVzb3VyY2VBZ2VudC0+bWFya1Jlc291cmNl
QXNDYWNoZWQoaWRlbnRpZmllcik7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIq
IGljLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBDYWNoZWRSZXNvdXJjZSogY2FjaGVk
UmVzb3VyY2UpCit7CisgICAgaWYgKCFpYy0+ZW5hYmxlZCgpKQorICAgICAgICByZXR1cm47Cisg
ICAgaWMtPmVuc3VyZVNldHRpbmdzTG9hZGVkKCk7CisgICAgaWYgKEluc3BlY3RvclJlc291cmNl
QWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaWMpKQorICAgICAg
ICByZXNvdXJjZUFnZW50LT5kaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUobG9hZGVyLCBj
YWNoZWRSZXNvdXJjZSk7Cit9CisKIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbChJbnNwZWN0
b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIpCiB7CiAgICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7CkBAIC0zODksNyArNDI0LDcgQEAg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZURhdGFJbXBs
KGNvbnN0IEluc3BlY3Rvckluc3RydW0KICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUmVjZWl2
ZVJlc291cmNlRGF0YSgpOwogfQogCi1JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKElu
c3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJl
c291cmNlUmVzcG9uc2VJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xs
ZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaW50IHRpbWVsaW5lQWdlbnRJ
ZCA9IDA7CiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJp
ZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyKTsKQEAgLTM5Nyw2ICs0MzIsOSBA
QCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcAogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsUmVj
ZWl2ZVJlc291cmNlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogICAgICAgICB0aW1l
bGluZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwogICAgIH0KKyAgICBpZiAoSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChp
bnNwZWN0b3JDb250cm9sbGVyKSkKKyAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkUmVjZWl2ZVJl
c3BvbnNlKGlkZW50aWZpZXIsIGxvYWRlciwgcmVzcG9uc2UpOworICAgIGluc3BlY3RvckNvbnRy
b2xsZXItPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7CiAgICAgcmV0
dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZShpbnNwZWN0b3JDb250cm9sbGVyLCB0
aW1lbGluZUFnZW50SWQpOwogfQogCkBAIC00MDYsNiArNDQ0LDQyIEBAIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoY29uc3QgSW5z
cGVjdG9ySW5zCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFJlY2VpdmVSZXNvdXJjZVJlc3Bv
bnNlKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlQ29u
dGVudExlbmd0aEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaWMsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgaW50IGxlbmd0aFJlY2VpdmVkKQoreworICAgIGlmIChJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGljKSkKKyAgICAg
ICAgcmVzb3VyY2VBZ2VudC0+ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoaWRlbnRpZmllciwgbGVu
Z3RoUmVjZWl2ZWQpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlu
aXNoTG9hZGluZ0ltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaWMsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCit7CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaWMpKQorICAgICAg
ICB0aW1lbGluZUFnZW50LT5kaWRGaW5pc2hMb2FkaW5nUmVzb3VyY2UoaWRlbnRpZmllciwgZmFs
c2UsIGZpbmlzaFRpbWUpOworICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJj
ZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGljKSkKKyAgICAgICAgcmVzb3VyY2VBZ2Vu
dC0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nSW1wbChJbnNwZWN0b3JDb250
cm9sbGVyKiBpYywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikKK3sKKyAgICBpYy0+ZGlkRmFpbExvYWRpbmcoaWRlbnRpZmllciwgZXJyb3IpOwor
ICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVU
aW1lbGluZUFnZW50KGljKSkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRmluaXNoTG9hZGlu
Z1Jlc291cmNlKGlkZW50aWZpZXIsIHRydWUsIDApOworICAgIGlmIChJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGljKSkKKyAgICAg
ICAgcmVzb3VyY2VBZ2VudC0+ZGlkRmFpbExvYWRpbmcoaWRlbnRpZmllciwgZXJyb3IpOworfQor
Cit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0
dHBSZXF1ZXN0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpYywgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpCit7CisgICAgaWMt
PnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1cmwsIHNlbmRVUkwsIHNlbmRMaW5l
TnVtYmVyKTsKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9
IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisgICAgICAgIHJlc291cmNlQWdlbnQtPnNldElu
aXRpYWxDb250ZW50KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZywgIlhIUiIpOworfQorCit2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWRJbXBsKEluc3BlY3RvckNv
bnRyb2xsZXIqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlU3RyaW5nKQoreworICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFn
ZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGljKSkKKyAgICAgICAgcmVzb3VyY2VBZ2VudC0+
c2V0SW5pdGlhbENvbnRlbnQoaWRlbnRpZmllciwgc291cmNlU3RyaW5nLCAiU2NyaXB0Iik7Cit9
CisKIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxXcml0ZUhUTUxJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRy
b2xsZXIsIHVuc2lnbmVkIGludCBsZW5ndGgsIHVuc2lnbmVkIGludCBzdGFydExpbmUpCiB7CiAg
ICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7CkBAIC00OTAsNiArNTY0LDExIEBAIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0cmlldmVUaW1lbGlu
ZUFnZW50KGNvbnN0IEluCiAgICAgcmV0dXJuIDA7CiB9CiAKK0luc3BlY3RvclJlc291cmNlQWdl
bnQqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0cmlldmVSZXNvdXJjZUFnZW50KEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGljKQoreworICAgIHJldHVybiBpYy0+bV9yZXNvdXJjZUFnZW50Lmdl
dCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyAhRU5BQkxFKElO
U1BFQ1RPUikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgK
aW5kZXggN2YyNDFjNDExODRhNDFmYjY3ZTAwMjI5ZjkwYzEwZDdjZmJhNTYzZS4uYmY3YmQzYWJh
YWM4MzI2ZDhlMTNlNGEyNzVmMzJjMjJhZjZhZTQzMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTQxLDEyICs0MSwxNSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBDaGFyYWN0ZXJEYXRhOwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEV2
ZW50Q29udGV4dDsKK2NsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgSW5zcGVjdG9yQ29udHJv
bGxlcjsKK2NsYXNzIEluc3BlY3RvclJlc291cmNlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JUaW1l
bGluZUFnZW50OwogY2xhc3MgS1VSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKIGNsYXNzIFhNTEh0dHBSZXF1ZXN0OwogCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQpAQCAt
OTAsMTAgKzkzLDIwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRQYWludChjb25zdCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNhbGN1bGF0ZVN0eWxlKERvY3VtZW50Kik7CiAgICAg
c3RhdGljIHZvaWQgZGlkUmVjYWxjdWxhdGVTdHlsZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUmKTsKKworICAgIHN0YXRpYyB2b2lkIGlkZW50aWZpZXJGb3JJbml0aWFsUmVx
dWVzdChGcmFtZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFJlcXVlc3Qo
RnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOworICAgIHN0YXRpYyB2b2lkIG1h
cmtSZXNvdXJjZUFzQ2FjaGVkKFBhZ2UqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOworICAg
IHN0YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShQYWdlKiwgRG9jdW1l
bnRMb2FkZXIqLCBjb25zdCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgd2lsbFJlY2VpdmVSZXNvdXJjZURhdGEoRnJhbWUqLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJj
ZURhdGEoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7Ci0gICAgc3RhdGlj
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9u
c2UoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IHdpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShGcmFtZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3Rh
dGljIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoY29uc3QgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llJik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUNvbnRlbnRMZW5n
dGgoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludCBsZW5ndGhSZWNlaXZlZCk7
CisgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhGcmFtZSosIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpOworICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxM
b2FkaW5nKEZyYW1lKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVy
cm9yJik7CisgICAgc3RhdGljIHZvaWQgcmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBz
ZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlcik7CisgICAgc3RhdGljIHZvaWQgc2NyaXB0
SW1wb3J0ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgd2lsbFdyaXRlSFRNTChEb2N1bWVudCosIHVuc2lnbmVkIGludCBs
ZW5ndGgsIHVuc2lnbmVkIGludCBzdGFydExpbmUpOwogICAgIHN0YXRpYyB2b2lkIGRpZFdyaXRl
SFRNTChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCB1bnNpZ25lZCBpbnQg
ZW5kTGluZSk7CiAKQEAgLTE0NywxMCArMTYwLDE5IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZv
aWQgZGlkUGFpbnRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwog
ICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFJlY2FsY3VsYXRl
U3R5bGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNh
bGN1bGF0ZVN0eWxlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsK
KyAgICBzdGF0aWMgdm9pZCBpZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3RJbXBsKEluc3BlY3Rv
ckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIHZvaWQgd2lsbFNlbmRSZXF1ZXN0
SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsK
KyAgICBzdGF0aWMgdm9pZCBtYXJrUmVzb3VyY2VBc0NhY2hlZEltcGwoSW5zcGVjdG9yQ29udHJv
bGxlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CisgICAgc3RhdGljIHZvaWQgZGlkTG9h
ZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgRG9jdW1l
bnRMb2FkZXIqLCBjb25zdCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgd2lsbFJlY2VpdmVSZXNvdXJjZURhdGFJbXBsKEluc3BlY3Rv
ckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHN0YXRpYyB2b2lk
IGRpZFJlY2VpdmVSZXNvdXJjZURhdGFJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSYpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2ls
bFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSk7Cisg
ICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVjZWl2ZVJlc291
cmNlUmVzcG9uc2VJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChjb25zdCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlQ29udGVu
dExlbmd0aEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgaW50IGxlbmd0aFJlY2VpdmVkKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3Vi
bGUgZmluaXNoVGltZSk7CisgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKEluc3Bl
Y3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKKyAgICBzdGF0aWMgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVl
c3RJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlcik7CisgICAgc3RhdGljIHZvaWQgc2Ny
aXB0SW1wb3J0ZWRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKICAgICBzdGF0aWMgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxXcml0ZUhUTUxJbXBsKEluc3BlY3RvckNvbnRyb2xs
ZXIqLCB1bnNpZ25lZCBpbnQgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgc3RhcnRMaW5lKTsKICAgICBz
dGF0aWMgdm9pZCBkaWRXcml0ZUhUTUxJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSYsIHVuc2lnbmVkIGludCBlbmRMaW5lKTsKIApAQCAtMTcxLDYgKzE5Myw3IEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIHZvaWQgY2FuY2VsUGF1c2VPbk5hdGl2ZUV2ZW50KEluc3BlY3Rv
ckNvbnRyb2xsZXIqKTsKICAgICBzdGF0aWMgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogcmV0cmll
dmVUaW1lbGluZUFnZW50KEluc3BlY3RvckNvbnRyb2xsZXIqKTsKICAgICBzdGF0aWMgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCogcmV0cmlldmVUaW1lbGluZUFnZW50KGNvbnN0IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSYpOworICAgIHN0YXRpYyBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
KiByZXRyaWV2ZVJlc291cmNlQWdlbnQoSW5zcGVjdG9yQ29udHJvbGxlciopOwogCiAgICAgc3Rh
dGljIGludCBzX2Zyb250ZW5kQ291bnRlcjsKICNlbmRpZgpAQCAtNDI5LDYgKzQ1MiwzOCBAQCBp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2FsY3VsYXRlU3R5bGUo
Y29uc3QgSW5zcGVjdG9ySW5zdHJ1bQogI2VuZGlmCiB9CiAKK2lubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KEZyYW1lKiBmcmFt
ZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAg
ICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xs
ZXIqIGljID0gZnJhbWUtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICBp
ZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3RJbXBsKGljLCBpZGVudGlmaWVyLCBsb2FkZXIsIHJl
cXVlc3QpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbFNlbmRSZXF1ZXN0KEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9y
Q29udHJvbGxlciogaWMgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQorICAg
ICAgICB3aWxsU2VuZFJlcXVlc3RJbXBsKGljLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZWRpcmVj
dFJlc3BvbnNlKTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246Om1hcmtSZXNvdXJjZUFzQ2FjaGVkKFBhZ2UqIHBhZ2UsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcikKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIG1hcmtSZXNvdXJjZUFzQ2Fj
aGVkSW1wbChwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIGlkZW50aWZpZXIpOyAKKyNlbmRp
ZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExvYWRSZXNv
dXJjZUZyb21NZW1vcnlDYWNoZShQYWdlKiBwYWdlLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBj
b25zdCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikK
KyAgICBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVJbXBsKHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKSwgbG9hZGVyLCByZXNvdXJjZSk7CisjZW5kaWYKK30KKwogaW5saW5lIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxS
ZWNlaXZlUmVzb3VyY2VEYXRhKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCkBAIC00NDYsMTEgKzUwMSwxMSBAQCBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZURhdGEoY29u
c3QgSW5zcGVjdG9ySW5zdAogI2VuZGlmCiB9CiAKLWlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNl
UmVzcG9uc2UoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoraW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNw
b25zZShGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29u
dHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCi0gICAgICAgIHJl
dHVybiB3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIs
IGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKKyAgICAgICAgcmV0dXJuIHdpbGxSZWNlaXZlUmVzb3Vy
Y2VSZXNwb25zZUltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgaWRlbnRpZmllciwgbG9hZGVyLCBy
ZXNwb25zZSk7CiAjZW5kaWYKICAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llKCk7CiB9CkBAIC00NjMsNiArNTE4LDQ2IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoY29uc3QgSW5zcGVjdG9yCiAj
ZW5kaWYKIH0KIAoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlQ29udGVudExlbmd0aChGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
aW50IGxlbmd0aFJlY2VpdmVkKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKElu
c3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9s
bGVyRm9yRnJhbWUoZnJhbWUpKQorICAgICAgICBkaWRSZWNlaXZlQ29udGVudExlbmd0aEltcGwo
aW5zcGVjdG9yQ29udHJvbGxlciwgaWRlbnRpZmllciwgbGVuZ3RoUmVjZWl2ZWQpOworI2VuZGlm
Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9h
ZGluZyhGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlz
aFRpbWUpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShm
cmFtZSkpCisgICAgICAgIGRpZEZpbmlzaExvYWRpbmdJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIs
IGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoRnJhbWUqIGZyYW1lLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworI2lmIEVO
QUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNv
bnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQorICAgICAgICBk
aWRGYWlsTG9hZGluZ0ltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgaWRlbnRpZmllciwgZXJyb3Ip
OworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVz
b3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJp
bmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNl
bmRMaW5lTnVtYmVyKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBjb250ZXh0LT5pbnNwZWN0b3JDb250
cm9sbGVyKCkpCisgICAgICAgIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdEltcGwo
aW5zcGVjdG9yQ29udHJvbGxlciwgaWRlbnRpZmllciwgc291cmNlU3RyaW5nLCB1cmwsIHNlbmRV
UkwsIHNlbmRMaW5lTnVtYmVyKTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJp
bmcpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGNvbnRleHQtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkK
KyAgICAgICAgc2NyaXB0SW1wb3J0ZWRJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGlkZW50aWZp
ZXIsIHNvdXJjZVN0cmluZyk7CisjZW5kaWYKK30KKwogaW5saW5lIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxXcml0ZUhUTUwoRG9j
dW1lbnQqIGRvY3VtZW50LCB1bnNpZ25lZCBpbnQgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgc3RhcnRM
aW5lKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDhmNTQ1Nzg4M2NhN2MzMmExNjY5NmZhYmMwY2Q1
YThhZmNiMWI3MDkuLjJjMDExMTI5OTk0ODY2MjBlMWNmNTI3ZjdjMjRkZTMxMGEwMzIzYjggMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC0yODMs
NyArMjgzLDcgQEAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6fkluc3BlY3RvclJlc291cmNlQWdl
bnQoKQogewogfQogCi12b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmlkZW50aWZpZXJGb3JJ
bml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmIHVybCwg
RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6aWRl
bnRpZmllckZvckluaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
S1VSTCYgdXJsLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBib29sIGlzTWFpblJlc291cmNlKQog
ewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGxvYWRlck9iamVjdCA9IGJ1aWxkT2JqZWN0
Rm9yRG9jdW1lbnRMb2FkZXIobG9hZGVyKTsKICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBj
YWxsU3RhY2sgPSBjcmVhdGVTY3JpcHRDYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxs
U3RhY2tTaXplVG9DYXB0dXJlLCB0cnVlKTsKQEAgLTI5Miw3ICsyOTIsNyBAQCB2b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZQogICAgICAgICBjYWxsU3RhY2tWYWx1ZSA9IGNhbGxTdGFjay0+YnVpbGRJ
bnNwZWN0b3JPYmplY3QoKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxTdGFja1ZhbHVlID0gSW5z
cGVjdG9yVmFsdWU6Om51bGwoKTsKLSAgICBtX2Zyb250ZW5kLT5pZGVudGlmaWVyRm9ySW5pdGlh
bFJlcXVlc3QoaWRlbnRpZmllciwgdXJsLnN0cmluZygpLCBsb2FkZXJPYmplY3QsIGNhbGxTdGFj
a1ZhbHVlKTsKKyAgICBtX2Zyb250ZW5kLT5pZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QoaWRl
bnRpZmllciwgdXJsLnN0cmluZygpLCBsb2FkZXJPYmplY3QsIGlzTWFpblJlc291cmNlLCBjYWxs
U3RhY2tWYWx1ZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRS
ZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCmluZGV4IDFlNzdkNThjODUzNWJkN2VhNjYz
OGQ2NjQ2NGQzNmQ2OWY4NWU1MTUuLmYzZjMyMTFiMjkzMDZiYjI2ZmM2Y2M3ZDdjMmVjZWE5Y2Uw
ZTFiMTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdl
bnQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKQEAg
LTc3LDcgKzc3LDcgQEAgcHVibGljOgogCiAgICAgfkluc3BlY3RvclJlc291cmNlQWdlbnQoKTsK
IAotICAgIHZvaWQgaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgS1VSTCYsIERvY3VtZW50TG9hZGVyKik7CisgICAgdm9pZCBpZGVudGlm
aWVyRm9ySW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJM
JiwgRG9jdW1lbnRMb2FkZXIqLCBib29sIGlzTWFpblJlc291cmNlKTsKICAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgbWFya1Jl
c291cmNlQXNDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBs
YW9kZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggNzQ3MzllMThkYWQ0NWUzYjY0MTg2NGU1NjNj
NmI3NDY1MDk5NTgzNS4uMDgxYTVmMGRiZjQzMGM5MDZjYWVkMzM3OTMzZGJkYmM2Y2JmN2IyYiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTIw
OSwxMiArMjA5LDExIEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkU2NoZWR1bGVS
ZXNvdXJjZVJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgYWRkUmVjb3JkVG9UaW1lbGlu
ZShyZWNvcmQucmVsZWFzZSgpLCBTY2hlZHVsZVJlc291cmNlUmVxdWVzdFRpbWVsaW5lUmVjb3Jk
VHlwZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFNlbmRSZXNvdXJj
ZVJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBib29sIGlzTWFpblJlc291cmNlLAot
ICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6d2lsbFNlbmRSZXNvdXJjZVJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgcHVzaEdDRXZlbnRSZWNv
cmRzKCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVjb3JkID0gVGltZWxpbmVSZWNv
cmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVjb3JkKFdURjo6Y3VycmVudFRpbWVNUygpKTsKLSAg
ICByZWNvcmQtPnNldE9iamVjdCgiZGF0YSIsIFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRl
UmVzb3VyY2VTZW5kUmVxdWVzdERhdGEoaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UsIHJlcXVl
c3QpKTsKKyAgICByZWNvcmQtPnNldE9iamVjdCgiZGF0YSIsIFRpbWVsaW5lUmVjb3JkRmFjdG9y
eTo6Y3JlYXRlUmVzb3VyY2VTZW5kUmVxdWVzdERhdGEoaWRlbnRpZmllciwgcmVxdWVzdCkpOwog
ICAgIHJlY29yZC0+c2V0TnVtYmVyKCJ0eXBlIiwgUmVzb3VyY2VTZW5kUmVxdWVzdFRpbWVsaW5l
UmVjb3JkVHlwZSk7CiAgICAgc2V0SGVhcFNpemVTdGF0aXN0aWMocmVjb3JkLmdldCgpKTsKICAg
ICBtX2Zyb250ZW5kLT5hZGRSZWNvcmRUb1RpbWVsaW5lKHJlY29yZC5yZWxlYXNlKCkpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IGJjMWUwMjdiNGU0
ZmNiNDZjZTIwNGRkZDI4YTdiNzUzNGJjNTcxNTEuLjMzZTI3MzdmYzYyOTkzMmU1MjI3MGMxMDVh
ZWQwZjMwNDgzOTJmYzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmgKQEAgLTExOSw3ICsxMTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRNYXJrTG9hZEV2
ZW50KCk7CiAKICAgICB2b2lkIGRpZFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmlu
ZyYgdXJsKTsKLSAgICB2b2lkIHdpbGxTZW5kUmVzb3VyY2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcs
IGJvb2wgaXNNYWluUmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQg
d2lsbFNlbmRSZXNvdXJjZVJlcXVlc3QodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jik7CiAgICAgdm9pZCB3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UodW5zaWduZWQgbG9u
ZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNl
UmVzcG9uc2UoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdSZXNvdXJjZSh1bnNpZ25lZCBs
b25nLCBib29sIGRpZEZhaWwsIGRvdWJsZSBmaW5pc2hUaW1lKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rv
ci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCmluZGV4IDdmMzM5Y2RlYTMzYTYxOWI3OGI2ZjQx
NDgxMWUxMGQxNDc3Y2U0MDIuLmRkN2YyYmU1MTFlYjkyNGIzYWQ1YzMwODlkMmM1N2MwMWMyNzFh
YTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5j
cHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcApAQCAt
MTI5LDEzICsxMjksMTIgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVj
b3JkRmFjdG9yeTo6Y3JlYXRlU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3QKICAgICByZXR1cm4gZGF0
YS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJl
Y29yZEZhY3Rvcnk6OmNyZWF0ZVJlc291cmNlU2VuZFJlcXVlc3REYXRhKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQorUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9y
eTo6Y3JlYXRlUmVzb3VyY2VTZW5kUmVxdWVzdERhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgZGF0YS0+c2V0
TnVtYmVyKCJpZGVudGlmaWVyIiwgaWRlbnRpZmllcik7CiAgICAgZGF0YS0+c2V0U3RyaW5nKCJ1
cmwiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpKTsKICAgICBkYXRhLT5zZXRTdHJpbmcoInJlcXVl
c3RNZXRob2QiLCByZXF1ZXN0Lmh0dHBNZXRob2QoKSk7Ci0gICAgZGF0YS0+c2V0Qm9vbGVhbigi
aXNNYWluUmVzb3VyY2UiLCBpc01haW5SZXNvdXJjZSk7CiAgICAgcmV0dXJuIGRhdGEucmVsZWFz
ZSgpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZh
Y3RvcnkuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oCmluZGV4
IDVkNGNiNzc0M2YyZmQ4NjRkMmNiN2YwNjIzNWIzNTQ3YzlmYTczMjYuLmZhZmVhZTZmOGVhMjc0
ODdjMTVmN2Y0NzIyZWJiNGVjMjAyNjkxNzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5l
UmVjb3JkRmFjdG9yeS5oCkBAIC02NCw4ICs2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZU1hcmtUaW1l
bGluZURhdGEoY29uc3QgU3RyaW5nJik7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNvdXJjZVNlbmRSZXF1ZXN0RGF0YSh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsCi0gICAgICAgICAgICBib29sIGlzTWFpblJlc291cmNlLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBjcmVhdGVSZXNvdXJjZVNlbmRSZXF1ZXN0RGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gY3JlYXRlU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3REYXRhKGNvbnN0IFN0
cmluZyYpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29y
a01hbmFnZXIuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIu
anMKaW5kZXggYjhjZDQ4MWZhYWI5YjJhOGYwNjcyZjBjZGIyZWZmNmRlNzQ2MDIzOC4uZWI1MjNk
ZTdiZTVlZTk4OTRmMjg1YzRhOWIwNWE2MjllYTUyNzhlMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qcwpAQCAtODYsOCArODYsMTEgQEAgV2ViSW5z
cGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnVwZGF0ZVJlc291cmNlV2l0aENhY2hlZFJlc291cmNlID0g
ZnVuY3Rpb24ocmVzb3VyY2UKIH0KIAogV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3Rv
dHlwZSA9IHsKLSAgICBpZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Q6IGZ1bmN0aW9uKGlkZW50
aWZpZXIsIHVybCwgbG9hZGVyLCBjYWxsU3RhY2spCisgICAgaWRlbnRpZmllckZvckluaXRpYWxS
ZXF1ZXN0OiBmdW5jdGlvbihpZGVudGlmaWVyLCB1cmwsIGxvYWRlciwgaXNNYWluUmVzb3VyY2Us
IGNhbGxTdGFjaykKICAgICB7CisgICAgICAgIGlmIChpc01haW5SZXNvdXJjZSkKKyAgICAgICAg
ICAgIHRoaXMubWFpblJlc291cmNlSWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisKICAgICAgICAg
dmFyIHJlc291cmNlID0gdGhpcy5fY3JlYXRlUmVzb3VyY2UoaWRlbnRpZmllciwgdXJsLCBsb2Fk
ZXIsIGNhbGxTdGFjayk7CiAKICAgICAgICAgLy8gSXQgaXMgaW1wb3J0YW50IHRvIGJpbmQgcmVz
b3VyY2UgdXJsIGVhcmx5IChiZWZvcmUgc2NyaXB0cyBjb21waWxlKS4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKaW5kZXggYTY2MWI3NTdhMjJhNGQxOTQy
MTQzYmU2ZmQyNGRjMzgzMzY3MDg3Yy4uYjg2NTY3YmUwMjFhYThkYTJlMWMzNWEwN2RmYzI4YzBh
MmQwNGFhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5l
UGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwu
anMKQEAgLTI5Nyw4ICsyOTcsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5
cGUgPSB7CiAKICAgICBhZGRSZWNvcmRUb1RpbWVsaW5lOiBmdW5jdGlvbihyZWNvcmQpCiAgICAg
ewotICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQu
UmVjb3JkVHlwZS5SZXNvdXJjZVNlbmRSZXF1ZXN0ICYmIHJlY29yZC5kYXRhLmlzTWFpblJlc291
cmNlKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5fbWFpblJlc291cmNlSWRlbnRpZmllciAhPSBy
ZWNvcmQuZGF0YS5pZGVudGlmaWVyKSB7CisgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PSBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlJlc291cmNlU2VuZFJlcXVlc3QpIHsK
KyAgICAgICAgICAgIHZhciBpc01haW5SZXNvdXJjZSA9IChyZWNvcmQuZGF0YS5pZGVudGlmaWVy
ID09PSBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIubWFpblJlc291cmNlSWRlbnRpZmllcik7
CisgICAgICAgICAgICBpZiAoaXNNYWluUmVzb3VyY2UgJiYgdGhpcy5fbWFpblJlc291cmNlSWRl
bnRpZmllciAhPT0gcmVjb3JkLmRhdGEuaWRlbnRpZmllcikgewogICAgICAgICAgICAgICAgIC8v
IFdlIGFyZSBsb2FkaW5nIG5ldyBtYWluIHJlc291cmNlIC0+IGNsZWFyIHRoZSBwYW5lbC4gQ2hl
Y2sgYWJvdmUgaXMgbmVjZXNzYXJ5IHNpbmNlCiAgICAgICAgICAgICAgICAgLy8gdGhlcmUgbWF5
IGJlIHNldmVyYWwgcmVzb3VyY2UgbG9hZHMgd2l0aCBtYWluIHJlc291cmNlIG1hcmtlciB1cG9u
IHJlZGlyZWN0cywgcmVkaXJlY3RzIGFyZSByZXBvcnRlZCB3aXRoCiAgICAgICAgICAgICAgICAg
Ly8gdGhlIG9yaWdpbmFsIGlkZW50aWZpZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZWY2
OTJiNjc0ZDI1NWZjMTM1OGYxMzQ0OWNhMGEzMDIyYzA4YTA2YS4uMjkxNWVkNWZjZGQ5NmJmYzBj
MzYzMjE2ODlmMWJhOWQ2MDQxMDRkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtNzAsNiAr
NzAsNyBAQAogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIkljb25Mb2FkZXIu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1JTUVU
eXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJNYWluUmVzb3VyY2VMb2FkZXIuaCIKQEAgLTMwMDUs
OSArMzAwNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRlZFJlc291cmNlRnJvbU1lbW9yeUNh
Y2hlKGNvbnN0IENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKCFwYWdlLT5hcmVNZW1vcnlDYWNoZUNsaWVudENhbGxzRW5hYmxlZCgpKSB7Ci0jaWYg
RU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5k
aWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUobV9kb2N1bWVudExvYWRlci5nZXQoKSwgcmVz
b3VyY2UpOwotI2VuZGlmCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9h
ZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKHBhZ2UsIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIHJl
c291cmNlKTsKICAgICAgICAgbV9kb2N1bWVudExvYWRlci0+cmVjb3JkTWVtb3J5Q2FjaGVMb2Fk
Rm9yRnV0dXJlQ2xpZW50Tm90aWZpY2F0aW9uKHJlc291cmNlLT51cmwoKSk7CiAgICAgICAgIG1f
ZG9jdW1lbnRMb2FkZXItPmRpZFRlbGxDbGllbnRBYm91dExvYWQocmVzb3VyY2UtPnVybCgpKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzAxNSw5ICszMDE0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
bG9hZGVkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlKQogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QocmVzb3VyY2UtPnVybCgpKTsKICAg
ICBpZiAobV9jbGllbnQtPmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKG1f
ZG9jdW1lbnRMb2FkZXIuZ2V0KCksIHJlcXVlc3QsIHJlc291cmNlLT5yZXNwb25zZSgpLCByZXNv
dXJjZS0+ZW5jb2RlZFNpemUoKSkpIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBw
YWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNo
ZShtX2RvY3VtZW50TG9hZGVyLmdldCgpLCByZXNvdXJjZSk7Ci0jZW5kaWYKKyAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUocGFn
ZSwgbV9kb2N1bWVudExvYWRlci5nZXQoKSwgcmVzb3VyY2UpOwogICAgICAgICBtX2RvY3VtZW50
TG9hZGVyLT5kaWRUZWxsQ2xpZW50QWJvdXRMb2FkKHJlc291cmNlLT51cmwoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0zMDI1LDkgKzMwMjIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjps
b2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShjb25zdCBDYWNoZWRSZXNvdXJjZSogcmVzb3Vy
Y2UpCiAgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyOwogICAgIFJlc291cmNlRXJyb3IgZXJy
b3I7CiAgICAgcmVxdWVzdEZyb21EZWxlZ2F0ZShyZXF1ZXN0LCBpZGVudGlmaWVyLCBlcnJvcik7
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkt
Pm1hcmtSZXNvdXJjZUFzQ2FjaGVkKGlkZW50aWZpZXIpOwotI2VuZGlmCisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjptYXJrUmVzb3VyY2VBc0NhY2hlZChwYWdlLCBpZGVudGlmaWVyKTsK
ICAgICBub3RpZmllcigpLT5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50
TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXNvdXJjZS0+cmVzcG9uc2UoKSwgcmVzb3VyY2Ut
PmVuY29kZWRTaXplKCksIGVycm9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90
aWZpZXIuY3BwCmluZGV4IGQwMDJlZjM4Y2JmOGUyZDkwYzhlMDNiMDA3OTNlNzRkZWJiMWUyZmUu
LmZlNzQ5Y2I3ZDZhMWVkN2ZlOTFkNjZkZTUzNTY3ZGM3NTkxMWVlYzkgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJD
bGllbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBy
b2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyLmgiCkBAIC02NiwxMiAr
NjYsMTYgQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291
cmNlTG9hZGVyKiBsb2FkZXIsIFJlc291cmNlUmVxdWUKIAogdm9pZCBSZXNvdXJjZUxvYWROb3Rp
Zmllcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHIpCiB7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZVJl
c3BvbnNlKGxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKSwgbG9hZGVyLT5pZGVudGlmaWVy
KCksIGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgcik7CisKICAgICBsb2FkZXItPmRvY3VtZW50
TG9hZGVyKCktPmFkZFJlc3BvbnNlKHIpOwogCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCkpCiAgICAgICAgIHBhZ2UtPnByb2dyZXNzKCktPmluY3JlbWVudFByb2dyZXNzKGxv
YWRlci0+aWRlbnRpZmllcigpLCByKTsKIAogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNl
KGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIHIpOworCisg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShj
b29raWUpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBpbnQg
bGVuZ3RoUmVjZWl2ZWQpCkBAIC05NywyMCArMTAxLDE0IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90
aWZpZXI6OmRpZEZhaWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3Vy
Y2VFCiAgICAgaWYgKCFlcnJvci5pc051bGwoKSkKICAgICAgICAgbV9mcmFtZS0+bG9hZGVyKCkt
PmNsaWVudCgpLT5kaXNwYXRjaERpZEZhaWxMb2FkaW5nKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIo
KSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIGVycm9yKTsKIAotI2lmIEVOQUJMRShJTlNQRUNUT1Ip
Ci0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlkRmFpbExvYWRpbmcobG9hZGVyLT5pZGVudGlmaWVyKCks
IGVycm9yKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExv
YWRpbmcobV9mcmFtZSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIGVycm9yKTsKIH0KIAogdm9pZCBS
ZXNvdXJjZUxvYWROb3RpZmllcjo6YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgp
LT5hc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChpZGVudGlmaWVyLCBsb2FkZXIsIHJl
cXVlc3QpOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoUGFnZSogcGFnZSA9IG1f
ZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5pZGVu
dGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QoaWRlbnRpZmllciwgbG9hZGVyLCByZXF1ZXN0KTsKLSNl
bmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aWRlbnRpZmllckZvckluaXRpYWxS
ZXF1ZXN0KG1fZnJhbWUsIGlkZW50aWZpZXIsIGxvYWRlciwgcmVxdWVzdCk7CiB9CiAKIHZvaWQg
UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQpAQCAtMTI0
LDQwICsxMjIsMjYgQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hXaWxsU2Vu
ZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWcKICAgICBpZiAoIXJlcXVlc3Qu
aXNOdWxsKCkgJiYgb2xkUmVxdWVzdFVSTCAhPSByZXF1ZXN0LnVybCgpLnN0cmluZygpLmltcGwo
KSkKICAgICAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPmRpZFRlbGxD
bGllbnRBYm91dExvYWQocmVxdWVzdC51cmwoKSk7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQot
ICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQotICAgICAgICBwYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPndpbGxTZW5kUmVxdWVzdChpZGVudGlmaWVyLCByZXF1ZXN0LCBy
ZWRpcmVjdFJlc3BvbnNlKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbFNlbmRSZXF1ZXN0KG1fZnJhbWUsIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVz
cG9uc2UpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2Vp
dmVSZXNwb25zZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIpCiB7CiAgICAgbV9mcmFtZS0+bG9hZGVyKCkt
PmNsaWVudCgpLT5kaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShsb2FkZXIsIGlkZW50aWZpZXIs
IHIpOwotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJh
bWUtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaWRSZWNl
aXZlUmVzcG9uc2UoaWRlbnRpZmllciwgbG9hZGVyLCByKTsKLSNlbmRpZgogfQogCiB2b2lkIFJl
c291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGxlbmd0aCkK
IHsKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoRGlkUmVjZWl2ZUNv
bnRlbnRMZW5ndGgobG9hZGVyLCBpZGVudGlmaWVyLCBsZW5ndGgpOwogCi0jaWYgRU5BQkxFKElO
U1BFQ1RPUikKLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAg
cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaWRSZWNlaXZlQ29udGVudExlbmd0aChpZGVu
dGlmaWVyLCBsZW5ndGgpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlQ29udGVudExlbmd0aChtX2ZyYW1lLCBpZGVudGlmaWVyLCBsZW5ndGgpOwogfQog
CiB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmlu
aXNoVGltZSkKIHsKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoRGlk
RmluaXNoTG9hZGluZyhsb2FkZXIsIGlkZW50aWZpZXIpOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RP
UikKLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZpbmlz
aFRpbWUpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hM
b2FkaW5nKG1fZnJhbWUsIGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOwogfQogCiB2b2lkIFJlc291
cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaFRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2Uo
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhZ2UqIG9sZFBhZ2UpCkBAIC0xNzAsOCArMTU0LDEx
IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoVHJhbnNmZXJMb2FkaW5nUmVz
b3VyY2VGcm9tUGFnZSh1bnNpZ25lZCBsb25nCiAKIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6
OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IGludCBsZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIGlmICghcmVz
cG9uc2UuaXNOdWxsKCkpCisgICAgaWYgKCFyZXNwb25zZS5pc051bGwoKSkgeworICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UobG9hZGVyLT5mcmFtZUxvYWRlcigp
LT5mcmFtZSgpLCBpZGVudGlmaWVyLCBsb2FkZXIsIHJlc3BvbnNlKTsKICAgICAgICAgZGlzcGF0
Y2hEaWRSZWNlaXZlUmVzcG9uc2UobG9hZGVyLCBpZGVudGlmaWVyLCByZXNwb25zZSk7CisgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2Uo
Y29va2llKTsKKyAgICB9CiAKICAgICBpZiAobGVuZ3RoID4gMCkKICAgICAgICAgZGlzcGF0Y2hE
aWRSZWNlaXZlQ29udGVudExlbmd0aChsb2FkZXIsIGlkZW50aWZpZXIsIGxlbmd0aCk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZGUzOTk4NjY1Y2JlYmFjMTQwYzM0YjgwMWZjNWQ0
NjIyNzU4MGI0MS4uZWEwZDAyYThmODM0OTQzNmFjYzIxZDI1ZTRkMmQ2YWNlNTQ1YjZiNyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNDIwLDkgKzQyMCw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmCiAgICAgaWYgKGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVI
b3N0KCktPm1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UodGhpcywgcmVzcG9uc2UpKQogICAg
ICAgICByZXR1cm47CiAjZW5kaWYKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
Y29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVz
cG9uc2UobV9mcmFtZS5nZXQoKSwgaWRlbnRpZmllcigpLCByZXNwb25zZSk7CiAgICAgZGlkUmVj
ZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGNvb2tpZSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCwgaW50IGxlbmd0aFJlY2VpdmVkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggNjQ1NGI5MDM0Y2EyYTAxNDE3N2Zk
NTU0OWQ1MDJmODcwNWFkNDNiMS4uZGFjNTRkNWEzYzQxYWZlY2NmZGIwMTE5M2U3YjZmZmZhMjFh
ZWQ0OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRl
ICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTWFpblJlc291cmNlTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiTWFuaWZlc3RQYXJzZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBA
IC00OTYsMjUgKzQ5NywxMyBAQCBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0IEtVUgogICAgIC8vIEJlY2F1
c2Ugd2lsbFNlbmRSZXF1ZXN0IG9ubHkgZ2V0cyBjYWxsZWQgZHVyaW5nIHJlZGlyZWN0cywgd2Ug
aW5pdGlhbGl6ZQogICAgIC8vIHRoZSBpZGVudGlmaWVyIGFuZCB0aGUgZmlyc3Qgd2lsbFNlbmRS
ZXF1ZXN0IGhlcmUuCiAgICAgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyID0gbV9mcmFtZS0+
cGFnZSgpLT5wcm9ncmVzcygpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7Ci0gICAgaWYgKFBh
Z2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yQ29udHJvbGxlciA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAg
ICAgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KG1f
Y3VycmVudFJlc291cmNlSWRlbnRpZmllciwgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9h
ZGVyKCksIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkpOwotICAgICAgICBSZXNvdXJjZVJlc3BvbnNl
IHJlZGlyZWN0UmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKCk7Ci0gICAgICAgIGluc3BlY3Rv
ckNvbnRyb2xsZXItPndpbGxTZW5kUmVxdWVzdChtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIs
IHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwotICAgIH0KKyAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChtX2ZyYW1lLCBtX2N1cnJlbnRS
ZXNvdXJjZUlkZW50aWZpZXIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLCBo
YW5kbGUtPmZpcnN0UmVxdWVzdCgpKTsKKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVz
cG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsU2VuZFJlcXVlc3QobV9mcmFtZSwgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCBy
ZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKICNlbmRpZgogICAgIHJldHVybiBoYW5kbGU7CiB9
CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6Ondp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKLXsKLSAgICAvLyBUaGlz
IG9ubHkgZ2V0cyBjYWxsZWQgYnkgUmVzb3VyY2VIYW5kbGVNYWMgaWYgdGhlcmUgaXMgYSByZWRp
cmVjdC4KLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT53aWxsU2VuZFJlcXVlc3QobV9jdXJyZW50UmVzb3Vy
Y2VJZGVudGlmaWVyLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKLX0KLSNlbmRpZgotCiB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCkBAIC01MjIsOCArNTExLDExIEBAIHZvaWQgQXBwbGljYXRpb25DYWNo
ZUdyb3VwOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3Qg
UmVzCiAgICAgICAgIGlmIChoYW5kbGUgPT0gbV9tYW5pZmVzdEhhbmRsZSkgewogICAgICAgICAg
ICAgaWYgKEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCogYXBwbGljYXRpb25DYWNoZUFn
ZW50ID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hcHBsaWNhdGlvbkNhY2hlQWdlbnQo
KSkKICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkNhY2hlQWdlbnQtPmRpZFJlY2VpdmVNYW5p
ZmVzdFJlc3BvbnNlKG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwgcmVzcG9uc2UpOwotICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlk
UmVjZWl2ZVJlc3BvbnNlKG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwgbV9mcmFtZS0+bG9h
ZGVyKCktPmRvY3VtZW50TG9hZGVyKCksIHJlc3BvbnNlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9j
dW1lbnRMb2FkZXIoKTsKKyAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VS
ZXNwb25zZShtX2ZyYW1lLCBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIGxvYWRlciwgcmVz
cG9uc2UpOworICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZl
UmVzb3VyY2VSZXNwb25zZShjb29raWUpOworICAgICAgICB9CiAgICAgfQogI2VuZGlmCiAKQEAg
LTU5MywxMiArNTg1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXMKIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNv
bnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGludCBsZW5ndGhSZWNlaXZlZCkKIHsKLSNpZiBF
TkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQot
ICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpZFJlY2VpdmVDb250ZW50TGVu
Z3RoKG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwgbGVuZ3RoUmVjZWl2ZWQpOwotI2Vsc2UK
LSAgICBVTlVTRURfUEFSQU0obGVuZ3RoUmVjZWl2ZWQpOwotI2VuZGlmCisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlQ29udGVudExlbmd0aChtX2ZyYW1lLCBtX2N1cnJl
bnRSZXNvdXJjZUlkZW50aWZpZXIsIGxlbmd0aFJlY2VpdmVkKTsKIAogICAgIGlmIChoYW5kbGUg
PT0gbV9tYW5pZmVzdEhhbmRsZSkgewogICAgICAgICBkaWRSZWNlaXZlTWFuaWZlc3REYXRhKGRh
dGEsIGxlbmd0aCk7CkBAIC02MTUsMTAgKzYwMiw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdy
b3VwOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBjaGFyKiBk
CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIGRvdWJsZSBmaW5pc2hUaW1lKQogewotI2lmIEVOQUJMRShJTlNQRUNU
T1IpCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgIHBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlkRmluaXNoTG9hZGluZyhtX2N1cnJlbnRSZXNvdXJj
ZUlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKG1fZnJhbWUsIG1fY3VycmVudFJlc291cmNlSWRlbnRp
ZmllciwgZmluaXNoVGltZSk7CiAKICAgICBpZiAoaGFuZGxlID09IG1fbWFuaWZlc3RIYW5kbGUp
IHsKICAgICAgICAgZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCk7CkBAIC02NTcsMTIgKzY0MSw3
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIGRvdWJsZSBmaW5pCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpkaWRGYWlsKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQogewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2Zy
YW1lLT5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlkRmFp
bExvYWRpbmcobV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCBlcnJvcik7Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTShlcnJvcik7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEZhaWxMb2FkaW5nKG1fZnJhbWUsIG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwg
ZXJyb3IpOwogCiAgICAgaWYgKGhhbmRsZSA9PSBtX21hbmlmZXN0SGFuZGxlKSB7CiAgICAgICAg
IGNhY2hlVXBkYXRlRmFpbGVkKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBiL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5oCmluZGV4IDI5ZDA3NDlkOGY2N2VjODhlYjI4YzlhOGIwYmEzMGNj
NWRiZmNlNjkuLjJkOGI4M2UxYzc0OGEwOWQwMTU4OTc5NDY5OTI2NzkzNTdjZTMzYjMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCisr
KyBiL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCkBAIC0x
MTAsOSArMTEwLDYgQEAgcHJpdmF0ZToKICAgICAvLyB0aGUgZXhpc3RpbmcgY2xpZW50IGNhbGxi
YWNrIGNhbm5vdCBiZSB1c2VkLCBzbyBhc3N1bWUgdGhhdCBhbnkgY2xpZW50IHRoYXQgZW5hYmxl
cyBhcHBsaWNhdGlvbiBjYWNoZSBhbHNvIHdhbnRzIGl0IHRvIHVzZSBjcmVkZW50aWFsIHN0b3Jh
Z2UuCiAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNl
SGFuZGxlKikgeyByZXR1cm4gdHJ1ZTsgfQogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICB2
aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotI2VuZGlmCiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBjaGFyKiwgaW50IGxlbmd0aCwgaW50IGxlbmd0aFJlY2VpdmVkKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSBmaW5pc2hUaW1l
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3Np
dG9yeS5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnku
Y3BwCmluZGV4IDRhOGU5NDczMWJhYTYyMGRiZTlkZjVkMzQwOTc3YjA5OWIwYTA2NDQuLjNhMTRi
NjJkZTVjMjc1ZGMxOTUxYmM1NDljYzBkOWY5ZTkxNWIyYmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
d29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKKysrIGIvV2ViQ29yZS93
b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcApAQCAtMzcsNyArMzcsNyBA
QAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFz
ay5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKQEAgLTI5MSwxMCArMjkxLDcgQEAgdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkKICAgICBpZiAobV9zY3JpcHRMb2FkZXItPmZhaWxlZCgp
KQogICAgICAgICBtX3dvcmtlci0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgdHJ1ZSkpOwogICAgIGVsc2UgewotI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCi0gICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3IgPSBt
X3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkp
Ci0gICAgICAgICAgICBpbnNwZWN0b3ItPnNjcmlwdEltcG9ydGVkKG1fc2NyaXB0TG9hZGVyLT5p
ZGVudGlmaWVyKCksIG1fc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSk7Ci0jZW5kaWYKKyAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZChtX3dvcmtlci0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBtX3NjcmlwdExvYWRlci0+aWRlbnRpZmllcigpLCBtX3Njcmlw
dExvYWRlci0+c2NyaXB0KCkpOwogICAgICAgICBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9y
eTo6aW5zdGFuY2UoKS53b3JrZXJTY3JpcHRMb2FkZWQoKm1fcHJveHksIG1fd29ya2VyLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPnVzZXJBZ2VudChtX3NjcmlwdExvYWRlci0+dXJsKCkpLCBt
X3NjcmlwdExvYWRlci0+c2NyaXB0KCksIG1fcG9ydC5yZWxlYXNlKCkpOwogICAgIH0KICAgICBt
X3dvcmtlci0+dW5zZXRQZW5kaW5nQWN0aXZpdHkobV93b3JrZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNw
cAppbmRleCAzMmVjOTk3NTYyYmY3MjI5ODI2MGMxNmFiYmY0OWNjOTc3M2FjN2U4Li44YTJmNjJh
ZTJhM2YxOGRjNzRkMjE2ODhjZWQxNzExMWMwODdiYzIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyLmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcApAQCAtNDEs
NiArNDEsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiVGV4
dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dFByb3h5LmgiCkBAIC0xMzUsMTAg
KzEzNiw3IEBAIHZvaWQgV29ya2VyOjpub3RpZnlGaW5pc2hlZCgpCiAgICAgICAgIGRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIHRydWUp
KTsKICAgICBlbHNlIHsKICAgICAgICAgbV9jb250ZXh0UHJveHktPnN0YXJ0V29ya2VyQ29udGV4
dChtX3NjcmlwdExvYWRlci0+dXJsKCksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXNlckFn
ZW50KG1fc2NyaXB0TG9hZGVyLT51cmwoKSksIG1fc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSk7Ci0j
aWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvciA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
KQotICAgICAgICAgICAgaW5zcGVjdG9yLT5zY3JpcHRJbXBvcnRlZChtX3NjcmlwdExvYWRlci0+
aWRlbnRpZmllcigpLCBtX3NjcmlwdExvYWRlci0+c2NyaXB0KCkpOwotI2VuZGlmCisgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBtX3NjcmlwdExvYWRlci0+aWRlbnRpZmllcigpLCBtX3NjcmlwdExvYWRlci0+
c2NyaXB0KCkpOwogICAgIH0KICAgICBtX3NjcmlwdExvYWRlciA9IDA7CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcCBiL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0LmNwcAppbmRleCAzNDVlNWI3NjA0NzJiYzFiMmY4MmI5YzdlYzU3OWNjMGQ4MGQ0
ZDViLi42YzUwZjFhMjI0NzNkMzFhOGMyN2RlODA1ZjAyZGFmMGRhYWJkMzlmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckNvbnRleHQuY3BwCkBAIC00Miw3ICs0Miw3IEBACiAjaW5jbHVkZSAiRXJyb3JFdmVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKLSNp
bmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Lmgi
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKQEAgLTI0NSwxMCArMjQ1LDcgQEAgdm9pZCBX
b3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzLCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0jaWYg
RU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvciA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQot
ICAgICAgICAgICAgaW5zcGVjdG9yLT5zY3JpcHRJbXBvcnRlZChzY3JpcHRMb2FkZXIuaWRlbnRp
ZmllcigpLCBzY3JpcHRMb2FkZXIuc2NyaXB0KCkpOwotI2VuZGlmCisgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IHNjcmlwdExvYWRlci5pZGVudGlmaWVyKCksIHNjcmlwdExvYWRlci5zY3JpcHQoKSk7CiAKICAg
ICAgICAgU2NyaXB0VmFsdWUgZXhjZXB0aW9uOwogICAgICAgICBtX3NjcmlwdC0+ZXZhbHVhdGUo
U2NyaXB0U291cmNlQ29kZShzY3JpcHRMb2FkZXIuc2NyaXB0KCksICppdCksICZleGNlcHRpb24p
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGZjN2ViOWUyZDQ5NTVhMjY5MjUwZTQ5ZGEyYTU5
ZjNmZGQxZDhhNDguLmQ4NjY5NDc0YjEwMGJlN2MxNTQxYmEwZjQwMTE3ZWRlZGY0ZDc1ZTAgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCi0jaW5j
bHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlcXVlc3QuaCIKQEAgLTEwMDIsMTAgKzEwMDEsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0Ojpk
aWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKICAgICAvLyBGSVhNRTog
U2V0IG1fcmVzcG9uc2VCbG9iIHRvIHNvbWV0aGluZyBoZXJlIGluIHRoZSBSZXNwb25zZVR5cGVC
bG9iIGNhc2UuCiAjZW5kaWYKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGluc3BlY3RvciA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICBpbnNwZWN0b3ItPnJlc291cmNlUmV0cmlldmVk
QnlYTUxIdHRwUmVxdWVzdChpZGVudGlmaWVyLCBtX3Jlc3BvbnNlQnVpbGRlci50b1N0cmluZ1By
ZXNlcnZlQ2FwYWNpdHkoKSwgbV91cmwsIG1fbGFzdFNlbmRVUkwsIG1fbGFzdFNlbmRMaW5lTnVt
YmVyKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVzb3VyY2VSZXRy
aWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaWRlbnRpZmll
ciwgbV9yZXNwb25zZUJ1aWxkZXIudG9TdHJpbmdQcmVzZXJ2ZUNhcGFjaXR5KCksIG1fdXJsLCBt
X2xhc3RTZW5kVVJMLCBtX2xhc3RTZW5kTGluZU51bWJlcik7CiAKICAgICBib29sIGhhZExvYWRl
ciA9IG1fbG9hZGVyOwogICAgIG1fbG9hZGVyID0gMDsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGYwZTU3ODRm
OGE2M2ZiMTQ1YjgwMDc1NDdiMzE4MWE0ZTVmMzBhN2IuLjNhODE3NDM3YTYxYWM1Yjg4ZDIxMzc5
NDdlNTVhYTUxYzQwZWIzOTYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEwLTEy
LTI5ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGluc3BlY3Rvci90aW1lbGluZS1u
ZXR3b3JrLXJlc291cmNlLmh0bWwgZmFpbHMgd2hlbiBydW4gdHdpY2UKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3Mzk0CisKKyAgICAgICAgU2VuZCBk
aWRSZWNlaXZlUmVzcG9uc2Ugbm90aWZpY2F0aW9uIHRvIHRoZSB0aW1lbGluZSBhZ2VudCBmcm9t
IFJlc291cmNlTG9hZE5vdGlmaWVyCisgICAgICAgIGluc3RlYWQgb2YgUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZSB0byBjb3ZlciB0aGUgY2FzZXMgd2hlbiByZXNvdXJjZXMKKyAg
ICAgICAgYXJlIGxvYWRlZCBmcm9tIG1lbW9yeSBjYWNoZS4KKworICAgICAgICBOZXR3b3JrIG5v
dGlmaWNhdGlvbnMgYXJlIG5vdyBzZW50IHRvIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiB3aGlj
aCBkaXNwYXRjaGVzCisgICAgICAgIHRoZW0gdG8gaW50ZXJlc3RlZCBhZ2VudHMgYW5kIEluc3Bl
Y3RvckNvbnRyb2xsZXIuCisKKyAgICAgICAgKiBzcmMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlmeUZp
bmlzaGVkKToKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6bWFpbkZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJbXBsOjp3aWxsU2VuZFJlcXVlc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlkRmFpbExv
YWRpbmcpOgorICAgICAgICAqIHNyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oOgorCiAyMDEwLTEy
LTIzICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNzQ1NjEuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAppbmRleCA4OGQzZWM1NGZlODc4NmVjNTQzMjAx
MzQ3YjUzZGRmNzBkYzUzNWJmLi4zZDQ0MjhhYzRhNjRmZjlhYzkzMjcxMjJiNjgyZTVkMmMxNzI1
NTZmIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1NoYXJlZFdvcmtlclJlcG9zaXRv
cnkuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5j
cHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydENoYW5uZWwu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKQEAgLTE2MiwxMCArMTYyLDcgQEAgdm9pZCBTaGFyZWRX
b3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkKICAgICAgICAgbV93b3JrZXItPmRp
c3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2Us
IHRydWUpKTsKICAgICAgICAgZGVsZXRlIHRoaXM7CiAgICAgfSBlbHNlIHsKLSNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotICAgICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yID0g
bV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
KQotICAgICAgICAgICAgaW5zcGVjdG9yLT5zY3JpcHRJbXBvcnRlZChtX3NjcmlwdExvYWRlci5p
ZGVudGlmaWVyKCksIG1fc2NyaXB0TG9hZGVyLnNjcmlwdCgpKTsKLSNlbmRpZgorICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKG1fd29ya2VyLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIG1fc2NyaXB0TG9hZGVyLmlkZW50aWZpZXIoKSwgbV9zY3JpcHRM
b2FkZXIuc2NyaXB0KCkpOwogICAgICAgICAvLyBQYXNzIHRoZSBzY3JpcHQgb2ZmIHRvIHRoZSB3
b3JrZXIsIHRoZW4gc2VuZCBhIGNvbm5lY3QgZXZlbnQuCiAgICAgICAgIG1fd2ViV29ya2VyLT5z
dGFydFdvcmtlckNvbnRleHQobV91cmwsIG1fbmFtZSwgbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+dXNlckFnZW50KG1fdXJsKSwgbV9zY3JpcHRMb2FkZXIuc2NyaXB0KCksIG1f
cmVzcG9uc2VBcHBDYWNoZUlEKTsKICAgICAgICAgc2VuZENvbm5lY3QoKTsKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKaW5kZXggOWY0Y2U4N2U4OWIyZDcy
ZGJjYzVjNjk0MDQzMjQzZjJiZjc3ZTEzMS4uOWFiMmZlNTUzMjMxNjIxNzRkYTU5ZjllNjBiMWMz
Y2NmZDZlYWYxZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Fn
ZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1w
bC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKQEAgLTY5LDYgKzcwLDggQEAgdXNpbmcgV2ViQ29yZTo6SW5qZWN0ZWRT
Y3JpcHRIb3N0OwogdXNpbmcgV2ViQ29yZTo6SW5zcGVjdG9yQXJyYXk7CiB1c2luZyBXZWJDb3Jl
OjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKIHVzaW5nIFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI7Cit1c2luZyBXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb247Cit1c2lu
ZyBXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWU7CiB1c2luZyBXZWJDb3Jl
OjpOb2RlOwogdXNpbmcgV2ViQ29yZTo6UGFnZTsKIHVzaW5nIFdlYkNvcmU6OlJlc291cmNlRXJy
b3I7CkBAIC0zMDIsMjUgKzMwNSwzMCBAQCBXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKiBX
ZWJEZXZUb29sc0FnZW50SW1wbDo6aW5zcGVjdG9yQ29udHJvbGxlcigpCiAgICAgcmV0dXJuIDA7
CiB9CiAKK1dlYkNvcmU6OkZyYW1lKiBXZWJEZXZUb29sc0FnZW50SW1wbDo6bWFpbkZyYW1lKCkK
K3sKKyAgICBpZiAoUGFnZSogcGFnZSA9IG1fd2ViVmlld0ltcGwtPnBhZ2UoKSkKKyAgICAgICAg
cmV0dXJuIHBhZ2UtPm1haW5GcmFtZSgpOworICAgIHJldHVybiAwOworfQorCiAKIC8vLS0tLS0t
LSBwbHVnaW4gcmVzb3VyY2UgbG9hZCBub3RpZmljYXRpb25zIC0tLS0tLS0tLS0tLS0tLQogdm9p
ZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KAogICAg
IHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VJZCwKLSAgICBXZWJGcmFtZSogZnJhbWUsCisgICAgV2Vi
RnJhbWUqIHdlYkZyYW1lLAogICAgIGNvbnN0IFdlYlVSTFJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0g
ICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW5zcGVjdG9yQ29udHJvbGxlcigpKSB7
Ci0gICAgICAgIFdlYkZyYW1lSW1wbCogd2ViRnJhbWVJbXBsID0gc3RhdGljX2Nhc3Q8V2ViRnJh
bWVJbXBsKj4oZnJhbWUpOwotICAgICAgICBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSB3ZWJG
cmFtZUltcGwtPmZyYW1lKCktPmxvYWRlcigpOwotICAgICAgICBEb2N1bWVudExvYWRlciogbG9h
ZGVyID0gZnJhbWVMb2FkZXItPmFjdGl2ZURvY3VtZW50TG9hZGVyKCk7Ci0gICAgICAgIGljLT5p
ZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QocmVzb3VyY2VJZCwgbG9hZGVyLCByZXF1ZXN0LnRv
UmVzb3VyY2VSZXF1ZXN0KCkpOwotICAgIH0KKyAgICBXZWJGcmFtZUltcGwqIHdlYkZyYW1lSW1w
bCA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KHdlYkZyYW1lKTsKKyAgICBXZWJDb3JlOjpG
cmFtZSogZnJhbWUgPSB3ZWJGcmFtZUltcGwtPmZyYW1lKCk7CisgICAgRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKTsKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChmcmFt
ZSwgcmVzb3VyY2VJZCwgbG9hZGVyLCByZXF1ZXN0LnRvUmVzb3VyY2VSZXF1ZXN0KCkpOwogfQog
CiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9u
ZyByZXNvdXJjZUlkLCBXZWJVUkxSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmIChJbnNwZWN0
b3JDb250cm9sbGVyKiBpYyA9IGluc3BlY3RvckNvbnRyb2xsZXIoKSkgewotICAgICAgICBpYy0+
d2lsbFNlbmRSZXF1ZXN0KHJlc291cmNlSWQsIHJlcXVlc3QudG9NdXRhYmxlUmVzb3VyY2VSZXF1
ZXN0KCksIFJlc291cmNlUmVzcG9uc2UoKSk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbFNlbmRSZXF1ZXN0KG1haW5GcmFtZSgpLCByZXNvdXJjZUlkLCByZXF1ZXN0LnRv
TXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLCBSZXNvdXJjZVJlc3BvbnNlKCkpOwogICAgICAgICBp
ZiAoaWMtPmhhc0Zyb250ZW5kKCkgJiYgcmVxdWVzdC5yZXBvcnRMb2FkVGltaW5nKCkpCiAgICAg
ICAgICAgICByZXF1ZXN0LnNldFJlcG9ydFJhd0hlYWRlcnModHJ1ZSk7CiAgICAgfQpAQCAtMzI4
LDI3ICszMzYsMjMgQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6d2lsbFNlbmRSZXF1ZXN0
KHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VJZCwgV2ViVVJMUmVxdWUKIAogdm9pZCBXZWJEZXZUb29s
c0FnZW50SW1wbDo6ZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZyByZXNvdXJjZUlkLCBpbnQg
bGVuZ3RoKQogewotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpYyA9IGluc3BlY3RvckNv
bnRyb2xsZXIoKSkKLSAgICAgICAgaWMtPmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKHJlc291cmNl
SWQsIGxlbmd0aCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlQ29u
dGVudExlbmd0aChtYWluRnJhbWUoKSwgcmVzb3VyY2VJZCwgbGVuZ3RoKTsKIH0KIAogdm9pZCBX
ZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgcmVz
b3VyY2VJZCwgY29uc3QgV2ViVVJMUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIGlmIChJbnNw
ZWN0b3JDb250cm9sbGVyKiBpYyA9IGluc3BlY3RvckNvbnRyb2xsZXIoKSkKLSAgICAgICAgaWMt
PmRpZFJlY2VpdmVSZXNwb25zZShyZXNvdXJjZUlkLCAwLCByZXNwb25zZS50b1Jlc291cmNlUmVz
cG9uc2UoKSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1haW5G
cmFtZSgpLCByZXNvdXJjZUlkLCAwLCByZXNwb25zZS50b1Jlc291cmNlUmVzcG9uc2UoKSk7Cisg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShj
b29raWUpOwogfQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkaWRGaW5pc2hMb2FkaW5n
KHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VJZCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxl
ciogaWMgPSBpbnNwZWN0b3JDb250cm9sbGVyKCkpCi0gICAgICAgIGljLT5kaWRGaW5pc2hMb2Fk
aW5nKHJlc291cmNlSWQsIDApOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlu
aXNoTG9hZGluZyhtYWluRnJhbWUoKSwgcmVzb3VyY2VJZCwgMCk7CiB9CiAKIHZvaWQgV2ViRGV2
VG9vbHNBZ2VudEltcGw6OmRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VJZCwg
Y29uc3QgV2ViVVJMRXJyb3ImIGVycm9yKQogewotICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VF
cnJvcjsKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaWMgPSBpbnNwZWN0b3JDb250cm9s
bGVyKCkpCi0gICAgICAgIGljLT5kaWRGYWlsTG9hZGluZyhyZXNvdXJjZUlkLCByZXNvdXJjZUVy
cm9yKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKG1haW5G
cmFtZSgpLCByZXNvdXJjZUlkLCBlcnJvcik7CiB9CiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudElt
cGw6Omluc3BlY3RvckRlc3Ryb3llZCgpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkRldlRvb2xzQWdlbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xz
QWdlbnRJbXBsLmgKaW5kZXggNDg3Y2YwYzU3NGJkNDgyZGY5ZjQ5YjQ4M2IxM2VlZjBlOWM4YWM5
ZC4uMWIxZjgyNjRhZGM5MGU4ZWI1Mjc0N2VkOGU0NDBiYjAyM2JmNTdhOSAxMDA2NDQKLS0tIGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oCisrKyBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaApAQCAtMTA0LDYgKzEwNCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjb25uZWN0RnJvbnRlbmQoYm9vbCBhZnRlck5hdmlnYXRpb24pOwog
CiAgICAgV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcigp
OworICAgIFdlYkNvcmU6OkZyYW1lKiBtYWluRnJhbWUoKTsKIAogICAgIGludCBtX2hvc3RJZDsK
ICAgICBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBtX2NsaWVudDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78529</attachid>
            <date>2011-01-11 07:41:43 -0800</date>
            <delta_ts>2011-01-12 02:40:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37394-20110111184140.patch</filename>
            <type>text/plain</type>
            <size>72119</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMzM3ZTUwMzIzYWE5ODUzMTg2NmE1YTYzYWQ4YWQ1ZmQxZWE4ZDFlLi4wNDQzM2Zh
ZmViZjVmYzI4MDAwMzM1MjhlYmFlMjMzNzI1NTBmMGRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTAtMTItMjkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaW5zcGVjdG9yL3Rp
bWVsaW5lLW5ldHdvcmstcmVzb3VyY2UuaHRtbCBmYWlscyB3aGVuIHJ1biB0d2ljZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzczOTQKKworICAgICAg
ICBTZW5kIGRpZFJlY2VpdmVSZXNwb25zZSBub3RpZmljYXRpb24gdG8gdGhlIHRpbWVsaW5lIGFn
ZW50IGZyb20gUmVzb3VyY2VMb2FkTm90aWZpZXIKKyAgICAgICAgaW5zdGVhZCBvZiBSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlIHRvIGNvdmVyIHRoZSBjYXNlcyB3aGVuIHJlc291
cmNlcworICAgICAgICBhcmUgbG9hZGVkIGZyb20gbWVtb3J5IGNhY2hlLgorCisgICAgICAgIE5l
dHdvcmsgbm90aWZpY2F0aW9ucyBhcmUgbm93IHNlbmQgdG8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uIHdoaWNoIGRpc3BhdGNoZXMKKyAgICAgICAgdGhlbSB0byBpbnRlcmVzdGVkIGFnZW50cyBh
bmQgSW5zcGVjdG9yQ29udHJvbGxlci4KKyAgICAgICAgZml4CisKKyAgICAgICAgKiBpbnNwZWN0
b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5z
cGVjdG9yL3RpbWVsaW5lLW5ldHdvcmstcmVzb3VyY2UuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS5qczoKKwogMjAxMC0xMi0yNyAgU2hpbmljaGly
byBIYW1hamkgIDxzaGluaWNoaXJvLmhhbWFqaUBnbWFpbC5jb20+CiAKICAgICAgICAgQ2hyb21p
dW0gZXhwZWN0YXRpb24gdXBkYXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3RpbWVsaW5lLW5ldHdvcmstcmVzb3VyY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3RpbWVsaW5lLW5ldHdvcmstcmVzb3VyY2UtZXhwZWN0ZWQudHh0CmluZGV4IGQ5NDE4
Y2E4MDI5OGZmM2Q3NzE4MjU2NTNjZTI2MDM4Mzc2MGZhNDkuLjkyNjk3NzVhMTUyNTdiZDQ5YTcz
YjNmOTRjZjdkYzNkMjEzMDA2NzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS1leHBlY3RlZC50eHQKQEAgLTgsNyAr
OCw2IEBAIFJlc291cmNlU2VuZFJlcXVlc3QgUHJvcGVydGllczoKICAgICAgICAgaWRlbnRpZmll
ciA6IDxudW1iZXI+CiAgICAgICAgIHVybCA6IDxzdHJpbmc+CiAgICAgICAgIHJlcXVlc3RNZXRo
b2QgOiAiR0VUIgotICAgICAgICBpc01haW5SZXNvdXJjZSA6IGZhbHNlCiAgICAgfQogICAgIHR5
cGUgOiAxMgogICAgIHVzZWRIZWFwU2l6ZSA6IDxudW1iZXI+CkBAIC0yMiw3ICsyMSw3IEBAIFJl
c291cmNlUmVjZWl2ZVJlc3BvbnNlIFByb3BlcnRpZXM6CiAgICAgICAgIGlkZW50aWZpZXIgOiA8
bnVtYmVyPgogICAgICAgICBzdGF0dXNDb2RlIDogMAogICAgICAgICBtaW1lVHlwZSA6IDxzdHJp
bmc+Ci0gICAgICAgIGV4cGVjdGVkQ29udGVudExlbmd0aCA6IDIxMAorICAgICAgICBleHBlY3Rl
ZENvbnRlbnRMZW5ndGggOiAyMDgKICAgICAgICAgdXJsIDogPHN0cmluZz4KICAgICB9CiAgICAg
Y2hpbGRyZW4gOiA8b2JqZWN0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Rp
bWVsaW5lLW5ldHdvcmstcmVzb3VyY2UuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1l
bGluZS1uZXR3b3JrLXJlc291cmNlLmh0bWwKaW5kZXggZmUyOGVkM2I4ZWRiZThlYzVlMWM3YWRk
MWQ4NTI0OWNhMGU3MDJmNy4uNzI4NmZiNmFhYzg4MmFjODFhZGNiYWRmMTU0M2Y2NzU0OTA1MTE2
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLW5ldHdvcmstcmVz
b3VyY2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1y
ZXNvdXJjZS5odG1sCkBAIC02LDE2ICs2LDE2IEBACiAKIHZhciBzY3JpcHRVcmwgPSAidGltZWxp
bmUtbmV0d29yay1yZXNvdXJjZS5qcyI7CiAKLWZ1bmN0aW9uIHJ1bkFmdGVyU2NyaXB0SXNFdmFs
dWF0ZWQoY29udGludWF0aW9uKQorZnVuY3Rpb24gcnVuQWZ0ZXJTY3JpcHRJc0V2YWx1YXRlZCgp
CiB7Ci0gICAgZnVuY3Rpb24gc3RlcCgpCi0gICAgewotICAgICAgICBpZiAoIXdpbmRvdy5zY3Jp
cHRFdmFsdWF0ZWQpCi0gICAgICAgICAgICBzZXRUaW1lb3V0KHN0ZXAsIDEwMCk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGNvbnRpbnVhdGlvbigpOwotICAgIH0KLSAgICBzZXRUaW1lb3V0
KHN0ZXAsIDEwMCk7CisgICAgcHJpbnRUaW1lbGluZVJlY29yZHMobnVsbCwgbnVsbCwgZnVuY3Rp
b24ocmVjb3JkKSB7CisgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJl
Y29yZFR5cGVbIlJlc291cmNlU2VuZFJlcXVlc3QiXSkKKyAgICAgICAgICAgIHByaW50U2VuZChy
ZWNvcmQpOworICAgICAgICBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJl
Y29yZFR5cGVbIlJlc291cmNlUmVjZWl2ZVJlc3BvbnNlIl0pCisgICAgICAgICAgICBwcmludFJl
Y2VpdmUocmVjb3JkKTsKKyAgICAgICAgZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IHRpbWVsaW5l
QWdlbnRSZWNvcmRUeXBlWyJSZXNvdXJjZUZpbmlzaCJdKQorICAgICAgICAgICAgcHJpbnRGaW5p
c2gocmVjb3JkKTsKKyAgICB9KTsKIH0KIAogZnVuY3Rpb24gcHJpbnRSZWNvcmQocmVjb3JkKQpA
QCAtNjAsMTcgKzYwLDYgQEAgZnVuY3Rpb24gZG9pdCgpCiAgICAgdmFyIHNjcmlwdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOwogICAgIHNjcmlwdC5zcmMgPSBzY3JpcHRVcmw7
CiAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpOwotICAgIHJ1bkFmdGVyU2Ny
aXB0SXNFdmFsdWF0ZWQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHByaW50VGltZWxpbmVSZWNvcmRz
KG51bGwsIG51bGwsIGZ1bmN0aW9uKHJlY29yZCkgewotICAgICAgICAgICAgaWYgKHJlY29yZC50
eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZVsiUmVzb3VyY2VTZW5kUmVxdWVzdCJdKQot
ICAgICAgICAgICAgICAgIHByaW50U2VuZChyZWNvcmQpOwotICAgICAKLSAgICAgICAgICAgIGVs
c2UgaWYgKHJlY29yZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZVsiUmVzb3VyY2VS
ZWNlaXZlUmVzcG9uc2UiXSkKLSAgICAgICAgICAgICAgICBwcmludFJlY2VpdmUocmVjb3JkKTsK
LSAgICAgICAgICAgIGVsc2UgaWYgKHJlY29yZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3Jk
VHlwZVsiUmVzb3VyY2VGaW5pc2giXSkKLSAgICAgICAgICAgICAgICBwcmludEZpbmlzaChyZWNv
cmQpOwotICAgICAgICB9KTsKLSAgICB9KTsKIH0KIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS5qcyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmpzCmluZGV4IDZmZTBk
MThkODAwZWQ3ZTAwZDFiZTgyMDg4ODNhMzA2YzA5NGVhNDkuLmRlN2M3MjBmNThmNzc3OWNiYmY2
Y2U3MTU3YjI1MWY2MTUyOWQwNWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmpzCkBAIC0zLDQgKzMsNCBAQAogdmFyIGVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKIGVsZW1lbnQuaW5uZXJIVE1MID0gIlNj
cmlwdCByZXNvdXJjZSBsb2FkZWQiOwogZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50
KTsKLXdpbmRvdy5zY3JpcHRFdmFsdWF0ZWQgPSB0cnVlOworcnVuQWZ0ZXJTY3JpcHRJc0V2YWx1
YXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDhkYmM3NmQ3NzVjNDFhOTJkMmQwOWZhYWFjMmMwZWZhNTY0
MGYwNTIuLmQ4YTNiYTRiNDAwNDMyYjljMDhmYzhiNDgwZDhiNzZmMzM5YjE0ZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw5MyBAQAorMjAxMC0xMi0yOSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlz
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBpbnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS5odG1sIGZhaWxzIHdo
ZW4gcnVuIHR3aWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNzM5NAorCisgICAgICAgIFNlbmQgZGlkUmVjZWl2ZVJlc3BvbnNlIG5vdGlmaWNhdGlv
biB0byB0aGUgdGltZWxpbmUgYWdlbnQgZnJvbSBSZXNvdXJjZUxvYWROb3RpZmllcgorICAgICAg
ICBpbnN0ZWFkIG9mIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UgdG8gY292ZXIg
dGhlIGNhc2VzIHdoZW4gcmVzb3VyY2VzCisgICAgICAgIGFyZSBsb2FkZWQgZnJvbSBtZW1vcnkg
Y2FjaGUuCisKKyAgICAgICAgTmV0d29yayBub3RpZmljYXRpb25zIGFyZSBub3cgc2VudCB0byBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24gd2hpY2ggZGlzcGF0Y2hlcworICAgICAgICB0aGVtIHRv
IGludGVyZXN0ZWQgYWdlbnRzIGFuZCBJbnNwZWN0b3JDb250cm9sbGVyLgorCisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3Rvci5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQ6OmRpZFJlY2VpdmVNYW5pZmVzdFJlc3BvbnNlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJl
cXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlkZW50aWZpZXJGb3JJbml0aWFsUmVx
dWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsU2VuZFJlcXVlc3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlSW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlQ29udGVudExlbmd0aEltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nSW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5n
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlc291
cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZEltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXRyaWV2ZVJlc291cmNlQWdlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aWRlbnRpZmllckZvckluaXRpYWxS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6bWFya1Jlc291cmNlQXNDYWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZWNlaXZlQ29udGVudExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9y
dGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjppZGVudGlmaWVyRm9ySW5p
dGlhbFJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFNlbmRSZXNvdXJjZVJl
cXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJlc291cmNlU2VuZFJlcXVlc3RE
YXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuaWRlbnRpZmllckZvckluaXRpYWxS
ZXF1ZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuYWRkUmVjb3Jk
VG9UaW1lbGluZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZEZhaWxUb0xvYWQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRj
aFdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmll
cjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFpbmlu
Z0RlbGVnYXRlTWVzc2FnZXMpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y3JlYXRlUmVzb3VyY2VIYW5k
bGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpkaWRGYWlsKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdy
b3VwLmg6CisgICAgICAgICogd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlmeUZp
bmlzaGVkKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0cyk6
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKToKKwogMjAxMS0wMS0xMSAgTm9lbCBHb3Jk
b24gIDxub2VsLmdvcmRvbkBnbWFpbC5jb20+CiAKICAgICAgICAgIFJldmlld2VkIGJ5IEphbWVz
IFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRleCA1MzU5
ZTE2YzAwNDRkZTczMWExMmNjZDhjMWFkM2MzMWU1NGVmMTVmLi5lZDAwY2M3NmQzNjc5MjQyNTRm
ZjMzMjlhNGE2MzYwYzdmZjQ5MmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
LmlkbApAQCAtOTEsNyArOTEsNyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIFtkb21haW49TmV0
d29ya10gdm9pZCByZXNvdXJjZUNvbnRlbnQoaW4gdW5zaWduZWQgbG9uZyBmcmFtZUlkLCBpbiBT
dHJpbmcgdXJsLCBpbiBib29sZWFuIGJhc2U2NEVuY29kZSwgb3V0IFN0cmluZyBjb250ZW50KTsK
ICAgICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtdIHZvaWQgZnJhbWVEZXRhY2hlZEZyb21Q
YXJlbnQob3V0IHVuc2lnbmVkIGxvbmcgZnJhbWVJZCk7CiAKLSAgICAgICAgW25vdGlmeSwgZG9t
YWluPU5ldHdvcmtdIHZvaWQgaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KG91dCBsb25nIGlk
ZW50aWZpZXIsIG91dCBTdHJpbmcgdXJsLCBvdXQgT2JqZWN0IGxvYWRlciwgb3V0IFZhbHVlIGNh
bGxTdGFjayk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIGlkZW50aWZp
ZXJGb3JJbml0aWFsUmVxdWVzdChvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgU3RyaW5nIHVybCwg
b3V0IE9iamVjdCBsb2FkZXIsIG91dCBib29sZWFuIGlzTWFpblJlc291cmNlTG9hZGVyLCBvdXQg
VmFsdWUgY2FsbFN0YWNrKTsKICAgICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtdIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0KG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0
IE9iamVjdCByZXF1ZXN0LCBvdXQgT2JqZWN0IHJlZGlyZWN0UmVzcG9uc2UpOwogICAgICAgICBb
bm90aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCBtYXJrUmVzb3VyY2VBc0NhY2hlZChvdXQgbG9u
ZyBpZGVudGlmaWVyKTsKICAgICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtdIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0
IFN0cmluZyByZXNvdXJjZVR5cGUsIG91dCBPYmplY3QgcmVzcG9uc2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50LmNwcAppbmRleCBjZWQ2MWM1ZGQyZDNmMmU5OWMwNDkyMDZmMzI5OWQwMTdmZGQ5ODM2Li45
MTg2NDNiMTkyYzA5MzMxMmU0MDYxOTY0NWUwODE5MzBiMmMzMTBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50LmNwcApAQCAtNDgsNyArNDgsNyBAQCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6
Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChJbnNwZWN0b3JDb250cm9sbAogCiB2b2lk
IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZGlkUmVjZWl2ZU1hbmlmZXN0UmVzcG9u
c2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKIHsKLSAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmRpZFJlY2VpdmVSZXNwb25zZShp
ZGVudGlmaWVyLCAwLCByZXNwb25zZSk7CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5kaWRS
ZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6dXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6U3RhdHVzIHN0YXR1cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBiMGJhYmRjNDVhMTg3NzEwZWUw
Yzg2NmM4NjUxOTgzNmYwNmMwNzVmLi5lZTE1MzZmN2M3NjMyYWRmMDBhYmVmZDhlMTBhOTg3YjJm
NjhhNTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwCkBAIC0xNDAsNyArMTQwLDYgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVj
dG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKICAgICAs
IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fb3BlbmluZ0Zyb250ZW5kKGZhbHNlKQogICAgICwg
bV9jc3NBZ2VudChuZXcgSW5zcGVjdG9yQ1NTQWdlbnQoKSkKLSAgICAsIG1fbWFpblJlc291cmNl
SWRlbnRpZmllcigwKQogICAgICwgbV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCgwKQogICAg
ICwgbV9wcmV2aW91c01lc3NhZ2UoMCkKICAgICAsIG1fc2V0dGluZ3NMb2FkZWQoZmFsc2UpCkBA
IC03NTksNyArNzU4LDYgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDb21taXRMb2Fk
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAjZW5kaWYKIAogICAgICAgICBpZiAobV9mcm9udGVu
ZCkgewotICAgICAgICAgICAgbV9tYWluUmVzb3VyY2VJZGVudGlmaWVyID0gMDsKICAgICAgICAg
ICAgIG1fZnJvbnRlbmQtPmRpZENvbW1pdExvYWQoKTsKICAgICAgICAgICAgIG1fZG9tQWdlbnQt
PnNldERvY3VtZW50KG1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkpOwog
ICAgICAgICB9CkBAIC03NzUsMzMgKzc3Myw2IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQoRnJhbWUqIHJvb3RGcmFtZSkKICAgICAgICAgbV9yZXNv
dXJjZUFnZW50LT5mcmFtZURldGFjaGVkRnJvbVBhcmVudChyb290RnJhbWUpOwogfQogCi12b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1
bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2Up
Ci17Ci0gICAgaWYgKCFlbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGVuc3VyZVNl
dHRpbmdzTG9hZGVkKCk7Ci0KLSAgICBpZiAobV9yZXNvdXJjZUFnZW50KQotICAgICAgICBtX3Jl
c291cmNlQWdlbnQtPmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShsb2FkZXIsIGNhY2hl
ZFJlc291cmNlKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjppZGVudGlmaWVyRm9y
SW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciog
bG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgaWYgKCFlbmFi
bGVkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQobV9pbnNwZWN0ZWRQYWdlKTsKLQot
ICAgIGJvb2wgaXNNYWluUmVzb3VyY2UgPSBpc01haW5SZXNvdXJjZUxvYWRlcihsb2FkZXIsIHJl
cXVlc3QudXJsKCkpOwotICAgIGlmIChpc01haW5SZXNvdXJjZSkKLSAgICAgICAgbV9tYWluUmVz
b3VyY2VJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKLQotICAgIGVuc3VyZVNldHRpbmdzTG9hZGVk
KCk7Ci0KLSAgICBpZiAobV9yZXNvdXJjZUFnZW50KQotICAgICAgICBtX3Jlc291cmNlQWdlbnQt
PmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChpZGVudGlmaWVyLCByZXF1ZXN0LnVybCgpLCBs
b2FkZXIpOwotfQotCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Om1haW5SZXNvdXJjZUZpcmVk
RE9NQ29udGVudEV2ZW50KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwmIHVybCkK
IHsKICAgICBpZiAoIWVuYWJsZWQoKSB8fCAhaXNNYWluUmVzb3VyY2VMb2FkZXIobG9hZGVyLCB1
cmwpKQpAQCAtODI5LDcgKzgwMCw3IEBAIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aXNNYWlu
UmVzb3VyY2VMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgS1VSCiAgICAgcmV0
dXJuIGxvYWRlci0+ZnJhbWUoKSA9PSBtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpICYmIHJl
cXVlc3RVcmwgPT0gbG9hZGVyLT5yZXF1ZXN0VVJMKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlKQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmICghZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47
CkBAIC04NDUsOTUgKzgxNiwzNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxTZW5k
UmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdQogICAgICAgICAg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKGl0LT5maXJzdCwgaXQtPnNlY29uZCk7
CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBib29sIGlzTWFpblJlc291cmNlID0gbV9tYWluUmVz
b3VyY2VJZGVudGlmaWVyID09IGlkZW50aWZpZXI7Ci0gICAgaWYgKG1fdGltZWxpbmVBZ2VudCkK
LSAgICAgICAgbV90aW1lbGluZUFnZW50LT53aWxsU2VuZFJlc291cmNlUmVxdWVzdChpZGVudGlm
aWVyLCBpc01haW5SZXNvdXJjZSwgcmVxdWVzdCk7Ci0KLSAgICBpZiAobV9yZXNvdXJjZUFnZW50
KQotICAgICAgICBtX3Jlc291cmNlQWdlbnQtPndpbGxTZW5kUmVxdWVzdChpZGVudGlmaWVyLCBy
ZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjptYXJrUmVzb3VyY2VBc0NhY2hlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIGlmICghZW5h
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9yZXNvdXJjZUFnZW50KQotICAg
ICAgICBtX3Jlc291cmNlQWdlbnQtPm1hcmtSZXNvdXJjZUFzQ2FjaGVkKGlkZW50aWZpZXIpOwot
fQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQotewotICAgIGlmICghZW5hYmxlZCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAobV9yZXNvdXJjZUFnZW50KQotICAgICAgICBtX3Jlc291cmNlQWdlbnQt
PmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCBsb2FkZXIsIHJlc3BvbnNlKTsKLQogICAg
IGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID49IDQwMCkgewogICAgICAgICBTdHJpbmcg
bWVzc2FnZSA9IG1ha2VTdHJpbmcoIkZhaWxlZCB0byBsb2FkIHJlc291cmNlOiB0aGUgc2VydmVy
IHJlc3BvbmRlZCB3aXRoIGEgc3RhdHVzIG9mICIsIFN0cmluZzo6bnVtYmVyKHJlc3BvbnNlLmh0
dHBTdGF0dXNDb2RlKCkpLCAiICgiLCByZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpLCAnKScpOwog
ICAgICAgICBhZGRDb25zb2xlTWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2UoT3RoZXJNZXNzYWdl
U291cmNlLCBOZXR3b3JrRXJyb3JNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3Nh
Z2UsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBpZGVudGlmaWVyKSk7CiAgICAgfQogfQogCi12
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgaW50IGxlbmd0aFJlY2VpdmVkKQotewotICAgIGlmICghZW5hYmxl
ZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9yZXNvdXJjZUFnZW50KQotICAgICAg
ICBtX3Jlc291cmNlQWdlbnQtPmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGlkZW50aWZpZXIsIGxl
bmd0aFJlY2VpdmVkKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRGaW5pc2hM
b2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCi17Ci0g
ICAgaWYgKCFlbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX3RpbWVsaW5l
QWdlbnQpCi0gICAgICAgIG1fdGltZWxpbmVBZ2VudC0+ZGlkRmluaXNoTG9hZGluZ1Jlc291cmNl
KGlkZW50aWZpZXIsIGZhbHNlLCBmaW5pc2hUaW1lKTsKLQotICAgIGlmIChtX3Jlc291cmNlQWdl
bnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVy
LCBmaW5pc2hUaW1lKTsKLX0KLQogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRGYWlsTG9h
ZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQogewogICAgIGlmICghZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV90
aW1lbGluZUFnZW50KQotICAgICAgICBtX3RpbWVsaW5lQWdlbnQtPmRpZEZpbmlzaExvYWRpbmdS
ZXNvdXJjZShpZGVudGlmaWVyLCB0cnVlLCAwKTsKLQogICAgIFN0cmluZyBtZXNzYWdlID0gIkZh
aWxlZCB0byBsb2FkIHJlc291cmNlIjsKLSAgICAgICAgaWYgKCFlcnJvci5sb2NhbGl6ZWREZXNj
cmlwdGlvbigpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1lc3NhZ2UgKz0gIjogIiArIGVycm9y
LmxvY2FsaXplZERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIGFkZENvbnNvbGVNZXNzYWdlKG5ldyBD
b25zb2xlTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIE5ldHdvcmtFcnJvck1lc3NhZ2VUeXBl
LCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgZXJyb3IuZmFpbGluZ1VSTCgpLCBpZGVudGlm
aWVyKSk7Ci0KLSAgICBpZiAobV9yZXNvdXJjZUFnZW50KQotICAgICAgICBtX3Jlc291cmNlQWdl
bnQtPmRpZEZhaWxMb2FkaW5nKGlkZW50aWZpZXIsIGVycm9yKTsKKyAgICBpZiAoIWVycm9yLmxv
Y2FsaXplZERlc2NyaXB0aW9uKCkuaXNFbXB0eSgpKQorICAgICAgICBtZXNzYWdlICs9ICI6ICIg
KyBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpOworICAgIGFkZENvbnNvbGVNZXNzYWdlKG5l
dyBDb25zb2xlTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIE5ldHdvcmtFcnJvck1lc3NhZ2VU
eXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgZXJyb3IuZmFpbGluZ1VSTCgpLCBpZGVu
dGlmaWVyKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzb3VyY2VSZXRyaWV2
ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkws
IHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXNv
dXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpCiB7CiAgICAgaWYgKCFlbmFi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKElu
c3BlY3RvclN0YXRlOjptb25pdG9yaW5nWEhSKSkKICAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29s
ZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsICJYSFIg
ZmluaXNoZWQgbG9hZGluZzogXCIiICsgdXJsICsgIlwiLiIsIHNlbmRMaW5lTnVtYmVyLCBzZW5k
VVJMKTsKLQotICAgIGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2Vu
dC0+c2V0SW5pdGlhbENvbnRlbnQoaWRlbnRpZmllciwgc291cmNlU3RyaW5nLCAiWEhSIik7Ci19
Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2NyaXB0SW1wb3J0ZWQodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZykKLXsKLSAgICBpZiAoIWVu
YWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAg
ICAgICAgbV9yZXNvdXJjZUFnZW50LT5zZXRJbml0aWFsQ29udGVudChpZGVudGlmaWVyLCBzb3Vy
Y2VTdHJpbmcsICJTY3JpcHQiKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1
cmVTZXR0aW5nc0xvYWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaAppbmRleCA0ODEzNDRkOTZjOTczM2ExOWQzZTM3ODU5NTBlYWJmNTIyOWM3
NDA5Li4yNDAxMWQyMWFhNWMwZmU1NjE1ZTJkY2RmMjRiNDcxOWNmODdkMDliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTE1OCwyMSAr
MTU4LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkQ29tbWl0TG9hZChEb2N1bWVudExvYWRl
ciopOwogICAgIHZvaWQgZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQoRnJhbWUqKTsKLSAgICB2b2lk
IGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciosIGNvbnN0IENh
Y2hlZFJlc291cmNlKik7Ci0KLSAgICB2b2lkIGlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7Ci0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJl
c3BvbnNlKTsKLSAgICB2b2lkIG1hcmtSZXNvdXJjZUFzQ2FjaGVkKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50
IGxlbmd0aFJlY2VpdmVkKTsKLSAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSk7Ci0gICAgdm9pZCBkaWRGYWlsTG9hZGlu
Zyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICB2
b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlcik7Ci0gICAgdm9pZCBz
Y3JpcHRJbXBvcnRlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlU3RyaW5nKTsKIAotICAgIHZvaWQgc2V0RXh0cmFIZWFkZXJzKFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0Pik7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKLSAgICB2b2lkIGVuc3VyZVNl
dHRpbmdzTG9hZGVkKCk7CisgICAgdm9pZCBzZXRFeHRyYUhlYWRlcnMoUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+KTsKIAogICAgIHZvaWQgc3RhcnRUaW1lbGluZVByb2ZpbGVyKCk7CiAgICAg
dm9pZCBzdG9wVGltZWxpbmVQcm9maWxlcigpOwpAQCAtMjc3LDIxICsyNjYsMjYgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBkZWZhdWx0QXR0YWNoZWRIZWlnaHQ7CiAKIHBy
aXZhdGU6Ci0gICAgdm9pZCBnZXRJbnNwZWN0b3JTdGF0ZShSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
Piogc3RhdGUpOwotICAgIHZvaWQgc2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChib29sIGVuYWJs
ZWQpOwotCiAgICAgZnJpZW5kIGNsYXNzIEluc3BlY3RvckJhY2tlbmQ7CiAgICAgZnJpZW5kIGNs
YXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwogICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb247CiAgICAgZnJpZW5kIGNsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsK
IAorICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQg
ZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVy
cm9yJik7CisgICAgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QoY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1i
ZXIpOworCisgICAgdm9pZCBlbnN1cmVTZXR0aW5nc0xvYWRlZCgpOworCisgICAgdm9pZCBnZXRJ
bnNwZWN0b3JTdGF0ZShSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogc3RhdGUpOworICAgIHZvaWQg
c2V0Q29uc29sZU1lc3NhZ2VzRW5hYmxlZChib29sKTsKKworICAgIHZvaWQgcG9wdWxhdGVTY3Jp
cHRPYmplY3RzKCk7CisgICAgdm9pZCByZXN0b3JlRGVidWdnZXIoKTsKICAgICBlbnVtIFByb2Zp
bGVyUmVzdG9yZUFjdGlvbiB7CiAgICAgICAgIFByb2ZpbGVyUmVzdG9yZU5vQWN0aW9uID0gMCwK
ICAgICAgICAgUHJvZmlsZXJSZXN0b3JlUmVzZXRBZ2VudCA9IDEKICAgICB9OwotICAgIAotICAg
IHZvaWQgcG9wdWxhdGVTY3JpcHRPYmplY3RzKCk7Ci0gICAgdm9pZCByZXN0b3JlRGVidWdnZXIo
KTsKICAgICB2b2lkIHJlc3RvcmVQcm9maWxlcihQcm9maWxlclJlc3RvcmVBY3Rpb24gYWN0aW9u
KTsKICAgICB2b2lkIHVuYmluZEFsbFJlc291cmNlcygpOwogICAgIHZvaWQgc2V0U2VhcmNoaW5n
Rm9yTm9kZShib29sIGVuYWJsZWQpOwpAQCAtMzQ5LDcgKzM0Myw2IEBAIHByaXZhdGU6CiAKICAg
ICBSZWZQdHI8Tm9kZT4gbV9ub2RlVG9Gb2N1czsKICAgICBSZWZQdHI8SW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudD4gbV9yZXNvdXJjZUFnZW50OwotICAgIHVuc2lnbmVkIGxvbmcgbV9tYWluUmVzb3Vy
Y2VJZGVudGlmaWVyOwogICAgIFZlY3RvcjxPd25QdHI8Q29uc29sZU1lc3NhZ2U+ID4gbV9jb25z
b2xlTWVzc2FnZXM7CiAgICAgdW5zaWduZWQgbV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudDsK
ICAgICBIYXNoTWFwPFN0cmluZywgZG91YmxlPiBtX3RpbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBmM2E3
M2JhMTY1OTMyOWQxMmE4YjQ1YmM2YTM0MzdiODAwNTY1Yjc3Li4wNDE0NDBkNjlkMzhmMGY4NWI3
ODIxMmQ4ZmQ5OWNiNGJlNjEyZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMzksNiArMzksNyBAQAogI2lu
Y2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2Vu
dC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
IgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgpAQCAtMzcyLDYgKzM3Myw0MCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUmVjYWxjdWxhdGVTdHlsZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudAogICAgICAg
ICB0aW1lbGluZUFnZW50LT5kaWRSZWNhbGN1bGF0ZVN0eWxlKCk7CiB9CiAKK3ZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3RJbXBsKEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAo
IWljLT5lbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpYy0+ZW5zdXJlU2V0dGluZ3NM
b2FkZWQoKTsKKworICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50
ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGljKSkKKyAgICAgICAgcmVzb3VyY2VBZ2VudC0+aWRl
bnRpZmllckZvckluaXRpYWxSZXF1ZXN0KGlkZW50aWZpZXIsIHJlcXVlc3QudXJsKCksIGxvYWRl
ciwgaWMtPmlzTWFpblJlc291cmNlTG9hZGVyKGxvYWRlciwgcmVxdWVzdC51cmwoKSkpOworfQor
Cit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0SW1wbChJbnNw
ZWN0b3JDb250cm9sbGVyKiBpYywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2Up
Cit7CisgICAgaWMtPndpbGxTZW5kUmVxdWVzdChyZXF1ZXN0KTsKKyAgICBpZiAoSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpYykp
CisgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxTZW5kUmVzb3VyY2VSZXF1ZXN0KGlkZW50aWZp
ZXIsIHJlcXVlc3QpOworICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFn
ZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGljKSkKKyAgICAgICAgcmVzb3VyY2VBZ2VudC0+
d2lsbFNlbmRSZXF1ZXN0KGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwor
fQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWRJ
bXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit7
CisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2
ZVJlc291cmNlQWdlbnQoaWMpKQorICAgICAgICByZXNvdXJjZUFnZW50LT5tYXJrUmVzb3VyY2VB
c0NhY2hlZChpZGVudGlmaWVyKTsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciog
aWMsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IENhY2hlZFJlc291cmNlKiBjYWNoZWRS
ZXNvdXJjZSkKK3sKKyAgICBpZiAoIWljLT5lbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBpYy0+ZW5zdXJlU2V0dGluZ3NMb2FkZWQoKTsKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisgICAgICAg
IHJlc291cmNlQWdlbnQtPmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShsb2FkZXIsIGNh
Y2hlZFJlc291cmNlKTsKK30KKwogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZURhdGFJbXBsKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
cikKIHsKICAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKQEAgLTQwMCwxMiArNDM1LDUyIEBA
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwCiAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZShpbnNwZWN0b3JDb250cm9sbGVyLCB0aW1lbGluZUFnZW50SWQpOwogfQogCi12
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJ
bXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llKQordm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChj
b25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKIHsKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpYyA9IGNvb2tpZS5m
aXJzdDsKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJl
dHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisgICAgICAgIHJlc291cmNlQWdlbnQtPmRpZFJlY2Vp
dmVSZXNwb25zZShpZGVudGlmaWVyLCBsb2FkZXIsIHJlc3BvbnNlKTsKKyAgICBpYy0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICBpZiAoSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChjb29raWUp
KQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZSgpOwog
fQogCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5n
dGhJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGludCBsZW5ndGhSZWNlaXZlZCkKK3sKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCog
cmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisgICAgICAgIHJlc291
cmNlQWdlbnQtPmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGlkZW50aWZpZXIsIGxlbmd0aFJlY2Vp
dmVkKTsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRp
bmdJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGRvdWJsZSBmaW5pc2hUaW1lKQoreworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0
aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGljKSkKKyAgICAgICAgdGltZWxp
bmVBZ2VudC0+ZGlkRmluaXNoTG9hZGluZ1Jlc291cmNlKGlkZW50aWZpZXIsIGZhbHNlLCBmaW5p
c2hUaW1lKTsKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9
IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisgICAgICAgIHJlc291cmNlQWdlbnQtPmRpZEZp
bmlzaExvYWRpbmcoaWRlbnRpZmllciwgZmluaXNoVGltZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZ0ltcGwoSW5zcGVjdG9yQ29udHJvbGxlciog
aWMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
Cit7CisgICAgaWMtPmRpZEZhaWxMb2FkaW5nKGlkZW50aWZpZXIsIGVycm9yKTsKKyAgICBpZiAo
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVB
Z2VudChpYykpCisgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEZpbmlzaExvYWRpbmdSZXNvdXJj
ZShpZGVudGlmaWVyLCB0cnVlLCAwKTsKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCog
cmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisgICAgICAgIHJlc291
cmNlQWdlbnQtPmRpZEZhaWxMb2FkaW5nKGlkZW50aWZpZXIsIGVycm9yKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVz
dEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaWMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKQoreworICAgIGljLT5yZXNvdXJj
ZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodXJsLCBzZW5kVVJMLCBzZW5kTGluZU51bWJlcik7
CisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2
ZVJlc291cmNlQWdlbnQoaWMpKQorICAgICAgICByZXNvdXJjZUFnZW50LT5zZXRJbml0aWFsQ29u
dGVudChpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcsICJYSFIiKTsKK30KKwordm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkSW1wbChJbnNwZWN0b3JDb250cm9sbGVy
KiBpYywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmlu
ZykKK3sKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJl
dHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisgICAgICAgIHJlc291cmNlQWdlbnQtPnNldEluaXRp
YWxDb250ZW50KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZywgIlNjcmlwdCIpOworfQorCiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
V3JpdGVIVE1MSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCB1
bnNpZ25lZCBpbnQgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgc3RhcnRMaW5lKQogewogICAgIGludCB0
aW1lbGluZUFnZW50SWQgPSAwOwpAQCAtNDkwLDYgKzU2NSwxMSBAQCBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJldHJpZXZlVGltZWxpbmVBZ2VudChj
b25zdCBJbgogICAgIHJldHVybiAwOwogfQogCitJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnJldHJpZXZlUmVzb3VyY2VBZ2VudChJbnNwZWN0b3JDb250
cm9sbGVyKiBpYykKK3sKKyAgICByZXR1cm4gaWMtPm1fcmVzb3VyY2VBZ2VudC5nZXQoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gIUVOQUJMRShJTlNQRUNUT1Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgKaW5kZXggOWM2OTA1NThjZTcxNmFhMjcxOTllYjBiMzEwZDM4YjVjMTNhMzI4MC4uYjRi
ODhlMGMzODM2MGI1NTIyNDQ0YjA1ZDJhNDZmMTRmYWQ5Y2JjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtNDEsMTIg
KzQxLDE1IEBAIGNsYXNzIENoYXJhY3RlckRhdGE7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVs
ZW1lbnQ7CiBjbGFzcyBFdmVudENvbnRleHQ7CitjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNz
IEluc3BlY3RvckNvbnRyb2xsZXI7CitjbGFzcyBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OwogY2xh
c3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDsKIGNsYXNzIEtVUkw7CiBjbGFzcyBOb2RlOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK2NsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBYTUxIdHRwUmVxdWVzdDsKIAogI2lmIEVOQUJMRShX
RUJfU09DS0VUUykKQEAgLTkwLDEwICs5MywyMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
ZGlkUGFpbnQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3Rh
dGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVjYWxjdWxhdGVTdHlsZShE
b2N1bWVudCopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGUoY29uc3QgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CisKKyAgICBzdGF0aWMgdm9pZCBpZGVudGlm
aWVyRm9ySW5pdGlhbFJlcXVlc3QoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERv
Y3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0KEZyYW1lKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKKyAg
ICBzdGF0aWMgdm9pZCBtYXJrUmVzb3VyY2VBc0NhY2hlZChQYWdlKiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2Fj
aGUoUGFnZSosIERvY3VtZW50TG9hZGVyKiwgY29uc3QgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBz
dGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNlaXZlUmVzb3VyY2VE
YXRhKEZyYW1lKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlUmVzb3VyY2VEYXRhKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSYpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFJlY2Vp
dmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1lKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2
ZVJlc291cmNlUmVzcG9uc2UoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7
CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVjZWl2ZVJl
c291cmNlUmVzcG9uc2UoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNw
b25zZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwor
ICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKEZyYW1lKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpOworICAgIHN0YXRpYyB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBm
aW5pc2hUaW1lKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgIHN0YXRpYyB2
b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmlu
ZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2Vu
ZExpbmVOdW1iZXIpOworICAgIHN0YXRpYyB2b2lkIHNjcmlwdEltcG9ydGVkKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlU3RyaW5nKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdp
bGxXcml0ZUhUTUwoRG9jdW1lbnQqLCB1bnNpZ25lZCBpbnQgbGVuZ3RoLCB1bnNpZ25lZCBpbnQg
c3RhcnRMaW5lKTsKICAgICBzdGF0aWMgdm9pZCBkaWRXcml0ZUhUTUwoY29uc3QgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llJiwgdW5zaWduZWQgaW50IGVuZExpbmUpOwogCkBAIC0xNDcs
MTAgKzE2MCwxOSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZFBhaW50SW1wbChjb25z
dCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNhbGN1bGF0ZVN0eWxlSW1wbChJbnNwZWN0b3JD
b250cm9sbGVyKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjYWxjdWxhdGVTdHlsZUltcGwoY29u
c3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CisgICAgc3RhdGljIHZvaWQgaWRl
bnRpZmllckZvckluaXRpYWxSZXF1ZXN0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOworICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29udHJv
bGxlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgc3RhdGljIHZvaWQgbWFy
a1Jlc291cmNlQXNDYWNoZWRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIpOworICAgIHN0YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlD
YWNoZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIERvY3VtZW50TG9hZGVyKiwgY29uc3QgQ2Fj
aGVkUmVzb3VyY2UqKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IHdpbGxSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VE
YXRhSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKLSAgICBzdGF0
aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNlaXZlUmVzb3VyY2VSZXNw
b25zZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUmKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxS
ZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVy
KiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVD
b250ZW50TGVuZ3RoSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpOworICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExv
YWRpbmdJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGRvdWJsZSBmaW5pc2hUaW1lKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZ0ltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VFcnJvciYpOworICAgIHN0YXRpYyB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRw
UmVxdWVzdEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKKyAgICBzdGF0aWMgdm9p
ZCBzY3JpcHRJbXBvcnRlZEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpOwogICAgIHN0YXRpYyBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFdyaXRlSFRNTEltcGwoSW5zcGVjdG9yQ29u
dHJvbGxlciosIHVuc2lnbmVkIGludCBsZW5ndGgsIHVuc2lnbmVkIGludCBzdGFydExpbmUpOwog
ICAgIHN0YXRpYyB2b2lkIGRpZFdyaXRlSFRNTEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llJiwgdW5zaWduZWQgaW50IGVuZExpbmUpOwogCkBAIC0xNzEsNiArMTkzLDcg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBjYW5jZWxQYXVzZU9uTmF0aXZlRXZlbnQoSW5z
cGVjdG9yQ29udHJvbGxlciopOwogICAgIHN0YXRpYyBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBy
ZXRyaWV2ZVRpbWVsaW5lQWdlbnQoSW5zcGVjdG9yQ29udHJvbGxlciopOwogICAgIHN0YXRpYyBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KiByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoY29uc3QgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CisgICAgc3RhdGljIEluc3BlY3RvclJlc291cmNl
QWdlbnQqIHJldHJpZXZlUmVzb3VyY2VBZ2VudChJbnNwZWN0b3JDb250cm9sbGVyKik7CiAKICAg
ICBzdGF0aWMgaW50IHNfZnJvbnRlbmRDb3VudGVyOwogI2VuZGlmCkBAIC00MjksNiArNDUyLDM5
IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjYWxjdWxhdGVT
dHlsZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtCiAjZW5kaWYKIH0KIAoraW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QoRnJhbWUq
IGZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
KQorICAgIC8vIFRoaXMgbm90aWZpY2F0aW9uIHNob3VsZCBiZSBwcm9jZWNlc3NlZCBldmVuIGlu
IGNhc2VzIHRoZXJlIGlzIG5vIGZyb250ZW5kLgorICAgIGlmICghZnJhbWUpCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaWMgPSBmcmFtZS0+cGFnZSgpLT5p
bnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgIGlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVz
dEltcGwoaWMsIGlkZW50aWZpZXIsIGxvYWRlciwgcmVxdWVzdCk7CisjZW5kaWYKK30KKworaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QoRnJhbWUq
IGZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3sKKyNpZiBFTkFC
TEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpYyA9IGluc3BlY3Rv
ckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCisgICAgICAgIHdpbGxTZW5kUmVxdWVzdEltcGwo
aWMsIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworI2VuZGlmCit9CisK
K2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNo
ZWQoUGFnZSogcGFnZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQoreworI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCisgICAgbWFya1Jlc291cmNlQXNDYWNoZWRJbXBsKHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKSwgaWRlbnRpZmllcik7IAorI2VuZGlmCit9CisKK2lubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKFBhZ2Uq
IHBhZ2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IENhY2hlZFJlc291cmNlKiByZXNv
dXJjZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGRpZExvYWRSZXNvdXJjZUZyb21N
ZW1vcnlDYWNoZUltcGwocGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBsb2FkZXIsIHJlc291
cmNlKTsKKyNlbmRpZgorfQorCiBpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZURhdGEoRnJhbWUq
IGZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKQEAgLTQ1NSwxMSArNTExLDUxIEBAIGlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291CiAgICAgcmV0
dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwogfQogCi1pbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGNvbnN0
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llKQoraW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShjb25zdCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChoYXNGcm9udGVuZHMo
KSAmJiBjb29raWUuZmlyc3QpCi0gICAgICAgIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1w
bChjb29raWUpOworICAgICAgICBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoY29va2ll
LCBpZGVudGlmaWVyLCBsb2FkZXIsIHJlc3BvbnNlKTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKEZyYW1l
KiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCit7
CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5z
cGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCisg
ICAgICAgIGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBp
ZGVudGlmaWVyLCBsZW5ndGhSZWNlaXZlZCk7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiBmcmFtZSwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSkKK3sKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9s
bGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgZGlkRmlu
aXNoTG9hZGluZ0ltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgaWRlbnRpZmllciwgZmluaXNoVGlt
ZSk7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGYWlsTG9hZGluZyhGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBp
ZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNv
bnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCisgICAgICAgIGRpZEZhaWxMb2FkaW5nSW1wbChpbnNw
ZWN0b3JDb250cm9sbGVyLCBpZGVudGlmaWVyLCBlcnJvcik7CisjZW5kaWYKK30KKworaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0
cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpCit7CisjaWYg
RU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9y
Q29udHJvbGxlciA9IGNvbnRleHQtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgcmVz
b3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0SW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBp
ZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcsIHVybCwgc2VuZFVSTCwgc2VuZExpbmVOdW1iZXIpOwor
I2VuZGlmCit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0
SW1wb3J0ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZykKK3sKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVy
ID0gY29udGV4dC0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICBzY3JpcHRJbXBvcnRl
ZEltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgaWRlbnRpZmllciwgc291cmNlU3RyaW5nKTsKICNl
bmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5jcHAKaW5kZXggOWZjNTYyYzVmNmEwYmEwMDdhMzJhZGJlNWVkODI0YWE0MWFk
ZGE5My4uYTQyNTc5NzljY2RiZDYzZjFlNmM5N2U2YThlMWY4YzExODIwMDlmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApA
QCAtMjgzLDcgKzI4Myw3IEBAIEluc3BlY3RvclJlc291cmNlQWdlbnQ6On5JbnNwZWN0b3JSZXNv
dXJjZUFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjppZGVudGlm
aWVyRm9ySW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJM
JiB1cmwsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IEtVUkwmIHVybCwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgYm9vbCBpc01haW5SZXNv
dXJjZSkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBsb2FkZXJPYmplY3QgPSBidWls
ZE9iamVjdEZvckRvY3VtZW50TG9hZGVyKGxvYWRlcik7CiAgICAgUmVmUHRyPFNjcmlwdENhbGxT
dGFjaz4gY2FsbFN0YWNrID0gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKFNjcmlwdENhbGxTdGFjazo6
bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSwgdHJ1ZSk7CkBAIC0yOTIsNyArMjkyLDcgQEAgdm9p
ZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QodW5z
aWduZWQgbG9uZyBpZGVudGlmaWUKICAgICAgICAgY2FsbFN0YWNrVmFsdWUgPSBjYWxsU3RhY2st
PmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCk7CiAgICAgZWxzZQogICAgICAgICBjYWxsU3RhY2tWYWx1
ZSA9IEluc3BlY3RvclZhbHVlOjpudWxsKCk7Ci0gICAgbV9mcm9udGVuZC0+aWRlbnRpZmllckZv
ckluaXRpYWxSZXF1ZXN0KGlkZW50aWZpZXIsIHVybC5zdHJpbmcoKSwgbG9hZGVyT2JqZWN0LCBj
YWxsU3RhY2tWYWx1ZSk7CisgICAgbV9mcm9udGVuZC0+aWRlbnRpZmllckZvckluaXRpYWxSZXF1
ZXN0KGlkZW50aWZpZXIsIHVybC5zdHJpbmcoKSwgbG9hZGVyT2JqZWN0LCBpc01haW5SZXNvdXJj
ZSwgY2FsbFN0YWNrVmFsdWUpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Ondp
bGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCmluZGV4
IDFlNzdkNThjODUzNWJkN2VhNjYzOGQ2NjQ2NGQzNmQ2OWY4NWU1MTUuLmYzZjMyMTFiMjkzMDZi
YjI2ZmM2Y2M3ZDdjMmVjZWE5Y2UwZTFiMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6
CiAKICAgICB+SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpOwogCi0gICAgdm9pZCBpZGVudGlmaWVy
Rm9ySW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiwg
RG9jdW1lbnRMb2FkZXIqKTsKKyAgICB2b2lkIGlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmLCBEb2N1bWVudExvYWRlciosIGJv
b2wgaXNNYWluUmVzb3VyY2UpOwogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVkaXJlY3RSZXNwb25zZSk7CiAgICAgdm9pZCBtYXJrUmVzb3VyY2VBc0NhY2hlZCh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxhb2RlciwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuY3BwCmluZGV4IDc0NzM5ZTE4ZGFkNDVlM2I2NDE4NjRlNTYzYzZiNzQ2NTA5
OTU4MzUuLjA4MWE1ZjBkYmY0MzBjOTA2Y2FlZDMzNzkzM2RiZGJjNmNiZjdiMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAK
QEAgLTIwOSwxMiArMjA5LDExIEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkU2No
ZWR1bGVSZXNvdXJjZVJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgYWRkUmVjb3JkVG9U
aW1lbGluZShyZWNvcmQucmVsZWFzZSgpLCBTY2hlZHVsZVJlc291cmNlUmVxdWVzdFRpbWVsaW5l
UmVjb3JkVHlwZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFNlbmRS
ZXNvdXJjZVJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBib29sIGlzTWFpblJlc291
cmNlLAotICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6d2lsbFNlbmRSZXNvdXJjZVJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgcHVzaEdDRXZl
bnRSZWNvcmRzKCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVjb3JkID0gVGltZWxp
bmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljUmVjb3JkKFdURjo6Y3VycmVudFRpbWVNUygp
KTsKLSAgICByZWNvcmQtPnNldE9iamVjdCgiZGF0YSIsIFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6
Y3JlYXRlUmVzb3VyY2VTZW5kUmVxdWVzdERhdGEoaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2Us
IHJlcXVlc3QpKTsKKyAgICByZWNvcmQtPnNldE9iamVjdCgiZGF0YSIsIFRpbWVsaW5lUmVjb3Jk
RmFjdG9yeTo6Y3JlYXRlUmVzb3VyY2VTZW5kUmVxdWVzdERhdGEoaWRlbnRpZmllciwgcmVxdWVz
dCkpOwogICAgIHJlY29yZC0+c2V0TnVtYmVyKCJ0eXBlIiwgUmVzb3VyY2VTZW5kUmVxdWVzdFRp
bWVsaW5lUmVjb3JkVHlwZSk7CiAgICAgc2V0SGVhcFNpemVTdGF0aXN0aWMocmVjb3JkLmdldCgp
KTsKICAgICBtX2Zyb250ZW5kLT5hZGRSZWNvcmRUb1RpbWVsaW5lKHJlY29yZC5yZWxlYXNlKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5l
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmgKaW5kZXggYmMxZTAyN2I0ZTRmY2I0NmNlMjA0ZGRkMjhhN2I3NTM0YmM1NzE1MS4uMzNlMjcz
N2ZjNjI5OTMyZTUyMjcwYzEwNWFlZDBmMzA0ODM5MmZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCkBAIC0xMTksNyArMTE5LDcg
QEAgcHVibGljOgogICAgIHZvaWQgZGlkTWFya0xvYWRFdmVudCgpOwogCiAgICAgdm9pZCBkaWRT
Y2hlZHVsZVJlc291cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCk7Ci0gICAgdm9pZCB3aWxs
U2VuZFJlc291cmNlUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBib29sIGlzTWFpblJlc291cmNlLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIHdpbGxTZW5kUmVzb3VyY2VSZXF1ZXN0
KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgd2lsbFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKCk7CiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nUmVzb3VyY2UodW5zaWduZWQgbG9uZywgYm9vbCBkaWRGYWlsLCBkb3Vi
bGUgZmluaXNoVGltZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGlu
ZVJlY29yZEZhY3RvcnkuY3BwCmluZGV4IDdmMzM5Y2RlYTMzYTYxOWI3OGI2ZjQxNDgxMWUxMGQx
NDc3Y2U0MDIuLmRkN2YyYmU1MTFlYjkyNGIzYWQ1YzMwODlkMmM1N2MwMWMyNzFhYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3Bw
CkBAIC0xMjksMTMgKzEyOSwxMiBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gVGltZWxp
bmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVTY2hlZHVsZVJlc291cmNlUmVxdWVzdAogICAgIHJldHVy
biBkYXRhLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVs
aW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUmVzb3VyY2VTZW5kUmVxdWVzdERhdGEodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBib29sIGlzTWFpblJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCitQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRG
YWN0b3J5OjpjcmVhdGVSZXNvdXJjZVNlbmRSZXF1ZXN0RGF0YSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBkYXRh
LT5zZXROdW1iZXIoImlkZW50aWZpZXIiLCBpZGVudGlmaWVyKTsKICAgICBkYXRhLT5zZXRTdHJp
bmcoInVybCIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkpOwogICAgIGRhdGEtPnNldFN0cmluZygi
cmVxdWVzdE1ldGhvZCIsIHJlcXVlc3QuaHR0cE1ldGhvZCgpKTsKLSAgICBkYXRhLT5zZXRCb29s
ZWFuKCJpc01haW5SZXNvdXJjZSIsIGlzTWFpblJlc291cmNlKTsKICAgICByZXR1cm4gZGF0YS5y
ZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1l
bGluZVJlY29yZEZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJl
Y29yZEZhY3RvcnkuaAppbmRleCA1ZDRjYjc3NDNmMmZkODY0ZDJjYjdmMDYyMzViMzU0N2M5ZmE3
MzI2Li5mYWZlYWU2ZjhlYTI3NDg3YzE1ZjdmNDcyMmViYjRlYzIwMjY5MTcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oCkBAIC02NCw4
ICs2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZU1hcmtUaW1lbGluZURhdGEoY29uc3QgU3RyaW5nJik7
CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNv
dXJjZVNlbmRSZXF1ZXN0RGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsCi0gICAgICAgICAg
ICBib29sIGlzTWFpblJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVSZXNvdXJjZVNlbmRSZXF1
ZXN0RGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
OwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlU2No
ZWR1bGVSZXNvdXJjZVJlcXVlc3REYXRhKGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qcwppbmRleCBi
MWVjOTdjMDdhYzRjZDRkYjRhOGI0MzQwM2MzNmZmNDJhNWE3YzBlLi41YTRlZDM1ZWVjNGNlZDli
YWE4NGFlZjhiNDkwYWYzNmU2ZjI5ZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMKQEAgLTg2LDkgKzg2LDEzIEBAIFdl
Ykluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci51cGRhdGVSZXNvdXJjZVdpdGhDYWNoZWRSZXNvdXJj
ZSA9IGZ1bmN0aW9uKHJlc291cmNlCiB9CiAKIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5w
cm90b3R5cGUgPSB7Ci0gICAgaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0OiBmdW5jdGlvbihp
ZGVudGlmaWVyLCB1cmwsIGxvYWRlciwgY2FsbFN0YWNrKQorICAgIGlkZW50aWZpZXJGb3JJbml0
aWFsUmVxdWVzdDogZnVuY3Rpb24oaWRlbnRpZmllciwgdXJsLCBsb2FkZXIsIGlzTWFpblJlc291
cmNlLCBjYWxsU3RhY2spCiAgICAgewogICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9jcmVh
dGVSZXNvdXJjZShpZGVudGlmaWVyLCB1cmwsIGxvYWRlciwgY2FsbFN0YWNrKTsKKyAgICAgICAg
aWYgKGlzTWFpblJlc291cmNlKSB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IubWFpblJlc291
cmNlID0gcmVzb3VyY2U7CisgICAgICAgICAgICByZXNvdXJjZS5pc01haW5SZXNvdXJjZSA9IHRy
dWU7CisgICAgICAgIH0KIAogICAgICAgICAvLyBJdCBpcyBpbXBvcnRhbnQgdG8gYmluZCByZXNv
dXJjZSB1cmwgZWFybHkgKGJlZm9yZSBzY3JpcHRzIGNvbXBpbGUpLgogICAgICAgICB0aGlzLl9y
ZXNvdXJjZVRyZWVNb2RlbC5iaW5kUmVzb3VyY2VVUkwocmVzb3VyY2UpOwpAQCAtMjIxLDEzICsy
MjUsNiBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlID0gewogICAgIGRp
ZENvbW1pdExvYWRGb3JGcmFtZTogZnVuY3Rpb24oZnJhbWUsIGxvYWRlcikKICAgICB7CiAgICAg
ICAgIHRoaXMuX3Jlc291cmNlVHJlZU1vZGVsLmRpZENvbW1pdExvYWRGb3JGcmFtZShmcmFtZSwg
bG9hZGVyKTsKLSAgICAgICAgaWYgKCFmcmFtZS5wYXJlbnRJZCkgewotICAgICAgICAgICAgdmFy
IG1haW5SZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlVHJlZU1vZGVsLnJlc291cmNlRm9yVVJMKGZy
YW1lLnVybCk7Ci0gICAgICAgICAgICBpZiAobWFpblJlc291cmNlKSB7Ci0gICAgICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLm1haW5SZXNvdXJjZSA9IG1haW5SZXNvdXJjZTsKLSAgICAgICAgICAg
ICAgICBtYWluUmVzb3VyY2UuaXNNYWluUmVzb3VyY2UgPSB0cnVlOwotICAgICAgICAgICAgfQot
ICAgICAgICB9CiAgICAgfSwKIAogICAgIGRpZENyZWF0ZVdlYlNvY2tldDogZnVuY3Rpb24oaWRl
bnRpZmllciwgcmVxdWVzdFVSTCkKQEAgLTI5Myw2ICsyOTAsMTEgQEAgV2ViSW5zcGVjdG9yLk5l
dHdvcmtNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgbmV3UmVzb3VyY2UucmVkaXJlY3Rz
ID0gb3JpZ2luYWxSZXNvdXJjZS5yZWRpcmVjdHMgfHwgW107CiAgICAgICAgIGRlbGV0ZSBvcmln
aW5hbFJlc291cmNlLnJlZGlyZWN0czsKICAgICAgICAgbmV3UmVzb3VyY2UucmVkaXJlY3RzLnB1
c2gob3JpZ2luYWxSZXNvdXJjZSk7CisgICAgICAgIGlmIChvcmlnaW5hbFJlc291cmNlLmlzTWFp
blJlc291cmNlKSB7CisgICAgICAgICAgICBkZWxldGUgb3JpZ2luYWxSZXNvdXJjZS5pc01haW5S
ZXNvdXJjZTsKKyAgICAgICAgICAgIG5ld1Jlc291cmNlLmlzTWFpblJlc291cmNlID0gdHJ1ZTsK
KyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5tYWluUmVzb3VyY2UgPSBuZXdSZXNvdXJjZTsKKyAg
ICAgICAgfQogICAgICAgICByZXR1cm4gbmV3UmVzb3VyY2U7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCmluZGV4
IGE2NjFiNzU3YTIyYTRkMTk0MjE0M2JlNmZkMjRkYzM4MzM2NzA4N2MuLmFjY2EzODc0NjBjMjg3
ZTliMDgyNWQxZjNlNDE2YjFhYWY1MzUwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKQEAgLTI5Nyw4ICsyOTcsOSBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBhZGRSZWNvcmRU
b1RpbWVsaW5lOiBmdW5jdGlvbihyZWNvcmQpCiAgICAgewotICAgICAgICBpZiAocmVjb3JkLnR5
cGUgPT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5SZXNvdXJjZVNlbmRS
ZXF1ZXN0ICYmIHJlY29yZC5kYXRhLmlzTWFpblJlc291cmNlKSB7Ci0gICAgICAgICAgICBpZiAo
dGhpcy5fbWFpblJlc291cmNlSWRlbnRpZmllciAhPSByZWNvcmQuZGF0YS5pZGVudGlmaWVyKSB7
CisgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5S
ZWNvcmRUeXBlLlJlc291cmNlU2VuZFJlcXVlc3QpIHsKKyAgICAgICAgICAgIHZhciBpc01haW5S
ZXNvdXJjZSA9IChyZWNvcmQuZGF0YS5pZGVudGlmaWVyID09PSBXZWJJbnNwZWN0b3IubWFpblJl
c291cmNlLmlkZW50aWZpZXIpOworICAgICAgICAgICAgaWYgKGlzTWFpblJlc291cmNlICYmIHRo
aXMuX21haW5SZXNvdXJjZUlkZW50aWZpZXIgIT09IHJlY29yZC5kYXRhLmlkZW50aWZpZXIpIHsK
ICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgbG9hZGluZyBuZXcgbWFpbiByZXNvdXJjZSAtPiBj
bGVhciB0aGUgcGFuZWwuIENoZWNrIGFib3ZlIGlzIG5lY2Vzc2FyeSBzaW5jZQogICAgICAgICAg
ICAgICAgIC8vIHRoZXJlIG1heSBiZSBzZXZlcmFsIHJlc291cmNlIGxvYWRzIHdpdGggbWFpbiBy
ZXNvdXJjZSBtYXJrZXIgdXBvbiByZWRpcmVjdHMsIHJlZGlyZWN0cyBhcmUgcmVwb3J0ZWQgd2l0
aAogICAgICAgICAgICAgICAgIC8vIHRoZSBvcmlnaW5hbCBpZGVudGlmaWVyLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggN2Y5ZTkxMzk0MzU3MmRhNGZmZjU5NTkwMDQ0
YjBhMDgzYjEzMjZjYi4uNDVlM2JmMjY5NmZiOTIxOWEzMjRjOGQ1Y2ZiN2NhZjc2MGZmZWNmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC03MCw2ICs3MCw3IEBACiAj
aW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSWNvbkxvYWRlci5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3Ry
eS5oIgogI2luY2x1ZGUgIk1haW5SZXNvdXJjZUxvYWRlci5oIgpAQCAtMzA0MSw5ICszMDQyLDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZGVkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoY29uc3Qg
Q2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXBh
Z2UtPmFyZU1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkKCkpIHsKLSNpZiBFTkFCTEUoSU5T
UEVDVE9SKQotICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpZExvYWRSZXNv
dXJjZUZyb21NZW1vcnlDYWNoZShtX2RvY3VtZW50TG9hZGVyLmdldCgpLCByZXNvdXJjZSk7Ci0j
ZW5kaWYKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkUmVzb3VyY2VG
cm9tTWVtb3J5Q2FjaGUocGFnZSwgbV9kb2N1bWVudExvYWRlci5nZXQoKSwgcmVzb3VyY2UpOwog
ICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5yZWNvcmRNZW1vcnlDYWNoZUxvYWRGb3JGdXR1cmVD
bGllbnROb3RpZmljYXRpb24ocmVzb3VyY2UtPnVybCgpKTsKICAgICAgICAgbV9kb2N1bWVudExv
YWRlci0+ZGlkVGVsbENsaWVudEFib3V0TG9hZChyZXNvdXJjZS0+dXJsKCkpOwogICAgICAgICBy
ZXR1cm47CkBAIC0zMDUxLDkgKzMwNTAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkZWRSZXNv
dXJjZUZyb21NZW1vcnlDYWNoZShjb25zdCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAKICAg
ICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChyZXNvdXJjZS0+dXJsKCkpOwogICAgIGlmIChtX2Ns
aWVudC0+ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUobV9kb2N1bWVudExv
YWRlci5nZXQoKSwgcmVxdWVzdCwgcmVzb3VyY2UtPnJlc3BvbnNlKCksIHJlc291cmNlLT5lbmNv
ZGVkU2l6ZSgpKSkgewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIHBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS0+ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKG1fZG9jdW1l
bnRMb2FkZXIuZ2V0KCksIHJlc291cmNlKTsKLSNlbmRpZgorICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShwYWdlLCBtX2RvY3Vt
ZW50TG9hZGVyLmdldCgpLCByZXNvdXJjZSk7CiAgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPmRp
ZFRlbGxDbGllbnRBYm91dExvYWQocmVzb3VyY2UtPnVybCgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTMwNjEsOSArMzA1OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRlZFJlc291
cmNlRnJvbU1lbW9yeUNhY2hlKGNvbnN0IENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXI7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBy
ZXF1ZXN0RnJvbURlbGVnYXRlKHJlcXVlc3QsIGlkZW50aWZpZXIsIGVycm9yKTsKLSNpZiBFTkFC
TEUoSU5TUEVDVE9SKQotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+bWFya1Jlc291
cmNlQXNDYWNoZWQoaWRlbnRpZmllcik7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246Om1hcmtSZXNvdXJjZUFzQ2FjaGVkKHBhZ2UsIGlkZW50aWZpZXIpOwogICAgIG5vdGlm
aWVyKCktPnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0
KCksIGlkZW50aWZpZXIsIHJlc291cmNlLT5yZXNwb25zZSgpLCByZXNvdXJjZS0+ZW5jb2RlZFNp
emUoKSwgZXJyb3IpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkTm90aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE5vdGlmaWVyLmNwcAppbmRleCBhMzZlZDk0MjljYzFlNzIyNGNkMjgzODA4ZGYxZWFkZTJlNzdk
NjA4Li5jOTI4NTU3MTJkYmEwNjdhZjA5MjE5MmY2NDdmY2YyZDc4ZWZmNWQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKQEAgLTM1LDcgKzM1
LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVy
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9h
ZGVyLmgiCkBAIC05NywyMCArOTcsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlk
RmFpbFRvTG9hZChSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUUKICAgICBp
ZiAoIWVycm9yLmlzTnVsbCgpKQogICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkt
PmRpc3BhdGNoRGlkRmFpbExvYWRpbmcobG9hZGVyLT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXIt
PmlkZW50aWZpZXIoKSwgZXJyb3IpOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAo
UGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLT5kaWRGYWlsTG9hZGluZyhsb2FkZXItPmlkZW50aWZpZXIoKSwgZXJyb3IpOwot
I2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhtX2Zy
YW1lLCBsb2FkZXItPmlkZW50aWZpZXIoKSwgZXJyb3IpOwogfQogCiB2b2lkIFJlc291cmNlTG9h
ZE5vdGlmaWVyOjphc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKIHsKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmFzc2lnbklk
ZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KGlkZW50aWZpZXIsIGxvYWRlciwgcmVxdWVzdCk7CiAK
LSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFn
ZSgpKQotICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmlkZW50aWZpZXJGb3JJ
bml0aWFsUmVxdWVzdChpZGVudGlmaWVyLCBsb2FkZXIsIHJlcXVlc3QpOwotI2VuZGlmCisgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QobV9m
cmFtZSwgaWRlbnRpZmllciwgbG9hZGVyLCByZXF1ZXN0KTsKIH0KIAogdm9pZCBSZXNvdXJjZUxv
YWROb3RpZmllcjo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCkBAIC0xMjQsMTAgKzExOCw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnCiAgICAgaWYgKCFyZXF1ZXN0LmlzTnVsbCgpICYm
IG9sZFJlcXVlc3RVUkwgIT0gcmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkpCiAgICAgICAg
IG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5kaWRUZWxsQ2xpZW50QWJvdXRM
b2FkKHJlcXVlc3QudXJsKCkpOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoUGFn
ZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLT53aWxsU2VuZFJlcXVlc3QoaWRlbnRpZmllciwgcmVxdWVzdCwgcmVkaXJlY3RSZXNw
b25zZSk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVx
dWVzdChtX2ZyYW1lLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKIAog
ICAgIC8vIFJlcG9ydCBXZWJUaW1pbmcgZm9yIGFsbCBmcmFtZXMuCiAgICAgaWYgKGxvYWRlciAm
JiAhcmVxdWVzdC5pc051bGwoKSAmJiByZXF1ZXN0LnVybCgpID09IGxvYWRlci0+cmVxdWVzdFVS
TCgpKQpAQCAtMTM2LDMyICsxMjcsMjMgQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlz
cGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWcKIAogdm9p
ZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByKQogeworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29r
aWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25z
ZShtX2ZyYW1lLCBpZGVudGlmaWVyLCByKTsKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50
KCktPmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKGxvYWRlciwgaWRlbnRpZmllciwgcik7Ci0K
LSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFn
ZSgpKQotICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpZFJlY2VpdmVSZXNw
b25zZShpZGVudGlmaWVyLCBsb2FkZXIsIHIpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShjb29raWUsIGlkZW50aWZpZXIs
IGxvYWRlciwgcik7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlk
UmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBpbnQgbGVuZ3RoKQogewogICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGll
bnQoKS0+ZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChsb2FkZXIsIGlkZW50aWZpZXIs
IGxlbmd0aCk7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChQYWdlKiBwYWdlID0g
bV9mcmFtZS0+cGFnZSgpKQotICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRp
ZFJlY2VpdmVDb250ZW50TGVuZ3RoKGlkZW50aWZpZXIsIGxlbmd0aCk7Ci0jZW5kaWYKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKG1fZnJhbWUs
IGlkZW50aWZpZXIsIGxlbmd0aCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRp
c3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQogewogICAgIG1fZnJhbWUtPmxvYWRl
cigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKGxvYWRlciwgaWRlbnRpZmll
cik7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFt
ZS0+cGFnZSgpKQotICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpZEZpbmlz
aExvYWRpbmcoaWRlbnRpZmllciwgZmluaXNoVGltZSk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcobV9mcmFtZSwgaWRlbnRpZmllciwgZmlu
aXNoVGltZSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoVHJhbnNm
ZXJMb2FkaW5nUmVzb3VyY2VGcm9tUGFnZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFnZSog
b2xkUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGRl
Mzk5ODY2NWNiZWJhYzE0MGMzNGI4MDFmYzVkNDYyMjc1ODBiNDEuLmVhMGQwMmE4ZjgzNDk0MzZh
Y2MyMWQyNWU0ZDJkNmFjZTU0NWI2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcApAQCAtNDIwLDkgKzQyMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmCiAg
ICAgaWYgKGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9h
ZEZhbGxiYWNrRm9yUmVzcG9uc2UodGhpcywgcmVzcG9uc2UpKQogICAgICAgICByZXR1cm47CiAj
ZW5kaWYKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UobV9mcmFtZS5n
ZXQoKSwgaWRlbnRpZmllcigpLCByZXNwb25zZSk7CiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKHJl
c3BvbnNlKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJj
ZVJlc3BvbnNlKGNvb2tpZSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgaW50IGxl
bmd0aFJlY2VpdmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCA2NDU0YjkwMzRjYTJhMDE0MTc3ZmQ1
NTQ5ZDUwMmY4NzA1YWQ0M2IxLi4wYTEyMDFmMmU4YTdmNmM2NjJiYjgyYTJjYzZjYjU4OTc1ZmQ1
YTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVu
dC5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk1h
aW5SZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIk1hbmlmZXN0UGFyc2VyLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgpAQCAtNDk2LDI1ICs0OTcsMTMgQEAgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRs
ZT4gQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjcmVhdGVSZXNvdXJjZUhhbmRsZShjb25zdCBLVVIK
ICAgICAvLyBCZWNhdXNlIHdpbGxTZW5kUmVxdWVzdCBvbmx5IGdldHMgY2FsbGVkIGR1cmluZyBy
ZWRpcmVjdHMsIHdlIGluaXRpYWxpemUKICAgICAvLyB0aGUgaWRlbnRpZmllciBhbmQgdGhlIGZp
cnN0IHdpbGxTZW5kUmVxdWVzdCBoZXJlLgogICAgIG1fY3VycmVudFJlc291cmNlSWRlbnRpZmll
ciA9IG1fZnJhbWUtPnBhZ2UoKS0+cHJvZ3Jlc3MoKS0+Y3JlYXRlVW5pcXVlSWRlbnRpZmllcigp
OwotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgIEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBwYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCk7Ci0gICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmlkZW50aWZpZXJGb3JJbml0
aWFsUmVxdWVzdChtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIG1fZnJhbWUtPmxvYWRlcigp
LT5kb2N1bWVudExvYWRlcigpLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpKTsKLSAgICAgICAgUmVz
b3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwotICAg
ICAgICBpbnNwZWN0b3JDb250cm9sbGVyLT53aWxsU2VuZFJlcXVlc3QobV9jdXJyZW50UmVzb3Vy
Y2VJZGVudGlmaWVyLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKLSAgICB9CisgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QobV9mcmFt
ZSwgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1l
bnRMb2FkZXIoKSwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKSk7CisgICAgUmVzb3VyY2VSZXNwb25z
ZSByZWRpcmVjdFJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOworICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KG1fZnJhbWUsIG1fY3VycmVudFJlc291cmNl
SWRlbnRpZmllciwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAjZW5kaWYKICAgICByZXR1
cm4gaGFuZGxlOwogfQogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLXZvaWQgQXBwbGljYXRpb25D
YWNoZUdyb3VwOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCi17
Ci0gICAgLy8gVGhpcyBvbmx5IGdldHMgY2FsbGVkIGJ5IFJlc291cmNlSGFuZGxlTWFjIGlmIHRo
ZXJlIGlzIGEgcmVkaXJlY3QuCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkp
Ci0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+d2lsbFNlbmRSZXF1ZXN0KG1f
Y3VycmVudFJlc291cmNlSWRlbnRpZmllciwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Ci19
Ci0jZW5kaWYKLQogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpAQCAtNTIyLDggKzUxMSwxMSBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIGNvbnN0IFJlcwogICAgICAgICBpZiAoaGFuZGxlID09IG1fbWFuaWZlc3RIYW5kbGUp
IHsKICAgICAgICAgICAgIGlmIChJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQqIGFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudCA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YXBwbGljYXRp
b25DYWNoZUFnZW50KCkpCiAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25DYWNoZUFnZW50LT5k
aWRSZWNlaXZlTWFuaWZlc3RSZXNwb25zZShtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIHJl
c3BvbnNlKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCktPmRpZFJlY2VpdmVSZXNwb25zZShtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIs
IG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLCByZXNwb25zZSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gbV9mcmFtZS0+
bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCk7CisgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVj
ZWl2ZVJlc291cmNlUmVzcG9uc2UobV9mcmFtZSwgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVy
LCByZXNwb25zZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlKGNvb2tpZSwgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVy
LCBsb2FkZXIsIHJlc3BvbnNlKTsKKyAgICAgICAgfQogICAgIH0KICNlbmRpZgogCkBAIC01OTMs
MTIgKzU4NSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzCiAKIHZvaWQgQXBwbGljYXRpb25D
YWNoZUdyb3VwOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCiB7Ci0jaWYgRU5BQkxF
KElOU1BFQ1RPUikKLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAg
ICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaWRSZWNlaXZlQ29udGVudExlbmd0aCht
X2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIGxlbmd0aFJlY2VpdmVkKTsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKGxlbmd0aFJlY2VpdmVkKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgobV9mcmFtZSwgbV9jdXJyZW50UmVz
b3VyY2VJZGVudGlmaWVyLCBsZW5ndGhSZWNlaXZlZCk7CiAKICAgICBpZiAoaGFuZGxlID09IG1f
bWFuaWZlc3RIYW5kbGUpIHsKICAgICAgICAgZGlkUmVjZWl2ZU1hbmlmZXN0RGF0YShkYXRhLCBs
ZW5ndGgpOwpAQCAtNjE1LDEwICs2MDIsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgY2hhciogZAogCiB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlLCBkb3VibGUgZmluaXNoVGltZSkKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQot
ICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQotICAgICAgICBwYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPmRpZEZpbmlzaExvYWRpbmcobV9jdXJyZW50UmVzb3VyY2VJZGVu
dGlmaWVyLCBmaW5pc2hUaW1lKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRmluaXNoTG9hZGluZyhtX2ZyYW1lLCBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIs
IGZpbmlzaFRpbWUpOwogCiAgICAgaWYgKGhhbmRsZSA9PSBtX21hbmlmZXN0SGFuZGxlKSB7CiAg
ICAgICAgIGRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpOwpAQCAtNjU3LDEyICs2NDEsNyBAQCB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlLCBkb3VibGUgZmluaQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlk
RmFpbChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
IHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+
cGFnZSgpKQotICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpZEZhaWxMb2Fk
aW5nKG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwgZXJyb3IpOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oZXJyb3IpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGYWlsTG9hZGluZyhtX2ZyYW1lLCBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIGVycm9y
KTsKIAogICAgIGlmIChoYW5kbGUgPT0gbV9tYW5pZmVzdEhhbmRsZSkgewogICAgICAgICBjYWNo
ZVVwZGF0ZUZhaWxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCmluZGV4IDI5ZDA3NDlkOGY2N2VjODhlYjI4Yzlh
OGIwYmEzMGNjNWRiZmNlNjkuLjJkOGI4M2UxYzc0OGEwOWQwMTU4OTc5NDY5OTI2NzkzNTdjZTMz
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmgKQEAgLTExMCw5ICsxMTAsNiBAQCBwcml2YXRlOgogICAgIC8vIHRo
ZSBleGlzdGluZyBjbGllbnQgY2FsbGJhY2sgY2Fubm90IGJlIHVzZWQsIHNvIGFzc3VtZSB0aGF0
IGFueSBjbGllbnQgdGhhdCBlbmFibGVzIGFwcGxpY2F0aW9uIGNhY2hlIGFsc28gd2FudHMgaXQg
dG8gdXNlIGNyZWRlbnRpYWwgc3RvcmFnZS4KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VIYW5kbGUqKSB7IHJldHVybiB0cnVlOyB9CiAKLSNpZiBF
TkFCTEUoSU5TUEVDVE9SKQotICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3Vy
Y2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0j
ZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQgbGVuZ3RoLCBpbnQgbGVuZ3Ro
UmVjZWl2ZWQpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFu
ZGxlKiwgZG91YmxlIGZpbmlzaFRpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAppbmRleCA0YThlOTQ3MzFi
YWE2MjBkYmU5ZGY1ZDM0MDk3N2IwOTliMGEwNjQ0Li4zYTE0YjYyZGU1YzI3NWRjMTk1MWJjNTQ5
Y2MwZDlmOWU5MTViMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1
bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2lu
Y2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgor
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VF
dmVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKQEAgLTI5MSwxMCArMjkxLDcgQEAgdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6
Om5vdGlmeUZpbmlzaGVkKCkKICAgICBpZiAobV9zY3JpcHRMb2FkZXItPmZhaWxlZCgpKQogICAg
ICAgICBtX3dvcmtlci0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5l
cnJvckV2ZW50LCBmYWxzZSwgdHJ1ZSkpOwogICAgIGVsc2UgewotI2lmIEVOQUJMRShJTlNQRUNU
T1IpCi0gICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3IgPSBtX3dvcmtl
ci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCi0gICAg
ICAgICAgICBpbnNwZWN0b3ItPnNjcmlwdEltcG9ydGVkKG1fc2NyaXB0TG9hZGVyLT5pZGVudGlm
aWVyKCksIG1fc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSk7Ci0jZW5kaWYKKyAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZChtX3dvcmtlci0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCBtX3NjcmlwdExvYWRlci0+aWRlbnRpZmllcigpLCBtX3NjcmlwdExvYWRl
ci0+c2NyaXB0KCkpOwogICAgICAgICBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aW5z
dGFuY2UoKS53b3JrZXJTY3JpcHRMb2FkZWQoKm1fcHJveHksIG1fd29ya2VyLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnVzZXJBZ2VudChtX3NjcmlwdExvYWRlci0+dXJsKCkpLCBtX3Njcmlw
dExvYWRlci0+c2NyaXB0KCksIG1fcG9ydC5yZWxlYXNlKCkpOwogICAgIH0KICAgICBtX3dvcmtl
ci0+dW5zZXRQZW5kaW5nQWN0aXZpdHkobV93b3JrZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXIuY3BwCmluZGV4IDMyZWM5OTc1NjJiZjcyMjk4MjYwYzE2YWJiZjQ5Y2M5NzczYWM3ZTgu
LjhhMmY2MmFlMmEzZjE4ZGM3NGQyMTY4OGNlZDE3MTExYzA4N2JjMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlci5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgor
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VF
dmVudC5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRl
eHRQcm94eS5oIgpAQCAtMTM1LDEwICsxMzYsNyBAQCB2b2lkIFdvcmtlcjo6bm90aWZ5RmluaXNo
ZWQoKQogICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVy
cm9yRXZlbnQsIGZhbHNlLCB0cnVlKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIG1fY29udGV4dFBy
b3h5LT5zdGFydFdvcmtlckNvbnRleHQobV9zY3JpcHRMb2FkZXItPnVybCgpLCBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnVzZXJBZ2VudChtX3NjcmlwdExvYWRlci0+dXJsKCkpLCBtX3Njcmlw
dExvYWRlci0+c2NyaXB0KCkpOwotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIGlmIChJ
bnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3IgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKSkKLSAgICAgICAgICAgIGluc3BlY3Rvci0+c2NyaXB0SW1w
b3J0ZWQobV9zY3JpcHRMb2FkZXItPmlkZW50aWZpZXIoKSwgbV9zY3JpcHRMb2FkZXItPnNjcmlw
dCgpKTsKLSNlbmRpZgorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdElt
cG9ydGVkKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV9zY3JpcHRMb2FkZXItPmlkZW50aWZp
ZXIoKSwgbV9zY3JpcHRMb2FkZXItPnNjcmlwdCgpKTsKICAgICB9CiAgICAgbV9zY3JpcHRMb2Fk
ZXIgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAppbmRleCAz
NDVlNWI3NjA0NzJiYzFiMmY4MmI5YzdlYzU3OWNjMGQ4MGQ0ZDViLi42YzUwZjFhMjI0NzNkMzFh
OGMyN2RlODA1ZjAyZGFmMGRhYWJkMzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Q29udGV4dC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCiAj
aW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgotI2luY2x1ZGUg
Ikluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgpAQCAtMjQ1LDEwICsyNDUsNyBAQCB2b2lkIFdvcmtlckNv
bnRleHQ6OmltcG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotICAgICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yID0g
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCi0gICAgICAg
ICAgICBpbnNwZWN0b3ItPnNjcmlwdEltcG9ydGVkKHNjcmlwdExvYWRlci5pZGVudGlmaWVyKCks
IHNjcmlwdExvYWRlci5zY3JpcHQoKSk7Ci0jZW5kaWYKKyAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnNjcmlwdEltcG9ydGVkKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2NyaXB0
TG9hZGVyLmlkZW50aWZpZXIoKSwgc2NyaXB0TG9hZGVyLnNjcmlwdCgpKTsKIAogICAgICAgICBT
Y3JpcHRWYWx1ZSBleGNlcHRpb247CiAgICAgICAgIG1fc2NyaXB0LT5ldmFsdWF0ZShTY3JpcHRT
b3VyY2VDb2RlKHNjcmlwdExvYWRlci5zY3JpcHQoKSwgKml0KSwgJmV4Y2VwdGlvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBmYzdlYjllMmQ0OTU1YTI2OTI1MGU0
OWRhMmE1OWYzZmRkMWQ4YTQ4Li5kODY2OTQ3NGIxMDBiZTdjMTU0MWJhMGY0MDExN2VkZWRmNGQ3
NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTM1LDcgKzM1LDYg
QEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgogI2luY2x1ZGUg
IkhUVFBQYXJzZXJzLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3Iu
aCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTEwMDIsMTAgKzEwMDEsNyBAQCB2
b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllcikKICAgICAvLyBGSVhNRTogU2V0IG1fcmVzcG9uc2VCbG9iIHRvIHNvbWV0aGluZyBoZXJl
IGluIHRoZSBSZXNwb25zZVR5cGVCbG9iIGNhc2UuCiAjZW5kaWYKIAotI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCi0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvciA9IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICBpbnNwZWN0
b3ItPnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdChpZGVudGlmaWVyLCBtX3Jlc3Bv
bnNlQnVpbGRlci50b1N0cmluZ1ByZXNlcnZlQ2FwYWNpdHkoKSwgbV91cmwsIG1fbGFzdFNlbmRV
UkwsIG1fbGFzdFNlbmRMaW5lTnVtYmVyKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgaWRlbnRpZmllciwgbV9yZXNwb25zZUJ1aWxkZXIudG9TdHJpbmdQcmVzZXJ2
ZUNhcGFjaXR5KCksIG1fdXJsLCBtX2xhc3RTZW5kVVJMLCBtX2xhc3RTZW5kTGluZU51bWJlcik7
CiAKICAgICBib29sIGhhZExvYWRlciA9IG1fbG9hZGVyOwogICAgIG1fbG9hZGVyID0gMDsKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDlhNGI5YWRhNGE0MDk4NGFhYTJkYTcwYzlkNjc0Y2MyNzc3NDIyOTEuLmIx
ZDc1ZDExNWRjYzM2M2NlYjVkMTlkZmViMjkzOGRjMjg0MTg2NzYgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI5IEBACisyMDEwLTEyLTI5ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGluc3BlY3Rvci90aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmh0bWwgZmFpbHMgd2hlbiBydW4g
dHdpY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3
Mzk0CisKKyAgICAgICAgU2VuZCBkaWRSZWNlaXZlUmVzcG9uc2Ugbm90aWZpY2F0aW9uIHRvIHRo
ZSB0aW1lbGluZSBhZ2VudCBmcm9tIFJlc291cmNlTG9hZE5vdGlmaWVyCisgICAgICAgIGluc3Rl
YWQgb2YgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSB0byBjb3ZlciB0aGUgY2Fz
ZXMgd2hlbiByZXNvdXJjZXMKKyAgICAgICAgYXJlIGxvYWRlZCBmcm9tIG1lbW9yeSBjYWNoZS4K
KworICAgICAgICBOZXR3b3JrIG5vdGlmaWNhdGlvbnMgYXJlIG5vdyBzZW50IHRvIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbiB3aGljaCBkaXNwYXRjaGVzCisgICAgICAgIHRoZW0gdG8gaW50ZXJl
c3RlZCBhZ2VudHMgYW5kIEluc3BlY3RvckNvbnRyb2xsZXIuCisKKyAgICAgICAgKiBzcmMvU2hh
cmVkV29ya2VyUmVwb3NpdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9vbHNB
Z2VudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6bWFp
bkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6OmlkZW50aWZp
ZXJGb3JJbml0aWFsUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJ
bXBsOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50
SW1wbDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50
SW1wbDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNB
Z2VudEltcGw6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29s
c0FnZW50SW1wbDo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAqIHNyYy9XZWJEZXZUb29sc0Fn
ZW50SW1wbC5oOgorCiAyMDExLTAxLTExICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAppbmRleCA4OGQzZWM1
NGZlODc4NmVjNTQzMjAxMzQ3YjUzZGRmNzBkYzUzNWJmLi4zZDQ0MjhhYzRhNjRmZjlhYzkzMjcx
MjJiNjgyZTVkMmMxNzI1NTZmIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1NoYXJl
ZFdvcmtlclJlcG9zaXRvcnkuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU2hhcmVkV29y
a2VyUmVwb3NpdG9yeS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkV2ZW50Lmgi
CiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJNZXNz
YWdlUG9ydENoYW5uZWwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5o
IgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKQEAgLTE2MiwxMCArMTYyLDcg
QEAgdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkKICAgICAg
ICAgbV93b3JrZXItPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJy
b3JFdmVudCwgZmFsc2UsIHRydWUpKTsKICAgICAgICAgZGVsZXRlIHRoaXM7CiAgICAgfSBlbHNl
IHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpKQotICAgICAgICAgICAgaW5zcGVjdG9yLT5zY3JpcHRJbXBvcnRlZCht
X3NjcmlwdExvYWRlci5pZGVudGlmaWVyKCksIG1fc2NyaXB0TG9hZGVyLnNjcmlwdCgpKTsKLSNl
bmRpZgorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKG1f
d29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fc2NyaXB0TG9hZGVyLmlkZW50aWZp
ZXIoKSwgbV9zY3JpcHRMb2FkZXIuc2NyaXB0KCkpOwogICAgICAgICAvLyBQYXNzIHRoZSBzY3Jp
cHQgb2ZmIHRvIHRoZSB3b3JrZXIsIHRoZW4gc2VuZCBhIGNvbm5lY3QgZXZlbnQuCiAgICAgICAg
IG1fd2ViV29ya2VyLT5zdGFydFdvcmtlckNvbnRleHQobV91cmwsIG1fbmFtZSwgbV93b3JrZXIt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXNlckFnZW50KG1fdXJsKSwgbV9zY3JpcHRMb2Fk
ZXIuc2NyaXB0KCksIG1fcmVzcG9uc2VBcHBDYWNoZUlEKTsKICAgICAgICAgc2VuZENvbm5lY3Qo
KTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwu
Y3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKaW5kZXgg
ZGJkNmRjYTg0MjQyMzg1NDU4MTk4NmM3YWZmNGZhMTllNDFiNDk0OS4uNDYxYzJkMDc1MTI2OTRj
NDIxMTc0ODQ1Yjc1OWVjNmZlYjVkZTZlMyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
ZXZUb29sc0FnZW50SW1wbC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJJbmplY3Rl
ZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKQEAgLTY5LDYgKzcwLDggQEAgdXNpbmcgV2Vi
Q29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OwogdXNpbmcgV2ViQ29yZTo6SW5zcGVjdG9yQXJyYXk7
CiB1c2luZyBXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKIHVzaW5nIFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI7Cit1c2luZyBXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb247Cit1c2luZyBXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWU7
CiB1c2luZyBXZWJDb3JlOjpOb2RlOwogdXNpbmcgV2ViQ29yZTo6UGFnZTsKIHVzaW5nIFdlYkNv
cmU6OlJlc291cmNlRXJyb3I7CkBAIC0yNjYsMjUgKzI2OSwzMCBAQCBXZWJDb3JlOjpJbnNwZWN0
b3JDb250cm9sbGVyKiBXZWJEZXZUb29sc0FnZW50SW1wbDo6aW5zcGVjdG9yQ29udHJvbGxlcigp
CiAgICAgcmV0dXJuIDA7CiB9CiAKK1dlYkNvcmU6OkZyYW1lKiBXZWJEZXZUb29sc0FnZW50SW1w
bDo6bWFpbkZyYW1lKCkKK3sKKyAgICBpZiAoUGFnZSogcGFnZSA9IG1fd2ViVmlld0ltcGwtPnBh
Z2UoKSkKKyAgICAgICAgcmV0dXJuIHBhZ2UtPm1haW5GcmFtZSgpOworICAgIHJldHVybiAwOwor
fQorCiAKIC8vLS0tLS0tLSBwbHVnaW4gcmVzb3VyY2UgbG9hZCBub3RpZmljYXRpb25zIC0tLS0t
LS0tLS0tLS0tLQogdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6aWRlbnRpZmllckZvckluaXRp
YWxSZXF1ZXN0KAogICAgIHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VJZCwKLSAgICBXZWJGcmFtZSog
ZnJhbWUsCisgICAgV2ViRnJhbWUqIHdlYkZyYW1lLAogICAgIGNvbnN0IFdlYlVSTFJlcXVlc3Qm
IHJlcXVlc3QpCiB7Ci0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW5zcGVjdG9y
Q29udHJvbGxlcigpKSB7Ci0gICAgICAgIFdlYkZyYW1lSW1wbCogd2ViRnJhbWVJbXBsID0gc3Rh
dGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4oZnJhbWUpOwotICAgICAgICBGcmFtZUxvYWRlciogZnJh
bWVMb2FkZXIgPSB3ZWJGcmFtZUltcGwtPmZyYW1lKCktPmxvYWRlcigpOwotICAgICAgICBEb2N1
bWVudExvYWRlciogbG9hZGVyID0gZnJhbWVMb2FkZXItPmFjdGl2ZURvY3VtZW50TG9hZGVyKCk7
Ci0gICAgICAgIGljLT5pZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QocmVzb3VyY2VJZCwgbG9h
ZGVyLCByZXF1ZXN0LnRvUmVzb3VyY2VSZXF1ZXN0KCkpOwotICAgIH0KKyAgICBXZWJGcmFtZUlt
cGwqIHdlYkZyYW1lSW1wbCA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KHdlYkZyYW1lKTsK
KyAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSB3ZWJGcmFtZUltcGwtPmZyYW1lKCk7CisgICAg
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRM
b2FkZXIoKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlkZW50aWZpZXJGb3JJbml0
aWFsUmVxdWVzdChmcmFtZSwgcmVzb3VyY2VJZCwgbG9hZGVyLCByZXF1ZXN0LnRvUmVzb3VyY2VS
ZXF1ZXN0KCkpOwogfQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjp3aWxsU2VuZFJlcXVl
c3QodW5zaWduZWQgbG9uZyByZXNvdXJjZUlkLCBXZWJVUkxSZXF1ZXN0JiByZXF1ZXN0KQogewog
ICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpYyA9IGluc3BlY3RvckNvbnRyb2xsZXIoKSkg
ewotICAgICAgICBpYy0+d2lsbFNlbmRSZXF1ZXN0KHJlc291cmNlSWQsIHJlcXVlc3QudG9NdXRh
YmxlUmVzb3VyY2VSZXF1ZXN0KCksIFJlc291cmNlUmVzcG9uc2UoKSk7CisgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KG1haW5GcmFtZSgpLCByZXNvdXJj
ZUlkLCByZXF1ZXN0LnRvTXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLCBSZXNvdXJjZVJlc3BvbnNl
KCkpOwogICAgICAgICBpZiAoaWMtPmhhc0Zyb250ZW5kKCkgJiYgcmVxdWVzdC5yZXBvcnRMb2Fk
VGltaW5nKCkpCiAgICAgICAgICAgICByZXF1ZXN0LnNldFJlcG9ydFJhd0hlYWRlcnModHJ1ZSk7
CiAgICAgfQpAQCAtMjkyLDI3ICszMDAsMjMgQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6
d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VJZCwgV2ViVVJMUmVxdWUKIAog
dm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZyBy
ZXNvdXJjZUlkLCBpbnQgbGVuZ3RoKQogewotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBp
YyA9IGluc3BlY3RvckNvbnRyb2xsZXIoKSkKLSAgICAgICAgaWMtPmRpZFJlY2VpdmVDb250ZW50
TGVuZ3RoKHJlc291cmNlSWQsIGxlbmd0aCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZWNlaXZlQ29udGVudExlbmd0aChtYWluRnJhbWUoKSwgcmVzb3VyY2VJZCwgbGVuZ3Ro
KTsKIH0KIAogdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVu
c2lnbmVkIGxvbmcgcmVzb3VyY2VJZCwgY29uc3QgV2ViVVJMUmVzcG9uc2UmIHJlc3BvbnNlKQog
ewotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpYyA9IGluc3BlY3RvckNvbnRyb2xsZXIo
KSkKLSAgICAgICAgaWMtPmRpZFJlY2VpdmVSZXNwb25zZShyZXNvdXJjZUlkLCAwLCByZXNwb25z
ZS50b1Jlc291cmNlUmVzcG9uc2UoKSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJj
ZVJlc3BvbnNlKG1haW5GcmFtZSgpLCByZXNvdXJjZUlkLCAwLCByZXNwb25zZS50b1Jlc291cmNl
UmVzcG9uc2UoKSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVz
b3VyY2VSZXNwb25zZShjb29raWUpOwogfQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpk
aWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VJZCkKIHsKLSAgICBpZiAoSW5z
cGVjdG9yQ29udHJvbGxlciogaWMgPSBpbnNwZWN0b3JDb250cm9sbGVyKCkpCi0gICAgICAgIGlj
LT5kaWRGaW5pc2hMb2FkaW5nKHJlc291cmNlSWQsIDApOworICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhtYWluRnJhbWUoKSwgcmVzb3VyY2VJZCwgMCk7CiB9
CiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxv
bmcgcmVzb3VyY2VJZCwgY29uc3QgV2ViVVJMRXJyb3ImIGVycm9yKQogewotICAgIFJlc291cmNl
RXJyb3IgcmVzb3VyY2VFcnJvcjsKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaWMgPSBp
bnNwZWN0b3JDb250cm9sbGVyKCkpCi0gICAgICAgIGljLT5kaWRGYWlsTG9hZGluZyhyZXNvdXJj
ZUlkLCByZXNvdXJjZUVycm9yKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZh
aWxMb2FkaW5nKG1haW5GcmFtZSgpLCByZXNvdXJjZUlkLCBlcnJvcik7CiB9CiAKIHZvaWQgV2Vi
RGV2VG9vbHNBZ2VudEltcGw6Omluc3BlY3RvckRlc3Ryb3llZCgpCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKaW5kZXggOWIzYzA1MzcyMzlkZDBhMGMxNzc0M2Rm
ZGEzNTY2OTFlZDkzY2VmOS4uOGQ5N2FhNDc2NjhjYzY3Zjk0ZjZiOGY1ZDdhMjFhMTk4NzI1ZDNi
YiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5o
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaApAQCAtMTAx
LDYgKzEwMSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbnNwZWN0b3JD
b250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKCk7CisgICAgV2ViQ29yZTo6RnJhbWUqIG1h
aW5GcmFtZSgpOwogCiAgICAgaW50IG1faG9zdElkOwogICAgIFdlYkRldlRvb2xzQWdlbnRDbGll
bnQqIG1fY2xpZW50Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78667</attachid>
            <date>2011-01-12 02:40:43 -0800</date>
            <delta_ts>2011-01-12 02:59:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37394-20110112134040.patch</filename>
            <type>text/plain</type>
            <size>79991</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMzM3ZTUwMzIzYWE5ODUzMTg2NmE1YTYzYWQ4YWQ1ZmQxZWE4ZDFlLi4wNDQzM2Zh
ZmViZjVmYzI4MDAwMzM1MjhlYmFlMjMzNzI1NTBmMGRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTAtMTItMjkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaW5zcGVjdG9yL3Rp
bWVsaW5lLW5ldHdvcmstcmVzb3VyY2UuaHRtbCBmYWlscyB3aGVuIHJ1biB0d2ljZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzczOTQKKworICAgICAg
ICBTZW5kIGRpZFJlY2VpdmVSZXNwb25zZSBub3RpZmljYXRpb24gdG8gdGhlIHRpbWVsaW5lIGFn
ZW50IGZyb20gUmVzb3VyY2VMb2FkTm90aWZpZXIKKyAgICAgICAgaW5zdGVhZCBvZiBSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlIHRvIGNvdmVyIHRoZSBjYXNlcyB3aGVuIHJlc291
cmNlcworICAgICAgICBhcmUgbG9hZGVkIGZyb20gbWVtb3J5IGNhY2hlLgorCisgICAgICAgIE5l
dHdvcmsgbm90aWZpY2F0aW9ucyBhcmUgbm93IHNlbmQgdG8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uIHdoaWNoIGRpc3BhdGNoZXMKKyAgICAgICAgdGhlbSB0byBpbnRlcmVzdGVkIGFnZW50cyBh
bmQgSW5zcGVjdG9yQ29udHJvbGxlci4KKyAgICAgICAgZml4CisKKyAgICAgICAgKiBpbnNwZWN0
b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5z
cGVjdG9yL3RpbWVsaW5lLW5ldHdvcmstcmVzb3VyY2UuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS5qczoKKwogMjAxMC0xMi0yNyAgU2hpbmljaGly
byBIYW1hamkgIDxzaGluaWNoaXJvLmhhbWFqaUBnbWFpbC5jb20+CiAKICAgICAgICAgQ2hyb21p
dW0gZXhwZWN0YXRpb24gdXBkYXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3RpbWVsaW5lLW5ldHdvcmstcmVzb3VyY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3RpbWVsaW5lLW5ldHdvcmstcmVzb3VyY2UtZXhwZWN0ZWQudHh0CmluZGV4IGQ5NDE4
Y2E4MDI5OGZmM2Q3NzE4MjU2NTNjZTI2MDM4Mzc2MGZhNDkuLjkyNjk3NzVhMTUyNTdiZDQ5YTcz
YjNmOTRjZjdkYzNkMjEzMDA2NzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS1leHBlY3RlZC50eHQKQEAgLTgsNyAr
OCw2IEBAIFJlc291cmNlU2VuZFJlcXVlc3QgUHJvcGVydGllczoKICAgICAgICAgaWRlbnRpZmll
ciA6IDxudW1iZXI+CiAgICAgICAgIHVybCA6IDxzdHJpbmc+CiAgICAgICAgIHJlcXVlc3RNZXRo
b2QgOiAiR0VUIgotICAgICAgICBpc01haW5SZXNvdXJjZSA6IGZhbHNlCiAgICAgfQogICAgIHR5
cGUgOiAxMgogICAgIHVzZWRIZWFwU2l6ZSA6IDxudW1iZXI+CkBAIC0yMiw3ICsyMSw3IEBAIFJl
c291cmNlUmVjZWl2ZVJlc3BvbnNlIFByb3BlcnRpZXM6CiAgICAgICAgIGlkZW50aWZpZXIgOiA8
bnVtYmVyPgogICAgICAgICBzdGF0dXNDb2RlIDogMAogICAgICAgICBtaW1lVHlwZSA6IDxzdHJp
bmc+Ci0gICAgICAgIGV4cGVjdGVkQ29udGVudExlbmd0aCA6IDIxMAorICAgICAgICBleHBlY3Rl
ZENvbnRlbnRMZW5ndGggOiAyMDgKICAgICAgICAgdXJsIDogPHN0cmluZz4KICAgICB9CiAgICAg
Y2hpbGRyZW4gOiA8b2JqZWN0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Rp
bWVsaW5lLW5ldHdvcmstcmVzb3VyY2UuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1l
bGluZS1uZXR3b3JrLXJlc291cmNlLmh0bWwKaW5kZXggZmUyOGVkM2I4ZWRiZThlYzVlMWM3YWRk
MWQ4NTI0OWNhMGU3MDJmNy4uNzI4NmZiNmFhYzg4MmFjODFhZGNiYWRmMTU0M2Y2NzU0OTA1MTE2
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLW5ldHdvcmstcmVz
b3VyY2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1y
ZXNvdXJjZS5odG1sCkBAIC02LDE2ICs2LDE2IEBACiAKIHZhciBzY3JpcHRVcmwgPSAidGltZWxp
bmUtbmV0d29yay1yZXNvdXJjZS5qcyI7CiAKLWZ1bmN0aW9uIHJ1bkFmdGVyU2NyaXB0SXNFdmFs
dWF0ZWQoY29udGludWF0aW9uKQorZnVuY3Rpb24gcnVuQWZ0ZXJTY3JpcHRJc0V2YWx1YXRlZCgp
CiB7Ci0gICAgZnVuY3Rpb24gc3RlcCgpCi0gICAgewotICAgICAgICBpZiAoIXdpbmRvdy5zY3Jp
cHRFdmFsdWF0ZWQpCi0gICAgICAgICAgICBzZXRUaW1lb3V0KHN0ZXAsIDEwMCk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGNvbnRpbnVhdGlvbigpOwotICAgIH0KLSAgICBzZXRUaW1lb3V0
KHN0ZXAsIDEwMCk7CisgICAgcHJpbnRUaW1lbGluZVJlY29yZHMobnVsbCwgbnVsbCwgZnVuY3Rp
b24ocmVjb3JkKSB7CisgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJl
Y29yZFR5cGVbIlJlc291cmNlU2VuZFJlcXVlc3QiXSkKKyAgICAgICAgICAgIHByaW50U2VuZChy
ZWNvcmQpOworICAgICAgICBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJl
Y29yZFR5cGVbIlJlc291cmNlUmVjZWl2ZVJlc3BvbnNlIl0pCisgICAgICAgICAgICBwcmludFJl
Y2VpdmUocmVjb3JkKTsKKyAgICAgICAgZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IHRpbWVsaW5l
QWdlbnRSZWNvcmRUeXBlWyJSZXNvdXJjZUZpbmlzaCJdKQorICAgICAgICAgICAgcHJpbnRGaW5p
c2gocmVjb3JkKTsKKyAgICB9KTsKIH0KIAogZnVuY3Rpb24gcHJpbnRSZWNvcmQocmVjb3JkKQpA
QCAtNjAsMTcgKzYwLDYgQEAgZnVuY3Rpb24gZG9pdCgpCiAgICAgdmFyIHNjcmlwdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOwogICAgIHNjcmlwdC5zcmMgPSBzY3JpcHRVcmw7
CiAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpOwotICAgIHJ1bkFmdGVyU2Ny
aXB0SXNFdmFsdWF0ZWQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHByaW50VGltZWxpbmVSZWNvcmRz
KG51bGwsIG51bGwsIGZ1bmN0aW9uKHJlY29yZCkgewotICAgICAgICAgICAgaWYgKHJlY29yZC50
eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZVsiUmVzb3VyY2VTZW5kUmVxdWVzdCJdKQot
ICAgICAgICAgICAgICAgIHByaW50U2VuZChyZWNvcmQpOwotICAgICAKLSAgICAgICAgICAgIGVs
c2UgaWYgKHJlY29yZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZVsiUmVzb3VyY2VS
ZWNlaXZlUmVzcG9uc2UiXSkKLSAgICAgICAgICAgICAgICBwcmludFJlY2VpdmUocmVjb3JkKTsK
LSAgICAgICAgICAgIGVsc2UgaWYgKHJlY29yZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3Jk
VHlwZVsiUmVzb3VyY2VGaW5pc2giXSkKLSAgICAgICAgICAgICAgICBwcmludEZpbmlzaChyZWNv
cmQpOwotICAgICAgICB9KTsKLSAgICB9KTsKIH0KIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS5qcyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmpzCmluZGV4IDZmZTBk
MThkODAwZWQ3ZTAwZDFiZTgyMDg4ODNhMzA2YzA5NGVhNDkuLmRlN2M3MjBmNThmNzc3OWNiYmY2
Y2U3MTU3YjI1MWY2MTUyOWQwNWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmpzCkBAIC0zLDQgKzMsNCBAQAogdmFyIGVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKIGVsZW1lbnQuaW5uZXJIVE1MID0gIlNj
cmlwdCByZXNvdXJjZSBsb2FkZWQiOwogZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50
KTsKLXdpbmRvdy5zY3JpcHRFdmFsdWF0ZWQgPSB0cnVlOworcnVuQWZ0ZXJTY3JpcHRJc0V2YWx1
YXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDhkYmM3NmQ3NzVjNDFhOTJkMmQwOWZhYWFjMmMwZWZhNTY0
MGYwNTIuLmQ4YTNiYTRiNDAwNDMyYjljMDhmYzhiNDgwZDhiNzZmMzM5YjE0ZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw5MyBAQAorMjAxMC0xMi0yOSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlz
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBpbnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS5odG1sIGZhaWxzIHdo
ZW4gcnVuIHR3aWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNzM5NAorCisgICAgICAgIFNlbmQgZGlkUmVjZWl2ZVJlc3BvbnNlIG5vdGlmaWNhdGlv
biB0byB0aGUgdGltZWxpbmUgYWdlbnQgZnJvbSBSZXNvdXJjZUxvYWROb3RpZmllcgorICAgICAg
ICBpbnN0ZWFkIG9mIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UgdG8gY292ZXIg
dGhlIGNhc2VzIHdoZW4gcmVzb3VyY2VzCisgICAgICAgIGFyZSBsb2FkZWQgZnJvbSBtZW1vcnkg
Y2FjaGUuCisKKyAgICAgICAgTmV0d29yayBub3RpZmljYXRpb25zIGFyZSBub3cgc2VudCB0byBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24gd2hpY2ggZGlzcGF0Y2hlcworICAgICAgICB0aGVtIHRv
IGludGVyZXN0ZWQgYWdlbnRzIGFuZCBJbnNwZWN0b3JDb250cm9sbGVyLgorCisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3Rvci5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQ6OmRpZFJlY2VpdmVNYW5pZmVzdFJlc3BvbnNlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJl
cXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlkZW50aWZpZXJGb3JJbml0aWFsUmVx
dWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsU2VuZFJlcXVlc3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlSW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlQ29udGVudExlbmd0aEltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nSW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5n
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlc291
cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZEltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXRyaWV2ZVJlc291cmNlQWdlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aWRlbnRpZmllckZvckluaXRpYWxS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6bWFya1Jlc291cmNlQXNDYWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZWNlaXZlQ29udGVudExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9y
dGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjppZGVudGlmaWVyRm9ySW5p
dGlhbFJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFNlbmRSZXNvdXJjZVJl
cXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJlc291cmNlU2VuZFJlcXVlc3RE
YXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuaWRlbnRpZmllckZvckluaXRpYWxS
ZXF1ZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuYWRkUmVjb3Jk
VG9UaW1lbGluZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZEZhaWxUb0xvYWQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRj
aFdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmll
cjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFpbmlu
Z0RlbGVnYXRlTWVzc2FnZXMpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y3JlYXRlUmVzb3VyY2VIYW5k
bGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpkaWRGYWlsKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdy
b3VwLmg6CisgICAgICAgICogd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlmeUZp
bmlzaGVkKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0cyk6
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKToKKwogMjAxMS0wMS0xMSAgTm9lbCBHb3Jk
b24gIDxub2VsLmdvcmRvbkBnbWFpbC5jb20+CiAKICAgICAgICAgIFJldmlld2VkIGJ5IEphbWVz
IFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRleCA1MzU5
ZTE2YzAwNDRkZTczMWExMmNjZDhjMWFkM2MzMWU1NGVmMTVmLi5lZDAwY2M3NmQzNjc5MjQyNTRm
ZjMzMjlhNGE2MzYwYzdmZjQ5MmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
LmlkbApAQCAtOTEsNyArOTEsNyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIFtkb21haW49TmV0
d29ya10gdm9pZCByZXNvdXJjZUNvbnRlbnQoaW4gdW5zaWduZWQgbG9uZyBmcmFtZUlkLCBpbiBT
dHJpbmcgdXJsLCBpbiBib29sZWFuIGJhc2U2NEVuY29kZSwgb3V0IFN0cmluZyBjb250ZW50KTsK
ICAgICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtdIHZvaWQgZnJhbWVEZXRhY2hlZEZyb21Q
YXJlbnQob3V0IHVuc2lnbmVkIGxvbmcgZnJhbWVJZCk7CiAKLSAgICAgICAgW25vdGlmeSwgZG9t
YWluPU5ldHdvcmtdIHZvaWQgaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KG91dCBsb25nIGlk
ZW50aWZpZXIsIG91dCBTdHJpbmcgdXJsLCBvdXQgT2JqZWN0IGxvYWRlciwgb3V0IFZhbHVlIGNh
bGxTdGFjayk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIGlkZW50aWZp
ZXJGb3JJbml0aWFsUmVxdWVzdChvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgU3RyaW5nIHVybCwg
b3V0IE9iamVjdCBsb2FkZXIsIG91dCBib29sZWFuIGlzTWFpblJlc291cmNlTG9hZGVyLCBvdXQg
VmFsdWUgY2FsbFN0YWNrKTsKICAgICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtdIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0KG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0
IE9iamVjdCByZXF1ZXN0LCBvdXQgT2JqZWN0IHJlZGlyZWN0UmVzcG9uc2UpOwogICAgICAgICBb
bm90aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCBtYXJrUmVzb3VyY2VBc0NhY2hlZChvdXQgbG9u
ZyBpZGVudGlmaWVyKTsKICAgICAgICAgW25vdGlmeSwgZG9tYWluPU5ldHdvcmtdIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKG91dCBsb25nIGlkZW50aWZpZXIsIG91dCBkb3VibGUgdGltZSwgb3V0
IFN0cmluZyByZXNvdXJjZVR5cGUsIG91dCBPYmplY3QgcmVzcG9uc2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50LmNwcAppbmRleCBjZWQ2MWM1ZGQyZDNmMmU5OWMwNDkyMDZmMzI5OWQwMTdmZGQ5ODM2Li5k
MzU3MjY2YzYxMzM1OGFiNGUxNGY5NWVhZTc0OTgwYjlkZjUwOTM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50LmNwcApAQCAtNDYsMTEgKzQ2LDYgQEAgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
OjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoSW5zcGVjdG9yQ29udHJvbGwKIHsKIH0K
IAotdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmRpZFJlY2VpdmVNYW5pZmVz
dFJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCi17Ci0gICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5kaWRSZWNlaXZlUmVz
cG9uc2UoaWRlbnRpZmllciwgMCwgcmVzcG9uc2UpOwotfQotCiB2b2lkIEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudDo6dXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6U3RhdHVzIHN0YXR1cykKIHsKICAgICBtX2Zyb250ZW5kLT51cGRhdGVBcHBs
aWNhdGlvbkNhY2hlU3RhdHVzKHN0YXR1cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKaW5kZXggMTFmMTBj
ZTAyNjc3MzhhZDQxMTUzZTY3OTg2MDJhZjU5NGQxMDgzOS4uMjMzYjVmMjQ1OTYyNTliZGZhMzA4
MTQ4NGU4YTFlNmE0ZTAzODMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaApAQCAtNDYsNyArNDYsNiBA
QCBwdWJsaWM6CiAgICAgfkluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpIHsgfQogCiAg
ICAgLy8gQmFja2VuZCB0byBGcm9udGVuZAotICAgIHZvaWQgZGlkUmVjZWl2ZU1hbmlmZXN0UmVz
cG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAgICAgdm9pZCB1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpTdGF0dXMpOwogICAgIHZvaWQgdXBkYXRlTmV0d29ya1N0YXRlKGJvb2wgaXNOb3dPbmxp
bmUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKaW5kZXggYjBiYWJkYzQ1YTE4NzcxMGVlMGM4NjZjODY1MTk4MzZmMDZjMDc1Zi4uZWUx
NTM2ZjdjNzYzMmFkZjAwYWJlZmQ4ZTEwYTk4N2IyZjY4YTU2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTQwLDcgKzE0MCw2
IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSogcGFnZSwg
SW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBt
X29wZW5pbmdGcm9udGVuZChmYWxzZSkKICAgICAsIG1fY3NzQWdlbnQobmV3IEluc3BlY3RvckNT
U0FnZW50KCkpCi0gICAgLCBtX21haW5SZXNvdXJjZUlkZW50aWZpZXIoMCkKICAgICAsIG1fZXhw
aXJlZENvbnNvbGVNZXNzYWdlQ291bnQoMCkKICAgICAsIG1fcHJldmlvdXNNZXNzYWdlKDApCiAg
ICAgLCBtX3NldHRpbmdzTG9hZGVkKGZhbHNlKQpAQCAtNzU5LDcgKzc1OCw2IEBAIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0TG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyKQog
I2VuZGlmCiAKICAgICAgICAgaWYgKG1fZnJvbnRlbmQpIHsKLSAgICAgICAgICAgIG1fbWFpblJl
c291cmNlSWRlbnRpZmllciA9IDA7CiAgICAgICAgICAgICBtX2Zyb250ZW5kLT5kaWRDb21taXRM
b2FkKCk7CiAgICAgICAgICAgICBtX2RvbUFnZW50LT5zZXREb2N1bWVudChtX2luc3BlY3RlZFBh
Z2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpKTsKICAgICAgICAgfQpAQCAtNzc1LDMzICs3NzMs
NiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmZyYW1lRGV0YWNoZWRGcm9tUGFyZW50KEZy
YW1lKiByb290RnJhbWUpCiAgICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+ZnJhbWVEZXRhY2hlZEZy
b21QYXJlbnQocm9vdEZyYW1lKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRM
b2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3Qg
Q2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQotewotICAgIGlmICghZW5hYmxlZCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBlbnN1cmVTZXR0aW5nc0xvYWRlZCgpOwotCi0gICAgaWYg
KG1fcmVzb3VyY2VBZ2VudCkKLSAgICAgICAgbV9yZXNvdXJjZUFnZW50LT5kaWRMb2FkUmVzb3Vy
Y2VGcm9tTWVtb3J5Q2FjaGUobG9hZGVyLCBjYWNoZWRSZXNvdXJjZSk7Ci19Ci0KLXZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQotewotICAgIGlmICghZW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0g
ICAgQVNTRVJUKG1faW5zcGVjdGVkUGFnZSk7Ci0KLSAgICBib29sIGlzTWFpblJlc291cmNlID0g
aXNNYWluUmVzb3VyY2VMb2FkZXIobG9hZGVyLCByZXF1ZXN0LnVybCgpKTsKLSAgICBpZiAoaXNN
YWluUmVzb3VyY2UpCi0gICAgICAgIG1fbWFpblJlc291cmNlSWRlbnRpZmllciA9IGlkZW50aWZp
ZXI7Ci0KLSAgICBlbnN1cmVTZXR0aW5nc0xvYWRlZCgpOwotCi0gICAgaWYgKG1fcmVzb3VyY2VB
Z2VudCkKLSAgICAgICAgbV9yZXNvdXJjZUFnZW50LT5pZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVl
c3QoaWRlbnRpZmllciwgcmVxdWVzdC51cmwoKSwgbG9hZGVyKTsKLX0KLQogdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjptYWluUmVzb3VyY2VGaXJlZERPTUNvbnRlbnRFdmVudChEb2N1bWVudExv
YWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgaWYgKCFlbmFibGVkKCkgfHwg
IWlzTWFpblJlc291cmNlTG9hZGVyKGxvYWRlciwgdXJsKSkKQEAgLTgyOSw3ICs4MDAsNyBAQCBi
b29sIEluc3BlY3RvckNvbnRyb2xsZXI6OmlzTWFpblJlc291cmNlTG9hZGVyKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IEtVUgogICAgIHJldHVybiBsb2FkZXItPmZyYW1lKCkgPT0gbV9p
bnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSAmJiByZXF1ZXN0VXJsID09IGxvYWRlci0+cmVxdWVz
dFVSTCgpOwogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxTZW5kUmVxdWVzdCh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBp
ZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtODQ1LDk1ICs4MTYsMzcgQEAgdm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBSZXNvdXJjZVJlcXUKICAgICAgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFk
ZXJGaWVsZChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQpOwogICAgICAgICB9CiAgICAgfQotCi0gICAg
Ym9vbCBpc01haW5SZXNvdXJjZSA9IG1fbWFpblJlc291cmNlSWRlbnRpZmllciA9PSBpZGVudGlm
aWVyOwotICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCi0gICAgICAgIG1fdGltZWxpbmVBZ2VudC0+
d2lsbFNlbmRSZXNvdXJjZVJlcXVlc3QoaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UsIHJlcXVl
c3QpOwotCi0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAgICAgICAgbV9yZXNvdXJjZUFnZW50
LT53aWxsU2VuZFJlcXVlc3QoaWRlbnRpZmllciwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6bWFya1Jlc291cmNlQXNDYWNoZWQodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKIHsKICAgICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAgICAgICAgbV9yZXNvdXJjZUFnZW50LT5tYXJr
UmVzb3VyY2VBc0NhY2hlZChpZGVudGlmaWVyKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVu
dExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKLXsKLSAg
ICBpZiAoIWVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fcmVzb3VyY2VB
Z2VudCkKLSAgICAgICAgbV9yZXNvdXJjZUFnZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRp
ZmllciwgbG9hZGVyLCByZXNwb25zZSk7Ci0KICAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSA+PSA0MDApIHsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJGYWls
ZWQgdG8gbG9hZCByZXNvdXJjZTogdGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBhIHN0YXR1cyBv
ZiAiLCBTdHJpbmc6Om51bWJlcihyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSwgIiAoIiwgcmVz
cG9uc2UuaHR0cFN0YXR1c1RleHQoKSwgJyknKTsKICAgICAgICAgYWRkQ29uc29sZU1lc3NhZ2Uo
bmV3IENvbnNvbGVNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTmV0d29ya0Vycm9yTWVzc2Fn
ZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCByZXNwb25zZS51cmwoKS5zdHJpbmco
KSwgaWRlbnRpZmllcikpOwogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpk
aWRSZWNlaXZlQ29udGVudExlbmd0aCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludCBsZW5n
dGhSZWNlaXZlZCkKLXsKLSAgICBpZiAoIWVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAgICAgICAgbV9yZXNvdXJjZUFnZW50LT5kaWRSZWNl
aXZlQ29udGVudExlbmd0aChpZGVudGlmaWVyLCBsZW5ndGhSZWNlaXZlZCk7Ci19Ci0KLXZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQotewotICAgIGlmICghZW5hYmxlZCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAobV90aW1lbGluZUFnZW50KQotICAgICAgICBtX3RpbWVsaW5l
QWdlbnQtPmRpZEZpbmlzaExvYWRpbmdSZXNvdXJjZShpZGVudGlmaWVyLCBmYWxzZSwgZmluaXNo
VGltZSk7Ci0KLSAgICBpZiAobV9yZXNvdXJjZUFnZW50KQotICAgICAgICBtX3Jlc291cmNlQWdl
bnQtPmRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllciwgZmluaXNoVGltZSk7Ci19Ci0KIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBpZiAoIWVuYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fdGltZWxpbmVBZ2VudCkKLSAgICAgICAgbV90
aW1lbGluZUFnZW50LT5kaWRGaW5pc2hMb2FkaW5nUmVzb3VyY2UoaWRlbnRpZmllciwgdHJ1ZSwg
MCk7Ci0KICAgICBTdHJpbmcgbWVzc2FnZSA9ICJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZSI7Ci0g
ICAgICAgIGlmICghZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICBtZXNzYWdlICs9ICI6ICIgKyBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpOwot
ICAgICAgICBhZGRDb25zb2xlTWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2UoT3RoZXJNZXNzYWdl
U291cmNlLCBOZXR3b3JrRXJyb3JNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3Nh
Z2UsIGVycm9yLmZhaWxpbmdVUkwoKSwgaWRlbnRpZmllcikpOwotCi0gICAgaWYgKG1fcmVzb3Vy
Y2VBZ2VudCkKLSAgICAgICAgbV9yZXNvdXJjZUFnZW50LT5kaWRGYWlsTG9hZGluZyhpZGVudGlm
aWVyLCBlcnJvcik7CisgICAgaWYgKCFlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLmlzRW1w
dHkoKSkKKyAgICAgICAgbWVzc2FnZSArPSAiOiAiICsgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRp
b24oKTsKKyAgICBhZGRDb25zb2xlTWVzc2FnZShuZXcgQ29uc29sZU1lc3NhZ2UoT3RoZXJNZXNz
YWdlU291cmNlLCBOZXR3b3JrRXJyb3JNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1l
c3NhZ2UsIGVycm9yLmZhaWxpbmdVUkwoKSwgaWRlbnRpZmllcikpOwogfQogCi12b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlcikK
K3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1
ZXN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNl
bmRMaW5lTnVtYmVyKQogewogICAgIGlmICghZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihJbnNwZWN0b3JTdGF0ZTo6bW9uaXRvcmluZ1hI
UikpCiAgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNz
YWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCAiWEhSIGZpbmlzaGVkIGxvYWRpbmc6IFwiIiArIHVy
bCArICJcIi4iLCBzZW5kTGluZU51bWJlciwgc2VuZFVSTCk7Ci0KLSAgICBpZiAobV9yZXNvdXJj
ZUFnZW50KQotICAgICAgICBtX3Jlc291cmNlQWdlbnQtPnNldEluaXRpYWxDb250ZW50KGlkZW50
aWZpZXIsIHNvdXJjZVN0cmluZywgIlhIUiIpOwotfQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OnNjcmlwdEltcG9ydGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VTdHJpbmcpCi17Ci0gICAgaWYgKCFlbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+c2V0
SW5pdGlhbENvbnRlbnQoaWRlbnRpZmllciwgc291cmNlU3RyaW5nLCAiU2NyaXB0Iik7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlU2V0dGluZ3NMb2FkZWQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggNDgxMzQ0
ZDk2Yzk3MzNhMTlkM2UzNzg1OTUwZWFiZjUyMjljNzQwOS4uZmVmMmE2ZDM3MGQzZGZjODNlZjM0
ZTM1MzgwNjkyNWMzOTA4MjFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oCkBAIC0xNTgsMjIgKzE1OCw5IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgZGlkQ29tbWl0TG9hZChEb2N1bWVudExvYWRlciopOwogICAgIHZvaWQgZnJhbWVEZXRhY2hl
ZEZyb21QYXJlbnQoRnJhbWUqKTsKLSAgICB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlD
YWNoZShEb2N1bWVudExvYWRlciosIGNvbnN0IENhY2hlZFJlc291cmNlKik7Ci0KLSAgICB2b2lk
IGlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERv
Y3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKLSAgICB2b2lkIG1hcmtSZXNv
dXJjZUFzQ2FjaGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVDb250ZW50TGVuZ3Ro
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGxlbmd0aFJlY2VpdmVkKTsKLSAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNo
VGltZSk7Ci0gICAgdm9pZCBkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxI
dHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25l
ZCBzZW5kTGluZU51bWJlcik7Ci0gICAgdm9pZCBzY3JpcHRJbXBvcnRlZCh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKIAogICAgIHZvaWQgc2V0
RXh0cmFIZWFkZXJzKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pik7CiAKLSAgICB2b2lkIGVu
c3VyZVNldHRpbmdzTG9hZGVkKCk7Ci0KICAgICB2b2lkIHN0YXJ0VGltZWxpbmVQcm9maWxlcigp
OwogICAgIHZvaWQgc3RvcFRpbWVsaW5lUHJvZmlsZXIoKTsKICAgICBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KiB0aW1lbGluZUFnZW50KCkgeyByZXR1cm4gbV90aW1lbGluZUFnZW50LmdldCgpOyB9
CkBAIC0yNzcsMjEgKzI2NCwyNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGRlZmF1bHRBdHRhY2hlZEhlaWdodDsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGdldEluc3BlY3Rv
clN0YXRlKFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBzdGF0ZSk7Ci0gICAgdm9pZCBzZXRDb25z
b2xlTWVzc2FnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCk7Ci0KICAgICBmcmllbmQgY2xhc3MgSW5z
cGVjdG9yQmFja2VuZDsKICAgICBmcmllbmQgY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI7CiAgICAgZnJpZW5kIGNsYXNzIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjsKICAgICBmcmll
bmQgY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0OwogCisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCBkaWRG
YWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKKyAgICB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdChjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlcik7
CisKKyAgICB2b2lkIGVuc3VyZVNldHRpbmdzTG9hZGVkKCk7CisKKyAgICB2b2lkIGdldEluc3Bl
Y3RvclN0YXRlKFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBzdGF0ZSk7CisgICAgdm9pZCBzZXRD
b25zb2xlTWVzc2FnZXNFbmFibGVkKGJvb2wpOworCisgICAgdm9pZCBwb3B1bGF0ZVNjcmlwdE9i
amVjdHMoKTsKKyAgICB2b2lkIHJlc3RvcmVEZWJ1Z2dlcigpOwogICAgIGVudW0gUHJvZmlsZXJS
ZXN0b3JlQWN0aW9uIHsKICAgICAgICAgUHJvZmlsZXJSZXN0b3JlTm9BY3Rpb24gPSAwLAogICAg
ICAgICBQcm9maWxlclJlc3RvcmVSZXNldEFnZW50ID0gMQogICAgIH07Ci0gICAgCi0gICAgdm9p
ZCBwb3B1bGF0ZVNjcmlwdE9iamVjdHMoKTsKLSAgICB2b2lkIHJlc3RvcmVEZWJ1Z2dlcigpOwog
ICAgIHZvaWQgcmVzdG9yZVByb2ZpbGVyKFByb2ZpbGVyUmVzdG9yZUFjdGlvbiBhY3Rpb24pOwog
ICAgIHZvaWQgdW5iaW5kQWxsUmVzb3VyY2VzKCk7CiAgICAgdm9pZCBzZXRTZWFyY2hpbmdGb3JO
b2RlKGJvb2wgZW5hYmxlZCk7CkBAIC0zNDksNyArMzQyLDYgQEAgcHJpdmF0ZToKIAogICAgIFJl
ZlB0cjxOb2RlPiBtX25vZGVUb0ZvY3VzOwogICAgIFJlZlB0cjxJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50PiBtX3Jlc291cmNlQWdlbnQ7Ci0gICAgdW5zaWduZWQgbG9uZyBtX21haW5SZXNvdXJjZUlk
ZW50aWZpZXI7CiAgICAgVmVjdG9yPE93blB0cjxDb25zb2xlTWVzc2FnZT4gPiBtX2NvbnNvbGVN
ZXNzYWdlczsKICAgICB1bnNpZ25lZCBtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50OwogICAg
IEhhc2hNYXA8U3RyaW5nLCBkb3VibGU+IG1fdGltZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IGYzYTczYmEx
NjU5MzI5ZDEyYThiNDViYzZhMzQzN2I4MDA1NjViNzcuLjg1MmZmN2I0OWZlM2E1NzVhMTk4MGUx
MzcwOGEzNWYyYzY1ZDg5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0zNCwxMiArMzQsMTYgQEAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRG9j
dW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50Q29udGV4
dC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgor
I2luY2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVl
c3QuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTM3Miw2ICszNzYsNDAg
QEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2FsY3VsYXRlU3R5bGVJbXBs
KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnQKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUmVj
YWxjdWxhdGVTdHlsZSgpOwogfQogCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aWRl
bnRpZmllckZvckluaXRpYWxSZXF1ZXN0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpYywgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgaWYgKCFpYy0+ZW5hYmxlZCgpKQorICAgICAg
ICByZXR1cm47CisgICAgaWMtPmVuc3VyZVNldHRpbmdzTG9hZGVkKCk7CisKKyAgICBpZiAoSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2Vu
dChpYykpCisgICAgICAgIHJlc291cmNlQWdlbnQtPmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVz
dChpZGVudGlmaWVyLCByZXF1ZXN0LnVybCgpLCBsb2FkZXIsIGljLT5pc01haW5SZXNvdXJjZUxv
YWRlcihsb2FkZXIsIHJlcXVlc3QudXJsKCkpKTsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxTZW5kUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaWMsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQoreworICAgIGljLT53aWxsU2VuZFJl
cXVlc3QocmVxdWVzdCk7CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5l
QWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaWMpKQorICAgICAgICB0aW1lbGluZUFnZW50
LT53aWxsU2VuZFJlc291cmNlUmVxdWVzdChpZGVudGlmaWVyLCByZXF1ZXN0KTsKKyAgICBpZiAo
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VB
Z2VudChpYykpCisgICAgICAgIHJlc291cmNlQWdlbnQtPndpbGxTZW5kUmVxdWVzdChpZGVudGlm
aWVyLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Om1hcmtSZXNvdXJjZUFzQ2FjaGVkSW1wbChJbnNwZWN0b3JDb250cm9sbGVy
KiBpYywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQoreworICAgIGlmIChJbnNwZWN0b3JSZXNv
dXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGljKSkKKyAg
ICAgICAgcmVzb3VyY2VBZ2VudC0+bWFya1Jlc291cmNlQXNDYWNoZWQoaWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVt
b3J5Q2FjaGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGljLCBEb2N1bWVudExvYWRlciogbG9h
ZGVyLCBjb25zdCBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCit7CisgICAgaWYgKCFp
Yy0+ZW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgaWMtPmVuc3VyZVNldHRpbmdzTG9h
ZGVkKCk7CisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBy
ZXRyaWV2ZVJlc291cmNlQWdlbnQoaWMpKQorICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRMb2Fk
UmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUobG9hZGVyLCBjYWNoZWRSZXNvdXJjZSk7Cit9CisKIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JD
b250cm9sbGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiB7CiAgICAgaW50IHRpbWVsaW5l
QWdlbnRJZCA9IDA7CkBAIC00MDAsMTIgKzQzOCw1NCBAQCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVz
cAogICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoaW5zcGVjdG9yQ29u
dHJvbGxlciwgdGltZWxpbmVBZ2VudElkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llJiBjb29raWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CisgICAg
SW5zcGVjdG9yQ29udHJvbGxlciogaWMgPSBjb29raWUuZmlyc3Q7CisgICAgaWYgKEluc3BlY3Rv
clJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaWMp
KQorICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwg
bG9hZGVyLCByZXNwb25zZSk7CisgICAgLy8gRklYTUUoNTIyODIpOiBtb3ZlIHRoaXMgdG8gY29u
c29sZSBhZ2VudC4KKyAgICBpYy0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3Bv
bnNlKTsKICAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJl
dHJpZXZlVGltZWxpbmVBZ2VudChjb29raWUpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRS
ZWNlaXZlUmVzb3VyY2VSZXNwb25zZSgpOwogfQogCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGhJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGlj
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludCBsZW5ndGhSZWNlaXZlZCkKK3sKKyAgICBp
ZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3Vy
Y2VBZ2VudChpYykpCisgICAgICAgIHJlc291cmNlQWdlbnQtPmRpZFJlY2VpdmVDb250ZW50TGVu
Z3RoKGlkZW50aWZpZXIsIGxlbmd0aFJlY2VpdmVkKTsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmdJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGlj
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQoreworICAgIGlm
IChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGlu
ZUFnZW50KGljKSkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRmluaXNoTG9hZGluZ1Jlc291
cmNlKGlkZW50aWZpZXIsIGZhbHNlLCBmaW5pc2hUaW1lKTsKKyAgICBpZiAoSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisg
ICAgICAgIHJlc291cmNlQWdlbnQtPmRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllciwgZmluaXNo
VGltZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGlu
Z0ltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaWMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgLy8gRklYTUUoNTIyODIpOiBtb3Zl
IHRoaXMgdG8gY29uc29sZSBhZ2VudC4KKyAgICBpYy0+ZGlkRmFpbExvYWRpbmcoaWRlbnRpZmll
ciwgZXJyb3IpOworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGljKSkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlk
RmluaXNoTG9hZGluZ1Jlc291cmNlKGlkZW50aWZpZXIsIHRydWUsIDApOworICAgIGlmIChJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50
KGljKSkKKyAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkRmFpbExvYWRpbmcoaWRlbnRpZmllciwg
ZXJyb3IpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVzb3VyY2VSZXRy
aWV2ZWRCeVhNTEh0dHBSZXF1ZXN0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpYywgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIp
Cit7CisgICAgaWMtPnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1cmwsIHNlbmRV
UkwsIHNlbmRMaW5lTnVtYmVyKTsKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVz
b3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisgICAgICAgIHJlc291cmNl
QWdlbnQtPnNldEluaXRpYWxDb250ZW50KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZywgIlhIUiIp
OworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWRJbXBs
KEluc3BlY3RvckNvbnRyb2xsZXIqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlU3RyaW5nKQoreworICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50
KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGljKSkKKyAgICAgICAgcmVz
b3VyY2VBZ2VudC0+c2V0SW5pdGlhbENvbnRlbnQoaWRlbnRpZmllciwgc291cmNlU3RyaW5nLCAi
U2NyaXB0Iik7Cit9CisKIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxXcml0ZUhUTUxJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXIsIHVuc2lnbmVkIGludCBsZW5ndGgsIHVuc2lnbmVkIGludCBzdGFy
dExpbmUpCiB7CiAgICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7CkBAIC00NDUsNiArNTI1LDI0
IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbG9zZVdlYlNvY2tldEltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShPRkZM
SU5FX1dFQl9BUFBMSUNBVElPTlMpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bmV0
d29ya1N0YXRlQ2hhbmdlZEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaWMpCit7CisgICAgaWYg
KEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCogYXBwbGljYXRpb25DYWNoZUFnZW50ID0g
aWMtPmFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpKSB7CisgICAgICAgIGJvb2wgaXNOb3dPbmxpbmUg
PSBuZXR3b3JrU3RhdGVOb3RpZmllcigpLm9uTGluZSgpOworICAgICAgICBhcHBsaWNhdGlvbkNh
Y2hlQWdlbnQtPnVwZGF0ZU5ldHdvcmtTdGF0ZShpc05vd09ubGluZSk7CisgICAgfQorfQorCit2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1
c0ltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaWMsIEZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAo
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KiBhcHBsaWNhdGlvbkNhY2hlQWdlbnQgPSBp
Yy0+YXBwbGljYXRpb25DYWNoZUFnZW50KCkpIHsKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZUhv
c3Q6OlN0YXR1cyBzdGF0dXMgPSBmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPmFw
cGxpY2F0aW9uQ2FjaGVIb3N0KCktPnN0YXR1cygpOworICAgICAgICBhcHBsaWNhdGlvbkNhY2hl
QWdlbnQtPnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMoc3RhdHVzKTsKKyAgICB9Cit9Cisj
ZW5kaWYKKwogYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kKEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIpCiB7CiAgICAgcmV0dXJuIGluc3Bl
Y3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCk7CkBAIC00OTAsNiArNTg4LDExIEBAIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0cmlldmVUaW1l
bGluZUFnZW50KGNvbnN0IEluCiAgICAgcmV0dXJuIDA7CiB9CiAKK0luc3BlY3RvclJlc291cmNl
QWdlbnQqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0cmlldmVSZXNvdXJjZUFnZW50KElu
c3BlY3RvckNvbnRyb2xsZXIqIGljKQoreworICAgIHJldHVybiBpYy0+bV9yZXNvdXJjZUFnZW50
LmdldCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyAhRU5BQkxF
KElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaAppbmRleCA5YzY5MDU1OGNlNzE2YWEyNzE5OWViMGIzMTBkMzhiNWMx
M2EzMjgwLi4zYjg2YjE5MmZiNDMzYzQzNmY3ODY4NWU0NmJmN2M1MGE1ZGY1OGQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CkBAIC00MSwxMiArNDEsMTUgQEAgY2xhc3MgQ2hhcmFjdGVyRGF0YTsKIGNsYXNzIERvY3VtZW50
OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEV2ZW50Q29udGV4dDsKK2NsYXNzIERvY3VtZW50TG9h
ZGVyOwogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKK2NsYXNzIEluc3BlY3RvclJlc291cmNl
QWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50OwogY2xhc3MgS1VSTDsKIGNsYXNz
IE5vZGU7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwor
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFhNTEh0dHBSZXF1ZXN0OwogCiAj
aWYgRU5BQkxFKFdFQl9TT0NLRVRTKQpAQCAtOTAsMTAgKzkzLDIwIEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgdm9pZCBkaWRQYWludChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUm
KTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNhbGN1
bGF0ZVN0eWxlKERvY3VtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjYWxjdWxhdGVTdHls
ZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKKworICAgIHN0YXRpYyB2
b2lkIGlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChGcmFtZSosIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBz
dGF0aWMgdm9pZCB3aWxsU2VuZFJlcXVlc3QoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVz
cG9uc2UpOworICAgIHN0YXRpYyB2b2lkIG1hcmtSZXNvdXJjZUFzQ2FjaGVkKFBhZ2UqLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIpOworICAgIHN0YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZy
b21NZW1vcnlDYWNoZShQYWdlKiwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBDYWNoZWRSZXNvdXJj
ZSopOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFJlY2Vp
dmVSZXNvdXJjZURhdGEoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZURhdGEoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llJik7Ci0gICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSB3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKTsKLSAgICBzdGF0aWMgdm9p
ZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUmKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdp
bGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShGcmFtZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVS
ZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRnJhbWUq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludCBsZW5ndGhSZWNlaXZlZCk7CisgICAgc3Rh
dGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhGcmFtZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgZG91YmxlIGZpbmlzaFRpbWUpOworICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKEZy
YW1lKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7Cisg
ICAgc3RhdGljIHZvaWQgcmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1
bnNpZ25lZCBzZW5kTGluZU51bWJlcik7CisgICAgc3RhdGljIHZvaWQgc2NyaXB0SW1wb3J0ZWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VTdHJpbmcpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgd2lsbFdyaXRlSFRNTChEb2N1bWVudCosIHVuc2lnbmVkIGludCBsZW5ndGgsIHVu
c2lnbmVkIGludCBzdGFydExpbmUpOwogICAgIHN0YXRpYyB2b2lkIGRpZFdyaXRlSFRNTChjb25z
dCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCB1bnNpZ25lZCBpbnQgZW5kTGluZSk7
CiAKQEAgLTEwMyw3ICsxMTYsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2Vp
dmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYp
OwogICAgIHN0YXRpYyB2b2lkIGRpZENsb3NlV2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogI2VuZGlmCi0KKyAgICBzdGF0aWMgdm9p
ZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKFBhZ2UqKTsKKyNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQ
TElDQVRJT05TKQorICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMo
RnJhbWUqKTsKKyNlbmRpZgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgc3RhdGljIHZvaWQg
ZnJvbnRlbmRDcmVhdGVkKCkgeyBzX2Zyb250ZW5kQ291bnRlciArPSAxOyB9CiAgICAgc3RhdGlj
IHZvaWQgZnJvbnRlbmREZWxldGVkKCkgeyBzX2Zyb250ZW5kQ291bnRlciAtPSAxOyB9CkBAIC0x
NDcsMTAgKzE2MywxOSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZFBhaW50SW1wbChj
b25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNhbGN1bGF0ZVN0eWxlSW1wbChJbnNwZWN0
b3JDb250cm9sbGVyKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjYWxjdWxhdGVTdHlsZUltcGwo
Y29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CisgICAgc3RhdGljIHZvaWQg
aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOworICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29u
dHJvbGxlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgc3RhdGljIHZvaWQg
bWFya1Jlc291cmNlQXNDYWNoZWRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpOworICAgIHN0YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIERvY3VtZW50TG9hZGVyKiwgY29uc3Qg
Q2FjaGVkUmVzb3VyY2UqKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIHdpbGxSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3Vy
Y2VEYXRhSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKLSAgICBz
dGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNlaXZlUmVzb3VyY2VS
ZXNwb25zZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpOwotICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUmKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdp
bGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRp
YyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9h
ZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2Vp
dmVDb250ZW50TGVuZ3RoSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpOworICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlz
aExvYWRpbmdJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZ0lt
cGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpOworICAgIHN0YXRpYyB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxI
dHRwUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKKyAgICBzdGF0aWMg
dm9pZCBzY3JpcHRJbXBvcnRlZEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpOwogICAgIHN0YXRpYyBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFdyaXRlSFRNTEltcGwoSW5zcGVjdG9y
Q29udHJvbGxlciosIHVuc2lnbmVkIGludCBsZW5ndGgsIHVuc2lnbmVkIGludCBzdGFydExpbmUp
OwogICAgIHN0YXRpYyB2b2lkIGRpZFdyaXRlSFRNTEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llJiwgdW5zaWduZWQgaW50IGVuZExpbmUpOwogCkBAIC0xNjEsNiArMTg2
LDExIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkQ2xvc2VXZWJTb2NrZXRJbXBsKElu
c3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQorICAgIHN0YXRpYyB2b2lkIG5l
dHdvcmtTdGF0ZUNoYW5nZWRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqKTsKKyAgICBzdGF0aWMg
dm9pZCB1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzSW1wbChJbnNwZWN0b3JDb250cm9sbGVy
KiwgRnJhbWUqKTsKKyNlbmRpZgorCiAgICAgc3RhdGljIEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXJGb3JDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAg
ICBzdGF0aWMgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3Vt
ZW50KERvY3VtZW50Kik7CiAgICAgc3RhdGljIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXJGb3JGcmFtZShGcmFtZSopOwpAQCAtMTcxLDYgKzIwMSw3IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIHZvaWQgY2FuY2VsUGF1c2VPbk5hdGl2ZUV2ZW50KEluc3BlY3RvckNvbnRy
b2xsZXIqKTsKICAgICBzdGF0aWMgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogcmV0cmlldmVUaW1l
bGluZUFnZW50KEluc3BlY3RvckNvbnRyb2xsZXIqKTsKICAgICBzdGF0aWMgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCogcmV0cmlldmVUaW1lbGluZUFnZW50KGNvbnN0IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSYpOworICAgIHN0YXRpYyBJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXRy
aWV2ZVJlc291cmNlQWdlbnQoSW5zcGVjdG9yQ29udHJvbGxlciopOwogCiAgICAgc3RhdGljIGlu
dCBzX2Zyb250ZW5kQ291bnRlcjsKICNlbmRpZgpAQCAtNDI5LDYgKzQ2MCwzOSBAQCBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2FsY3VsYXRlU3R5bGUoY29uc3Qg
SW5zcGVjdG9ySW5zdHJ1bQogI2VuZGlmCiB9CiAKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KEZyYW1lKiBmcmFtZSwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICAvLyBU
aGlzIG5vdGlmaWNhdGlvbiBzaG91bGQgYmUgcHJvY2VjZXNzZWQgZXZlbiBpbiBjYXNlcyB0aGVy
ZSBpcyBubyBmcm9udGVuZC4KKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisgICAg
aWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gZnJhbWUtPnBhZ2UoKS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpKQorICAgICAgICBpZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3RJbXBsKGljLCBp
ZGVudGlmaWVyLCBsb2FkZXIsIHJlcXVlc3QpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KEZyYW1lKiBmcmFtZSwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RP
UikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaWMgPSBpbnNwZWN0b3JDb250cm9sbGVy
Rm9yRnJhbWUoZnJhbWUpKQorICAgICAgICB3aWxsU2VuZFJlcXVlc3RJbXBsKGljLCBpZGVudGlm
aWVyLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1hcmtSZXNvdXJjZUFzQ2FjaGVkKFBhZ2UqIHBh
Z2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQor
ICAgIG1hcmtSZXNvdXJjZUFzQ2FjaGVkSW1wbChwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCks
IGlkZW50aWZpZXIpOyAKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShQYWdlKiBwYWdlLCBEb2N1
bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit7Cisj
aWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVJ
bXBsKHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSwgbG9hZGVyLCByZXNvdXJjZSk7CisjZW5k
aWYKK30KKwogaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VEYXRhKEZyYW1lKiBmcmFtZSwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCkBAIC00NTUs
MTEgKzUxOSw1MSBAQCBpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdQogICAgIHJldHVybiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShjb25zdCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoY29uc3QgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoaGFzRnJvbnRlbmRzKCkgJiYgY29va2ll
LmZpcnN0KQotICAgICAgICBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoY29va2llKTsK
KyAgICAgICAgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKGNvb2tpZSwgaWRlbnRpZmll
ciwgbG9hZGVyLCByZXNwb25zZSk7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlQ29udGVudExlbmd0aChGcmFtZSogZnJhbWUsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGxlbmd0aFJlY2VpdmVkKQoreworI2lmIEVOQUJM
RShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRy
b2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQorICAgICAgICBkaWRS
ZWNlaXZlQ29udGVudExlbmd0aEltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgaWRlbnRpZmllciwg
bGVuZ3RoUmVjZWl2ZWQpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikK
KyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3Bl
Y3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCisgICAgICAgIGRpZEZpbmlzaExvYWRpbmdJ
bXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOworI2VuZGlm
Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRp
bmcoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9y
RnJhbWUoZnJhbWUpKQorICAgICAgICBkaWRGYWlsTG9hZGluZ0ltcGwoaW5zcGVjdG9yQ29udHJv
bGxlciwgaWRlbnRpZmllciwgZXJyb3IpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKQoreworI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIg
PSBjb250ZXh0LT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgIHJlc291cmNlUmV0cmll
dmVkQnlYTUxIdHRwUmVxdWVzdEltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgaWRlbnRpZmllciwg
c291cmNlU3RyaW5nLCB1cmwsIHNlbmRVUkwsIHNlbmRMaW5lTnVtYmVyKTsKKyNlbmRpZgorfQor
CitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAg
ICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGNvbnRleHQt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgc2NyaXB0SW1wb3J0ZWRJbXBsKGluc3Bl
Y3RvckNvbnRyb2xsZXIsIGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZyk7CiAjZW5kaWYKIH0KIApA
QCAtNTE0LDYgKzYxOCwyMiBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZENsb3NlV2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqCiB9CiAjZW5kaWYKIAor
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpuZXR3b3JrU3RhdGVDaGFuZ2Vk
KFBhZ2UqIHBhZ2UpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKE9GRkxJTkVf
V0VCX0FQUExJQ0FUSU9OUykKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9y
Q29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKHBhZ2UpKQorICAgICAgICBu
ZXR3b3JrU3RhdGVDaGFuZ2VkSW1wbChpbnNwZWN0b3JDb250cm9sbGVyKTsKKyNlbmRpZgorfQor
CisjaWYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9O
UykKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dXBkYXRlQXBwbGljYXRp
b25DYWNoZVN0YXR1cyhGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xs
ZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUoZnJh
bWUpKQorICAgICAgICB1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzSW1wbChpbnNwZWN0b3JD
b250cm9sbGVyLCBmcmFtZSk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiBp
bmxpbmUgSW5zcGVjdG9yQ29udHJvbGxlciogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnNw
ZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuY3BwCmluZGV4IDlmYzU2MmM1ZjZhMGJhMDA3YTMyYWRiZTVlZDgyNGFhNDFhZGRhOTMu
LmE0MjU3OTc5Y2NkYmQ2M2YxZTZjOTdlNmE4ZTFmOGMxMTgyMDA5ZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTI4
Myw3ICsyODMsNyBAQCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp+SW5zcGVjdG9yUmVzb3VyY2VB
Z2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6aWRlbnRpZmllckZv
ckluaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYgdXJs
LCBEb2N1bWVudExvYWRlciogbG9hZGVyKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpp
ZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBLVVJMJiB1cmwsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGJvb2wgaXNNYWluUmVzb3VyY2Up
CiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbG9hZGVyT2JqZWN0ID0gYnVpbGRPYmpl
Y3RGb3JEb2N1bWVudExvYWRlcihsb2FkZXIpOwogICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+
IGNhbGxTdGFjayA9IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhTY3JpcHRDYWxsU3RhY2s6Om1heENh
bGxTdGFja1NpemVUb0NhcHR1cmUsIHRydWUpOwpAQCAtMjkyLDcgKzI5Miw3IEBAIHZvaWQgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllCiAgICAgICAgIGNhbGxTdGFja1ZhbHVlID0gY2FsbFN0YWNrLT5idWls
ZEluc3BlY3Rvck9iamVjdCgpOwogICAgIGVsc2UKICAgICAgICAgY2FsbFN0YWNrVmFsdWUgPSBJ
bnNwZWN0b3JWYWx1ZTo6bnVsbCgpOwotICAgIG1fZnJvbnRlbmQtPmlkZW50aWZpZXJGb3JJbml0
aWFsUmVxdWVzdChpZGVudGlmaWVyLCB1cmwuc3RyaW5nKCksIGxvYWRlck9iamVjdCwgY2FsbFN0
YWNrVmFsdWUpOworICAgIG1fZnJvbnRlbmQtPmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChp
ZGVudGlmaWVyLCB1cmwuc3RyaW5nKCksIGxvYWRlck9iamVjdCwgaXNNYWluUmVzb3VyY2UsIGNh
bGxTdGFja1ZhbHVlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2Vu
ZFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCAxZTc3
ZDU4Yzg1MzViZDdlYTY2MzhkNjY0NjRkMzZkNjlmODVlNTE1Li5mM2YzMjExYjI5MzA2YmIyNmZj
NmNjN2Q3YzJlY2VhOWNlMGUxYjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogCiAg
ICAgfkluc3BlY3RvclJlc291cmNlQWdlbnQoKTsKIAotICAgIHZvaWQgaWRlbnRpZmllckZvcklu
aXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYsIERvY3Vt
ZW50TG9hZGVyKik7CisgICAgdm9pZCBpZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiwgRG9jdW1lbnRMb2FkZXIqLCBib29sIGlz
TWFpblJlc291cmNlKTsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgbWFya1Jlc291cmNlQXNDYWNoZWQodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsYW9kZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmNwcAppbmRleCA3NDczOWUxOGRhZDQ1ZTNiNjQxODY0ZTU2M2M2Yjc0NjUwOTk1ODM1
Li4wODFhNWYwZGJmNDMwYzkwNmNhZWQzMzc5MzNkYmRiYzZjYmY3YjJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC0y
MDksMTIgKzIwOSwxMSBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFNjaGVkdWxl
UmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKQogICAgIGFkZFJlY29yZFRvVGltZWxp
bmUocmVjb3JkLnJlbGVhc2UoKSwgU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3RUaW1lbGluZVJlY29y
ZFR5cGUpOwogfQogCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxTZW5kUmVzb3Vy
Y2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgYm9vbCBpc01haW5SZXNvdXJjZSwK
LSAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OndpbGxTZW5kUmVzb3VyY2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIHB1c2hHQ0V2ZW50UmVj
b3JkcygpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29yZCA9IFRpbWVsaW5lUmVj
b3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZChXVEY6OmN1cnJlbnRUaW1lTVMoKSk7Ci0g
ICAgcmVjb3JkLT5zZXRPYmplY3QoImRhdGEiLCBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0
ZVJlc291cmNlU2VuZFJlcXVlc3REYXRhKGlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlLCByZXF1
ZXN0KSk7CisgICAgcmVjb3JkLT5zZXRPYmplY3QoImRhdGEiLCBUaW1lbGluZVJlY29yZEZhY3Rv
cnk6OmNyZWF0ZVJlc291cmNlU2VuZFJlcXVlc3REYXRhKGlkZW50aWZpZXIsIHJlcXVlc3QpKTsK
ICAgICByZWNvcmQtPnNldE51bWJlcigidHlwZSIsIFJlc291cmNlU2VuZFJlcXVlc3RUaW1lbGlu
ZVJlY29yZFR5cGUpOwogICAgIHNldEhlYXBTaXplU3RhdGlzdGljKHJlY29yZC5nZXQoKSk7CiAg
ICAgbV9mcm9udGVuZC0+YWRkUmVjb3JkVG9UaW1lbGluZShyZWNvcmQucmVsZWFzZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmlu
ZGV4IGJjMWUwMjdiNGU0ZmNiNDZjZTIwNGRkZDI4YTdiNzUzNGJjNTcxNTEuLjMzZTI3MzdmYzYy
OTkzMmU1MjI3MGMxMDVhZWQwZjMwNDgzOTJmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtMTE5LDcgKzExOSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpZE1hcmtMb2FkRXZlbnQoKTsKIAogICAgIHZvaWQgZGlkU2NoZWR1
bGVSZXNvdXJjZVJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpOwotICAgIHZvaWQgd2lsbFNlbmRS
ZXNvdXJjZVJlcXVlc3QodW5zaWduZWQgbG9uZywgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCB3aWxsU2VuZFJlc291cmNlUmVxdWVzdCh1bnNp
Z25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIHdpbGxSZWNlaXZl
UmVzb3VyY2VSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZSgpOwogICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZ1Jlc291cmNlKHVuc2lnbmVkIGxvbmcsIGJvb2wgZGlkRmFpbCwgZG91YmxlIGZp
bmlzaFRpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5l
UmVjb3JkRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNv
cmRGYWN0b3J5LmNwcAppbmRleCA3ZjMzOWNkZWEzM2E2MTliNzhiNmY0MTQ4MTFlMTBkMTQ3N2Nl
NDAyLi5kZDdmMmJlNTExZWI5MjRiM2FkNWMzMDg5ZDJjNTdjMDFjMjcxYWE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcApAQCAt
MTI5LDEzICsxMjksMTIgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVj
b3JkRmFjdG9yeTo6Y3JlYXRlU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3QKICAgICByZXR1cm4gZGF0
YS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJl
Y29yZEZhY3Rvcnk6OmNyZWF0ZVJlc291cmNlU2VuZFJlcXVlc3REYXRhKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQorUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9y
eTo6Y3JlYXRlUmVzb3VyY2VTZW5kUmVxdWVzdERhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgZGF0YS0+c2V0
TnVtYmVyKCJpZGVudGlmaWVyIiwgaWRlbnRpZmllcik7CiAgICAgZGF0YS0+c2V0U3RyaW5nKCJ1
cmwiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpKTsKICAgICBkYXRhLT5zZXRTdHJpbmcoInJlcXVl
c3RNZXRob2QiLCByZXF1ZXN0Lmh0dHBNZXRob2QoKSk7Ci0gICAgZGF0YS0+c2V0Qm9vbGVhbigi
aXNNYWluUmVzb3VyY2UiLCBpc01haW5SZXNvdXJjZSk7CiAgICAgcmV0dXJuIGRhdGEucmVsZWFz
ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVS
ZWNvcmRGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRG
YWN0b3J5LmgKaW5kZXggNWQ0Y2I3NzQzZjJmZDg2NGQyY2I3ZjA2MjM1YjM1NDdjOWZhNzMyNi4u
ZmFmZWFlNmY4ZWEyNzQ4N2MxNWY3ZjQ3MjJlYmI0ZWMyMDI2OTE3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaApAQCAtNjQsOCArNjQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBjcmVhdGVNYXJrVGltZWxpbmVEYXRhKGNvbnN0IFN0cmluZyYpOwogCi0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlUmVzb3VyY2VT
ZW5kUmVxdWVzdERhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLAotICAgICAgICAgICAgYm9v
bCBpc01haW5SZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlUmVzb3VyY2VTZW5kUmVxdWVzdERh
dGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIAog
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVNjaGVkdWxl
UmVzb3VyY2VSZXF1ZXN0RGF0YShjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMKaW5kZXggYjFlYzk3
YzA3YWM0Y2Q0ZGI0YThiNDM0MDNjMzZmZjQyYTVhN2MwZS4uMjlmNmE1Y2Y2MzdlZTRkYmI4ZjQ5
MmJmZDBjYWNhNGNhZTFiOTc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzCkBAIC04Niw5ICs4NiwxMyBAQCBXZWJJbnNw
ZWN0b3IuTmV0d29ya01hbmFnZXIudXBkYXRlUmVzb3VyY2VXaXRoQ2FjaGVkUmVzb3VyY2UgPSBm
dW5jdGlvbihyZXNvdXJjZQogfQogCiBXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90
eXBlID0gewotICAgIGlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdDogZnVuY3Rpb24oaWRlbnRp
ZmllciwgdXJsLCBsb2FkZXIsIGNhbGxTdGFjaykKKyAgICBpZGVudGlmaWVyRm9ySW5pdGlhbFJl
cXVlc3Q6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHVybCwgbG9hZGVyLCBpc01haW5SZXNvdXJjZSwg
Y2FsbFN0YWNrKQogICAgIHsKICAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fY3JlYXRlUmVz
b3VyY2UoaWRlbnRpZmllciwgdXJsLCBsb2FkZXIsIGNhbGxTdGFjayk7CisgICAgICAgIGlmIChp
c01haW5SZXNvdXJjZSkgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLm1haW5SZXNvdXJjZSA9
IHJlc291cmNlOworICAgICAgICAgICAgcmVzb3VyY2UuaXNNYWluUmVzb3VyY2UgPSB0cnVlOwor
ICAgICAgICB9CiAKICAgICAgICAgLy8gSXQgaXMgaW1wb3J0YW50IHRvIGJpbmQgcmVzb3VyY2Ug
dXJsIGVhcmx5IChiZWZvcmUgc2NyaXB0cyBjb21waWxlKS4KICAgICAgICAgdGhpcy5fcmVzb3Vy
Y2VUcmVlTW9kZWwuYmluZFJlc291cmNlVVJMKHJlc291cmNlKTsKQEAgLTIyMSwxMyArMjI1LDcg
QEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICBkaWRDb21t
aXRMb2FkRm9yRnJhbWU6IGZ1bmN0aW9uKGZyYW1lLCBsb2FkZXIpCiAgICAgewogICAgICAgICB0
aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5kaWRDb21taXRMb2FkRm9yRnJhbWUoZnJhbWUsIGxvYWRl
cik7Ci0gICAgICAgIGlmICghZnJhbWUucGFyZW50SWQpIHsKLSAgICAgICAgICAgIHZhciBtYWlu
UmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5yZXNvdXJjZUZvclVSTChmcmFtZS51
cmwpOwotICAgICAgICAgICAgaWYgKG1haW5SZXNvdXJjZSkgewotICAgICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5tYWluUmVzb3VyY2UgPSBtYWluUmVzb3VyY2U7Ci0gICAgICAgICAgICAgICAg
bWFpblJlc291cmNlLmlzTWFpblJlc291cmNlID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQorICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNl
KFdlYkluc3BlY3Rvci5tYWluUmVzb3VyY2UpOwogICAgIH0sCiAKICAgICBkaWRDcmVhdGVXZWJT
b2NrZXQ6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHJlcXVlc3RVUkwpCkBAIC0yOTMsNiArMjkxLDEx
IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIG5l
d1Jlc291cmNlLnJlZGlyZWN0cyA9IG9yaWdpbmFsUmVzb3VyY2UucmVkaXJlY3RzIHx8IFtdOwog
ICAgICAgICBkZWxldGUgb3JpZ2luYWxSZXNvdXJjZS5yZWRpcmVjdHM7CiAgICAgICAgIG5ld1Jl
c291cmNlLnJlZGlyZWN0cy5wdXNoKG9yaWdpbmFsUmVzb3VyY2UpOworICAgICAgICBpZiAob3Jp
Z2luYWxSZXNvdXJjZS5pc01haW5SZXNvdXJjZSkgeworICAgICAgICAgICAgZGVsZXRlIG9yaWdp
bmFsUmVzb3VyY2UuaXNNYWluUmVzb3VyY2U7CisgICAgICAgICAgICBuZXdSZXNvdXJjZS5pc01h
aW5SZXNvdXJjZSA9IHRydWU7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IubWFpblJlc291cmNl
ID0gbmV3UmVzb3VyY2U7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG5ld1Jlc291cmNlOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
VGltZWxpbmVQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGlt
ZWxpbmVQYW5lbC5qcwppbmRleCBhNjYxYjc1N2EyMmE0ZDE5NDIxNDNiZTZmZDI0ZGMzODMzNjcw
ODdjLi5hY2NhMzg3NDYwYzI4N2U5YjA4MjVkMWYzZTQxNmIxYWFmNTM1MDIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCkBA
IC0yOTcsOCArMjk3LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0g
ewogCiAgICAgYWRkUmVjb3JkVG9UaW1lbGluZTogZnVuY3Rpb24ocmVjb3JkKQogICAgIHsKLSAg
ICAgICAgaWYgKHJlY29yZC50eXBlID09IFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29y
ZFR5cGUuUmVzb3VyY2VTZW5kUmVxdWVzdCAmJiByZWNvcmQuZGF0YS5pc01haW5SZXNvdXJjZSkg
ewotICAgICAgICAgICAgaWYgKHRoaXMuX21haW5SZXNvdXJjZUlkZW50aWZpZXIgIT0gcmVjb3Jk
LmRhdGEuaWRlbnRpZmllcikgeworICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT0gV2ViSW5zcGVj
dG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5SZXNvdXJjZVNlbmRSZXF1ZXN0KSB7CisgICAg
ICAgICAgICB2YXIgaXNNYWluUmVzb3VyY2UgPSAocmVjb3JkLmRhdGEuaWRlbnRpZmllciA9PT0g
V2ViSW5zcGVjdG9yLm1haW5SZXNvdXJjZS5pZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGlmIChp
c01haW5SZXNvdXJjZSAmJiB0aGlzLl9tYWluUmVzb3VyY2VJZGVudGlmaWVyICE9PSByZWNvcmQu
ZGF0YS5pZGVudGlmaWVyKSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgYXJlIGxvYWRpbmcgbmV3
IG1haW4gcmVzb3VyY2UgLT4gY2xlYXIgdGhlIHBhbmVsLiBDaGVjayBhYm92ZSBpcyBuZWNlc3Nh
cnkgc2luY2UKICAgICAgICAgICAgICAgICAvLyB0aGVyZSBtYXkgYmUgc2V2ZXJhbCByZXNvdXJj
ZSBsb2FkcyB3aXRoIG1haW4gcmVzb3VyY2UgbWFya2VyIHVwb24gcmVkaXJlY3RzLCByZWRpcmVj
dHMgYXJlIHJlcG9ydGVkIHdpdGgKICAgICAgICAgICAgICAgICAvLyB0aGUgb3JpZ2luYWwgaWRl
bnRpZmllci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDdmOWU5MTM5
NDM1NzJkYTRmZmY1OTU5MDA0NGIwYTA4M2IxMzI2Y2IuLjQ1ZTNiZjI2OTZmYjkyMTlhMzI0Yzhk
NWNmYjdjYWY3NjBmZmVjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApA
QCAtNzAsNiArNzAsNyBAQAogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIklj
b25Mb2FkZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJNYWluUmVzb3VyY2VMb2FkZXIuaCIK
QEAgLTMwNDEsOSArMzA0Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRlZFJlc291cmNlRnJv
bU1lbW9yeUNhY2hlKGNvbnN0IENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCFwYWdlLT5hcmVNZW1vcnlDYWNoZUNsaWVudENhbGxzRW5hYmxlZCgp
KSB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLT5kaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUobV9kb2N1bWVudExvYWRlci5n
ZXQoKSwgcmVzb3VyY2UpOwotI2VuZGlmCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKHBhZ2UsIG1fZG9jdW1lbnRMb2FkZXIu
Z2V0KCksIHJlc291cmNlKTsKICAgICAgICAgbV9kb2N1bWVudExvYWRlci0+cmVjb3JkTWVtb3J5
Q2FjaGVMb2FkRm9yRnV0dXJlQ2xpZW50Tm90aWZpY2F0aW9uKHJlc291cmNlLT51cmwoKSk7CiAg
ICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPmRpZFRlbGxDbGllbnRBYm91dExvYWQocmVzb3VyY2Ut
PnVybCgpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzA1MSw5ICszMDUwLDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6bG9hZGVkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UqIHJlc291cmNlKQogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QocmVzb3VyY2UtPnVy
bCgpKTsKICAgICBpZiAobV9jbGllbnQtPmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9y
eUNhY2hlKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIHJlcXVlc3QsIHJlc291cmNlLT5yZXNwb25z
ZSgpLCByZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSkpIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQot
ICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpZExvYWRSZXNvdXJjZUZyb21N
ZW1vcnlDYWNoZShtX2RvY3VtZW50TG9hZGVyLmdldCgpLCByZXNvdXJjZSk7Ci0jZW5kaWYKKyAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5
Q2FjaGUocGFnZSwgbV9kb2N1bWVudExvYWRlci5nZXQoKSwgcmVzb3VyY2UpOwogICAgICAgICBt
X2RvY3VtZW50TG9hZGVyLT5kaWRUZWxsQ2xpZW50QWJvdXRMb2FkKHJlc291cmNlLT51cmwoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMDYxLDkgKzMwNTgsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShjb25zdCBDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UpCiAgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyOwogICAgIFJlc291cmNl
RXJyb3IgZXJyb3I7CiAgICAgcmVxdWVzdEZyb21EZWxlZ2F0ZShyZXF1ZXN0LCBpZGVudGlmaWVy
LCBlcnJvcik7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCktPm1hcmtSZXNvdXJjZUFzQ2FjaGVkKGlkZW50aWZpZXIpOwotI2VuZGlmCisgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptYXJrUmVzb3VyY2VBc0NhY2hlZChwYWdlLCBpZGVu
dGlmaWVyKTsKICAgICBub3RpZmllcigpLT5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyht
X2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXNvdXJjZS0+cmVzcG9uc2UoKSwg
cmVzb3VyY2UtPmVuY29kZWRTaXplKCksIGVycm9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKaW5kZXggYTM2ZWQ5NDI5Y2MxZTcyMjRj
ZDI4MzgwOGRmMWVhZGUyZTc3ZDYwOC4uYzkyODU1NzEyZGJhMDY3YWYwOTIxOTJmNjQ3ZmNmMmQ3
OGVmZjVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5v
dGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZp
ZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJG
cmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAi
SW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNp
bmNsdWRlICJSZXNvdXJjZUxvYWRlci5oIgpAQCAtOTcsMjAgKzk3LDE0IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkTm90aWZpZXI6OmRpZEZhaWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29u
c3QgUmVzb3VyY2VFCiAgICAgaWYgKCFlcnJvci5pc051bGwoKSkKICAgICAgICAgbV9mcmFtZS0+
bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERpZEZhaWxMb2FkaW5nKGxvYWRlci0+ZG9jdW1l
bnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIGVycm9yKTsKIAotI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCi0gICAgICAg
IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlkRmFpbExvYWRpbmcobG9hZGVyLT5pZGVu
dGlmaWVyKCksIGVycm9yKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkRmFpbExvYWRpbmcobV9mcmFtZSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIGVycm9yKTsKIH0K
IAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJl
cXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgbV9mcmFtZS0+bG9hZGVyKCkt
PmNsaWVudCgpLT5hc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChpZGVudGlmaWVyLCBs
b2FkZXIsIHJlcXVlc3QpOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoUGFnZSog
cGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLT5pZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QoaWRlbnRpZmllciwgbG9hZGVyLCByZXF1
ZXN0KTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aWRlbnRpZmllckZv
ckluaXRpYWxSZXF1ZXN0KG1fZnJhbWUsIGlkZW50aWZpZXIsIGxvYWRlciwgcmVxdWVzdCk7CiB9
CiAKIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
KQpAQCAtMTI0LDEwICsxMTgsNyBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRj
aFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZwogICAgIGlmICgh
cmVxdWVzdC5pc051bGwoKSAmJiBvbGRSZXF1ZXN0VVJMICE9IHJlcXVlc3QudXJsKCkuc3RyaW5n
KCkuaW1wbCgpKQogICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+
ZGlkVGVsbENsaWVudEFib3V0TG9hZChyZXF1ZXN0LnVybCgpKTsKIAotI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgIHBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+d2lsbFNlbmRSZXF1ZXN0KGlkZW50aWZpZXIsIHJl
cXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QobV9mcmFtZSwgaWRlbnRpZmllciwgcmVxdWVzdCwgcmVk
aXJlY3RSZXNwb25zZSk7CiAKICAgICAvLyBSZXBvcnQgV2ViVGltaW5nIGZvciBhbGwgZnJhbWVz
LgogICAgIGlmIChsb2FkZXIgJiYgIXJlcXVlc3QuaXNOdWxsKCkgJiYgcmVxdWVzdC51cmwoKSA9
PSBsb2FkZXItPnJlcXVlc3RVUkwoKSkKQEAgLTEzNiwzMiArMTI3LDIzIEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIHVuc2lnCiAKIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVj
ZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcikKIHsKKyAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVj
ZWl2ZVJlc291cmNlUmVzcG9uc2UobV9mcmFtZSwgaWRlbnRpZmllciwgcik7CiAgICAgbV9mcmFt
ZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShsb2FkZXIs
IGlkZW50aWZpZXIsIHIpOwotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoUGFnZSog
cGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgbG9hZGVyLCByKTsKLSNlbmRpZgor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2Uo
Y29va2llLCBpZGVudGlmaWVyLCBsb2FkZXIsIHIpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZE5v
dGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKERvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGxlbmd0aCkKIHsKICAgICBtX2Zy
YW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgo
bG9hZGVyLCBpZGVudGlmaWVyLCBsZW5ndGgpOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAg
ICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5kaWRSZWNlaXZlQ29udGVudExlbmd0aChpZGVudGlmaWVyLCBsZW5n
dGgpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlQ29u
dGVudExlbmd0aChtX2ZyYW1lLCBpZGVudGlmaWVyLCBsZW5ndGgpOwogfQogCiB2b2lkIFJlc291
cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSkKIHsK
ICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoRGlkRmluaXNoTG9hZGlu
Zyhsb2FkZXIsIGlkZW50aWZpZXIpOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAo
UGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOwotI2Vu
ZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKG1fZnJh
bWUsIGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZE5vdGlm
aWVyOjpkaXNwYXRjaFRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFBhZ2UqIG9sZFBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcAppbmRleCBkZTM5OTg2NjVjYmViYWMxNDBjMzRiODAxZmM1ZDQ2MjI3NTgwYjQx
Li5lYTBkMDJhOGY4MzQ5NDM2YWNjMjFkMjVlNGQyZDZhY2U1NDViNmI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQyMCw5ICs0MjAsNyBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJgogICAgIGlmIChkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNh
Y2hlSG9zdCgpLT5tYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKHRoaXMsIHJlc3BvbnNlKSkK
ICAgICAgICAgcmV0dXJuOwogI2VuZGlmCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJj
ZVJlc3BvbnNlKG1fZnJhbWUuZ2V0KCksIGlkZW50aWZpZXIoKSwgcmVzcG9uc2UpOwogICAgIGRp
ZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShjb29raWUpOwogfQogCiB2b2lkIFJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIGRhdGEs
IGludCBsZW5ndGgsIGludCBsZW5ndGhSZWNlaXZlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggNjQ1
NGI5MDM0Y2EyYTAxNDE3N2ZkNTU0OWQ1MDJmODcwNWFkNDNiMS4uODU5NTYzODc5YmUwYTI5YWQ1
ZTZlZTNlODYxOTQ5MmIxNDkyNGZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTQwLDYgKzQwLDcg
QEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaCIKICNpbmNsdWRlICJNYWluUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJNYW5pZmVz
dFBhcnNlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTQ4LDExICs0OSw3IEBACiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0jaW5jbHVkZSAiSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgotI2Vsc2UKLSNpbmNsdWRlIDx3
dGYvVW51c2VkUGFyYW0uaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOTUs
MzAgKzM5MiwxMyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c3RvcExvYWRpbmdJbkZy
YW1lKEZyYW1lKiBmcmFtZSkKICAgICBzdG9wTG9hZGluZygpOwogfQogCi0jaWYgRU5BQkxFKElO
U1BFQ1RPUikKLXN0YXRpYyB2b2lkIGluc3BlY3RvclVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0
dXMoRnJhbWUqIGZyYW1lKQotewotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChQYWdlICpwYWdlID0gZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICBpZiAoSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50KiBhcHBsaWNhdGlvbkNhY2hlQWdlbnQgPSBwYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpKSB7Ci0gICAgICAg
ICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6U3RhdHVzIHN0YXR1cyA9IGZyYW1lLT5sb2FkZXIo
KS0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+c3RhdHVzKCk7Ci0g
ICAgICAgICAgICBhcHBsaWNhdGlvbkNhY2hlQWdlbnQtPnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVT
dGF0dXMoc3RhdHVzKTsKLSAgICAgICAgfQotICAgIH0KLX0KLSNlbmRpZgotCiB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6c2V0TmV3ZXN0Q2FjaGUoUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNh
Y2hlPiBuZXdlc3RDYWNoZSkKIHsKICAgICBtX25ld2VzdENhY2hlID0gbmV3ZXN0Q2FjaGU7CiAK
ICAgICBtX2NhY2hlcy5hZGQobV9uZXdlc3RDYWNoZS5nZXQoKSk7CiAgICAgbV9uZXdlc3RDYWNo
ZS0+c2V0R3JvdXAodGhpcyk7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpbnNwZWN0b3JV
cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKG1fZnJhbWUpOwotI2VuZGlmCisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKG1fZnJhbWUp
OwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6bWFrZU9ic29sZXRlKCkKQEAgLTQy
OSw5ICs0MDksNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6bWFrZU9ic29sZXRlKCkK
ICAgICBtX2lzT2Jzb2xldGUgPSB0cnVlOwogICAgIGNhY2hlU3RvcmFnZSgpLmNhY2hlR3JvdXBN
YWRlT2Jzb2xldGUodGhpcyk7CiAgICAgQVNTRVJUKCFtX3N0b3JhZ2VJRCk7Ci0jaWYgRU5BQkxF
KElOU1BFQ1RPUikKLSAgICBpbnNwZWN0b3JVcGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKG1f
ZnJhbWUpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp1cGRhdGVBcHBs
aWNhdGlvbkNhY2hlU3RhdHVzKG1fZnJhbWUpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6dXBkYXRlKEZyYW1lKiBmcmFtZSwgQXBwbGljYXRpb25DYWNoZVVwZGF0ZU9wdGlvbiB1
cGRhdGVPcHRpb24pCkBAIC00OTYsMzUgKzQ3NCwxOSBAQCBQYXNzUmVmUHRyPFJlc291cmNlSGFu
ZGxlPiBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0IEtV
UgogICAgIC8vIEJlY2F1c2Ugd2lsbFNlbmRSZXF1ZXN0IG9ubHkgZ2V0cyBjYWxsZWQgZHVyaW5n
IHJlZGlyZWN0cywgd2UgaW5pdGlhbGl6ZQogICAgIC8vIHRoZSBpZGVudGlmaWVyIGFuZCB0aGUg
Zmlyc3Qgd2lsbFNlbmRSZXF1ZXN0IGhlcmUuCiAgICAgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlm
aWVyID0gbV9mcmFtZS0+cGFnZSgpLT5wcm9ncmVzcygpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVy
KCk7Ci0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgSW5z
cGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKTsKLSAgICAgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+aWRlbnRpZmllckZvcklu
aXRpYWxSZXF1ZXN0KG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwgbV9mcmFtZS0+bG9hZGVy
KCktPmRvY3VtZW50TG9hZGVyKCksIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkpOwotICAgICAgICBS
ZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKCk7Ci0g
ICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXItPndpbGxTZW5kUmVxdWVzdChtX2N1cnJlbnRSZXNv
dXJjZUlkZW50aWZpZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwotICAgIH0KKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChtX2Zy
YW1lLCBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1
bWVudExvYWRlcigpLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpKTsKKyAgICBSZXNvdXJjZVJlc3Bv
bnNlIHJlZGlyZWN0UmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QobV9mcmFtZSwgbV9jdXJyZW50UmVzb3Vy
Y2VJZGVudGlmaWVyLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKICNlbmRpZgogICAgIHJl
dHVybiBoYW5kbGU7CiB9CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotdm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkK
LXsKLSAgICAvLyBUaGlzIG9ubHkgZ2V0cyBjYWxsZWQgYnkgUmVzb3VyY2VIYW5kbGVNYWMgaWYg
dGhlcmUgaXMgYSByZWRpcmVjdC4KLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2Uo
KSkKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT53aWxsU2VuZFJlcXVlc3Qo
bV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsK
LX0KLSNlbmRpZgotCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2Zy
YW1lLT5wYWdlKCkpIHsKLSAgICAgICAgaWYgKGhhbmRsZSA9PSBtX21hbmlmZXN0SGFuZGxlKSB7
Ci0gICAgICAgICAgICBpZiAoSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KiBhcHBsaWNh
dGlvbkNhY2hlQWdlbnQgPSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmFwcGxpY2F0aW9u
Q2FjaGVBZ2VudCgpKQotICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uQ2FjaGVBZ2VudC0+ZGlk
UmVjZWl2ZU1hbmlmZXN0UmVzcG9uc2UobV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCByZXNw
b25zZSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLT5kaWRSZWNlaXZlUmVzcG9uc2UobV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCBt
X2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSwgcmVzcG9uc2UpOwotICAgIH0KKyAg
ICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gKGhhbmRsZSA9PSBtX21hbmlmZXN0SGFuZGxlKSA/
IDAgOiBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKTsKKyAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UobV9mcmFtZSwgbV9jdXJyZW50UmVzb3VyY2VJZGVu
dGlmaWVyLCByZXNwb25zZSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZShjb29raWUsIG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwg
bG9hZGVyLCByZXNwb25zZSk7CiAjZW5kaWYKIAogICAgIGlmIChoYW5kbGUgPT0gbV9tYW5pZmVz
dEhhbmRsZSkgewpAQCAtNTkzLDEyICs1NTUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlcwog
CiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgaW50IGxlbmd0aFJlY2Vp
dmVkKQogewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2Zy
YW1lLT5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlkUmVj
ZWl2ZUNvbnRlbnRMZW5ndGgobV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCBsZW5ndGhSZWNl
aXZlZCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShsZW5ndGhSZWNlaXZlZCk7Ci0jZW5kaWYK
KyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKG1f
ZnJhbWUsIG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwgbGVuZ3RoUmVjZWl2ZWQpOwogCiAg
ICAgaWYgKGhhbmRsZSA9PSBtX21hbmlmZXN0SGFuZGxlKSB7CiAgICAgICAgIGRpZFJlY2VpdmVN
YW5pZmVzdERhdGEoZGF0YSwgbGVuZ3RoKTsKQEAgLTYxNSwxMCArNTcyLDcgQEAgdm9pZCBBcHBs
aWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiBoYW5kbGUs
IGNvbnN0IGNoYXIqIGQKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExv
YWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgZG91YmxlIGZpbmlzaFRpbWUpCiB7Ci0jaWYg
RU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkK
LSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaWRGaW5pc2hMb2FkaW5nKG1f
Y3VycmVudFJlc291cmNlSWRlbnRpZmllciwgZmluaXNoVGltZSk7Ci0jZW5kaWYKKyAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcobV9mcmFtZSwgbV9jdXJyZW50
UmVzb3VyY2VJZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKIAogICAgIGlmIChoYW5kbGUgPT0gbV9t
YW5pZmVzdEhhbmRsZSkgewogICAgICAgICBkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QoKTsKQEAg
LTY1NywxMiArNjExLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExv
YWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgZG91YmxlIGZpbmkKIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoUGFn
ZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLT5kaWRGYWlsTG9hZGluZyhtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIGVycm9y
KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKLSNlbmRpZgorICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcobV9mcmFtZSwgbV9jdXJyZW50UmVzb3Vy
Y2VJZGVudGlmaWVyLCBlcnJvcik7CiAKICAgICBpZiAoaGFuZGxlID09IG1fbWFuaWZlc3RIYW5k
bGUpIHsKICAgICAgICAgY2FjaGVVcGRhdGVGYWlsZWQoKTsKQEAgLTExNjEsOSArMTExMCw3IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpFdmVudElEIGV2ZW50CiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2V0
VXBkYXRlU3RhdHVzKFVwZGF0ZVN0YXR1cyBzdGF0dXMpCiB7CiAgICAgbV91cGRhdGVTdGF0dXMg
PSBzdGF0dXM7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpbnNwZWN0b3JVcGRhdGVBcHBs
aWNhdGlvbkNhY2hlU3RhdHVzKG1fZnJhbWUpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKG1fZnJhbWUpOwogfQogCiB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2xlYXJTdG9yYWdlSUQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCmlu
ZGV4IDI5ZDA3NDlkOGY2N2VjODhlYjI4YzlhOGIwYmEzMGNjNWRiZmNlNjkuLjJkOGI4M2UxYzc0
OGEwOWQwMTU4OTc5NDY5OTI2NzkzNTdjZTMzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgKQEAgLTExMCw5ICsx
MTAsNiBAQCBwcml2YXRlOgogICAgIC8vIHRoZSBleGlzdGluZyBjbGllbnQgY2FsbGJhY2sgY2Fu
bm90IGJlIHVzZWQsIHNvIGFzc3VtZSB0aGF0IGFueSBjbGllbnQgdGhhdCBlbmFibGVzIGFwcGxp
Y2F0aW9uIGNhY2hlIGFsc28gd2FudHMgaXQgdG8gdXNlIGNyZWRlbnRpYWwgc3RvcmFnZS4KICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VIYW5kbGUq
KSB7IHJldHVybiB0cnVlOyB9CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIHZpcnR1YWwg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0jZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNo
YXIqLCBpbnQgbGVuZ3RoLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlIGZpbmlzaFRpbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggMzcxOGQwYTljZDdiMjVmYTk5MTQyOGU5ODZjM2NiMDVhZDc1NzQw
Ni4uM2EyNDhhMTlmODRjMWFmNWI5MzIxMzZlMjM0NmYyOGFhMzBiY2ZkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9y
LmgiCkBAIC05NCwxMCArOTUsNiBAQAogI2luY2x1ZGUgIkdlb2xvY2F0aW9uQ29udHJvbGxlci5o
IgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoT0ZGTElORV9XRUJf
QVBQTElDQVRJT05TKQotI2luY2x1ZGUgIkluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5o
IgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIEhhc2hTZXQ8UGFnZSo+
KiBhbGxQYWdlczsKQEAgLTExMCwxOSArMTA3LDEyIEBAIHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0
ZUNoYW5nZWQoKQogewogICAgIFZlY3RvcjxSZWZQdHI8RnJhbWU+ID4gZnJhbWVzOwogICAgIAot
I2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMp
Ci0gICAgYm9vbCBpc05vd09ubGluZSA9IG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkub25MaW5lKCk7
Ci0jZW5kaWYKLQogICAgIC8vIEdldCBhbGwgdGhlIGZyYW1lcyBvZiBhbGwgdGhlIHBhZ2VzIGlu
IGFsbCB0aGUgcGFnZSBncm91cHMKICAgICBIYXNoU2V0PFBhZ2UqPjo6aXRlcmF0b3IgZW5kID0g
YWxsUGFnZXMtPmVuZCgpOwogICAgIGZvciAoSGFzaFNldDxQYWdlKj46Oml0ZXJhdG9yIGl0ID0g
YWxsUGFnZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBmb3IgKEZyYW1l
KiBmcmFtZSA9ICgqaXQpLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS0+dHJhdmVyc2VOZXh0KCkpCiAgICAgICAgICAgICBmcmFtZXMuYXBwZW5kKGZyYW1lKTsKLSNp
ZiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQot
ICAgICAgICBpZiAoSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KiBhcHBsaWNhdGlvbkNh
Y2hlQWdlbnQgPSAoKml0KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hcHBsaWNhdGlvbkNhY2hl
QWdlbnQoKSkKLSAgICAgICAgICAgIGFwcGxpY2F0aW9uQ2FjaGVBZ2VudC0+dXBkYXRlTmV0d29y
a1N0YXRlKGlzTm93T25saW5lKTsKLSNlbmRpZgorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKml0KTsKICAgICB9CiAKICAgICBBdG9taWNTdHJp
bmcgZXZlbnROYW1lID0gbmV0d29ya1N0YXRlTm90aWZpZXIoKS5vbkxpbmUoKSA/IGV2ZW50TmFt
ZXMoKS5vbmxpbmVFdmVudCA6IGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnku
Y3BwCmluZGV4IDRhOGU5NDczMWJhYTYyMGRiZTlkZjVkMzQwOTc3YjA5OWIwYTA2NDQuLjNhMTRi
NjJkZTVjMjc1ZGMxOTUxYmM1NDljYzBkOWY5ZTkxNWIyYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCkBA
IC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAi
Q3Jvc3NUaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJJbnNw
ZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgpAQCAtMjkxLDEwICsyOTEsNyBAQCB2b2lkIFNoYXJl
ZFdvcmtlclNjcmlwdExvYWRlcjo6bm90aWZ5RmluaXNoZWQoKQogICAgIGlmIChtX3NjcmlwdExv
YWRlci0+ZmFpbGVkKCkpCiAgICAgICAgIG1fd29ya2VyLT5kaXNwYXRjaEV2ZW50KEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCB0cnVlKSk7CiAgICAgZWxzZSB7
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIq
IGluc3BlY3RvciA9IG1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKSkKLSAgICAgICAgICAgIGluc3BlY3Rvci0+c2NyaXB0SW1wb3J0ZWQobV9z
Y3JpcHRMb2FkZXItPmlkZW50aWZpZXIoKSwgbV9zY3JpcHRMb2FkZXItPnNjcmlwdCgpKTsKLSNl
bmRpZgorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKG1f
d29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fc2NyaXB0TG9hZGVyLT5pZGVudGlm
aWVyKCksIG1fc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSk7CiAgICAgICAgIERlZmF1bHRTaGFyZWRX
b3JrZXJSZXBvc2l0b3J5OjppbnN0YW5jZSgpLndvcmtlclNjcmlwdExvYWRlZCgqbV9wcm94eSwg
bV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXNlckFnZW50KG1fc2NyaXB0TG9h
ZGVyLT51cmwoKSksIG1fc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSwgbV9wb3J0LnJlbGVhc2UoKSk7
CiAgICAgfQogICAgIG1fd29ya2VyLT51bnNldFBlbmRpbmdBY3Rpdml0eShtX3dvcmtlci5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKaW5kZXggMzJlYzk5NzU2MmJmNzIyOTgyNjBj
MTZhYmJmNDljYzk3NzNhYzdlOC4uOGEyZjYyYWUyYTNmMThkYzc0ZDIxNjg4Y2VkMTcxMTFjMDg3
YmMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2lu
Y2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAj
aW5jbHVkZSAiV29ya2VyQ29udGV4dFByb3h5LmgiCkBAIC0xMzUsMTAgKzEzNiw3IEBAIHZvaWQg
V29ya2VyOjpub3RpZnlGaW5pc2hlZCgpCiAgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIHRydWUpKTsKICAgICBlbHNlIHsK
ICAgICAgICAgbV9jb250ZXh0UHJveHktPnN0YXJ0V29ya2VyQ29udGV4dChtX3NjcmlwdExvYWRl
ci0+dXJsKCksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXNlckFnZW50KG1fc2NyaXB0TG9h
ZGVyLT51cmwoKSksIG1fc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSk7Ci0jaWYgRU5BQkxFKElOU1BF
Q1RPUikKLSAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvciA9IHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICAgICAg
aW5zcGVjdG9yLT5zY3JpcHRJbXBvcnRlZChtX3NjcmlwdExvYWRlci0+aWRlbnRpZmllcigpLCBt
X3NjcmlwdExvYWRlci0+c2NyaXB0KCkpOwotI2VuZGlmCisgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX3Nj
cmlwdExvYWRlci0+aWRlbnRpZmllcigpLCBtX3NjcmlwdExvYWRlci0+c2NyaXB0KCkpOwogICAg
IH0KICAgICBtX3NjcmlwdExvYWRlciA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckNvbnRleHQuY3BwCmluZGV4IDM0NWU1Yjc2MDQ3MmJjMWIyZjgyYjljN2VjNTc5Y2MwZDgwZDRk
NWIuLjZjNTBmMWEyMjQ3M2QzMWE4YzI3ZGU4MDVmMDJkYWYwZGFhYmQzOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcApAQCAtNDIsNyArNDIsNyBAQAogI2luY2x1
ZGUgIkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50RXhj
ZXB0aW9uLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCkBAIC0yNDUsMTAgKzI0
NSw3IEBAIHZvaWQgV29ya2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdXJscywgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIGlmIChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3IgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmluc3BlY3RvckNv
bnRyb2xsZXIoKSkKLSAgICAgICAgICAgIGluc3BlY3Rvci0+c2NyaXB0SW1wb3J0ZWQoc2NyaXB0
TG9hZGVyLmlkZW50aWZpZXIoKSwgc2NyaXB0TG9hZGVyLnNjcmlwdCgpKTsKLSNlbmRpZgorICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCBzY3JpcHRMb2FkZXIuaWRlbnRpZmllcigpLCBzY3JpcHRMb2FkZXIuc2Ny
aXB0KCkpOwogCiAgICAgICAgIFNjcmlwdFZhbHVlIGV4Y2VwdGlvbjsKICAgICAgICAgbV9zY3Jp
cHQtPmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0TG9hZGVyLnNjcmlwdCgpLCAqaXQp
LCAmZXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGZj
N2ViOWUyZDQ5NTVhMjY5MjUwZTQ5ZGEyYTU5ZjNmZGQxZDhhNDguLmQ4NjY5NDc0YjEwMGJlN2Mx
NTQxYmEwZjQwMTE3ZWRlZGY0ZDc1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRl
ICJGaWxlLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgpAQCAt
MTAwMiwxMCArMTAwMSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmco
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogICAgIC8vIEZJWE1FOiBTZXQgbV9yZXNwb25zZUJs
b2IgdG8gc29tZXRoaW5nIGhlcmUgaW4gdGhlIFJlc3BvbnNlVHlwZUJsb2IgY2FzZS4KICNlbmRp
ZgogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pbnNwZWN0b3JDb250cm9sbGVy
KCkpCi0gICAgICAgIGluc3BlY3Rvci0+cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0
KGlkZW50aWZpZXIsIG1fcmVzcG9uc2VCdWlsZGVyLnRvU3RyaW5nUHJlc2VydmVDYXBhY2l0eSgp
LCBtX3VybCwgbV9sYXN0U2VuZFVSTCwgbV9sYXN0U2VuZExpbmVOdW1iZXIpOwotI2VuZGlmCisg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJl
cXVlc3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpZGVudGlmaWVyLCBtX3Jlc3BvbnNlQnVp
bGRlci50b1N0cmluZ1ByZXNlcnZlQ2FwYWNpdHkoKSwgbV91cmwsIG1fbGFzdFNlbmRVUkwsIG1f
bGFzdFNlbmRMaW5lTnVtYmVyKTsKIAogICAgIGJvb2wgaGFkTG9hZGVyID0gbV9sb2FkZXI7CiAg
ICAgbV9sb2FkZXIgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOWE0YjlhZGE0YTQwOTg0YWFhMmRhNzBj
OWQ2NzRjYzI3Nzc0MjI5MS4uYjFkNzVkMTE1ZGNjMzYzY2ViNWQxOWRmZWIyOTM4ZGMyODQxODY3
NiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAtMTItMjkgIFl1cnkgU2VtaWto
YXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaW5zcGVjdG9yL3RpbWVsaW5lLW5ldHdvcmstcmVzb3VyY2Uu
aHRtbCBmYWlscyB3aGVuIHJ1biB0d2ljZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzczOTQKKworICAgICAgICBTZW5kIGRpZFJlY2VpdmVSZXNwb25z
ZSBub3RpZmljYXRpb24gdG8gdGhlIHRpbWVsaW5lIGFnZW50IGZyb20gUmVzb3VyY2VMb2FkTm90
aWZpZXIKKyAgICAgICAgaW5zdGVhZCBvZiBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlIHRvIGNvdmVyIHRoZSBjYXNlcyB3aGVuIHJlc291cmNlcworICAgICAgICBhcmUgbG9hZGVk
IGZyb20gbWVtb3J5IGNhY2hlLgorCisgICAgICAgIE5ldHdvcmsgbm90aWZpY2F0aW9ucyBhcmUg
bm93IHNlbnQgdG8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIHdoaWNoIGRpc3BhdGNoZXMKKyAg
ICAgICAgdGhlbSB0byBpbnRlcmVzdGVkIGFnZW50cyBhbmQgSW5zcGVjdG9yQ29udHJvbGxlci4K
KworICAgICAgICAqIHNyYy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAg
ICAqIHNyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRl
dlRvb2xzQWdlbnRJbXBsOjptYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29s
c0FnZW50SW1wbDo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkRldlRvb2xzQWdlbnRJbXBsOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkRldlRvb2xzQWdlbnRJbXBsOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
IChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJbXBsOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAg
ICogc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmg6CisKIDIwMTEtMDEtMTEgIFBhdmVsIEZlbGRt
YW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBT
ZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU2hhcmVkV29ya2Vy
UmVwb3NpdG9yeS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NoYXJlZFdvcmtlclJlcG9zaXRv
cnkuY3BwCmluZGV4IDg4ZDNlYzU0ZmU4Nzg2ZWM1NDMyMDEzNDdiNTNkZGY3MGRjNTM1YmYuLjNk
NDQyOGFjNGE2NGZmOWFjOTMyNzEyMmI2ODJlNWQyYzE3MjU1NmYgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKKysrIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcApAQCAtMzYsNyArMzYsNyBAQAog
CiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAi
SW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgpAQCAtMTYyLDEwICsxNjIsNyBAQCB2b2lkIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6bm90
aWZ5RmluaXNoZWQoKQogICAgICAgICBtX3dvcmtlci0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgdHJ1ZSkpOwogICAgICAgICBkZWxl
dGUgdGhpczsKICAgICB9IGVsc2UgewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIGlm
IChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3IgPSBtX3dvcmtlci0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCi0gICAgICAgICAgICBpbnNwZWN0
b3ItPnNjcmlwdEltcG9ydGVkKG1fc2NyaXB0TG9hZGVyLmlkZW50aWZpZXIoKSwgbV9zY3JpcHRM
b2FkZXIuc2NyaXB0KCkpOwotI2VuZGlmCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6c2NyaXB0SW1wb3J0ZWQobV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV9z
Y3JpcHRMb2FkZXIuaWRlbnRpZmllcigpLCBtX3NjcmlwdExvYWRlci5zY3JpcHQoKSk7CiAgICAg
ICAgIC8vIFBhc3MgdGhlIHNjcmlwdCBvZmYgdG8gdGhlIHdvcmtlciwgdGhlbiBzZW5kIGEgY29u
bmVjdCBldmVudC4KICAgICAgICAgbV93ZWJXb3JrZXItPnN0YXJ0V29ya2VyQ29udGV4dChtX3Vy
bCwgbV9uYW1lLCBtX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51c2VyQWdlbnQo
bV91cmwpLCBtX3NjcmlwdExvYWRlci5zY3JpcHQoKSwgbV9yZXNwb25zZUFwcENhY2hlSUQpOwog
ICAgICAgICBzZW5kQ29ubmVjdCgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJEZXZUb29sc0FnZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xz
QWdlbnRJbXBsLmNwcAppbmRleCBkYmQ2ZGNhODQyNDIzODU0NTgxOTg2YzdhZmY0ZmExOWU0MWI0
OTQ5Li4xMWNlNzk3MzA4Y2ZlZjkxNzJkNTQxMWFhODlhN2MxNzk2M2M1MzA2IDEwMDY0NAotLS0g
YS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcAorKysgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcApAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNp
bmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpAQCAtNjks
NiArNzAsOCBAQCB1c2luZyBXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q7CiB1c2luZyBXZWJD
b3JlOjpJbnNwZWN0b3JBcnJheTsKIHVzaW5nIFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOwogdXNpbmcgV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjsKK3VzaW5nIFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjsKK3VzaW5nIFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZTsKIHVzaW5nIFdlYkNvcmU6Ok5vZGU7CiB1c2luZyBXZWJDb3Jl
OjpQYWdlOwogdXNpbmcgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjsKQEAgLTI2NiwyNSArMjY5LDMw
IEBAIFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpp
bnNwZWN0b3JDb250cm9sbGVyKCkKICAgICByZXR1cm4gMDsKIH0KIAorV2ViQ29yZTo6RnJhbWUq
IFdlYkRldlRvb2xzQWdlbnRJbXBsOjptYWluRnJhbWUoKQoreworICAgIGlmIChQYWdlKiBwYWdl
ID0gbV93ZWJWaWV3SW1wbC0+cGFnZSgpKQorICAgICAgICByZXR1cm4gcGFnZS0+bWFpbkZyYW1l
KCk7CisgICAgcmV0dXJuIDA7Cit9CisKIAogLy8tLS0tLS0tIHBsdWdpbiByZXNvdXJjZSBsb2Fk
IG5vdGlmaWNhdGlvbnMgLS0tLS0tLS0tLS0tLS0tCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBs
OjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QoCiAgICAgdW5zaWduZWQgbG9uZyByZXNvdXJj
ZUlkLAotICAgIFdlYkZyYW1lKiBmcmFtZSwKKyAgICBXZWJGcmFtZSogd2ViRnJhbWUsCiAgICAg
Y29uc3QgV2ViVVJMUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJv
bGxlciogaWMgPSBpbnNwZWN0b3JDb250cm9sbGVyKCkpIHsKLSAgICAgICAgV2ViRnJhbWVJbXBs
KiB3ZWJGcmFtZUltcGwgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUltcGwqPihmcmFtZSk7Ci0gICAg
ICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IHdlYkZyYW1lSW1wbC0+ZnJhbWUoKS0+bG9h
ZGVyKCk7Ci0gICAgICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBmcmFtZUxvYWRlci0+YWN0
aXZlRG9jdW1lbnRMb2FkZXIoKTsKLSAgICAgICAgaWMtPmlkZW50aWZpZXJGb3JJbml0aWFsUmVx
dWVzdChyZXNvdXJjZUlkLCBsb2FkZXIsIHJlcXVlc3QudG9SZXNvdXJjZVJlcXVlc3QoKSk7Ci0g
ICAgfQorICAgIFdlYkZyYW1lSW1wbCogd2ViRnJhbWVJbXBsID0gc3RhdGljX2Nhc3Q8V2ViRnJh
bWVJbXBsKj4od2ViRnJhbWUpOworICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSA9IHdlYkZyYW1l
SW1wbC0+ZnJhbWUoKTsKKyAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZnJhbWUtPmxvYWRl
cigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KGZyYW1lLCByZXNvdXJjZUlkLCBsb2FkZXIs
IHJlcXVlc3QudG9SZXNvdXJjZVJlcXVlc3QoKSk7CiB9CiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2Vu
dEltcGw6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIHJlc291cmNlSWQsIFdlYlVSTFJl
cXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW5z
cGVjdG9yQ29udHJvbGxlcigpKSB7Ci0gICAgICAgIGljLT53aWxsU2VuZFJlcXVlc3QocmVzb3Vy
Y2VJZCwgcmVxdWVzdC50b011dGFibGVSZXNvdXJjZVJlcXVlc3QoKSwgUmVzb3VyY2VSZXNwb25z
ZSgpKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3Qo
bWFpbkZyYW1lKCksIHJlc291cmNlSWQsIHJlcXVlc3QudG9NdXRhYmxlUmVzb3VyY2VSZXF1ZXN0
KCksIFJlc291cmNlUmVzcG9uc2UoKSk7CiAgICAgICAgIGlmIChpYy0+aGFzRnJvbnRlbmQoKSAm
JiByZXF1ZXN0LnJlcG9ydExvYWRUaW1pbmcoKSkKICAgICAgICAgICAgIHJlcXVlc3Quc2V0UmVw
b3J0UmF3SGVhZGVycyh0cnVlKTsKICAgICB9CkBAIC0yOTIsMjcgKzMwMCwyMyBAQCB2b2lkIFdl
YkRldlRvb2xzQWdlbnRJbXBsOjp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyByZXNvdXJj
ZUlkLCBXZWJVUkxSZXF1ZQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkaWRSZWNlaXZl
RGF0YSh1bnNpZ25lZCBsb25nIHJlc291cmNlSWQsIGludCBsZW5ndGgpCiB7Ci0gICAgaWYgKElu
c3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICBp
Yy0+ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgocmVzb3VyY2VJZCwgbGVuZ3RoKTsKKyAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKG1haW5GcmFtZSgp
LCByZXNvdXJjZUlkLCBsZW5ndGgpOwogfQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpk
aWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyByZXNvdXJjZUlkLCBjb25zdCBXZWJVUkxS
ZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0g
aW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICBpYy0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJl
c291cmNlSWQsIDAsIHJlc3BvbnNlLnRvUmVzb3VyY2VSZXNwb25zZSgpKTsKKyAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UobWFpbkZyYW1lKCksIHJlc291cmNlSWQsIHJl
c3BvbnNlLnRvUmVzb3VyY2VSZXNwb25zZSgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGNvb2tpZSwgcmVzb3VyY2VJZCwgMCwgcmVz
cG9uc2UudG9SZXNvdXJjZVJlc3BvbnNlKCkpOwogfQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJ
bXBsOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VJZCkKIHsKLSAgICBp
ZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaWMgPSBpbnNwZWN0b3JDb250cm9sbGVyKCkpCi0gICAg
ICAgIGljLT5kaWRGaW5pc2hMb2FkaW5nKHJlc291cmNlSWQsIDApOworICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhtYWluRnJhbWUoKSwgcmVzb3VyY2VJZCwg
MCk7CiB9CiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpZEZhaWxMb2FkaW5nKHVuc2ln
bmVkIGxvbmcgcmVzb3VyY2VJZCwgY29uc3QgV2ViVVJMRXJyb3ImIGVycm9yKQogewotICAgIFJl
c291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcjsKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aWMgPSBpbnNwZWN0b3JDb250cm9sbGVyKCkpCi0gICAgICAgIGljLT5kaWRGYWlsTG9hZGluZyhy
ZXNvdXJjZUlkLCByZXNvdXJjZUVycm9yKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEZhaWxMb2FkaW5nKG1haW5GcmFtZSgpLCByZXNvdXJjZUlkLCBlcnJvcik7CiB9CiAKIHZv
aWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6Omluc3BlY3RvckRlc3Ryb3llZCgpCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmggYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKaW5kZXggOWIzYzA1MzcyMzlkZDBhMGMx
Nzc0M2RmZGEzNTY2OTFlZDkzY2VmOS4uOGQ5N2FhNDc2NjhjYzY3Zjk0ZjZiOGY1ZDdhMjFhMTk4
NzI1ZDNiYiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50
SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaApA
QCAtMTAxLDYgKzEwMSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKCk7CisgICAgV2ViQ29yZTo6RnJh
bWUqIG1haW5GcmFtZSgpOwogCiAgICAgaW50IG1faG9zdElkOwogICAgIFdlYkRldlRvb2xzQWdl
bnRDbGllbnQqIG1fY2xpZW50Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78671</attachid>
            <date>2011-01-12 02:59:30 -0800</date>
            <delta_ts>2011-01-12 04:39:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37394-20110112135926.patch</filename>
            <type>text/plain</type>
            <size>80048</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyZjU2MzgzYzEyZjc5ZDZjMDc0NDg0NzgxMzlkNmI0NWZhYWI4NTlmLi44NTEzMjUz
ZjEzNWRiNjI0ZmI5YmU2ZjEzNDcwZmNhZjVkZTg1MTkzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTAtMTItMjkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaW5zcGVjdG9yL3Rp
bWVsaW5lLW5ldHdvcmstcmVzb3VyY2UuaHRtbCBmYWlscyB3aGVuIHJ1biB0d2ljZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzczOTQKKworICAgICAg
ICBTZW5kIGRpZFJlY2VpdmVSZXNwb25zZSBub3RpZmljYXRpb24gdG8gdGhlIHRpbWVsaW5lIGFn
ZW50IGZyb20gUmVzb3VyY2VMb2FkTm90aWZpZXIKKyAgICAgICAgaW5zdGVhZCBvZiBSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlIHRvIGNvdmVyIHRoZSBjYXNlcyB3aGVuIHJlc291
cmNlcworICAgICAgICBhcmUgbG9hZGVkIGZyb20gbWVtb3J5IGNhY2hlLgorCisgICAgICAgIE5l
dHdvcmsgbm90aWZpY2F0aW9ucyBhcmUgbm93IHNlbmQgdG8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uIHdoaWNoIGRpc3BhdGNoZXMKKyAgICAgICAgdGhlbSB0byBpbnRlcmVzdGVkIGFnZW50cyBh
bmQgSW5zcGVjdG9yQ29udHJvbGxlci4KKyAgICAgICAgZml4CisKKyAgICAgICAgKiBpbnNwZWN0
b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5z
cGVjdG9yL3RpbWVsaW5lLW5ldHdvcmstcmVzb3VyY2UuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS5qczoKKwogMjAxMC0xMi0yNyAgU2hpbmljaGly
byBIYW1hamkgIDxzaGluaWNoaXJvLmhhbWFqaUBnbWFpbC5jb20+CiAKICAgICAgICAgQ2hyb21p
dW0gZXhwZWN0YXRpb24gdXBkYXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3RpbWVsaW5lLW5ldHdvcmstcmVzb3VyY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3RpbWVsaW5lLW5ldHdvcmstcmVzb3VyY2UtZXhwZWN0ZWQudHh0CmluZGV4IGQ5NDE4
Y2E4MDI5OGZmM2Q3NzE4MjU2NTNjZTI2MDM4Mzc2MGZhNDkuLjkyNjk3NzVhMTUyNTdiZDQ5YTcz
YjNmOTRjZjdkYzNkMjEzMDA2NzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS1leHBlY3RlZC50eHQKQEAgLTgsNyAr
OCw2IEBAIFJlc291cmNlU2VuZFJlcXVlc3QgUHJvcGVydGllczoKICAgICAgICAgaWRlbnRpZmll
ciA6IDxudW1iZXI+CiAgICAgICAgIHVybCA6IDxzdHJpbmc+CiAgICAgICAgIHJlcXVlc3RNZXRo
b2QgOiAiR0VUIgotICAgICAgICBpc01haW5SZXNvdXJjZSA6IGZhbHNlCiAgICAgfQogICAgIHR5
cGUgOiAxMgogICAgIHVzZWRIZWFwU2l6ZSA6IDxudW1iZXI+CkBAIC0yMiw3ICsyMSw3IEBAIFJl
c291cmNlUmVjZWl2ZVJlc3BvbnNlIFByb3BlcnRpZXM6CiAgICAgICAgIGlkZW50aWZpZXIgOiA8
bnVtYmVyPgogICAgICAgICBzdGF0dXNDb2RlIDogMAogICAgICAgICBtaW1lVHlwZSA6IDxzdHJp
bmc+Ci0gICAgICAgIGV4cGVjdGVkQ29udGVudExlbmd0aCA6IDIxMAorICAgICAgICBleHBlY3Rl
ZENvbnRlbnRMZW5ndGggOiAyMDgKICAgICAgICAgdXJsIDogPHN0cmluZz4KICAgICB9CiAgICAg
Y2hpbGRyZW4gOiA8b2JqZWN0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Rp
bWVsaW5lLW5ldHdvcmstcmVzb3VyY2UuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1l
bGluZS1uZXR3b3JrLXJlc291cmNlLmh0bWwKaW5kZXggZmUyOGVkM2I4ZWRiZThlYzVlMWM3YWRk
MWQ4NTI0OWNhMGU3MDJmNy4uNzI4NmZiNmFhYzg4MmFjODFhZGNiYWRmMTU0M2Y2NzU0OTA1MTE2
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLW5ldHdvcmstcmVz
b3VyY2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1y
ZXNvdXJjZS5odG1sCkBAIC02LDE2ICs2LDE2IEBACiAKIHZhciBzY3JpcHRVcmwgPSAidGltZWxp
bmUtbmV0d29yay1yZXNvdXJjZS5qcyI7CiAKLWZ1bmN0aW9uIHJ1bkFmdGVyU2NyaXB0SXNFdmFs
dWF0ZWQoY29udGludWF0aW9uKQorZnVuY3Rpb24gcnVuQWZ0ZXJTY3JpcHRJc0V2YWx1YXRlZCgp
CiB7Ci0gICAgZnVuY3Rpb24gc3RlcCgpCi0gICAgewotICAgICAgICBpZiAoIXdpbmRvdy5zY3Jp
cHRFdmFsdWF0ZWQpCi0gICAgICAgICAgICBzZXRUaW1lb3V0KHN0ZXAsIDEwMCk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGNvbnRpbnVhdGlvbigpOwotICAgIH0KLSAgICBzZXRUaW1lb3V0
KHN0ZXAsIDEwMCk7CisgICAgcHJpbnRUaW1lbGluZVJlY29yZHMobnVsbCwgbnVsbCwgZnVuY3Rp
b24ocmVjb3JkKSB7CisgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJl
Y29yZFR5cGVbIlJlc291cmNlU2VuZFJlcXVlc3QiXSkKKyAgICAgICAgICAgIHByaW50U2VuZChy
ZWNvcmQpOworICAgICAgICBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJl
Y29yZFR5cGVbIlJlc291cmNlUmVjZWl2ZVJlc3BvbnNlIl0pCisgICAgICAgICAgICBwcmludFJl
Y2VpdmUocmVjb3JkKTsKKyAgICAgICAgZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IHRpbWVsaW5l
QWdlbnRSZWNvcmRUeXBlWyJSZXNvdXJjZUZpbmlzaCJdKQorICAgICAgICAgICAgcHJpbnRGaW5p
c2gocmVjb3JkKTsKKyAgICB9KTsKIH0KIAogZnVuY3Rpb24gcHJpbnRSZWNvcmQocmVjb3JkKQpA
QCAtNjAsMTcgKzYwLDYgQEAgZnVuY3Rpb24gZG9pdCgpCiAgICAgdmFyIHNjcmlwdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOwogICAgIHNjcmlwdC5zcmMgPSBzY3JpcHRVcmw7
CiAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpOwotICAgIHJ1bkFmdGVyU2Ny
aXB0SXNFdmFsdWF0ZWQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHByaW50VGltZWxpbmVSZWNvcmRz
KG51bGwsIG51bGwsIGZ1bmN0aW9uKHJlY29yZCkgewotICAgICAgICAgICAgaWYgKHJlY29yZC50
eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZVsiUmVzb3VyY2VTZW5kUmVxdWVzdCJdKQot
ICAgICAgICAgICAgICAgIHByaW50U2VuZChyZWNvcmQpOwotICAgICAKLSAgICAgICAgICAgIGVs
c2UgaWYgKHJlY29yZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZVsiUmVzb3VyY2VS
ZWNlaXZlUmVzcG9uc2UiXSkKLSAgICAgICAgICAgICAgICBwcmludFJlY2VpdmUocmVjb3JkKTsK
LSAgICAgICAgICAgIGVsc2UgaWYgKHJlY29yZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3Jk
VHlwZVsiUmVzb3VyY2VGaW5pc2giXSkKLSAgICAgICAgICAgICAgICBwcmludEZpbmlzaChyZWNv
cmQpOwotICAgICAgICB9KTsKLSAgICB9KTsKIH0KIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS5qcyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmpzCmluZGV4IDZmZTBk
MThkODAwZWQ3ZTAwZDFiZTgyMDg4ODNhMzA2YzA5NGVhNDkuLmRlN2M3MjBmNThmNzc3OWNiYmY2
Y2U3MTU3YjI1MWY2MTUyOWQwNWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmpzCkBAIC0zLDQgKzMsNCBAQAogdmFyIGVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKIGVsZW1lbnQuaW5uZXJIVE1MID0gIlNj
cmlwdCByZXNvdXJjZSBsb2FkZWQiOwogZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50
KTsKLXdpbmRvdy5zY3JpcHRFdmFsdWF0ZWQgPSB0cnVlOworcnVuQWZ0ZXJTY3JpcHRJc0V2YWx1
YXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDc1OTFhNjgzNjQyNzZjMTVlY2Q4YTIyZmE2Nzg1MDc5Y2Qz
NGY5OTguLjU0MTdjNTgyZTc0MWExNGYzZWI4NDgxNDIwY2RhMmQ4MzU2ZmM0ODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw5MyBAQAorMjAxMC0xMi0yOSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlz
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBpbnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS5odG1sIGZhaWxzIHdo
ZW4gcnVuIHR3aWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNzM5NAorCisgICAgICAgIFNlbmQgZGlkUmVjZWl2ZVJlc3BvbnNlIG5vdGlmaWNhdGlv
biB0byB0aGUgdGltZWxpbmUgYWdlbnQgZnJvbSBSZXNvdXJjZUxvYWROb3RpZmllcgorICAgICAg
ICBpbnN0ZWFkIG9mIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UgdG8gY292ZXIg
dGhlIGNhc2VzIHdoZW4gcmVzb3VyY2VzCisgICAgICAgIGFyZSBsb2FkZWQgZnJvbSBtZW1vcnkg
Y2FjaGUuCisKKyAgICAgICAgTmV0d29yayBub3RpZmljYXRpb25zIGFyZSBub3cgc2VudCB0byBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24gd2hpY2ggZGlzcGF0Y2hlcworICAgICAgICB0aGVtIHRv
IGludGVyZXN0ZWQgYWdlbnRzIGFuZCBJbnNwZWN0b3JDb250cm9sbGVyLgorCisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3Rvci5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQ6OmRpZFJlY2VpdmVNYW5pZmVzdFJlc3BvbnNlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJl
cXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlkZW50aWZpZXJGb3JJbml0aWFsUmVx
dWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsU2VuZFJlcXVlc3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlSW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlQ29udGVudExlbmd0aEltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nSW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5n
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlc291
cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZEltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXRyaWV2ZVJlc291cmNlQWdlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aWRlbnRpZmllckZvckluaXRpYWxS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6bWFya1Jlc291cmNlQXNDYWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZWNlaXZlQ29udGVudExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9y
dGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjppZGVudGlmaWVyRm9ySW5p
dGlhbFJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFNlbmRSZXNvdXJjZVJl
cXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJlc291cmNlU2VuZFJlcXVlc3RE
YXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuaWRlbnRpZmllckZvckluaXRpYWxS
ZXF1ZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuYWRkUmVjb3Jk
VG9UaW1lbGluZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZEZhaWxUb0xvYWQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRj
aFdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmll
cjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFpbmlu
Z0RlbGVnYXRlTWVzc2FnZXMpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y3JlYXRlUmVzb3VyY2VIYW5k
bGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpkaWRGYWlsKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdy
b3VwLmg6CisgICAgICAgICogd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlmeUZp
bmlzaGVkKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0cyk6
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKToKKwogMjAxMS0wMS0xMSAgSmVyZW15IE9y
bG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOYXRlIENo
YXBpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRs
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKaW5kZXggNTM1OWUxNmMw
MDQ0ZGU3MzFhMTJjY2Q4YzFhZDNjMzFlNTRlZjE1Zi4uZWQwMGNjNzZkMzY3OTI0MjU0ZmYzMzI5
YTRhNjM2MGM3ZmY0OTJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwK
QEAgLTkxLDcgKzkxLDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBbZG9tYWluPU5ldHdvcmtd
IHZvaWQgcmVzb3VyY2VDb250ZW50KGluIHVuc2lnbmVkIGxvbmcgZnJhbWVJZCwgaW4gU3RyaW5n
IHVybCwgaW4gYm9vbGVhbiBiYXNlNjRFbmNvZGUsIG91dCBTdHJpbmcgY29udGVudCk7CiAgICAg
ICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIGZyYW1lRGV0YWNoZWRGcm9tUGFyZW50
KG91dCB1bnNpZ25lZCBsb25nIGZyYW1lSWQpOwogCi0gICAgICAgIFtub3RpZnksIGRvbWFpbj1O
ZXR3b3JrXSB2b2lkIGlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChvdXQgbG9uZyBpZGVudGlm
aWVyLCBvdXQgU3RyaW5nIHVybCwgb3V0IE9iamVjdCBsb2FkZXIsIG91dCBWYWx1ZSBjYWxsU3Rh
Y2spOworICAgICAgICBbbm90aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCBpZGVudGlmaWVyRm9y
SW5pdGlhbFJlcXVlc3Qob3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IFN0cmluZyB1cmwsIG91dCBP
YmplY3QgbG9hZGVyLCBvdXQgYm9vbGVhbiBpc01haW5SZXNvdXJjZUxvYWRlciwgb3V0IFZhbHVl
IGNhbGxTdGFjayk7CiAgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgZG91YmxlIHRpbWUsIG91dCBPYmpl
Y3QgcmVxdWVzdCwgb3V0IE9iamVjdCByZWRpcmVjdFJlc3BvbnNlKTsKICAgICAgICAgW25vdGlm
eSwgZG9tYWluPU5ldHdvcmtdIHZvaWQgbWFya1Jlc291cmNlQXNDYWNoZWQob3V0IGxvbmcgaWRl
bnRpZmllcik7CiAgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgZG91YmxlIHRpbWUsIG91dCBTdHJp
bmcgcmVzb3VyY2VUeXBlLCBvdXQgT2JqZWN0IHJlc3BvbnNlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5j
cHAKaW5kZXggY2VkNjFjNWRkMmQzZjJlOTljMDQ5MjA2ZjMyOTlkMDE3ZmRkOTgzNi4uZDM1NzI2
NmM2MTMzNThhYjRlMTRmOTVlYWU3NDk4MGI5ZGY1MDkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5j
cHAKQEAgLTQ2LDExICs0Niw2IEBAIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KEluc3BlY3RvckNvbnRyb2xsCiB7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpkaWRSZWNlaXZlTWFuaWZlc3RSZXNw
b25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQotewotICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZGlkUmVjZWl2ZVJlc3BvbnNl
KGlkZW50aWZpZXIsIDAsIHJlc3BvbnNlKTsKLX0KLQogdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQ6OnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMoQXBwbGljYXRpb25DYWNo
ZUhvc3Q6OlN0YXR1cyBzdGF0dXMpCiB7CiAgICAgbV9mcm9udGVuZC0+dXBkYXRlQXBwbGljYXRp
b25DYWNoZVN0YXR1cyhzdGF0dXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCmluZGV4IDExZjEwY2UwMjY3
NzM4YWQ0MTE1M2U2Nzk4NjAyYWY1OTRkMTA4MzkuLjIzM2I1ZjI0NTk2MjU5YmRmYTMwODE0ODRl
OGExZTZhNGUwMzgzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKQEAgLTQ2LDcgKzQ2LDYgQEAgcHVi
bGljOgogICAgIH5JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSB7IH0KIAogICAgIC8v
IEJhY2tlbmQgdG8gRnJvbnRlbmQKLSAgICB2b2lkIGRpZFJlY2VpdmVNYW5pZmVzdFJlc3BvbnNl
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAg
IHZvaWQgdXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
U3RhdHVzKTsKICAgICB2b2lkIHVwZGF0ZU5ldHdvcmtTdGF0ZShib29sIGlzTm93T25saW5lKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CmluZGV4IGIwYmFiZGM0NWExODc3MTBlZTBjODY2Yzg2NTE5ODM2ZjA2YzA3NWYuLmVlMTUzNmY3
Yzc2MzJhZGYwMGFiZWZkOGUxMGE5ODdiMmY2OGE1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTE0MCw3ICsxNDAsNiBAQCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3Bl
Y3RvckNsaWVudCogY2xpZW50KQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9vcGVu
aW5nRnJvbnRlbmQoZmFsc2UpCiAgICAgLCBtX2Nzc0FnZW50KG5ldyBJbnNwZWN0b3JDU1NBZ2Vu
dCgpKQotICAgICwgbV9tYWluUmVzb3VyY2VJZGVudGlmaWVyKDApCiAgICAgLCBtX2V4cGlyZWRD
b25zb2xlTWVzc2FnZUNvdW50KDApCiAgICAgLCBtX3ByZXZpb3VzTWVzc2FnZSgwKQogICAgICwg
bV9zZXR0aW5nc0xvYWRlZChmYWxzZSkKQEAgLTc1OSw3ICs3NTgsNiBAQCB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpZENvbW1pdExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICNlbmRp
ZgogCiAgICAgICAgIGlmIChtX2Zyb250ZW5kKSB7Ci0gICAgICAgICAgICBtX21haW5SZXNvdXJj
ZUlkZW50aWZpZXIgPSAwOwogICAgICAgICAgICAgbV9mcm9udGVuZC0+ZGlkQ29tbWl0TG9hZCgp
OwogICAgICAgICAgICAgbV9kb21BZ2VudC0+c2V0RG9jdW1lbnQobV9pbnNwZWN0ZWRQYWdlLT5t
YWluRnJhbWUoKS0+ZG9jdW1lbnQoKSk7CiAgICAgICAgIH0KQEAgLTc3NSwzMyArNzczLDYgQEAg
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpmcmFtZURldGFjaGVkRnJvbVBhcmVudChGcmFtZSog
cm9vdEZyYW1lKQogICAgICAgICBtX3Jlc291cmNlQWdlbnQtPmZyYW1lRGV0YWNoZWRGcm9tUGFy
ZW50KHJvb3RGcmFtZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkTG9hZFJl
c291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IENhY2hl
ZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKLXsKLSAgICBpZiAoIWVuYWJsZWQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZW5zdXJlU2V0dGluZ3NMb2FkZWQoKTsKLQotICAgIGlmIChtX3Jl
c291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+ZGlkTG9hZFJlc291cmNlRnJv
bU1lbW9yeUNhY2hlKGxvYWRlciwgY2FjaGVkUmVzb3VyY2UpOwotfQotCi12b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKLXsKLSAgICBpZiAoIWVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIEFT
U0VSVChtX2luc3BlY3RlZFBhZ2UpOwotCi0gICAgYm9vbCBpc01haW5SZXNvdXJjZSA9IGlzTWFp
blJlc291cmNlTG9hZGVyKGxvYWRlciwgcmVxdWVzdC51cmwoKSk7Ci0gICAgaWYgKGlzTWFpblJl
c291cmNlKQotICAgICAgICBtX21haW5SZXNvdXJjZUlkZW50aWZpZXIgPSBpZGVudGlmaWVyOwot
Ci0gICAgZW5zdXJlU2V0dGluZ3NMb2FkZWQoKTsKLQotICAgIGlmIChtX3Jlc291cmNlQWdlbnQp
Ci0gICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KGlk
ZW50aWZpZXIsIHJlcXVlc3QudXJsKCksIGxvYWRlcik7Ci19Ci0KIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6bWFpblJlc291cmNlRmlyZWRET01Db250ZW50RXZlbnQoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgY29uc3QgS1VSTCYgdXJsKQogewogICAgIGlmICghZW5hYmxlZCgpIHx8ICFpc01h
aW5SZXNvdXJjZUxvYWRlcihsb2FkZXIsIHVybCkpCkBAIC04MjksNyArODAwLDcgQEAgYm9vbCBJ
bnNwZWN0b3JDb250cm9sbGVyOjppc01haW5SZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciog
bG9hZGVyLCBjb25zdCBLVVIKICAgICByZXR1cm4gbG9hZGVyLT5mcmFtZSgpID09IG1faW5zcGVj
dGVkUGFnZS0+bWFpbkZyYW1lKCkgJiYgcmVxdWVzdFVybCA9PSBsb2FkZXItPnJlcXVlc3RVUkwo
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFJlcXVlc3QodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKCFl
bmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg0NSw5NSArODE2LDM3IEBAIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgUmVzb3VyY2VSZXF1CiAgICAgICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmll
bGQoaXQtPmZpcnN0LCBpdC0+c2Vjb25kKTsKICAgICAgICAgfQogICAgIH0KLQotICAgIGJvb2wg
aXNNYWluUmVzb3VyY2UgPSBtX21haW5SZXNvdXJjZUlkZW50aWZpZXIgPT0gaWRlbnRpZmllcjsK
LSAgICBpZiAobV90aW1lbGluZUFnZW50KQotICAgICAgICBtX3RpbWVsaW5lQWdlbnQtPndpbGxT
ZW5kUmVzb3VyY2VSZXF1ZXN0KGlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlLCByZXF1ZXN0KTsK
LQotICAgIGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+d2ls
bFNlbmRSZXF1ZXN0KGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogfQog
Ci12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Om1hcmtSZXNvdXJjZUFzQ2FjaGVkKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcikKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiB7CiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+bWFya1Jlc291
cmNlQXNDYWNoZWQoaWRlbnRpZmllcik7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi17Ci0gICAgaWYg
KCFlbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX3Jlc291cmNlQWdlbnQp
Ci0gICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIs
IGxvYWRlciwgcmVzcG9uc2UpOwotCiAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkg
Pj0gNDAwKSB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiRmFpbGVkIHRv
IGxvYWQgcmVzb3VyY2U6IHRoZSBzZXJ2ZXIgcmVzcG9uZGVkIHdpdGggYSBzdGF0dXMgb2YgIiwg
U3RyaW5nOjpudW1iZXIocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSksICIgKCIsIHJlc3BvbnNl
Lmh0dHBTdGF0dXNUZXh0KCksICcpJyk7CiAgICAgICAgIGFkZENvbnNvbGVNZXNzYWdlKG5ldyBD
b25zb2xlTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIE5ldHdvcmtFcnJvck1lc3NhZ2VUeXBl
LCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIGlk
ZW50aWZpZXIpKTsKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVj
ZWl2ZUNvbnRlbnRMZW5ndGgodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgbGVuZ3RoUmVj
ZWl2ZWQpCi17Ci0gICAgaWYgKCFlbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
IChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+ZGlkUmVjZWl2ZUNv
bnRlbnRMZW5ndGgoaWRlbnRpZmllciwgbGVuZ3RoUmVjZWl2ZWQpOwotfQotCi12b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBkb3VibGUgZmluaXNoVGltZSkKLXsKLSAgICBpZiAoIWVuYWJsZWQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKG1fdGltZWxpbmVBZ2VudCkKLSAgICAgICAgbV90aW1lbGluZUFnZW50
LT5kaWRGaW5pc2hMb2FkaW5nUmVzb3VyY2UoaWRlbnRpZmllciwgZmFsc2UsIGZpbmlzaFRpbWUp
OwotCi0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAgICAgICAgbV9yZXNvdXJjZUFnZW50LT5k
aWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOwotfQotCiB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCi0gICAgICAgIG1fdGltZWxp
bmVBZ2VudC0+ZGlkRmluaXNoTG9hZGluZ1Jlc291cmNlKGlkZW50aWZpZXIsIHRydWUsIDApOwot
CiAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2UiOwotICAgICAg
ICBpZiAoIWVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkuaXNFbXB0eSgpKQotICAgICAgICAg
ICAgbWVzc2FnZSArPSAiOiAiICsgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKTsKLSAgICAg
ICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3IENvbnNvbGVNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJj
ZSwgTmV0d29ya0Vycm9yTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBl
cnJvci5mYWlsaW5nVVJMKCksIGlkZW50aWZpZXIpKTsKLQotICAgIGlmIChtX3Jlc291cmNlQWdl
bnQpCi0gICAgICAgIG1fcmVzb3VyY2VBZ2VudC0+ZGlkRmFpbExvYWRpbmcoaWRlbnRpZmllciwg
ZXJyb3IpOworICAgIGlmICghZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS5pc0VtcHR5KCkp
CisgICAgICAgIG1lc3NhZ2UgKz0gIjogIiArIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCk7
CisgICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3IENvbnNvbGVNZXNzYWdlKE90aGVyTWVzc2FnZVNv
dXJjZSwgTmV0d29ya0Vycm9yTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdl
LCBlcnJvci5mYWlsaW5nVVJMKCksIGlkZW50aWZpZXIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpCit2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdChj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGlu
ZU51bWJlcikKIHsKICAgICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oSW5zcGVjdG9yU3RhdGU6Om1vbml0b3JpbmdYSFIpKQog
ICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5
cGUsIExvZ01lc3NhZ2VMZXZlbCwgIlhIUiBmaW5pc2hlZCBsb2FkaW5nOiBcIiIgKyB1cmwgKyAi
XCIuIiwgc2VuZExpbmVOdW1iZXIsIHNlbmRVUkwpOwotCi0gICAgaWYgKG1fcmVzb3VyY2VBZ2Vu
dCkKLSAgICAgICAgbV9yZXNvdXJjZUFnZW50LT5zZXRJbml0aWFsQ29udGVudChpZGVudGlmaWVy
LCBzb3VyY2VTdHJpbmcsICJYSFIiKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpz
Y3JpcHRJbXBvcnRlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlU3RyaW5nKQotewotICAgIGlmICghZW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAobV9yZXNvdXJjZUFnZW50KQotICAgICAgICBtX3Jlc291cmNlQWdlbnQtPnNldEluaXRp
YWxDb250ZW50KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZywgIlNjcmlwdCIpOwogfQogCiB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZVNldHRpbmdzTG9hZGVkKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDQ4MTM0NGQ5NmM5
NzMzYTE5ZDNlMzc4NTk1MGVhYmY1MjI5Yzc0MDkuLmZlZjJhNmQzNzBkM2RmYzgzZWYzNGUzNTM4
MDY5MjVjMzkwODIxY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaApAQCAtMTU4LDIyICsxNTgsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRp
ZENvbW1pdExvYWQoRG9jdW1lbnRMb2FkZXIqKTsKICAgICB2b2lkIGZyYW1lRGV0YWNoZWRGcm9t
UGFyZW50KEZyYW1lKik7Ci0gICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUo
RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBDYWNoZWRSZXNvdXJjZSopOwotCi0gICAgdm9pZCBpZGVu
dGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVu
dExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwotICAgIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgdm9pZCBtYXJrUmVzb3VyY2VB
c0NhY2hlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQ29udGVudExlbmd0aCh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGludCBsZW5ndGhSZWNlaXZlZCk7Ci0gICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUp
OwotICAgIHZvaWQgZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJl
cXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmlu
ZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2Vu
ZExpbmVOdW1iZXIpOwotICAgIHZvaWQgc2NyaXB0SW1wb3J0ZWQodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZyk7CiAKICAgICB2b2lkIHNldEV4dHJh
SGVhZGVycyhQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4pOwogCi0gICAgdm9pZCBlbnN1cmVT
ZXR0aW5nc0xvYWRlZCgpOwotCiAgICAgdm9pZCBzdGFydFRpbWVsaW5lUHJvZmlsZXIoKTsKICAg
ICB2b2lkIHN0b3BUaW1lbGluZVByb2ZpbGVyKCk7CiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCogdGltZWxpbmVBZ2VudCgpIHsgcmV0dXJuIG1fdGltZWxpbmVBZ2VudC5nZXQoKTsgfQpAQCAt
Mjc3LDIxICsyNjQsMjcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBkZWZh
dWx0QXR0YWNoZWRIZWlnaHQ7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBnZXRJbnNwZWN0b3JTdGF0
ZShSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogc3RhdGUpOwotICAgIHZvaWQgc2V0Q29uc29sZU1l
c3NhZ2VzRW5hYmxlZChib29sIGVuYWJsZWQpOwotCiAgICAgZnJpZW5kIGNsYXNzIEluc3BlY3Rv
ckJhY2tlbmQ7CiAgICAgZnJpZW5kIGNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwog
ICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb247CiAgICAgZnJpZW5kIGNs
YXNzIEluamVjdGVkU2NyaXB0SG9zdDsKIAorICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgZGlkRmFpbExv
YWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7Cisg
ICAgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpOworCisg
ICAgdm9pZCBlbnN1cmVTZXR0aW5nc0xvYWRlZCgpOworCisgICAgdm9pZCBnZXRJbnNwZWN0b3JT
dGF0ZShSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogc3RhdGUpOworICAgIHZvaWQgc2V0Q29uc29s
ZU1lc3NhZ2VzRW5hYmxlZChib29sKTsKKworICAgIHZvaWQgcG9wdWxhdGVTY3JpcHRPYmplY3Rz
KCk7CisgICAgdm9pZCByZXN0b3JlRGVidWdnZXIoKTsKICAgICBlbnVtIFByb2ZpbGVyUmVzdG9y
ZUFjdGlvbiB7CiAgICAgICAgIFByb2ZpbGVyUmVzdG9yZU5vQWN0aW9uID0gMCwKICAgICAgICAg
UHJvZmlsZXJSZXN0b3JlUmVzZXRBZ2VudCA9IDEKICAgICB9OwotICAgIAotICAgIHZvaWQgcG9w
dWxhdGVTY3JpcHRPYmplY3RzKCk7Ci0gICAgdm9pZCByZXN0b3JlRGVidWdnZXIoKTsKICAgICB2
b2lkIHJlc3RvcmVQcm9maWxlcihQcm9maWxlclJlc3RvcmVBY3Rpb24gYWN0aW9uKTsKICAgICB2
b2lkIHVuYmluZEFsbFJlc291cmNlcygpOwogICAgIHZvaWQgc2V0U2VhcmNoaW5nRm9yTm9kZShi
b29sIGVuYWJsZWQpOwpAQCAtMzQ5LDcgKzM0Miw2IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8
Tm9kZT4gbV9ub2RlVG9Gb2N1czsKICAgICBSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2VBZ2VudD4g
bV9yZXNvdXJjZUFnZW50OwotICAgIHVuc2lnbmVkIGxvbmcgbV9tYWluUmVzb3VyY2VJZGVudGlm
aWVyOwogICAgIFZlY3RvcjxPd25QdHI8Q29uc29sZU1lc3NhZ2U+ID4gbV9jb25zb2xlTWVzc2Fn
ZXM7CiAgICAgdW5zaWduZWQgbV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudDsKICAgICBIYXNo
TWFwPFN0cmluZywgZG91YmxlPiBtX3RpbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBmM2E3M2JhMTY1OTMy
OWQxMmE4YjQ1YmM2YTM0MzdiODAwNTY1Yjc3Li44NTJmZjdiNDlmZTNhNTc1YTE5ODBlMTM3MDhh
MzVmMmM2NWQ4OTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMzQsMTIgKzM0LDE2IEBACiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKIAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkRvY3VtZW50
TG9hZGVyLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudENvbnRleHQuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKKyNpbmNs
dWRlICJOZXR3b3JrU3RhdGVOb3RpZmllci5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC0zNzIsNiArMzc2LDQwIEBAIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNhbGN1bGF0ZVN0eWxlSW1wbChjb25z
dCBJbnNwZWN0b3JJbnN0cnVtZW50CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFJlY2FsY3Vs
YXRlU3R5bGUoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlkZW50aWZp
ZXJGb3JJbml0aWFsUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaWMsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlmICghaWMtPmVuYWJsZWQoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIGljLT5lbnN1cmVTZXR0aW5nc0xvYWRlZCgpOworCisgICAgaWYgKEluc3BlY3Rv
clJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaWMp
KQorICAgICAgICByZXNvdXJjZUFnZW50LT5pZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QoaWRl
bnRpZmllciwgcmVxdWVzdC51cmwoKSwgbG9hZGVyLCBpYy0+aXNNYWluUmVzb3VyY2VMb2FkZXIo
bG9hZGVyLCByZXF1ZXN0LnVybCgpKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsU2VuZFJlcXVlc3RJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGljLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3sKKyAgICBpYy0+d2lsbFNlbmRSZXF1ZXN0
KHJlcXVlc3QpOworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGljKSkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+d2ls
bFNlbmRSZXNvdXJjZVJlcXVlc3QoaWRlbnRpZmllciwgcmVxdWVzdCk7CisgICAgaWYgKEluc3Bl
Y3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQo
aWMpKQorICAgICAgICByZXNvdXJjZUFnZW50LT53aWxsU2VuZFJlcXVlc3QoaWRlbnRpZmllciwg
cmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjptYXJrUmVzb3VyY2VBc0NhY2hlZEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaWMs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisgICAgICAg
IHJlc291cmNlQWdlbnQtPm1hcmtSZXNvdXJjZUFzQ2FjaGVkKGlkZW50aWZpZXIpOworfQorCit2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNh
Y2hlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpYywgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwg
Y29uc3QgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQoreworICAgIGlmICghaWMtPmVu
YWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGljLT5lbnN1cmVTZXR0aW5nc0xvYWRlZCgp
OworICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmll
dmVSZXNvdXJjZUFnZW50KGljKSkKKyAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkTG9hZFJlc291
cmNlRnJvbU1lbW9yeUNhY2hlKGxvYWRlciwgY2FjaGVkUmVzb3VyY2UpOworfQorCiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVj
ZWl2ZVJlc291cmNlRGF0YUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogewogICAgIGludCB0aW1lbGluZUFnZW50
SWQgPSAwOwpAQCAtNDAwLDEyICs0MzgsNTQgQEAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3AKICAg
ICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKGluc3BlY3RvckNvbnRyb2xs
ZXIsIHRpbWVsaW5lQWdlbnRJZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llJiBjb29raWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSYgY29va2llLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogeworICAgIEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGljID0gY29va2llLmZpcnN0OworICAgIGlmIChJbnNwZWN0b3JSZXNv
dXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGljKSkKKyAg
ICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIGxvYWRl
ciwgcmVzcG9uc2UpOworICAgIC8vIEZJWE1FKDUyMjgyKTogbW92ZSB0aGlzIHRvIGNvbnNvbGUg
YWdlbnQuCisgICAgaWMtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7
CiAgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2
ZVRpbWVsaW5lQWdlbnQoY29va2llKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUmVjZWl2
ZVJlc291cmNlUmVzcG9uc2UoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpYywgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCit7CisgICAgaWYgKElu
c3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdl
bnQoaWMpKQorICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRSZWNlaXZlQ29udGVudExlbmd0aChp
ZGVudGlmaWVyLCBsZW5ndGhSZWNlaXZlZCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpYywgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSkKK3sKKyAgICBpZiAoSW5z
cGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2Vu
dChpYykpCisgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEZpbmlzaExvYWRpbmdSZXNvdXJjZShp
ZGVudGlmaWVyLCBmYWxzZSwgZmluaXNoVGltZSk7CisgICAgaWYgKEluc3BlY3RvclJlc291cmNl
QWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaWMpKQorICAgICAg
ICByZXNvdXJjZUFnZW50LT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUp
OworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmdJbXBs
KEluc3BlY3RvckNvbnRyb2xsZXIqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIC8vIEZJWE1FKDUyMjgyKTogbW92ZSB0aGlz
IHRvIGNvbnNvbGUgYWdlbnQuCisgICAgaWMtPmRpZEZhaWxMb2FkaW5nKGlkZW50aWZpZXIsIGVy
cm9yKTsKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJl
dHJpZXZlVGltZWxpbmVBZ2VudChpYykpCisgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEZpbmlz
aExvYWRpbmdSZXNvdXJjZShpZGVudGlmaWVyLCB0cnVlLCAwKTsKKyAgICBpZiAoSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpYykp
CisgICAgICAgIHJlc291cmNlQWdlbnQtPmRpZEZhaWxMb2FkaW5nKGlkZW50aWZpZXIsIGVycm9y
KTsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlc291cmNlUmV0cmlldmVk
QnlYTUxIdHRwUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaWMsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKQorewor
ICAgIGljLT5yZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodXJsLCBzZW5kVVJMLCBz
ZW5kTGluZU51bWJlcik7CisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNl
QWdlbnQgPSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaWMpKQorICAgICAgICByZXNvdXJjZUFnZW50
LT5zZXRJbml0aWFsQ29udGVudChpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcsICJYSFIiKTsKK30K
Kwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkSW1wbChJbnNw
ZWN0b3JDb250cm9sbGVyKiBpYywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVN0cmluZykKK3sKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVz
b3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisgICAgICAgIHJlc291cmNl
QWdlbnQtPnNldEluaXRpYWxDb250ZW50KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZywgIlNjcmlw
dCIpOworfQorCiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsV3JpdGVIVE1MSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyLCB1bnNpZ25lZCBpbnQgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgc3RhcnRMaW5l
KQogewogICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOwpAQCAtNDQ1LDYgKzUyNSwyNCBAQCB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xvc2VXZWJTb2NrZXRJbXBsKEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGluc3BlYwogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoT0ZGTElORV9X
RUJfQVBQTElDQVRJT05TKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om5ldHdvcmtT
dGF0ZUNoYW5nZWRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGljKQoreworICAgIGlmIChJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQqIGFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA9IGljLT5h
cHBsaWNhdGlvbkNhY2hlQWdlbnQoKSkgeworICAgICAgICBib29sIGlzTm93T25saW5lID0gbmV0
d29ya1N0YXRlTm90aWZpZXIoKS5vbkxpbmUoKTsKKyAgICAgICAgYXBwbGljYXRpb25DYWNoZUFn
ZW50LT51cGRhdGVOZXR3b3JrU3RhdGUoaXNOb3dPbmxpbmUpOworICAgIH0KK30KKwordm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXNJbXBs
KEluc3BlY3RvckNvbnRyb2xsZXIqIGljLCBGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCogYXBwbGljYXRpb25DYWNoZUFnZW50ID0gaWMtPmFw
cGxpY2F0aW9uQ2FjaGVBZ2VudCgpKSB7CisgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpT
dGF0dXMgc3RhdHVzID0gZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNh
dGlvbkNhY2hlSG9zdCgpLT5zdGF0dXMoKTsKKyAgICAgICAgYXBwbGljYXRpb25DYWNoZUFnZW50
LT51cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKHN0YXR1cyk7CisgICAgfQorfQorI2VuZGlm
CisKIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZChJbnNwZWN0b3JD
b250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKQogewogICAgIHJldHVybiBpbnNwZWN0b3JD
b250cm9sbGVyLT5oYXNGcm9udGVuZCgpOwpAQCAtNDkwLDYgKzU4OCwxMSBAQCBJbnNwZWN0b3JU
aW1lbGluZUFnZW50KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJldHJpZXZlVGltZWxpbmVB
Z2VudChjb25zdCBJbgogICAgIHJldHVybiAwOwogfQogCitJbnNwZWN0b3JSZXNvdXJjZUFnZW50
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJldHJpZXZlUmVzb3VyY2VBZ2VudChJbnNwZWN0
b3JDb250cm9sbGVyKiBpYykKK3sKKyAgICByZXR1cm4gaWMtPm1fcmVzb3VyY2VBZ2VudC5nZXQo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gIUVOQUJMRShJTlNQ
RUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgKaW5kZXggOWM2OTA1NThjZTcxNmFhMjcxOTllYjBiMzEwZDM4YjVjMTNhMzI4
MC4uM2I4NmIxOTJmYjQzM2M0MzZmNzg2ODVlNDZiZjdjNTBhNWRmNThkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAt
NDEsMTIgKzQxLDE1IEBAIGNsYXNzIENoYXJhY3RlckRhdGE7CiBjbGFzcyBEb2N1bWVudDsKIGNs
YXNzIEVsZW1lbnQ7CiBjbGFzcyBFdmVudENvbnRleHQ7CitjbGFzcyBEb2N1bWVudExvYWRlcjsK
IGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CitjbGFzcyBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OwogY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDsKIGNsYXNzIEtVUkw7CiBjbGFzcyBOb2Rl
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK2NsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBYTUxIdHRwUmVxdWVzdDsKIAogI2lmIEVO
QUJMRShXRUJfU09DS0VUUykKQEAgLTkwLDEwICs5MywyMCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgZGlkUGFpbnQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAg
ICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVjYWxjdWxhdGVT
dHlsZShEb2N1bWVudCopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGUoY29u
c3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CisKKyAgICBzdGF0aWMgdm9pZCBp
ZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGlj
IHZvaWQgd2lsbFNlbmRSZXF1ZXN0KEZyYW1lKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
KTsKKyAgICBzdGF0aWMgdm9pZCBtYXJrUmVzb3VyY2VBc0NhY2hlZChQYWdlKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVt
b3J5Q2FjaGUoUGFnZSosIERvY3VtZW50TG9hZGVyKiwgY29uc3QgQ2FjaGVkUmVzb3VyY2UqKTsK
ICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNlaXZlUmVz
b3VyY2VEYXRhKEZyYW1lKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICBzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VEYXRhKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSYpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2ls
bFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1lKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlk
UmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llJik7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVj
ZWl2ZVJlc291cmNlUmVzcG9uc2UoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3Vy
Y2VSZXNwb25zZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKEZyYW1lKiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpOworICAgIHN0YXRpYyB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRv
dWJsZSBmaW5pc2hUaW1lKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSos
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgIHN0
YXRpYyB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWdu
ZWQgc2VuZExpbmVOdW1iZXIpOworICAgIHN0YXRpYyB2b2lkIHNjcmlwdEltcG9ydGVkKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlU3RyaW5nKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIHdpbGxXcml0ZUhUTUwoRG9jdW1lbnQqLCB1bnNpZ25lZCBpbnQgbGVuZ3RoLCB1bnNpZ25l
ZCBpbnQgc3RhcnRMaW5lKTsKICAgICBzdGF0aWMgdm9pZCBkaWRXcml0ZUhUTUwoY29uc3QgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiwgdW5zaWduZWQgaW50IGVuZExpbmUpOwogCkBA
IC0xMDMsNyArMTE2LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UmKTsKICAg
ICBzdGF0aWMgdm9pZCBkaWRDbG9zZVdlYlNvY2tldChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICNlbmRpZgotCisgICAgc3RhdGljIHZvaWQgbmV0
d29ya1N0YXRlQ2hhbmdlZChQYWdlKik7CisjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FU
SU9OUykKKyAgICBzdGF0aWMgdm9pZCB1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKEZyYW1l
Kik7CisjZW5kaWYKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIHN0YXRpYyB2b2lkIGZyb250
ZW5kQ3JlYXRlZCgpIHsgc19mcm9udGVuZENvdW50ZXIgKz0gMTsgfQogICAgIHN0YXRpYyB2b2lk
IGZyb250ZW5kRGVsZXRlZCgpIHsgc19mcm9udGVuZENvdW50ZXIgLT0gMTsgfQpAQCAtMTQ3LDEw
ICsxNjMsMTkgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRQYWludEltcGwoY29uc3Qg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVjYWxjdWxhdGVTdHlsZUltcGwoSW5zcGVjdG9yQ29u
dHJvbGxlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGVJbXBsKGNvbnN0
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOworICAgIHN0YXRpYyB2b2lkIGlkZW50
aWZpZXJGb3JJbml0aWFsUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbXBsKEluc3BlY3RvckNvbnRyb2xs
ZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOworICAgIHN0YXRpYyB2b2lkIG1hcmtS
ZXNvdXJjZUFzQ2FjaGVkSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2Fj
aGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBEb2N1bWVudExvYWRlciosIGNvbnN0IENhY2hl
ZFJlc291cmNlKik7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3
aWxsUmVjZWl2ZVJlc291cmNlRGF0YUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlRGF0
YUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7Ci0gICAgc3RhdGlj
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9u
c2VJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llJik7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVj
ZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9p
ZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlcios
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlQ29u
dGVudExlbmd0aEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgaW50IGxlbmd0aFJlY2VpdmVkKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBk
b3VibGUgZmluaXNoVGltZSk7CisgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKElu
c3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKKyAgICBzdGF0aWMgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJl
cXVlc3RJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3Ry
aW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlcik7CisgICAgc3RhdGljIHZvaWQg
c2NyaXB0SW1wb3J0ZWRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKICAgICBzdGF0aWMgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxXcml0ZUhUTUxJbXBsKEluc3BlY3RvckNvbnRy
b2xsZXIqLCB1bnNpZ25lZCBpbnQgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgc3RhcnRMaW5lKTsKICAg
ICBzdGF0aWMgdm9pZCBkaWRXcml0ZUhUTUxJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSYsIHVuc2lnbmVkIGludCBlbmRMaW5lKTsKIApAQCAtMTYxLDYgKzE4NiwxMSBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZENsb3NlV2ViU29ja2V0SW1wbChJbnNwZWN0
b3JDb250cm9sbGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICNlbmRpZgogCisjaWYg
RU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKKyAgICBzdGF0aWMgdm9pZCBuZXR3b3Jr
U3RhdGVDaGFuZ2VkSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKik7CisgICAgc3RhdGljIHZvaWQg
dXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1c0ltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIEZy
YW1lKik7CisjZW5kaWYKKwogICAgIHN0YXRpYyBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyRm9yQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgc3Rh
dGljIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChE
b2N1bWVudCopOwogICAgIHN0YXRpYyBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyRm9yRnJhbWUoRnJhbWUqKTsKQEAgLTE3MSw2ICsyMDEsNyBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyB2b2lkIGNhbmNlbFBhdXNlT25OYXRpdmVFdmVudChJbnNwZWN0b3JDb250cm9sbGVy
Kik7CiAgICAgc3RhdGljIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHJldHJpZXZlVGltZWxpbmVB
Z2VudChJbnNwZWN0b3JDb250cm9sbGVyKik7CiAgICAgc3RhdGljIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIHJldHJpZXZlVGltZWxpbmVBZ2VudChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUmKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmV0cmlldmVS
ZXNvdXJjZUFnZW50KEluc3BlY3RvckNvbnRyb2xsZXIqKTsKIAogICAgIHN0YXRpYyBpbnQgc19m
cm9udGVuZENvdW50ZXI7CiAjZW5kaWYKQEAgLTQyOSw2ICs0NjAsMzkgQEAgaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNhbGN1bGF0ZVN0eWxlKGNvbnN0IEluc3Bl
Y3Rvckluc3RydW0KICNlbmRpZgogfQogCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChGcmFtZSogZnJhbWUsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgLy8gVGhpcyBu
b3RpZmljYXRpb24gc2hvdWxkIGJlIHByb2NlY2Vzc2VkIGV2ZW4gaW4gY2FzZXMgdGhlcmUgaXMg
bm8gZnJvbnRlbmQuCisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChJ
bnNwZWN0b3JDb250cm9sbGVyKiBpYyA9IGZyYW1lLT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xs
ZXIoKSkKKyAgICAgICAgaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0SW1wbChpYywgaWRlbnRp
ZmllciwgbG9hZGVyLCByZXF1ZXN0KTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChGcmFtZSogZnJhbWUsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisg
ICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZy
YW1lKGZyYW1lKSkKKyAgICAgICAgd2lsbFNlbmRSZXF1ZXN0SW1wbChpYywgaWRlbnRpZmllciwg
cmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptYXJrUmVzb3VyY2VBc0NhY2hlZChQYWdlKiBwYWdlLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBt
YXJrUmVzb3VyY2VBc0NhY2hlZEltcGwocGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBpZGVu
dGlmaWVyKTsgCisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoUGFnZSogcGFnZSwgRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQoreworI2lmIEVO
QUJMRShJTlNQRUNUT1IpCisgICAgZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlSW1wbChw
YWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIGxvYWRlciwgcmVzb3VyY2UpOworI2VuZGlmCit9
CisKIGlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlRGF0YShGcmFtZSogZnJhbWUsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcikKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpAQCAtNDU1LDExICs1
MTksNTEgQEAgaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3UKICAgICByZXR1cm4gSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llKCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoY29uc3QgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llJiBjb29raWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSYgY29va2llLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKGhhc0Zyb250ZW5kcygpICYmIGNvb2tpZS5maXJz
dCkKLSAgICAgICAgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKGNvb2tpZSk7CisgICAg
ICAgIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChjb29raWUsIGlkZW50aWZpZXIsIGxv
YWRlciwgcmVzcG9uc2UpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRnJhbWUqIGZyYW1lLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGludCBsZW5ndGhSZWNlaXZlZCkKK3sKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVy
ID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgZGlkUmVjZWl2
ZUNvbnRlbnRMZW5ndGhJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGlkZW50aWZpZXIsIGxlbmd0
aFJlY2VpdmVkKTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZpbmlzaExvYWRpbmcoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAg
aWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JD
b250cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQorICAgICAgICBkaWRGaW5pc2hMb2FkaW5nSW1wbChp
bnNwZWN0b3JDb250cm9sbGVyLCBpZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKKyNlbmRpZgorfQor
CitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKEZy
YW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1l
KGZyYW1lKSkKKyAgICAgICAgZGlkRmFpbExvYWRpbmdJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIs
IGlkZW50aWZpZXIsIGVycm9yKTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBz
ZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlcikKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
KQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gY29u
dGV4dC0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICByZXNvdXJjZVJldHJpZXZlZEJ5
WE1MSHR0cFJlcXVlc3RJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGlkZW50aWZpZXIsIHNvdXJj
ZVN0cmluZywgdXJsLCBzZW5kVVJMLCBzZW5kTGluZU51bWJlcik7CisjZW5kaWYKK30KKworaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlU3RyaW5nKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYg
KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBjb250ZXh0LT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgIHNjcmlwdEltcG9ydGVkSW1wbChpbnNwZWN0b3JD
b250cm9sbGVyLCBpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcpOwogI2VuZGlmCiB9CiAKQEAgLTUx
NCw2ICs2MTgsMjIgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRD
bG9zZVdlYlNvY2tldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KgogfQogI2VuZGlmCiAKK2lubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bmV0d29ya1N0YXRlQ2hhbmdlZChQYWdl
KiBwYWdlKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShPRkZMSU5FX1dFQl9B
UFBMSUNBVElPTlMpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRy
b2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yUGFnZShwYWdlKSkKKyAgICAgICAgbmV0d29y
a1N0YXRlQ2hhbmdlZEltcGwoaW5zcGVjdG9yQ29udHJvbGxlcik7CisjZW5kaWYKK30KKworI2lm
IEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCitp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnVwZGF0ZUFwcGxpY2F0aW9uQ2Fj
aGVTdGF0dXMoRnJhbWUqIGZyYW1lKQoreworICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBp
bnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkK
KyAgICAgICAgdXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1c0ltcGwoaW5zcGVjdG9yQ29udHJv
bGxlciwgZnJhbWUpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogaW5saW5l
IEluc3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVjdG9y
Q29udHJvbGxlckZvckNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmNwcAppbmRleCA5ZmM1NjJjNWY2YTBiYTAwN2EzMmFkYmU1ZWQ4MjRhYTQxYWRkYTkzLi5hNDI1
Nzk3OWNjZGJkNjNmMWU2Yzk3ZTZhOGUxZjhjMTE4MjAwOWZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC0yODMsNyAr
MjgzLDcgQEAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6fkluc3BlY3RvclJlc291cmNlQWdlbnQo
KQogewogfQogCi12b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmlkZW50aWZpZXJGb3JJbml0
aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmIHVybCwgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlcikKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6aWRlbnRp
ZmllckZvckluaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgS1VS
TCYgdXJsLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBib29sIGlzTWFpblJlc291cmNlKQogewog
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGxvYWRlck9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9y
RG9jdW1lbnRMb2FkZXIobG9hZGVyKTsKICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxs
U3RhY2sgPSBjcmVhdGVTY3JpcHRDYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3Rh
Y2tTaXplVG9DYXB0dXJlLCB0cnVlKTsKQEAgLTI5Miw3ICsyOTIsNyBAQCB2b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZQogICAgICAgICBjYWxsU3RhY2tWYWx1ZSA9IGNhbGxTdGFjay0+YnVpbGRJbnNw
ZWN0b3JPYmplY3QoKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxTdGFja1ZhbHVlID0gSW5zcGVj
dG9yVmFsdWU6Om51bGwoKTsKLSAgICBtX2Zyb250ZW5kLT5pZGVudGlmaWVyRm9ySW5pdGlhbFJl
cXVlc3QoaWRlbnRpZmllciwgdXJsLnN0cmluZygpLCBsb2FkZXJPYmplY3QsIGNhbGxTdGFja1Zh
bHVlKTsKKyAgICBtX2Zyb250ZW5kLT5pZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QoaWRlbnRp
ZmllciwgdXJsLnN0cmluZygpLCBsb2FkZXJPYmplY3QsIGlzTWFpblJlc291cmNlLCBjYWxsU3Rh
Y2tWYWx1ZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1
ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggMWU3N2Q1OGM4
NTM1YmQ3ZWE2NjM4ZDY2NDY0ZDM2ZDY5Zjg1ZTUxNS4uZjNmMzIxMWIyOTMwNmJiMjZmYzZjYzdk
N2MyZWNlYTljZTBlMWIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKIAogICAgIH5J
bnNwZWN0b3JSZXNvdXJjZUFnZW50KCk7CiAKLSAgICB2b2lkIGlkZW50aWZpZXJGb3JJbml0aWFs
UmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmLCBEb2N1bWVudExv
YWRlciopOworICAgIHZvaWQgaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYsIERvY3VtZW50TG9hZGVyKiwgYm9vbCBpc01haW5S
ZXNvdXJjZSk7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJl
c3BvbnNlKTsKICAgICB2b2lkIG1hcmtSZXNvdXJjZUFzQ2FjaGVkKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciogbGFvZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5jcHAKaW5kZXggNzQ3MzllMThkYWQ0NWUzYjY0MTg2NGU1NjNjNmI3NDY1MDk5NTgzNS4uMDgx
YTVmMGRiZjQzMGM5MDZjYWVkMzM3OTMzZGJkYmM2Y2JmN2IyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtMjA5LDEy
ICsyMDksMTEgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRTY2hlZHVsZVJlc291
cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCkKICAgICBhZGRSZWNvcmRUb1RpbWVsaW5lKHJl
Y29yZC5yZWxlYXNlKCksIFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0VGltZWxpbmVSZWNvcmRUeXBl
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsU2VuZFJlc291cmNlUmVx
dWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGJvb2wgaXNNYWluUmVzb3VyY2UsCi0gICAg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50Ojp3aWxsU2VuZFJlc291cmNlUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBwdXNoR0NFdmVudFJlY29yZHMo
KTsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQgPSBUaW1lbGluZVJlY29yZEZh
Y3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQoV1RGOjpjdXJyZW50VGltZU1TKCkpOwotICAgIHJl
Y29yZC0+c2V0T2JqZWN0KCJkYXRhIiwgVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVSZXNv
dXJjZVNlbmRSZXF1ZXN0RGF0YShpZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSwgcmVxdWVzdCkp
OworICAgIHJlY29yZC0+c2V0T2JqZWN0KCJkYXRhIiwgVGltZWxpbmVSZWNvcmRGYWN0b3J5Ojpj
cmVhdGVSZXNvdXJjZVNlbmRSZXF1ZXN0RGF0YShpZGVudGlmaWVyLCByZXF1ZXN0KSk7CiAgICAg
cmVjb3JkLT5zZXROdW1iZXIoInR5cGUiLCBSZXNvdXJjZVNlbmRSZXF1ZXN0VGltZWxpbmVSZWNv
cmRUeXBlKTsKICAgICBzZXRIZWFwU2l6ZVN0YXRpc3RpYyhyZWNvcmQuZ2V0KCkpOwogICAgIG1f
ZnJvbnRlbmQtPmFkZFJlY29yZFRvVGltZWxpbmUocmVjb3JkLnJlbGVhc2UoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCBi
YzFlMDI3YjRlNGZjYjQ2Y2UyMDRkZGQyOGE3Yjc1MzRiYzU3MTUxLi4zM2UyNzM3ZmM2Mjk5MzJl
NTIyNzBjMTA1YWVkMGYzMDQ4MzkyZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKQEAgLTExOSw3ICsxMTksNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkaWRNYXJrTG9hZEV2ZW50KCk7CiAKICAgICB2b2lkIGRpZFNjaGVkdWxlUmVz
b3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKTsKLSAgICB2b2lkIHdpbGxTZW5kUmVzb3Vy
Y2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGJvb2wgaXNNYWluUmVzb3VyY2UsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpOworICAgIHZvaWQgd2lsbFNlbmRSZXNvdXJjZVJlcXVlc3QodW5zaWduZWQg
bG9uZywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCB3aWxsUmVjZWl2ZVJlc291
cmNlUmVzcG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoKTsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmdSZXNvdXJjZSh1bnNpZ25lZCBsb25nLCBib29sIGRpZEZhaWwsIGRvdWJsZSBmaW5pc2hU
aW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29y
ZEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFj
dG9yeS5jcHAKaW5kZXggN2YzMzljZGVhMzNhNjE5Yjc4YjZmNDE0ODExZTEwZDE0NzdjZTQwMi4u
ZGQ3ZjJiZTUxMWViOTI0YjNhZDVjMzA4OWQyYzU3YzAxYzI3MWFhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKQEAgLTEyOSwx
MyArMTI5LDEyIEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZh
Y3Rvcnk6OmNyZWF0ZVNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0CiAgICAgcmV0dXJuIGRhdGEucmVs
ZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRG
YWN0b3J5OjpjcmVhdGVSZXNvdXJjZVNlbmRSZXF1ZXN0RGF0YSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGJvb2wgaXNNYWluUmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNy
ZWF0ZVJlc291cmNlU2VuZFJlcXVlc3REYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGRhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGRhdGEtPnNldE51bWJl
cigiaWRlbnRpZmllciIsIGlkZW50aWZpZXIpOwogICAgIGRhdGEtPnNldFN0cmluZygidXJsIiwg
cmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7CiAgICAgZGF0YS0+c2V0U3RyaW5nKCJyZXF1ZXN0TWV0
aG9kIiwgcmVxdWVzdC5odHRwTWV0aG9kKCkpOwotICAgIGRhdGEtPnNldEJvb2xlYW4oImlzTWFp
blJlc291cmNlIiwgaXNNYWluUmVzb3VyY2UpOwogICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3Jk
RmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9y
eS5oCmluZGV4IDVkNGNiNzc0M2YyZmQ4NjRkMmNiN2YwNjIzNWIzNTQ3YzlmYTczMjYuLmZhZmVh
ZTZmOGVhMjc0ODdjMTVmN2Y0NzIyZWJiNGVjMjAyNjkxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgKQEAgLTY0LDggKzY0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gY3JlYXRlTWFya1RpbWVsaW5lRGF0YShjb25zdCBTdHJpbmcmKTsKIAotICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVJlc291cmNlU2VuZFJl
cXVlc3REYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwKLSAgICAgICAgICAgIGJvb2wgaXNN
YWluUmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVJlc291cmNlU2VuZFJlcXVlc3REYXRhKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAKICAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVTY2hlZHVsZVJlc291
cmNlUmVxdWVzdERhdGEoY29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzCmluZGV4IGFkYjZjYTI3ZmMw
ZDdlMjMxODI5Mjg1ZGU0ZGI3YzM4MjQwYWM2NjguLjljOTM4MWIzODYyY2NlM2ExMDNiZmQwYzNj
YWUwOWI5NDIyNzU5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvTmV0d29ya01hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9OZXR3b3JrTWFuYWdlci5qcwpAQCAtODYsOSArODYsMTMgQEAgV2ViSW5zcGVjdG9y
Lk5ldHdvcmtNYW5hZ2VyLnVwZGF0ZVJlc291cmNlV2l0aENhY2hlZFJlc291cmNlID0gZnVuY3Rp
b24ocmVzb3VyY2UKIH0KIAogV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZSA9
IHsKLSAgICBpZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Q6IGZ1bmN0aW9uKGlkZW50aWZpZXIs
IHVybCwgbG9hZGVyLCBjYWxsU3RhY2spCisgICAgaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0
OiBmdW5jdGlvbihpZGVudGlmaWVyLCB1cmwsIGxvYWRlciwgaXNNYWluUmVzb3VyY2UsIGNhbGxT
dGFjaykKICAgICB7CiAgICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX2NyZWF0ZVJlc291cmNl
KGlkZW50aWZpZXIsIHVybCwgbG9hZGVyLCBjYWxsU3RhY2spOworICAgICAgICBpZiAoaXNNYWlu
UmVzb3VyY2UpIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5tYWluUmVzb3VyY2UgPSByZXNv
dXJjZTsKKyAgICAgICAgICAgIHJlc291cmNlLmlzTWFpblJlc291cmNlID0gdHJ1ZTsKKyAgICAg
ICAgfQogCiAgICAgICAgIC8vIEl0IGlzIGltcG9ydGFudCB0byBiaW5kIHJlc291cmNlIHVybCBl
YXJseSAoYmVmb3JlIHNjcmlwdHMgY29tcGlsZSkuCiAgICAgICAgIHRoaXMuX3Jlc291cmNlVHJl
ZU1vZGVsLmJpbmRSZXNvdXJjZVVSTChyZXNvdXJjZSk7CkBAIC0yMjYsMTQgKzIzMCw3IEBAIFdl
Ykluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgZGlkQ29tbWl0TG9h
ZEZvckZyYW1lOiBmdW5jdGlvbihmcmFtZSwgbG9hZGVyKQogICAgIHsKICAgICAgICAgdGhpcy5f
cmVzb3VyY2VUcmVlTW9kZWwuZGlkQ29tbWl0TG9hZEZvckZyYW1lKGZyYW1lLCBsb2FkZXIpOwot
ICAgICAgICBpZiAoIWZyYW1lLnBhcmVudElkKSB7Ci0gICAgICAgICAgICB2YXIgbWFpblJlc291
cmNlID0gdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwucmVzb3VyY2VGb3JVUkwoZnJhbWUudXJsKTsK
LSAgICAgICAgICAgIGlmIChtYWluUmVzb3VyY2UpIHsKLSAgICAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IubWFpblJlc291cmNlID0gbWFpblJlc291cmNlOwotICAgICAgICAgICAgICAgIG1haW5S
ZXNvdXJjZS5pc01haW5SZXNvdXJjZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShtYWluUmVzb3VyY2UpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5y
ZWZyZXNoUmVzb3VyY2UoV2ViSW5zcGVjdG9yLm1haW5SZXNvdXJjZSk7CiAgICAgfSwKIAogICAg
IGRpZENyZWF0ZVdlYlNvY2tldDogZnVuY3Rpb24oaWRlbnRpZmllciwgcmVxdWVzdFVSTCkKQEAg
LTI5OSw2ICsyOTYsMTEgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZSA9
IHsKICAgICAgICAgbmV3UmVzb3VyY2UucmVkaXJlY3RzID0gb3JpZ2luYWxSZXNvdXJjZS5yZWRp
cmVjdHMgfHwgW107CiAgICAgICAgIGRlbGV0ZSBvcmlnaW5hbFJlc291cmNlLnJlZGlyZWN0czsK
ICAgICAgICAgbmV3UmVzb3VyY2UucmVkaXJlY3RzLnB1c2gob3JpZ2luYWxSZXNvdXJjZSk7Cisg
ICAgICAgIGlmIChvcmlnaW5hbFJlc291cmNlLmlzTWFpblJlc291cmNlKSB7CisgICAgICAgICAg
ICBkZWxldGUgb3JpZ2luYWxSZXNvdXJjZS5pc01haW5SZXNvdXJjZTsKKyAgICAgICAgICAgIG5l
d1Jlc291cmNlLmlzTWFpblJlc291cmNlID0gdHJ1ZTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5tYWluUmVzb3VyY2UgPSBuZXdSZXNvdXJjZTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4g
bmV3UmVzb3VyY2U7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCmluZGV4IGE2NjFiNzU3YTIyYTRkMTk0MjE0M2Jl
NmZkMjRkYzM4MzM2NzA4N2MuLmFjY2EzODc0NjBjMjg3ZTliMDgyNWQxZjNlNDE2YjFhYWY1MzUw
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxp
bmVQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVs
aW5lUGFuZWwuanMKQEAgLTI5Nyw4ICsyOTcsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5l
bC5wcm90b3R5cGUgPSB7CiAKICAgICBhZGRSZWNvcmRUb1RpbWVsaW5lOiBmdW5jdGlvbihyZWNv
cmQpCiAgICAgewotICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT0gV2ViSW5zcGVjdG9yLlRpbWVs
aW5lQWdlbnQuUmVjb3JkVHlwZS5SZXNvdXJjZVNlbmRSZXF1ZXN0ICYmIHJlY29yZC5kYXRhLmlz
TWFpblJlc291cmNlKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5fbWFpblJlc291cmNlSWRlbnRp
ZmllciAhPSByZWNvcmQuZGF0YS5pZGVudGlmaWVyKSB7CisgICAgICAgIGlmIChyZWNvcmQudHlw
ZSA9PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlJlc291cmNlU2VuZFJl
cXVlc3QpIHsKKyAgICAgICAgICAgIHZhciBpc01haW5SZXNvdXJjZSA9IChyZWNvcmQuZGF0YS5p
ZGVudGlmaWVyID09PSBXZWJJbnNwZWN0b3IubWFpblJlc291cmNlLmlkZW50aWZpZXIpOworICAg
ICAgICAgICAgaWYgKGlzTWFpblJlc291cmNlICYmIHRoaXMuX21haW5SZXNvdXJjZUlkZW50aWZp
ZXIgIT09IHJlY29yZC5kYXRhLmlkZW50aWZpZXIpIHsKICAgICAgICAgICAgICAgICAvLyBXZSBh
cmUgbG9hZGluZyBuZXcgbWFpbiByZXNvdXJjZSAtPiBjbGVhciB0aGUgcGFuZWwuIENoZWNrIGFi
b3ZlIGlzIG5lY2Vzc2FyeSBzaW5jZQogICAgICAgICAgICAgICAgIC8vIHRoZXJlIG1heSBiZSBz
ZXZlcmFsIHJlc291cmNlIGxvYWRzIHdpdGggbWFpbiByZXNvdXJjZSBtYXJrZXIgdXBvbiByZWRp
cmVjdHMsIHJlZGlyZWN0cyBhcmUgcmVwb3J0ZWQgd2l0aAogICAgICAgICAgICAgICAgIC8vIHRo
ZSBvcmlnaW5hbCBpZGVudGlmaWVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
aW5kZXggMGRmOGRiNmZjZTVhMzIwMmM2ZGM2OWI4YTFhNjVlMmNmZTA3ODAyNi4uMzRmYTE5NWNh
OTZhNzY3YThjOWNjYjBiYjU5NTYyNjJjNmI0ZDQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCkBAIC03MCw2ICs3MCw3IEBACiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgi
CiAjaW5jbHVkZSAiSWNvbkxvYWRlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1haW5SZXNv
dXJjZUxvYWRlci5oIgpAQCAtMzA0OCw5ICszMDQ5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZGVkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXBhZ2UtPmFyZU1lbW9yeUNhY2hlQ2xpZW50
Q2FsbHNFbmFibGVkKCkpIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBwYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShtX2Rv
Y3VtZW50TG9hZGVyLmdldCgpLCByZXNvdXJjZSk7Ci0jZW5kaWYKKyAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUocGFnZSwgbV9k
b2N1bWVudExvYWRlci5nZXQoKSwgcmVzb3VyY2UpOwogICAgICAgICBtX2RvY3VtZW50TG9hZGVy
LT5yZWNvcmRNZW1vcnlDYWNoZUxvYWRGb3JGdXR1cmVDbGllbnROb3RpZmljYXRpb24ocmVzb3Vy
Y2UtPnVybCgpKTsKICAgICAgICAgbV9kb2N1bWVudExvYWRlci0+ZGlkVGVsbENsaWVudEFib3V0
TG9hZChyZXNvdXJjZS0+dXJsKCkpOwogICAgICAgICByZXR1cm47CkBAIC0zMDU4LDkgKzMwNTcs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShjb25z
dCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dChyZXNvdXJjZS0+dXJsKCkpOwogICAgIGlmIChtX2NsaWVudC0+ZGlzcGF0Y2hEaWRMb2FkUmVz
b3VyY2VGcm9tTWVtb3J5Q2FjaGUobV9kb2N1bWVudExvYWRlci5nZXQoKSwgcmVxdWVzdCwgcmVz
b3VyY2UtPnJlc3BvbnNlKCksIHJlc291cmNlLT5lbmNvZGVkU2l6ZSgpKSkgewotI2lmIEVOQUJM
RShJTlNQRUNUT1IpCi0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlkTG9h
ZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIHJlc291cmNl
KTsKLSNlbmRpZgorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExvYWRSZXNv
dXJjZUZyb21NZW1vcnlDYWNoZShwYWdlLCBtX2RvY3VtZW50TG9hZGVyLmdldCgpLCByZXNvdXJj
ZSk7CiAgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPmRpZFRlbGxDbGllbnRBYm91dExvYWQocmVz
b3VyY2UtPnVybCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTMwNjgsOSArMzA2NSw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKGNvbnN0
IENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXI7
CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICByZXF1ZXN0RnJvbURlbGVnYXRlKHJlcXVl
c3QsIGlkZW50aWZpZXIsIGVycm9yKTsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIHBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS0+bWFya1Jlc291cmNlQXNDYWNoZWQoaWRlbnRpZmllcik7
Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1hcmtSZXNvdXJjZUFzQ2Fj
aGVkKHBhZ2UsIGlkZW50aWZpZXIpOwogICAgIG5vdGlmaWVyKCktPnNlbmRSZW1haW5pbmdEZWxl
Z2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlc291cmNl
LT5yZXNwb25zZSgpLCByZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSwgZXJyb3IpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAppbmRleCBhMzZl
ZDk0MjljYzFlNzIyNGNkMjgzODA4ZGYxZWFkZTJlNzdkNjA4Li5jOTI4NTU3MTJkYmEwNjdhZjA5
MjE5MmY2NDdmY2YyZDc4ZWZmNWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWROb3RpZmllci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQu
aCIKLSNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlByb2dyZXNz
VHJhY2tlci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyLmgiCkBAIC05NywyMCArOTcsMTQg
QEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkRmFpbFRvTG9hZChSZXNvdXJjZUxvYWRl
ciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUUKICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQogICAg
ICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoRGlkRmFpbExvYWRpbmco
bG9hZGVyLT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50aWZpZXIoKSwgZXJyb3IpOwog
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBh
Z2UoKSkKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaWRGYWlsTG9hZGlu
Zyhsb2FkZXItPmlkZW50aWZpZXIoKSwgZXJyb3IpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhtX2ZyYW1lLCBsb2FkZXItPmlkZW50aWZpZXIo
KSwgZXJyb3IpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjphc3NpZ25JZGVudGlm
aWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBtX2Zy
YW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0
KGlkZW50aWZpZXIsIGxvYWRlciwgcmVxdWVzdCk7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQot
ICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQotICAgICAgICBwYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChpZGVudGlmaWVy
LCBsb2FkZXIsIHJlcXVlc3QpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QobV9mcmFtZSwgaWRlbnRpZmllciwgbG9hZGVy
LCByZXF1ZXN0KTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hXaWxs
U2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
ZGlyZWN0UmVzcG9uc2UpCkBAIC0xMjQsMTAgKzExOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90
aWZpZXI6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVu
c2lnCiAgICAgaWYgKCFyZXF1ZXN0LmlzTnVsbCgpICYmIG9sZFJlcXVlc3RVUkwgIT0gcmVxdWVz
dC51cmwoKS5zdHJpbmcoKS5pbXBsKCkpCiAgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1
bWVudExvYWRlcigpLT5kaWRUZWxsQ2xpZW50QWJvdXRMb2FkKHJlcXVlc3QudXJsKCkpOwogCi0j
aWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2Uo
KSkKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT53aWxsU2VuZFJlcXVlc3Qo
aWRlbnRpZmllciwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Ci0jZW5kaWYKKyAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChtX2ZyYW1lLCBpZGVudGlmaWVy
LCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKIAogICAgIC8vIFJlcG9ydCBXZWJUaW1pbmcg
Zm9yIGFsbCBmcmFtZXMuCiAgICAgaWYgKGxvYWRlciAmJiAhcmVxdWVzdC5pc051bGwoKSAmJiBy
ZXF1ZXN0LnVybCgpID09IGxvYWRlci0+cmVxdWVzdFVSTCgpKQpAQCAtMTM2LDMyICsxMjcsMjMg
QEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWcKIAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6
ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByKQogeworICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2ZyYW1lLCBpZGVudGlmaWVyLCBy
KTsKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoRGlkUmVjZWl2ZVJl
c3BvbnNlKGxvYWRlciwgaWRlbnRpZmllciwgcik7Ci0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQot
ICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQotICAgICAgICBwYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCBsb2FkZXIs
IHIpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVz
b3VyY2VSZXNwb25zZShjb29raWUsIGlkZW50aWZpZXIsIGxvYWRlciwgcik7CiB9CiAKIHZvaWQg
UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgbGVuZ3Ro
KQogewogICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hEaWRSZWNlaXZl
Q29udGVudExlbmd0aChsb2FkZXIsIGlkZW50aWZpZXIsIGxlbmd0aCk7CiAKLSNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQotICAgICAg
ICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGlk
ZW50aWZpZXIsIGxlbmd0aCk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKG1fZnJhbWUsIGlkZW50aWZpZXIsIGxlbmd0aCk7CiB9
CiAKIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhE
b2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBm
aW5pc2hUaW1lKQogewogICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hE
aWRGaW5pc2hMb2FkaW5nKGxvYWRlciwgaWRlbnRpZmllcik7CiAKLSNpZiBFTkFCTEUoSU5TUEVD
VE9SKQotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQotICAgICAgICBwYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllciwgZmlu
aXNoVGltZSk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlz
aExvYWRpbmcobV9mcmFtZSwgaWRlbnRpZmllciwgZmluaXNoVGltZSk7CiB9CiAKIHZvaWQgUmVz
b3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoVHJhbnNmZXJMb2FkaW5nUmVzb3VyY2VGcm9tUGFn
ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFnZSogb2xkUGFnZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGRlMzk5ODY2NWNiZWJhYzE0MGMzNGI4MDFm
YzVkNDYyMjc1ODBiNDEuLmVhMGQwMmE4ZjgzNDk0MzZhY2MyMWQyNWU0ZDJkNmFjZTU0NWI2Yjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNDIwLDkgKzQy
MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmCiAgICAgaWYgKGRvY3VtZW50TG9hZGVyKCkt
PmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UodGhp
cywgcmVzcG9uc2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKLSAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
UmVjZWl2ZVJlc291cmNlUmVzcG9uc2UobV9mcmFtZS5nZXQoKSwgaWRlbnRpZmllcigpLCByZXNw
b25zZSk7CiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKLSAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGNvb2tpZSk7CiB9CiAK
IHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgaW50IGxlbmd0aFJlY2VpdmVkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcAppbmRleCA2NDU0YjkwMzRjYTJhMDE0MTc3ZmQ1NTQ5ZDUwMmY4NzA1YWQ0M2IxLi44NTk1
NjM4NzliZTBhMjlhZDVlNmVlM2U4NjE5NDkyYjE0OTI0ZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApA
QCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk1haW5SZXNvdXJjZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIk1hbmlmZXN0UGFyc2VyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNDgsMTEgKzQ5
LDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
LSNpbmNsdWRlICJJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCIKLSNpbmNsdWRlICJJ
bnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCi0jZWxz
ZQotI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTM5NSwzMCArMzkyLDEzIEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpz
dG9wTG9hZGluZ0luRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgIHN0b3BMb2FkaW5nKCk7CiB9CiAK
LSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotc3RhdGljIHZvaWQgaW5zcGVjdG9yVXBkYXRlQXBwbGlj
YXRpb25DYWNoZVN0YXR1cyhGcmFtZSogZnJhbWUpCi17Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKFBhZ2UgKnBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7Ci0gICAg
ICAgIGlmIChJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQqIGFwcGxpY2F0aW9uQ2FjaGVB
Z2VudCA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YXBwbGljYXRpb25DYWNoZUFnZW50
KCkpIHsKLSAgICAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpTdGF0dXMgc3RhdHVzID0g
ZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgp
LT5zdGF0dXMoKTsKLSAgICAgICAgICAgIGFwcGxpY2F0aW9uQ2FjaGVBZ2VudC0+dXBkYXRlQXBw
bGljYXRpb25DYWNoZVN0YXR1cyhzdGF0dXMpOwotICAgICAgICB9Ci0gICAgfQotfQotI2VuZGlm
Ci0KIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZXROZXdlc3RDYWNoZShQYXNzUmVmUHRy
PEFwcGxpY2F0aW9uQ2FjaGU+IG5ld2VzdENhY2hlKQogewogICAgIG1fbmV3ZXN0Q2FjaGUgPSBu
ZXdlc3RDYWNoZTsKIAogICAgIG1fY2FjaGVzLmFkZChtX25ld2VzdENhY2hlLmdldCgpKTsKICAg
ICBtX25ld2VzdENhY2hlLT5zZXRHcm91cCh0aGlzKTsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQot
ICAgIGluc3BlY3RvclVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMobV9mcmFtZSk7Ci0jZW5k
aWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVT
dGF0dXMobV9mcmFtZSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjptYWtlT2Jz
b2xldGUoKQpAQCAtNDI5LDkgKzQwOSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpt
YWtlT2Jzb2xldGUoKQogICAgIG1faXNPYnNvbGV0ZSA9IHRydWU7CiAgICAgY2FjaGVTdG9yYWdl
KCkuY2FjaGVHcm91cE1hZGVPYnNvbGV0ZSh0aGlzKTsKICAgICBBU1NFUlQoIW1fc3RvcmFnZUlE
KTsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGluc3BlY3RvclVwZGF0ZUFwcGxpY2F0aW9u
Q2FjaGVTdGF0dXMobV9mcmFtZSk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMobV9mcmFtZSk7CiB9CiAKIHZvaWQgQXBw
bGljYXRpb25DYWNoZUdyb3VwOjp1cGRhdGUoRnJhbWUqIGZyYW1lLCBBcHBsaWNhdGlvbkNhY2hl
VXBkYXRlT3B0aW9uIHVwZGF0ZU9wdGlvbikKQEAgLTQ5NiwzNSArNDc0LDE5IEBAIFBhc3NSZWZQ
dHI8UmVzb3VyY2VIYW5kbGU+IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y3JlYXRlUmVzb3VyY2VI
YW5kbGUoY29uc3QgS1VSCiAgICAgLy8gQmVjYXVzZSB3aWxsU2VuZFJlcXVlc3Qgb25seSBnZXRz
IGNhbGxlZCBkdXJpbmcgcmVkaXJlY3RzLCB3ZSBpbml0aWFsaXplCiAgICAgLy8gdGhlIGlkZW50
aWZpZXIgYW5kIHRoZSBmaXJzdCB3aWxsU2VuZFJlcXVlc3QgaGVyZS4KICAgICBtX2N1cnJlbnRS
ZXNvdXJjZUlkZW50aWZpZXIgPSBtX2ZyYW1lLT5wYWdlKCktPnByb2dyZXNzKCktPmNyZWF0ZVVu
aXF1ZUlkZW50aWZpZXIoKTsKLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkg
ewotICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gcGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOwotICAgICAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5p
ZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QobV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCBt
X2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSwgaGFuZGxlLT5maXJzdFJlcXVlc3Qo
KSk7Ci0gICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSA9IFJlc291cmNl
UmVzcG9uc2UoKTsKLSAgICAgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+d2lsbFNlbmRSZXF1ZXN0
KG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7
Ci0gICAgfQorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aWRlbnRpZmllckZvckluaXRp
YWxSZXF1ZXN0KG1fZnJhbWUsIG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwgbV9mcmFtZS0+
bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCksIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkpOworICAg
IFJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoKTsK
KyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChtX2ZyYW1lLCBt
X2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwog
I2VuZGlmCiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi12
b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxl
KiwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlKQotewotICAgIC8vIFRoaXMgb25seSBnZXRzIGNhbGxlZCBieSBSZXNvdXJj
ZUhhbmRsZU1hYyBpZiB0aGVyZSBpcyBhIHJlZGlyZWN0LgotICAgIGlmIChQYWdlKiBwYWdlID0g
bV9mcmFtZS0+cGFnZSgpKQotICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPndp
bGxTZW5kUmVxdWVzdChtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIHJlcXVlc3QsIHJlZGly
ZWN0UmVzcG9uc2UpOwotfQotI2VuZGlmCi0KIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoUGFn
ZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICBpZiAoaGFuZGxlID09IG1fbWFu
aWZlc3RIYW5kbGUpIHsKLSAgICAgICAgICAgIGlmIChJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQqIGFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIo
KS0+YXBwbGljYXRpb25DYWNoZUFnZW50KCkpCi0gICAgICAgICAgICAgICAgYXBwbGljYXRpb25D
YWNoZUFnZW50LT5kaWRSZWNlaXZlTWFuaWZlc3RSZXNwb25zZShtX2N1cnJlbnRSZXNvdXJjZUlk
ZW50aWZpZXIsIHJlc3BvbnNlKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBwYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmRpZFJlY2VpdmVSZXNwb25zZShtX2N1cnJlbnRSZXNvdXJj
ZUlkZW50aWZpZXIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLCByZXNwb25z
ZSk7Ci0gICAgfQorICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSAoaGFuZGxlID09IG1fbWFu
aWZlc3RIYW5kbGUpID8gMCA6IG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpOwor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2ZyYW1lLCBtX2N1cnJl
bnRSZXNvdXJjZUlkZW50aWZpZXIsIHJlc3BvbnNlKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGNvb2tpZSwgbV9jdXJyZW50UmVzb3Vy
Y2VJZGVudGlmaWVyLCBsb2FkZXIsIHJlc3BvbnNlKTsKICNlbmRpZgogCiAgICAgaWYgKGhhbmRs
ZSA9PSBtX21hbmlmZXN0SGFuZGxlKSB7CkBAIC01OTMsMTIgKzU1NSw3IEBAIHZvaWQgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSwgY29uc3QgUmVzCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBp
bnQgbGVuZ3RoUmVjZWl2ZWQpCiB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoUGFn
ZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLT5kaWRSZWNlaXZlQ29udGVudExlbmd0aChtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZp
ZXIsIGxlbmd0aFJlY2VpdmVkKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGxlbmd0aFJlY2Vp
dmVkKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZUNv
bnRlbnRMZW5ndGgobV9mcmFtZSwgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCBsZW5ndGhS
ZWNlaXZlZCk7CiAKICAgICBpZiAoaGFuZGxlID09IG1fbWFuaWZlc3RIYW5kbGUpIHsKICAgICAg
ICAgZGlkUmVjZWl2ZU1hbmlmZXN0RGF0YShkYXRhLCBsZW5ndGgpOwpAQCAtNjE1LDEwICs1NzIs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSwgY29uc3QgY2hhciogZAogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBkb3VibGUgZmluaXNo
VGltZSkKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChQYWdlKiBwYWdlID0gbV9m
cmFtZS0+cGFnZSgpKQotICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpZEZp
bmlzaExvYWRpbmcobV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKLSNl
bmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhtX2Zy
YW1lLCBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOwogCiAgICAgaWYg
KGhhbmRsZSA9PSBtX21hbmlmZXN0SGFuZGxlKSB7CiAgICAgICAgIGRpZEZpbmlzaExvYWRpbmdN
YW5pZmVzdCgpOwpAQCAtNjU3LDEyICs2MTEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBkb3VibGUgZmluaQog
CiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9S
KQotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQotICAgICAgICBwYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmRpZEZhaWxMb2FkaW5nKG1fY3VycmVudFJlc291cmNlSWRl
bnRpZmllciwgZXJyb3IpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwotI2VuZGlm
CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhtX2ZyYW1lLCBt
X2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIGVycm9yKTsKIAogICAgIGlmIChoYW5kbGUgPT0g
bV9tYW5pZmVzdEhhbmRsZSkgewogICAgICAgICBjYWNoZVVwZGF0ZUZhaWxlZCgpOwpAQCAtMTE2
MSw5ICsxMTEwLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBvc3RMaXN0ZW5lclRh
c2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnQKIHZvaWQgQXBwbGljYXRpb25D
YWNoZUdyb3VwOjpzZXRVcGRhdGVTdGF0dXMoVXBkYXRlU3RhdHVzIHN0YXR1cykKIHsKICAgICBt
X3VwZGF0ZVN0YXR1cyA9IHN0YXR1czsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGluc3Bl
Y3RvclVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMobV9mcmFtZSk7Ci0jZW5kaWYKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMobV9m
cmFtZSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjbGVhclN0b3JhZ2VJRCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmgKaW5kZXggMjlkMDc0OWQ4ZjY3ZWM4OGViMjhjOWE4YjBiYTMwY2M1ZGJmY2U2
OS4uMmQ4YjgzZTFjNzQ4YTA5ZDAxNTg5Nzk0Njk5MjY3OTM1N2NlMzNiMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
aApAQCAtMTEwLDkgKzExMCw2IEBAIHByaXZhdGU6CiAgICAgLy8gdGhlIGV4aXN0aW5nIGNsaWVu
dCBjYWxsYmFjayBjYW5ub3QgYmUgdXNlZCwgc28gYXNzdW1lIHRoYXQgYW55IGNsaWVudCB0aGF0
IGVuYWJsZXMgYXBwbGljYXRpb24gY2FjaGUgYWxzbyB3YW50cyBpdCB0byB1c2UgY3JlZGVudGlh
bCBzdG9yYWdlLgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShS
ZXNvdXJjZUhhbmRsZSopIHsgcmV0dXJuIHRydWU7IH0KIAotI2lmIEVOQUJMRShJTlNQRUNUT1Ip
Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSNlbmRpZgogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFu
ZGxlKiwgY29uc3QgY2hhciosIGludCBsZW5ndGgsIGludCBsZW5ndGhSZWNlaXZlZCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUgZmlu
aXNoVGltZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAzNzE4ZDBhOWNkN2IyNWZhOTkxNDI4ZTk4
NmMzY2IwNWFkNzU3NDA2Li4zYTI0OGExOWY4NGMxYWY1YjkzMjEzNmUyMzQ2ZjI4YWEzMGJjZmQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJIVE1MRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29u
dHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJOYXZpZ2F0b3IuaCIKQEAgLTk0LDEwICs5NSw2IEBACiAjaW5jbHVkZSAiR2VvbG9jYXRp
b25Db250cm9sbGVyLmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJM
RShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCi0jaW5jbHVkZSAiSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50LmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMg
SGFzaFNldDxQYWdlKj4qIGFsbFBhZ2VzOwpAQCAtMTEwLDE5ICsxMDcsMTIgQEAgc3RhdGljIHZv
aWQgbmV0d29ya1N0YXRlQ2hhbmdlZCgpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxGcmFtZT4gPiBm
cmFtZXM7CiAgICAgCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKE9GRkxJTkVfV0VC
X0FQUExJQ0FUSU9OUykKLSAgICBib29sIGlzTm93T25saW5lID0gbmV0d29ya1N0YXRlTm90aWZp
ZXIoKS5vbkxpbmUoKTsKLSNlbmRpZgotCiAgICAgLy8gR2V0IGFsbCB0aGUgZnJhbWVzIG9mIGFs
bCB0aGUgcGFnZXMgaW4gYWxsIHRoZSBwYWdlIGdyb3VwcwogICAgIEhhc2hTZXQ8UGFnZSo+Ojpp
dGVyYXRvciBlbmQgPSBhbGxQYWdlcy0+ZW5kKCk7CiAgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6
aXRlcmF0b3IgaXQgPSBhbGxQYWdlcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAg
ICAgIGZvciAoRnJhbWUqIGZyYW1lID0gKCppdCktPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKICAgICAgICAgICAgIGZyYW1lcy5hcHBl
bmQoZnJhbWUpOwotI2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShPRkZMSU5FX1dFQl9B
UFBMSUNBVElPTlMpCi0gICAgICAgIGlmIChJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQq
IGFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA9ICgqaXQpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmFw
cGxpY2F0aW9uQ2FjaGVBZ2VudCgpKQotICAgICAgICAgICAgYXBwbGljYXRpb25DYWNoZUFnZW50
LT51cGRhdGVOZXR3b3JrU3RhdGUoaXNOb3dPbmxpbmUpOwotI2VuZGlmCisgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6bmV0d29ya1N0YXRlQ2hhbmdlZCgqaXQpOwogICAgIH0KIAog
ICAgIEF0b21pY1N0cmluZyBldmVudE5hbWUgPSBuZXR3b3JrU3RhdGVOb3RpZmllcigpLm9uTGlu
ZSgpID8gZXZlbnROYW1lcygpLm9ubGluZUV2ZW50IDogZXZlbnROYW1lcygpLm9mZmxpbmVFdmVu
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtl
clJlcG9zaXRvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29y
a2VyUmVwb3NpdG9yeS5jcHAKaW5kZXggNGE4ZTk0NzMxYmFhNjIwZGJlOWRmNWQzNDA5NzdiMDk5
YjBhMDY0NC4uM2ExNGI2MmRlNWMyNzVkYzE5NTFiYzU0OWNjMGQ5ZjllOTE1YjJiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9y
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVw
b3NpdG9yeS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3Qu
aCIKICNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgot
I2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJNZXNz
YWdlUG9ydC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCkBAIC0yOTEsMTAgKzI5MSw3
IEBAIHZvaWQgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpub3RpZnlGaW5pc2hlZCgpCiAgICAg
aWYgKG1fc2NyaXB0TG9hZGVyLT5mYWlsZWQoKSkKICAgICAgICAgbV93b3JrZXItPmRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIHRydWUp
KTsKICAgICBlbHNlIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBpZiAoSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yID0gbV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICAgICAgaW5zcGVjdG9yLT5zY3Jp
cHRJbXBvcnRlZChtX3NjcmlwdExvYWRlci0+aWRlbnRpZmllcigpLCBtX3NjcmlwdExvYWRlci0+
c2NyaXB0KCkpOwotI2VuZGlmCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2Ny
aXB0SW1wb3J0ZWQobV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV9zY3JpcHRM
b2FkZXItPmlkZW50aWZpZXIoKSwgbV9zY3JpcHRMb2FkZXItPnNjcmlwdCgpKTsKICAgICAgICAg
RGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6Omluc3RhbmNlKCkud29ya2VyU2NyaXB0TG9h
ZGVkKCptX3Byb3h5LCBtX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51c2VyQWdl
bnQobV9zY3JpcHRMb2FkZXItPnVybCgpKSwgbV9zY3JpcHRMb2FkZXItPnNjcmlwdCgpLCBtX3Bv
cnQucmVsZWFzZSgpKTsKICAgICB9CiAgICAgbV93b3JrZXItPnVuc2V0UGVuZGluZ0FjdGl2aXR5
KG1fd29ya2VyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAppbmRleCAzMmVjOTk3
NTYyYmY3MjI5ODI2MGMxNmFiYmY0OWNjOTc3M2FjN2U4Li44YTJmNjJhZTJhM2YxOGRjNzRkMjE2
ODhjZWQxNzExMWMwODdiYzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCkBAIC00MSw2
ICs0MSw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJUZXh0
RW5jb2RpbmcuaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0UHJveHkuaCIKQEAgLTEzNSwxMCAr
MTM2LDcgQEAgdm9pZCBXb3JrZXI6Om5vdGlmeUZpbmlzaGVkKCkKICAgICAgICAgZGlzcGF0Y2hF
dmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgdHJ1ZSkp
OwogICAgIGVsc2UgewogICAgICAgICBtX2NvbnRleHRQcm94eS0+c3RhcnRXb3JrZXJDb250ZXh0
KG1fc2NyaXB0TG9hZGVyLT51cmwoKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51c2VyQWdl
bnQobV9zY3JpcHRMb2FkZXItPnVybCgpKSwgbV9zY3JpcHRMb2FkZXItPnNjcmlwdCgpKTsKLSNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5z
cGVjdG9yID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkp
Ci0gICAgICAgICAgICBpbnNwZWN0b3ItPnNjcmlwdEltcG9ydGVkKG1fc2NyaXB0TG9hZGVyLT5p
ZGVudGlmaWVyKCksIG1fc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSk7Ci0jZW5kaWYKKyAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZChzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIG1fc2NyaXB0TG9hZGVyLT5pZGVudGlmaWVyKCksIG1fc2NyaXB0TG9hZGVyLT5z
Y3JpcHQoKSk7CiAgICAgfQogICAgIG1fc2NyaXB0TG9hZGVyID0gMDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKaW5kZXggMzQ1ZTViNzYwNDcyYmMxYjJmODJiOWM3
ZWM1NzljYzBkODBkNGQ1Yi4uNmM1MGYxYTIyNDczZDMxYThjMjdkZTgwNWYwMmRhZjBkYWFiZDM5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCkBAIC00Miw3ICs0
Miw3IEBACiAjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5j
bHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiS1VSTC5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
QEAgLTI0NSwxMCArMjQ1LDcgQEAgdm9pZCBXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgaWYg
KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvciA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICAgICAgaW5zcGVjdG9yLT5zY3JpcHRJ
bXBvcnRlZChzY3JpcHRMb2FkZXIuaWRlbnRpZmllcigpLCBzY3JpcHRMb2FkZXIuc2NyaXB0KCkp
OwotI2VuZGlmCisgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRl
ZChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNjcmlwdExvYWRlci5pZGVudGlmaWVyKCksIHNj
cmlwdExvYWRlci5zY3JpcHQoKSk7CiAKICAgICAgICAgU2NyaXB0VmFsdWUgZXhjZXB0aW9uOwog
ICAgICAgICBtX3NjcmlwdC0+ZXZhbHVhdGUoU2NyaXB0U291cmNlQ29kZShzY3JpcHRMb2FkZXIu
c2NyaXB0KCksICppdCksICZleGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAKaW5kZXggNTc4NjE3NjA4ODRkYTNiYTc4MDI3OWI5OGFjZThlZGU1NDVjYTkyNi4uZWU5
ZTIwZjExMmU3ODk4MjNmOGRhZGFjODNkZDgyYWFiZTkzNmFmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgogI2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgotI2luY2x1
ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXF1ZXN0LmgiCkBAIC05OTgsMTAgKzk5Nyw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZEZp
bmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogICAgIC8vIEZJWE1FOiBTZXQg
bV9yZXNwb25zZUJsb2IgdG8gc29tZXRoaW5nIGhlcmUgaW4gdGhlIFJlc3BvbnNlVHlwZUJsb2Ig
Y2FzZS4KICNlbmRpZgogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCkpCi0gICAgICAgIGluc3BlY3Rvci0+cmVzb3VyY2VSZXRyaWV2ZWRCeVhN
TEh0dHBSZXF1ZXN0KGlkZW50aWZpZXIsIG1fcmVzcG9uc2VCdWlsZGVyLnRvU3RyaW5nUHJlc2Vy
dmVDYXBhY2l0eSgpLCBtX3VybCwgbV9sYXN0U2VuZFVSTCwgbV9sYXN0U2VuZExpbmVOdW1iZXIp
OwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXNvdXJjZVJldHJpZXZl
ZEJ5WE1MSHR0cFJlcXVlc3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpZGVudGlmaWVyLCBt
X3Jlc3BvbnNlQnVpbGRlci50b1N0cmluZ1ByZXNlcnZlQ2FwYWNpdHkoKSwgbV91cmwsIG1fbGFz
dFNlbmRVUkwsIG1fbGFzdFNlbmRMaW5lTnVtYmVyKTsKIAogICAgIGJvb2wgaGFkTG9hZGVyID0g
bV9sb2FkZXI7CiAgICAgbV9sb2FkZXIgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYzk4ZjE1YmExZTFl
MTFhZDQ4ODRiNzAyMjljMTI3NThmMGI3MDA4Ni4uZDlkNTg2NTM5MTQ0YjJjMDE1MTliMWVkYzM0
NmJjZTc0MTE4Yjg3NSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAtMTItMjkg
IFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaW5zcGVjdG9yL3RpbWVsaW5lLW5ldHdv
cmstcmVzb3VyY2UuaHRtbCBmYWlscyB3aGVuIHJ1biB0d2ljZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzczOTQKKworICAgICAgICBTZW5kIGRpZFJl
Y2VpdmVSZXNwb25zZSBub3RpZmljYXRpb24gdG8gdGhlIHRpbWVsaW5lIGFnZW50IGZyb20gUmVz
b3VyY2VMb2FkTm90aWZpZXIKKyAgICAgICAgaW5zdGVhZCBvZiBSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlIHRvIGNvdmVyIHRoZSBjYXNlcyB3aGVuIHJlc291cmNlcworICAgICAg
ICBhcmUgbG9hZGVkIGZyb20gbWVtb3J5IGNhY2hlLgorCisgICAgICAgIE5ldHdvcmsgbm90aWZp
Y2F0aW9ucyBhcmUgbm93IHNlbnQgdG8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIHdoaWNoIGRp
c3BhdGNoZXMKKyAgICAgICAgdGhlbSB0byBpbnRlcmVzdGVkIGFnZW50cyBhbmQgSW5zcGVjdG9y
Q29udHJvbGxlci4KKworICAgICAgICAqIHNyYy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6bm90aWZ5RmluaXNo
ZWQpOgorICAgICAgICAqIHNyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJbXBsOjptYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6OndpbGxTZW5kUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJbXBsOjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJbXBsOjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlkRmluaXNoTG9hZGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJbXBsOjpkaWRGYWlsTG9hZGlu
Zyk6CisgICAgICAgICogc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmg6CisKIDIwMTEtMDEtMTEg
IFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBF
cmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU2hhcmVkV29ya2Vy
UmVwb3NpdG9yeS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NoYXJlZFdvcmtlclJlcG9zaXRv
cnkuY3BwCmluZGV4IDg4ZDNlYzU0ZmU4Nzg2ZWM1NDMyMDEzNDdiNTNkZGY3MGRjNTM1YmYuLjNk
NDQyOGFjNGE2NGZmOWFjOTMyNzEyMmI2ODJlNWQyYzE3MjU1NmYgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKKysrIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcApAQCAtMzYsNyArMzYsNyBAQAog
CiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAi
SW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgpAQCAtMTYyLDEwICsxNjIsNyBAQCB2b2lkIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6bm90
aWZ5RmluaXNoZWQoKQogICAgICAgICBtX3dvcmtlci0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgdHJ1ZSkpOwogICAgICAgICBkZWxl
dGUgdGhpczsKICAgICB9IGVsc2UgewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIGlm
IChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3IgPSBtX3dvcmtlci0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCi0gICAgICAgICAgICBpbnNwZWN0
b3ItPnNjcmlwdEltcG9ydGVkKG1fc2NyaXB0TG9hZGVyLmlkZW50aWZpZXIoKSwgbV9zY3JpcHRM
b2FkZXIuc2NyaXB0KCkpOwotI2VuZGlmCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6c2NyaXB0SW1wb3J0ZWQobV93b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV9z
Y3JpcHRMb2FkZXIuaWRlbnRpZmllcigpLCBtX3NjcmlwdExvYWRlci5zY3JpcHQoKSk7CiAgICAg
ICAgIC8vIFBhc3MgdGhlIHNjcmlwdCBvZmYgdG8gdGhlIHdvcmtlciwgdGhlbiBzZW5kIGEgY29u
bmVjdCBldmVudC4KICAgICAgICAgbV93ZWJXb3JrZXItPnN0YXJ0V29ya2VyQ29udGV4dChtX3Vy
bCwgbV9uYW1lLCBtX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51c2VyQWdlbnQo
bV91cmwpLCBtX3NjcmlwdExvYWRlci5zY3JpcHQoKSwgbV9yZXNwb25zZUFwcENhY2hlSUQpOwog
ICAgICAgICBzZW5kQ29ubmVjdCgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJEZXZUb29sc0FnZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xz
QWdlbnRJbXBsLmNwcAppbmRleCBkYmQ2ZGNhODQyNDIzODU0NTgxOTg2YzdhZmY0ZmExOWU0MWI0
OTQ5Li4xMWNlNzk3MzA4Y2ZlZjkxNzJkNTQxMWFhODlhN2MxNzk2M2M1MzA2IDEwMDY0NAotLS0g
YS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcAorKysgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcApAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNp
bmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpAQCAtNjks
NiArNzAsOCBAQCB1c2luZyBXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q7CiB1c2luZyBXZWJD
b3JlOjpJbnNwZWN0b3JBcnJheTsKIHVzaW5nIFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOwogdXNpbmcgV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjsKK3VzaW5nIFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjsKK3VzaW5nIFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZTsKIHVzaW5nIFdlYkNvcmU6Ok5vZGU7CiB1c2luZyBXZWJDb3Jl
OjpQYWdlOwogdXNpbmcgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjsKQEAgLTI2NiwyNSArMjY5LDMw
IEBAIFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpp
bnNwZWN0b3JDb250cm9sbGVyKCkKICAgICByZXR1cm4gMDsKIH0KIAorV2ViQ29yZTo6RnJhbWUq
IFdlYkRldlRvb2xzQWdlbnRJbXBsOjptYWluRnJhbWUoKQoreworICAgIGlmIChQYWdlKiBwYWdl
ID0gbV93ZWJWaWV3SW1wbC0+cGFnZSgpKQorICAgICAgICByZXR1cm4gcGFnZS0+bWFpbkZyYW1l
KCk7CisgICAgcmV0dXJuIDA7Cit9CisKIAogLy8tLS0tLS0tIHBsdWdpbiByZXNvdXJjZSBsb2Fk
IG5vdGlmaWNhdGlvbnMgLS0tLS0tLS0tLS0tLS0tCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBs
OjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QoCiAgICAgdW5zaWduZWQgbG9uZyByZXNvdXJj
ZUlkLAotICAgIFdlYkZyYW1lKiBmcmFtZSwKKyAgICBXZWJGcmFtZSogd2ViRnJhbWUsCiAgICAg
Y29uc3QgV2ViVVJMUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJv
bGxlciogaWMgPSBpbnNwZWN0b3JDb250cm9sbGVyKCkpIHsKLSAgICAgICAgV2ViRnJhbWVJbXBs
KiB3ZWJGcmFtZUltcGwgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUltcGwqPihmcmFtZSk7Ci0gICAg
ICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IHdlYkZyYW1lSW1wbC0+ZnJhbWUoKS0+bG9h
ZGVyKCk7Ci0gICAgICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBmcmFtZUxvYWRlci0+YWN0
aXZlRG9jdW1lbnRMb2FkZXIoKTsKLSAgICAgICAgaWMtPmlkZW50aWZpZXJGb3JJbml0aWFsUmVx
dWVzdChyZXNvdXJjZUlkLCBsb2FkZXIsIHJlcXVlc3QudG9SZXNvdXJjZVJlcXVlc3QoKSk7Ci0g
ICAgfQorICAgIFdlYkZyYW1lSW1wbCogd2ViRnJhbWVJbXBsID0gc3RhdGljX2Nhc3Q8V2ViRnJh
bWVJbXBsKj4od2ViRnJhbWUpOworICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSA9IHdlYkZyYW1l
SW1wbC0+ZnJhbWUoKTsKKyAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZnJhbWUtPmxvYWRl
cigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KGZyYW1lLCByZXNvdXJjZUlkLCBsb2FkZXIs
IHJlcXVlc3QudG9SZXNvdXJjZVJlcXVlc3QoKSk7CiB9CiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2Vu
dEltcGw6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIHJlc291cmNlSWQsIFdlYlVSTFJl
cXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW5z
cGVjdG9yQ29udHJvbGxlcigpKSB7Ci0gICAgICAgIGljLT53aWxsU2VuZFJlcXVlc3QocmVzb3Vy
Y2VJZCwgcmVxdWVzdC50b011dGFibGVSZXNvdXJjZVJlcXVlc3QoKSwgUmVzb3VyY2VSZXNwb25z
ZSgpKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3Qo
bWFpbkZyYW1lKCksIHJlc291cmNlSWQsIHJlcXVlc3QudG9NdXRhYmxlUmVzb3VyY2VSZXF1ZXN0
KCksIFJlc291cmNlUmVzcG9uc2UoKSk7CiAgICAgICAgIGlmIChpYy0+aGFzRnJvbnRlbmQoKSAm
JiByZXF1ZXN0LnJlcG9ydExvYWRUaW1pbmcoKSkKICAgICAgICAgICAgIHJlcXVlc3Quc2V0UmVw
b3J0UmF3SGVhZGVycyh0cnVlKTsKICAgICB9CkBAIC0yOTIsMjcgKzMwMCwyMyBAQCB2b2lkIFdl
YkRldlRvb2xzQWdlbnRJbXBsOjp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyByZXNvdXJj
ZUlkLCBXZWJVUkxSZXF1ZQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkaWRSZWNlaXZl
RGF0YSh1bnNpZ25lZCBsb25nIHJlc291cmNlSWQsIGludCBsZW5ndGgpCiB7Ci0gICAgaWYgKElu
c3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICBp
Yy0+ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgocmVzb3VyY2VJZCwgbGVuZ3RoKTsKKyAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKG1haW5GcmFtZSgp
LCByZXNvdXJjZUlkLCBsZW5ndGgpOwogfQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpk
aWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyByZXNvdXJjZUlkLCBjb25zdCBXZWJVUkxS
ZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0g
aW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICBpYy0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJl
c291cmNlSWQsIDAsIHJlc3BvbnNlLnRvUmVzb3VyY2VSZXNwb25zZSgpKTsKKyAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UobWFpbkZyYW1lKCksIHJlc291cmNlSWQsIHJl
c3BvbnNlLnRvUmVzb3VyY2VSZXNwb25zZSgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGNvb2tpZSwgcmVzb3VyY2VJZCwgMCwgcmVz
cG9uc2UudG9SZXNvdXJjZVJlc3BvbnNlKCkpOwogfQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJ
bXBsOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VJZCkKIHsKLSAgICBp
ZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaWMgPSBpbnNwZWN0b3JDb250cm9sbGVyKCkpCi0gICAg
ICAgIGljLT5kaWRGaW5pc2hMb2FkaW5nKHJlc291cmNlSWQsIDApOworICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhtYWluRnJhbWUoKSwgcmVzb3VyY2VJZCwg
MCk7CiB9CiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpZEZhaWxMb2FkaW5nKHVuc2ln
bmVkIGxvbmcgcmVzb3VyY2VJZCwgY29uc3QgV2ViVVJMRXJyb3ImIGVycm9yKQogewotICAgIFJl
c291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcjsKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aWMgPSBpbnNwZWN0b3JDb250cm9sbGVyKCkpCi0gICAgICAgIGljLT5kaWRGYWlsTG9hZGluZyhy
ZXNvdXJjZUlkLCByZXNvdXJjZUVycm9yKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEZhaWxMb2FkaW5nKG1haW5GcmFtZSgpLCByZXNvdXJjZUlkLCBlcnJvcik7CiB9CiAKIHZv
aWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6Omluc3BlY3RvckRlc3Ryb3llZCgpCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmggYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKaW5kZXggOWIzYzA1MzcyMzlkZDBhMGMx
Nzc0M2RmZGEzNTY2OTFlZDkzY2VmOS4uOGQ5N2FhNDc2NjhjYzY3Zjk0ZjZiOGY1ZDdhMjFhMTk4
NzI1ZDNiYiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50
SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaApA
QCAtMTAxLDYgKzEwMSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKCk7CisgICAgV2ViQ29yZTo6RnJh
bWUqIG1haW5GcmFtZSgpOwogCiAgICAgaW50IG1faG9zdElkOwogICAgIFdlYkRldlRvb2xzQWdl
bnRDbGllbnQqIG1fY2xpZW50Owo=
</data>
<flag name="review"
          id="70023"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78681</attachid>
            <date>2011-01-12 05:02:52 -0800</date>
            <delta_ts>2011-01-12 05:02:52 -0800</delta_ts>
            <desc>Patch that I&apos;m going to land.</desc>
            <filename>timeline-nw-resource.patch</filename>
            <type>text/plain</type>
            <size>79852</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyZjU2MzgzLi44NTEzMjUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMTIt
MjkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaW5zcGVjdG9yL3RpbWVsaW5lLW5l
dHdvcmstcmVzb3VyY2UuaHRtbCBmYWlscyB3aGVuIHJ1biB0d2ljZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzczOTQKKworICAgICAgICBTZW5kIGRp
ZFJlY2VpdmVSZXNwb25zZSBub3RpZmljYXRpb24gdG8gdGhlIHRpbWVsaW5lIGFnZW50IGZyb20g
UmVzb3VyY2VMb2FkTm90aWZpZXIKKyAgICAgICAgaW5zdGVhZCBvZiBSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlIHRvIGNvdmVyIHRoZSBjYXNlcyB3aGVuIHJlc291cmNlcworICAg
ICAgICBhcmUgbG9hZGVkIGZyb20gbWVtb3J5IGNhY2hlLgorCisgICAgICAgIE5ldHdvcmsgbm90
aWZpY2F0aW9ucyBhcmUgbm93IHNlbmQgdG8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIHdoaWNo
IGRpc3BhdGNoZXMKKyAgICAgICAgdGhlbSB0byBpbnRlcmVzdGVkIGFnZW50cyBhbmQgSW5zcGVj
dG9yQ29udHJvbGxlci4KKyAgICAgICAgZml4CisKKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxp
bmUtbmV0d29yay1yZXNvdXJjZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Rp
bWVsaW5lLW5ldHdvcmstcmVzb3VyY2UuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxp
bmUtbmV0d29yay1yZXNvdXJjZS5qczoKKwogMjAxMC0xMi0yNyAgU2hpbmljaGlybyBIYW1hamkg
IDxzaGluaWNoaXJvLmhhbWFqaUBnbWFpbC5jb20+CiAKICAgICAgICAgQ2hyb21pdW0gZXhwZWN0
YXRpb24gdXBkYXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5l
LW5ldHdvcmstcmVzb3VyY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Rp
bWVsaW5lLW5ldHdvcmstcmVzb3VyY2UtZXhwZWN0ZWQudHh0CmluZGV4IGQ5NDE4Y2EuLjkyNjk3
NzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1uZXR3b3JrLXJl
c291cmNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUt
bmV0d29yay1yZXNvdXJjZS1leHBlY3RlZC50eHQKQEAgLTgsNyArOCw2IEBAIFJlc291cmNlU2Vu
ZFJlcXVlc3QgUHJvcGVydGllczoKICAgICAgICAgaWRlbnRpZmllciA6IDxudW1iZXI+CiAgICAg
ICAgIHVybCA6IDxzdHJpbmc+CiAgICAgICAgIHJlcXVlc3RNZXRob2QgOiAiR0VUIgotICAgICAg
ICBpc01haW5SZXNvdXJjZSA6IGZhbHNlCiAgICAgfQogICAgIHR5cGUgOiAxMgogICAgIHVzZWRI
ZWFwU2l6ZSA6IDxudW1iZXI+CkBAIC0yMiw3ICsyMSw3IEBAIFJlc291cmNlUmVjZWl2ZVJlc3Bv
bnNlIFByb3BlcnRpZXM6CiAgICAgICAgIGlkZW50aWZpZXIgOiA8bnVtYmVyPgogICAgICAgICBz
dGF0dXNDb2RlIDogMAogICAgICAgICBtaW1lVHlwZSA6IDxzdHJpbmc+Ci0gICAgICAgIGV4cGVj
dGVkQ29udGVudExlbmd0aCA6IDIxMAorICAgICAgICBleHBlY3RlZENvbnRlbnRMZW5ndGggOiAy
MDgKICAgICAgICAgdXJsIDogPHN0cmluZz4KICAgICB9CiAgICAgY2hpbGRyZW4gOiA8b2JqZWN0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLW5ldHdvcmstcmVz
b3VyY2UuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1uZXR3b3JrLXJlc291
cmNlLmh0bWwKaW5kZXggZmUyOGVkMy4uNzI4NmZiNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3RpbWVsaW5lLW5ldHdvcmstcmVzb3VyY2UuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS5odG1sCkBAIC02LDE2ICs2LDE2
IEBACiAKIHZhciBzY3JpcHRVcmwgPSAidGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS5qcyI7CiAK
LWZ1bmN0aW9uIHJ1bkFmdGVyU2NyaXB0SXNFdmFsdWF0ZWQoY29udGludWF0aW9uKQorZnVuY3Rp
b24gcnVuQWZ0ZXJTY3JpcHRJc0V2YWx1YXRlZCgpCiB7Ci0gICAgZnVuY3Rpb24gc3RlcCgpCi0g
ICAgewotICAgICAgICBpZiAoIXdpbmRvdy5zY3JpcHRFdmFsdWF0ZWQpCi0gICAgICAgICAgICBz
ZXRUaW1lb3V0KHN0ZXAsIDEwMCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnRpbnVh
dGlvbigpOwotICAgIH0KLSAgICBzZXRUaW1lb3V0KHN0ZXAsIDEwMCk7CisgICAgcHJpbnRUaW1l
bGluZVJlY29yZHMobnVsbCwgbnVsbCwgZnVuY3Rpb24ocmVjb3JkKSB7CisgICAgICAgIGlmIChy
ZWNvcmQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJlY29yZFR5cGVbIlJlc291cmNlU2VuZFJlcXVl
c3QiXSkKKyAgICAgICAgICAgIHByaW50U2VuZChyZWNvcmQpOworICAgICAgICBlbHNlIGlmIChy
ZWNvcmQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJlY29yZFR5cGVbIlJlc291cmNlUmVjZWl2ZVJl
c3BvbnNlIl0pCisgICAgICAgICAgICBwcmludFJlY2VpdmUocmVjb3JkKTsKKyAgICAgICAgZWxz
ZSBpZiAocmVjb3JkLnR5cGUgPT09IHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBlWyJSZXNvdXJjZUZp
bmlzaCJdKQorICAgICAgICAgICAgcHJpbnRGaW5pc2gocmVjb3JkKTsKKyAgICB9KTsKIH0KIAog
ZnVuY3Rpb24gcHJpbnRSZWNvcmQocmVjb3JkKQpAQCAtNjAsMTcgKzYwLDYgQEAgZnVuY3Rpb24g
ZG9pdCgpCiAgICAgdmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIp
OwogICAgIHNjcmlwdC5zcmMgPSBzY3JpcHRVcmw7CiAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChzY3JpcHQpOwotICAgIHJ1bkFmdGVyU2NyaXB0SXNFdmFsdWF0ZWQoZnVuY3Rpb24oKSB7
Ci0gICAgICAgIHByaW50VGltZWxpbmVSZWNvcmRzKG51bGwsIG51bGwsIGZ1bmN0aW9uKHJlY29y
ZCkgewotICAgICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3Jk
VHlwZVsiUmVzb3VyY2VTZW5kUmVxdWVzdCJdKQotICAgICAgICAgICAgICAgIHByaW50U2VuZChy
ZWNvcmQpOwotICAgICAKLSAgICAgICAgICAgIGVsc2UgaWYgKHJlY29yZC50eXBlID09PSB0aW1l
bGluZUFnZW50UmVjb3JkVHlwZVsiUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2UiXSkKLSAgICAgICAg
ICAgICAgICBwcmludFJlY2VpdmUocmVjb3JkKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHJlY29y
ZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZVsiUmVzb3VyY2VGaW5pc2giXSkKLSAg
ICAgICAgICAgICAgICBwcmludEZpbmlzaChyZWNvcmQpOwotICAgICAgICB9KTsKLSAgICB9KTsK
IH0KIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxp
bmUtbmV0d29yay1yZXNvdXJjZS5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1u
ZXR3b3JrLXJlc291cmNlLmpzCmluZGV4IDZmZTBkMTguLmRlN2M3MjAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmpzCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmpzCkBAIC0zLDQg
KzMsNCBAQAogdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKIGVs
ZW1lbnQuaW5uZXJIVE1MID0gIlNjcmlwdCByZXNvdXJjZSBsb2FkZWQiOwogZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChlbGVtZW50KTsKLXdpbmRvdy5zY3JpcHRFdmFsdWF0ZWQgPSB0cnVlOwor
cnVuQWZ0ZXJTY3JpcHRJc0V2YWx1YXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDc1OTFhNjguLjU0MTdj
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MyBAQAorMjAxMC0xMi0yOSAgWXVyeSBTZW1pa2hh
dHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBpbnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS5o
dG1sIGZhaWxzIHdoZW4gcnVuIHR3aWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNzM5NAorCisgICAgICAgIFNlbmQgZGlkUmVjZWl2ZVJlc3BvbnNl
IG5vdGlmaWNhdGlvbiB0byB0aGUgdGltZWxpbmUgYWdlbnQgZnJvbSBSZXNvdXJjZUxvYWROb3Rp
ZmllcgorICAgICAgICBpbnN0ZWFkIG9mIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UgdG8gY292ZXIgdGhlIGNhc2VzIHdoZW4gcmVzb3VyY2VzCisgICAgICAgIGFyZSBsb2FkZWQg
ZnJvbSBtZW1vcnkgY2FjaGUuCisKKyAgICAgICAgTmV0d29yayBub3RpZmljYXRpb25zIGFyZSBu
b3cgc2VudCB0byBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gd2hpY2ggZGlzcGF0Y2hlcworICAg
ICAgICB0aGVtIHRvIGludGVyZXN0ZWQgYWdlbnRzIGFuZCBJbnNwZWN0b3JDb250cm9sbGVyLgor
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5pZGw6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmRpZFJlY2VpdmVNYW5pZmVzdFJlc3BvbnNl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1pdExvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRGYWlsTG9hZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZXNvdXJjZVJldHJpZXZl
ZEJ5WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlkZW50aWZpZXJG
b3JJbml0aWFsUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWRJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291cmNlRnJvbU1l
bW9yeUNhY2hlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlQ29udGVudExlbmd0aEltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2Fk
aW5nSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEZhaWxMb2FkaW5nSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdEltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZEltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXRyaWV2ZVJlc291
cmNlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aWRlbnRpZmll
ckZvckluaXRpYWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2
ZVJlc291cmNlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRSZWNlaXZlQ29udGVudExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlc291cmNlUmV0cmlldmVkQnlYTUxI
dHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnNjcmlwdEltcG9ydGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjppZGVu
dGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFNl
bmRSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVJlc291cmNl
U2VuZFJlcXVlc3REYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0
b3J5Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuaWRlbnRpZmll
ckZvckluaXRpYWxSZXF1ZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVs
aW5lUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5
cGUuYWRkUmVjb3JkVG9UaW1lbGluZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZEZhaWxUb0xvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmFzc2lnbklkZW50aWZp
ZXJUb0luaXRpYWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlm
aWVyOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5n
dGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlk
RmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6
c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdy
b3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y3JlYXRl
UmVzb3VyY2VIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZUdyb3VwOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUdyb3VwOjpkaWRGYWlsKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmg6CisgICAgICAgICogd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2Vy
UmVwb3NpdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2Fk
ZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlckNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6aW1w
b3J0U2NyaXB0cyk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKToKKwogMjAxMS0wMS0x
MSAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBOYXRlIENoYXBpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKaW5k
ZXggNTM1OWUxNi4uZWQwMGNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5p
ZGwKQEAgLTkxLDcgKzkxLDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBbZG9tYWluPU5ldHdv
cmtdIHZvaWQgcmVzb3VyY2VDb250ZW50KGluIHVuc2lnbmVkIGxvbmcgZnJhbWVJZCwgaW4gU3Ry
aW5nIHVybCwgaW4gYm9vbGVhbiBiYXNlNjRFbmNvZGUsIG91dCBTdHJpbmcgY29udGVudCk7CiAg
ICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIGZyYW1lRGV0YWNoZWRGcm9tUGFy
ZW50KG91dCB1bnNpZ25lZCBsb25nIGZyYW1lSWQpOwogCi0gICAgICAgIFtub3RpZnksIGRvbWFp
bj1OZXR3b3JrXSB2b2lkIGlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChvdXQgbG9uZyBpZGVu
dGlmaWVyLCBvdXQgU3RyaW5nIHVybCwgb3V0IE9iamVjdCBsb2FkZXIsIG91dCBWYWx1ZSBjYWxs
U3RhY2spOworICAgICAgICBbbm90aWZ5LCBkb21haW49TmV0d29ya10gdm9pZCBpZGVudGlmaWVy
Rm9ySW5pdGlhbFJlcXVlc3Qob3V0IGxvbmcgaWRlbnRpZmllciwgb3V0IFN0cmluZyB1cmwsIG91
dCBPYmplY3QgbG9hZGVyLCBvdXQgYm9vbGVhbiBpc01haW5SZXNvdXJjZUxvYWRlciwgb3V0IFZh
bHVlIGNhbGxTdGFjayk7CiAgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIHdp
bGxTZW5kUmVxdWVzdChvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgZG91YmxlIHRpbWUsIG91dCBP
YmplY3QgcmVxdWVzdCwgb3V0IE9iamVjdCByZWRpcmVjdFJlc3BvbnNlKTsKICAgICAgICAgW25v
dGlmeSwgZG9tYWluPU5ldHdvcmtdIHZvaWQgbWFya1Jlc291cmNlQXNDYWNoZWQob3V0IGxvbmcg
aWRlbnRpZmllcik7CiAgICAgICAgIFtub3RpZnksIGRvbWFpbj1OZXR3b3JrXSB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShvdXQgbG9uZyBpZGVudGlmaWVyLCBvdXQgZG91YmxlIHRpbWUsIG91dCBT
dHJpbmcgcmVzb3VyY2VUeXBlLCBvdXQgT2JqZWN0IHJlc3BvbnNlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dC5jcHAKaW5kZXggY2VkNjFjNS4uMWNjYTZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNp
bmNsdWRlICJOZXR3b3JrU3RhdGVOb3RpZmllci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAKQEAgLTQ2LDE4ICs0NywxNSBAQCBJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChJbnNw
ZWN0b3JDb250cm9sbAogewogfQogCi12b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dDo6ZGlkUmVjZWl2ZU1hbmlmZXN0UmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKLXsKLSAgICBtX2luc3BlY3RvckNvbnRy
b2xsZXItPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCAwLCByZXNwb25zZSk7Ci19Ci0K
LXZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojp1cGRhdGVBcHBsaWNhdGlvbkNh
Y2hlU3RhdHVzKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpTdGF0dXMgc3RhdHVzKQordm9pZCBJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMo
RnJhbWUqIGZyYW1lKQogeworICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpTdGF0dXMgc3RhdHVz
ID0gZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9z
dCgpLT5zdGF0dXMoKTsKICAgICBtX2Zyb250ZW5kLT51cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3Rh
dHVzKHN0YXR1cyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojp1
cGRhdGVOZXR3b3JrU3RhdGUoYm9vbCBpc05vd09ubGluZSkKK3ZvaWQgSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50OjpuZXR3b3JrU3RhdGVDaGFuZ2VkKCkKIHsKKyAgICBib29sIGlzTm93
T25saW5lID0gbmV0d29ya1N0YXRlTm90aWZpZXIoKS5vbkxpbmUoKTsKICAgICBtX2Zyb250ZW5k
LT51cGRhdGVOZXR3b3JrU3RhdGUoaXNOb3dPbmxpbmUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgK
aW5kZXggMTFmMTBjZS4uM2Q5ZTQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaApAQCAtMzMsNiArMzMs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEZyYW1lOwogY2xhc3MgSW5zcGVj
dG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOwogY2xhc3MgSW5zcGVjdG9yRnJv
bnRlbmQ7CkBAIC00Niw5ICs0Nyw4IEBAIHB1YmxpYzoKICAgICB+SW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50KCkgeyB9CiAKICAgICAvLyBCYWNrZW5kIHRvIEZyb250ZW5kCi0gICAgdm9p
ZCBkaWRSZWNlaXZlTWFuaWZlc3RSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIHVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVT
dGF0dXMoQXBwbGljYXRpb25DYWNoZUhvc3Q6OlN0YXR1cyk7Ci0gICAgdm9pZCB1cGRhdGVOZXR3
b3JrU3RhdGUoYm9vbCBpc05vd09ubGluZSk7CisgICAgdm9pZCB1cGRhdGVBcHBsaWNhdGlvbkNh
Y2hlU3RhdHVzKEZyYW1lKik7CisgICAgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiAKICAg
ICAvLyBGcm9tIEZyb250ZW5kCiAgICAgdm9pZCBnZXRBcHBsaWNhdGlvbkNhY2hlcyhSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+KiBhcHBsaWNhdGlvbkNhY2hlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggYjBiYWJkYy4uZWUxNTM2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcApAQCAtMTQwLDcgKzE0MCw2IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNv
bnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2Ns
aWVudChjbGllbnQpCiAgICAgLCBtX29wZW5pbmdGcm9udGVuZChmYWxzZSkKICAgICAsIG1fY3Nz
QWdlbnQobmV3IEluc3BlY3RvckNTU0FnZW50KCkpCi0gICAgLCBtX21haW5SZXNvdXJjZUlkZW50
aWZpZXIoMCkKICAgICAsIG1fZXhwaXJlZENvbnNvbGVNZXNzYWdlQ291bnQoMCkKICAgICAsIG1f
cHJldmlvdXNNZXNzYWdlKDApCiAgICAgLCBtX3NldHRpbmdzTG9hZGVkKGZhbHNlKQpAQCAtNzU5
LDcgKzc1OCw2IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0TG9hZChEb2N1
bWVudExvYWRlciogbG9hZGVyKQogI2VuZGlmCiAKICAgICAgICAgaWYgKG1fZnJvbnRlbmQpIHsK
LSAgICAgICAgICAgIG1fbWFpblJlc291cmNlSWRlbnRpZmllciA9IDA7CiAgICAgICAgICAgICBt
X2Zyb250ZW5kLT5kaWRDb21taXRMb2FkKCk7CiAgICAgICAgICAgICBtX2RvbUFnZW50LT5zZXRE
b2N1bWVudChtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpKTsKICAgICAg
ICAgfQpAQCAtNzc1LDMzICs3NzMsNiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmZyYW1l
RGV0YWNoZWRGcm9tUGFyZW50KEZyYW1lKiByb290RnJhbWUpCiAgICAgICAgIG1fcmVzb3VyY2VB
Z2VudC0+ZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQocm9vdEZyYW1lKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgY29uc3QgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQotewot
ICAgIGlmICghZW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBlbnN1cmVTZXR0aW5n
c0xvYWRlZCgpOwotCi0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAgICAgICAgbV9yZXNvdXJj
ZUFnZW50LT5kaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUobG9hZGVyLCBjYWNoZWRSZXNv
dXJjZSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aWRlbnRpZmllckZvckluaXRp
YWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQotewotICAgIGlmICghZW5hYmxlZCgp
KQotICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKG1faW5zcGVjdGVkUGFnZSk7Ci0KLSAgICBi
b29sIGlzTWFpblJlc291cmNlID0gaXNNYWluUmVzb3VyY2VMb2FkZXIobG9hZGVyLCByZXF1ZXN0
LnVybCgpKTsKLSAgICBpZiAoaXNNYWluUmVzb3VyY2UpCi0gICAgICAgIG1fbWFpblJlc291cmNl
SWRlbnRpZmllciA9IGlkZW50aWZpZXI7Ci0KLSAgICBlbnN1cmVTZXR0aW5nc0xvYWRlZCgpOwot
Ci0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAgICAgICAgbV9yZXNvdXJjZUFnZW50LT5pZGVu
dGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QoaWRlbnRpZmllciwgcmVxdWVzdC51cmwoKSwgbG9hZGVy
KTsKLX0KLQogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjptYWluUmVzb3VyY2VGaXJlZERPTUNv
bnRlbnRFdmVudChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAg
ICAgaWYgKCFlbmFibGVkKCkgfHwgIWlzTWFpblJlc291cmNlTG9hZGVyKGxvYWRlciwgdXJsKSkK
QEAgLTgyOSw3ICs4MDAsNyBAQCBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6OmlzTWFpblJlc291
cmNlTG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUgogICAgIHJldHVybiBs
b2FkZXItPmZyYW1lKCkgPT0gbV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSAmJiByZXF1ZXN0
VXJsID09IGxvYWRlci0+cmVxdWVzdFVSTCgpOwogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkK
K3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKIHsKICAgICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
ODQ1LDk1ICs4MTYsMzcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFJlcXVl
c3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXUKICAgICAgICAgICAgICAg
ICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQpOwogICAg
ICAgICB9CiAgICAgfQotCi0gICAgYm9vbCBpc01haW5SZXNvdXJjZSA9IG1fbWFpblJlc291cmNl
SWRlbnRpZmllciA9PSBpZGVudGlmaWVyOwotICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCi0gICAg
ICAgIG1fdGltZWxpbmVBZ2VudC0+d2lsbFNlbmRSZXNvdXJjZVJlcXVlc3QoaWRlbnRpZmllciwg
aXNNYWluUmVzb3VyY2UsIHJlcXVlc3QpOwotCi0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAg
ICAgICAgbV9yZXNvdXJjZUFnZW50LT53aWxsU2VuZFJlcXVlc3QoaWRlbnRpZmllciwgcmVxdWVz
dCwgcmVkaXJlY3RSZXNwb25zZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6bWFy
a1Jlc291cmNlQXNDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQordm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBpZiAoIWVuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAgICAgICAg
bV9yZXNvdXJjZUFnZW50LT5tYXJrUmVzb3VyY2VBc0NhY2hlZChpZGVudGlmaWVyKTsKLX0KLQot
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKLXsKLSAgICBpZiAoIWVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAgICAgICAgbV9yZXNvdXJjZUFnZW50LT5kaWRS
ZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgbG9hZGVyLCByZXNwb25zZSk7Ci0KICAgICBpZiAo
cmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApIHsKICAgICAgICAgU3RyaW5nIG1lc3Nh
Z2UgPSBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZTogdGhlIHNlcnZlciByZXNw
b25kZWQgd2l0aCBhIHN0YXR1cyBvZiAiLCBTdHJpbmc6Om51bWJlcihyZXNwb25zZS5odHRwU3Rh
dHVzQ29kZSgpKSwgIiAoIiwgcmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSwgJyknKTsKICAgICAg
ICAgYWRkQ29uc29sZU1lc3NhZ2UobmV3IENvbnNvbGVNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJj
ZSwgTmV0d29ya0Vycm9yTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBy
ZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgaWRlbnRpZmllcikpOwogICAgIH0KIH0KIAotdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZlQ29udGVudExlbmd0aCh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGludCBsZW5ndGhSZWNlaXZlZCkKLXsKLSAgICBpZiAoIWVuYWJsZWQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAgICAgICAgbV9y
ZXNvdXJjZUFnZW50LT5kaWRSZWNlaXZlQ29udGVudExlbmd0aChpZGVudGlmaWVyLCBsZW5ndGhS
ZWNlaXZlZCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmluaXNoTG9hZGlu
Zyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQotewotICAgIGlm
ICghZW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV90aW1lbGluZUFnZW50
KQotICAgICAgICBtX3RpbWVsaW5lQWdlbnQtPmRpZEZpbmlzaExvYWRpbmdSZXNvdXJjZShpZGVu
dGlmaWVyLCBmYWxzZSwgZmluaXNoVGltZSk7Ci0KLSAgICBpZiAobV9yZXNvdXJjZUFnZW50KQot
ICAgICAgICBtX3Jlc291cmNlQWdlbnQtPmRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllciwgZmlu
aXNoVGltZSk7Ci19Ci0KIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmFpbExvYWRpbmco
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsK
ICAgICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fdGltZWxp
bmVBZ2VudCkKLSAgICAgICAgbV90aW1lbGluZUFnZW50LT5kaWRGaW5pc2hMb2FkaW5nUmVzb3Vy
Y2UoaWRlbnRpZmllciwgdHJ1ZSwgMCk7Ci0KICAgICBTdHJpbmcgbWVzc2FnZSA9ICJGYWlsZWQg
dG8gbG9hZCByZXNvdXJjZSI7Ci0gICAgICAgIGlmICghZXJyb3IubG9jYWxpemVkRGVzY3JpcHRp
b24oKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtZXNzYWdlICs9ICI6ICIgKyBlcnJvci5sb2Nh
bGl6ZWREZXNjcmlwdGlvbigpOwotICAgICAgICBhZGRDb25zb2xlTWVzc2FnZShuZXcgQ29uc29s
ZU1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBOZXR3b3JrRXJyb3JNZXNzYWdlVHlwZSwgRXJy
b3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGVycm9yLmZhaWxpbmdVUkwoKSwgaWRlbnRpZmllcikp
OwotCi0gICAgaWYgKG1fcmVzb3VyY2VBZ2VudCkKLSAgICAgICAgbV9yZXNvdXJjZUFnZW50LT5k
aWRGYWlsTG9hZGluZyhpZGVudGlmaWVyLCBlcnJvcik7CisgICAgaWYgKCFlcnJvci5sb2NhbGl6
ZWREZXNjcmlwdGlvbigpLmlzRW1wdHkoKSkKKyAgICAgICAgbWVzc2FnZSArPSAiOiAiICsgZXJy
b3IubG9jYWxpemVkRGVzY3JpcHRpb24oKTsKKyAgICBhZGRDb25zb2xlTWVzc2FnZShuZXcgQ29u
c29sZU1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBOZXR3b3JrRXJyb3JNZXNzYWdlVHlwZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGVycm9yLmZhaWxpbmdVUkwoKSwgaWRlbnRpZmll
cikpOwogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc291cmNlUmV0cmlldmVkQnlY
TUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNp
Z25lZCBzZW5kTGluZU51bWJlcikKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzb3VyY2VS
ZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKQogewogICAgIGlmICghZW5hYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihJbnNwZWN0
b3JTdGF0ZTo6bW9uaXRvcmluZ1hIUikpCiAgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNN
ZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCAiWEhSIGZpbmlz
aGVkIGxvYWRpbmc6IFwiIiArIHVybCArICJcIi4iLCBzZW5kTGluZU51bWJlciwgc2VuZFVSTCk7
Ci0KLSAgICBpZiAobV9yZXNvdXJjZUFnZW50KQotICAgICAgICBtX3Jlc291cmNlQWdlbnQtPnNl
dEluaXRpYWxDb250ZW50KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZywgIlhIUiIpOwotfQotCi12
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNjcmlwdEltcG9ydGVkKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpCi17Ci0gICAgaWYgKCFlbmFibGVk
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX3Jlc291cmNlQWdlbnQpCi0gICAgICAg
IG1fcmVzb3VyY2VBZ2VudC0+c2V0SW5pdGlhbENvbnRlbnQoaWRlbnRpZmllciwgc291cmNlU3Ry
aW5nLCAiU2NyaXB0Iik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlU2V0
dGluZ3NMb2FkZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmgKaW5kZXggNDgxMzQ0ZC4uZmVmMmE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0xNTgsMjIgKzE1OCw5IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgZGlkQ29tbWl0TG9hZChEb2N1bWVudExvYWRlciopOwogICAgIHZvaWQg
ZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQoRnJhbWUqKTsKLSAgICB2b2lkIGRpZExvYWRSZXNvdXJj
ZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciosIGNvbnN0IENhY2hlZFJlc291cmNlKik7
Ci0KLSAgICB2b2lkIGlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKLSAgICB2
b2lkIG1hcmtSZXNvdXJjZUFzQ2FjaGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVu
dExvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVD
b250ZW50TGVuZ3RoKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGxlbmd0aFJlY2VpdmVk
KTsKLSAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBk
b3VibGUgZmluaXNoVGltZSk7Ci0gICAgdm9pZCBkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICB2b2lkIHJlc291cmNlUmV0
cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5k
VVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlcik7Ci0gICAgdm9pZCBzY3JpcHRJbXBvcnRlZCh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKIAog
ICAgIHZvaWQgc2V0RXh0cmFIZWFkZXJzKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pik7CiAK
LSAgICB2b2lkIGVuc3VyZVNldHRpbmdzTG9hZGVkKCk7Ci0KICAgICB2b2lkIHN0YXJ0VGltZWxp
bmVQcm9maWxlcigpOwogICAgIHZvaWQgc3RvcFRpbWVsaW5lUHJvZmlsZXIoKTsKICAgICBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50KCkgeyByZXR1cm4gbV90aW1lbGluZUFn
ZW50LmdldCgpOyB9CkBAIC0yNzcsMjEgKzI2NCwyNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGRlZmF1bHRBdHRhY2hlZEhlaWdodDsKIAogcHJpdmF0ZToKLSAgICB2b2lk
IGdldEluc3BlY3RvclN0YXRlKFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBzdGF0ZSk7Ci0gICAg
dm9pZCBzZXRDb25zb2xlTWVzc2FnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCk7Ci0KICAgICBmcmll
bmQgY2xhc3MgSW5zcGVjdG9yQmFja2VuZDsKICAgICBmcmllbmQgY2xhc3MgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI7CiAgICAgZnJpZW5kIGNsYXNzIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjsKICAgICBmcmllbmQgY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0OwogCisgICAgdm9pZCB3aWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Cisg
ICAgdm9pZCBkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlRXJyb3ImKTsKKyAgICB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVz
dChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5k
TGluZU51bWJlcik7CisKKyAgICB2b2lkIGVuc3VyZVNldHRpbmdzTG9hZGVkKCk7CisKKyAgICB2
b2lkIGdldEluc3BlY3RvclN0YXRlKFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBzdGF0ZSk7Cisg
ICAgdm9pZCBzZXRDb25zb2xlTWVzc2FnZXNFbmFibGVkKGJvb2wpOworCisgICAgdm9pZCBwb3B1
bGF0ZVNjcmlwdE9iamVjdHMoKTsKKyAgICB2b2lkIHJlc3RvcmVEZWJ1Z2dlcigpOwogICAgIGVu
dW0gUHJvZmlsZXJSZXN0b3JlQWN0aW9uIHsKICAgICAgICAgUHJvZmlsZXJSZXN0b3JlTm9BY3Rp
b24gPSAwLAogICAgICAgICBQcm9maWxlclJlc3RvcmVSZXNldEFnZW50ID0gMQogICAgIH07Ci0g
ICAgCi0gICAgdm9pZCBwb3B1bGF0ZVNjcmlwdE9iamVjdHMoKTsKLSAgICB2b2lkIHJlc3RvcmVE
ZWJ1Z2dlcigpOwogICAgIHZvaWQgcmVzdG9yZVByb2ZpbGVyKFByb2ZpbGVyUmVzdG9yZUFjdGlv
biBhY3Rpb24pOwogICAgIHZvaWQgdW5iaW5kQWxsUmVzb3VyY2VzKCk7CiAgICAgdm9pZCBzZXRT
ZWFyY2hpbmdGb3JOb2RlKGJvb2wgZW5hYmxlZCk7CkBAIC0zNDksNyArMzQyLDYgQEAgcHJpdmF0
ZToKIAogICAgIFJlZlB0cjxOb2RlPiBtX25vZGVUb0ZvY3VzOwogICAgIFJlZlB0cjxJbnNwZWN0
b3JSZXNvdXJjZUFnZW50PiBtX3Jlc291cmNlQWdlbnQ7Ci0gICAgdW5zaWduZWQgbG9uZyBtX21h
aW5SZXNvdXJjZUlkZW50aWZpZXI7CiAgICAgVmVjdG9yPE93blB0cjxDb25zb2xlTWVzc2FnZT4g
PiBtX2NvbnNvbGVNZXNzYWdlczsKICAgICB1bnNpZ25lZCBtX2V4cGlyZWRDb25zb2xlTWVzc2Fn
ZUNvdW50OwogICAgIEhhc2hNYXA8U3RyaW5nLCBkb3VibGU+IG1fdGltZXM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmlu
ZGV4IGYzYTczYmEuLjkzOTVkZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0zNCwxMSArMzQsMTQgQEAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAi
RG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50Q29u
dGV4dC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2Vu
dC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
IgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgpAQCAtMzcyLDYgKzM3NSw0MCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUmVjYWxjdWxhdGVTdHlsZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudAogICAgICAg
ICB0aW1lbGluZUFnZW50LT5kaWRSZWNhbGN1bGF0ZVN0eWxlKCk7CiB9CiAKK3ZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3RJbXBsKEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAo
IWljLT5lbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpYy0+ZW5zdXJlU2V0dGluZ3NM
b2FkZWQoKTsKKworICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50
ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGljKSkKKyAgICAgICAgcmVzb3VyY2VBZ2VudC0+aWRl
bnRpZmllckZvckluaXRpYWxSZXF1ZXN0KGlkZW50aWZpZXIsIHJlcXVlc3QudXJsKCksIGxvYWRl
ciwgaWMtPmlzTWFpblJlc291cmNlTG9hZGVyKGxvYWRlciwgcmVxdWVzdC51cmwoKSkpOworfQor
Cit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0SW1wbChJbnNw
ZWN0b3JDb250cm9sbGVyKiBpYywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2Up
Cit7CisgICAgaWMtPndpbGxTZW5kUmVxdWVzdChyZXF1ZXN0KTsKKyAgICBpZiAoSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpYykp
CisgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxTZW5kUmVzb3VyY2VSZXF1ZXN0KGlkZW50aWZp
ZXIsIHJlcXVlc3QpOworICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFn
ZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGljKSkKKyAgICAgICAgcmVzb3VyY2VBZ2VudC0+
d2lsbFNlbmRSZXF1ZXN0KGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwor
fQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWRJ
bXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit7
CisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2
ZVJlc291cmNlQWdlbnQoaWMpKQorICAgICAgICByZXNvdXJjZUFnZW50LT5tYXJrUmVzb3VyY2VB
c0NhY2hlZChpZGVudGlmaWVyKTsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciog
aWMsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IENhY2hlZFJlc291cmNlKiBjYWNoZWRS
ZXNvdXJjZSkKK3sKKyAgICBpZiAoIWljLT5lbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBpYy0+ZW5zdXJlU2V0dGluZ3NMb2FkZWQoKTsKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudCogcmVzb3VyY2VBZ2VudCA9IHJldHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisgICAgICAg
IHJlc291cmNlQWdlbnQtPmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShsb2FkZXIsIGNh
Y2hlZFJlc291cmNlKTsKK30KKwogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZURhdGFJbXBsKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
cikKIHsKICAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKQEAgLTQwMCwxMiArNDM3LDU0IEBA
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwCiAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZShpbnNwZWN0b3JDb250cm9sbGVyLCB0aW1lbGluZUFnZW50SWQpOwogfQogCi12
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJ
bXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llKQordm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChj
b25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKIHsKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpYyA9IGNvb2tpZS5m
aXJzdDsKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IHJl
dHJpZXZlUmVzb3VyY2VBZ2VudChpYykpCisgICAgICAgIHJlc291cmNlQWdlbnQtPmRpZFJlY2Vp
dmVSZXNwb25zZShpZGVudGlmaWVyLCBsb2FkZXIsIHJlc3BvbnNlKTsKKyAgICAvLyBGSVhNRSg1
MjI4Mik6IG1vdmUgdGhpcyB0byBjb25zb2xlIGFnZW50LgorICAgIGljLT5kaWRSZWNlaXZlUmVz
cG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCiAgICAg
ICAgIHRpbWVsaW5lQWdlbnQtPmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKCk7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlQ29udGVudExlbmd0aEltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciogaWMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGxl
bmd0aFJlY2VpdmVkKQoreworICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJj
ZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50KGljKSkKKyAgICAgICAgcmVzb3VyY2VBZ2Vu
dC0+ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoaWRlbnRpZmllciwgbGVuZ3RoUmVjZWl2ZWQpOwor
fQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZ0ltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciogaWMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91Ymxl
IGZpbmlzaFRpbWUpCit7CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5l
QWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaWMpKQorICAgICAgICB0aW1lbGluZUFnZW50
LT5kaWRGaW5pc2hMb2FkaW5nUmVzb3VyY2UoaWRlbnRpZmllciwgZmFsc2UsIGZpbmlzaFRpbWUp
OworICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmll
dmVSZXNvdXJjZUFnZW50KGljKSkKKyAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkRmluaXNoTG9h
ZGluZyhpZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEZhaWxMb2FkaW5nSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpYywgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAg
ICAvLyBGSVhNRSg1MjI4Mik6IG1vdmUgdGhpcyB0byBjb25zb2xlIGFnZW50LgorICAgIGljLT5k
aWRGYWlsTG9hZGluZyhpZGVudGlmaWVyLCBlcnJvcik7CisgICAgaWYgKEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaWMpKQorICAg
ICAgICB0aW1lbGluZUFnZW50LT5kaWRGaW5pc2hMb2FkaW5nUmVzb3VyY2UoaWRlbnRpZmllciwg
dHJ1ZSwgMCk7CisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQg
PSByZXRyaWV2ZVJlc291cmNlQWdlbnQoaWMpKQorICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRG
YWlsTG9hZGluZyhpZGVudGlmaWVyLCBlcnJvcik7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3RJbXBsKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGljLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1
bnNpZ25lZCBzZW5kTGluZU51bWJlcikKK3sKKyAgICBpYy0+cmVzb3VyY2VSZXRyaWV2ZWRCeVhN
TEh0dHBSZXF1ZXN0KHVybCwgc2VuZFVSTCwgc2VuZExpbmVOdW1iZXIpOworICAgIGlmIChJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gcmV0cmlldmVSZXNvdXJjZUFnZW50
KGljKSkKKyAgICAgICAgcmVzb3VyY2VBZ2VudC0+c2V0SW5pdGlhbENvbnRlbnQoaWRlbnRpZmll
ciwgc291cmNlU3RyaW5nLCAiWEhSIik7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpzY3JpcHRJbXBvcnRlZEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaWMsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpCit7CisgICAgaWYg
KEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSByZXRyaWV2ZVJlc291cmNl
QWdlbnQoaWMpKQorICAgICAgICByZXNvdXJjZUFnZW50LT5zZXRJbml0aWFsQ29udGVudChpZGVu
dGlmaWVyLCBzb3VyY2VTdHJpbmcsICJTY3JpcHQiKTsKK30KKwogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFdyaXRlSFRNTEltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgdW5zaWduZWQgaW50IGxl
bmd0aCwgdW5zaWduZWQgaW50IHN0YXJ0TGluZSkKIHsKICAgICBpbnQgdGltZWxpbmVBZ2VudElk
ID0gMDsKQEAgLTQ0NSw2ICs1MjQsMjAgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZENsb3NlV2ViU29ja2V0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWMKIH0KICNl
bmRpZgogCisjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKK3ZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpuZXR3b3JrU3RhdGVDaGFuZ2VkSW1wbChJbnNwZWN0b3JDb250
cm9sbGVyKiBpYykKK3sKKyAgICBpZiAoSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KiBh
cHBsaWNhdGlvbkNhY2hlQWdlbnQgPSBpYy0+YXBwbGljYXRpb25DYWNoZUFnZW50KCkpCisgICAg
ICAgIGFwcGxpY2F0aW9uQ2FjaGVBZ2VudC0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOworfQorCit2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1
c0ltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaWMsIEZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAo
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KiBhcHBsaWNhdGlvbkNhY2hlQWdlbnQgPSBp
Yy0+YXBwbGljYXRpb25DYWNoZUFnZW50KCkpCisgICAgICAgIGFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dC0+dXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhmcmFtZSk7Cit9CisjZW5kaWYKKwogYm9v
bCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kKEluc3BlY3RvckNvbnRyb2xs
ZXIqIGluc3BlY3RvckNvbnRyb2xsZXIpCiB7CiAgICAgcmV0dXJuIGluc3BlY3RvckNvbnRyb2xs
ZXItPmhhc0Zyb250ZW5kKCk7CkBAIC00OTAsNiArNTgzLDExIEBAIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0cmlldmVUaW1lbGluZUFnZW50KGNv
bnN0IEluCiAgICAgcmV0dXJuIDA7CiB9CiAKK0luc3BlY3RvclJlc291cmNlQWdlbnQqIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6cmV0cmlldmVSZXNvdXJjZUFnZW50KEluc3BlY3RvckNvbnRy
b2xsZXIqIGljKQoreworICAgIHJldHVybiBpYy0+bV9yZXNvdXJjZUFnZW50LmdldCgpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyAhRU5BQkxFKElOU1BFQ1RPUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaAppbmRleCA5YzY5MDU1Li4zYjg2YjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC00MSwxMiArNDEsMTUgQEAg
Y2xhc3MgQ2hhcmFjdGVyRGF0YTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNs
YXNzIEV2ZW50Q29udGV4dDsKK2NsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgSW5zcGVjdG9y
Q29udHJvbGxlcjsKK2NsYXNzIEluc3BlY3RvclJlc291cmNlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0
b3JUaW1lbGluZUFnZW50OwogY2xhc3MgS1VSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKIGNsYXNzIFhNTEh0dHBSZXF1ZXN0OwogCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRT
KQpAQCAtOTAsMTAgKzkzLDIwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRQYWludChj
b25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNhbGN1bGF0ZVN0eWxlKERvY3VtZW50Kik7
CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjYWxjdWxhdGVTdHlsZShjb25zdCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUmKTsKKworICAgIHN0YXRpYyB2b2lkIGlkZW50aWZpZXJGb3JJbml0
aWFsUmVxdWVzdChGcmFtZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOworICAgIHN0YXRpYyB2
b2lkIG1hcmtSZXNvdXJjZUFzQ2FjaGVkKFBhZ2UqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIp
OworICAgIHN0YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShQYWdlKiwg
RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0YXRpYyBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFJlY2VpdmVSZXNvdXJjZURhdGEoRnJhbWUq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVS
ZXNvdXJjZURhdGEoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7Ci0gICAg
c3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVjZWl2ZVJlc291cmNl
UmVzcG9uc2UoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VS
ZXNwb25zZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKKyAgICBzdGF0
aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNlaXZlUmVzb3VyY2VSZXNw
b25zZShGcmFtZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGNvbnN0
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGlj
IHZvaWQgZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGludCBsZW5ndGhSZWNlaXZlZCk7CisgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhGcmFtZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUp
OworICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKEZyYW1lKiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgc3RhdGljIHZvaWQgcmVzb3Vy
Y2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJl
cik7CisgICAgc3RhdGljIHZvaWQgc2NyaXB0SW1wb3J0ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcp
OwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFdyaXRlSFRN
TChEb2N1bWVudCosIHVuc2lnbmVkIGludCBsZW5ndGgsIHVuc2lnbmVkIGludCBzdGFydExpbmUp
OwogICAgIHN0YXRpYyB2b2lkIGRpZFdyaXRlSFRNTChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUmLCB1bnNpZ25lZCBpbnQgZW5kTGluZSk7CiAKQEAgLTEwMyw3ICsxMTYsMTAg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGRp
ZENsb3NlV2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIpOwogI2VuZGlmCi0KKyAgICBzdGF0aWMgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2Vk
KFBhZ2UqKTsKKyNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQorICAgIHN0YXRp
YyB2b2lkIHVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMoRnJhbWUqKTsKKyNlbmRpZgogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAgICAgc3RhdGljIHZvaWQgZnJvbnRlbmRDcmVhdGVkKCkgeyBz
X2Zyb250ZW5kQ291bnRlciArPSAxOyB9CiAgICAgc3RhdGljIHZvaWQgZnJvbnRlbmREZWxldGVk
KCkgeyBzX2Zyb250ZW5kQ291bnRlciAtPSAxOyB9CkBAIC0xNDcsMTAgKzE2MywxOSBAQCBwcml2
YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZFBhaW50SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIHdpbGxSZWNhbGN1bGF0ZVN0eWxlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKik7CiAgICAg
c3RhdGljIHZvaWQgZGlkUmVjYWxjdWxhdGVTdHlsZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llJik7CisgICAgc3RhdGljIHZvaWQgaWRlbnRpZmllckZvckluaXRpYWxS
ZXF1ZXN0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyB2
b2lkIHdpbGxTZW5kUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVkaXJlY3RSZXNwb25zZSk7CisgICAgc3RhdGljIHZvaWQgbWFya1Jlc291cmNlQXNDYWNoZWRJ
bXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOworICAg
IHN0YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUltcGwoSW5zcGVjdG9y
Q29udHJvbGxlciosIERvY3VtZW50TG9hZGVyKiwgY29uc3QgQ2FjaGVkUmVzb3VyY2UqKTsKICAg
ICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNlaXZlUmVzb3Vy
Y2VEYXRhSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbChjb25zdCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llIHdpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoSW5zcGVjdG9y
Q29udHJvbGxlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3Bv
bnNlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKKyAgICBzdGF0
aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNlaXZlUmVzb3VyY2VSZXNw
b25zZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNv
dXJjZVJlc3BvbnNlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVDb250ZW50TGVuZ3RoSW1wbChJ
bnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgbGVuZ3Ro
UmVjZWl2ZWQpOworICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmdJbXBsKEluc3BlY3Rv
ckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1l
KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZ0ltcGwoSW5zcGVjdG9yQ29udHJvbGxl
ciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAg
IHN0YXRpYyB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdEltcGwoSW5zcGVj
dG9yQ29udHJvbGxlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVu
c2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKKyAgICBzdGF0aWMgdm9pZCBzY3JpcHRJbXBvcnRlZElt
cGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VTdHJpbmcpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgd2lsbFdyaXRlSFRNTEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVk
IGludCBsZW5ndGgsIHVuc2lnbmVkIGludCBzdGFydExpbmUpOwogICAgIHN0YXRpYyB2b2lkIGRp
ZFdyaXRlSFRNTEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiwgdW5z
aWduZWQgaW50IGVuZExpbmUpOwogCkBAIC0xNjEsNiArMTg2LDExIEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIHZvaWQgZGlkQ2xvc2VXZWJTb2NrZXRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoT0ZGTElORV9X
RUJfQVBQTElDQVRJT05TKQorICAgIHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWRJbXBs
KEluc3BlY3RvckNvbnRyb2xsZXIqKTsKKyAgICBzdGF0aWMgdm9pZCB1cGRhdGVBcHBsaWNhdGlv
bkNhY2hlU3RhdHVzSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgRnJhbWUqKTsKKyNlbmRpZgor
CiAgICAgc3RhdGljIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXJGb3JD
b250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICBzdGF0aWMgSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KERvY3VtZW50Kik7CiAgICAg
c3RhdGljIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShG
cmFtZSopOwpAQCAtMTcxLDYgKzIwMSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgY2Fu
Y2VsUGF1c2VPbk5hdGl2ZUV2ZW50KEluc3BlY3RvckNvbnRyb2xsZXIqKTsKICAgICBzdGF0aWMg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCogcmV0cmlldmVUaW1lbGluZUFnZW50KEluc3BlY3RvckNv
bnRyb2xsZXIqKTsKICAgICBzdGF0aWMgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogcmV0cmlldmVU
aW1lbGluZUFnZW50KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOworICAg
IHN0YXRpYyBJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXRyaWV2ZVJlc291cmNlQWdlbnQoSW5z
cGVjdG9yQ29udHJvbGxlciopOwogCiAgICAgc3RhdGljIGludCBzX2Zyb250ZW5kQ291bnRlcjsK
ICNlbmRpZgpAQCAtNDI5LDYgKzQ2MCwzOSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlY2FsY3VsYXRlU3R5bGUoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bQogI2Vu
ZGlmCiB9CiAKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aWRlbnRpZmll
ckZvckluaXRpYWxSZXF1ZXN0KEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
Cit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICAvLyBUaGlzIG5vdGlmaWNhdGlvbiBzaG91
bGQgYmUgcHJvY2VjZXNzZWQgZXZlbiBpbiBjYXNlcyB0aGVyZSBpcyBubyBmcm9udGVuZC4KKyAg
ICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xs
ZXIqIGljID0gZnJhbWUtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICBp
ZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3RJbXBsKGljLCBpZGVudGlmaWVyLCBsb2FkZXIsIHJl
cXVlc3QpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbFNlbmRSZXF1ZXN0KEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9y
Q29udHJvbGxlciogaWMgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQorICAg
ICAgICB3aWxsU2VuZFJlcXVlc3RJbXBsKGljLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZWRpcmVj
dFJlc3BvbnNlKTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246Om1hcmtSZXNvdXJjZUFzQ2FjaGVkKFBhZ2UqIHBhZ2UsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcikKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIG1hcmtSZXNvdXJjZUFzQ2Fj
aGVkSW1wbChwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIGlkZW50aWZpZXIpOyAKKyNlbmRp
ZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExvYWRSZXNv
dXJjZUZyb21NZW1vcnlDYWNoZShQYWdlKiBwYWdlLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBj
b25zdCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikK
KyAgICBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVJbXBsKHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKSwgbG9hZGVyLCByZXNvdXJjZSk7CisjZW5kaWYKK30KKwogaW5saW5lIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxS
ZWNlaXZlUmVzb3VyY2VEYXRhKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCkBAIC00NTUsMTEgKzUxOSw1MSBAQCBpbmxpbmUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbFJlY2VpdmVSZXNvdQogICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUoKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUm
IGNvb2tpZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2
ZVJlc291cmNlUmVzcG9uc2UoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBj
b29raWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKICAgICBpZiAoaGFzRnJvbnRlbmRzKCkgJiYgY29va2llLmZpcnN0KQotICAgICAgICBkaWRS
ZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoY29va2llKTsKKyAgICAgICAgZGlkUmVjZWl2ZVJl
c291cmNlUmVzcG9uc2VJbXBsKGNvb2tpZSwgaWRlbnRpZmllciwgbG9hZGVyLCByZXNwb25zZSk7
CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZWNlaXZlQ29udGVudExlbmd0aChGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgaW50IGxlbmd0aFJlY2VpdmVkKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYg
KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250
cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQorICAgICAgICBkaWRSZWNlaXZlQ29udGVudExlbmd0aElt
cGwoaW5zcGVjdG9yQ29udHJvbGxlciwgaWRlbnRpZmllciwgbGVuZ3RoUmVjZWl2ZWQpOworI2Vu
ZGlmCit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNo
TG9hZGluZyhGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZp
bmlzaFRpbWUpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFt
ZShmcmFtZSkpCisgICAgICAgIGRpZEZpbmlzaExvYWRpbmdJbXBsKGluc3BlY3RvckNvbnRyb2xs
ZXIsIGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoRnJhbWUqIGZyYW1lLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworI2lm
IEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQorICAgICAg
ICBkaWRGYWlsTG9hZGluZ0ltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgaWRlbnRpZmllciwgZXJy
b3IpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VT
dHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVk
IHNlbmRMaW5lTnVtYmVyKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBjb250ZXh0LT5pbnNwZWN0b3JD
b250cm9sbGVyKCkpCisgICAgICAgIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdElt
cGwoaW5zcGVjdG9yQ29udHJvbGxlciwgaWRlbnRpZmllciwgc291cmNlU3RyaW5nLCB1cmwsIHNl
bmRVUkwsIHNlbmRMaW5lTnVtYmVyKTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VT
dHJpbmcpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGNvbnRleHQtPmluc3BlY3RvckNvbnRyb2xsZXIo
KSkKKyAgICAgICAgc2NyaXB0SW1wb3J0ZWRJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGlkZW50
aWZpZXIsIHNvdXJjZVN0cmluZyk7CiAjZW5kaWYKIH0KIApAQCAtNTE0LDYgKzYxOCwyMiBAQCBp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENsb3NlV2ViU29ja2V0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqCiB9CiAjZW5kaWYKIAoraW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpuZXR3b3JrU3RhdGVDaGFuZ2VkKFBhZ2UqIHBhZ2UpCit7CisjaWYg
RU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKKyAg
ICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3Rv
ckNvbnRyb2xsZXJGb3JQYWdlKHBhZ2UpKQorICAgICAgICBuZXR3b3JrU3RhdGVDaGFuZ2VkSW1w
bChpbnNwZWN0b3JDb250cm9sbGVyKTsKKyNlbmRpZgorfQorCisjaWYgRU5BQkxFKElOU1BFQ1RP
UikgJiYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKK2lubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6dXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhGcmFtZSog
ZnJhbWUpCit7CisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xs
ZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQorICAgICAgICB1cGRhdGVB
cHBsaWNhdGlvbkNhY2hlU3RhdHVzSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBmcmFtZSk7Cit9
CisjZW5kaWYKKwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiBpbmxpbmUgSW5zcGVjdG9yQ29udHJv
bGxlciogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnNwZWN0b3JDb250cm9sbGVyRm9yQ29u
dGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDlmYzU2
MmMuLmE0MjU3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50Ojp+SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgS1VSTCYgdXJsLCBEb2N1bWVudExvYWRlciogbG9hZGVyKQordm9p
ZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiB1cmwsIERvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIGJvb2wgaXNNYWluUmVzb3VyY2UpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gbG9hZGVyT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JEb2N1bWVudExvYWRlcihsb2FkZXIpOwog
ICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayA9IGNyZWF0ZVNjcmlwdENhbGxT
dGFjayhTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUsIHRydWUpOwpA
QCAtMjkyLDcgKzI5Miw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6aWRlbnRpZmll
ckZvckluaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllCiAgICAgICAgIGNhbGxT
dGFja1ZhbHVlID0gY2FsbFN0YWNrLT5idWlsZEluc3BlY3Rvck9iamVjdCgpOwogICAgIGVsc2UK
ICAgICAgICAgY2FsbFN0YWNrVmFsdWUgPSBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpOwotICAgIG1f
ZnJvbnRlbmQtPmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChpZGVudGlmaWVyLCB1cmwuc3Ry
aW5nKCksIGxvYWRlck9iamVjdCwgY2FsbFN0YWNrVmFsdWUpOworICAgIG1fZnJvbnRlbmQtPmlk
ZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChpZGVudGlmaWVyLCB1cmwuc3RyaW5nKCksIGxvYWRl
ck9iamVjdCwgaXNNYWluUmVzb3VyY2UsIGNhbGxTdGFja1ZhbHVlKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
ZGlyZWN0UmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuaAppbmRleCAxZTc3ZDU4Li5mM2YzMjExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKQEAgLTc3LDcgKzc3
LDcgQEAgcHVibGljOgogCiAgICAgfkluc3BlY3RvclJlc291cmNlQWdlbnQoKTsKIAotICAgIHZv
aWQgaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgS1VSTCYsIERvY3VtZW50TG9hZGVyKik7CisgICAgdm9pZCBpZGVudGlmaWVyRm9ySW5p
dGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiwgRG9jdW1l
bnRMb2FkZXIqLCBib29sIGlzTWFpblJlc291cmNlKTsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVz
dCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIHZvaWQgbWFya1Jlc291cmNlQXND
YWNoZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsYW9kZXIsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCA3NDczOWUxLi4wODFhNWYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
Y3BwCkBAIC0yMDksMTIgKzIwOSwxMSBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRp
ZFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKQogICAgIGFkZFJlY29y
ZFRvVGltZWxpbmUocmVjb3JkLnJlbGVhc2UoKSwgU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3RUaW1l
bGluZVJlY29yZFR5cGUpOwogfQogCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxT
ZW5kUmVzb3VyY2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgYm9vbCBpc01haW5S
ZXNvdXJjZSwKLSAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OndpbGxTZW5kUmVzb3VyY2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIHB1c2hH
Q0V2ZW50UmVjb3JkcygpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlY29yZCA9IFRp
bWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZChXVEY6OmN1cnJlbnRUaW1l
TVMoKSk7Ci0gICAgcmVjb3JkLT5zZXRPYmplY3QoImRhdGEiLCBUaW1lbGluZVJlY29yZEZhY3Rv
cnk6OmNyZWF0ZVJlc291cmNlU2VuZFJlcXVlc3REYXRhKGlkZW50aWZpZXIsIGlzTWFpblJlc291
cmNlLCByZXF1ZXN0KSk7CisgICAgcmVjb3JkLT5zZXRPYmplY3QoImRhdGEiLCBUaW1lbGluZVJl
Y29yZEZhY3Rvcnk6OmNyZWF0ZVJlc291cmNlU2VuZFJlcXVlc3REYXRhKGlkZW50aWZpZXIsIHJl
cXVlc3QpKTsKICAgICByZWNvcmQtPnNldE51bWJlcigidHlwZSIsIFJlc291cmNlU2VuZFJlcXVl
c3RUaW1lbGluZVJlY29yZFR5cGUpOwogICAgIHNldEhlYXBTaXplU3RhdGlzdGljKHJlY29yZC5n
ZXQoKSk7CiAgICAgbV9mcm9udGVuZC0+YWRkUmVjb3JkVG9UaW1lbGluZShyZWNvcmQucmVsZWFz
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5oCmluZGV4IGJjMWUwMjcuLjMzZTI3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtMTE5LDcgKzExOSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpZE1hcmtMb2FkRXZlbnQoKTsKIAogICAgIHZvaWQgZGlkU2NoZWR1
bGVSZXNvdXJjZVJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpOwotICAgIHZvaWQgd2lsbFNlbmRS
ZXNvdXJjZVJlcXVlc3QodW5zaWduZWQgbG9uZywgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCB3aWxsU2VuZFJlc291cmNlUmVxdWVzdCh1bnNp
Z25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIHdpbGxSZWNlaXZl
UmVzb3VyY2VSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZSgpOwogICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZ1Jlc291cmNlKHVuc2lnbmVkIGxvbmcsIGJvb2wgZGlkRmFpbCwgZG91YmxlIGZp
bmlzaFRpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5l
UmVjb3JkRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNv
cmRGYWN0b3J5LmNwcAppbmRleCA3ZjMzOWNkLi5kZDdmMmJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcApAQCAtMTI5LDEzICsx
MjksMTIgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9y
eTo6Y3JlYXRlU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3QKICAgICByZXR1cm4gZGF0YS5yZWxlYXNl
KCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rv
cnk6OmNyZWF0ZVJlc291cmNlU2VuZFJlcXVlc3REYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQor
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRl
UmVzb3VyY2VTZW5kUmVxdWVzdERhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
ZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgZGF0YS0+c2V0TnVtYmVyKCJp
ZGVudGlmaWVyIiwgaWRlbnRpZmllcik7CiAgICAgZGF0YS0+c2V0U3RyaW5nKCJ1cmwiLCByZXF1
ZXN0LnVybCgpLnN0cmluZygpKTsKICAgICBkYXRhLT5zZXRTdHJpbmcoInJlcXVlc3RNZXRob2Qi
LCByZXF1ZXN0Lmh0dHBNZXRob2QoKSk7Ci0gICAgZGF0YS0+c2V0Qm9vbGVhbigiaXNNYWluUmVz
b3VyY2UiLCBpc01haW5SZXNvdXJjZSk7CiAgICAgcmV0dXJuIGRhdGEucmVsZWFzZSgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0
b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgK
aW5kZXggNWQ0Y2I3Ny4uZmFmZWFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaApAQCAtNjQsOCArNjQsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVh
dGVNYXJrVGltZWxpbmVEYXRhKGNvbnN0IFN0cmluZyYpOwogCi0gICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlUmVzb3VyY2VTZW5kUmVxdWVzdERhdGEodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLAotICAgICAgICAgICAgYm9vbCBpc01haW5SZXNvdXJjZSwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gY3JlYXRlUmVzb3VyY2VTZW5kUmVxdWVzdERhdGEodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIAogICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0RGF0
YShjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMKaW5kZXggYWRiNmNhMi4uOWM5MzgxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2Vy
LmpzCkBAIC04Niw5ICs4NiwxMyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIudXBkYXRl
UmVzb3VyY2VXaXRoQ2FjaGVkUmVzb3VyY2UgPSBmdW5jdGlvbihyZXNvdXJjZQogfQogCiBXZWJJ
bnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlID0gewotICAgIGlkZW50aWZpZXJGb3JJ
bml0aWFsUmVxdWVzdDogZnVuY3Rpb24oaWRlbnRpZmllciwgdXJsLCBsb2FkZXIsIGNhbGxTdGFj
aykKKyAgICBpZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Q6IGZ1bmN0aW9uKGlkZW50aWZpZXIs
IHVybCwgbG9hZGVyLCBpc01haW5SZXNvdXJjZSwgY2FsbFN0YWNrKQogICAgIHsKICAgICAgICAg
dmFyIHJlc291cmNlID0gdGhpcy5fY3JlYXRlUmVzb3VyY2UoaWRlbnRpZmllciwgdXJsLCBsb2Fk
ZXIsIGNhbGxTdGFjayk7CisgICAgICAgIGlmIChpc01haW5SZXNvdXJjZSkgeworICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLm1haW5SZXNvdXJjZSA9IHJlc291cmNlOworICAgICAgICAgICAgcmVz
b3VyY2UuaXNNYWluUmVzb3VyY2UgPSB0cnVlOworICAgICAgICB9CiAKICAgICAgICAgLy8gSXQg
aXMgaW1wb3J0YW50IHRvIGJpbmQgcmVzb3VyY2UgdXJsIGVhcmx5IChiZWZvcmUgc2NyaXB0cyBj
b21waWxlKS4KICAgICAgICAgdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwuYmluZFJlc291cmNlVVJM
KHJlc291cmNlKTsKQEAgLTIyNiwxNCArMjMwLDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5h
Z2VyLnByb3RvdHlwZSA9IHsKICAgICBkaWRDb21taXRMb2FkRm9yRnJhbWU6IGZ1bmN0aW9uKGZy
YW1lLCBsb2FkZXIpCiAgICAgewogICAgICAgICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5kaWRD
b21taXRMb2FkRm9yRnJhbWUoZnJhbWUsIGxvYWRlcik7Ci0gICAgICAgIGlmICghZnJhbWUucGFy
ZW50SWQpIHsKLSAgICAgICAgICAgIHZhciBtYWluUmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZVRy
ZWVNb2RlbC5yZXNvdXJjZUZvclVSTChmcmFtZS51cmwpOwotICAgICAgICAgICAgaWYgKG1haW5S
ZXNvdXJjZSkgewotICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5tYWluUmVzb3VyY2UgPSBt
YWluUmVzb3VyY2U7Ci0gICAgICAgICAgICAgICAgbWFpblJlc291cmNlLmlzTWFpblJlc291cmNl
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVm
cmVzaFJlc291cmNlKG1haW5SZXNvdXJjZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAg
ICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShXZWJJbnNw
ZWN0b3IubWFpblJlc291cmNlKTsKICAgICB9LAogCiAgICAgZGlkQ3JlYXRlV2ViU29ja2V0OiBm
dW5jdGlvbihpZGVudGlmaWVyLCByZXF1ZXN0VVJMKQpAQCAtMjk5LDYgKzI5NiwxMSBAQCBXZWJJ
bnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICBuZXdSZXNvdXJj
ZS5yZWRpcmVjdHMgPSBvcmlnaW5hbFJlc291cmNlLnJlZGlyZWN0cyB8fCBbXTsKICAgICAgICAg
ZGVsZXRlIG9yaWdpbmFsUmVzb3VyY2UucmVkaXJlY3RzOwogICAgICAgICBuZXdSZXNvdXJjZS5y
ZWRpcmVjdHMucHVzaChvcmlnaW5hbFJlc291cmNlKTsKKyAgICAgICAgaWYgKG9yaWdpbmFsUmVz
b3VyY2UuaXNNYWluUmVzb3VyY2UpIHsKKyAgICAgICAgICAgIGRlbGV0ZSBvcmlnaW5hbFJlc291
cmNlLmlzTWFpblJlc291cmNlOworICAgICAgICAgICAgbmV3UmVzb3VyY2UuaXNNYWluUmVzb3Vy
Y2UgPSB0cnVlOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLm1haW5SZXNvdXJjZSA9IG5ld1Jl
c291cmNlOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBuZXdSZXNvdXJjZTsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5l
UGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFu
ZWwuanMKaW5kZXggYTY2MWI3NS4uYWNjYTM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwpAQCAtMjk3LDggKzI5Nyw5IEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIGFkZFJlY29y
ZFRvVGltZWxpbmU6IGZ1bmN0aW9uKHJlY29yZCkKICAgICB7Ci0gICAgICAgIGlmIChyZWNvcmQu
dHlwZSA9PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlJlc291cmNlU2Vu
ZFJlcXVlc3QgJiYgcmVjb3JkLmRhdGEuaXNNYWluUmVzb3VyY2UpIHsKLSAgICAgICAgICAgIGlm
ICh0aGlzLl9tYWluUmVzb3VyY2VJZGVudGlmaWVyICE9IHJlY29yZC5kYXRhLmlkZW50aWZpZXIp
IHsKKyAgICAgICAgaWYgKHJlY29yZC50eXBlID09IFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50
LlJlY29yZFR5cGUuUmVzb3VyY2VTZW5kUmVxdWVzdCkgeworICAgICAgICAgICAgdmFyIGlzTWFp
blJlc291cmNlID0gKHJlY29yZC5kYXRhLmlkZW50aWZpZXIgPT09IFdlYkluc3BlY3Rvci5tYWlu
UmVzb3VyY2UuaWRlbnRpZmllcik7CisgICAgICAgICAgICBpZiAoaXNNYWluUmVzb3VyY2UgJiYg
dGhpcy5fbWFpblJlc291cmNlSWRlbnRpZmllciAhPT0gcmVjb3JkLmRhdGEuaWRlbnRpZmllcikg
ewogICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBsb2FkaW5nIG5ldyBtYWluIHJlc291cmNlIC0+
IGNsZWFyIHRoZSBwYW5lbC4gQ2hlY2sgYWJvdmUgaXMgbmVjZXNzYXJ5IHNpbmNlCiAgICAgICAg
ICAgICAgICAgLy8gdGhlcmUgbWF5IGJlIHNldmVyYWwgcmVzb3VyY2UgbG9hZHMgd2l0aCBtYWlu
IHJlc291cmNlIG1hcmtlciB1cG9uIHJlZGlyZWN0cywgcmVkaXJlY3RzIGFyZSByZXBvcnRlZCB3
aXRoCiAgICAgICAgICAgICAgICAgLy8gdGhlIG9yaWdpbmFsIGlkZW50aWZpZXIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCAwZGY4ZGI2Li4zNGZhMTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTcwLDYgKzcwLDcgQEAKICNpbmNsdWRl
ICJJY29uRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJY29uTG9hZGVyLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiTWFpblJlc291cmNlTG9hZGVyLmgiCkBAIC0zMDQ4LDkgKzMwNDksNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShjb25zdCBDYWNoZWRS
ZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghcGFnZS0+YXJl
TWVtb3J5Q2FjaGVDbGllbnRDYWxsc0VuYWJsZWQoKSkgewotI2lmIEVOQUJMRShJTlNQRUNUT1Ip
Ci0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlkTG9hZFJlc291cmNlRnJv
bU1lbW9yeUNhY2hlKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIHJlc291cmNlKTsKLSNlbmRpZgor
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShwYWdlLCBtX2RvY3VtZW50TG9hZGVyLmdldCgpLCByZXNvdXJjZSk7CiAgICAgICAg
IG1fZG9jdW1lbnRMb2FkZXItPnJlY29yZE1lbW9yeUNhY2hlTG9hZEZvckZ1dHVyZUNsaWVudE5v
dGlmaWNhdGlvbihyZXNvdXJjZS0+dXJsKCkpOwogICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5k
aWRUZWxsQ2xpZW50QWJvdXRMb2FkKHJlc291cmNlLT51cmwoKSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTMwNTgsOSArMzA1Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRlZFJlc291cmNlRnJv
bU1lbW9yeUNhY2hlKGNvbnN0IENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIAogICAgIFJlc291
cmNlUmVxdWVzdCByZXF1ZXN0KHJlc291cmNlLT51cmwoKSk7CiAgICAgaWYgKG1fY2xpZW50LT5k
aXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShtX2RvY3VtZW50TG9hZGVyLmdl
dCgpLCByZXF1ZXN0LCByZXNvdXJjZS0+cmVzcG9uc2UoKSwgcmVzb3VyY2UtPmVuY29kZWRTaXpl
KCkpKSB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLT5kaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUobV9kb2N1bWVudExvYWRl
ci5nZXQoKSwgcmVzb3VyY2UpOwotI2VuZGlmCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKHBhZ2UsIG1fZG9jdW1lbnRMb2Fk
ZXIuZ2V0KCksIHJlc291cmNlKTsKICAgICAgICAgbV9kb2N1bWVudExvYWRlci0+ZGlkVGVsbENs
aWVudEFib3V0TG9hZChyZXNvdXJjZS0+dXJsKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMzA2OCw5ICszMDY1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZGVkUmVzb3VyY2VGcm9t
TWVtb3J5Q2FjaGUoY29uc3QgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcjsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIHJlcXVlc3RG
cm9tRGVsZWdhdGUocmVxdWVzdCwgaWRlbnRpZmllciwgZXJyb3IpOwotI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCi0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5tYXJrUmVzb3VyY2VBc0Nh
Y2hlZChpZGVudGlmaWVyKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
bWFya1Jlc291cmNlQXNDYWNoZWQocGFnZSwgaWRlbnRpZmllcik7CiAgICAgbm90aWZpZXIoKS0+
c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRl
bnRpZmllciwgcmVzb3VyY2UtPnJlc3BvbnNlKCksIHJlc291cmNlLT5lbmNvZGVkU2l6ZSgpLCBl
cnJvcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWROb3RpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZp
ZXIuY3BwCmluZGV4IGEzNmVkOTQuLmM5Mjg1NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRl
ckNsaWVudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAi
UHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKQEAgLTk3LDIw
ICs5NywxNCBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRGYWlsVG9Mb2FkKFJlc291
cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlRQogICAgIGlmICghZXJyb3IuaXNOdWxs
KCkpCiAgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hEaWRGYWls
TG9hZGluZyhsb2FkZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCBl
cnJvcik7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChQYWdlKiBwYWdlID0gbV9m
cmFtZS0+cGFnZSgpKQotICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpZEZh
aWxMb2FkaW5nKGxvYWRlci0+aWRlbnRpZmllcigpLCBlcnJvcik7Ci0jZW5kaWYKKyAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKG1fZnJhbWUsIGxvYWRlci0+aWRl
bnRpZmllcigpLCBlcnJvcik7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmFzc2ln
bklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewog
ICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+YXNzaWduSWRlbnRpZmllclRvSW5pdGlh
bFJlcXVlc3QoaWRlbnRpZmllciwgbG9hZGVyLCByZXF1ZXN0KTsKIAotI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgIHBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KGlk
ZW50aWZpZXIsIGxvYWRlciwgcmVxdWVzdCk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChtX2ZyYW1lLCBpZGVudGlmaWVy
LCBsb2FkZXIsIHJlcXVlc3QpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNw
YXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSkKQEAgLTEyNCwxMCArMTE4LDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgdW5zaWcKICAgICBpZiAoIXJlcXVlc3QuaXNOdWxsKCkgJiYgb2xkUmVxdWVzdFVSTCAh
PSByZXF1ZXN0LnVybCgpLnN0cmluZygpLmltcGwoKSkKICAgICAgICAgbV9mcmFtZS0+bG9hZGVy
KCktPmRvY3VtZW50TG9hZGVyKCktPmRpZFRlbGxDbGllbnRBYm91dExvYWQocmVxdWVzdC51cmwo
KSk7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFt
ZS0+cGFnZSgpKQotICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPndpbGxTZW5k
UmVxdWVzdChpZGVudGlmaWVyLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKLSNlbmRpZgor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KG1fZnJhbWUsIGlk
ZW50aWZpZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogCiAgICAgLy8gUmVwb3J0IFdl
YlRpbWluZyBmb3IgYWxsIGZyYW1lcy4KICAgICBpZiAobG9hZGVyICYmICFyZXF1ZXN0LmlzTnVs
bCgpICYmIHJlcXVlc3QudXJsKCkgPT0gbG9hZGVyLT5yZXF1ZXN0VVJMKCkpCkBAIC0xMzYsMzIg
KzEyNywyMyBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaFdpbGxTZW5kUmVx
dWVzdChEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZwogCiB2b2lkIFJlc291cmNlTG9hZE5v
dGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciogbG9hZGVy
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIpCiB7
CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1fZnJhbWUsIGlkZW50
aWZpZXIsIHIpOwogICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hEaWRS
ZWNlaXZlUmVzcG9uc2UobG9hZGVyLCBpZGVudGlmaWVyLCByKTsKLQotI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgIHBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIs
IGxvYWRlciwgcik7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlKGNvb2tpZSwgaWRlbnRpZmllciwgbG9hZGVyLCByKTsKIH0K
IAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExl
bmd0aChEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGlu
dCBsZW5ndGgpCiB7CiAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERp
ZFJlY2VpdmVDb250ZW50TGVuZ3RoKGxvYWRlciwgaWRlbnRpZmllciwgbGVuZ3RoKTsKIAotI2lm
IEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkp
Ci0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlkUmVjZWl2ZUNvbnRlbnRM
ZW5ndGgoaWRlbnRpZmllciwgbGVuZ3RoKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgobV9mcmFtZSwgaWRlbnRpZmllciwgbGVu
Z3RoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRGaW5pc2hM
b2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
ZG91YmxlIGZpbmlzaFRpbWUpCiB7CiAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5k
aXNwYXRjaERpZEZpbmlzaExvYWRpbmcobG9hZGVyLCBpZGVudGlmaWVyKTsKIAotI2lmIEVOQUJM
RShJTlNQRUNUT1IpCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCi0gICAg
ICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlm
aWVyLCBmaW5pc2hUaW1lKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkRmluaXNoTG9hZGluZyhtX2ZyYW1lLCBpZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKIH0KIAog
dm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hUcmFuc2ZlckxvYWRpbmdSZXNvdXJj
ZUZyb21QYWdlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYWdlKiBvbGRQYWdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZGUzOTk4Ni4uZWEwZDAyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00MjAsOSArNDIw
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFu
ZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICBpZiAoZG9jdW1lbnRMb2FkZXIoKS0+
YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZSh0aGlz
LCByZXNwb25zZSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgotICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxS
ZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2ZyYW1lLmdldCgpLCBpZGVudGlmaWVyKCksIHJlc3Bv
bnNlKTsKICAgICBkaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwotICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoY29va2llKTsKIH0KIAog
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwCmluZGV4IDY0NTRiOTAuLjg1OTU2MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC00MCw2ICs0
MCw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSAiTWFpblJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTWFu
aWZlc3RQYXJzZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC00OCwxMSArNDksNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotI2luY2x1ZGUg
Ikluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKLSNlbHNlCi0jaW5jbHVk
ZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
Mzk1LDMwICszOTIsMTMgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnN0b3BMb2FkaW5n
SW5GcmFtZShGcmFtZSogZnJhbWUpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAotI2lmIEVOQUJM
RShJTlNQRUNUT1IpCi1zdGF0aWMgdm9pZCBpbnNwZWN0b3JVcGRhdGVBcHBsaWNhdGlvbkNhY2hl
U3RhdHVzKEZyYW1lKiBmcmFtZSkKLXsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAoUGFnZSAqcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgaWYgKElu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCogYXBwbGljYXRpb25DYWNoZUFnZW50ID0gcGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSkgewotICAg
ICAgICAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlN0YXR1cyBzdGF0dXMgPSBmcmFtZS0+bG9h
ZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPnN0YXR1cygp
OwotICAgICAgICAgICAgYXBwbGljYXRpb25DYWNoZUFnZW50LT51cGRhdGVBcHBsaWNhdGlvbkNh
Y2hlU3RhdHVzKHN0YXR1cyk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0jZW5kaWYKLQogdm9pZCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNldE5ld2VzdENhY2hlKFBhc3NSZWZQdHI8QXBwbGljYXRp
b25DYWNoZT4gbmV3ZXN0Q2FjaGUpCiB7CiAgICAgbV9uZXdlc3RDYWNoZSA9IG5ld2VzdENhY2hl
OwogCiAgICAgbV9jYWNoZXMuYWRkKG1fbmV3ZXN0Q2FjaGUuZ2V0KCkpOwogICAgIG1fbmV3ZXN0
Q2FjaGUtPnNldEdyb3VwKHRoaXMpOwotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaW5zcGVj
dG9yVXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhtX2ZyYW1lKTsKLSNlbmRpZgorICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhtX2Zy
YW1lKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6Om1ha2VPYnNvbGV0ZSgpCkBA
IC00MjksOSArNDA5LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6Om1ha2VPYnNvbGV0
ZSgpCiAgICAgbV9pc09ic29sZXRlID0gdHJ1ZTsKICAgICBjYWNoZVN0b3JhZ2UoKS5jYWNoZUdy
b3VwTWFkZU9ic29sZXRlKHRoaXMpOwogICAgIEFTU0VSVCghbV9zdG9yYWdlSUQpOwotI2lmIEVO
QUJMRShJTlNQRUNUT1IpCi0gICAgaW5zcGVjdG9yVXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1
cyhtX2ZyYW1lKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dXBkYXRl
QXBwbGljYXRpb25DYWNoZVN0YXR1cyhtX2ZyYW1lKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OnVwZGF0ZShGcmFtZSogZnJhbWUsIEFwcGxpY2F0aW9uQ2FjaGVVcGRhdGVPcHRp
b24gdXBkYXRlT3B0aW9uKQpAQCAtNDk2LDM1ICs0NzQsMTkgQEAgUGFzc1JlZlB0cjxSZXNvdXJj
ZUhhbmRsZT4gQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjcmVhdGVSZXNvdXJjZUhhbmRsZShjb25z
dCBLVVIKICAgICAvLyBCZWNhdXNlIHdpbGxTZW5kUmVxdWVzdCBvbmx5IGdldHMgY2FsbGVkIGR1
cmluZyByZWRpcmVjdHMsIHdlIGluaXRpYWxpemUKICAgICAvLyB0aGUgaWRlbnRpZmllciBhbmQg
dGhlIGZpcnN0IHdpbGxTZW5kUmVxdWVzdCBoZXJlLgogICAgIG1fY3VycmVudFJlc291cmNlSWRl
bnRpZmllciA9IG1fZnJhbWUtPnBhZ2UoKS0+cHJvZ3Jlc3MoKS0+Y3JlYXRlVW5pcXVlSWRlbnRp
ZmllcigpOwotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAg
IEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBwYWdlLT5pbnNwZWN0
b3JDb250cm9sbGVyKCk7Ci0gICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmlkZW50aWZpZXJG
b3JJbml0aWFsUmVxdWVzdChtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIG1fZnJhbWUtPmxv
YWRlcigpLT5kb2N1bWVudExvYWRlcigpLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpKTsKLSAgICAg
ICAgUmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgp
OwotICAgICAgICBpbnNwZWN0b3JDb250cm9sbGVyLT53aWxsU2VuZFJlcXVlc3QobV9jdXJyZW50
UmVzb3VyY2VJZGVudGlmaWVyLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKLSAgICB9Cisg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Qo
bV9mcmFtZSwgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCBtX2ZyYW1lLT5sb2FkZXIoKS0+
ZG9jdW1lbnRMb2FkZXIoKSwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKSk7CisgICAgUmVzb3VyY2VS
ZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOworICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KG1fZnJhbWUsIG1fY3VycmVudFJl
c291cmNlSWRlbnRpZmllciwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAjZW5kaWYKICAg
ICByZXR1cm4gaGFuZGxlOwogfQogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLXZvaWQgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9u
c2UpCi17Ci0gICAgLy8gVGhpcyBvbmx5IGdldHMgY2FsbGVkIGJ5IFJlc291cmNlSGFuZGxlTWFj
IGlmIHRoZXJlIGlzIGEgcmVkaXJlY3QuCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5w
YWdlKCkpCi0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+d2lsbFNlbmRSZXF1
ZXN0KG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25z
ZSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChQYWdlKiBwYWdlID0g
bV9mcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgIGlmIChoYW5kbGUgPT0gbV9tYW5pZmVzdEhhbmRs
ZSkgewotICAgICAgICAgICAgaWYgKEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCogYXBw
bGljYXRpb25DYWNoZUFnZW50ID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5hcHBsaWNh
dGlvbkNhY2hlQWdlbnQoKSkKLSAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkNhY2hlQWdlbnQt
PmRpZFJlY2VpdmVNYW5pZmVzdFJlc3BvbnNlKG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwg
cmVzcG9uc2UpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG1fY3VycmVudFJlc291cmNlSWRlbnRpZmll
ciwgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCksIHJlc3BvbnNlKTsKLSAgICB9
CisgICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IChoYW5kbGUgPT0gbV9tYW5pZmVzdEhhbmRs
ZSkgPyAwIDogbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCk7CisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1fZnJhbWUsIG1fY3VycmVudFJlc291cmNl
SWRlbnRpZmllciwgcmVzcG9uc2UpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoY29va2llLCBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZp
ZXIsIGxvYWRlciwgcmVzcG9uc2UpOwogI2VuZGlmCiAKICAgICBpZiAoaGFuZGxlID09IG1fbWFu
aWZlc3RIYW5kbGUpIHsKQEAgLTU5MywxMiArNTU1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBS
ZXMKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGludCBsZW5ndGhS
ZWNlaXZlZCkKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChQYWdlKiBwYWdlID0g
bV9mcmFtZS0+cGFnZSgpKQotICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRp
ZFJlY2VpdmVDb250ZW50TGVuZ3RoKG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwgbGVuZ3Ro
UmVjZWl2ZWQpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obGVuZ3RoUmVjZWl2ZWQpOwotI2Vu
ZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlQ29udGVudExlbmd0
aChtX2ZyYW1lLCBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIGxlbmd0aFJlY2VpdmVkKTsK
IAogICAgIGlmIChoYW5kbGUgPT0gbV9tYW5pZmVzdEhhbmRsZSkgewogICAgICAgICBkaWRSZWNl
aXZlTWFuaWZlc3REYXRhKGRhdGEsIGxlbmd0aCk7CkBAIC02MTUsMTAgKzU3Miw3IEBAIHZvaWQg
QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBjb25zdCBjaGFyKiBkCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5p
c2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGRvdWJsZSBmaW5pc2hUaW1lKQogewot
I2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCkpCi0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlkRmluaXNoTG9hZGlu
ZyhtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOwotI2VuZGlmCisgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKG1fZnJhbWUsIG1fY3Vy
cmVudFJlc291cmNlSWRlbnRpZmllciwgZmluaXNoVGltZSk7CiAKICAgICBpZiAoaGFuZGxlID09
IG1fbWFuaWZlc3RIYW5kbGUpIHsKICAgICAgICAgZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCk7
CkBAIC02NTcsMTIgKzYxMSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5p
c2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGRvdWJsZSBmaW5pCiAKIHZvaWQgQXBw
bGljYXRpb25DYWNoZUdyb3VwOjpkaWRGYWlsKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYg
KFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+ZGlkRmFpbExvYWRpbmcobV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCBl
cnJvcik7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShlcnJvcik7Ci0jZW5kaWYKKyAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKG1fZnJhbWUsIG1fY3VycmVudFJl
c291cmNlSWRlbnRpZmllciwgZXJyb3IpOwogCiAgICAgaWYgKGhhbmRsZSA9PSBtX21hbmlmZXN0
SGFuZGxlKSB7CiAgICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CkBAIC0xMTYxLDkgKzExMTAs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6cG9zdExpc3RlbmVyVGFzayhBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBldmVudAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OnNldFVwZGF0ZVN0YXR1cyhVcGRhdGVTdGF0dXMgc3RhdHVzKQogewogICAgIG1fdXBkYXRlU3Rh
dHVzID0gc3RhdHVzOwotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaW5zcGVjdG9yVXBkYXRl
QXBwbGljYXRpb25DYWNoZVN0YXR1cyhtX2ZyYW1lKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6dXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhtX2ZyYW1lKTsKIH0K
IAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNsZWFyU3RvcmFnZUlEKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
aAppbmRleCAyOWQwNzQ5Li4yZDhiODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCkBAIC0xMTAsOSArMTEwLDYg
QEAgcHJpdmF0ZToKICAgICAvLyB0aGUgZXhpc3RpbmcgY2xpZW50IGNhbGxiYWNrIGNhbm5vdCBi
ZSB1c2VkLCBzbyBhc3N1bWUgdGhhdCBhbnkgY2xpZW50IHRoYXQgZW5hYmxlcyBhcHBsaWNhdGlv
biBjYWNoZSBhbHNvIHdhbnRzIGl0IHRvIHVzZSBjcmVkZW50aWFsIHN0b3JhZ2UuCiAgICAgdmly
dHVhbCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikgeyBy
ZXR1cm4gdHJ1ZTsgfQogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICB2aXJ0dWFsIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwotI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwg
aW50IGxlbmd0aCwgaW50IGxlbmd0aFJlY2VpdmVkKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSBmaW5pc2hUaW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCmluZGV4IDM3MThkMGEuLjNhMjQ4YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNDcs
NiArNDcsNyBAQAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0
ZW0uaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1l
ZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgpAQCAtOTQsMTAg
Kzk1LDYgQEAKICNpbmNsdWRlICJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCIKICNlbmRpZgogCi0j
aWYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykK
LSNpbmNsdWRlICJJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCIKLSNlbmRpZgotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBIYXNoU2V0PFBhZ2UqPiogYWxsUGFnZXM7CkBA
IC0xMTAsMTkgKzEwNywxMiBAQCBzdGF0aWMgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKCkKIHsK
ICAgICBWZWN0b3I8UmVmUHRyPEZyYW1lPiA+IGZyYW1lczsKICAgICAKLSNpZiBFTkFCTEUoSU5T
UEVDVE9SKSAmJiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQotICAgIGJvb2wgaXNO
b3dPbmxpbmUgPSBuZXR3b3JrU3RhdGVOb3RpZmllcigpLm9uTGluZSgpOwotI2VuZGlmCi0KICAg
ICAvLyBHZXQgYWxsIHRoZSBmcmFtZXMgb2YgYWxsIHRoZSBwYWdlcyBpbiBhbGwgdGhlIHBhZ2Ug
Z3JvdXBzCiAgICAgSGFzaFNldDxQYWdlKj46Oml0ZXJhdG9yIGVuZCA9IGFsbFBhZ2VzLT5lbmQo
KTsKICAgICBmb3IgKEhhc2hTZXQ8UGFnZSo+OjppdGVyYXRvciBpdCA9IGFsbFBhZ2VzLT5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAoKml0
KS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4
dCgpKQogICAgICAgICAgICAgZnJhbWVzLmFwcGVuZChmcmFtZSk7Ci0jaWYgRU5BQkxFKElOU1BF
Q1RPUikgJiYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKLSAgICAgICAgaWYgKElu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCogYXBwbGljYXRpb25DYWNoZUFnZW50ID0gKCpp
dCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YXBwbGljYXRpb25DYWNoZUFnZW50KCkpCi0gICAg
ICAgICAgICBhcHBsaWNhdGlvbkNhY2hlQWdlbnQtPnVwZGF0ZU5ldHdvcmtTdGF0ZShpc05vd09u
bGluZSk7Ci0jZW5kaWYKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpuZXR3b3Jr
U3RhdGVDaGFuZ2VkKCppdCk7CiAgICAgfQogCiAgICAgQXRvbWljU3RyaW5nIGV2ZW50TmFtZSA9
IG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkub25MaW5lKCkgPyBldmVudE5hbWVzKCkub25saW5lRXZl
bnQgOiBldmVudE5hbWVzKCkub2ZmbGluZUV2ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAppbmRleCA0YThl
OTQ3Li4zYTE0YjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRT
aGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Rl
ZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVu
dC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKQEAgLTI5MSwxMCArMjkxLDcgQEAgdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5v
dGlmeUZpbmlzaGVkKCkKICAgICBpZiAobV9zY3JpcHRMb2FkZXItPmZhaWxlZCgpKQogICAgICAg
ICBtX3dvcmtlci0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJv
ckV2ZW50LCBmYWxzZSwgdHJ1ZSkpOwogICAgIGVsc2UgewotI2lmIEVOQUJMRShJTlNQRUNUT1Ip
Ci0gICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3IgPSBtX3dvcmtlci0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCi0gICAgICAg
ICAgICBpbnNwZWN0b3ItPnNjcmlwdEltcG9ydGVkKG1fc2NyaXB0TG9hZGVyLT5pZGVudGlmaWVy
KCksIG1fc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSk7Ci0jZW5kaWYKKyAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZChtX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBtX3NjcmlwdExvYWRlci0+aWRlbnRpZmllcigpLCBtX3NjcmlwdExvYWRlci0+
c2NyaXB0KCkpOwogICAgICAgICBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aW5zdGFu
Y2UoKS53b3JrZXJTY3JpcHRMb2FkZWQoKm1fcHJveHksIG1fd29ya2VyLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPnVzZXJBZ2VudChtX3NjcmlwdExvYWRlci0+dXJsKCkpLCBtX3NjcmlwdExv
YWRlci0+c2NyaXB0KCksIG1fcG9ydC5yZWxlYXNlKCkpOwogICAgIH0KICAgICBtX3dvcmtlci0+
dW5zZXRQZW5kaW5nQWN0aXZpdHkobV93b3JrZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXIuY3BwCmluZGV4IDMyZWM5OTcuLjhhMmY2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5j
cHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogI2lu
Y2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHRQcm94eS5oIgpA
QCAtMTM1LDEwICsxMzYsNyBAQCB2b2lkIFdvcmtlcjo6bm90aWZ5RmluaXNoZWQoKQogICAgICAg
ICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZh
bHNlLCB0cnVlKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIG1fY29udGV4dFByb3h5LT5zdGFydFdv
cmtlckNvbnRleHQobV9zY3JpcHRMb2FkZXItPnVybCgpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPnVzZXJBZ2VudChtX3NjcmlwdExvYWRlci0+dXJsKCkpLCBtX3NjcmlwdExvYWRlci0+c2Ny
aXB0KCkpOwotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIGlmIChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3IgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmluc3BlY3RvckNv
bnRyb2xsZXIoKSkKLSAgICAgICAgICAgIGluc3BlY3Rvci0+c2NyaXB0SW1wb3J0ZWQobV9zY3Jp
cHRMb2FkZXItPmlkZW50aWZpZXIoKSwgbV9zY3JpcHRMb2FkZXItPnNjcmlwdCgpKTsKLSNlbmRp
ZgorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgbV9zY3JpcHRMb2FkZXItPmlkZW50aWZpZXIoKSwgbV9zY3Jp
cHRMb2FkZXItPnNjcmlwdCgpKTsKICAgICB9CiAgICAgbV9zY3JpcHRMb2FkZXIgPSAwOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAppbmRleCAzNDVlNWI3Li42YzUw
ZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKQEAgLTQyLDcg
KzQyLDcgQEAKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNp
bmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJLVVJM
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgpAQCAtMjQ1LDEwICsyNDUsNyBAQCB2b2lkIFdvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBp
ZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCi0gICAgICAgICAgICBpbnNwZWN0b3ItPnNjcmlw
dEltcG9ydGVkKHNjcmlwdExvYWRlci5pZGVudGlmaWVyKCksIHNjcmlwdExvYWRlci5zY3JpcHQo
KSk7Ci0jZW5kaWYKKyAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9y
dGVkKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2NyaXB0TG9hZGVyLmlkZW50aWZpZXIoKSwg
c2NyaXB0TG9hZGVyLnNjcmlwdCgpKTsKIAogICAgICAgICBTY3JpcHRWYWx1ZSBleGNlcHRpb247
CiAgICAgICAgIG1fc2NyaXB0LT5ldmFsdWF0ZShTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdExvYWRl
ci5zY3JpcHQoKSwgKml0KSwgJmV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAppbmRleCA1Nzg2MTc2Li5lZTllMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAj
aW5jbHVkZSAiRmlsZS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCi0jaW5jbHVkZSAiSW5z
cGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3Qu
aCIKQEAgLTk5OCwxMCArOTk3LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiAgICAgLy8gRklYTUU6IFNldCBtX3Jlc3Bv
bnNlQmxvYiB0byBzb21ldGhpbmcgaGVyZSBpbiB0aGUgUmVzcG9uc2VUeXBlQmxvYiBjYXNlLgog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9s
bGVyKiBpbnNwZWN0b3IgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmluc3BlY3RvckNvbnRy
b2xsZXIoKSkKLSAgICAgICAgaW5zcGVjdG9yLT5yZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJl
cXVlc3QoaWRlbnRpZmllciwgbV9yZXNwb25zZUJ1aWxkZXIudG9TdHJpbmdQcmVzZXJ2ZUNhcGFj
aXR5KCksIG1fdXJsLCBtX2xhc3RTZW5kVVJMLCBtX2xhc3RTZW5kTGluZU51bWJlcik7Ci0jZW5k
aWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlc291cmNlUmV0cmlldmVkQnlYTUxI
dHRwUmVxdWVzdChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGlkZW50aWZpZXIsIG1fcmVzcG9u
c2VCdWlsZGVyLnRvU3RyaW5nUHJlc2VydmVDYXBhY2l0eSgpLCBtX3VybCwgbV9sYXN0U2VuZFVS
TCwgbV9sYXN0U2VuZExpbmVOdW1iZXIpOwogCiAgICAgYm9vbCBoYWRMb2FkZXIgPSBtX2xvYWRl
cjsKICAgICBtX2xvYWRlciA9IDA7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBjOThmMTViLi5kOWQ1ODY1IDEw
MDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMC0xMi0yOSAgWXVyeSBTZW1pa2hhdHNr
eSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBpbnNwZWN0b3IvdGltZWxpbmUtbmV0d29yay1yZXNvdXJjZS5odG1s
IGZhaWxzIHdoZW4gcnVuIHR3aWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNzM5NAorCisgICAgICAgIFNlbmQgZGlkUmVjZWl2ZVJlc3BvbnNlIG5v
dGlmaWNhdGlvbiB0byB0aGUgdGltZWxpbmUgYWdlbnQgZnJvbSBSZXNvdXJjZUxvYWROb3RpZmll
cgorICAgICAgICBpbnN0ZWFkIG9mIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Ug
dG8gY292ZXIgdGhlIGNhc2VzIHdoZW4gcmVzb3VyY2VzCisgICAgICAgIGFyZSBsb2FkZWQgZnJv
bSBtZW1vcnkgY2FjaGUuCisKKyAgICAgICAgTmV0d29yayBub3RpZmljYXRpb25zIGFyZSBub3cg
c2VudCB0byBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gd2hpY2ggZGlzcGF0Y2hlcworICAgICAg
ICB0aGVtIHRvIGludGVyZXN0ZWQgYWdlbnRzIGFuZCBJbnNwZWN0b3JDb250cm9sbGVyLgorCisg
ICAgICAgICogc3JjL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICog
c3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9v
bHNBZ2VudEltcGw6Om1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdl
bnRJbXBsOjppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJEZXZUb29sc0FnZW50SW1wbDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkRldlRvb2xzQWdlbnRJbXBsOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKiBz
cmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaDoKKwogMjAxMS0wMS0xMSAgVG9ueSBDaGFuZyAgPHRv
bnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA4NWRmZDIw
Li4yNjk2YjJjIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIkRPTUFwcGxpY2F0aW9uQ2FjaGUuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUHJv
Z3Jlc3NFdmVudC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0yMDgsMTIgKzIwOCw4IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnNldERPTUFwcGxpY2F0aW9uQ2FjaGUoRE9NQXBw
bGljYXRpb25DYWNoZSogZG9tQXBwbGljCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3Rp
ZnlET01BcHBsaWNhdGlvbkNhY2hlKEV2ZW50SUQgaWQsIGludCB0b3RhbCwgaW50IGRvbmUpCiB7
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAvLyBJZiBob3N0J3MgZnJhbWUgaXMgbWFpbiBm
cmFtZSBhbmQgaW5zcGVjdG9yIGZyb250ZW5kIGlzIGNvbm5lY3RlZCwgdXBkYXRlIGFwcGNhY2hl
IHN0YXR1cy4KLSAgICBpZiAoaWQgIT0gUFJPR1JFU1NfRVZFTlQgJiYgbV9kb2N1bWVudExvYWRl
ci0+ZnJhbWUoKSkgewotICAgICAgICBQYWdlKiBwYWdlID0gbV9kb2N1bWVudExvYWRlci0+ZnJh
bWUoKS0+cGFnZSgpOwotICAgICAgICBpZiAocGFnZSAmJiBwYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpICYmIHBhZ2UtPm1haW5GcmFtZSgpID09IG1f
ZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkpCi0gICAgICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpLT51cGRhdGVBcHBsaWNhdGlvbkNhY2hl
U3RhdHVzKHN0YXR1cygpKTsKLSAgICB9CisgICAgaWYgKGlkICE9IFBST0dSRVNTX0VWRU5UKQor
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVT
dGF0dXMobV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKSk7CiAjZW5kaWYKIAogICAgIGlmIChtX2Rl
ZmVyc0V2ZW50cykgewpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9TaGFyZWRXb3Jr
ZXJSZXBvc2l0b3J5LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU2hhcmVkV29ya2VyUmVwb3Np
dG9yeS5jcHAKaW5kZXggODhkM2VjNS4uM2Q0NDI4YSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAKICNpbmNs
dWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVBvcnRDaGFubmVsLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZXNzYWdl
UG9ydENoYW5uZWwuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCkBAIC0x
NjIsMTAgKzE2Miw3IEBAIHZvaWQgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpub3RpZnlGaW5p
c2hlZCgpCiAgICAgICAgIG1fd29ya2VyLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCB0cnVlKSk7CiAgICAgICAgIGRlbGV0ZSB0aGlz
OwogICAgIH0gZWxzZSB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgaWYgKEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGluc3BlY3RvciA9IG1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKLSAgICAgICAgICAgIGluc3BlY3Rvci0+c2Ny
aXB0SW1wb3J0ZWQobV9zY3JpcHRMb2FkZXIuaWRlbnRpZmllcigpLCBtX3NjcmlwdExvYWRlci5z
Y3JpcHQoKSk7Ci0jZW5kaWYKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3Jp
cHRJbXBvcnRlZChtX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX3NjcmlwdExv
YWRlci5pZGVudGlmaWVyKCksIG1fc2NyaXB0TG9hZGVyLnNjcmlwdCgpKTsKICAgICAgICAgLy8g
UGFzcyB0aGUgc2NyaXB0IG9mZiB0byB0aGUgd29ya2VyLCB0aGVuIHNlbmQgYSBjb25uZWN0IGV2
ZW50LgogICAgICAgICBtX3dlYldvcmtlci0+c3RhcnRXb3JrZXJDb250ZXh0KG1fdXJsLCBtX25h
bWUsIG1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnVzZXJBZ2VudChtX3VybCks
IG1fc2NyaXB0TG9hZGVyLnNjcmlwdCgpLCBtX3Jlc3BvbnNlQXBwQ2FjaGVJRCk7CiAgICAgICAg
IHNlbmRDb25uZWN0KCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRv
b2xzQWdlbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudElt
cGwuY3BwCmluZGV4IGRiZDZkY2EuLjExY2U3OTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSW5q
ZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91
cC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCkBAIC02OSw2ICs3MCw4IEBAIHVzaW5n
IFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDsKIHVzaW5nIFdlYkNvcmU6Okluc3BlY3RvckFy
cmF5OwogdXNpbmcgV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CiB1c2luZyBX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOwordXNpbmcgV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOwordXNpbmcgV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llOwogdXNpbmcgV2ViQ29yZTo6Tm9kZTsKIHVzaW5nIFdlYkNvcmU6OlBhZ2U7CiB1c2luZyBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yOwpAQCAtMjY2LDI1ICsyNjksMzAgQEAgV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlciogV2ViRGV2VG9vbHNBZ2VudEltcGw6Omluc3BlY3RvckNvbnRyb2xs
ZXIoKQogICAgIHJldHVybiAwOwogfQogCitXZWJDb3JlOjpGcmFtZSogV2ViRGV2VG9vbHNBZ2Vu
dEltcGw6Om1haW5GcmFtZSgpCit7CisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX3dlYlZpZXdJbXBs
LT5wYWdlKCkpCisgICAgICAgIHJldHVybiBwYWdlLT5tYWluRnJhbWUoKTsKKyAgICByZXR1cm4g
MDsKK30KKwogCiAvLy0tLS0tLS0gcGx1Z2luIHJlc291cmNlIGxvYWQgbm90aWZpY2F0aW9ucyAt
LS0tLS0tLS0tLS0tLS0KIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmlkZW50aWZpZXJGb3JJ
bml0aWFsUmVxdWVzdCgKICAgICB1bnNpZ25lZCBsb25nIHJlc291cmNlSWQsCi0gICAgV2ViRnJh
bWUqIGZyYW1lLAorICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSwKICAgICBjb25zdCBXZWJVUkxSZXF1
ZXN0JiByZXF1ZXN0KQogewotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpYyA9IGluc3Bl
Y3RvckNvbnRyb2xsZXIoKSkgewotICAgICAgICBXZWJGcmFtZUltcGwqIHdlYkZyYW1lSW1wbCA9
IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KGZyYW1lKTsKLSAgICAgICAgRnJhbWVMb2FkZXIq
IGZyYW1lTG9hZGVyID0gd2ViRnJhbWVJbXBsLT5mcmFtZSgpLT5sb2FkZXIoKTsKLSAgICAgICAg
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGZyYW1lTG9hZGVyLT5hY3RpdmVEb2N1bWVudExvYWRl
cigpOwotICAgICAgICBpYy0+aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KHJlc291cmNlSWQs
IGxvYWRlciwgcmVxdWVzdC50b1Jlc291cmNlUmVxdWVzdCgpKTsKLSAgICB9CisgICAgV2ViRnJh
bWVJbXBsKiB3ZWJGcmFtZUltcGwgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUltcGwqPih3ZWJGcmFt
ZSk7CisgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gd2ViRnJhbWVJbXBsLT5mcmFtZSgpOwor
ICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCktPmFjdGl2ZURvY3Vt
ZW50TG9hZGVyKCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppZGVudGlmaWVyRm9y
SW5pdGlhbFJlcXVlc3QoZnJhbWUsIHJlc291cmNlSWQsIGxvYWRlciwgcmVxdWVzdC50b1Jlc291
cmNlUmVxdWVzdCgpKTsKIH0KIAogdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6d2lsbFNlbmRS
ZXF1ZXN0KHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VJZCwgV2ViVVJMUmVxdWVzdCYgcmVxdWVzdCkK
IHsKICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaWMgPSBpbnNwZWN0b3JDb250cm9sbGVy
KCkpIHsKLSAgICAgICAgaWMtPndpbGxTZW5kUmVxdWVzdChyZXNvdXJjZUlkLCByZXF1ZXN0LnRv
TXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLCBSZXNvdXJjZVJlc3BvbnNlKCkpOworICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChtYWluRnJhbWUoKSwgcmVz
b3VyY2VJZCwgcmVxdWVzdC50b011dGFibGVSZXNvdXJjZVJlcXVlc3QoKSwgUmVzb3VyY2VSZXNw
b25zZSgpKTsKICAgICAgICAgaWYgKGljLT5oYXNGcm9udGVuZCgpICYmIHJlcXVlc3QucmVwb3J0
TG9hZFRpbWluZygpKQogICAgICAgICAgICAgcmVxdWVzdC5zZXRSZXBvcnRSYXdIZWFkZXJzKHRy
dWUpOwogICAgIH0KQEAgLTI5MiwyNyArMzAwLDIzIEBAIHZvaWQgV2ViRGV2VG9vbHNBZ2VudElt
cGw6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIHJlc291cmNlSWQsIFdlYlVSTFJlcXVl
CiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxv
bmcgcmVzb3VyY2VJZCwgaW50IGxlbmd0aCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxl
ciogaWMgPSBpbnNwZWN0b3JDb250cm9sbGVyKCkpCi0gICAgICAgIGljLT5kaWRSZWNlaXZlQ29u
dGVudExlbmd0aChyZXNvdXJjZUlkLCBsZW5ndGgpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgobWFpbkZyYW1lKCksIHJlc291cmNlSWQsIGxl
bmd0aCk7CiB9CiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpZFJlY2VpdmVSZXNwb25z
ZSh1bnNpZ25lZCBsb25nIHJlc291cmNlSWQsIGNvbnN0IFdlYlVSTFJlc3BvbnNlJiByZXNwb25z
ZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaWMgPSBpbnNwZWN0b3JDb250cm9s
bGVyKCkpCi0gICAgICAgIGljLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzb3VyY2VJZCwgMCwgcmVz
cG9uc2UudG9SZXNvdXJjZVJlc3BvbnNlKCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVz
b3VyY2VSZXNwb25zZShtYWluRnJhbWUoKSwgcmVzb3VyY2VJZCwgcmVzcG9uc2UudG9SZXNvdXJj
ZVJlc3BvbnNlKCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJl
c291cmNlUmVzcG9uc2UoY29va2llLCByZXNvdXJjZUlkLCAwLCByZXNwb25zZS50b1Jlc291cmNl
UmVzcG9uc2UoKSk7CiB9CiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpZEZpbmlzaExv
YWRpbmcodW5zaWduZWQgbG9uZyByZXNvdXJjZUlkKQogewotICAgIGlmIChJbnNwZWN0b3JDb250
cm9sbGVyKiBpYyA9IGluc3BlY3RvckNvbnRyb2xsZXIoKSkKLSAgICAgICAgaWMtPmRpZEZpbmlz
aExvYWRpbmcocmVzb3VyY2VJZCwgMCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGaW5pc2hMb2FkaW5nKG1haW5GcmFtZSgpLCByZXNvdXJjZUlkLCAwKTsKIH0KIAogdm9pZCBX
ZWJEZXZUb29sc0FnZW50SW1wbDo6ZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyByZXNvdXJj
ZUlkLCBjb25zdCBXZWJVUkxFcnJvciYgZXJyb3IpCiB7Ci0gICAgUmVzb3VyY2VFcnJvciByZXNv
dXJjZUVycm9yOwotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpYyA9IGluc3BlY3RvckNv
bnRyb2xsZXIoKSkKLSAgICAgICAgaWMtPmRpZEZhaWxMb2FkaW5nKHJlc291cmNlSWQsIHJlc291
cmNlRXJyb3IpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmco
bWFpbkZyYW1lKCksIHJlc291cmNlSWQsIGVycm9yKTsKIH0KIAogdm9pZCBXZWJEZXZUb29sc0Fn
ZW50SW1wbDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2
VG9vbHNBZ2VudEltcGwuaAppbmRleCA5YjNjMDUzLi44ZDk3YWE0IDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oCkBAIC0xMDEsNiArMTAxLDcgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIoKTsKKyAgICBXZWJDb3JlOjpGcmFtZSogbWFpbkZyYW1lKCk7CiAKICAgICBp
bnQgbV9ob3N0SWQ7CiAgICAgV2ViRGV2VG9vbHNBZ2VudENsaWVudCogbV9jbGllbnQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>