<?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>176628</bug_id>
          
          <creation_ts>2017-09-08 13:37:42 -0700</creation_ts>
          <short_desc>[WK2] Add API to get the redirect chain of a WKDownload</short_desc>
          <delta_ts>2017-09-21 12:59:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>177321</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1346926</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-08 13:37:42 -0700</bug_when>
    <thetext>Add API to get the redirect chain of a download. This should include redirects that happened during initial load, before the load was converted into a download.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346927</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-08 13:38:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/34338279&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346933</commentid>
    <comment_count>2</comment_count>
      <attachid>320295</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-08 13:43:17 -0700</bug_when>
    <thetext>Created attachment 320295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346936</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-08 13:46:23 -0700</bug_when>
    <thetext>Attachment 320295 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/WebPageProxy.cpp:3195:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/UIProcess/API/Cocoa/_WKDownload.mm:64:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346973</commentid>
    <comment_count>4</comment_count>
      <attachid>320295</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-08 15:05:46 -0700</bug_when>
    <thetext>Comment on attachment 320295
Patch

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

&gt; Source/WebKit/UIProcess/API/C/WKDownload.cpp:70
&gt; +    Vector&lt;RefPtr&lt;API::Object&gt;&gt; urls;

You can do the urls.reserveIinitialCapacity(toImpl(download)-&gt;redirectChain().length()) + appendUnchecked() stuff here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346974</commentid>
    <comment_count>5</comment_count>
      <attachid>320309</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-08 15:08:55 -0700</bug_when>
    <thetext>Created attachment 320309
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346977</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-08 15:11:29 -0700</bug_when>
    <thetext>Attachment 320309 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/WebPageProxy.cpp:3195:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit/UIProcess/API/Cocoa/_WKDownload.mm:64:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347158</commentid>
    <comment_count>7</comment_count>
      <attachid>320309</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-09 14:37:54 -0700</bug_when>
    <thetext>Comment on attachment 320309
Patch

I think this is a bad idea.  What ever happened to just informing the client about each redirect as they happen?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347162</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-09 14:47:41 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #7)
&gt; Comment on attachment 320309 [details]
&gt; Patch
&gt; 
&gt; I think this is a bad idea.  What ever happened to just informing the client
&gt; about each redirect as they happen?

I am pretty sure you are in cc of the mail where this was discussed. The navigation client only informs the client of top level navigations and redirects. The client is not notified at subframe level and this is an intentional design. Downloads can be triggered by navigating a subframe, for which the client is not notified and for which we do not create a WKNavigation object. Please read mail thread for more info.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347603</commentid>
    <comment_count>9</comment_count>
      <attachid>320309</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-09-11 14:13:30 -0700</bug_when>
    <thetext>Comment on attachment 320309
Patch

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

&gt; Source/WebKit/ChangeLog:9
&gt; +        Add API to get the redirect chain of a WKDwnload. The redirect chain includes redirects

WKDownload</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347604</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-09-11 14:13:51 -0700</bug_when>
    <thetext>&gt; I think this is a bad idea.

Can you explain your rationale? What are some disadvantages of this approach?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347609</commentid>
    <comment_count>11</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-09-11 14:17:39 -0700</bug_when>
    <thetext>Here is my rationale from our email discussion:

It’s a goal of the design of WKNavigationDelegate not to force clients to worry too much about individual sub frames and sub resources. Previous WebKit API was verbose about those things, adding API surface complexity and tight coupling without much benefit.

(The two policy decisions, decidePolicyForNavigationAction and decidePolicyForNavigationResponse, can fire for any frame. And didReceiveAuthenticationChallenge can fire for any resource. Those are exceptions to the general rule. Everything with a WKNavigation represents a full page transition.)

Considering this in detail, I think [a redirectChain property on WKDownload] might be best. It’s a goal of the WKNavigationDelegate API to hide or at least smooth over sub frame and sub resource details. The theory is that WebKit can usually handle these details internally and/or expose them in a more purpose-specific — and therefore clearer — way.

This case seems to fit the theory. We *could* expose lots of sub frame information to clients. That would give them the freedom to implement this feature and many other features we haven’t thought of yet. But if our goal is just redirect tracking on downloads, WebKit can handle that internally, and it’s nicer for clients if WebKit provides a purpose-built API on WKDownload.

It was a neat idea that our existing delegate messages could be enough to implement this feature. But if they’re not, they’re not. No biggie.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348096</commentid>
    <comment_count>12</comment_count>
      <attachid>320309</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-12 16:44:33 -0700</bug_when>
    <thetext>Comment on attachment 320309
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3196
&gt; +    redirectChain.append(URL(URL(), url));

We should make url a URL instead of a String.

&gt; Source/WebKit/UIProcess/WebPageProxy.h:2008
&gt; +    HashMap&lt;uint64_t /* frameID */, Vector&lt;WebCore::URL&gt;&gt; m_redirectChains;

This is just the redirect chains per frame navigation, right?  I think it could be named better.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/Download.mm:521
&gt; +    [TestProtocol registerWithScheme:@&quot;http&quot;];

This uses the WKBrowsingContextController which we are trying to remove.  Please write the test with WKURLSchemeHandler and a non-http scheme.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348098</commentid>
    <comment_count>13</comment_count>
      <attachid>320309</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-12 16:48:24 -0700</bug_when>
    <thetext>Comment on attachment 320309
Patch

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

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.h:2008
&gt;&gt; +    HashMap&lt;uint64_t /* frameID */, Vector&lt;WebCore::URL&gt;&gt; m_redirectChains;
&gt; 
&gt; This is just the redirect chains per frame navigation, right?  I think it could be named better.

I think this doesn&apos;t belong on the WebPageProxy.  I think it belongs on the navigation itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348100</commentid>
    <comment_count>14</comment_count>
      <attachid>320309</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-12 16:51:04 -0700</bug_when>
    <thetext>Comment on attachment 320309
Patch

We should also test a navigation of a subframe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348104</commentid>
    <comment_count>15</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-12 16:57:04 -0700</bug_when>
    <thetext>I have changed my mind and I now think we need to expose the redirect chain because of navigations of subframes becoming downloads that could&apos;ve been redirected without those redirects having been exposed to the client, and we certainly don&apos;t want to expose those redirects just for this.  I think this patch needs better testing and organization, but then I&apos;ll approve of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350385</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-19 10:42:17 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #13)
&gt; Comment on attachment 320309 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=320309&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/WebPageProxy.h:2008
&gt; &gt;&gt; +    HashMap&lt;uint64_t /* frameID */, Vector&lt;WebCore::URL&gt;&gt; m_redirectChains;
&gt; &gt; 
&gt; &gt; This is just the redirect chains per frame navigation, right?  I think it could be named better.
&gt; 
&gt; I think this doesn&apos;t belong on the WebPageProxy.  I think it belongs on the
&gt; navigation itself.

