<?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>178715</bug_id>
          
          <creation_ts>2017-10-24 00:22:06 -0700</creation_ts>
          <short_desc>Style::Scope::flushPendingUpdate() can replace the entire document in XSLTProcessor::createDocumentFromSource</short_desc>
          <delta_ts>2019-02-06 09:03:20 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=178938</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>178830</blocked>
    
    <blocked>178845</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1363610</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-24 00:22:06 -0700</bug_when>
    <thetext>3   0x3209ad7b8 WebCore::EventDispatcher::dispatchEvent(WebCore::Node&amp;, WebCore::Event&amp;)
4   0x321587d9d WebCore::Node::dispatchEvent(WebCore::Event&amp;)
5   0x3207a3b2c WebCore::Document::setReadyState(WebCore::Document::ReadyState)
6   0x3207ae716 WebCore::Document::implicitOpen()
7   0x3207a4c76 WebCore::Document::open(WebCore::Document*)
8   0x3207a4a77 WebCore::Document::setContent(WTF::String const&amp;)
9   0x3230dec83 WebCore::XSLTProcessor::createDocumentFromSource(WTF::String const&amp;, WTF::String const&amp;, WTF::String const&amp;, WebCore::Node*, WebCore::Frame*)
10  0x3207bec53 WebCore::Document::applyXSLTransform(WebCore::ProcessingInstruction*)
11  0x321ddbd0e WebCore::Style::Scope::collectActiveStyleSheets(WTF::Vector&lt;WTF::RefPtr&lt;WebCore::StyleSheet&gt;, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;)
12  0x321ddc981 WebCore::Style::Scope::updateActiveStyleSheets(WebCore::Style::Scope::UpdateType)
13  0x321dddbf3 WebCore::Style::Scope::flushPendingSelfUpdate()
14  0x320540042 WebCore::Style::Scope::flushPendingUpdate()
15  0x3207a9711 WebCore::Document::updateStyleIfNeeded()
16  0x3207c0363 WebCore::Document::finishedParsing()
17  0x323096212 WebCore::XMLDocumentParser::end()
18  0x32309630e WebCore::XMLDocumentParser::finish()
19  0x320873556 WebCore::DocumentWriter::end()
20  0x32082863f WebCore::DocumentLoader::finishedLoading()
21  0x32082837d WebCore::DocumentLoader::notifyFinished(WebCore::CachedResource&amp;)
22  0x3208287cc non-virtual thunk to WebCore::DocumentLoader::notifyFinished(WebCore::CachedResource&amp;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363614</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-24 00:30:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/35144665&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363621</commentid>
    <comment_count>2</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-10-24 00:49:38 -0700</bug_when>
    <thetext>XSLT stuff should be moved out of the style code. It is there for historical reasons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363630</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-24 01:22:18 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #2)
&gt; XSLT stuff should be moved out of the style code. It is there for historical
&gt; reasons.

Yeah. I wonder if we can just apply it with a timer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364100</commentid>
    <comment_count>4</comment_count>
      <attachid>324791</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-24 21:14:34 -0700</bug_when>
    <thetext>Created attachment 324791
WIP

Proposed approach:
1. Start a timer on document whenever XSL loads
2. Force applying XSLT whenever the document finishes loading to minimize the compat issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364418</commentid>
    <comment_count>5</comment_count>
      <attachid>324877</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-25 13:18:25 -0700</bug_when>
    <thetext>Created attachment 324877
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364454</commentid>
    <comment_count>6</comment_count>
      <attachid>324877</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-25 14:07:05 -0700</bug_when>
    <thetext>Comment on attachment 324877
Cleanup

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

&gt; Source/WebCore/ChangeLog:30
&gt; +        (WebCore::Style::Scope::collectXLSTransforms): Added.

Ugh... there&apos;s a typo here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364463</commentid>
    <comment_count>7</comment_count>
      <attachid>324877</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-10-25 14:13:09 -0700</bug_when>
    <thetext>Comment on attachment 324877
Cleanup

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

Looks good! r=me.

&gt; Source/WebCore/dom/Document.cpp:5082
&gt; +        RefPtr&lt;XSLTProcessor&gt; processor = XSLTProcessor::create();

auto?

&gt; Source/WebCore/style/StyleScope.cpp:294
&gt; +// FIXME: Remove the code related to XSLT from Style::Scope.

Can you file a bug (or Radar) so we don&apos;t forget to do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364471</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-25 14:18:52 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #7)
&gt; Comment on attachment 324877 [details]
&gt; Cleanup
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=324877&amp;action=review
&gt; 
&gt; Looks good! r=me.
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:5082
&gt; &gt; +        RefPtr&lt;XSLTProcessor&gt; processor = XSLTProcessor::create();
&gt; 
&gt; auto?

Fixed.

&gt; &gt; Source/WebCore/style/StyleScope.cpp:294
&gt; &gt; +// FIXME: Remove the code related to XSLT from Style::Scope.
&gt; 
&gt; Can you file a bug (or Radar) so we don&apos;t forget to do this?

Filed webkit.org/b/178830</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364476</commentid>
    <comment_count>9</comment_count>
      <attachid>324877</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2017-10-25 14:27:42 -0700</bug_when>
    <thetext>Comment on attachment 324877
Cleanup

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

For what (little) I know about style resolution, this seems fine.
You should have an expert like Antti review, though.

&gt; Source/WebCore/dom/Document.cpp:5067
&gt; +void Document::applyPendingXSLTransformsNowIfScheduled()
&gt; +{
&gt; +    if (m_applyPendingXSLTransformsTimer.isActive())
&gt; +        applyPendingXSLTransformsTimerFired();
&gt; +}

Shouldn&apos;t you cancel the timer if it&apos;s active here?  It probably won&apos;t hurt anything if fired later, but it&apos;s work that can be avoided.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364477</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-25 14:28:14 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #9)
&gt; Comment on attachment 324877 [details]
&gt; Cleanup
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=324877&amp;action=review
&gt; 
&gt; For what (little) I know about style resolution, this seems fine.
&gt; You should have an expert like Antti review, though.
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:5067
&gt; &gt; +void Document::applyPendingXSLTransformsNowIfScheduled()
&gt; &gt; +{
&gt; &gt; +    if (m_applyPendingXSLTransformsTimer.isActive())
&gt; &gt; +        applyPendingXSLTransformsTimerFired();
&gt; &gt; +}
&gt; 
&gt; Shouldn&apos;t you cancel the timer if it&apos;s active here?  It probably won&apos;t hurt
&gt; anything if fired later, but it&apos;s work that can be avoided.

Oh, that&apos;s a good point. Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364545</commentid>
    <comment_count>11</comment_count>
      <attachid>324911</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-25 15:46:44 -0700</bug_when>
    <thetext>Created attachment 324911
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364546</commentid>
    <comment_count>12</comment_count>
      <attachid>324911</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-25 15:47:04 -0700</bug_when>
    <thetext>Comment on attachment 324911
Patch for landing

Wait for EWS again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364603</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-25 17:30:05 -0700</bug_when>
    <thetext>Committed r223999: &lt;https://trac.webkit.org/changeset/223999&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364621</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-10-25 18:30:36 -0700</bug_when>
    <thetext>Should we be worried at all about what happens before the timer fires? For example, what if something else removes the document from frame?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364634</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-25 19:27:26 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #14)
&gt; Should we be worried at all about what happens before the timer fires? For
&gt; example, what if something else removes the document from frame?

XSLTProcessor::createDocumentFromSource has a check for frame() ands doesn&apos;t replace document when the frame had been detached (i.e. when frame() returns nullptr in Document::applyPendingXSLTransformsTimerFired)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365397</commentid>
    <comment_count>16</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-10-27 10:01:04 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #13)
&gt; Committed r223999: &lt;https://trac.webkit.org/changeset/223999&gt;
This change caused multiple xsl LayoutTests to become flaky. See https://bugs.webkit.org/show_bug.cgi?id=178938</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365399</commentid>
    <comment_count>17</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-10-27 10:06:22 -0700</bug_when>
    <thetext>Reverted r223999 for reason:

Caused xsl LayoutTest flakiness.

Committed r224116: &lt;https://trac.webkit.org/changeset/224116&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365401</commentid>
    <comment_count>18</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-10-27 10:06:48 -0700</bug_when>
    <thetext>*** Bug 178938 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365448</commentid>
    <comment_count>19</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-10-27 11:38:38 -0700</bug_when>
    <thetext>When you get around to relanding this please make sure to add guards for ports not enabling XSLT. See https://bugs.webkit.org/show_bug.cgi?id=178930</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365691</commentid>
    <comment_count>20</comment_count>
      <attachid>325253</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-28 01:15:29 -0700</bug_when>
    <thetext>Created attachment 325253
Fixed the flaky tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365694</commentid>
    <comment_count>21</comment_count>
      <attachid>325253</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-28 02:18:03 -0700</bug_when>
    <thetext>Comment on attachment 325253
Fixed the flaky tests

Clearing flags on attachment: 325253

Committed r224146: &lt;https://trac.webkit.org/changeset/224146&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365695</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-28 02:18:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365696</commentid>
    <comment_count>23</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-28 02:51:50 -0700</bug_when>
    <thetext>For posterity, the flakiness was only observable on release builds of WebKit2 on my 15&quot; MBP.

The problem was that when m_applyPendingXSLTransformsTimer fires while parsing() is true, applyPendingXSLTransformsTimerFired would exit early without applying XLST. A subsequent call to applyPendingXSLTransformsNowIfScheduled would check !m_applyPendingXSLTransformsTimer.isActive() and exit early.

The flakiness was fixed by adding a boolean flag m_hasPendingXSLTransforms which is set whenever scheduleToApplyXSLTransforms is called instead of relying on m_applyPendingXSLTransformsTimer.isActive() being true in applyPendingXSLTransformsNowIfScheduled instead.

Because this race condition only happens when parsing() is true, finishParsing() would eventually call applyPendingXSLTransformsNowIfScheduled. As such, as we don&apos;t have to schedule a new timer there.

The latest patch also fixed the problem that Document::suspendScheduledTasks and Document::resumeScheduledTasks weren&apos;t suspending &amp; resuming m_hasPendingXSLTransforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502949</commentid>
    <comment_count>24</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:03:20 -0800</bug_when>
    <thetext>Mass moving XML DOM bugs to the &quot;DOM&quot; Component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324791</attachid>
            <date>2017-10-24 21:14:34 -0700</date>
            <delta_ts>2017-10-25 13:18:22 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>wip178715.patch</filename>
            <type>text/plain</type>
            <size>9799</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjIzOTM3KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY5LDYgKzQ2OSw3
IEBACiAgICAgLCBtX2RvY3VtZW50Q3JlYXRpb25UaW1lKE1vbm90b25pY1RpbWU6Om5vdygpKQog
ICAgICwgbV9zY3JpcHRSdW5uZXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRSdW5uZXI+KCp0aGlz
KSkKICAgICAsIG1fbW9kdWxlTG9hZGVyKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0TW9kdWxlTG9h
ZGVyPigqdGhpcykpCisgICAgLCBtX2FwcGx5UGVuZGluZ1hTTFRyYW5zZm9ybXNUaW1lcigqdGhp
cywgJkRvY3VtZW50OjphcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zVGltZXJGaXJlZCkKICAgICAs
IG1feG1sVmVyc2lvbihBU0NJSUxpdGVyYWwoIjEuMCIpKQogICAgICwgbV9jb25zdGFudFByb3Bl
cnR5TWFwKHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RhbnRQcm9wZXJ0eU1hcD4oKnRoaXMpKQogICAg
ICwgbV9kb2N1bWVudENsYXNzZXMoZG9jdW1lbnRDbGFzc2VzKQpAQCAtMjcyNSw2ICsyNzI2LDgg
QEAKICAgICAvLyByYW1pZmljYXRpb25zLCBhbmQgd2UgbmVlZCB0byBkZWNpZGUgd2hhdCBpcyB0
aGUgUmlnaHQgVGhpbmcgVG8gRG8odG0pCiAgICAgUmVmUHRyPEZyYW1lPiBmID0gZnJhbWUoKTsK
ICAgICBpZiAoZikgeworICAgICAgICBhcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zVGltZXJGaXJl
ZCgpOworCiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudExvYWRlciA9IGxvYWRlcigpKQogICAg
ICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnN0YXJ0SWNvbkxvYWRpbmcoKTsKIApAQCAtMjc3Myw3
ICsyNzc2LDcgQEAKICAgICB9CiAKICAgICBmcmFtZSgpLT5sb2FkZXIoKS5jaGVja0NhbGxJbXBs
aWNpdENsb3NlKCk7Ci0gICAgCisKICAgICAvLyBXZSB1c2VkIHRvIGZvcmNlIGEgc3luY2hyb25v
dXMgZGlzcGxheSBhbmQgZmx1c2ggaGVyZS4gIFRoaXMgcmVhbGx5IGlzbid0CiAgICAgLy8gbmVj
ZXNzYXJ5IGFuZCBjYW4gaW4gZmFjdCBiZSBhY3RpdmVseSBoYXJtZnVsIGlmIHBhZ2VzIGFyZSBs
b2FkaW5nIGF0IGEgcmF0ZSBvZiA+IDYwZnBzCiAgICAgLy8gKGlmIHlvdXIgcGxhdGZvcm0gaXMg
c3luY2luZyBmbHVzaGVzIGFuZCBsaW1pdGluZyB0aGVtIHRvIDYwZnBzKS4KQEAgLTUwNTAsMTgg
KzUwNTMsMzYgQEAKIAogI2lmIEVOQUJMRShYU0xUKQogCi12b2lkIERvY3VtZW50OjphcHBseVhT
TFRyYW5zZm9ybShQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qIHBpKQordm9pZCBEb2N1bWVudDo6c2No
ZWR1bGVUb0FwcGx5WFNMVHJhbnNmb3JtcygpCiB7Ci0gICAgUmVmUHRyPFhTTFRQcm9jZXNzb3I+
IHByb2Nlc3NvciA9IFhTTFRQcm9jZXNzb3I6OmNyZWF0ZSgpOwotICAgIHByb2Nlc3Nvci0+c2V0
WFNMU3R5bGVTaGVldChkb3duY2FzdDxYU0xTdHlsZVNoZWV0PihwaS0+c2hlZXQoKSkpOwotICAg
IFN0cmluZyByZXN1bHRNSU1FVHlwZTsKLSAgICBTdHJpbmcgbmV3U291cmNlOwotICAgIFN0cmlu
ZyByZXN1bHRFbmNvZGluZzsKLSAgICBpZiAoIXByb2Nlc3Nvci0+dHJhbnNmb3JtVG9TdHJpbmco
KnRoaXMsIHJlc3VsdE1JTUVUeXBlLCBuZXdTb3VyY2UsIHJlc3VsdEVuY29kaW5nKSkKKyAgICBp
ZiAoIW1fYXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc1RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAg
IG1fYXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc1RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOworfQor
ICAgIAordm9pZCBEb2N1bWVudDo6YXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc1RpbWVyRmlyZWQo
KQoreworICAgIGlmIChwYXJzaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAvLyBGSVhNRTog
SWYgdGhlIHRyYW5zZm9ybSBmYWlsZWQgd2Ugc2hvdWxkIHByb2JhYmx5IHJlcG9ydCBhbiBlcnJv
ciAobGlrZSBNb3ppbGxhIGRvZXMpLgotICAgIEZyYW1lKiBvd25lckZyYW1lID0gZnJhbWUoKTsK
LSAgICBwcm9jZXNzb3ItPmNyZWF0ZURvY3VtZW50RnJvbVNvdXJjZShuZXdTb3VyY2UsIHJlc3Vs
dEVuY29kaW5nLCByZXN1bHRNSU1FVHlwZSwgdGhpcywgb3duZXJGcmFtZSk7CisKKyAgICBBU1NF
UlQoTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjppc0V2ZW50QWxsb3dlZEluTWFpblRocmVhZCgp
KTsKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NpbmdJbnN0cnVjdGlvbiA6IHN0eWxlU2NvcGUoKS5j
b2xsZWN0WExTVHJhbnNmb3JtcygpKSB7CisgICAgICAgIEFTU0VSVChwcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24tPmlzWFNMKCkpOworCisgICAgICAgIC8vIERvbid0IGFwcGx5IFhTTCB0cmFuc2Zvcm1z
IHRvIGFscmVhZHkgdHJhbnNmb3JtZWQgZG9jdW1lbnRzIC0tIDxyZGFyOi8vcHJvYmxlbS80MTMy
ODA2PgorICAgICAgICBpZiAodHJhbnNmb3JtU291cmNlRG9jdW1lbnQoKSB8fCAhcHJvY2Vzc2lu
Z0luc3RydWN0aW9uLT5zaGVldCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFJl
ZlB0cjxYU0xUUHJvY2Vzc29yPiBwcm9jZXNzb3IgPSBYU0xUUHJvY2Vzc29yOjpjcmVhdGUoKTsK
KyAgICAgICAgcHJvY2Vzc29yLT5zZXRYU0xTdHlsZVNoZWV0KGRvd25jYXN0PFhTTFN0eWxlU2hl
ZXQ+KHByb2Nlc3NpbmdJbnN0cnVjdGlvbi0+c2hlZXQoKSkpOworICAgICAgICBTdHJpbmcgcmVz
dWx0TUlNRVR5cGU7CisgICAgICAgIFN0cmluZyBuZXdTb3VyY2U7CisgICAgICAgIFN0cmluZyBy
ZXN1bHRFbmNvZGluZzsKKyAgICAgICAgaWYgKCFwcm9jZXNzb3ItPnRyYW5zZm9ybVRvU3RyaW5n
KCp0aGlzLCByZXN1bHRNSU1FVHlwZSwgbmV3U291cmNlLCByZXN1bHRFbmNvZGluZykpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgLy8gRklYTUU6IElmIHRoZSB0cmFuc2Zvcm0gZmFp
bGVkIHdlIHNob3VsZCBwcm9iYWJseSByZXBvcnQgYW4gZXJyb3IgKGxpa2UgTW96aWxsYSBkb2Vz
KS4KKyAgICAgICAgcHJvY2Vzc29yLT5jcmVhdGVEb2N1bWVudEZyb21Tb3VyY2UobmV3U291cmNl
LCByZXN1bHRFbmNvZGluZywgcmVzdWx0TUlNRVR5cGUsIHRoaXMsIGZyYW1lKCkpOworLy8gICAg
ICAgIG1fZG9jdW1lbnQuYXBwbHlYU0xUcmFuc2Zvcm0ocHJvY2Vzc2luZ0luc3RydWN0aW9uLnB0
cigpOworICAgIH0KIH0KIAogdm9pZCBEb2N1bWVudDo6c2V0VHJhbnNmb3JtU291cmNlKHN0ZDo6
dW5pcXVlX3B0cjxUcmFuc2Zvcm1Tb3VyY2U+IHNvdXJjZSkKQEAgLTUyNDMsNiArNTI2NCw4IEBA
CiAgICAgQVNTRVJUKCFzY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKSB8fCBtX3JlYWR5U3RhdGUg
IT0gTG9hZGluZyk7CiAgICAgc2V0UGFyc2luZyhmYWxzZSk7CiAKKyAgICBSZWY8RG9jdW1lbnQ+
IHByb3RlY3RlZFRoaXMoKnRoaXMpOworCiAgICAgaWYgKCFtX2RvY3VtZW50VGltaW5nLmRvbUNv
bnRlbnRMb2FkZWRFdmVudFN0YXJ0KQogICAgICAgICBtX2RvY3VtZW50VGltaW5nLmRvbUNvbnRl
bnRMb2FkZWRFdmVudFN0YXJ0ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKQEAgLTUyNTIsNiAr
NTI3NSw4IEBACiAgICAgICAgIG1fZG9jdW1lbnRUaW1pbmcuZG9tQ29udGVudExvYWRlZEV2ZW50
RW5kID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAgICBpZiAoUmVmUHRyPEZyYW1lPiBmcmFt
ZSA9IHRoaXMtPmZyYW1lKCkpIHsKKyAgICAgICAgYXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc1Rp
bWVyRmlyZWQoKTsKKwogICAgICAgICAvLyBGcmFtZUxvYWRlcjo6ZmluaXNoZWRQYXJzaW5nKCkg
bWlnaHQgZW5kIHVwIGNhbGxpbmcgRG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UoKSBpZiBhbGwKICAg
ICAgICAgLy8gcmVzb3VyY2UgbG9hZHMgYXJlIGNvbXBsZXRlLiBIVE1MT2JqZWN0RWxlbWVudHMg
Y2FuIHN0YXJ0IGxvYWRpbmcgdGhlaXIgcmVzb3VyY2VzIGZyb20KICAgICAgICAgLy8gcG9zdCBh
dHRhY2ggY2FsbGJhY2tzIHRyaWdnZXJlZCBieSByZXNvbHZlU3R5bGUoKS4gVGhpcyBtZWFucyBp
ZiB3ZSBwYXJzZSBvdXQgYW4gPG9iamVjdD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZp
c2lvbiAyMjM5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtOTQ0LDcgKzk0NCw4IEBACiAgICAgdm9pZCBwb3BDdXJyZW50U2NyaXB0KCk7CiAK
ICNpZiBFTkFCTEUoWFNMVCkKLSAgICB2b2lkIGFwcGx5WFNMVHJhbnNmb3JtKFByb2Nlc3NpbmdJ
bnN0cnVjdGlvbiogcGkpOworICAgIHZvaWQgc2NoZWR1bGVUb0FwcGx5WFNMVHJhbnNmb3Jtcygp
OworICAgIHZvaWQgYXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc1RpbWVyRmlyZWQoKTsKICAgICBS
ZWZQdHI8RG9jdW1lbnQ+IHRyYW5zZm9ybVNvdXJjZURvY3VtZW50KCkgeyByZXR1cm4gbV90cmFu
c2Zvcm1Tb3VyY2VEb2N1bWVudDsgfQogICAgIHZvaWQgc2V0VHJhbnNmb3JtU291cmNlRG9jdW1l
bnQoRG9jdW1lbnQqIGRvYykgeyBtX3RyYW5zZm9ybVNvdXJjZURvY3VtZW50ID0gZG9jOyB9CiAK
QEAgLTE1NjAsNiArMTU2MSw3IEBACiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFRyYW5zZm9ybVNvdXJjZT4gbV90cmFuc2Zvcm1Tb3VyY2U7CiAgICAgUmVmUHRyPERvY3Vt
ZW50PiBtX3RyYW5zZm9ybVNvdXJjZURvY3VtZW50OworICAgIFRpbWVyIG1fYXBwbHlQZW5kaW5n
WFNMVHJhbnNmb3Jtc1RpbWVyOwogI2VuZGlmCiAKICAgICBTdHJpbmcgbV94bWxFbmNvZGluZzsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCShy
ZXZpc2lvbiAyMjM5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDcgKzE3OSw4IEBACiAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQoKS5zdHlsZVNjb3BlKCkucmVtb3ZlUGVuZGluZ1NoZWV0KCp0aGlzKTsKICNp
ZiBFTkFCTEUoWFNMVCkKICAgICAgICAgICAgICAgICBpZiAobV9pc1hTTCkKLSAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQoKS5zdHlsZVNjb3BlKCkuZmx1c2hQZW5kaW5nVXBkYXRlKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50KCkuc2NoZWR1bGVUb0FwcGx5WFNMVHJhbnNmb3Jt
cygpOworLy8gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50KCkuc3R5bGVTY29wZSgpLmZsdXNo
UGVuZGluZ1VwZGF0ZSgpOwogI2VuZGlmCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIw
Miw3ICsyMDMsOCBAQAogICAgICAgICAgICAgZG9jdW1lbnQoKS5zdHlsZVNjb3BlKCkucmVtb3Zl
UGVuZGluZ1NoZWV0KCp0aGlzKTsKICNpZiBFTkFCTEUoWFNMVCkKICAgICAgICAgaWYgKG1faXNY
U0wpCi0gICAgICAgICAgICBkb2N1bWVudCgpLnN0eWxlU2NvcGUoKS5mbHVzaFBlbmRpbmdVcGRh
dGUoKTsKKyAgICAgICAgICAgIGRvY3VtZW50KCkuc2NoZWR1bGVUb0FwcGx5WFNMVHJhbnNmb3Jt
cygpOworLy8gICAgICAgICAgICBkb2N1bWVudCgpLnN0eWxlU2NvcGUoKS5mbHVzaFBlbmRpbmdV
cGRhdGUoKTsKICNlbmRpZgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcAkocmV2aXNpb24gMjIzOTM3KQorKysgU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw2ICsyOTAs
MTkgQEAKICAgICAgICAgZGlkQ2hhbmdlQWN0aXZlU3R5bGVTaGVldENhbmRpZGF0ZXMoKTsKIH0K
IAorI2lmIEVOQUJMRShYU0xUKQorLy8gRklYTUU6IFJlbW92ZSB0aGUgY29kZSByZWxhdGVkIHRv
IFhTTFQgZnJvbSBTdHlsZTo6U2NvcGUuCitWZWN0b3I8UmVmPFByb2Nlc3NpbmdJbnN0cnVjdGlv
bj4+IFNjb3BlOjpjb2xsZWN0WExTVHJhbnNmb3JtcygpCit7CisgICAgVmVjdG9yPFJlZjxQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24+PiBwcm9jZXNzaW5nSW5zdHJ1Y3Rpb25zOworICAgIGZvciAoYXV0
byYgbm9kZSA6IG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzKSB7CisgICAgICAgIGlmIChpczxQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24+KCpub2RlKSAmJiBkb3duY2FzdDxQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24+KCpub2RlKS5pc1hTTCgpKQorICAgICAgICAgICAgcHJvY2Vzc2luZ0luc3RydWN0aW9u
cy5hcHBlbmQoZG93bmNhc3Q8UHJvY2Vzc2luZ0luc3RydWN0aW9uPigqbm9kZSkpOworICAgIH0K
KyAgICByZXR1cm4gcHJvY2Vzc2luZ0luc3RydWN0aW9uczsKK30KKyNlbmRpZgorCiB2b2lkIFNj
b3BlOjpjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHMoVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0Pj4m
IHNoZWV0cykKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQuc2V0dGluZ3MoKS5hdXRob3JBbmRVc2Vy
U3R5bGVzRW5hYmxlZCgpKQpAQCAtMjk2LDIxICszMDksMTIgQEAKICAgICAgICAgcmV0dXJuOwog
CiAgICAgZm9yIChhdXRvJiBub2RlIDogbV9zdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXMpIHsKLSAg
ICAgICAgU3R5bGVTaGVldCogc2hlZXQgPSBudWxscHRyOworICAgICAgICBSZWZQdHI8U3R5bGVT
aGVldD4gc2hlZXQ7CiAgICAgICAgIGlmIChpczxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+KCpub2Rl
KSkgewotICAgICAgICAgICAgLy8gUHJvY2Vzc2luZyBpbnN0cnVjdGlvbiAoWE1MIGRvY3VtZW50
cyBvbmx5KS4KKyAgICAgICAgICAgIGlmICghZG93bmNhc3Q8UHJvY2Vzc2luZ0luc3RydWN0aW9u
Pigqbm9kZSkuaXNDU1MoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IC8vIFdlIGRvbid0IHN1cHBvcnQgbGlua2luZyB0byBlbWJlZGRlZCBDU1Mgc3R5bGVzaGVldHMs
IHNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MjgxPiBmb3Ig
ZGlzY3Vzc2lvbi4KLSAgICAgICAgICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbiYgcGkgPSBkb3du
Y2FzdDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+KCpub2RlKTsKLSAgICAgICAgICAgIHNoZWV0ID0g
cGkuc2hlZXQoKTsKLSNpZiBFTkFCTEUoWFNMVCkKLSAgICAgICAgICAgIC8vIERvbid0IGFwcGx5
IFhTTCB0cmFuc2Zvcm1zIHRvIGFscmVhZHkgdHJhbnNmb3JtZWQgZG9jdW1lbnRzIC0tIDxyZGFy
Oi8vcHJvYmxlbS80MTMyODA2PgotICAgICAgICAgICAgaWYgKHBpLmlzWFNMKCkgJiYgIW1fZG9j
dW1lbnQudHJhbnNmb3JtU291cmNlRG9jdW1lbnQoKSkgewotICAgICAgICAgICAgICAgIC8vIERv
bid0IGFwcGx5IFhTTCB0cmFuc2Zvcm1zIHVudGlsIGxvYWRpbmcgaXMgZmluaXNoZWQuCi0gICAg
ICAgICAgICAgICAgaWYgKCFtX2RvY3VtZW50LnBhcnNpbmcoKSkKLSAgICAgICAgICAgICAgICAg
ICAgbV9kb2N1bWVudC5hcHBseVhTTFRyYW5zZm9ybSgmcGkpOwotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KLSNlbmRpZgorICAgICAgICAgICAgc2hlZXQgPSBkb3duY2Fz
dDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+KCpub2RlKS5zaGVldCgpOwogICAgICAgICB9IGVsc2Ug
aWYgKGlzPEhUTUxMaW5rRWxlbWVudD4oKm5vZGUpIHx8IGlzPEhUTUxTdHlsZUVsZW1lbnQ+KCpu
b2RlKSB8fCBpczxTVkdTdHlsZUVsZW1lbnQ+KCpub2RlKSkgewogICAgICAgICAgICAgRWxlbWVu
dCYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKTsKICAgICAgICAgICAgIEF0b21p
Y1N0cmluZyB0aXRsZSA9IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0
aXRsZUF0dHIpOwpAQCAtMzY0LDcgKzM2OCw3IEBACiAgICAgICAgICAgICAgICAgc2hlZXQgPSBu
dWxscHRyOwogICAgICAgICB9CiAgICAgICAgIGlmIChzaGVldCkKLSAgICAgICAgICAgIHNoZWV0
cy5hcHBlbmQoc2hlZXQpOworICAgICAgICAgICAgc2hlZXRzLmFwcGVuZChXVEZNb3ZlKHNoZWV0
KSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oCShyZXZpc2lv
biAyMjM5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwOCw2ICsxMDgsMTAgQEAKICAgICBib29sIGhhc1BlbmRpbmdVcGRhdGUoKSBj
b25zdCB7IHJldHVybiBtX3BlbmRpbmdVcGRhdGUgfHwgbV9oYXNEZXNjZW5kYW50V2l0aFBlbmRp
bmdVcGRhdGU7IH0KICAgICB2b2lkIGZsdXNoUGVuZGluZ1VwZGF0ZSgpOwogCisjaWYgRU5BQkxF
KFhTTFQpCisgICAgVmVjdG9yPFJlZjxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+PiBjb2xsZWN0WExT
VHJhbnNmb3JtcygpOworI2VuZGlmCisKICAgICBTdHlsZVJlc29sdmVyJiByZXNvbHZlcigpOwog
ICAgIFN0eWxlUmVzb2x2ZXIqIHJlc29sdmVySWZFeGlzdHMoKTsKICAgICB2b2lkIGNsZWFyUmVz
b2x2ZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAJKHJldmlzaW9uIDIyMzkzNykKKysrIFNvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTMzMyw3ICsxMzMzLDggQEAKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0VHJhbnNm
b3JtU291cmNlKHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtU291cmNlPihkb2MpKTsKIAogICAg
ICAgICBkb2N1bWVudCgpLT5zZXRQYXJzaW5nKGZhbHNlKTsgLy8gTWFrZSB0aGUgZG9jdW1lbnQg
dGhpbmsgaXQncyBkb25lLCBzbyBpdCB3aWxsIGFwcGx5IFhTTCBzdHlsZXNoZWV0cy4KLSAgICAg
ICAgZG9jdW1lbnQoKS0+c3R5bGVTY29wZSgpLmRpZENoYW5nZUFjdGl2ZVN0eWxlU2hlZXRDYW5k
aWRhdGVzKCk7CisgICAgICAgIGRvY3VtZW50KCktPmFwcGx5UGVuZGluZ1hTTFRyYW5zZm9ybXNU
aW1lckZpcmVkKCk7CisvLyAgICAgICAgZG9jdW1lbnQoKS0+c3R5bGVTY29wZSgpLmRpZENoYW5n
ZUFjdGl2ZVN0eWxlU2hlZXRDYW5kaWRhdGVzKCk7CiAKICAgICAgICAgLy8gc3R5bGVSZXNvbHZl
ckNoYW5nZWQoKSBjYWxsIGNhbiBkZXRhY2ggdGhlIHBhcnNlciBhbmQgbnVsbCBvdXQgaXRzIGRv
Y3VtZW50LgogICAgICAgICAvLyBJbiB0aGF0IGNhc2UsIHdlIGp1c3QgYmFpbCBvdXQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324877</attachid>
            <date>2017-10-25 13:18:25 -0700</date>
            <delta_ts>2017-10-25 15:46:42 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-178715-20171025131824.patch</filename>
            <type>text/plain</type>
            <size>12986</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE3LTEwLTI1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFN0eWxlOjpTY29wZTo6Zmx1c2hQ
ZW5kaW5nVXBkYXRlKCkgY2FuIHJlcGxhY2UgdGhlIGVudGlyZSBkb2N1bWVudCBpbiBYU0xUUHJv
Y2Vzc29yOjpjcmVhdGVEb2N1bWVudEZyb21Tb3VyY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODcxNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzUxNDQ2NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQXBwbHkgWExTIHRyYW5mb3JtcyB3aGVuIGEgMHMgdGltZXIgZmlyZXMgb3IgdGhlIGRvY3Vt
ZW50IGZpbmlzaGVzIHBhcnNpbmcgb3IgbG9hZGluZyB3aGljaGV2ZXIgY29tZXMgZmlyc3QKKyAg
ICAgICAgaW5zdGVhZCBvZiBpbiB0aGUgbWlkZGxlIG9mIGNvbGxlY3RpbmcgYSBsaXN0IG9mIHN0
eWxlc2hlZXRzLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpEb2N1bWVudCk6IEluaXRpYWxpemUgdGhlIG5ld2x5IGFkZGVkIHRpbWVy
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UpOiBBcHBseSBhbnkg
cGVuZGluZyBYU0xUIGJlZm9yZSB3ZSBmaXJlIGxvYWQgZXZlbnRzIHNpbmNlIHNvbWUgb2YgdGhl
IGV2ZW50CisgICAgICAgIGhhbmRsZXJzIG1heSBiZSBleHBlY3RpbmcgdG8gc2VlIHRoZSBkb2N1
bWVudCBhZnRlciBYU0xUIGhhZCBiZWVuIGFwcGxpZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6c2NoZWR1bGVUb0FwcGx5WFNMVHJhbnNmb3Jtcyk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmFwcGx5UGVuZGluZ1hTTFRyYW5zZm9ybXNOb3dJZlNjaGVkdWxlZCk6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFwcGx5UGVuZGluZ1hTTFRyYW5z
Zm9ybXNUaW1lckZpcmVkKTogQWRkZWQuIE1vdmVkIHRoZSBsb2dpYyB0byBhcHBseSBYU0wgdHJh
bnNmb3JtcyBmcm9tCisgICAgICAgIFN0eWxlOjpTY29wZTo6Y29sbGVjdEFjdGl2ZVN0eWxlU2hl
ZXRzLCBhbmQgbWVyZ2VkIGFwcGx5WFNMVHJhbnNmb3JtIGludG8gdGhpcyBmdW5jdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphcHBseVhTTFRyYW5zZm9ybSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKTogQXBwbHkgWFNMVCBy
aWdodCBiZWZvcmUgdXBkYXRpbmcgdGhlIHN0eWxlLiBUaGlzIGlzIHdoZXJlIHVzZWQgdG8gYXBw
bHkKKyAgICAgICAgaW5saW5lIFhTTFQgYW5kIGl0IGhhcHBlbnMgbXVjaCBlYXJsaWVyIHRoYW4g
aW1wbGljaXRDbG9zZS4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20v
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJ
bnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoZWV0KTogU2NoZWR1bGUgWFNMVCBpbiB0aGUgZG9jdW1l
bnQgaW5zdGVhZCBvZiBmbHVzaGluZyBwZW5kaW5nCisgICAgICAgIHN0eWxlc2hlZXRzLCB3aGlj
aCB3b3VsZCBoYXZlIHN5bmNocm9ub3VzbHkgYXBwbGllZCBYU0xULiBXZSBjYW4ndCBhcHBseSBY
U0xUIHN5bmNocm9ub3VzbHkgaGVyZSBiZWNhdXNlIHRoaXMKKyAgICAgICAgZnVuY3Rpb24gY2Fu
IGJlIGNhbGxlZCBmcm9tIGEgbm9uLXNjcmlwdC1yZXNpbGllbnQgY2FsbCBzdGFjay4KKyAgICAg
ICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2hlZXRMb2FkZWQpOiBEaXR0by4K
KyAgICAgICAgKiBzdHlsZS9TdHlsZVNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpTY29wZTo6Y29sbGVjdFhMU1RyYW5zZm9ybXMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpTY29wZTo6Y29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzKTogUmVtb3ZlZCB0aGUgY29k
ZSB0byBhcHBseSBYU0xULiBTa2lwIFByb2Nlc3NpbmdJbnN0cnVjdGlvbnMKKyAgICAgICAgdGhh
dCBhcHBsaWVzIFhTTFQuIEFsc28gdXNlIFJlZlB0cjxTdHlsZVNoZWV0PiBpbnN0ZWFkIG9mIGEg
cmF3IHBvaW50ZXIgdG8gc3RvcmUgU3R5bGVTaGVldC4KKyAgICAgICAgKiBzdHlsZS9TdHlsZVNj
b3BlLmg6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKTogQXBwbHkgYW55
IHBlbmRpbmcgWFNMVHMgc3luY2hyb25vdXNseSBoZXJlIGFzIHRoZSBjb21tZW50IHN1Z2dlc3Rz
LgorCiAyMDE3LTEwLTI1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVOUEFDS19GTElQX1kgaXMgYnJva2VuIGZvciBNU0UtYmFja2VkIHZpZGVvcwpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMjM5MzcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjksNiArNDY5LDcgQEAgRG9j
dW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVQogICAgICwgbV9kb2N1bWVudENy
ZWF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSkKICAgICAsIG1fc2NyaXB0UnVubmVyKHN0
ZDo6bWFrZV91bmlxdWU8U2NyaXB0UnVubmVyPigqdGhpcykpCiAgICAgLCBtX21vZHVsZUxvYWRl
cihzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1vZHVsZUxvYWRlcj4oKnRoaXMpKQorICAgICwgbV9h
cHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zVGltZXIoKnRoaXMsICZEb2N1bWVudDo6YXBwbHlQZW5k
aW5nWFNMVHJhbnNmb3Jtc1RpbWVyRmlyZWQpCiAgICAgLCBtX3htbFZlcnNpb24oQVNDSUlMaXRl
cmFsKCIxLjAiKSkKICAgICAsIG1fY29uc3RhbnRQcm9wZXJ0eU1hcChzdGQ6Om1ha2VfdW5pcXVl
PENvbnN0YW50UHJvcGVydHlNYXA+KCp0aGlzKSkKICAgICAsIG1fZG9jdW1lbnRDbGFzc2VzKGRv
Y3VtZW50Q2xhc3NlcykKQEAgLTI3MjUsNiArMjcyNiw5IEBAIHZvaWQgRG9jdW1lbnQ6OmltcGxp
Y2l0Q2xvc2UoKQogICAgIC8vIHJhbWlmaWNhdGlvbnMsIGFuZCB3ZSBuZWVkIHRvIGRlY2lkZSB3
aGF0IGlzIHRoZSBSaWdodCBUaGluZyBUbyBEbyh0bSkKICAgICBSZWZQdHI8RnJhbWU+IGYgPSBm
cmFtZSgpOwogICAgIGlmIChmKSB7CisgICAgICAgIC8vIEFwcGx5IFhTTCB0cmFuc2Zvcm1zIGJl
Zm9yZSBsb2FkIGV2ZW50cyBzbyB0aGF0IGV2ZW50IGhhbmRsZXJzIGNhbiBhY2Nlc3MgdGhlIHRy
YW5zZm9ybWVkIERPTSB0cmVlLgorICAgICAgICBhcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zTm93
SWZTY2hlZHVsZWQoKTsKKwogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnRMb2FkZXIgPSBsb2Fk
ZXIoKSkKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zdGFydEljb25Mb2FkaW5nKCk7CiAK
QEAgLTUwNTAsMTggKzUwNTQsNDEgQEAgdm9pZCBEb2N1bWVudDo6cG9wQ3VycmVudFNjcmlwdCgp
CiAKICNpZiBFTkFCTEUoWFNMVCkKIAotdm9pZCBEb2N1bWVudDo6YXBwbHlYU0xUcmFuc2Zvcm0o
UHJvY2Vzc2luZ0luc3RydWN0aW9uKiBwaSkKK3ZvaWQgRG9jdW1lbnQ6OnNjaGVkdWxlVG9BcHBs
eVhTTFRyYW5zZm9ybXMoKQogewotICAgIFJlZlB0cjxYU0xUUHJvY2Vzc29yPiBwcm9jZXNzb3Ig
PSBYU0xUUHJvY2Vzc29yOjpjcmVhdGUoKTsKLSAgICBwcm9jZXNzb3ItPnNldFhTTFN0eWxlU2hl
ZXQoZG93bmNhc3Q8WFNMU3R5bGVTaGVldD4ocGktPnNoZWV0KCkpKTsKLSAgICBTdHJpbmcgcmVz
dWx0TUlNRVR5cGU7Ci0gICAgU3RyaW5nIG5ld1NvdXJjZTsKLSAgICBTdHJpbmcgcmVzdWx0RW5j
b2Rpbmc7Ci0gICAgaWYgKCFwcm9jZXNzb3ItPnRyYW5zZm9ybVRvU3RyaW5nKCp0aGlzLCByZXN1
bHRNSU1FVHlwZSwgbmV3U291cmNlLCByZXN1bHRFbmNvZGluZykpCi0gICAgICAgIHJldHVybjsK
LSAgICAvLyBGSVhNRTogSWYgdGhlIHRyYW5zZm9ybSBmYWlsZWQgd2Ugc2hvdWxkIHByb2JhYmx5
IHJlcG9ydCBhbiBlcnJvciAobGlrZSBNb3ppbGxhIGRvZXMpLgotICAgIEZyYW1lKiBvd25lckZy
YW1lID0gZnJhbWUoKTsKLSAgICBwcm9jZXNzb3ItPmNyZWF0ZURvY3VtZW50RnJvbVNvdXJjZShu
ZXdTb3VyY2UsIHJlc3VsdEVuY29kaW5nLCByZXN1bHRNSU1FVHlwZSwgdGhpcywgb3duZXJGcmFt
ZSk7CisgICAgaWYgKCFtX2FwcGx5UGVuZGluZ1hTTFRyYW5zZm9ybXNUaW1lci5pc0FjdGl2ZSgp
KQorICAgICAgICBtX2FwcGx5UGVuZGluZ1hTTFRyYW5zZm9ybXNUaW1lci5zdGFydE9uZVNob3Qo
MF9zKTsKK30KKwordm9pZCBEb2N1bWVudDo6YXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc05vd0lm
U2NoZWR1bGVkKCkKK3sKKyAgICBpZiAobV9hcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zVGltZXIu
aXNBY3RpdmUoKSkKKyAgICAgICAgYXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc1RpbWVyRmlyZWQo
KTsKK30KKwordm9pZCBEb2N1bWVudDo6YXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc1RpbWVyRmly
ZWQoKQoreworICAgIGlmIChwYXJzaW5nKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VS
VChOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OmlzRXZlbnRBbGxvd2VkSW5NYWluVGhyZWFkKCkp
OworICAgIGZvciAoYXV0byYgcHJvY2Vzc2luZ0luc3RydWN0aW9uIDogc3R5bGVTY29wZSgpLmNv
bGxlY3RYTFNUcmFuc2Zvcm1zKCkpIHsKKyAgICAgICAgQVNTRVJUKHByb2Nlc3NpbmdJbnN0cnVj
dGlvbi0+aXNYU0woKSk7CisKKyAgICAgICAgLy8gRG9uJ3QgYXBwbHkgWFNMIHRyYW5zZm9ybXMg
dG8gYWxyZWFkeSB0cmFuc2Zvcm1lZCBkb2N1bWVudHMgLS0gPHJkYXI6Ly9wcm9ibGVtLzQxMzI4
MDY+CisgICAgICAgIGlmICh0cmFuc2Zvcm1Tb3VyY2VEb2N1bWVudCgpIHx8ICFwcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24tPnNoZWV0KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgUmVm
UHRyPFhTTFRQcm9jZXNzb3I+IHByb2Nlc3NvciA9IFhTTFRQcm9jZXNzb3I6OmNyZWF0ZSgpOwor
ICAgICAgICBwcm9jZXNzb3ItPnNldFhTTFN0eWxlU2hlZXQoZG93bmNhc3Q8WFNMU3R5bGVTaGVl
dD4ocHJvY2Vzc2luZ0luc3RydWN0aW9uLT5zaGVldCgpKSk7CisgICAgICAgIFN0cmluZyByZXN1
bHRNSU1FVHlwZTsKKyAgICAgICAgU3RyaW5nIG5ld1NvdXJjZTsKKyAgICAgICAgU3RyaW5nIHJl
c3VsdEVuY29kaW5nOworICAgICAgICBpZiAoIXByb2Nlc3Nvci0+dHJhbnNmb3JtVG9TdHJpbmco
KnRoaXMsIHJlc3VsdE1JTUVUeXBlLCBuZXdTb3VyY2UsIHJlc3VsdEVuY29kaW5nKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAvLyBGSVhNRTogSWYgdGhlIHRyYW5zZm9ybSBmYWls
ZWQgd2Ugc2hvdWxkIHByb2JhYmx5IHJlcG9ydCBhbiBlcnJvciAobGlrZSBNb3ppbGxhIGRvZXMp
LgorICAgICAgICBwcm9jZXNzb3ItPmNyZWF0ZURvY3VtZW50RnJvbVNvdXJjZShuZXdTb3VyY2Us
IHJlc3VsdEVuY29kaW5nLCByZXN1bHRNSU1FVHlwZSwgdGhpcywgZnJhbWUoKSk7CisgICAgfQog
fQogCiB2b2lkIERvY3VtZW50OjpzZXRUcmFuc2Zvcm1Tb3VyY2Uoc3RkOjp1bmlxdWVfcHRyPFRy
YW5zZm9ybVNvdXJjZT4gc291cmNlKQpAQCAtNTI0Myw2ICs1MjcwLDggQEAgdm9pZCBEb2N1bWVu
dDo6ZmluaXNoZWRQYXJzaW5nKCkKICAgICBBU1NFUlQoIXNjcmlwdGFibGVEb2N1bWVudFBhcnNl
cigpIHx8IG1fcmVhZHlTdGF0ZSAhPSBMb2FkaW5nKTsKICAgICBzZXRQYXJzaW5nKGZhbHNlKTsK
IAorICAgIFJlZjxEb2N1bWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CisKICAgICBpZiAoIW1f
ZG9jdW1lbnRUaW1pbmcuZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnQpCiAgICAgICAgIG1fZG9j
dW1lbnRUaW1pbmcuZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnQgPSBNb25vdG9uaWNUaW1lOjpu
b3coKTsKIApAQCAtNTI1Miw2ICs1MjgxLDggQEAgdm9pZCBEb2N1bWVudDo6ZmluaXNoZWRQYXJz
aW5nKCkKICAgICAgICAgbV9kb2N1bWVudFRpbWluZy5kb21Db250ZW50TG9hZGVkRXZlbnRFbmQg
PSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAgIGlmIChSZWZQdHI8RnJhbWU+IGZyYW1lID0g
dGhpcy0+ZnJhbWUoKSkgeworICAgICAgICBhcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zTm93SWZT
Y2hlZHVsZWQoKTsKKwogICAgICAgICAvLyBGcmFtZUxvYWRlcjo6ZmluaXNoZWRQYXJzaW5nKCkg
bWlnaHQgZW5kIHVwIGNhbGxpbmcgRG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UoKSBpZiBhbGwKICAg
ICAgICAgLy8gcmVzb3VyY2UgbG9hZHMgYXJlIGNvbXBsZXRlLiBIVE1MT2JqZWN0RWxlbWVudHMg
Y2FuIHN0YXJ0IGxvYWRpbmcgdGhlaXIgcmVzb3VyY2VzIGZyb20KICAgICAgICAgLy8gcG9zdCBh
dHRhY2ggY2FsbGJhY2tzIHRyaWdnZXJlZCBieSByZXNvbHZlU3R5bGUoKS4gVGhpcyBtZWFucyBp
ZiB3ZSBwYXJzZSBvdXQgYW4gPG9iamVjdD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZp
c2lvbiAyMjM5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtOTQ0LDcgKzk0NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvcEN1cnJlbnRTY3Jp
cHQoKTsKIAogI2lmIEVOQUJMRShYU0xUKQotICAgIHZvaWQgYXBwbHlYU0xUcmFuc2Zvcm0oUHJv
Y2Vzc2luZ0luc3RydWN0aW9uKiBwaSk7CisgICAgdm9pZCBzY2hlZHVsZVRvQXBwbHlYU0xUcmFu
c2Zvcm1zKCk7CisgICAgdm9pZCBhcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zTm93SWZTY2hlZHVs
ZWQoKTsKICAgICBSZWZQdHI8RG9jdW1lbnQ+IHRyYW5zZm9ybVNvdXJjZURvY3VtZW50KCkgeyBy
ZXR1cm4gbV90cmFuc2Zvcm1Tb3VyY2VEb2N1bWVudDsgfQogICAgIHZvaWQgc2V0VHJhbnNmb3Jt
U291cmNlRG9jdW1lbnQoRG9jdW1lbnQqIGRvYykgeyBtX3RyYW5zZm9ybVNvdXJjZURvY3VtZW50
ID0gZG9jOyB9CiAKQEAgLTE1NTgsOCArMTU1OSwxMSBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxS
ZWZQdHI8SFRNTFNjcmlwdEVsZW1lbnQ+PiBtX2N1cnJlbnRTY3JpcHRTdGFjazsKIAogI2lmIEVO
QUJMRShYU0xUKQorICAgIHZvaWQgYXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc1RpbWVyRmlyZWQo
KTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc2Zvcm1Tb3VyY2U+IG1fdHJhbnNmb3JtU291
cmNlOwogICAgIFJlZlB0cjxEb2N1bWVudD4gbV90cmFuc2Zvcm1Tb3VyY2VEb2N1bWVudDsKKyAg
ICBUaW1lciBtX2FwcGx5UGVuZGluZ1hTTFRyYW5zZm9ybXNUaW1lcjsKICNlbmRpZgogCiAgICAg
U3RyaW5nIG1feG1sRW5jb2Rpbmc7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmNwcAkocmV2aXNpb24gMjIzOTM3KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsx
MjYsNyBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoCiAgICAgICAg
ICAgICAgICAgVVJMIGZpbmFsVVJMKFBhcnNlZFVSTFN0cmluZywgbV9sb2NhbEhyZWYpOwogICAg
ICAgICAgICAgICAgIG1fc2hlZXQgPSBYU0xTdHlsZVNoZWV0OjpjcmVhdGVFbWJlZGRlZCh0aGlz
LCBmaW5hbFVSTCk7CiAgICAgICAgICAgICAgICAgbV9sb2FkaW5nID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgZG9jdW1lbnQoKS5zY2hlZHVsZVRvQXBwbHlYU0xUcmFuc2Zvcm1zKCk7CiAgICAg
ICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgfSBlbHNlIHsKQEAgLTE3OSw3ICsxODAsNyBAQCB2
b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoCiAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQoKS5zdHlsZVNjb3BlKCkucmVtb3ZlUGVuZGluZ1NoZWV0KCp0aGlzKTsKICNpZiBF
TkFCTEUoWFNMVCkKICAgICAgICAgICAgICAgICBpZiAobV9pc1hTTCkKLSAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQoKS5zdHlsZVNjb3BlKCkuZmx1c2hQZW5kaW5nVXBkYXRlKCk7CisgICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50KCkuc2NoZWR1bGVUb0FwcGx5WFNMVHJhbnNmb3Jtcygp
OwogI2VuZGlmCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIwMiw3ICsyMDMsNyBAQCBi
b29sIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2hlZXRMb2FkZWQoCiAgICAgICAgICAgICBkb2N1
bWVudCgpLnN0eWxlU2NvcGUoKS5yZW1vdmVQZW5kaW5nU2hlZXQoKnRoaXMpOwogI2lmIEVOQUJM
RShYU0xUKQogICAgICAgICBpZiAobV9pc1hTTCkKLSAgICAgICAgICAgIGRvY3VtZW50KCkuc3R5
bGVTY29wZSgpLmZsdXNoUGVuZGluZ1VwZGF0ZSgpOworICAgICAgICAgICAgZG9jdW1lbnQoKS5z
Y2hlZHVsZVRvQXBwbHlYU0xUcmFuc2Zvcm1zKCk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAJKHJldmlzaW9u
IDIyMzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOTAsMjcgKzI5MCwzMSBAQCB2b2lkIFNjb3BlOjpyZW1vdmVTdHlsZVNoZWV0
Q2FuZGlkYXRlTm9kCiAgICAgICAgIGRpZENoYW5nZUFjdGl2ZVN0eWxlU2hlZXRDYW5kaWRhdGVz
KCk7CiB9CiAKKyNpZiBFTkFCTEUoWFNMVCkKKy8vIEZJWE1FOiBSZW1vdmUgdGhlIGNvZGUgcmVs
YXRlZCB0byBYU0xUIGZyb20gU3R5bGU6OlNjb3BlLgorVmVjdG9yPFJlZjxQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24+PiBTY29wZTo6Y29sbGVjdFhMU1RyYW5zZm9ybXMoKQoreworICAgIFZlY3RvcjxS
ZWY8UHJvY2Vzc2luZ0luc3RydWN0aW9uPj4gcHJvY2Vzc2luZ0luc3RydWN0aW9uczsKKyAgICBm
b3IgKGF1dG8mIG5vZGUgOiBtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2RlcykgeworICAgICAgICBp
ZiAoaXM8UHJvY2Vzc2luZ0luc3RydWN0aW9uPigqbm9kZSkgJiYgZG93bmNhc3Q8UHJvY2Vzc2lu
Z0luc3RydWN0aW9uPigqbm9kZSkuaXNYU0woKSkKKyAgICAgICAgICAgIHByb2Nlc3NpbmdJbnN0
cnVjdGlvbnMuYXBwZW5kKGRvd25jYXN0PFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4oKm5vZGUpKTsK
KyAgICB9CisgICAgcmV0dXJuIHByb2Nlc3NpbmdJbnN0cnVjdGlvbnM7Cit9CisjZW5kaWYKKwog
dm9pZCBTY29wZTo6Y29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzKFZlY3RvcjxSZWZQdHI8U3R5bGVT
aGVldD4+JiBzaGVldHMpCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50LnNldHRpbmdzKCkuYXV0aG9y
QW5kVXNlclN0eWxlc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChhdXRv
JiBub2RlIDogbV9zdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXMpIHsKLSAgICAgICAgU3R5bGVTaGVl
dCogc2hlZXQgPSBudWxscHRyOworICAgICAgICBSZWZQdHI8U3R5bGVTaGVldD4gc2hlZXQ7CiAg
ICAgICAgIGlmIChpczxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+KCpub2RlKSkgewotICAgICAgICAg
ICAgLy8gUHJvY2Vzc2luZyBpbnN0cnVjdGlvbiAoWE1MIGRvY3VtZW50cyBvbmx5KS4KKyAgICAg
ICAgICAgIGlmICghZG93bmNhc3Q8UHJvY2Vzc2luZ0luc3RydWN0aW9uPigqbm9kZSkuaXNDU1Mo
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIC8vIFdlIGRvbid0IHN1
cHBvcnQgbGlua2luZyB0byBlbWJlZGRlZCBDU1Mgc3R5bGVzaGVldHMsIHNlZSA8aHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MjgxPiBmb3IgZGlzY3Vzc2lvbi4KLSAg
ICAgICAgICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbiYgcGkgPSBkb3duY2FzdDxQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24+KCpub2RlKTsKLSAgICAgICAgICAgIHNoZWV0ID0gcGkuc2hlZXQoKTsKLSNp
ZiBFTkFCTEUoWFNMVCkKLSAgICAgICAgICAgIC8vIERvbid0IGFwcGx5IFhTTCB0cmFuc2Zvcm1z
IHRvIGFscmVhZHkgdHJhbnNmb3JtZWQgZG9jdW1lbnRzIC0tIDxyZGFyOi8vcHJvYmxlbS80MTMy
ODA2PgotICAgICAgICAgICAgaWYgKHBpLmlzWFNMKCkgJiYgIW1fZG9jdW1lbnQudHJhbnNmb3Jt
U291cmNlRG9jdW1lbnQoKSkgewotICAgICAgICAgICAgICAgIC8vIERvbid0IGFwcGx5IFhTTCB0
cmFuc2Zvcm1zIHVudGlsIGxvYWRpbmcgaXMgZmluaXNoZWQuCi0gICAgICAgICAgICAgICAgaWYg
KCFtX2RvY3VtZW50LnBhcnNpbmcoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9kb2N1bWVudC5h
cHBseVhTTFRyYW5zZm9ybSgmcGkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KLSNlbmRpZgorICAgICAgICAgICAgc2hlZXQgPSBkb3duY2FzdDxQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24+KCpub2RlKS5zaGVldCgpOwogICAgICAgICB9IGVsc2UgaWYgKGlzPEhUTUxMaW5r
RWxlbWVudD4oKm5vZGUpIHx8IGlzPEhUTUxTdHlsZUVsZW1lbnQ+KCpub2RlKSB8fCBpczxTVkdT
dHlsZUVsZW1lbnQ+KCpub2RlKSkgewogICAgICAgICAgICAgRWxlbWVudCYgZWxlbWVudCA9IGRv
d25jYXN0PEVsZW1lbnQ+KCpub2RlKTsKICAgICAgICAgICAgIEF0b21pY1N0cmluZyB0aXRsZSA9
IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0aXRsZUF0dHIpOwpAQCAt
MzY0LDcgKzM2OCw3IEBAIHZvaWQgU2NvcGU6OmNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0cyhWZWMK
ICAgICAgICAgICAgICAgICBzaGVldCA9IG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KHNoZWV0KQotICAgICAgICAgICAgc2hlZXRzLmFwcGVuZChzaGVldCk7CisgICAgICAgICAgICBz
aGVldHMuYXBwZW5kKFdURk1vdmUoc2hlZXQpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZVNjb3BlLmgJKHJldmlzaW9uIDIyMzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCwxMCBAQCBwdWJs
aWM6CiAgICAgYm9vbCBoYXNQZW5kaW5nVXBkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9wZW5kaW5n
VXBkYXRlIHx8IG1faGFzRGVzY2VuZGFudFdpdGhQZW5kaW5nVXBkYXRlOyB9CiAgICAgdm9pZCBm
bHVzaFBlbmRpbmdVcGRhdGUoKTsKIAorI2lmIEVOQUJMRShYU0xUKQorICAgIFZlY3RvcjxSZWY8
UHJvY2Vzc2luZ0luc3RydWN0aW9uPj4gY29sbGVjdFhMU1RyYW5zZm9ybXMoKTsKKyNlbmRpZgor
CiAgICAgU3R5bGVSZXNvbHZlciYgcmVzb2x2ZXIoKTsKICAgICBTdHlsZVJlc29sdmVyKiByZXNv
bHZlcklmRXhpc3RzKCk7CiAgICAgdm9pZCBjbGVhclJlc29sdmVyKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIu
Y3BwCShyZXZpc2lvbiAyMjM5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyTGlieG1sMi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMzMsNyArMTMzMyw3
IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKCkKICAgICAgICAgZG9jdW1lbnQoKS0+
c2V0VHJhbnNmb3JtU291cmNlKHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtU291cmNlPihkb2Mp
KTsKIAogICAgICAgICBkb2N1bWVudCgpLT5zZXRQYXJzaW5nKGZhbHNlKTsgLy8gTWFrZSB0aGUg
ZG9jdW1lbnQgdGhpbmsgaXQncyBkb25lLCBzbyBpdCB3aWxsIGFwcGx5IFhTTCBzdHlsZXNoZWV0
cy4KLSAgICAgICAgZG9jdW1lbnQoKS0+c3R5bGVTY29wZSgpLmRpZENoYW5nZUFjdGl2ZVN0eWxl
U2hlZXRDYW5kaWRhdGVzKCk7CisgICAgICAgIGRvY3VtZW50KCktPmFwcGx5UGVuZGluZ1hTTFRy
YW5zZm9ybXNOb3dJZlNjaGVkdWxlZCgpOwogCiAgICAgICAgIC8vIHN0eWxlUmVzb2x2ZXJDaGFu
Z2VkKCkgY2FsbCBjYW4gZGV0YWNoIHRoZSBwYXJzZXIgYW5kIG51bGwgb3V0IGl0cyBkb2N1bWVu
dC4KICAgICAgICAgLy8gSW4gdGhhdCBjYXNlLCB3ZSBqdXN0IGJhaWwgb3V0Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324911</attachid>
            <date>2017-10-25 15:46:44 -0700</date>
            <delta_ts>2017-10-28 01:15:27 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-178715-20171025154644.patch</filename>
            <type>text/plain</type>
            <size>13050</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE3LTEwLTI1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFN0eWxlOjpTY29wZTo6Zmx1c2hQ
ZW5kaW5nVXBkYXRlKCkgY2FuIHJlcGxhY2UgdGhlIGVudGlyZSBkb2N1bWVudCBpbiBYU0xUUHJv
Y2Vzc29yOjpjcmVhdGVEb2N1bWVudEZyb21Tb3VyY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODcxNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzUxNDQ2NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAg
ICBBcHBseSBYTFMgdHJhbmZvcm1zIHdoZW4gYSAwcyB0aW1lciBmaXJlcyBvciB0aGUgZG9jdW1l
bnQgZmluaXNoZXMgcGFyc2luZyBvciBsb2FkaW5nIHdoaWNoZXZlciBjb21lcyBmaXJzdAorICAg
ICAgICBpbnN0ZWFkIG9mIGluIHRoZSBtaWRkbGUgb2YgY29sbGVjdGluZyBhIGxpc3Qgb2Ygc3R5
bGVzaGVldHMuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OkRvY3VtZW50KTogSW5pdGlhbGl6ZSB0aGUgbmV3bHkgYWRkZWQgdGltZXIu
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGljaXRDbG9zZSk6IEFwcGx5IGFueSBw
ZW5kaW5nIFhTTFQgYmVmb3JlIHdlIGZpcmUgbG9hZCBldmVudHMgc2luY2Ugc29tZSBvZiB0aGUg
ZXZlbnQKKyAgICAgICAgaGFuZGxlcnMgbWF5IGJlIGV4cGVjdGluZyB0byBzZWUgdGhlIGRvY3Vt
ZW50IGFmdGVyIFhTTFQgaGFkIGJlZW4gYXBwbGllZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpzY2hlZHVsZVRvQXBwbHlYU0xUcmFuc2Zvcm1zKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6YXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc05vd0lmU2NoZWR1bGVkKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXBwbHlQZW5kaW5nWFNMVHJhbnNm
b3Jtc1RpbWVyRmlyZWQpOiBBZGRlZC4gTW92ZWQgdGhlIGxvZ2ljIHRvIGFwcGx5IFhTTCB0cmFu
c2Zvcm1zIGZyb20KKyAgICAgICAgU3R5bGU6OlNjb3BlOjpjb2xsZWN0QWN0aXZlU3R5bGVTaGVl
dHMsIGFuZCBtZXJnZWQgYXBwbHlYU0xUcmFuc2Zvcm0gaW50byB0aGlzIGZ1bmN0aW9uLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFwcGx5WFNMVHJhbnNmb3JtKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcpOiBBcHBseSBYU0xUIHJp
Z2h0IGJlZm9yZSB1cGRhdGluZyB0aGUgc3R5bGUuIFRoaXMgaXMgd2hlcmUgdXNlZCB0byBhcHBs
eQorICAgICAgICBpbmxpbmUgWFNMVCBhbmQgaXQgaGFwcGVucyBtdWNoIGVhcmxpZXIgdGhhbiBp
bXBsaWNpdENsb3NlLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0lu
c3RydWN0aW9uOjpjaGVja1N0eWxlU2hlZXQpOiBTY2hlZHVsZSBYU0xUIGluIHRoZSBkb2N1bWVu
dCBpbnN0ZWFkIG9mIGZsdXNoaW5nIHBlbmRpbmcKKyAgICAgICAgc3R5bGVzaGVldHMsIHdoaWNo
IHdvdWxkIGhhdmUgc3luY2hyb25vdXNseSBhcHBsaWVkIFhTTFQuIFdlIGNhbid0IGFwcGx5IFhT
TFQgc3luY2hyb25vdXNseSBoZXJlIGJlY2F1c2UgdGhpcworICAgICAgICBmdW5jdGlvbiBjYW4g
YmUgY2FsbGVkIGZyb20gYSBub24tc2NyaXB0LXJlc2lsaWVudCBjYWxsIHN0YWNrLgorICAgICAg
ICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpzaGVldExvYWRlZCk6IERpdHRvLgor
ICAgICAgICAqIHN0eWxlL1N0eWxlU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OlNjb3BlOjpjb2xsZWN0WFNMVHJhbnNmb3Jtcyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OlNjb3BlOjpjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHMpOiBSZW1vdmVkIHRoZSBjb2Rl
IHRvIGFwcGx5IFhTTFQuIFNraXAgUHJvY2Vzc2luZ0luc3RydWN0aW9ucworICAgICAgICB0aGF0
IGFwcGxpZXMgWFNMVC4gQWxzbyB1c2UgUmVmUHRyPFN0eWxlU2hlZXQ+IGluc3RlYWQgb2YgYSBy
YXcgcG9pbnRlciB0byBzdG9yZSBTdHlsZVNoZWV0LgorICAgICAgICAqIHN0eWxlL1N0eWxlU2Nv
cGUuaDoKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6ZG9FbmQpOiBBcHBseSBhbnkg
cGVuZGluZyBYU0xUcyBzeW5jaHJvbm91c2x5IGhlcmUgYXMgdGhlIGNvbW1lbnQgc3VnZ2VzdHMu
CisKIDIwMTctMTAtMjUgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAg
ICAgVU5QQUNLX0ZMSVBfWSBpcyBicm9rZW4gZm9yIE1TRS1iYWNrZWQgdmlkZW9zCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDIyMzkzNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2OSw2ICs0NjksNyBAQCBEb2N1
bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVCiAgICAgLCBtX2RvY3VtZW50Q3Jl
YXRpb25UaW1lKE1vbm90b25pY1RpbWU6Om5vdygpKQogICAgICwgbV9zY3JpcHRSdW5uZXIoc3Rk
OjptYWtlX3VuaXF1ZTxTY3JpcHRSdW5uZXI+KCp0aGlzKSkKICAgICAsIG1fbW9kdWxlTG9hZGVy
KHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0TW9kdWxlTG9hZGVyPigqdGhpcykpCisgICAgLCBtX2Fw
cGx5UGVuZGluZ1hTTFRyYW5zZm9ybXNUaW1lcigqdGhpcywgJkRvY3VtZW50OjphcHBseVBlbmRp
bmdYU0xUcmFuc2Zvcm1zVGltZXJGaXJlZCkKICAgICAsIG1feG1sVmVyc2lvbihBU0NJSUxpdGVy
YWwoIjEuMCIpKQogICAgICwgbV9jb25zdGFudFByb3BlcnR5TWFwKHN0ZDo6bWFrZV91bmlxdWU8
Q29uc3RhbnRQcm9wZXJ0eU1hcD4oKnRoaXMpKQogICAgICwgbV9kb2N1bWVudENsYXNzZXMoZG9j
dW1lbnRDbGFzc2VzKQpAQCAtMjcyNSw2ICsyNzI2LDkgQEAgdm9pZCBEb2N1bWVudDo6aW1wbGlj
aXRDbG9zZSgpCiAgICAgLy8gcmFtaWZpY2F0aW9ucywgYW5kIHdlIG5lZWQgdG8gZGVjaWRlIHdo
YXQgaXMgdGhlIFJpZ2h0IFRoaW5nIFRvIERvKHRtKQogICAgIFJlZlB0cjxGcmFtZT4gZiA9IGZy
YW1lKCk7CiAgICAgaWYgKGYpIHsKKyAgICAgICAgLy8gQXBwbHkgWFNMIHRyYW5zZm9ybXMgYmVm
b3JlIGxvYWQgZXZlbnRzIHNvIHRoYXQgZXZlbnQgaGFuZGxlcnMgY2FuIGFjY2VzcyB0aGUgdHJh
bnNmb3JtZWQgRE9NIHRyZWUuCisgICAgICAgIGFwcGx5UGVuZGluZ1hTTFRyYW5zZm9ybXNOb3dJ
ZlNjaGVkdWxlZCgpOworCiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudExvYWRlciA9IGxvYWRl
cigpKQogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnN0YXJ0SWNvbkxvYWRpbmcoKTsKIApA
QCAtNTA1MCwxOCArNTA1NCw0MyBAQCB2b2lkIERvY3VtZW50Ojpwb3BDdXJyZW50U2NyaXB0KCkK
IAogI2lmIEVOQUJMRShYU0xUKQogCi12b2lkIERvY3VtZW50OjphcHBseVhTTFRyYW5zZm9ybShQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24qIHBpKQordm9pZCBEb2N1bWVudDo6c2NoZWR1bGVUb0FwcGx5
WFNMVHJhbnNmb3JtcygpCiB7Ci0gICAgUmVmUHRyPFhTTFRQcm9jZXNzb3I+IHByb2Nlc3NvciA9
IFhTTFRQcm9jZXNzb3I6OmNyZWF0ZSgpOwotICAgIHByb2Nlc3Nvci0+c2V0WFNMU3R5bGVTaGVl
dChkb3duY2FzdDxYU0xTdHlsZVNoZWV0PihwaS0+c2hlZXQoKSkpOwotICAgIFN0cmluZyByZXN1
bHRNSU1FVHlwZTsKLSAgICBTdHJpbmcgbmV3U291cmNlOwotICAgIFN0cmluZyByZXN1bHRFbmNv
ZGluZzsKLSAgICBpZiAoIXByb2Nlc3Nvci0+dHJhbnNmb3JtVG9TdHJpbmcoKnRoaXMsIHJlc3Vs
dE1JTUVUeXBlLCBuZXdTb3VyY2UsIHJlc3VsdEVuY29kaW5nKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIC8vIEZJWE1FOiBJZiB0aGUgdHJhbnNmb3JtIGZhaWxlZCB3ZSBzaG91bGQgcHJvYmFibHkg
cmVwb3J0IGFuIGVycm9yIChsaWtlIE1vemlsbGEgZG9lcykuCi0gICAgRnJhbWUqIG93bmVyRnJh
bWUgPSBmcmFtZSgpOwotICAgIHByb2Nlc3Nvci0+Y3JlYXRlRG9jdW1lbnRGcm9tU291cmNlKG5l
d1NvdXJjZSwgcmVzdWx0RW5jb2RpbmcsIHJlc3VsdE1JTUVUeXBlLCB0aGlzLCBvd25lckZyYW1l
KTsKKyAgICBpZiAoIW1fYXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc1RpbWVyLmlzQWN0aXZlKCkp
CisgICAgICAgIG1fYXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc1RpbWVyLnN0YXJ0T25lU2hvdCgw
X3MpOworfQorCit2b2lkIERvY3VtZW50OjphcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zTm93SWZT
Y2hlZHVsZWQoKQoreworICAgIGlmICghbV9hcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zVGltZXIu
aXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fYXBwbHlQZW5kaW5nWFNMVHJhbnNm
b3Jtc1RpbWVyLnN0b3AoKTsKKyAgICBhcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zVGltZXJGaXJl
ZCgpOworfQorCit2b2lkIERvY3VtZW50OjphcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zVGltZXJG
aXJlZCgpCit7CisgICAgaWYgKHBhcnNpbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNT
RVJUKE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6aXNFdmVudEFsbG93ZWRJbk1haW5UaHJlYWQo
KSk7CisgICAgZm9yIChhdXRvJiBwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gOiBzdHlsZVNjb3BlKCku
Y29sbGVjdFhTTFRyYW5zZm9ybXMoKSkgeworICAgICAgICBBU1NFUlQocHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLT5pc1hTTCgpKTsKKworICAgICAgICAvLyBEb24ndCBhcHBseSBYU0wgdHJhbnNmb3Jt
cyB0byBhbHJlYWR5IHRyYW5zZm9ybWVkIGRvY3VtZW50cyAtLSA8cmRhcjovL3Byb2JsZW0vNDEz
MjgwNj4KKyAgICAgICAgaWYgKHRyYW5zZm9ybVNvdXJjZURvY3VtZW50KCkgfHwgIXByb2Nlc3Np
bmdJbnN0cnVjdGlvbi0+c2hlZXQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBh
dXRvIHByb2Nlc3NvciA9IFhTTFRQcm9jZXNzb3I6OmNyZWF0ZSgpOworICAgICAgICBwcm9jZXNz
b3ItPnNldFhTTFN0eWxlU2hlZXQoZG93bmNhc3Q8WFNMU3R5bGVTaGVldD4ocHJvY2Vzc2luZ0lu
c3RydWN0aW9uLT5zaGVldCgpKSk7CisgICAgICAgIFN0cmluZyByZXN1bHRNSU1FVHlwZTsKKyAg
ICAgICAgU3RyaW5nIG5ld1NvdXJjZTsKKyAgICAgICAgU3RyaW5nIHJlc3VsdEVuY29kaW5nOwor
ICAgICAgICBpZiAoIXByb2Nlc3Nvci0+dHJhbnNmb3JtVG9TdHJpbmcoKnRoaXMsIHJlc3VsdE1J
TUVUeXBlLCBuZXdTb3VyY2UsIHJlc3VsdEVuY29kaW5nKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAvLyBGSVhNRTogSWYgdGhlIHRyYW5zZm9ybSBmYWlsZWQgd2Ugc2hvdWxkIHBy
b2JhYmx5IHJlcG9ydCBhbiBlcnJvciAobGlrZSBNb3ppbGxhIGRvZXMpLgorICAgICAgICBwcm9j
ZXNzb3ItPmNyZWF0ZURvY3VtZW50RnJvbVNvdXJjZShuZXdTb3VyY2UsIHJlc3VsdEVuY29kaW5n
LCByZXN1bHRNSU1FVHlwZSwgdGhpcywgZnJhbWUoKSk7CisgICAgfQogfQogCiB2b2lkIERvY3Vt
ZW50OjpzZXRUcmFuc2Zvcm1Tb3VyY2Uoc3RkOjp1bmlxdWVfcHRyPFRyYW5zZm9ybVNvdXJjZT4g
c291cmNlKQpAQCAtNTI0Myw2ICs1MjcyLDggQEAgdm9pZCBEb2N1bWVudDo6ZmluaXNoZWRQYXJz
aW5nKCkKICAgICBBU1NFUlQoIXNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpIHx8IG1fcmVhZHlT
dGF0ZSAhPSBMb2FkaW5nKTsKICAgICBzZXRQYXJzaW5nKGZhbHNlKTsKIAorICAgIFJlZjxEb2N1
bWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CisKICAgICBpZiAoIW1fZG9jdW1lbnRUaW1pbmcu
ZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnQpCiAgICAgICAgIG1fZG9jdW1lbnRUaW1pbmcuZG9t
Q29udGVudExvYWRlZEV2ZW50U3RhcnQgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIApAQCAtNTI1
Miw2ICs1MjgzLDggQEAgdm9pZCBEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKICAgICAgICAg
bV9kb2N1bWVudFRpbWluZy5kb21Db250ZW50TG9hZGVkRXZlbnRFbmQgPSBNb25vdG9uaWNUaW1l
Ojpub3coKTsKIAogICAgIGlmIChSZWZQdHI8RnJhbWU+IGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkg
eworICAgICAgICBhcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zTm93SWZTY2hlZHVsZWQoKTsKKwog
ICAgICAgICAvLyBGcmFtZUxvYWRlcjo6ZmluaXNoZWRQYXJzaW5nKCkgbWlnaHQgZW5kIHVwIGNh
bGxpbmcgRG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UoKSBpZiBhbGwKICAgICAgICAgLy8gcmVzb3Vy
Y2UgbG9hZHMgYXJlIGNvbXBsZXRlLiBIVE1MT2JqZWN0RWxlbWVudHMgY2FuIHN0YXJ0IGxvYWRp
bmcgdGhlaXIgcmVzb3VyY2VzIGZyb20KICAgICAgICAgLy8gcG9zdCBhdHRhY2ggY2FsbGJhY2tz
IHRyaWdnZXJlZCBieSByZXNvbHZlU3R5bGUoKS4gVGhpcyBtZWFucyBpZiB3ZSBwYXJzZSBvdXQg
YW4gPG9iamVjdD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAyMjM5MzcpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTQ0LDcg
Kzk0NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvcEN1cnJlbnRTY3JpcHQoKTsKIAogI2lmIEVO
QUJMRShYU0xUKQotICAgIHZvaWQgYXBwbHlYU0xUcmFuc2Zvcm0oUHJvY2Vzc2luZ0luc3RydWN0
aW9uKiBwaSk7CisgICAgdm9pZCBzY2hlZHVsZVRvQXBwbHlYU0xUcmFuc2Zvcm1zKCk7CisgICAg
dm9pZCBhcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zTm93SWZTY2hlZHVsZWQoKTsKICAgICBSZWZQ
dHI8RG9jdW1lbnQ+IHRyYW5zZm9ybVNvdXJjZURvY3VtZW50KCkgeyByZXR1cm4gbV90cmFuc2Zv
cm1Tb3VyY2VEb2N1bWVudDsgfQogICAgIHZvaWQgc2V0VHJhbnNmb3JtU291cmNlRG9jdW1lbnQo
RG9jdW1lbnQqIGRvYykgeyBtX3RyYW5zZm9ybVNvdXJjZURvY3VtZW50ID0gZG9jOyB9CiAKQEAg
LTE1NTgsOCArMTU1OSwxMSBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWZQdHI8SFRNTFNjcmlw
dEVsZW1lbnQ+PiBtX2N1cnJlbnRTY3JpcHRTdGFjazsKIAogI2lmIEVOQUJMRShYU0xUKQorICAg
IHZvaWQgYXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc1RpbWVyRmlyZWQoKTsKKwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxUcmFuc2Zvcm1Tb3VyY2U+IG1fdHJhbnNmb3JtU291cmNlOwogICAgIFJlZlB0
cjxEb2N1bWVudD4gbV90cmFuc2Zvcm1Tb3VyY2VEb2N1bWVudDsKKyAgICBUaW1lciBtX2FwcGx5
UGVuZGluZ1hTTFRyYW5zZm9ybXNUaW1lcjsKICNlbmRpZgogCiAgICAgU3RyaW5nIG1feG1sRW5j
b2Rpbmc7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9u
LmNwcAkocmV2aXNpb24gMjIzOTM3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJ
bnN0cnVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsNyBAQCB2b2lkIFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoCiAgICAgICAgICAgICAgICAgVVJMIGZp
bmFsVVJMKFBhcnNlZFVSTFN0cmluZywgbV9sb2NhbEhyZWYpOwogICAgICAgICAgICAgICAgIG1f
c2hlZXQgPSBYU0xTdHlsZVNoZWV0OjpjcmVhdGVFbWJlZGRlZCh0aGlzLCBmaW5hbFVSTCk7CiAg
ICAgICAgICAgICAgICAgbV9sb2FkaW5nID0gZmFsc2U7CisgICAgICAgICAgICAgICAgZG9jdW1l
bnQoKS5zY2hlZHVsZVRvQXBwbHlYU0xUcmFuc2Zvcm1zKCk7CiAgICAgICAgICAgICB9CiAjZW5k
aWYKICAgICAgICAgfSBlbHNlIHsKQEAgLTE3OSw3ICsxODAsNyBAQCB2b2lkIFByb2Nlc3NpbmdJ
bnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoCiAgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS5zdHls
ZVNjb3BlKCkucmVtb3ZlUGVuZGluZ1NoZWV0KCp0aGlzKTsKICNpZiBFTkFCTEUoWFNMVCkKICAg
ICAgICAgICAgICAgICBpZiAobV9pc1hTTCkKLSAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQo
KS5zdHlsZVNjb3BlKCkuZmx1c2hQZW5kaW5nVXBkYXRlKCk7CisgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50KCkuc2NoZWR1bGVUb0FwcGx5WFNMVHJhbnNmb3JtcygpOwogI2VuZGlmCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIwMiw3ICsyMDMsNyBAQCBib29sIFByb2Nlc3NpbmdJ
bnN0cnVjdGlvbjo6c2hlZXRMb2FkZWQoCiAgICAgICAgICAgICBkb2N1bWVudCgpLnN0eWxlU2Nv
cGUoKS5yZW1vdmVQZW5kaW5nU2hlZXQoKnRoaXMpOwogI2lmIEVOQUJMRShYU0xUKQogICAgICAg
ICBpZiAobV9pc1hTTCkKLSAgICAgICAgICAgIGRvY3VtZW50KCkuc3R5bGVTY29wZSgpLmZsdXNo
UGVuZGluZ1VwZGF0ZSgpOworICAgICAgICAgICAgZG9jdW1lbnQoKS5zY2hlZHVsZVRvQXBwbHlY
U0xUcmFuc2Zvcm1zKCk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAJKHJldmlzaW9uIDIyMzkzNykKKysrIFNv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTAs
MjcgKzI5MCwzMSBAQCB2b2lkIFNjb3BlOjpyZW1vdmVTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kCiAg
ICAgICAgIGRpZENoYW5nZUFjdGl2ZVN0eWxlU2hlZXRDYW5kaWRhdGVzKCk7CiB9CiAKKyNpZiBF
TkFCTEUoWFNMVCkKKy8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTc4ODMwPiBSZW1v
dmUgWFNMVCByZWxhZWQgY29kZSBmcm9tIFN0eWxlOjpTY29wZS4KK1ZlY3RvcjxSZWY8UHJvY2Vz
c2luZ0luc3RydWN0aW9uPj4gU2NvcGU6OmNvbGxlY3RYU0xUcmFuc2Zvcm1zKCkKK3sKKyAgICBW
ZWN0b3I8UmVmPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4+IHByb2Nlc3NpbmdJbnN0cnVjdGlvbnM7
CisgICAgZm9yIChhdXRvJiBub2RlIDogbV9zdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXMpIHsKKyAg
ICAgICAgaWYgKGlzPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4oKm5vZGUpICYmIGRvd25jYXN0PFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbj4oKm5vZGUpLmlzWFNMKCkpCisgICAgICAgICAgICBwcm9jZXNz
aW5nSW5zdHJ1Y3Rpb25zLmFwcGVuZChkb3duY2FzdDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+KCpu
b2RlKSk7CisgICAgfQorICAgIHJldHVybiBwcm9jZXNzaW5nSW5zdHJ1Y3Rpb25zOworfQorI2Vu
ZGlmCisKIHZvaWQgU2NvcGU6OmNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0cyhWZWN0b3I8UmVmUHRy
PFN0eWxlU2hlZXQ+PiYgc2hlZXRzKQogewogICAgIGlmICghbV9kb2N1bWVudC5zZXR0aW5ncygp
LmF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZv
ciAoYXV0byYgbm9kZSA6IG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzKSB7Ci0gICAgICAgIFN0
eWxlU2hlZXQqIHNoZWV0ID0gbnVsbHB0cjsKKyAgICAgICAgUmVmUHRyPFN0eWxlU2hlZXQ+IHNo
ZWV0OwogICAgICAgICBpZiAoaXM8UHJvY2Vzc2luZ0luc3RydWN0aW9uPigqbm9kZSkpIHsKLSAg
ICAgICAgICAgIC8vIFByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gKFhNTCBkb2N1bWVudHMgb25seSku
CisgICAgICAgICAgICBpZiAoIWRvd25jYXN0PFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4oKm5vZGUp
LmlzQ1NTKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAvLyBXZSBk
b24ndCBzdXBwb3J0IGxpbmtpbmcgdG8gZW1iZWRkZWQgQ1NTIHN0eWxlc2hlZXRzLCBzZWUgPGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTI4MT4gZm9yIGRpc2N1c3Np
b24uCi0gICAgICAgICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24mIHBpID0gZG93bmNhc3Q8UHJv
Y2Vzc2luZ0luc3RydWN0aW9uPigqbm9kZSk7Ci0gICAgICAgICAgICBzaGVldCA9IHBpLnNoZWV0
KCk7Ci0jaWYgRU5BQkxFKFhTTFQpCi0gICAgICAgICAgICAvLyBEb24ndCBhcHBseSBYU0wgdHJh
bnNmb3JtcyB0byBhbHJlYWR5IHRyYW5zZm9ybWVkIGRvY3VtZW50cyAtLSA8cmRhcjovL3Byb2Js
ZW0vNDEzMjgwNj4KLSAgICAgICAgICAgIGlmIChwaS5pc1hTTCgpICYmICFtX2RvY3VtZW50LnRy
YW5zZm9ybVNvdXJjZURvY3VtZW50KCkpIHsKLSAgICAgICAgICAgICAgICAvLyBEb24ndCBhcHBs
eSBYU0wgdHJhbnNmb3JtcyB1bnRpbCBsb2FkaW5nIGlzIGZpbmlzaGVkLgotICAgICAgICAgICAg
ICAgIGlmICghbV9kb2N1bWVudC5wYXJzaW5nKCkpCi0gICAgICAgICAgICAgICAgICAgIG1fZG9j
dW1lbnQuYXBwbHlYU0xUcmFuc2Zvcm0oJnBpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICB9Ci0jZW5kaWYKKyAgICAgICAgICAgIHNoZWV0ID0gZG93bmNhc3Q8UHJvY2Vz
c2luZ0luc3RydWN0aW9uPigqbm9kZSkuc2hlZXQoKTsKICAgICAgICAgfSBlbHNlIGlmIChpczxI
VE1MTGlua0VsZW1lbnQ+KCpub2RlKSB8fCBpczxIVE1MU3R5bGVFbGVtZW50Pigqbm9kZSkgfHwg
aXM8U1ZHU3R5bGVFbGVtZW50Pigqbm9kZSkpIHsKICAgICAgICAgICAgIEVsZW1lbnQmIGVsZW1l
bnQgPSBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSk7CiAgICAgICAgICAgICBBdG9taWNTdHJpbmcg
dGl0bGUgPSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odGl0bGVBdHRy
KTsKQEAgLTM2NCw3ICszNjgsNyBAQCB2b2lkIFNjb3BlOjpjb2xsZWN0QWN0aXZlU3R5bGVTaGVl
dHMoVmVjCiAgICAgICAgICAgICAgICAgc2hlZXQgPSBudWxscHRyOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChzaGVldCkKLSAgICAgICAgICAgIHNoZWV0cy5hcHBlbmQoc2hlZXQpOworICAgICAg
ICAgICAgc2hlZXRzLmFwcGVuZChXVEZNb3ZlKHNoZWV0KSk7CiAgICAgfQogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oCShyZXZpc2lvbiAyMjM5MzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsMTAg
QEAgcHVibGljOgogICAgIGJvb2wgaGFzUGVuZGluZ1VwZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGVuZGluZ1VwZGF0ZSB8fCBtX2hhc0Rlc2NlbmRhbnRXaXRoUGVuZGluZ1VwZGF0ZTsgfQogICAg
IHZvaWQgZmx1c2hQZW5kaW5nVXBkYXRlKCk7CiAKKyNpZiBFTkFCTEUoWFNMVCkKKyAgICBWZWN0
b3I8UmVmPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4+IGNvbGxlY3RYU0xUcmFuc2Zvcm1zKCk7Cisj
ZW5kaWYKKwogICAgIFN0eWxlUmVzb2x2ZXImIHJlc29sdmVyKCk7CiAgICAgU3R5bGVSZXNvbHZl
ciogcmVzb2x2ZXJJZkV4aXN0cygpOwogICAgIHZvaWQgY2xlYXJSZXNvbHZlcigpOwpJbmRleDog
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcAkocmV2aXNpb24gMjIzOTM3KQorKysgU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMzLDcg
KzEzMzMsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpkb0VuZCgpCiAgICAgICAgIGRvY3Vt
ZW50KCktPnNldFRyYW5zZm9ybVNvdXJjZShzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybVNvdXJj
ZT4oZG9jKSk7CiAKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0UGFyc2luZyhmYWxzZSk7IC8vIE1h
a2UgdGhlIGRvY3VtZW50IHRoaW5rIGl0J3MgZG9uZSwgc28gaXQgd2lsbCBhcHBseSBYU0wgc3R5
bGVzaGVldHMuCi0gICAgICAgIGRvY3VtZW50KCktPnN0eWxlU2NvcGUoKS5kaWRDaGFuZ2VBY3Rp
dmVTdHlsZVNoZWV0Q2FuZGlkYXRlcygpOworICAgICAgICBkb2N1bWVudCgpLT5hcHBseVBlbmRp
bmdYU0xUcmFuc2Zvcm1zTm93SWZTY2hlZHVsZWQoKTsKIAogICAgICAgICAvLyBzdHlsZVJlc29s
dmVyQ2hhbmdlZCgpIGNhbGwgY2FuIGRldGFjaCB0aGUgcGFyc2VyIGFuZCBudWxsIG91dCBpdHMg
ZG9jdW1lbnQuCiAgICAgICAgIC8vIEluIHRoYXQgY2FzZSwgd2UganVzdCBiYWlsIG91dC4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325253</attachid>
            <date>2017-10-28 01:15:29 -0700</date>
            <delta_ts>2017-10-28 02:18:03 -0700</delta_ts>
            <desc>Fixed the flaky tests</desc>
            <filename>bug-178715-20171028011528.patch</filename>
            <type>text/plain</type>
            <size>14382</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNDE0NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE3LTEwLTI3ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFN0eWxlOjpTY29wZTo6Zmx1c2hQ
ZW5kaW5nVXBkYXRlKCkgY2FuIHJlcGxhY2UgdGhlIGVudGlyZSBkb2N1bWVudCBpbiBYU0xUUHJv
Y2Vzc29yOjpjcmVhdGVEb2N1bWVudEZyb21Tb3VyY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODcxNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzUxNDQ2NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAg
ICBBcHBseSBYTFMgdHJhbmZvcm1zIHdoZW4gYSAwcyB0aW1lciBmaXJlcyBvciB0aGUgZG9jdW1l
bnQgZmluaXNoZXMgcGFyc2luZyBvciBsb2FkaW5nIHdoaWNoZXZlciBjb21lcyBmaXJzdAorICAg
ICAgICBpbnN0ZWFkIG9mIGluIHRoZSBtaWRkbGUgb2YgY29sbGVjdGluZyBhIGxpc3Qgb2Ygc3R5
bGVzaGVldHMuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OkRvY3VtZW50KTogSW5pdGlhbGl6ZSB0aGUgbmV3bHkgYWRkZWQgdGltZXIu
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGljaXRDbG9zZSk6IEFwcGx5IGFueSBw
ZW5kaW5nIFhTTFQgYmVmb3JlIHdlIGZpcmUgbG9hZCBldmVudHMgc2luY2Ugc29tZSBvZiB0aGUg
ZXZlbnQKKyAgICAgICAgaGFuZGxlcnMgbWF5IGJlIGV4cGVjdGluZyB0byBzZWUgdGhlIGRvY3Vt
ZW50IGFmdGVyIFhTTFQgaGFkIGJlZW4gYXBwbGllZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpzY2hlZHVsZVRvQXBwbHlYU0xUcmFuc2Zvcm1zKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6YXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc05vd0lmU2NoZWR1bGVkKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXBwbHlQZW5kaW5nWFNMVHJhbnNm
b3Jtc1RpbWVyRmlyZWQpOiBBZGRlZC4gTW92ZWQgdGhlIGxvZ2ljIHRvIGFwcGx5IFhTTCB0cmFu
c2Zvcm1zIGZyb20KKyAgICAgICAgU3R5bGU6OlNjb3BlOjpjb2xsZWN0QWN0aXZlU3R5bGVTaGVl
dHMsIGFuZCBtZXJnZWQgYXBwbHlYU0xUcmFuc2Zvcm0gaW50byB0aGlzIGZ1bmN0aW9uLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFwcGx5WFNMVHJhbnNmb3JtKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcpOiBBcHBseSBYU0xUIHJp
Z2h0IGJlZm9yZSB1cGRhdGluZyB0aGUgc3R5bGUuIFRoaXMgaXMgd2hlcmUgdXNlZCB0byBhcHBs
eQorICAgICAgICBpbmxpbmUgWFNMVCBhbmQgaXQgaGFwcGVucyBtdWNoIGVhcmxpZXIgdGhhbiBp
bXBsaWNpdENsb3NlLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1c3BlbmRTY2hlZHVs
ZWRUYXNrcyk6IFN1c3BlbmQgdGhlIFhTTFQgdGltZXIuCisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6cmVzdW1lU2NoZWR1bGVkVGFza3MpOiBSZXNjaGVkdWxlIHRoZSBYU0xUIHRpbWVyIGlm
IG1faGFzUGVuZGluZ1hTTFRyYW5zZm9ybXMgaXMgc2V0LgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5oOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVja1N0eWxlU2hlZXQpOiBTY2hlZHVs
ZSBYU0xUIGluIHRoZSBkb2N1bWVudCBpbnN0ZWFkIG9mIGZsdXNoaW5nIHBlbmRpbmcKKyAgICAg
ICAgc3R5bGVzaGVldHMsIHdoaWNoIHdvdWxkIGhhdmUgc3luY2hyb25vdXNseSBhcHBsaWVkIFhT
TFQuIFdlIGNhbid0IGFwcGx5IFhTTFQgc3luY2hyb25vdXNseSBoZXJlIGJlY2F1c2UgdGhpcwor
ICAgICAgICBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGZyb20gYSBub24tc2NyaXB0LXJlc2lsaWVu
dCBjYWxsIHN0YWNrLgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpz
aGVldExvYWRlZCk6IERpdHRvLgorICAgICAgICAqIHN0eWxlL1N0eWxlU2NvcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpjb2xsZWN0WFNMVHJhbnNmb3Jtcyk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpjb2xsZWN0QWN0aXZlU3R5bGVTaGVl
dHMpOiBSZW1vdmVkIHRoZSBjb2RlIHRvIGFwcGx5IFhTTFQuIFNraXAgUHJvY2Vzc2luZ0luc3Ry
dWN0aW9ucworICAgICAgICB0aGF0IGFwcGxpZXMgWFNMVC4gQWxzbyB1c2UgUmVmUHRyPFN0eWxl
U2hlZXQ+IGluc3RlYWQgb2YgYSByYXcgcG9pbnRlciB0byBzdG9yZSBTdHlsZVNoZWV0LgorICAg
ICAgICAqIHN0eWxlL1N0eWxlU2NvcGUuaDoKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNl
cjo6ZG9FbmQpOiBBcHBseSBhbnkgcGVuZGluZyBYU0xUcyBzeW5jaHJvbm91c2x5IGhlcmUgYXMg
dGhlIGNvbW1lbnQgc3VnZ2VzdHMuCisKIDIwMTctMTAtMjcgIERldmluIFJvdXNzbyAgPHdlYmtp
dEBkZXZpbnJvdXNzby5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQ2FudmFzIFRhYjog
bm8gd2F5IHRvIHNlZSBiYWNrdHJhY2Ugb2Ygd2hlcmUgYSBjYW52YXMgY29udGV4dCB3YXMgY3Jl
YXRlZApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMjQxNDUpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODAsNiAr
NDgwLDkgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVQogICAgICwg
bV9kb2N1bWVudENyZWF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSkKICAgICAsIG1fc2Ny
aXB0UnVubmVyKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0UnVubmVyPigqdGhpcykpCiAgICAgLCBt
X21vZHVsZUxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1vZHVsZUxvYWRlcj4oKnRoaXMp
KQorI2lmIEVOQUJMRShYU0xUKQorICAgICwgbV9hcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zVGlt
ZXIoKnRoaXMsICZEb2N1bWVudDo6YXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc1RpbWVyRmlyZWQp
CisjZW5kaWYKICAgICAsIG1feG1sVmVyc2lvbihBU0NJSUxpdGVyYWwoIjEuMCIpKQogICAgICwg
bV9jb25zdGFudFByb3BlcnR5TWFwKHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RhbnRQcm9wZXJ0eU1h
cD4oKnRoaXMpKQogICAgICwgbV9kb2N1bWVudENsYXNzZXMoZG9jdW1lbnRDbGFzc2VzKQpAQCAt
MjczOSw2ICsyNzQyLDExIEBAIHZvaWQgRG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UoKQogICAgIC8v
IHJhbWlmaWNhdGlvbnMsIGFuZCB3ZSBuZWVkIHRvIGRlY2lkZSB3aGF0IGlzIHRoZSBSaWdodCBU
aGluZyBUbyBEbyh0bSkKICAgICBSZWZQdHI8RnJhbWU+IGYgPSBmcmFtZSgpOwogICAgIGlmIChm
KSB7CisjaWYgRU5BQkxFKFhTTFQpCisgICAgICAgIC8vIEFwcGx5IFhTTCB0cmFuc2Zvcm1zIGJl
Zm9yZSBsb2FkIGV2ZW50cyBzbyB0aGF0IGV2ZW50IGhhbmRsZXJzIGNhbiBhY2Nlc3MgdGhlIHRy
YW5zZm9ybWVkIERPTSB0cmVlLgorICAgICAgICBhcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zTm93
SWZTY2hlZHVsZWQoKTsKKyNlbmRpZgorCiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudExvYWRl
ciA9IGxvYWRlcigpKQogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnN0YXJ0SWNvbkxvYWRp
bmcoKTsKIApAQCAtNTA2NSwxOCArNTA3Myw0NSBAQCB2b2lkIERvY3VtZW50Ojpwb3BDdXJyZW50
U2NyaXB0KCkKIAogI2lmIEVOQUJMRShYU0xUKQogCi12b2lkIERvY3VtZW50OjphcHBseVhTTFRy
YW5zZm9ybShQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qIHBpKQordm9pZCBEb2N1bWVudDo6c2NoZWR1
bGVUb0FwcGx5WFNMVHJhbnNmb3JtcygpCit7CisgICAgbV9oYXNQZW5kaW5nWFNMVHJhbnNmb3Jt
cyA9IHRydWU7CisgICAgaWYgKCFtX2FwcGx5UGVuZGluZ1hTTFRyYW5zZm9ybXNUaW1lci5pc0Fj
dGl2ZSgpKQorICAgICAgICBtX2FwcGx5UGVuZGluZ1hTTFRyYW5zZm9ybXNUaW1lci5zdGFydE9u
ZVNob3QoMF9zKTsKK30KKwordm9pZCBEb2N1bWVudDo6YXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jt
c05vd0lmU2NoZWR1bGVkKCkKIHsKLSAgICBSZWZQdHI8WFNMVFByb2Nlc3Nvcj4gcHJvY2Vzc29y
ID0gWFNMVFByb2Nlc3Nvcjo6Y3JlYXRlKCk7Ci0gICAgcHJvY2Vzc29yLT5zZXRYU0xTdHlsZVNo
ZWV0KGRvd25jYXN0PFhTTFN0eWxlU2hlZXQ+KHBpLT5zaGVldCgpKSk7Ci0gICAgU3RyaW5nIHJl
c3VsdE1JTUVUeXBlOwotICAgIFN0cmluZyBuZXdTb3VyY2U7Ci0gICAgU3RyaW5nIHJlc3VsdEVu
Y29kaW5nOwotICAgIGlmICghcHJvY2Vzc29yLT50cmFuc2Zvcm1Ub1N0cmluZygqdGhpcywgcmVz
dWx0TUlNRVR5cGUsIG5ld1NvdXJjZSwgcmVzdWx0RW5jb2RpbmcpKQotICAgICAgICByZXR1cm47
Ci0gICAgLy8gRklYTUU6IElmIHRoZSB0cmFuc2Zvcm0gZmFpbGVkIHdlIHNob3VsZCBwcm9iYWJs
eSByZXBvcnQgYW4gZXJyb3IgKGxpa2UgTW96aWxsYSBkb2VzKS4KLSAgICBGcmFtZSogb3duZXJG
cmFtZSA9IGZyYW1lKCk7Ci0gICAgcHJvY2Vzc29yLT5jcmVhdGVEb2N1bWVudEZyb21Tb3VyY2Uo
bmV3U291cmNlLCByZXN1bHRFbmNvZGluZywgcmVzdWx0TUlNRVR5cGUsIHRoaXMsIG93bmVyRnJh
bWUpOworICAgIGlmICghbV9oYXNQZW5kaW5nWFNMVHJhbnNmb3JtcykKKyAgICAgICAgcmV0dXJu
OworICAgIG1fYXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc1RpbWVyLnN0b3AoKTsKKyAgICBhcHBs
eVBlbmRpbmdYU0xUcmFuc2Zvcm1zVGltZXJGaXJlZCgpOworfQorCit2b2lkIERvY3VtZW50Ojph
cHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zVGltZXJGaXJlZCgpCit7CisgICAgaWYgKHBhcnNpbmco
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9oYXNQZW5kaW5nWFNMVHJhbnNmb3JtcyA9IGZh
bHNlOworICAgIEFTU0VSVChOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OmlzRXZlbnRBbGxvd2Vk
SW5NYWluVGhyZWFkKCkpOworICAgIGZvciAoYXV0byYgcHJvY2Vzc2luZ0luc3RydWN0aW9uIDog
c3R5bGVTY29wZSgpLmNvbGxlY3RYU0xUcmFuc2Zvcm1zKCkpIHsKKyAgICAgICAgQVNTRVJUKHBy
b2Nlc3NpbmdJbnN0cnVjdGlvbi0+aXNYU0woKSk7CisKKyAgICAgICAgLy8gRG9uJ3QgYXBwbHkg
WFNMIHRyYW5zZm9ybXMgdG8gYWxyZWFkeSB0cmFuc2Zvcm1lZCBkb2N1bWVudHMgLS0gPHJkYXI6
Ly9wcm9ibGVtLzQxMzI4MDY+CisgICAgICAgIGlmICh0cmFuc2Zvcm1Tb3VyY2VEb2N1bWVudCgp
IHx8ICFwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24tPnNoZWV0KCkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgYXV0byBwcm9jZXNzb3IgPSBYU0xUUHJvY2Vzc29yOjpjcmVhdGUoKTsKKyAg
ICAgICAgcHJvY2Vzc29yLT5zZXRYU0xTdHlsZVNoZWV0KGRvd25jYXN0PFhTTFN0eWxlU2hlZXQ+
KHByb2Nlc3NpbmdJbnN0cnVjdGlvbi0+c2hlZXQoKSkpOworICAgICAgICBTdHJpbmcgcmVzdWx0
TUlNRVR5cGU7CisgICAgICAgIFN0cmluZyBuZXdTb3VyY2U7CisgICAgICAgIFN0cmluZyByZXN1
bHRFbmNvZGluZzsKKyAgICAgICAgaWYgKCFwcm9jZXNzb3ItPnRyYW5zZm9ybVRvU3RyaW5nKCp0
aGlzLCByZXN1bHRNSU1FVHlwZSwgbmV3U291cmNlLCByZXN1bHRFbmNvZGluZykpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgLy8gRklYTUU6IElmIHRoZSB0cmFuc2Zvcm0gZmFpbGVk
IHdlIHNob3VsZCBwcm9iYWJseSByZXBvcnQgYW4gZXJyb3IgKGxpa2UgTW96aWxsYSBkb2VzKS4K
KyAgICAgICAgcHJvY2Vzc29yLT5jcmVhdGVEb2N1bWVudEZyb21Tb3VyY2UobmV3U291cmNlLCBy
ZXN1bHRFbmNvZGluZywgcmVzdWx0TUlNRVR5cGUsIHRoaXMsIGZyYW1lKCkpOworICAgIH0KIH0K
IAogdm9pZCBEb2N1bWVudDo6c2V0VHJhbnNmb3JtU291cmNlKHN0ZDo6dW5pcXVlX3B0cjxUcmFu
c2Zvcm1Tb3VyY2U+IHNvdXJjZSkKQEAgLTUyNTgsNiArNTI5Myw4IEBAIHZvaWQgRG9jdW1lbnQ6
OmZpbmlzaGVkUGFyc2luZygpCiAgICAgQVNTRVJUKCFzY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIo
KSB8fCBtX3JlYWR5U3RhdGUgIT0gTG9hZGluZyk7CiAgICAgc2V0UGFyc2luZyhmYWxzZSk7CiAK
KyAgICBSZWY8RG9jdW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOworCiAgICAgaWYgKCFtX2Rv
Y3VtZW50VGltaW5nLmRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0KQogICAgICAgICBtX2RvY3Vt
ZW50VGltaW5nLmRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0ID0gTW9ub3RvbmljVGltZTo6bm93
KCk7CiAKQEAgLTUyNjcsNiArNTMwNCwxMCBAQCB2b2lkIERvY3VtZW50OjpmaW5pc2hlZFBhcnNp
bmcoKQogICAgICAgICBtX2RvY3VtZW50VGltaW5nLmRvbUNvbnRlbnRMb2FkZWRFdmVudEVuZCA9
IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgaWYgKFJlZlB0cjxGcmFtZT4gZnJhbWUgPSB0
aGlzLT5mcmFtZSgpKSB7CisjaWYgRU5BQkxFKFhTTFQpCisgICAgICAgIGFwcGx5UGVuZGluZ1hT
TFRyYW5zZm9ybXNOb3dJZlNjaGVkdWxlZCgpOworI2VuZGlmCisKICAgICAgICAgLy8gRnJhbWVM
b2FkZXI6OmZpbmlzaGVkUGFyc2luZygpIG1pZ2h0IGVuZCB1cCBjYWxsaW5nIERvY3VtZW50Ojpp
bXBsaWNpdENsb3NlKCkgaWYgYWxsCiAgICAgICAgIC8vIHJlc291cmNlIGxvYWRzIGFyZSBjb21w
bGV0ZS4gSFRNTE9iamVjdEVsZW1lbnRzIGNhbiBzdGFydCBsb2FkaW5nIHRoZWlyIHJlc291cmNl
cyBmcm9tCiAgICAgICAgIC8vIHBvc3QgYXR0YWNoIGNhbGxiYWNrcyB0cmlnZ2VyZWQgYnkgcmVz
b2x2ZVN0eWxlKCkuIFRoaXMgbWVhbnMgaWYgd2UgcGFyc2Ugb3V0IGFuIDxvYmplY3Q+CkBAIC01
NzA3LDYgKzU3NDgsMTAgQEAgdm9pZCBEb2N1bWVudDo6c3VzcGVuZFNjaGVkdWxlZFRhc2tzKEFj
dAogICAgIHNjcmlwdFJ1bm5lcigpLT5zdXNwZW5kKCk7CiAgICAgbV9wZW5kaW5nVGFza3NUaW1l
ci5zdG9wKCk7CiAKKyNpZiBFTkFCTEUoWFNMVCkKKyAgICBtX2FwcGx5UGVuZGluZ1hTTFRyYW5z
Zm9ybXNUaW1lci5zdG9wKCk7CisjZW5kaWYKKwogICAgIC8vIERlZmVycmluZyBsb2FkaW5nIGFu
ZCBzdXNwZW5kaW5nIHBhcnNlciBpcyBuZWNlc3Nhcnkgd2hlbiB3ZSBuZWVkIHRvIHByZXZlbnQg
cmUtZW50cmFudCBKYXZhU2NyaXB0IGV4ZWN1dGlvbgogICAgIC8vIChlLmcuIHdoaWxlIGRpc3Bs
YXlpbmcgYW4gYWxlcnQpLgogICAgIC8vIEl0IGlzIG5vdCBjdXJyZW50bHkgcG9zc2libGUgdG8g
c3VzcGVuZCBwYXJzZXIgdW5sZXNzIGxvYWRpbmcgaXMgZGVmZXJyZWQsIGJlY2F1c2UgbmV3IGRh
dGEgYXJyaXZpbmcgZnJvbSBuZXR3b3JrCkBAIC01NzI2LDYgKzU3NzEsMTIgQEAgdm9pZCBEb2N1
bWVudDo6cmVzdW1lU2NoZWR1bGVkVGFza3MoQWN0aQogCiAgICAgaWYgKHJlYXNvbiA9PSBBY3Rp
dmVET01PYmplY3Q6OldpbGxEZWZlckxvYWRpbmcgJiYgbV9wYXJzZXIpCiAgICAgICAgIG1fcGFy
c2VyLT5yZXN1bWVTY2hlZHVsZWRUYXNrcygpOworCisjaWYgRU5BQkxFKFhTTFQpCisgICAgaWYg
KG1faGFzUGVuZGluZ1hTTFRyYW5zZm9ybXMpCisgICAgICAgIG1fYXBwbHlQZW5kaW5nWFNMVHJh
bnNmb3Jtc1RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOworI2VuZGlmCisKICAgICBpZiAoIW1fcGVu
ZGluZ1Rhc2tzLmlzRW1wdHkoKSkKICAgICAgICAgbV9wZW5kaW5nVGFza3NUaW1lci5zdGFydE9u
ZVNob3QoMF9zKTsKICAgICBzY3JpcHRSdW5uZXIoKS0+cmVzdW1lKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAkocmV2aXNpb24gMjI0MTQ1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk1Miw3ICs5NTIsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBwb3BDdXJyZW50U2NyaXB0KCk7CiAKICNpZiBFTkFCTEUoWFNMVCkKLSAgICB2b2lkIGFwcGx5
WFNMVHJhbnNmb3JtKFByb2Nlc3NpbmdJbnN0cnVjdGlvbiogcGkpOworICAgIHZvaWQgc2NoZWR1
bGVUb0FwcGx5WFNMVHJhbnNmb3JtcygpOworICAgIHZvaWQgYXBwbHlQZW5kaW5nWFNMVHJhbnNm
b3Jtc05vd0lmU2NoZWR1bGVkKCk7CiAgICAgUmVmUHRyPERvY3VtZW50PiB0cmFuc2Zvcm1Tb3Vy
Y2VEb2N1bWVudCgpIHsgcmV0dXJuIG1fdHJhbnNmb3JtU291cmNlRG9jdW1lbnQ7IH0KICAgICB2
b2lkIHNldFRyYW5zZm9ybVNvdXJjZURvY3VtZW50KERvY3VtZW50KiBkb2MpIHsgbV90cmFuc2Zv
cm1Tb3VyY2VEb2N1bWVudCA9IGRvYzsgfQogCkBAIC0xNTY3LDggKzE1NjgsMTIgQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8UmVmUHRyPEhUTUxTY3JpcHRFbGVtZW50Pj4gbV9jdXJyZW50U2NyaXB0
U3RhY2s7CiAKICNpZiBFTkFCTEUoWFNMVCkKKyAgICB2b2lkIGFwcGx5UGVuZGluZ1hTTFRyYW5z
Zm9ybXNUaW1lckZpcmVkKCk7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNmb3JtU291cmNl
PiBtX3RyYW5zZm9ybVNvdXJjZTsKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fdHJhbnNmb3JtU291
cmNlRG9jdW1lbnQ7CisgICAgVGltZXIgbV9hcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zVGltZXI7
CisgICAgYm9vbCBtX2hhc1BlbmRpbmdYU0xUcmFuc2Zvcm1zIHsgZmFsc2UgfTsKICNlbmRpZgog
CiAgICAgU3RyaW5nIG1feG1sRW5jb2Rpbmc7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUHJv
Y2Vzc2luZ0luc3RydWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAkocmV2aXNpb24gMjI0MTQ1KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
Niw2ICsxMjYsNyBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoCiAg
ICAgICAgICAgICAgICAgVVJMIGZpbmFsVVJMKFBhcnNlZFVSTFN0cmluZywgbV9sb2NhbEhyZWYp
OwogICAgICAgICAgICAgICAgIG1fc2hlZXQgPSBYU0xTdHlsZVNoZWV0OjpjcmVhdGVFbWJlZGRl
ZCh0aGlzLCBmaW5hbFVSTCk7CiAgICAgICAgICAgICAgICAgbV9sb2FkaW5nID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgZG9jdW1lbnQoKS5zY2hlZHVsZVRvQXBwbHlYU0xUcmFuc2Zvcm1zKCk7
CiAgICAgICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgfSBlbHNlIHsKQEAgLTE3OSw3ICsxODAs
NyBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoCiAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQoKS5zdHlsZVNjb3BlKCkucmVtb3ZlUGVuZGluZ1NoZWV0KCp0aGlzKTsK
ICNpZiBFTkFCTEUoWFNMVCkKICAgICAgICAgICAgICAgICBpZiAobV9pc1hTTCkKLSAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQoKS5zdHlsZVNjb3BlKCkuZmx1c2hQZW5kaW5nVXBkYXRlKCk7
CisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50KCkuc2NoZWR1bGVUb0FwcGx5WFNMVHJhbnNm
b3JtcygpOwogI2VuZGlmCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIwMiw3ICsyMDMs
NyBAQCBib29sIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2hlZXRMb2FkZWQoCiAgICAgICAgICAg
ICBkb2N1bWVudCgpLnN0eWxlU2NvcGUoKS5yZW1vdmVQZW5kaW5nU2hlZXQoKnRoaXMpOwogI2lm
IEVOQUJMRShYU0xUKQogICAgICAgICBpZiAobV9pc1hTTCkKLSAgICAgICAgICAgIGRvY3VtZW50
KCkuc3R5bGVTY29wZSgpLmZsdXNoUGVuZGluZ1VwZGF0ZSgpOworICAgICAgICAgICAgZG9jdW1l
bnQoKS5zY2hlZHVsZVRvQXBwbHlYU0xUcmFuc2Zvcm1zKCk7CiAjZW5kaWYKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAJKHJl
dmlzaW9uIDIyNDE0NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOTAsMjcgKzI5MCwzMSBAQCB2b2lkIFNjb3BlOjpyZW1vdmVTdHls
ZVNoZWV0Q2FuZGlkYXRlTm9kCiAgICAgICAgIGRpZENoYW5nZUFjdGl2ZVN0eWxlU2hlZXRDYW5k
aWRhdGVzKCk7CiB9CiAKKyNpZiBFTkFCTEUoWFNMVCkKKy8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTc4ODMwPiBSZW1vdmUgWFNMVCByZWxhZWQgY29kZSBmcm9tIFN0eWxlOjpTY29w
ZS4KK1ZlY3RvcjxSZWY8UHJvY2Vzc2luZ0luc3RydWN0aW9uPj4gU2NvcGU6OmNvbGxlY3RYU0xU
cmFuc2Zvcm1zKCkKK3sKKyAgICBWZWN0b3I8UmVmPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4+IHBy
b2Nlc3NpbmdJbnN0cnVjdGlvbnM7CisgICAgZm9yIChhdXRvJiBub2RlIDogbV9zdHlsZVNoZWV0
Q2FuZGlkYXRlTm9kZXMpIHsKKyAgICAgICAgaWYgKGlzPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4o
Km5vZGUpICYmIGRvd25jYXN0PFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4oKm5vZGUpLmlzWFNMKCkp
CisgICAgICAgICAgICBwcm9jZXNzaW5nSW5zdHJ1Y3Rpb25zLmFwcGVuZChkb3duY2FzdDxQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24+KCpub2RlKSk7CisgICAgfQorICAgIHJldHVybiBwcm9jZXNzaW5n
SW5zdHJ1Y3Rpb25zOworfQorI2VuZGlmCisKIHZvaWQgU2NvcGU6OmNvbGxlY3RBY3RpdmVTdHls
ZVNoZWV0cyhWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+PiYgc2hlZXRzKQogewogICAgIGlmICgh
bV9kb2N1bWVudC5zZXR0aW5ncygpLmF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGZvciAoYXV0byYgbm9kZSA6IG1fc3R5bGVTaGVldENhbmRpZGF0
ZU5vZGVzKSB7Ci0gICAgICAgIFN0eWxlU2hlZXQqIHNoZWV0ID0gbnVsbHB0cjsKKyAgICAgICAg
UmVmUHRyPFN0eWxlU2hlZXQ+IHNoZWV0OwogICAgICAgICBpZiAoaXM8UHJvY2Vzc2luZ0luc3Ry
dWN0aW9uPigqbm9kZSkpIHsKLSAgICAgICAgICAgIC8vIFByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24g
KFhNTCBkb2N1bWVudHMgb25seSkuCisgICAgICAgICAgICBpZiAoIWRvd25jYXN0PFByb2Nlc3Np
bmdJbnN0cnVjdGlvbj4oKm5vZGUpLmlzQ1NTKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICAvLyBXZSBkb24ndCBzdXBwb3J0IGxpbmtpbmcgdG8gZW1iZWRkZWQgQ1NT
IHN0eWxlc2hlZXRzLCBzZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00OTI4MT4gZm9yIGRpc2N1c3Npb24uCi0gICAgICAgICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24mIHBpID0gZG93bmNhc3Q8UHJvY2Vzc2luZ0luc3RydWN0aW9uPigqbm9kZSk7Ci0gICAgICAg
ICAgICBzaGVldCA9IHBpLnNoZWV0KCk7Ci0jaWYgRU5BQkxFKFhTTFQpCi0gICAgICAgICAgICAv
LyBEb24ndCBhcHBseSBYU0wgdHJhbnNmb3JtcyB0byBhbHJlYWR5IHRyYW5zZm9ybWVkIGRvY3Vt
ZW50cyAtLSA8cmRhcjovL3Byb2JsZW0vNDEzMjgwNj4KLSAgICAgICAgICAgIGlmIChwaS5pc1hT
TCgpICYmICFtX2RvY3VtZW50LnRyYW5zZm9ybVNvdXJjZURvY3VtZW50KCkpIHsKLSAgICAgICAg
ICAgICAgICAvLyBEb24ndCBhcHBseSBYU0wgdHJhbnNmb3JtcyB1bnRpbCBsb2FkaW5nIGlzIGZp
bmlzaGVkLgotICAgICAgICAgICAgICAgIGlmICghbV9kb2N1bWVudC5wYXJzaW5nKCkpCi0gICAg
ICAgICAgICAgICAgICAgIG1fZG9jdW1lbnQuYXBwbHlYU0xUcmFuc2Zvcm0oJnBpKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKKyAgICAgICAgICAgIHNo
ZWV0ID0gZG93bmNhc3Q8UHJvY2Vzc2luZ0luc3RydWN0aW9uPigqbm9kZSkuc2hlZXQoKTsKICAg
ICAgICAgfSBlbHNlIGlmIChpczxIVE1MTGlua0VsZW1lbnQ+KCpub2RlKSB8fCBpczxIVE1MU3R5
bGVFbGVtZW50Pigqbm9kZSkgfHwgaXM8U1ZHU3R5bGVFbGVtZW50Pigqbm9kZSkpIHsKICAgICAg
ICAgICAgIEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSk7CiAgICAg
ICAgICAgICBBdG9taWNTdHJpbmcgdGl0bGUgPSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24odGl0bGVBdHRyKTsKQEAgLTM2NCw3ICszNjgsNyBAQCB2b2lkIFNjb3BlOjpj
b2xsZWN0QWN0aXZlU3R5bGVTaGVldHMoVmVjCiAgICAgICAgICAgICAgICAgc2hlZXQgPSBudWxs
cHRyOwogICAgICAgICB9CiAgICAgICAgIGlmIChzaGVldCkKLSAgICAgICAgICAgIHNoZWV0cy5h
cHBlbmQoc2hlZXQpOworICAgICAgICAgICAgc2hlZXRzLmFwcGVuZChXVEZNb3ZlKHNoZWV0KSk7
CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oCShyZXZpc2lvbiAy
MjQxNDUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwOCw2ICsxMDgsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUGVuZGluZ1VwZGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGVuZGluZ1VwZGF0ZSB8fCBtX2hhc0Rlc2NlbmRhbnRXaXRo
UGVuZGluZ1VwZGF0ZTsgfQogICAgIHZvaWQgZmx1c2hQZW5kaW5nVXBkYXRlKCk7CiAKKyNpZiBF
TkFCTEUoWFNMVCkKKyAgICBWZWN0b3I8UmVmPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4+IGNvbGxl
Y3RYU0xUcmFuc2Zvcm1zKCk7CisjZW5kaWYKKwogICAgIFN0eWxlUmVzb2x2ZXImIHJlc29sdmVy
KCk7CiAgICAgU3R5bGVSZXNvbHZlciogcmVzb2x2ZXJJZkV4aXN0cygpOwogICAgIHZvaWQgY2xl
YXJSZXNvbHZlcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlckxpYnhtbDIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAkocmV2aXNpb24gMjI0MTQ1KQorKysgU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzMzLDcgKzEzMzMsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpk
b0VuZCgpCiAgICAgICAgIGRvY3VtZW50KCktPnNldFRyYW5zZm9ybVNvdXJjZShzdGQ6Om1ha2Vf
dW5pcXVlPFRyYW5zZm9ybVNvdXJjZT4oZG9jKSk7CiAKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0
UGFyc2luZyhmYWxzZSk7IC8vIE1ha2UgdGhlIGRvY3VtZW50IHRoaW5rIGl0J3MgZG9uZSwgc28g
aXQgd2lsbCBhcHBseSBYU0wgc3R5bGVzaGVldHMuCi0gICAgICAgIGRvY3VtZW50KCktPnN0eWxl
U2NvcGUoKS5kaWRDaGFuZ2VBY3RpdmVTdHlsZVNoZWV0Q2FuZGlkYXRlcygpOworICAgICAgICBk
b2N1bWVudCgpLT5hcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zTm93SWZTY2hlZHVsZWQoKTsKIAog
ICAgICAgICAvLyBzdHlsZVJlc29sdmVyQ2hhbmdlZCgpIGNhbGwgY2FuIGRldGFjaCB0aGUgcGFy
c2VyIGFuZCBudWxsIG91dCBpdHMgZG9jdW1lbnQuCiAgICAgICAgIC8vIEluIHRoYXQgY2FzZSwg
d2UganVzdCBiYWlsIG91dC4K
</data>

          </attachment>
      

    </bug>

</bugzilla>