What navigation? My understanding is that navigations are top-frame only. My redirect chains are for all frames (including subframes).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350386</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-19 10:42:50 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #16)
&gt; (In reply to Alex Christensen from comment #13)
&gt; &gt; Comment on attachment 320309 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=320309&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit/UIProcess/WebPageProxy.h:2008
&gt; &gt; &gt;&gt; +    HashMap&lt;uint64_t /* frameID */, Vector&lt;WebCore::URL&gt;&gt; m_redirectChains;
&gt; &gt; &gt; 
&gt; &gt; &gt; This is just the redirect chains per frame navigation, right?  I think it could be named better.
&gt; &gt; 
&gt; &gt; I think this doesn&apos;t belong on the WebPageProxy.  I think it belongs on the
&gt; &gt; navigation itself.
&gt; 
&gt; What navigation? My understanding is that navigations are top-frame only. My
&gt; redirect chains are for all frames (including subframes).

Oh, I see you already commented on this. Never mind my comment then, still catching up!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350455</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-19 12:35:26 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #12)
&gt; Comment on attachment 320309 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=320309&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3196
&gt; &gt; +    redirectChain.append(URL(URL(), url));
&gt; 
&gt; We should make url a URL instead of a String.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.h:2008
&gt; &gt; +    HashMap&lt;uint64_t /* frameID */, Vector&lt;WebCore::URL&gt;&gt; m_redirectChains;
&gt; 
&gt; This is just the redirect chains per frame navigation, right?  I think it
&gt; could be named better.
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/Download.mm:521
&gt; &gt; +    [TestProtocol registerWithScheme:@&quot;http&quot;];
&gt; 
&gt; This uses the WKBrowsingContextController which we are trying to remove. 
&gt; Please write the test with WKURLSchemeHandler and a non-http scheme.

Unfortunately, WKURLSchemeHandler does not seem to work with downloads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350496</commentid>
    <comment_count>19</comment_count>
      <attachid>321241</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-19 14:09:49 -0700</bug_when>
    <thetext>Created attachment 321241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350497</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-19 14:10:41 -0700</bug_when>
    <thetext>Constructing a Navigation object for subframe navigations seems to be fairly significant refactoring so I did not do it in this patch. Instead, I moved to redirect chain to WebFrame level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350499</commentid>
    <comment_count>21</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-19 14:11:44 -0700</bug_when>
    <thetext>Attachment 321241 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/API/Cocoa/_WKDownload.mm:64:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350779</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-20 09:13:19 -0700</bug_when>
    <thetext>Alex, what do you think of this latest iteration?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350822</commentid>
    <comment_count>23</comment_count>
      <attachid>321241</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-20 10:27:14 -0700</bug_when>
    <thetext>Comment on attachment 321241
Patch

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

&gt; Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp:148
&gt; +    m_processPool-&gt;downloadClient().willSendRequest(m_processPool.get(), this, proposedRequest, redirectResponse, [this, protectedThis](const ResourceRequest&amp; newRequest) {

protectedThis should be a Ref and we should either WTFMove it here so we don&apos;t do unnecessary ref churn, or we should just create it in the lambda.

&gt; Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp:149
&gt; +        m_redirectChain.append(newRequest.url());

Do we want the first URL to be in the redirect chain?

&gt; Source/WebKit/UIProcess/WebFrameProxy.h:93
&gt; +    const Vector&lt;WebCore::URL&gt;&amp; redirectChain() const { return m_redirectChain; }

Vector&lt;WebCore::URL&gt;&amp;&amp; takeProvisionalLoadRedirectChain()

&gt; Source/WebKit/UIProcess/WebFrameProxy.h:146
&gt; +    Vector&lt;WebCore::URL&gt; m_redirectChain;

A frame isn&apos;t redirected.
I think a better name for this variable would be m_provisionalLoadRedirectChain.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:2281
&gt; +        download-&gt;setRedirectChain(frame.redirectChain());

If it&apos;s not a download, won&apos;t we still need to clear the redirect chain?  Could you add a test that does more than one redirected load in the same frame?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/Download.mm:482
&gt; +    if (redirectChain.count &gt; 0)

We already made sure count was 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350828</commentid>
    <comment_count>24</comment_count>
      <attachid>321241</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-20 10:32:31 -0700</bug_when>
    <thetext>Comment on attachment 321241
Patch

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

&gt;&gt; Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp:148
&gt;&gt; +    m_processPool-&gt;downloadClient().willSendRequest(m_processPool.get(), this, proposedRequest, redirectResponse, [this, protectedThis](const ResourceRequest&amp; newRequest) {
&gt; 
&gt; protectedThis should be a Ref and we should either WTFMove it here so we don&apos;t do unnecessary ref churn, or we should just create it in the lambda.

Will fix.

&gt;&gt; Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp:149
&gt;&gt; +        m_redirectChain.append(newRequest.url());
&gt; 
&gt; Do we want the first URL to be in the redirect chain?

I personally do not think so. I feel there if there were no redirect then the redirect chain should be empty.

&gt;&gt; Source/WebKit/UIProcess/WebFrameProxy.h:93
&gt;&gt; +    const Vector&lt;WebCore::URL&gt;&amp; redirectChain() const { return m_redirectChain; }
&gt; 
&gt; Vector&lt;WebCore::URL&gt;&amp;&amp; takeProvisionalLoadRedirectChain()

Ok.

&gt;&gt; Source/WebKit/UIProcess/WebFrameProxy.h:146
&gt;&gt; +    Vector&lt;WebCore::URL&gt; m_redirectChain;
&gt; 
&gt; A frame isn&apos;t redirected.
&gt; I think a better name for this variable would be m_provisionalLoadRedirectChain.

Ok.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:2281
&gt;&gt; +        download-&gt;setRedirectChain(frame.redirectChain());
&gt; 
&gt; If it&apos;s not a download, won&apos;t we still need to clear the redirect chain?  Could you add a test that does more than one redirected load in the same frame?

Will check. There is an assertion protected against this in WebFrame so I would hit it.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/Download.mm:482
&gt;&gt; +    if (redirectChain.count &gt; 0)
&gt; 
&gt; We already made sure count was 2.

Yes, but the test does not stop if the previous check fails so the test ends up crashing instead of failing without this check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350841</commentid>
    <comment_count>25</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-09-20 10:50:34 -0700</bug_when>
    <thetext>&gt; &gt;&gt; Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp:149
&gt; &gt;&gt; +        m_redirectChain.append(newRequest.url());
&gt; &gt; 
&gt; &gt; Do we want the first URL to be in the redirect chain?
&gt; 
&gt; I personally do not think so. I feel there if there were no redirect then
&gt; the redirect chain should be empty.

If the load targets A, and A redirects to B, then the redirect chain in this implementation will be [ B ]. Is that right?

Mechanically, how is the client supposed to reconstruct the full [ A, B ] chain?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350844</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-20 10:54:12 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #25)
&gt; &gt; &gt;&gt; Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp:149
&gt; &gt; &gt;&gt; +        m_redirectChain.append(newRequest.url());
&gt; &gt; &gt; 
&gt; &gt; &gt; Do we want the first URL to be in the redirect chain?
&gt; &gt; 
&gt; &gt; I personally do not think so. I feel there if there were no redirect then
&gt; &gt; the redirect chain should be empty.
&gt; 
&gt; If the load targets A, and A redirects to B, then the redirect chain in this
&gt; implementation will be [ B ]. Is that right?
&gt; 
&gt; Mechanically, how is the client supposed to reconstruct the full [ A, B ]
&gt; chain?

You can always get A from the request&apos;s URL: _WKDownload.request.URL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350847</commentid>
    <comment_count>27</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-20 10:59:16 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #26)
&gt; (In reply to Geoffrey Garen from comment #25)
&gt; &gt; &gt; &gt;&gt; Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp:149
&gt; &gt; &gt; &gt;&gt; +        m_redirectChain.append(newRequest.url());
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Do we want the first URL to be in the redirect chain?
&gt; &gt; &gt; 
&gt; &gt; &gt; I personally do not think so. I feel there if there were no redirect then
&gt; &gt; &gt; the redirect chain should be empty.
&gt; &gt; 
&gt; &gt; If the load targets A, and A redirects to B, then the redirect chain in this
&gt; &gt; implementation will be [ B ]. Is that right?
&gt; &gt; 
&gt; &gt; Mechanically, how is the client supposed to reconstruct the full [ A, B ]
&gt; &gt; chain?
&gt; 
&gt; You can always get A from the request&apos;s URL: _WKDownload.request.URL

Hmm, I have to check but this may not work in the case where is load is redirected before getting converted to a download. We may have to include A in the redirect chain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350916</commentid>
    <comment_count>28</comment_count>
      <attachid>321347</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-20 13:11:57 -0700</bug_when>
    <thetext>Created attachment 321347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350917</commentid>
    <comment_count>29</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-20 13:14:58 -0700</bug_when>
    <thetext>Attachment 321347 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/API/Cocoa/_WKDownload.mm:64:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351105</commentid>
    <comment_count>30</comment_count>
      <attachid>321347</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-20 19:48:42 -0700</bug_when>
    <thetext>Comment on attachment 321347
Patch

Clearing flags on attachment: 321347

Committed r222308: &lt;http://trac.webkit.org/changeset/222308&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351106</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-20 19:48:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351207</commentid>
    <comment_count>32</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-21 09:26:13 -0700</bug_when>
    <thetext>Reopen to fix assertion being hit on debug wk2 bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351209</commentid>
    <comment_count>33</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-21 09:27:04 -0700</bug_when>
    <thetext>Assertion temporarily disabled in r222320. Will upload a patch to re-enable it shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351235</commentid>
    <comment_count>34</comment_count>
      <attachid>321441</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-21 09:57:25 -0700</bug_when>
    <thetext>Created attachment 321441
Follow-up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351245</commentid>
    <comment_count>35</comment_count>
      <attachid>321441</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-21 10:33:34 -0700</bug_when>
    <thetext>Comment on attachment 321441
Follow-up

Rejecting attachment 321441 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 321441, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

/Volumes/Data/EWS/WebKit/Source/WebKit/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://webkit-queues.webkit.org/results/4616777</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351252</commentid>
    <comment_count>36</comment_count>
      <attachid>321446</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-21 10:36:27 -0700</bug_when>
    <thetext>Created attachment 321446
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351273</commentid>
    <comment_count>37</comment_count>
      <attachid>321446</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-21 11:20:07 -0700</bug_when>
    <thetext>Comment on attachment 321446
Patch

Clearing flags on attachment: 321446

Committed r222334: &lt;http://trac.webkit.org/changeset/222334&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351274</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-21 11:20:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320295</attachid>
            <date>2017-09-08 13:43:17 -0700</date>
            <delta_ts>2017-09-08 15:08:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176628-20170908134316.patch</filename>
            <type>text/plain</type>
            <size>13700</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZiMjhiNWRjNTk5MWQ4NzZi
ODYxMmMwYTgxZGM5NTcyZTJhMTMwNGYuLmI0ODk2MjQ5NDEzZjZlYTA4ZTQ3YWUzYzkzYTc5NzY3
NjQ4MmYwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTctMDktMDggIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgQVBJIHRvIGdldCB0
aGUgcmVkaXJlY3QgY2hhaW4gb2YgYSBXS0Rvd25sb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY2MjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM0MzM4Mjc5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBBUEkgdG8gZ2V0IHRoZSByZWRpcmVjdCBjaGFpbiBvZiBhIFdLRHdubG9hZC4gVGhl
IHJlZGlyZWN0IGNoYWluIGluY2x1ZGVzIHJlZGlyZWN0cworICAgICAgICB0aGF0IGhhcHBlbmVk
IGR1cmluZyBpbml0aWFsIGxvYWQsIGJlZm9yZSB0aGUgbG9hZCB3YXMgY29udmVydGVkIGludG8g
YSBkb3dubG9hZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcDoK
KyAgICAgICAgKFdLRG93bmxvYWRDb3B5UmVkaXJlY3RDaGFpbik6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLRG93bmxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0Rvd25sb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5t
bToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgb3JpZ2luYXRpbmdXZWJWaWV3XSk6CisgICAgICAg
ICgtW19XS0Rvd25sb2FkIHJlZGlyZWN0Q2hhaW5dKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5
Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXRSZWRpcmVjdENo
YWluKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6cmVkaXJlY3RDaGFpbiBjb25z
dCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisKIDIwMTctMDktMDcgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIFFUS2l0LXJlbGF0ZWQgV2ViS2l0U3lzdGVt
SW50ZXJmYWNlIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rv
d25sb2FkLmNwcAppbmRleCA5ZDVkNmQ5ZGU0ZmFkM2Q5MmYxODhhNWJjYzkwNmI0MzMxNmQ3NTkz
Li4zOWU0MzAyMGZmMmI4YjE0YzExNGE4MDUwYWNmZjYzZDc4NzA5NGFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldLRG93bmxvYWQuaCIKIAorI2luY2x1ZGUg
IkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJRGF0YS5oIgogI2luY2x1ZGUgIkFQSVVSTFJlcXVl
c3QuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCkBAIC02MywzICs2NCwxMSBAQCBXS1Bh
Z2VSZWYgV0tEb3dubG9hZEdldE9yaWdpbmF0aW5nUGFnZShXS0Rvd25sb2FkUmVmIGRvd25sb2Fk
KQogewogICAgIHJldHVybiB0b0FQSSh0b0ltcGwoZG93bmxvYWQpLT5vcmlnaW5hdGluZ1BhZ2Uo
KSk7CiB9CisKK1dLQXJyYXlSZWYgV0tEb3dubG9hZENvcHlSZWRpcmVjdENoYWluKFdLRG93bmxv
YWRSZWYgZG93bmxvYWQpCit7CisgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHVybHM7
CisgICAgZm9yIChhdXRvJiByZWRpcmVjdFVSTCA6IHRvSW1wbChkb3dubG9hZCktPnJlZGlyZWN0
Q2hhaW4oKSkKKyAgICAgICAgdXJscy5hcHBlbmQoQVBJOjpVUkw6OmNyZWF0ZShyZWRpcmVjdFVS
TC5zdHJpbmcoKSkpOworICAgIHJldHVybiB0b0FQSSgmQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1v
dmUodXJscykpLmxlYWtSZWYoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0Rvd25sb2FkLmgKaW5kZXggZDZkYTQwODE1Nzk3NWE5NDlmNzI3NzRjMTZlMzYxOWFhMGVlZDY5
MS4uNmE4YzZjZmQ0ZDc2NjBkYmU4NDBmNTAxNWJhYTI0ODFkYTIwYmUyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuaApAQCAtNDMsNiArNDMsNyBAQCBXS19F
WFBPUlQgV0tVUkxSZXF1ZXN0UmVmIFdLRG93bmxvYWRDb3B5UmVxdWVzdChXS0Rvd25sb2FkUmVm
IGRvd25sb2FkKTsKIFdLX0VYUE9SVCBXS0RhdGFSZWYgV0tEb3dubG9hZEdldFJlc3VtZURhdGEo
V0tEb3dubG9hZFJlZiBkb3dubG9hZCk7CiBXS19FWFBPUlQgdm9pZCBXS0Rvd25sb2FkQ2FuY2Vs
KFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOwogV0tfRVhQT1JUIFdLUGFnZVJlZiBXS0Rvd25sb2Fk
R2V0T3JpZ2luYXRpbmdQYWdlKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOworV0tfRVhQT1JUIFdL
QXJyYXlSZWYgV0tEb3dubG9hZENvcHlSZWRpcmVjdENoYWluKFdLRG93bmxvYWRSZWYgZG93bmxv
YWQpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmgKaW5kZXggMjM1MGNjZGI4ZDBkMjFhMmFmYTExYzNh
ZmY1OTQ1MWFhZDA1OTRkNS4uOGRiMzMzMDgyYTIxYmJhZGU1NDI2MGY1YTQwZGQ2YTU1Mjc3MTcw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25s
b2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2Fk
LmgKQEAgLTM4LDYgKzM4LDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlv
cyg4LjApKQogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TVVJMUmVxdWVzdCAq
cmVxdWVzdDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgd2VhaykgV0tXZWJWaWV3
ICpvcmlnaW5hdGluZ1dlYlZpZXc7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNv
cHkpIE5TQXJyYXk8TlNVUkwgKj4gKnJlZGlyZWN0Q2hhaW4gV0tfQVBJX0FWQUlMQUJMRShtYWNv
c3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tCmluZGV4IDEzMWMzMmZm
MWJmZWQxNjFkMjJmNDBhMjE4MGMzZjQ4ZTAwYzhiYTQuLjQ3ZTZmNDdhZTkyZTk3YjFiNTZmNzgw
Njg1OWNjNDIwYmI4NzgyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tEb3dubG9hZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLRG93bmxvYWQubW0KQEAgLTU4LDcgKzU4LDE1IEBAIC0gKFdLV2ViVmlldyAqKW9y
aWdpbmF0aW5nV2ViVmlldwogICAgIGlmIChhdXRvKiBvcmlnaW5hdGluZ1BhZ2UgPSBfZG93bmxv
YWQtPm9yaWdpbmF0aW5nUGFnZSgpKQogICAgICAgICByZXR1cm4gW1tmcm9tV2ViUGFnZVByb3h5
KCpvcmlnaW5hdGluZ1BhZ2UpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogICAgIHJldHVybiBuaWw7
Cit9CiAKKy0oTlNBcnJheTxOU1VSTCAqPiAqKXJlZGlyZWN0Q2hhaW4KK3sKKyAgICBhdXRvJiBy
ZWRpcmVjdFVSTHMgPSBfZG93bmxvYWQtPnJlZGlyZWN0Q2hhaW4oKTsKKyAgICBOU011dGFibGVB
cnJheTxOU1VSTCAqPiAqbnNVUkxzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5
OnJlZGlyZWN0VVJMcy5zaXplKCldOworICAgIGZvciAoY29uc3QgYXV0byYgcmVkaXJlY3RVUkwg
OiByZWRpcmVjdFVSTHMpCisgICAgICAgIFtuc1VSTHMgYWRkT2JqZWN0OihOU1VSTCAqKXJlZGly
ZWN0VVJMXTsKKyAgICByZXR1cm4gbnNVUkxzOwogfQogCiAjcHJhZ21hIG1hcmsgV0tPYmplY3Qg
cHJvdG9jb2wgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAppbmRleCBjMjYxOGEyMDdhMTBjZjM3MTUwYmUx
ZmJmYjgxNmVmN2I0NzFjZDhhLi41NzJjMTA3ZDhlODZhOGZmYzE4NjE4ZTRiNTMyMzJmYzUxZmU3
YzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkuY3BwCkBAIC0xNDUsNyArMTQ1LDkgQEAgdm9pZCBEb3dubG9hZFByb3h5Ojp3aWxs
U2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcm9wb3NlZFJlcXVlc3QsIGNvbnMK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPERvd25sb2FkUHJveHk+IHByb3RlY3RlZFRo
aXModGhpcyk7Ci0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS53aWxsU2VuZFJl
cXVlc3QobV9wcm9jZXNzUG9vbC5nZXQoKSwgdGhpcywgcHJvcG9zZWRSZXF1ZXN0LCByZWRpcmVj
dFJlc3BvbnNlLCBbcHJvdGVjdGVkVGhpc10oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1
ZXN0KSB7CisgICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS53aWxsU2VuZFJlcXVl
c3QobV9wcm9jZXNzUG9vbC5nZXQoKSwgdGhpcywgcHJvcG9zZWRSZXF1ZXN0LCByZWRpcmVjdFJl
c3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpc10oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdS
ZXF1ZXN0KSB7CisgICAgICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQobmV3UmVxdWVzdC51cmwo
KSk7CisKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgICAgICBpZiAoIXByb3RlY3RlZFRo
aXMtPm1fcHJvY2Vzc1Bvb2wpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTUsOCArMTU3LDYg
QEAgdm9pZCBEb3dubG9hZFByb3h5Ojp3aWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiBwcm9wb3NlZFJlcXVlc3QsIGNvbnMKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBuZXR3b3JrUHJvY2Vzc1Byb3h5LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q29u
dGludWVXaWxsU2VuZFJlcXVlc3QocHJvdGVjdGVkVGhpcy0+bV9kb3dubG9hZElELCBuZXdSZXF1
ZXN0KSwgMCk7Ci0jZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0obmV3UmVxdWVzdCk7CiAjZW5k
aWYKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5oCmluZGV4IDQ5Nzk3ZjM4NmFhMWMyOTMyZjNmNTgzMTRhNjk4NWViMmMy
YjJlYTYuLmNhNTVmYjMzNWU5MjMwMTQ3YTdkYzM5NDE4ZTJiNTEyNjVmYWZlM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaApAQCAt
NDQsNiArNDQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIFByb3Rl
Y3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OworY2xhc3MgVVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTczLDYgKzc0LDkgQEAg
cHVibGljOgogICAgIFdlYlBhZ2VQcm94eSogb3JpZ2luYXRpbmdQYWdlKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRPcmlnaW5hdGluZ1BhZ2UoV2ViUGFnZVByb3h5Kik7CiAKKyAgICB2b2lkIHNldFJl
ZGlyZWN0Q2hhaW4oVmVjdG9yPFdlYkNvcmU6OlVSTD4mJiByZWRpcmVjdENoYWluKSB7IG1fcmVk
aXJlY3RDaGFpbiA9IFdURk1vdmUocmVkaXJlY3RDaGFpbik7IH0KKyAgICBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6VVJMPiYgcmVkaXJlY3RDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVkaXJlY3RD
aGFpbjsgfQorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERvd25sb2FkUHJveHkoRG93bmxvYWRQ
cm94eU1hcCYsIFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Jik7CiAKQEAgLTEwOSw2ICsxMTMsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3N1Z2dlc3Rl
ZEZpbGVuYW1lOwogCiAgICAgV2Vha1B0cjxXZWJQYWdlUHJveHk+IG1fb3JpZ2luYXRpbmdQYWdl
OworICAgIFZlY3RvcjxXZWJDb3JlOjpVUkw+IG1fcmVkaXJlY3RDaGFpbjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
aW5kZXggNTNkNDYxYTQxMzk3ZDdlOTkyNzljMzFkYzhkNTI4YWE0Yzc5Mzk2Yy4uZWU0NWRiOGJi
MmU0YjQ0NDYxMTkxZGJhM2UxYTM5OWI3MjJhM2QyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yMjc4LDYgKzIyNzgsOCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBXZWJGcmFtZVBy
b3h5JiBmcgogICAgIGlmIChhY3Rpb24gPT0gUG9saWN5RG93bmxvYWQpIHsKICAgICAgICAgLy8g
Q3JlYXRlIGEgZG93bmxvYWQgcHJveHkuCiAgICAgICAgIGF1dG8qIGRvd25sb2FkID0gbV9wcm9j
ZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0ZURvd25sb2FkUHJveHkobV9kZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZVJlcXVlc3QsIHRoaXMpOworICAgICAgICBkb3dubG9hZC0+c2V0UmVkaXJlY3RDaGFp
bihtX3JlZGlyZWN0Q2hhaW5zLnRha2UoZnJhbWUuZnJhbWVJRCgpKSk7CisKICAgICAgICAgZG93
bmxvYWRJRCA9IGRvd25sb2FkLT5kb3dubG9hZElEKCk7CiAgICAgICAgIGhhbmRsZURvd25sb2Fk
UmVxdWVzdChkb3dubG9hZCk7CiAgICAgICAgIG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1
ZXN0ID0geyB9OwpAQCAtMzE1OCw2ICszMTYwLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmEK
ICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTCh1cmwpOwog
CisgICAgQVNTRVJUKCFtX3JlZGlyZWN0Q2hhaW5zLmNvbnRhaW5zKGZyYW1lSUQpKTsKKwogICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgbWVzc2FnZSBjaGVjayB0aGF0IG5hdmlnYXRpb25JRCBpcyBu
b3QgemVybyBoZXJlLCBidXQgaXQncyBjdXJyZW50bHkgemVybyBmb3Igc29tZSBuYXZpZ2F0aW9u
cyB0aHJvdWdoIHRoZSBwYWdlIGNhY2hlLgogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5h
dmlnYXRpb247CiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpICYmIG5hdmlnYXRpb25JRCkK
QEAgLTMxODgsNiArMzE5Miw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmCiAgICAgTUVTU0FH
RV9DSEVDSyhmcmFtZSk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwodXJsKTsKIAorICAgIGF1dG8m
IHJlZGlyZWN0Q2hhaW4gPSBtX3JlZGlyZWN0Q2hhaW5zLmVuc3VyZShmcmFtZUlELCBbXSB7IHJl
dHVybiBWZWN0b3I8V2ViQ29yZTo6VVJMPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgcmVk
aXJlY3RDaGFpbi5hcHBlbmQoVVJMKFVSTCgpLCB1cmwpKTsKKwogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgbWVzc2FnZSBjaGVjayB0aGF0IG5hdmlnYXRpb25JRCBpcyBub3QgemVybyBoZXJlLCBi
dXQgaXQncyBjdXJyZW50bHkgemVybyBmb3Igc29tZSBuYXZpZ2F0aW9ucyB0aHJvdWdoIHRoZSBw
YWdlIGNhY2hlLgogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb247CiAgICAg
aWYgKGZyYW1lLT5pc01haW5GcmFtZSgpICYmIG5hdmlnYXRpb25JRCkKQEAgLTMyNjAsNiArMzI2
Nyw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUg
PSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUp
OwogCisgICAgbV9yZWRpcmVjdENoYWlucy5yZW1vdmUoZnJhbWVJRCk7CisKICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIG1lc3NhZ2UgY2hlY2sgdGhhdCBuYXZpZ2F0aW9uSUQgaXMgbm90IHplcm8g
aGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IHplcm8gZm9yIHNvbWUgbmF2aWdhdGlvbnMgdGhyb3Vn
aCB0aGUgcGFnZSBjYWNoZS4KICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9u
OwogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSAmJiBuYXZpZ2F0aW9uSUQpCkBAIC0zNDEy
LDYgKzM0MjEsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogICAgIFdlYkZyYW1lUHJveHkq
IGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNL
KGZyYW1lKTsKIAorICAgIG1fcmVkaXJlY3RDaGFpbnMucmVtb3ZlKGZyYW1lSUQpOworCiAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBtZXNzYWdlIGNoZWNrIHRoYXQgbmF2aWdhdGlvbklEIGlzIG5v
dCB6ZXJvIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSB6ZXJvIGZvciBzb21lIG5hdmlnYXRpb25z
IHRocm91Z2ggdGhlIHBhZ2UgY2FjaGUuCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbmF2
aWdhdGlvbjsKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYgbmF2aWdhdGlvbklEKQpA
QCAtNTU4OSw2ICs1NjAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclBy
b2Nlc3NFeGl0ZWQoKQogICAgIG1fa2V5RXZlbnRRdWV1ZS5jbGVhcigpOwogICAgIG1fd2hlZWxF
dmVudFF1ZXVlLmNsZWFyKCk7CiAgICAgbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50cy5j
bGVhcigpOworICAgIG1fcmVkaXJlY3RDaGFpbnMuY2xlYXIoKTsKIAogICAgIG1fbmV4dE1vdXNl
TW92ZUV2ZW50ID0gbnVsbHB0cjsKICAgICBtX2N1cnJlbnRseVByb2Nlc3NlZE1vdXNlRG93bkV2
ZW50ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
NDliMWY3YjY3ZjU4N2M3ZjQzOWUyYWQzZDQ2ZjY4YTBiMjM3NGZhMy4uZjk3ZGNiODBhMWY3ZTZj
MDc3YWU0YjhmNWY3MWVhMDYxNmYzYmUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKQEAgLTIwMDQsNiArMjAwNCw4IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPFN0
cmluZywgUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+PiBtX3VybFNjaGVtZUhhbmRsZXJzQnlTY2hl
bWU7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+PiBtX3Vy
bFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVyOworCisgICAgSGFzaE1hcDx1aW50NjRfdCAvKiBm
cmFtZUlEICovLCBWZWN0b3I8V2ViQ29yZTo6VVJMPj4gbV9yZWRpcmVjdENoYWluczsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDA3YzJhNTJjMzIwNmY3ODNiOGU1OTI4NmQzZjJmNDA0NDUwZGQ4
MDAuLmQxYTQyMmNiYjkxNTg1ZGE5MTliZjYyYmM0ZDY3MjlkYWIxM2EzODkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAor
MjAxNy0wOS0wOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtX
SzJdIEFkZCBBUEkgdG8gZ2V0IHRoZSByZWRpcmVjdCBjaGFpbiBvZiBhIFdLRG93bmxvYWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjYyOAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzQzMzgyNzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlIGZvciB0aGUgMiBj
YXNlczoKKyAgICAgICAgMS4gRG93bmxvYWQgc3RhcnRlZCBhcyBhIGRvd25sb2FkIGFuZCBpcyBy
ZWRpcmVjdGVkIHdoaWxlCisgICAgICAgICAgIGRvd25sb2FkaW5nLgorICAgICAgICAyLiBEb3du
bG9hZCBzdGFydGVkIGFzIGEgbG9hZCBhbmQgd2FzIHJlZGlyZWN0ZWQgZHVyaW5nIHRoZQorICAg
ICAgICAgICBpbml0aWFsIGxvYWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0Rvd25sb2FkLm1tOgorICAgICAgICAoLVtSZWRpcmVjdGVkRG93bmxvYWREZWxl
Z2F0ZSBfZG93bmxvYWREaWRGaW5pc2g6XSk6CisgICAgICAgIChURVNUKToKKwogMjAxNy0wOS0w
NyAgTWF0dGhldyBTdGV3YXJ0ICA8bWF0dGhld19yX3N0ZXdhcnRAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBMaXZlIFBMVCBpbXBsZW1lbnRlZCB3aXRoIFdlYkRyaXZlcgpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KaW5kZXggMDg2Nzk5
ODU3NDA5YjljMjY4NzYxMTgxNzdhMmU1YjRjZjE2NTc2Mi4uMzdiMjU2MmYwNmFhYTFkZTQyYjQw
MTYxZjE2NTc4MDhjZTY1NWJhZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0Rvd25sb2FkLm1tCkBAIC00NzQsNiArNDc0LDExIEBAIC0gKHZvaWQpX2Rv
d25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRv
VVJMOihOU1VSTCAqCiAKIC0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAq
KWRvd25sb2FkCiB7CisgICAgTlNBcnJheTxOU1VSTCAqPiAqcmVkaXJlY3RDaGFpbiA9IGRvd25s
b2FkLnJlZGlyZWN0Q2hhaW47CisgICAgRVhQRUNUX0VRKDFVLCByZWRpcmVjdENoYWluLmNvdW50
KTsKKyAgICBpZiAocmVkaXJlY3RDaGFpbi5jb3VudCA+IDApCisgICAgICAgIEVYUEVDVF9TVFJF
USgiaHR0cDovL3Bhc3MvIiwgW3JlZGlyZWN0Q2hhaW5bMF0uYWJzb2x1dGVTdHJpbmcgVVRGOFN0
cmluZ10pOworCiAgICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKICAg
ICBpc0RvbmUgPSB0cnVlOwogfQpAQCAtNTExLDUgKzUxNiwyNyBAQCBURVNUKF9XS0Rvd25sb2Fk
LCBSZWRpcmVjdGVkRG93bmxvYWQpCiAgICAgW1Rlc3RQcm90b2NvbCB1bnJlZ2lzdGVyXTsKIH0K
IAorVEVTVChfV0tEb3dubG9hZCwgUmVkaXJlY3RlZExvYWRDb252ZXJ0ZWRUb0Rvd25sb2FkKQor
eworICAgIFtUZXN0UHJvdG9jb2wgcmVnaXN0ZXJXaXRoU2NoZW1lOkAiaHR0cCJdOworCisgICAg
YXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udmVydFJlc3BvbnNlVG9Eb3du
bG9hZE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gZG93bmxvYWRE
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1tSZWRpcmVjdGVkRG93bmxvYWREZWxlZ2F0ZSBhbGxvY10gaW5p
dF0pOworCisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsK
KyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdl
dCgpXTsKKyAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByb2Nlc3NQb29sXSBfc2V0RG93
bmxvYWREZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlLmdldCgpXTsKKworICAgIGV4cGVjdGVkT3Jp
Z2luYXRpbmdXZWJWaWV3ID0gd2ViVmlldy5nZXQoKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAg
ICBoYXNSZWNlaXZlZFJlZGlyZWN0ID0gZmFsc2U7CisgICAgaGFzUmVjZWl2ZWRSZXNwb25zZSA9
IGZhbHNlOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vcmVkaXJlY3QvP3Bhc3MiXV1dOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
aGFzUmVjZWl2ZWRSZWRpcmVjdCk7CisKKyAgICBbVGVzdFByb3RvY29sIHVucmVnaXN0ZXJdOwor
fQorCiAjZW5kaWYKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320309</attachid>
            <date>2017-09-08 15:08:55 -0700</date>
            <delta_ts>2017-09-19 14:09:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176628-20170908150854.patch</filename>
            <type>text/plain</type>
            <size>13808</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZiMjhiNWRjNTk5MWQ4NzZi
ODYxMmMwYTgxZGM5NTcyZTJhMTMwNGYuLmI0ODk2MjQ5NDEzZjZlYTA4ZTQ3YWUzYzkzYTc5NzY3
NjQ4MmYwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTctMDktMDggIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgQVBJIHRvIGdldCB0
aGUgcmVkaXJlY3QgY2hhaW4gb2YgYSBXS0Rvd25sb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY2MjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM0MzM4Mjc5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBBUEkgdG8gZ2V0IHRoZSByZWRpcmVjdCBjaGFpbiBvZiBhIFdLRHdubG9hZC4gVGhl
IHJlZGlyZWN0IGNoYWluIGluY2x1ZGVzIHJlZGlyZWN0cworICAgICAgICB0aGF0IGhhcHBlbmVk
IGR1cmluZyBpbml0aWFsIGxvYWQsIGJlZm9yZSB0aGUgbG9hZCB3YXMgY29udmVydGVkIGludG8g
YSBkb3dubG9hZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcDoK
KyAgICAgICAgKFdLRG93bmxvYWRDb3B5UmVkaXJlY3RDaGFpbik6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLRG93bmxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0Rvd25sb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5t
bToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgb3JpZ2luYXRpbmdXZWJWaWV3XSk6CisgICAgICAg
ICgtW19XS0Rvd25sb2FkIHJlZGlyZWN0Q2hhaW5dKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5
Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXRSZWRpcmVjdENo
YWluKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6cmVkaXJlY3RDaGFpbiBjb25z
dCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisKIDIwMTctMDktMDcgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIFFUS2l0LXJlbGF0ZWQgV2ViS2l0U3lzdGVt
SW50ZXJmYWNlIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rv
d25sb2FkLmNwcAppbmRleCA5ZDVkNmQ5ZGU0ZmFkM2Q5MmYxODhhNWJjYzkwNmI0MzMxNmQ3NTkz
Li4yNGRlMDlmMTllZjNkZmNjZDI3Zjc2MDIwOWQ4MzViNjIwNTQ0NWE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldLRG93bmxvYWQuaCIKIAorI2luY2x1ZGUg
IkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJRGF0YS5oIgogI2luY2x1ZGUgIkFQSVVSTFJlcXVl
c3QuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCkBAIC02MywzICs2NCwxMyBAQCBXS1Bh
Z2VSZWYgV0tEb3dubG9hZEdldE9yaWdpbmF0aW5nUGFnZShXS0Rvd25sb2FkUmVmIGRvd25sb2Fk
KQogewogICAgIHJldHVybiB0b0FQSSh0b0ltcGwoZG93bmxvYWQpLT5vcmlnaW5hdGluZ1BhZ2Uo
KSk7CiB9CisKK1dLQXJyYXlSZWYgV0tEb3dubG9hZENvcHlSZWRpcmVjdENoYWluKFdLRG93bmxv
YWRSZWYgZG93bmxvYWQpCit7CisgICAgYXV0byYgcmVkaXJlY3RDaGFpbiA9ICB0b0ltcGwoZG93
bmxvYWQpLT5yZWRpcmVjdENoYWluKCk7CisgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+
IHVybHM7CisgICAgdXJscy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlZGlyZWN0Q2hhaW4uc2l6
ZSgpKTsKKyAgICBmb3IgKGF1dG8mIHJlZGlyZWN0VVJMIDogcmVkaXJlY3RDaGFpbikKKyAgICAg
ICAgdXJscy51bmNoZWNrZWRBcHBlbmQoQVBJOjpVUkw6OmNyZWF0ZShyZWRpcmVjdFVSTC5zdHJp
bmcoKSkpOworICAgIHJldHVybiB0b0FQSSgmQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUodXJs
cykpLmxlYWtSZWYoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25s
b2FkLmgKaW5kZXggZDZkYTQwODE1Nzk3NWE5NDlmNzI3NzRjMTZlMzYxOWFhMGVlZDY5MS4uNmE4
YzZjZmQ0ZDc2NjBkYmU4NDBmNTAxNWJhYTI0ODFkYTIwYmUyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuaApAQCAtNDMsNiArNDMsNyBAQCBXS19FWFBPUlQg
V0tVUkxSZXF1ZXN0UmVmIFdLRG93bmxvYWRDb3B5UmVxdWVzdChXS0Rvd25sb2FkUmVmIGRvd25s
b2FkKTsKIFdLX0VYUE9SVCBXS0RhdGFSZWYgV0tEb3dubG9hZEdldFJlc3VtZURhdGEoV0tEb3du
bG9hZFJlZiBkb3dubG9hZCk7CiBXS19FWFBPUlQgdm9pZCBXS0Rvd25sb2FkQ2FuY2VsKFdLRG93
bmxvYWRSZWYgZG93bmxvYWQpOwogV0tfRVhQT1JUIFdLUGFnZVJlZiBXS0Rvd25sb2FkR2V0T3Jp
Z2luYXRpbmdQYWdlKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOworV0tfRVhQT1JUIFdLQXJyYXlS
ZWYgV0tEb3dubG9hZENvcHlSZWRpcmVjdENoYWluKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOwog
CiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0Rvd25sb2FkLmgKaW5kZXggMjM1MGNjZGI4ZDBkMjFhMmFmYTExYzNhZmY1OTQ1
MWFhZDA1OTRkNS4uOGRiMzMzMDgyYTIxYmJhZGU1NDI2MGY1YTQwZGQ2YTU1Mjc3MTcwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmgKQEAg
LTM4LDYgKzM4LDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjAp
KQogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TVVJMUmVxdWVzdCAqcmVxdWVz
dDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgd2VhaykgV0tXZWJWaWV3ICpvcmln
aW5hdGluZ1dlYlZpZXc7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5T
QXJyYXk8TlNVUkwgKj4gKnJlZGlyZWN0Q2hhaW4gV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tCmluZGV4IDEzMWMzMmZmMWJmZWQx
NjFkMjJmNDBhMjE4MGMzZjQ4ZTAwYzhiYTQuLjQ3ZTZmNDdhZTkyZTk3YjFiNTZmNzgwNjg1OWNj
NDIwYmI4NzgyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tEb3dubG9hZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLRG93bmxvYWQubW0KQEAgLTU4LDcgKzU4LDE1IEBAIC0gKFdLV2ViVmlldyAqKW9yaWdpbmF0
aW5nV2ViVmlldwogICAgIGlmIChhdXRvKiBvcmlnaW5hdGluZ1BhZ2UgPSBfZG93bmxvYWQtPm9y
aWdpbmF0aW5nUGFnZSgpKQogICAgICAgICByZXR1cm4gW1tmcm9tV2ViUGFnZVByb3h5KCpvcmln
aW5hdGluZ1BhZ2UpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogICAgIHJldHVybiBuaWw7Cit9CiAK
Ky0oTlNBcnJheTxOU1VSTCAqPiAqKXJlZGlyZWN0Q2hhaW4KK3sKKyAgICBhdXRvJiByZWRpcmVj
dFVSTHMgPSBfZG93bmxvYWQtPnJlZGlyZWN0Q2hhaW4oKTsKKyAgICBOU011dGFibGVBcnJheTxO
U1VSTCAqPiAqbnNVUkxzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnJlZGly
ZWN0VVJMcy5zaXplKCldOworICAgIGZvciAoY29uc3QgYXV0byYgcmVkaXJlY3RVUkwgOiByZWRp
cmVjdFVSTHMpCisgICAgICAgIFtuc1VSTHMgYWRkT2JqZWN0OihOU1VSTCAqKXJlZGlyZWN0VVJM
XTsKKyAgICByZXR1cm4gbnNVUkxzOwogfQogCiAjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9j
b2wgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5LmNwcAppbmRleCBjMjYxOGEyMDdhMTBjZjM3MTUwYmUxZmJmYjgx
NmVmN2I0NzFjZDhhLi41NzJjMTA3ZDhlODZhOGZmYzE4NjE4ZTRiNTMyMzJmYzUxZmU3YzU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHkuY3BwCkBAIC0xNDUsNyArMTQ1LDkgQEAgdm9pZCBEb3dubG9hZFByb3h5Ojp3aWxsU2VuZFJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcm9wb3NlZFJlcXVlc3QsIGNvbnMKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPERvd25sb2FkUHJveHk+IHByb3RlY3RlZFRoaXModGhp
cyk7Ci0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS53aWxsU2VuZFJlcXVlc3Qo
bV9wcm9jZXNzUG9vbC5nZXQoKSwgdGhpcywgcHJvcG9zZWRSZXF1ZXN0LCByZWRpcmVjdFJlc3Bv
bnNlLCBbcHJvdGVjdGVkVGhpc10oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KSB7
CisgICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS53aWxsU2VuZFJlcXVlc3QobV9w
cm9jZXNzUG9vbC5nZXQoKSwgdGhpcywgcHJvcG9zZWRSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNl
LCBbdGhpcywgcHJvdGVjdGVkVGhpc10oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0
KSB7CisgICAgICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQobmV3UmVxdWVzdC51cmwoKSk7CisK
ICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPm1f
cHJvY2Vzc1Bvb2wpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTUsOCArMTU3LDYgQEAgdm9p
ZCBEb3dubG9hZFByb3h5Ojp3aWxsU2VuZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBw
cm9wb3NlZFJlcXVlc3QsIGNvbnMKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBuZXR3
b3JrUHJvY2Vzc1Byb3h5LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q29udGludWVX
aWxsU2VuZFJlcXVlc3QocHJvdGVjdGVkVGhpcy0+bV9kb3dubG9hZElELCBuZXdSZXF1ZXN0KSwg
MCk7Ci0jZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0obmV3UmVxdWVzdCk7CiAjZW5kaWYKICAg
ICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5oCmluZGV4IDQ5Nzk3ZjM4NmFhMWMyOTMyZjNmNTgzMTRhNjk4NWViMmMyYjJlYTYu
LmNhNTVmYjMzNWU5MjMwMTQ3YTdkYzM5NDE4ZTJiNTEyNjVmYWZlM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaApAQCAtNDQsNiAr
NDQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIFByb3RlY3Rpb25T
cGFjZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xh
c3MgVVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTczLDYgKzc0LDkgQEAgcHVibGlj
OgogICAgIFdlYlBhZ2VQcm94eSogb3JpZ2luYXRpbmdQYWdlKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRPcmlnaW5hdGluZ1BhZ2UoV2ViUGFnZVByb3h5Kik7CiAKKyAgICB2b2lkIHNldFJlZGlyZWN0
Q2hhaW4oVmVjdG9yPFdlYkNvcmU6OlVSTD4mJiByZWRpcmVjdENoYWluKSB7IG1fcmVkaXJlY3RD
aGFpbiA9IFdURk1vdmUocmVkaXJlY3RDaGFpbik7IH0KKyAgICBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6VVJMPiYgcmVkaXJlY3RDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVkaXJlY3RDaGFpbjsg
fQorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERvd25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1h
cCYsIFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAK
QEAgLTEwOSw2ICsxMTMsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3N1Z2dlc3RlZEZpbGVu
YW1lOwogCiAgICAgV2Vha1B0cjxXZWJQYWdlUHJveHk+IG1fb3JpZ2luYXRpbmdQYWdlOworICAg
IFZlY3RvcjxXZWJDb3JlOjpVUkw+IG1fcmVkaXJlY3RDaGFpbjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
NTNkNDYxYTQxMzk3ZDdlOTkyNzljMzFkYzhkNTI4YWE0Yzc5Mzk2Yy4uZWU0NWRiOGJiMmU0YjQ0
NDYxMTkxZGJhM2UxYTM5OWI3MjJhM2QyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC0yMjc4LDYgKzIyNzgsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVj
ZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBXZWJGcmFtZVByb3h5JiBm
cgogICAgIGlmIChhY3Rpb24gPT0gUG9saWN5RG93bmxvYWQpIHsKICAgICAgICAgLy8gQ3JlYXRl
IGEgZG93bmxvYWQgcHJveHkuCiAgICAgICAgIGF1dG8qIGRvd25sb2FkID0gbV9wcm9jZXNzLT5w
cm9jZXNzUG9vbCgpLmNyZWF0ZURvd25sb2FkUHJveHkobV9kZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZVJlcXVlc3QsIHRoaXMpOworICAgICAgICBkb3dubG9hZC0+c2V0UmVkaXJlY3RDaGFpbihtX3Jl
ZGlyZWN0Q2hhaW5zLnRha2UoZnJhbWUuZnJhbWVJRCgpKSk7CisKICAgICAgICAgZG93bmxvYWRJ
RCA9IGRvd25sb2FkLT5kb3dubG9hZElEKCk7CiAgICAgICAgIGhhbmRsZURvd25sb2FkUmVxdWVz
dChkb3dubG9hZCk7CiAgICAgICAgIG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0ID0g
eyB9OwpAQCAtMzE1OCw2ICszMTYwLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmEKICAgICBN
RVNTQUdFX0NIRUNLKGZyYW1lKTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTCh1cmwpOwogCisgICAg
QVNTRVJUKCFtX3JlZGlyZWN0Q2hhaW5zLmNvbnRhaW5zKGZyYW1lSUQpKTsKKwogICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgbWVzc2FnZSBjaGVjayB0aGF0IG5hdmlnYXRpb25JRCBpcyBub3QgemVy
byBoZXJlLCBidXQgaXQncyBjdXJyZW50bHkgemVybyBmb3Igc29tZSBuYXZpZ2F0aW9ucyB0aHJv
dWdoIHRoZSBwYWdlIGNhY2hlLgogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRp
b247CiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpICYmIG5hdmlnYXRpb25JRCkKQEAgLTMx
ODgsNiArMzE5Miw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmCiAgICAgTUVTU0FHRV9DSEVD
SyhmcmFtZSk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwodXJsKTsKIAorICAgIGF1dG8mIHJlZGly
ZWN0Q2hhaW4gPSBtX3JlZGlyZWN0Q2hhaW5zLmVuc3VyZShmcmFtZUlELCBbXSB7IHJldHVybiBW
ZWN0b3I8V2ViQ29yZTo6VVJMPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgcmVkaXJlY3RD
aGFpbi5hcHBlbmQoVVJMKFVSTCgpLCB1cmwpKTsKKwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
bWVzc2FnZSBjaGVjayB0aGF0IG5hdmlnYXRpb25JRCBpcyBub3QgemVybyBoZXJlLCBidXQgaXQn
cyBjdXJyZW50bHkgemVybyBmb3Igc29tZSBuYXZpZ2F0aW9ucyB0aHJvdWdoIHRoZSBwYWdlIGNh
Y2hlLgogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb247CiAgICAgaWYgKGZy
YW1lLT5pc01haW5GcmFtZSgpICYmIG5hdmlnYXRpb25JRCkKQEAgLTMyNjAsNiArMzI2Nyw4IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3By
b2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCisg
ICAgbV9yZWRpcmVjdENoYWlucy5yZW1vdmUoZnJhbWVJRCk7CisKICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIG1lc3NhZ2UgY2hlY2sgdGhhdCBuYXZpZ2F0aW9uSUQgaXMgbm90IHplcm8gaGVyZSwg
YnV0IGl0J3MgY3VycmVudGx5IHplcm8gZm9yIHNvbWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUg
cGFnZSBjYWNoZS4KICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9uOwogICAg
IGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSAmJiBuYXZpZ2F0aW9uSUQpCkBAIC0zNDEyLDYgKzM0
MjEsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1l
ID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1l
KTsKIAorICAgIG1fcmVkaXJlY3RDaGFpbnMucmVtb3ZlKGZyYW1lSUQpOworCiAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBtZXNzYWdlIGNoZWNrIHRoYXQgbmF2aWdhdGlvbklEIGlzIG5vdCB6ZXJv
IGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSB6ZXJvIGZvciBzb21lIG5hdmlnYXRpb25zIHRocm91
Z2ggdGhlIHBhZ2UgY2FjaGUuCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbmF2aWdhdGlv
bjsKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYgbmF2aWdhdGlvbklEKQpAQCAtNTU4
OSw2ICs1NjAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NF
eGl0ZWQoKQogICAgIG1fa2V5RXZlbnRRdWV1ZS5jbGVhcigpOwogICAgIG1fd2hlZWxFdmVudFF1
ZXVlLmNsZWFyKCk7CiAgICAgbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50cy5jbGVhcigp
OworICAgIG1fcmVkaXJlY3RDaGFpbnMuY2xlYXIoKTsKIAogICAgIG1fbmV4dE1vdXNlTW92ZUV2
ZW50ID0gbnVsbHB0cjsKICAgICBtX2N1cnJlbnRseVByb2Nlc3NlZE1vdXNlRG93bkV2ZW50ID0g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNDliMWY3
YjY3ZjU4N2M3ZjQzOWUyYWQzZDQ2ZjY4YTBiMjM3NGZhMy4uZjk3ZGNiODBhMWY3ZTZjMDc3YWU0
YjhmNWY3MWVhMDYxNmYzYmUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTIwMDQsNiArMjAwNCw4IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPFN0cmluZywg
UmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+PiBtX3VybFNjaGVtZUhhbmRsZXJzQnlTY2hlbWU7CiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+PiBtX3VybFNjaGVt
ZUhhbmRsZXJzQnlJZGVudGlmaWVyOworCisgICAgSGFzaE1hcDx1aW50NjRfdCAvKiBmcmFtZUlE
ICovLCBWZWN0b3I8V2ViQ29yZTo6VVJMPj4gbV9yZWRpcmVjdENoYWluczsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDA3YzJhNTJjMzIwNmY3ODNiOGU1OTI4NmQzZjJmNDA0NDUwZGQ4MDAuLmQx
YTQyMmNiYjkxNTg1ZGE5MTliZjYyYmM0ZDY3MjlkYWIxM2EzODkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNy0w
OS0wOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEFk
ZCBBUEkgdG8gZ2V0IHRoZSByZWRpcmVjdCBjaGFpbiBvZiBhIFdLRG93bmxvYWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjYyOAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzQzMzgyNzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlIGZvciB0aGUgMiBjYXNlczoK
KyAgICAgICAgMS4gRG93bmxvYWQgc3RhcnRlZCBhcyBhIGRvd25sb2FkIGFuZCBpcyByZWRpcmVj
dGVkIHdoaWxlCisgICAgICAgICAgIGRvd25sb2FkaW5nLgorICAgICAgICAyLiBEb3dubG9hZCBz
dGFydGVkIGFzIGEgbG9hZCBhbmQgd2FzIHJlZGlyZWN0ZWQgZHVyaW5nIHRoZQorICAgICAgICAg
ICBpbml0aWFsIGxvYWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0Rvd25sb2FkLm1tOgorICAgICAgICAoLVtSZWRpcmVjdGVkRG93bmxvYWREZWxlZ2F0ZSBf
ZG93bmxvYWREaWRGaW5pc2g6XSk6CisgICAgICAgIChURVNUKToKKwogMjAxNy0wOS0wNyAgTWF0
dGhldyBTdGV3YXJ0ICA8bWF0dGhld19yX3N0ZXdhcnRAYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBMaXZlIFBMVCBpbXBsZW1lbnRlZCB3aXRoIFdlYkRyaXZlcgpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KaW5kZXggMDg2Nzk5ODU3NDA5
YjljMjY4NzYxMTgxNzdhMmU1YjRjZjE2NTc2Mi4uMzdiMjU2MmYwNmFhYTFkZTQyYjQwMTYxZjE2
NTc4MDhjZTY1NWJhZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Eb3dubG9hZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0Rvd25sb2FkLm1tCkBAIC00NzQsNiArNDc0LDExIEBAIC0gKHZvaWQpX2Rvd25sb2Fk
OihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOihO
U1VSTCAqCiAKIC0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25s
b2FkCiB7CisgICAgTlNBcnJheTxOU1VSTCAqPiAqcmVkaXJlY3RDaGFpbiA9IGRvd25sb2FkLnJl
ZGlyZWN0Q2hhaW47CisgICAgRVhQRUNUX0VRKDFVLCByZWRpcmVjdENoYWluLmNvdW50KTsKKyAg
ICBpZiAocmVkaXJlY3RDaGFpbi5jb3VudCA+IDApCisgICAgICAgIEVYUEVDVF9TVFJFUSgiaHR0
cDovL3Bhc3MvIiwgW3JlZGlyZWN0Q2hhaW5bMF0uYWJzb2x1dGVTdHJpbmcgVVRGOFN0cmluZ10p
OworCiAgICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKICAgICBpc0Rv
bmUgPSB0cnVlOwogfQpAQCAtNTExLDUgKzUxNiwyNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZWRp
cmVjdGVkRG93bmxvYWQpCiAgICAgW1Rlc3RQcm90b2NvbCB1bnJlZ2lzdGVyXTsKIH0KIAorVEVT
VChfV0tEb3dubG9hZCwgUmVkaXJlY3RlZExvYWRDb252ZXJ0ZWRUb0Rvd25sb2FkKQoreworICAg
IFtUZXN0UHJvdG9jb2wgcmVnaXN0ZXJXaXRoU2NoZW1lOkAiaHR0cCJdOworCisgICAgYXV0byBu
YXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udmVydFJlc3BvbnNlVG9Eb3dubG9hZE5h
dmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gZG93bmxvYWREZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tSZWRpcmVjdGVkRG93bmxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwor
CisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBb
d2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsK
KyAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByb2Nlc3NQb29sXSBfc2V0RG93bmxvYWRE
ZWxlZ2F0ZTpkb3dubG9hZERlbGVnYXRlLmdldCgpXTsKKworICAgIGV4cGVjdGVkT3JpZ2luYXRp
bmdXZWJWaWV3ID0gd2ViVmlldy5nZXQoKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBoYXNS
ZWNlaXZlZFJlZGlyZWN0ID0gZmFsc2U7CisgICAgaGFzUmVjZWl2ZWRSZXNwb25zZSA9IGZhbHNl
OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vcmVkaXJlY3QvP3Bhc3MiXV1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICBFWFBFQ1RfRkFMU0UoaGFzUmVj
ZWl2ZWRSZWRpcmVjdCk7CisKKyAgICBbVGVzdFByb3RvY29sIHVucmVnaXN0ZXJdOworfQorCiAj
ZW5kaWYKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321241</attachid>
            <date>2017-09-19 14:09:49 -0700</date>
            <delta_ts>2017-09-20 13:11:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176628-20170919140948.patch</filename>
            <type>text/plain</type>
            <size>15656</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRhMmUyODBlZjc2ZTg4OWQ0
OWJjOGZhNmM1M2EzM2Q0ODMxOWZmMDkuLjFkNzNiNmY1YmM5OTA3MDNiNGQxZjhmMjU5Y2JmNmI4
YzA5OTMzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTctMDktMTkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgQVBJIHRvIGdldCB0
aGUgcmVkaXJlY3QgY2hhaW4gb2YgYSBXS0Rvd25sb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY2MjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM0MzM4Mjc5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBBUEkgdG8gZ2V0IHRoZSByZWRpcmVjdCBjaGFpbiBvZiBhIFdLRHdubG9hZC4gVGhl
IHJlZGlyZWN0IGNoYWluIGluY2x1ZGVzIHJlZGlyZWN0cworICAgICAgICB0aGF0IGhhcHBlbmVk
IGR1cmluZyBpbml0aWFsIGxvYWQsIGJlZm9yZSB0aGUgbG9hZCB3YXMgY29udmVydGVkIGludG8g
YSBkb3dubG9hZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcDoK
KyAgICAgICAgKFdLRG93bmxvYWRDb3B5UmVkaXJlY3RDaGFpbik6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLRG93bmxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0Rvd25sb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5t
bToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgb3JpZ2luYXRpbmdXZWJWaWV3XSk6CisgICAgICAg
ICgtW19XS0Rvd25sb2FkIHJlZGlyZWN0Q2hhaW5dKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5
Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXRSZWRpcmVjdENo
YWluKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6cmVkaXJlY3RDaGFpbiBjb25z
dCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVQcm94eTo6cmVkaXJlY3RDaGFpbiBjb25zdCk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisKIDIwMTctMDktMTggIE1pY2hhZWwgQ2F0YW56
YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDTWFrZV0gUmVuYW1lIFdl
YktpdCB0YXJnZXQgdG8gV2ViS2l0TGVnYWN5IGFuZCByZW5hbWUgV2ViS2l0MiB0YXJnZXQgdG8g
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25s
b2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuY3BwCmlu
ZGV4IDlkNWQ2ZDlkZTRmYWQzZDkyZjE4OGE1YmNjOTA2YjQzMzE2ZDc1OTMuLjI0ZGUwOWYxOWVm
M2RmY2NkMjdmNzYwMjA5ZDgzNWI2MjA1NDQ1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLRG93bmxvYWQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV0tEb3dubG9hZC5oIgogCisjaW5jbHVkZSAiQVBJQXJyYXkuaCIK
ICNpbmNsdWRlICJBUElEYXRhLmgiCiAjaW5jbHVkZSAiQVBJVVJMUmVxdWVzdC5oIgogI2luY2x1
ZGUgIkRvd25sb2FkUHJveHkuaCIKQEAgLTYzLDMgKzY0LDEzIEBAIFdLUGFnZVJlZiBXS0Rvd25s
b2FkR2V0T3JpZ2luYXRpbmdQYWdlKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCiB7CiAgICAgcmV0
dXJuIHRvQVBJKHRvSW1wbChkb3dubG9hZCktPm9yaWdpbmF0aW5nUGFnZSgpKTsKIH0KKworV0tB
cnJheVJlZiBXS0Rvd25sb2FkQ29weVJlZGlyZWN0Q2hhaW4oV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCkKK3sKKyAgICBhdXRvJiByZWRpcmVjdENoYWluID0gIHRvSW1wbChkb3dubG9hZCktPnJlZGly
ZWN0Q2hhaW4oKTsKKyAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gdXJsczsKKyAgICB1
cmxzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVkaXJlY3RDaGFpbi5zaXplKCkpOworICAgIGZv
ciAoYXV0byYgcmVkaXJlY3RVUkwgOiByZWRpcmVjdENoYWluKQorICAgICAgICB1cmxzLnVuY2hl
Y2tlZEFwcGVuZChBUEk6OlVSTDo6Y3JlYXRlKHJlZGlyZWN0VVJMLnN0cmluZygpKSk7CisgICAg
cmV0dXJuIHRvQVBJKCZBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZSh1cmxzKSkubGVha1JlZigp
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxv
YWQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuaAppbmRleCBk
NmRhNDA4MTU3OTc1YTk0OWY3Mjc3NGMxNmUzNjE5YWEwZWVkNjkxLi42YThjNmNmZDRkNzY2MGRi
ZTg0MGY1MDE1YmFhMjQ4MWRhMjBiZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tEb3dubG9hZC5oCkBAIC00Myw2ICs0Myw3IEBAIFdLX0VYUE9SVCBXS1VSTFJlcXVlc3RS
ZWYgV0tEb3dubG9hZENvcHlSZXF1ZXN0KFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOwogV0tfRVhQ
T1JUIFdLRGF0YVJlZiBXS0Rvd25sb2FkR2V0UmVzdW1lRGF0YShXS0Rvd25sb2FkUmVmIGRvd25s
b2FkKTsKIFdLX0VYUE9SVCB2b2lkIFdLRG93bmxvYWRDYW5jZWwoV0tEb3dubG9hZFJlZiBkb3du
bG9hZCk7CiBXS19FWFBPUlQgV0tQYWdlUmVmIFdLRG93bmxvYWRHZXRPcmlnaW5hdGluZ1BhZ2Uo
V0tEb3dubG9hZFJlZiBkb3dubG9hZCk7CitXS19FWFBPUlQgV0tBcnJheVJlZiBXS0Rvd25sb2Fk
Q29weVJlZGlyZWN0Q2hhaW4oV0tEb3dubG9hZFJlZiBkb3dubG9hZCk7CiAKICNpZmRlZiBfX2Nw
bHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93
bmxvYWQuaAppbmRleCAyMzUwY2NkYjhkMGQyMWEyYWZhMTFjM2FmZjU5NDUxYWFkMDU5NGQ1Li44
ZGIzMzMwODJhMjFiYmFkZTU0MjYwZjVhNDBkZDZhNTUyNzcxNzA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaApAQCAtMzgsNiArMzgsNyBA
QCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpCiAKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0OwogQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5LCB3ZWFrKSBXS1dlYlZpZXcgKm9yaWdpbmF0aW5nV2ViVmll
dzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1VSTCAq
PiAqcmVkaXJlY3RDaGFpbiBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRG93bmxvYWQubW0KaW5kZXggMTMxYzMyZmYxYmZlZDE2MWQyMmY0MGEyMTgw
YzNmNDhlMDBjOGJhNC4uNDdlNmY0N2FlOTJlOTdiMWI1NmY3ODA2ODU5Y2M0MjBiYjg3ODI5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2Fk
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5t
bQpAQCAtNTgsNyArNTgsMTUgQEAgLSAoV0tXZWJWaWV3ICopb3JpZ2luYXRpbmdXZWJWaWV3CiAg
ICAgaWYgKGF1dG8qIG9yaWdpbmF0aW5nUGFnZSA9IF9kb3dubG9hZC0+b3JpZ2luYXRpbmdQYWdl
KCkpCiAgICAgICAgIHJldHVybiBbW2Zyb21XZWJQYWdlUHJveHkoKm9yaWdpbmF0aW5nUGFnZSkg
cmV0YWluXSBhdXRvcmVsZWFzZV07CiAgICAgcmV0dXJuIG5pbDsKK30KIAorLShOU0FycmF5PE5T
VVJMICo+ICopcmVkaXJlY3RDaGFpbgoreworICAgIGF1dG8mIHJlZGlyZWN0VVJMcyA9IF9kb3du
bG9hZC0+cmVkaXJlY3RDaGFpbigpOworICAgIE5TTXV0YWJsZUFycmF5PE5TVVJMICo+ICpuc1VS
THMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6cmVkaXJlY3RVUkxzLnNpemUo
KV07CisgICAgZm9yIChjb25zdCBhdXRvJiByZWRpcmVjdFVSTCA6IHJlZGlyZWN0VVJMcykKKyAg
ICAgICAgW25zVVJMcyBhZGRPYmplY3Q6KE5TVVJMICopcmVkaXJlY3RVUkxdOworICAgIHJldHVy
biBuc1VSTHM7CiB9CiAKICNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRh
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkuY3BwCmluZGV4IDdkOTI1ZGQ5NjAzMjc3YzYxYmMwMGUwYjdmYTYxNjhlMzA0OGU4MGIu
LjAxNWM2MjgzOWQ4OGM2MGQxMzYxZmYxNzYxYTc0YWU0NzUyZmM5YmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKQEAgLTE0
NSw3ICsxNDUsOSBAQCB2b2lkIERvd25sb2FkUHJveHk6OndpbGxTZW5kUmVxdWVzdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHByb3Bvc2VkUmVxdWVzdCwgY29ucwogICAgICAgICByZXR1cm47CiAK
ICAgICBSZWZQdHI8RG93bmxvYWRQcm94eT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBtX3By
b2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLndpbGxTZW5kUmVxdWVzdChtX3Byb2Nlc3NQb29s
LmdldCgpLCB0aGlzLCBwcm9wb3NlZFJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIFtwcm90ZWN0
ZWRUaGlzXShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpIHsKKyAgICBtX3Byb2Nl
c3NQb29sLT5kb3dubG9hZENsaWVudCgpLndpbGxTZW5kUmVxdWVzdChtX3Byb2Nlc3NQb29sLmdl
dCgpLCB0aGlzLCBwcm9wb3NlZFJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzXShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpIHsKKyAgICAgICAg
bV9yZWRpcmVjdENoYWluLmFwcGVuZChuZXdSZXF1ZXN0LnVybCgpKTsKKwogI2lmIFVTRShORVRX
T1JLX1NFU1NJT04pCiAgICAgICAgIGlmICghcHJvdGVjdGVkVGhpcy0+bV9wcm9jZXNzUG9vbCkK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1NSw4ICsxNTcsNiBAQCB2b2lkIERvd25sb2FkUHJv
eHk6OndpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHByb3Bvc2VkUmVxdWVz
dCwgY29ucwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG5ldHdvcmtQcm9jZXNzUHJv
eHktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDb250aW51ZVdpbGxTZW5kUmVxdWVz
dChwcm90ZWN0ZWRUaGlzLT5tX2Rvd25sb2FkSUQsIG5ld1JlcXVlc3QpLCAwKTsKLSNlbHNlCi0g
ICAgICAgIFVOVVNFRF9QQVJBTShuZXdSZXF1ZXN0KTsKICNlbmRpZgogICAgIH0pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5k
ZXggNDk3OTdmMzg2YWExYzI5MzJmM2Y1ODMxNGE2OTg1ZWIyYzJiMmVhNi4uMzlkOTdjNTQ4Y2U0
MTVjNGE5Mzk4ZDA2MTJhYTBkOWQxMjI1YTZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNz
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CitjbGFzcyBVUkw7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzMsNiArNzQsOSBAQCBwdWJsaWM6CiAgICAgV2ViUGFn
ZVByb3h5KiBvcmlnaW5hdGluZ1BhZ2UoKSBjb25zdDsKICAgICB2b2lkIHNldE9yaWdpbmF0aW5n
UGFnZShXZWJQYWdlUHJveHkqKTsKIAorICAgIHZvaWQgc2V0UmVkaXJlY3RDaGFpbihjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6VVJMPiYgcmVkaXJlY3RDaGFpbikgeyBtX3JlZGlyZWN0Q2hhaW4gPSBy
ZWRpcmVjdENoYWluOyB9CisgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIHJlZGlyZWN0
Q2hhaW4oKSBjb25zdCB7IHJldHVybiBtX3JlZGlyZWN0Q2hhaW47IH0KKwogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAmLCBXZWJQcm9jZXNzUG9v
bCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCkBAIC0xMDksNiArMTEzLDcg
QEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zdWdnZXN0ZWRGaWxlbmFtZTsKIAogICAgIFdlYWtQ
dHI8V2ViUGFnZVByb3h5PiBtX29yaWdpbmF0aW5nUGFnZTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6
VVJMPiBtX3JlZGlyZWN0Q2hhaW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKaW5kZXggYTkxZGE0YTkyZTJlYTk1
MjU4MTEyMDE4NGQyYjEzMmZhODg2ZTA1MC4uMDg3OWU2NmVmMTQyNGMwODAwMDg3MDBjNTRhYzAy
ZjRkZWFjZDU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAK
QEAgLTEzMiwxMSArMTMyLDE2IEBAIGJvb2wgV2ViRnJhbWVQcm94eTo6aXNEaXNwbGF5aW5nUERG
RG9jdW1lbnQoKSBjb25zdAogCiB2b2lkIFdlYkZyYW1lUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkKGNvbnN0IFVSTCYgdXJsKQogeworICAgIEFTU0VSVChtX3JlZGlyZWN0Q2hhaW4uaXNF
bXB0eSgpKTsKICAgICBtX2ZyYW1lTG9hZFN0YXRlLmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKHVy
bCk7CiB9CiAKIHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVSTCYgdXJsKQogeworICAgIC8vIGRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpIG9mdGVuIGdldHMgY2FsbGVkIHR3aWNlIGZv
ciB0aGUgc2FtZSByZWRpcmVjdC4KKyAgICBpZiAobV9yZWRpcmVjdENoYWluLmlzRW1wdHkoKSB8
fCBtX3JlZGlyZWN0Q2hhaW4ubGFzdCgpICE9IHVybCkKKyAgICAgICAgbV9yZWRpcmVjdENoYWlu
LmFwcGVuZCh1cmwpOworCiAgICAgbV9mcmFtZUxvYWRTdGF0ZS5kaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWQodXJsKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5oCmluZGV4IGI3OTJkMDJiNzZlZDM3YWY1NjcyYzUzZDM2YWYyNGEzZGFj
YjIyZTkuLjIxY2EzZWNkNmIxMDA5ZTk4Mzg5ZDE3ZDJjZTBkMzgyZGUxOWU3ZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKQEAgLTkwLDYgKzkwLDcgQEAgcHVibGlj
OgogICAgIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGFpbnNQbHVnaW5Eb2N1bWVudDsgfQogCiAgICAgY29uc3QgU3RyaW5nJiB0aXRsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdGl0bGU7IH0KKyAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgcmVk
aXJlY3RDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVkaXJlY3RDaGFpbjsgfQogCiAgICAgV2Vi
Q2VydGlmaWNhdGVJbmZvKiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRp
ZmljYXRlSW5mby5nZXQoKTsgfQogCkBAIC0xNDIsNyArMTQzLDcgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8V2ViQ2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKICAgICBSZWZQdHI8
V2ViRnJhbWVMaXN0ZW5lclByb3h5PiBtX2FjdGl2ZUxpc3RlbmVyOwogICAgIHVpbnQ2NF90IG1f
ZnJhbWVJRDsKLQorICAgIFZlY3RvcjxXZWJDb3JlOjpVUkw+IG1fcmVkaXJlY3RDaGFpbjsKICNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgV2ViQ29yZTo6Q29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyIG1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBhNzk5OGViYTg4MWE0ZWNk
NTc2YzZkZDAzOTliYWZiYjE1NmNmNTY1Li43Y2MyZTAxNTUzY2RmNTVlNzk5ZDRhMzc2YWM3ZTQ2
MDE3ZTMwMDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTIyNzgsNiArMjI3OCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lz
aW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIFdlYkZyYW1lUHJveHkmIGZyCiAgICAgaWYgKGFjdGlv
biA9PSBQb2xpY3lEb3dubG9hZCkgewogICAgICAgICAvLyBDcmVhdGUgYSBkb3dubG9hZCBwcm94
eS4KICAgICAgICAgYXV0byogZG93bmxvYWQgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuY3Jl
YXRlRG93bmxvYWRQcm94eShtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdCwgdGhpcyk7
CisgICAgICAgIGRvd25sb2FkLT5zZXRSZWRpcmVjdENoYWluKGZyYW1lLnJlZGlyZWN0Q2hhaW4o
KSk7CisKICAgICAgICAgZG93bmxvYWRJRCA9IGRvd25sb2FkLT5kb3dubG9hZElEKCk7CiAgICAg
ICAgIGhhbmRsZURvd25sb2FkUmVxdWVzdChkb3dubG9hZCk7CiAgICAgICAgIG1fZGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2VSZXF1ZXN0ID0geyB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDZlMGQyNzQ5OTk3NTk1N2MzYTcyMWVkYjY0OWVlOGJh
NTU2NjQxZjguLjBmYzkzNmNiYTQ5OGVlOTMyOGM3ZTU1Yjk0NThhNjRhOGYwODU1YzMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MiBAQAorMjAxNy0wOS0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFtXSzJdIEFkZCBBUEkgdG8gZ2V0IHRoZSByZWRpcmVjdCBjaGFpbiBvZiBhIFdLRG93bmxv
YWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjYy
OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQzMzgyNzk+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlIGZvciB0
aGUgMiBjYXNlczoKKyAgICAgICAgMS4gRG93bmxvYWQgc3RhcnRlZCBhcyBhIGRvd25sb2FkIGFu
ZCBpcyByZWRpcmVjdGVkIHdoaWxlCisgICAgICAgICAgIGRvd25sb2FkaW5nLgorICAgICAgICAy
LiBEb3dubG9hZCBzdGFydGVkIGFzIGEgbG9hZCBhbmQgd2FzIHJlZGlyZWN0ZWQgZHVyaW5nIHRo
ZQorICAgICAgICAgICBpbml0aWFsIGxvYWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tOgorICAgICAgICAoLVtSZWRpcmVjdGVkRG93bmxv
YWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6XSk6Cisg
ICAgICAgICgtW1JlZGlyZWN0ZWREb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDpd
KToKKyAgICAgICAgKFRFU1QpOgorCiAyMDE3LTA5LTE4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgQ2Fubm90IHB1dCB0eXBlZGVmcyBvZiB0ZW1wbGF0ZWQgc3Ry
dWN0cyBpbnNpZGUgc3RydWN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvRG93bmxvYWQubW0KaW5kZXggMDg2Nzk5ODU3NDA5YjljMjY4NzYxMTgxNzdhMmU1
YjRjZjE2NTc2Mi4uZGM2YmViNTk1NjdlMmY1NTUwZmRjNTE1MzhmNzQ1ZDcxMTc3NmMwNSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1t
CkBAIC00Niw3ICs0Niw3IEBACiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogc3Rh
dGljIGJvb2wgaXNEb25lOwotc3RhdGljIGJvb2wgaGFzUmVjZWl2ZWRSZWRpcmVjdDsKK3N0YXRp
YyB1bnNpZ25lZCByZWRpcmVjdENvdW50ID0gMDsKIHN0YXRpYyBib29sIGhhc1JlY2VpdmVkUmVz
cG9uc2U7CiBzdGF0aWMgTlNVUkwgKnNvdXJjZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rv
cnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogc3RhdGljIFdLV2ViVmlldyogZXhwZWN0
ZWRPcmlnaW5hdGluZ1dlYlZpZXc7CkBAIC00NjgsMTIgKzQ2OCwyMiBAQCAtIChOU1N0cmluZyAq
KV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaQogCiAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDooTlNVUkwgKil1cmwKIHsKLSAgICBFWFBFQ1Rf
U1RSRVEoImh0dHA6Ly9wYXNzLyIsIFt1cmwuYWJzb2x1dGVTdHJpbmcgVVRGOFN0cmluZ10pOwot
ICAgIGhhc1JlY2VpdmVkUmVkaXJlY3QgPSB0cnVlOworICAgIGlmICghcmVkaXJlY3RDb3VudCkK
KyAgICAgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vcmVkaXJlY3QvP3Bhc3MiLCBbdXJsLmFic29s
dXRlU3RyaW5nIFVURjhTdHJpbmddKTsKKyAgICBlbHNlCisgICAgICAgIEVYUEVDVF9TVFJFUSgi
aHR0cDovL3Bhc3MvIiwgW3VybC5hYnNvbHV0ZVN0cmluZyBVVEY4U3RyaW5nXSk7CisgICAgKyty
ZWRpcmVjdENvdW50ID0gdHJ1ZTsKIH0KIAogLSAodm9pZClfZG93bmxvYWREaWRGaW5pc2g6KF9X
S0Rvd25sb2FkICopZG93bmxvYWQKIHsKKyAgICBOU0FycmF5PE5TVVJMICo+ICpyZWRpcmVjdENo
YWluID0gZG93bmxvYWQucmVkaXJlY3RDaGFpbjsKKyAgICBFWFBFQ1RfRVEoMlUsIHJlZGlyZWN0
Q2hhaW4uY291bnQpOworICAgIGlmIChyZWRpcmVjdENoYWluLmNvdW50ID4gMCkKKyAgICAgICAg
RVhQRUNUX1NUUkVRKCJodHRwOi8vcmVkaXJlY3QvP3Bhc3MiLCBbcmVkaXJlY3RDaGFpblswXS5h
YnNvbHV0ZVN0cmluZyBVVEY4U3RyaW5nXSk7CisgICAgaWYgKHJlZGlyZWN0Q2hhaW4uY291bnQg
PiAxKQorICAgICAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9wYXNzLyIsIFtyZWRpcmVjdENoYWlu
WzFdLmFic29sdXRlU3RyaW5nIFVURjhTdHJpbmddKTsKKwogICAgIFdlYkNvcmU6OmRlbGV0ZUZp
bGUoX2Rlc3RpbmF0aW9uUGF0aCk7CiAgICAgaXNEb25lID0gdHJ1ZTsKIH0KQEAgLTQ4NCw3ICs0
OTQsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZWRpcmVjdGVkRG93bmxvYWQpCiB7CiAgICAgW1Rl
c3RQcm90b2NvbCByZWdpc3RlcldpdGhTY2hlbWU6QCJodHRwIl07CiAKLSAgICBoYXNSZWNlaXZl
ZFJlZGlyZWN0ID0gZmFsc2U7CisgICAgcmVkaXJlY3RDb3VudCA9IDA7CiAgICAgaXNEb25lID0g
ZmFsc2U7CiAKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1VJRG93bmxvYWRBc0ZpbGVU
ZXN0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTQ5Nyw3ICs1MDcsNyBAQCBURVNUKF9XS0Rv
d25sb2FkLCBSZWRpcmVjdGVkRG93bmxvYWQpCiAgICAgYXV0byB3aW5kb3cgPSBhZG9wdE5TKFtb
TlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxl
TWFzazpOU1dpbmRvd1N0eWxlTWFza0JvcmRlcmxlc3MgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1
ZmZlcmVkIGRlZmVyOllFU10pOwogICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3
OndlYlZpZXcuZ2V0KCldOwogCi0gICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3Ry
aW5nOkAiPGEgc3R5bGU9J2Rpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAl
JyBocmVmPSdodHRwOi8vcmVkaXJlY3QvP3Bhc3MnPnRlc3Q8L2E+Il07CisgICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGEgc3R5bGU9J2Rpc3BsYXk6IGJsb2NrOyBo
ZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlJyBocmVmPSdodHRwOi8vcmVkaXJlY3QvP3JlZGlyZWN0
Lz9wYXNzJz50ZXN0PC9hPiJdOwogCiAgICAgZXhwZWN0ZWRPcmlnaW5hdGluZ1dlYlZpZXcgPSB3
ZWJWaWV3LmdldCgpOwogICAgIE5TUG9pbnQgY2xpY2tQb2ludCA9IE5TTWFrZVBvaW50KDEwMCwg
MTAwKTsKQEAgLTUwNiw3ICs1MTYsNTEgQEAgVEVTVChfV0tEb3dubG9hZCwgUmVkaXJlY3RlZERv
d25sb2FkKQogCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZpc0RvbmUpOwotICAgIEVYUEVDVF9UUlVFKGhhc1JlY2VpdmVkUmVkaXJlY3QpOworICAg
IEVYUEVDVF9FUSgxVSwgcmVkaXJlY3RDb3VudCk7CisKKyAgICBbVGVzdFByb3RvY29sIHVucmVn
aXN0ZXJdOworfQorCitURVNUKF9XS0Rvd25sb2FkLCBSZWRpcmVjdGVkTG9hZENvbnZlcnRlZFRv
RG93bmxvYWQpCit7CisgICAgW1Rlc3RQcm90b2NvbCByZWdpc3RlcldpdGhTY2hlbWU6QCJodHRw
Il07CisKKyAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tDb252ZXJ0UmVz
cG9uc2VUb0Rvd25sb2FkTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgYXV0
byBkb3dubG9hZERlbGVnYXRlID0gYWRvcHROUyhbW1JlZGlyZWN0ZWREb3dubG9hZERlbGVnYXRl
IGFsbG9jXSBpbml0XSk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAg
W3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07
CisgICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcm9jZXNzUG9vbF0gX3NldERvd25sb2Fk
RGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBleHBlY3RlZE9yaWdpbmF0
aW5nV2ViVmlldyA9IHdlYlZpZXcuZ2V0KCk7CisgICAgaXNEb25lID0gZmFsc2U7CisgICAgcmVk
aXJlY3RDb3VudCA9IDA7CisgICAgaGFzUmVjZWl2ZWRSZXNwb25zZSA9IGZhbHNlOworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwOi8vcmVkaXJlY3QvP3JlZGlyZWN0Lz9wYXNzIl1dXTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgRVhQRUNUX0VRKDBVLCByZWRp
cmVjdENvdW50KTsKKworICAgIFtUZXN0UHJvdG9jb2wgdW5yZWdpc3Rlcl07Cit9CisKK1RFU1Qo
X1dLRG93bmxvYWQsIFJlZGlyZWN0ZWRTdWJmcmFtZUxvYWRDb252ZXJ0ZWRUb0Rvd25sb2FkKQor
eworICAgIFtUZXN0UHJvdG9jb2wgcmVnaXN0ZXJXaXRoU2NoZW1lOkAiaHR0cCJdOworCisgICAg
YXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udmVydFJlc3BvbnNlVG9Eb3du
bG9hZE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gZG93bmxvYWRE
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1tSZWRpcmVjdGVkRG93bmxvYWREZWxlZ2F0ZSBhbGxvY10gaW5p
dF0pOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIFt3ZWJWaWV3IHNl
dE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOworICAgIFtbW3dl
YlZpZXcgY29uZmlndXJhdGlvbl0gcHJvY2Vzc1Bvb2xdIF9zZXREb3dubG9hZERlbGVnYXRlOmRv
d25sb2FkRGVsZWdhdGUuZ2V0KCldOworCisgICAgZXhwZWN0ZWRPcmlnaW5hdGluZ1dlYlZpZXcg
PSB3ZWJWaWV3LmdldCgpOworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIHJlZGlyZWN0Q291bnQg
PSAwOworICAgIGhhc1JlY2VpdmVkUmVzcG9uc2UgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBsb2Fk
SFRNTFN0cmluZzpAIjxib2R5PjxpZnJhbWUgc3JjPSdodHRwOi8vcmVkaXJlY3QvP3JlZGlyZWN0
Lz9wYXNzJz48L2lmcmFtZT48L2JvZHk+IiBiYXNlVVJMOm5pbF07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIEVYUEVDVF9FUSgwVSwgcmVkaXJlY3RDb3VudCk7
CiAKICAgICBbVGVzdFByb3RvY29sIHVucmVnaXN0ZXJdOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321347</attachid>
            <date>2017-09-20 13:11:57 -0700</date>
            <delta_ts>2017-09-21 10:36:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176628-20170920131156.patch</filename>
            <type>text/plain</type>
            <size>16860</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFkNGM5ZmU1YmFmNGNjYTZm
MjdhOGFmNWFjMzNiY2Y2MTA0YzZlMWMuLmY2ODE5ZTg5MGEyNDQ5Yjk3MmIwMTRhNWNiZDVjMmQ0
ZjIzMzNkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTctMDktMTkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgQVBJIHRvIGdldCB0
aGUgcmVkaXJlY3QgY2hhaW4gb2YgYSBXS0Rvd25sb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY2MjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM0MzM4Mjc5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBBUEkgdG8gZ2V0IHRoZSByZWRpcmVjdCBjaGFpbiBvZiBhIFdLRHdubG9hZC4gVGhl
IHJlZGlyZWN0IGNoYWluIGluY2x1ZGVzIHJlZGlyZWN0cworICAgICAgICB0aGF0IGhhcHBlbmVk
IGR1cmluZyBpbml0aWFsIGxvYWQsIGJlZm9yZSB0aGUgbG9hZCB3YXMgY29udmVydGVkIGludG8g
YSBkb3dubG9hZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcDoK
KyAgICAgICAgKFdLRG93bmxvYWRDb3B5UmVkaXJlY3RDaGFpbik6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLRG93bmxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0Rvd25sb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5t
bToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgb3JpZ2luYXRpbmdXZWJWaWV3XSk6CisgICAgICAg
ICgtW19XS0Rvd25sb2FkIHJlZGlyZWN0Q2hhaW5dKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5
Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXRSZWRpcmVjdENo
YWluKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6cmVkaXJlY3RDaGFpbiBjb25z
dCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVQcm94eTo6cmVkaXJlY3RDaGFpbiBjb25zdCk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisKIDIwMTctMDktMjAgIEpvbmF0aGFuIEJlZGFy
ZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZWQgbnVsbGFibGUgZnJvbSBV
SURyYWdJdGVtIHByb3BlcnR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0Rvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93
bmxvYWQuY3BwCmluZGV4IDlkNWQ2ZDlkZTRmYWQzZDkyZjE4OGE1YmNjOTA2YjQzMzE2ZDc1OTMu
LjI0ZGUwOWYxOWVmM2RmY2NkMjdmNzYwMjA5ZDgzNWI2MjA1NDQ1YTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tEb3dubG9hZC5oIgogCisjaW5jbHVkZSAi
QVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElEYXRhLmgiCiAjaW5jbHVkZSAiQVBJVVJMUmVxdWVz
dC5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKQEAgLTYzLDMgKzY0LDEzIEBAIFdLUGFn
ZVJlZiBXS0Rvd25sb2FkR2V0T3JpZ2luYXRpbmdQYWdlKFdLRG93bmxvYWRSZWYgZG93bmxvYWQp
CiB7CiAgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChkb3dubG9hZCktPm9yaWdpbmF0aW5nUGFnZSgp
KTsKIH0KKworV0tBcnJheVJlZiBXS0Rvd25sb2FkQ29weVJlZGlyZWN0Q2hhaW4oV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCkKK3sKKyAgICBhdXRvJiByZWRpcmVjdENoYWluID0gIHRvSW1wbChkb3du
bG9hZCktPnJlZGlyZWN0Q2hhaW4oKTsKKyAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4g
dXJsczsKKyAgICB1cmxzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVkaXJlY3RDaGFpbi5zaXpl
KCkpOworICAgIGZvciAoYXV0byYgcmVkaXJlY3RVUkwgOiByZWRpcmVjdENoYWluKQorICAgICAg
ICB1cmxzLnVuY2hlY2tlZEFwcGVuZChBUEk6OlVSTDo6Y3JlYXRlKHJlZGlyZWN0VVJMLnN0cmlu
ZygpKSk7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZSh1cmxz
KSkubGVha1JlZigpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxv
YWQuaAppbmRleCBkNmRhNDA4MTU3OTc1YTk0OWY3Mjc3NGMxNmUzNjE5YWEwZWVkNjkxLi42YThj
NmNmZDRkNzY2MGRiZTg0MGY1MDE1YmFhMjQ4MWRhMjBiZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5oCkBAIC00Myw2ICs0Myw3IEBAIFdLX0VYUE9SVCBX
S1VSTFJlcXVlc3RSZWYgV0tEb3dubG9hZENvcHlSZXF1ZXN0KFdLRG93bmxvYWRSZWYgZG93bmxv
YWQpOwogV0tfRVhQT1JUIFdLRGF0YVJlZiBXS0Rvd25sb2FkR2V0UmVzdW1lRGF0YShXS0Rvd25s
b2FkUmVmIGRvd25sb2FkKTsKIFdLX0VYUE9SVCB2b2lkIFdLRG93bmxvYWRDYW5jZWwoV0tEb3du
bG9hZFJlZiBkb3dubG9hZCk7CiBXS19FWFBPUlQgV0tQYWdlUmVmIFdLRG93bmxvYWRHZXRPcmln
aW5hdGluZ1BhZ2UoV0tEb3dubG9hZFJlZiBkb3dubG9hZCk7CitXS19FWFBPUlQgV0tBcnJheVJl
ZiBXS0Rvd25sb2FkQ29weVJlZGlyZWN0Q2hhaW4oV0tEb3dubG9hZFJlZiBkb3dubG9hZCk7CiAK
ICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLRG93bmxvYWQuaAppbmRleCAyMzUwY2NkYjhkMGQyMWEyYWZhMTFjM2FmZjU5NDUx
YWFkMDU5NGQ1Li44ZGIzMzMwODJhMjFiYmFkZTU0MjYwZjVhNDBkZDZhNTUyNzcxNzA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaApAQCAt
MzgsNiArMzgsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkp
CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0
OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCB3ZWFrKSBXS1dlYlZpZXcgKm9yaWdp
bmF0aW5nV2ViVmlldzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNB
cnJheTxOU1VSTCAqPiAqcmVkaXJlY3RDaGFpbiBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0KaW5kZXggMTMxYzMyZmYxYmZlZDE2
MWQyMmY0MGEyMTgwYzNmNDhlMDBjOGJhNC4uNDdlNmY0N2FlOTJlOTdiMWI1NmY3ODA2ODU5Y2M0
MjBiYjg3ODI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0Rvd25sb2FkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tEb3dubG9hZC5tbQpAQCAtNTgsNyArNTgsMTUgQEAgLSAoV0tXZWJWaWV3ICopb3JpZ2luYXRp
bmdXZWJWaWV3CiAgICAgaWYgKGF1dG8qIG9yaWdpbmF0aW5nUGFnZSA9IF9kb3dubG9hZC0+b3Jp
Z2luYXRpbmdQYWdlKCkpCiAgICAgICAgIHJldHVybiBbW2Zyb21XZWJQYWdlUHJveHkoKm9yaWdp
bmF0aW5nUGFnZSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CiAgICAgcmV0dXJuIG5pbDsKK30KIAor
LShOU0FycmF5PE5TVVJMICo+ICopcmVkaXJlY3RDaGFpbgoreworICAgIGF1dG8mIHJlZGlyZWN0
VVJMcyA9IF9kb3dubG9hZC0+cmVkaXJlY3RDaGFpbigpOworICAgIE5TTXV0YWJsZUFycmF5PE5T
VVJMICo+ICpuc1VSTHMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6cmVkaXJl
Y3RVUkxzLnNpemUoKV07CisgICAgZm9yIChjb25zdCBhdXRvJiByZWRpcmVjdFVSTCA6IHJlZGly
ZWN0VVJMcykKKyAgICAgICAgW25zVVJMcyBhZGRPYmplY3Q6KE5TVVJMICopcmVkaXJlY3RVUkxd
OworICAgIHJldHVybiBuc1VSTHM7CiB9CiAKICNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2Nv
bCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IDdkOTI1ZGQ5NjAzMjc3YzYxYmMwMGUwYjdmYTYx
NjhlMzA0OGU4MGIuLjViYmM2OWI2MjY0NDcyMzFmOGYxZWEyMTYwODJiNWI1ZmRmNjc1N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5jcHAKQEAgLTEwNyw2ICsxMDcsOSBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZFN0YXJ0KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZQogICAgIG1f
cmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZEZp
bGVuYW1lOwogCisgICAgaWYgKG1fcmVkaXJlY3RDaGFpbi5pc0VtcHR5KCkgfHwgbV9yZWRpcmVj
dENoYWluLmxhc3QoKSAhPSByZXF1ZXN0LnVybCgpKQorICAgICAgICBtX3JlZGlyZWN0Q2hhaW4u
YXBwZW5kKHJlcXVlc3QudXJsKCkpOworCiAgICAgaWYgKCFtX3Byb2Nlc3NQb29sKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTE0NCw4ICsxNDcsOSBAQCB2b2lkIERvd25sb2FkUHJveHk6OndpbGxT
ZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHByb3Bvc2VkUmVxdWVzdCwgY29ucwog
ICAgIGlmICghbV9wcm9jZXNzUG9vbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPERv
d25sb2FkUHJveHk+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgbV9wcm9jZXNzUG9vbC0+ZG93
bmxvYWRDbGllbnQoKS53aWxsU2VuZFJlcXVlc3QobV9wcm9jZXNzUG9vbC5nZXQoKSwgdGhpcywg
cHJvcG9zZWRSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCBbcHJvdGVjdGVkVGhpc10oY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KSB7CisgICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxv
YWRDbGllbnQoKS53aWxsU2VuZFJlcXVlc3QobV9wcm9jZXNzUG9vbC5nZXQoKSwgdGhpcywgcHJv
cG9zZWRSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpIHsKKyAgICAg
ICAgbV9yZWRpcmVjdENoYWluLmFwcGVuZChuZXdSZXF1ZXN0LnVybCgpKTsKKwogI2lmIFVTRShO
RVRXT1JLX1NFU1NJT04pCiAgICAgICAgIGlmICghcHJvdGVjdGVkVGhpcy0+bV9wcm9jZXNzUG9v
bCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1NSw4ICsxNTksNiBAQCB2b2lkIERvd25sb2Fk
UHJveHk6OndpbGxTZW5kUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHByb3Bvc2VkUmVx
dWVzdCwgY29ucwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG5ldHdvcmtQcm9jZXNz
UHJveHktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDb250aW51ZVdpbGxTZW5kUmVx
dWVzdChwcm90ZWN0ZWRUaGlzLT5tX2Rvd25sb2FkSUQsIG5ld1JlcXVlc3QpLCAwKTsKLSNlbHNl
Ci0gICAgICAgIFVOVVNFRF9QQVJBTShuZXdSZXF1ZXN0KTsKICNlbmRpZgogICAgIH0pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgK
aW5kZXggNDk3OTdmMzg2YWExYzI5MzJmM2Y1ODMxNGE2OTg1ZWIyYzJiMmVhNi4uY2E1NWZiMzM1
ZTkyMzAxNDdhN2RjMzk0MThlMmI1MTI2NWZhZmUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCkBAIC00NCw2ICs0NCw3IEBAIGNs
YXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xh
c3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CitjbGFzcyBVUkw7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzMsNiArNzQsOSBAQCBwdWJsaWM6CiAgICAgV2Vi
UGFnZVByb3h5KiBvcmlnaW5hdGluZ1BhZ2UoKSBjb25zdDsKICAgICB2b2lkIHNldE9yaWdpbmF0
aW5nUGFnZShXZWJQYWdlUHJveHkqKTsKIAorICAgIHZvaWQgc2V0UmVkaXJlY3RDaGFpbihWZWN0
b3I8V2ViQ29yZTo6VVJMPiYmIHJlZGlyZWN0Q2hhaW4pIHsgbV9yZWRpcmVjdENoYWluID0gV1RG
TW92ZShyZWRpcmVjdENoYWluKTsgfQorICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBy
ZWRpcmVjdENoYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWRpcmVjdENoYWluOyB9CisKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgRG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFwJiwgV2ViUHJv
Y2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIApAQCAtMTA5LDYg
KzExMyw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3VnZ2VzdGVkRmlsZW5hbWU7CiAKICAg
ICBXZWFrUHRyPFdlYlBhZ2VQcm94eT4gbV9vcmlnaW5hdGluZ1BhZ2U7CisgICAgVmVjdG9yPFdl
YkNvcmU6OlVSTD4gbV9yZWRpcmVjdENoYWluOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCmluZGV4IGE5MWRhNGE5
MmUyZWE5NTI1ODExMjAxODRkMmIxMzJmYTg4NmUwNTAuLjZjNDcxODdhOGJmZDE5ZDkyYzFiMDA2
NGJhMGYwNzEyMjI2ZTkwMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkZyYW1lUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJv
eHkuY3BwCkBAIC0xMzIsMTEgKzEzMiwxOCBAQCBib29sIFdlYkZyYW1lUHJveHk6OmlzRGlzcGxh
eWluZ1BERkRvY3VtZW50KCkgY29uc3QKIAogdm9pZCBXZWJGcmFtZVByb3h5OjpkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmIHVybCkKIHsKKyAgICBBU1NFUlQobV9wcm92aXNpb25h
bExvYWRSZWRpcmVjdENoYWluLmlzRW1wdHkoKSk7CisgICAgbV9wcm92aXNpb25hbExvYWRSZWRp
cmVjdENoYWluID0geyB1cmwgfTsKKwogICAgIG1fZnJhbWVMb2FkU3RhdGUuZGlkU3RhcnRQcm92
aXNpb25hbExvYWQodXJsKTsKIH0KIAogdm9pZCBXZWJGcmFtZVByb3h5OjpkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgVVJMJiB1cmwpCiB7CisgICAgLy8g
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgb2Z0ZW4gZ2V0cyBj
YWxsZWQgdHdpY2UgZm9yIHRoZSBzYW1lIHJlZGlyZWN0LgorICAgIGlmIChtX3Byb3Zpc2lvbmFs
TG9hZFJlZGlyZWN0Q2hhaW4uaXNFbXB0eSgpIHx8IG1fcHJvdmlzaW9uYWxMb2FkUmVkaXJlY3RD
aGFpbi5sYXN0KCkgIT0gdXJsKQorICAgICAgICBtX3Byb3Zpc2lvbmFsTG9hZFJlZGlyZWN0Q2hh
aW4uYXBwZW5kKHVybCk7CisKICAgICBtX2ZyYW1lTG9hZFN0YXRlLmRpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCh1cmwpOwogfQogCkBAIC0xNTgsMTEgKzE2NSwxMyBA
QCB2b2lkIFdlYkZyYW1lUHJveHk6OmRpZENvbW1pdExvYWQoY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSwgV2ViQ2VydGlmaWNhdGVJbmZvJgogCiB2b2lkIFdlYkZyYW1lUHJveHk6OmRpZEZpbmlz
aExvYWQoKQogeworICAgIG1fcHJvdmlzaW9uYWxMb2FkUmVkaXJlY3RDaGFpbi5jbGVhcigpOwog
ICAgIG1fZnJhbWVMb2FkU3RhdGUuZGlkRmluaXNoTG9hZCgpOwogfQogCiB2b2lkIFdlYkZyYW1l
UHJveHk6OmRpZEZhaWxMb2FkKCkKIHsKKyAgICBtX3Byb3Zpc2lvbmFsTG9hZFJlZGlyZWN0Q2hh
aW4uY2xlYXIoKTsKICAgICBtX2ZyYW1lTG9hZFN0YXRlLmRpZEZhaWxMb2FkKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAppbmRleCBiNzkyZDAyYjc2ZWQzN2Fm
NTY3MmM1M2QzNmFmMjRhM2RhY2IyMmU5Li4zNTU2YTU0ZjNkMWRjZDI4NTFmZmY3ZWViMGIyNzQ4
NjNmYTJmZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCkBAIC05
MCw2ICs5MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRhaW5zUGx1Z2luRG9jdW1lbnQ7IH0KIAogICAgIGNvbnN0IFN0
cmluZyYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlOyB9CisgICAgVmVjdG9yPFdlYkNv
cmU6OlVSTD4mJiB0YWtlUHJvdmlzaW9uYWxMb2FkUmVkaXJlY3RDaGFpbigpIHsgcmV0dXJuIFdU
Rk1vdmUobV9wcm92aXNpb25hbExvYWRSZWRpcmVjdENoYWluKTsgfQogCiAgICAgV2ViQ2VydGlm
aWNhdGVJbmZvKiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRl
SW5mby5nZXQoKTsgfQogCkBAIC0xNDIsNyArMTQzLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8
V2ViQ2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKICAgICBSZWZQdHI8V2ViRnJh
bWVMaXN0ZW5lclByb3h5PiBtX2FjdGl2ZUxpc3RlbmVyOwogICAgIHVpbnQ2NF90IG1fZnJhbWVJ
RDsKLQorICAgIFZlY3RvcjxXZWJDb3JlOjpVUkw+IG1fcHJvdmlzaW9uYWxMb2FkUmVkaXJlY3RD
aGFpbjsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgV2ViQ29yZTo6Q29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyIG1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAzZGJjMjYw
NTgyMzQyYWNjZGYzNWFiMTg0MWU0MjJjZjMwNWUwMzgzLi41NDcwZWVhZjhmYzc4ODQxM2JjOTM0
YjJlOWE5ZmQyNzUzYTg1YjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTIyNzgsNiArMjI3OCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBv
bGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIFdlYkZyYW1lUHJveHkmIGZyCiAgICAg
aWYgKGFjdGlvbiA9PSBQb2xpY3lEb3dubG9hZCkgewogICAgICAgICAvLyBDcmVhdGUgYSBkb3du
bG9hZCBwcm94eS4KICAgICAgICAgYXV0byogZG93bmxvYWQgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQ
b29sKCkuY3JlYXRlRG93bmxvYWRQcm94eShtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVz
dCwgdGhpcyk7CisgICAgICAgIGRvd25sb2FkLT5zZXRSZWRpcmVjdENoYWluKGZyYW1lLnRha2VQ
cm92aXNpb25hbExvYWRSZWRpcmVjdENoYWluKCkpOworCiAgICAgICAgIGRvd25sb2FkSUQgPSBk
b3dubG9hZC0+ZG93bmxvYWRJRCgpOwogICAgICAgICBoYW5kbGVEb3dubG9hZFJlcXVlc3QoZG93
bmxvYWQpOwogICAgICAgICBtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdCA9IHsgfTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0MDY1
ZjU4NDIyNTdiOTJmNjdlY2IyM2EzZmRiNDBkZGZmMjhiNDEzLi5lOWUwODU1OWNkZTIyNjRkNDk3
OThkYmQyOTJjZjFkZjBiNjE3ZjQ4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTctMDktMTkgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgQVBJIHRvIGdldCB0aGUg
cmVkaXJlY3QgY2hhaW4gb2YgYSBXS0Rvd25sb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY2MjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0
MzM4Mjc5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBBUEkgdGVzdCBjb3ZlcmFnZSBmb3IgdGhlIDIgY2FzZXM6CisgICAgICAgIDEuIERvd25s
b2FkIHN0YXJ0ZWQgYXMgYSBkb3dubG9hZCBhbmQgaXMgcmVkaXJlY3RlZCB3aGlsZQorICAgICAg
ICAgICBkb3dubG9hZGluZy4KKyAgICAgICAgMi4gRG93bmxvYWQgc3RhcnRlZCBhcyBhIGxvYWQg
YW5kIHdhcyByZWRpcmVjdGVkIGR1cmluZyB0aGUKKyAgICAgICAgICAgaW5pdGlhbCBsb2FkLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToK
KyAgICAgICAgKC1bUmVkaXJlY3RlZERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOl0pOgorICAgICAgICAoLVtSZWRpcmVjdGVkRG93bmxvYWRE
ZWxlZ2F0ZSBfZG93bmxvYWREaWRGaW5pc2g6XSk6CisgICAgICAgIChURVNUKToKKwogMjAxNy0w
OS0yMCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAg
IENyZWF0ZSB2ZWN0b3Igc3dpenpsZSBvcGVyYXRvcnMgaW4gV1NMJ3Mgc3RhbmRhcmQgbGlicmFy
eQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3du
bG9hZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQu
bW0KaW5kZXggMDg2Nzk5ODU3NDA5YjljMjY4NzYxMTgxNzdhMmU1YjRjZjE2NTc2Mi4uZDZlNDI1
MjhhMGRhOWEwMTk2YmIxMTVhNDdiZWZlODY5NDNhNzljNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCkBAIC00Niw3ICs0Niw3IEBA
CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogc3RhdGljIGJvb2wgaXNEb25lOwot
c3RhdGljIGJvb2wgaGFzUmVjZWl2ZWRSZWRpcmVjdDsKK3N0YXRpYyB1bnNpZ25lZCByZWRpcmVj
dENvdW50ID0gMDsKIHN0YXRpYyBib29sIGhhc1JlY2VpdmVkUmVzcG9uc2U7CiBzdGF0aWMgTlNV
UkwgKnNvdXJjZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJz
aW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdOwogc3RhdGljIFdLV2ViVmlldyogZXhwZWN0ZWRPcmlnaW5hdGluZ1dlYlZp
ZXc7CkBAIC00NjgsMTIgKzQ2OCwyNCBAQCAtIChOU1N0cmluZyAqKV9kb3dubG9hZDooX1dLRG93
bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaQogCiAtICh2
b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RUb1VSTDooTlNVUkwgKil1cmwKIHsKLSAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9wYXNz
LyIsIFt1cmwuYWJzb2x1dGVTdHJpbmcgVVRGOFN0cmluZ10pOwotICAgIGhhc1JlY2VpdmVkUmVk
aXJlY3QgPSB0cnVlOworICAgIGlmICghcmVkaXJlY3RDb3VudCkKKyAgICAgICAgRVhQRUNUX1NU
UkVRKCJodHRwOi8vcmVkaXJlY3QvP3Bhc3MiLCBbdXJsLmFic29sdXRlU3RyaW5nIFVURjhTdHJp
bmddKTsKKyAgICBlbHNlCisgICAgICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3Bhc3MvIiwgW3Vy
bC5hYnNvbHV0ZVN0cmluZyBVVEY4U3RyaW5nXSk7CisgICAgKytyZWRpcmVjdENvdW50ID0gdHJ1
ZTsKIH0KIAogLSAodm9pZClfZG93bmxvYWREaWRGaW5pc2g6KF9XS0Rvd25sb2FkICopZG93bmxv
YWQKIHsKKyAgICBOU0FycmF5PE5TVVJMICo+ICpyZWRpcmVjdENoYWluID0gZG93bmxvYWQucmVk
aXJlY3RDaGFpbjsKKyAgICBFWFBFQ1RfRVEoM1UsIHJlZGlyZWN0Q2hhaW4uY291bnQpOworICAg
IGlmIChyZWRpcmVjdENoYWluLmNvdW50ID4gMCkKKyAgICAgICAgRVhQRUNUX1NUUkVRKCJodHRw
Oi8vcmVkaXJlY3QvP3JlZGlyZWN0Lz9wYXNzIiwgW3JlZGlyZWN0Q2hhaW5bMF0uYWJzb2x1dGVT
dHJpbmcgVVRGOFN0cmluZ10pOworICAgIGlmIChyZWRpcmVjdENoYWluLmNvdW50ID4gMSkKKyAg
ICAgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vcmVkaXJlY3QvP3Bhc3MiLCBbcmVkaXJlY3RDaGFp
blsxXS5hYnNvbHV0ZVN0cmluZyBVVEY4U3RyaW5nXSk7CisgICAgaWYgKHJlZGlyZWN0Q2hhaW4u
Y291bnQgPiAyKQorICAgICAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9wYXNzLyIsIFtyZWRpcmVj
dENoYWluWzJdLmFic29sdXRlU3RyaW5nIFVURjhTdHJpbmddKTsKKwogICAgIFdlYkNvcmU6OmRl
bGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7CiAgICAgaXNEb25lID0gdHJ1ZTsKIH0KQEAgLTQ4
NCw3ICs0OTYsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZWRpcmVjdGVkRG93bmxvYWQpCiB7CiAg
ICAgW1Rlc3RQcm90b2NvbCByZWdpc3RlcldpdGhTY2hlbWU6QCJodHRwIl07CiAKLSAgICBoYXNS
ZWNlaXZlZFJlZGlyZWN0ID0gZmFsc2U7CisgICAgcmVkaXJlY3RDb3VudCA9IDA7CiAgICAgaXNE
b25lID0gZmFsc2U7CiAKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1VJRG93bmxvYWRB
c0ZpbGVUZXN0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTQ5Nyw3ICs1MDksOSBAQCBURVNU
KF9XS0Rvd25sb2FkLCBSZWRpcmVjdGVkRG93bmxvYWQpCiAgICAgYXV0byB3aW5kb3cgPSBhZG9w
dE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVd
IHN0eWxlTWFzazpOU1dpbmRvd1N0eWxlTWFza0JvcmRlcmxlc3MgYmFja2luZzpOU0JhY2tpbmdT
dG9yZUJ1ZmZlcmVkIGRlZmVyOllFU10pOwogICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRT
dWJ2aWV3OndlYlZpZXcuZ2V0KCldOwogCi0gICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRI
VE1MU3RyaW5nOkAiPGEgc3R5bGU9J2Rpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IDEwMCU7IHdpZHRo
OiAxMDAlJyBocmVmPSdodHRwOi8vcmVkaXJlY3QvP3Bhc3MnPnRlc3Q8L2E+Il07CisgICAgLy8g
RG8gMiBsb2FkcyBpbiB0aGUgc2FtZSB2aWV3IHRvIG1ha2Ugc3VyZSB0aGUgcmVkaXJlY3QgY2hh
aW4gaXMgcHJvcGVybHkgY2xlYXJlZCBiZXR3ZWVuIGxvYWRzLgorICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxkaXY+Rmlyc3QgbG9hZDwvZGl2PiJdOworICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxhIHN0eWxlPSdkaXNwbGF5OiBi
bG9jazsgaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJScgaHJlZj0naHR0cDovL3JlZGlyZWN0Lz9y
ZWRpcmVjdC8/cGFzcyc+dGVzdDwvYT4iXTsKIAogICAgIGV4cGVjdGVkT3JpZ2luYXRpbmdXZWJW
aWV3ID0gd2ViVmlldy5nZXQoKTsKICAgICBOU1BvaW50IGNsaWNrUG9pbnQgPSBOU01ha2VQb2lu
dCgxMDAsIDEwMCk7CkBAIC01MDYsNyArNTIwLDUxIEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlZGly
ZWN0ZWREb3dubG9hZCkKIAogICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKLSAgICBFWFBFQ1RfVFJVRShoYXNSZWNlaXZlZFJlZGlyZWN0
KTsKKyAgICBFWFBFQ1RfRVEoMVUsIHJlZGlyZWN0Q291bnQpOworCisgICAgW1Rlc3RQcm90b2Nv
bCB1bnJlZ2lzdGVyXTsKK30KKworVEVTVChfV0tEb3dubG9hZCwgUmVkaXJlY3RlZExvYWRDb252
ZXJ0ZWRUb0Rvd25sb2FkKQoreworICAgIFtUZXN0UHJvdG9jb2wgcmVnaXN0ZXJXaXRoU2NoZW1l
OkAiaHR0cCJdOworCisgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29u
dmVydFJlc3BvbnNlVG9Eb3dubG9hZE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwor
ICAgIGF1dG8gZG93bmxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tSZWRpcmVjdGVkRG93bmxvYWRE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0p
OworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUu
Z2V0KCldOworICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJvY2Vzc1Bvb2xdIF9zZXRE
b3dubG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdhdGUuZ2V0KCldOworCisgICAgZXhwZWN0ZWRP
cmlnaW5hdGluZ1dlYlZpZXcgPSB3ZWJWaWV3LmdldCgpOworICAgIGlzRG9uZSA9IGZhbHNlOwor
ICAgIHJlZGlyZWN0Q291bnQgPSAwOworICAgIGhhc1JlY2VpdmVkUmVzcG9uc2UgPSBmYWxzZTsK
KyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3JlZGlyZWN0Lz9yZWRpcmVjdC8/cGFzcyJdXV07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIEVYUEVDVF9FUSgw
VSwgcmVkaXJlY3RDb3VudCk7CisKKyAgICBbVGVzdFByb3RvY29sIHVucmVnaXN0ZXJdOworfQor
CitURVNUKF9XS0Rvd25sb2FkLCBSZWRpcmVjdGVkU3ViZnJhbWVMb2FkQ29udmVydGVkVG9Eb3du
bG9hZCkKK3sKKyAgICBbVGVzdFByb3RvY29sIHJlZ2lzdGVyV2l0aFNjaGVtZTpAImh0dHAiXTsK
KworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW0NvbnZlcnRSZXNwb25z
ZVRvRG93bmxvYWROYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGRv
d25sb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbUmVkaXJlY3RlZERvd25sb2FkRGVsZWdhdGUgYWxs
b2NdIGluaXRdKTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKKyAg
ICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByb2Nlc3NQb29sXSBfc2V0RG93bmxvYWREZWxl
Z2F0ZTpkb3dubG9hZERlbGVnYXRlLmdldCgpXTsKKworICAgIGV4cGVjdGVkT3JpZ2luYXRpbmdX
ZWJWaWV3ID0gd2ViVmlldy5nZXQoKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICByZWRpcmVj
dENvdW50ID0gMDsKKyAgICBoYXNSZWNlaXZlZFJlc3BvbnNlID0gZmFsc2U7CisgICAgW3dlYlZp
ZXcgbG9hZEhUTUxTdHJpbmc6QCI8Ym9keT48aWZyYW1lIHNyYz0naHR0cDovL3JlZGlyZWN0Lz9y
ZWRpcmVjdC8/cGFzcyc+PC9pZnJhbWU+PC9ib2R5PiIgYmFzZVVSTDpuaWxdOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICBFWFBFQ1RfRVEoMFUsIHJlZGlyZWN0
Q291bnQpOwogCiAgICAgW1Rlc3RQcm90b2NvbCB1bnJlZ2lzdGVyXTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321441</attachid>
            <date>2017-09-21 09:57:25 -0700</date>
            <delta_ts>2017-09-21 10:36:26 -0700</delta_ts>
            <desc>Follow-up</desc>
            <filename>176628_follow_up.patch</filename>
            <type>text/plain</type>
            <size>1813</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggODE1NjVhZGVlNjEuLjZlOTUwNjhhOTlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSw1ICsx
LDE5IEBACiAyMDE3LTA5LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAg
ICAgICAgW1dLMl0gQWRkIEFQSSB0byBnZXQgdGhlIHJlZGlyZWN0IGNoYWluIG9mIGEgV0tEb3du
bG9hZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2
NjI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDMzODI3OT4KKworICAgICAgICBSZS1lbmFi
bGUgYXNzZXJ0aW9uIGluaXRpYWxseSBhZGRlZCBpbiByMjIyMzA4IGFuZCBsYXRlciBkaXNhYmxl
ZCBpbgorICAgICAgICByMjIyMzIwLiBUaGUgYXNzZXJ0aW9uIHdhcyBoaXQgYmVjYXVzZSB3ZSBm
YWlsZWQgdG8gY2xlYXIgdGhlIHJlZGlyZWN0CisgICAgICAgIGNoYWluIGluIFdlYkZyYW1lUHJv
eHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWQoKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6ZGlkU3RhcnRQ
cm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpkaWRGYWls
UHJvdmlzaW9uYWxMb2FkKToKKworMjAxNy0wOS0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCiAgICAgICAgIFVucmV2aWV3ZWQsIHRlbXBvcmFyaWx5IGRpc2FibGUgYXNzZXJ0
aW9uIGFkZGVkIGluIHIyMjIzMDggd2hpbGUgSSBpbnZlc3RpZ2F0ZS4KIAogICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJh
bWVQcm94eS5jcHAKaW5kZXggODU3MmMzZmQwYWMuLjY0ODVjNmE5YTEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcApAQCAtMTMyLDggKzEzMiw3IEBAIGJvb2wg
V2ViRnJhbWVQcm94eTo6aXNEaXNwbGF5aW5nUERGRG9jdW1lbnQoKSBjb25zdAogCiB2b2lkIFdl
YkZyYW1lUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVSTCYgdXJsKQogewot
ICAgIC8vIEZJWE1FOiBSZS1lbmFibGUgdGhpcyBhc3NlcnRpb24uCi0gICAgLy8gQVNTRVJUKG1f
cHJvdmlzaW9uYWxMb2FkUmVkaXJlY3RDaGFpbi5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX3By
b3Zpc2lvbmFsTG9hZFJlZGlyZWN0Q2hhaW4uaXNFbXB0eSgpKTsKICAgICBtX3Byb3Zpc2lvbmFs
TG9hZFJlZGlyZWN0Q2hhaW4gPSB7IHVybCB9OwogCiAgICAgbV9mcmFtZUxvYWRTdGF0ZS5kaWRT
dGFydFByb3Zpc2lvbmFsTG9hZCh1cmwpOwpAQCAtMTUwLDYgKzE0OSw3IEBAIHZvaWQgV2ViRnJh
bWVQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0
IFVSTCYgdXJsKQogCiB2b2lkIFdlYkZyYW1lUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWQo
KQogeworICAgIG1fcHJvdmlzaW9uYWxMb2FkUmVkaXJlY3RDaGFpbi5jbGVhcigpOwogICAgIG1f
ZnJhbWVMb2FkU3RhdGUuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCgpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321446</attachid>
            <date>2017-09-21 10:36:27 -0700</date>
            <delta_ts>2017-09-21 11:20:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176628-20170921103626.patch</filename>
            <type>text/plain</type>
            <size>1990</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgxN2Y4Yjc4MzJmNjg1NjJh
NDM1NDMzZDVlODk1ZTRiMWI5OGE2ODEuLmIzODcxMjQ1ZDIwMDRjMjZiNmMxN2Q2NDhhMzk0M2I2
NzAwYzAwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMDktMjEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgQVBJIHRvIGdldCB0
aGUgcmVkaXJlY3QgY2hhaW4gb2YgYSBXS0Rvd25sb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY2MjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM0MzM4Mjc5PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAg
ICAgICAgUmUtZW5hYmxlIGFzc2VydGlvbiBpbml0aWFsbHkgYWRkZWQgaW4gcjIyMjMwOCBhbmQg
bGF0ZXIgZGlzYWJsZWQgaW4KKyAgICAgICAgcjIyMjMyMC4gVGhlIGFzc2VydGlvbiB3YXMgaGl0
IGJlY2F1c2Ugd2UgZmFpbGVkIHRvIGNsZWFyIHRoZSByZWRpcmVjdAorICAgICAgICBjaGFpbiBp
biBXZWJGcmFtZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkKCkuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUHJv
eHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQ
cm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCk6CisKIDIwMTctMDktMjEgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIy
MjE0NjUpIFdLV2ViVmlld3Mgd2l0aG91dCBXZWJHTCBkZWxlZ2F0ZSBjYWxsYmFja3MgY3Jhc2gg
d2hlbiBXZWJHTCBjb250ZXh0cyBhcmUgY3JlYXRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJGcmFtZVByb3h5LmNwcAppbmRleCA4NTcyYzNmZDBhYzVjYWI4ZTQ3NGM1NGY4OTBhNzVkYjRm
ZGQ4ZTc1Li42NDg1YzZhOWExM2UzYmZhZGM0NTZmMjQ5NzExYzNjOWM5NDRlMzczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcApAQCAtMTMyLDggKzEzMiw3IEBA
IGJvb2wgV2ViRnJhbWVQcm94eTo6aXNEaXNwbGF5aW5nUERGRG9jdW1lbnQoKSBjb25zdAogCiB2
b2lkIFdlYkZyYW1lUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVSTCYgdXJs
KQogewotICAgIC8vIEZJWE1FOiBSZS1lbmFibGUgdGhpcyBhc3NlcnRpb24uCi0gICAgLy8gQVNT
RVJUKG1fcHJvdmlzaW9uYWxMb2FkUmVkaXJlY3RDaGFpbi5pc0VtcHR5KCkpOworICAgIEFTU0VS
VChtX3Byb3Zpc2lvbmFsTG9hZFJlZGlyZWN0Q2hhaW4uaXNFbXB0eSgpKTsKICAgICBtX3Byb3Zp
c2lvbmFsTG9hZFJlZGlyZWN0Q2hhaW4gPSB7IHVybCB9OwogCiAgICAgbV9mcmFtZUxvYWRTdGF0
ZS5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZCh1cmwpOwpAQCAtMTUwLDYgKzE0OSw3IEBAIHZvaWQg
V2ViRnJhbWVQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
KGNvbnN0IFVSTCYgdXJsKQogCiB2b2lkIFdlYkZyYW1lUHJveHk6OmRpZEZhaWxQcm92aXNpb25h
bExvYWQoKQogeworICAgIG1fcHJvdmlzaW9uYWxMb2FkUmVkaXJlY3RDaGFpbi5jbGVhcigpOwog
ICAgIG1fZnJhbWVMb2FkU3RhdGUuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCgpOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>