<?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>184029</bug_id>
          
          <creation_ts>2018-03-26 18:30:36 -0700</creation_ts>
          <short_desc>Make it possible to call ContentSecurityPolicy::upgradeInsecureRequestIfNeeded() from non-main threads</short_desc>
          <delta_ts>2018-03-28 11:11:37 -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>Page Loading</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=184024</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>184059</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>mkwst</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1409458</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-26 18:30:36 -0700</bug_when>
    <thetext>ContentSecurityPolicy::upgradeInsecureRequestIfNeeded() should be called from the main thread. It constructs a SecurityOrigin object internally, which is only safe on the main thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409459</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-26 18:30:51 -0700</bug_when>
    <thetext>Thread 25 Crashed:: WebCore: Worker
0   com.apple.JavaScriptCore      	0x00000003c7b24604 WTFCrash + 36 (Assertions.cpp:271)
1   com.apple.WebCore             	0x00000003ba855674 WebCore::SecurityOrigin::SecurityOrigin(WebCore::URL const&amp;) + 180 (SecurityOrigin.cpp:150)
2   com.apple.WebCore             	0x00000003ba85582d WebCore::SecurityOrigin::SecurityOrigin(WebCore::URL const&amp;) + 29 (SecurityOrigin.cpp:165)
3   com.apple.WebCore             	0x00000003ba855c57 WebCore::SecurityOrigin::create(WebCore::URL const&amp;) + 327 (SecurityOrigin.cpp:201)
4   com.apple.WebCore             	0x00000003ba8e0b4f WebCore::ContentSecurityPolicy::upgradeInsecureRequestIfNeeded(WebCore::URL&amp;, WebCore::ContentSecurityPolicy::InsecureRequestType) const + 111 (ContentSecurityPolicy.cpp:826)
5   com.apple.WebCore             	0x00000003ba8e0ab3 WebCore::ContentSecurityPolicy::upgradeInsecureRequestIfNeeded(WebCore::ResourceRequest&amp;, WebCore::ContentSecurityPolicy::InsecureRequestType) const + 67 (ContentSecurityPolicy.cpp:817)
6   com.apple.WebCore             	0x00000003b9454948 WebCore::FetchLoader::start(WebCore::ScriptExecutionContext&amp;, WebCore::FetchRequest const&amp;) + 344 (FetchLoader.cpp:102)
7   com.apple.WebCore             	0x00000003b9467b2f WebCore::FetchResponse::BodyLoader::start(WebCore::ScriptExecutionContext&amp;, WebCore::FetchRequest const&amp;) + 1103 (FetchResponse.cpp:335)
8   com.apple.WebCore             	0x00000003b9467436 WebCore::FetchResponse::fetch(WebCore::ScriptExecutionContext&amp;, WebCore::FetchRequest&amp;, WTF::Function&lt;void (WebCore::ExceptionOr&lt;WebCore::FetchResponse&amp;&gt;&amp;&amp;)&gt;&amp;&amp;) + 662 (FetchResponse.cpp:198)
9   com.apple.WebCore             	0x00000003b9469e6f WebCore::WorkerGlobalScopeFetch::fetch(WebCore::WorkerGlobalScope&amp;, WTF::Variant&lt;WTF::RefPtr&lt;WebCore::FetchRequest, WTF::DumbPtrTraits&lt;WebCore::FetchRequest&gt; &gt;, WTF::String&gt;&amp;&amp;, WebCore::FetchRequestInit&amp;&amp;, WTF::Ref&lt;WebCore::DeferredPromise, WTF::DumbPtrTraits&lt;WebCore::DeferredPromise&gt; &gt;&amp;&amp;) + 255 (WorkerGlobalScopeFetch.cpp:50)
10  com.apple.WebCore             	0x00000003b92a8679 WebCore::jsWorkerGlobalScopePrototypeFunctionFetchBody(JSC::ExecState*, WebCore::JSWorkerGlobalScope*, WTF::Ref&lt;WebCore::DeferredPromise, WTF::DumbPtrTraits&lt;WebCore::DeferredPromise&gt; &gt;&amp;&amp;, JSC::ThrowScope&amp;) + 585 (JSWorkerGlobalScope.cpp:2727)
11  com.apple.WebCore             	0x00000003b92a8b38 long long WebCore::IDLOperationReturningPromise&lt;WebCore::JSWorkerGlobalScope&gt;::call&lt;&amp;(WebCore::jsWorkerGlobalScopePrototypeFunctionFetchBody(JSC::ExecState*, WebCore::JSWorkerGlobalScope*, WTF::Ref&lt;WebCore::DeferredPromise, WTF::DumbPtrTraits&lt;WebCore::DeferredPromise&gt; &gt;&amp;&amp;, JSC::ThrowScope&amp;)), (WebCore::PromiseExecutionScope)1, (WebCore::CastedThisErrorBehavior)2&gt;(JSC::ExecState&amp;, char const*)::&apos;lambda&apos;(JSC::ExecState&amp;, WTF::Ref&lt;WebCore::DeferredPromise, WTF::DumbPtrTraits&lt;WebCore::DeferredPromise&gt; &gt;&amp;&amp;)::operator()(JSC::ExecState&amp;, WTF::Ref&lt;WebCore::DeferredPromise, WTF::DumbPtrTraits&lt;WebCore::DeferredPromise&gt; &gt;&amp;&amp;) const + 680 (JSDOMOperationReturningPromise.h:52)
12  com.apple.WebCore             	0x00000003b92a87f0 JSC::JSValue WebCore::callPromiseFunction&lt;(WebCore::PromiseExecutionScope)1, long long</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409460</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-26 18:31:50 -0700</bug_when>
    <thetext>ASSERTION FAILED: isMainThread()
./page/SecurityOrigin.cpp(150) : WebCore::SecurityOrigin::SecurityOrigin(const WebCore::URL &amp;)
1   0x3b4db35fd WTFCrash
2   0x3a7ae4674 WebCore::SecurityOrigin::SecurityOrigin(WebCore::URL const&amp;)
3   0x3a7ae482d WebCore::SecurityOrigin::SecurityOrigin(WebCore::URL const&amp;)
4   0x3a7ae4c57 WebCore::SecurityOrigin::create(WebCore::URL const&amp;)
5   0x3a7b6fb4f WebCore::ContentSecurityPolicy::upgradeInsecureRequestIfNeeded(WebCore::URL&amp;, WebCore::ContentSecurityPolicy::InsecureRequestType) const
6   0x3a88089f6 WebCore::XMLHttpRequest::open(WTF::String const&amp;, WebCore::URL const&amp;, bool)
7   0x3a8808d69 WebCore::XMLHttpRequest::open(WTF::String const&amp;, WTF::String const&amp;, bool, WTF::String const&amp;, WTF::String const&amp;)
8   0x3a654d46a WebCore::jsXMLHttpRequestPrototypeFunctionOpen2Body(JSC::ExecState*, WebCore::JSXMLHttpRequest*, JSC::ThrowScope&amp;)
9   0x3a654cd85 WebCore::jsXMLHttpRequestPrototypeFunctionOpenOverloadDispatcher(JSC::ExecState*, WebCore::JSXMLHttpRequest*, JSC::ThrowScope&amp;)
10  0x3a65416be long long WebCore::IDLOperation&lt;WebCore::JSXMLHttpRequest&gt;::call&lt;&amp;(WebCore::jsXMLHttpRequestPrototypeFunctionOpenOverloadDispatcher(JSC::ExecState*, WebCore::JSXMLHttpRequest*, JSC::ThrowScope&amp;)), (WebCore::CastedThisErrorBehavior)0&gt;(JSC::ExecState&amp;, char const*)
11  0x3a654144c WebCore::jsXMLHttpRequestPrototypeFunctionOpen(JSC::ExecState*)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409461</commentid>
    <comment_count>3</comment_count>
      <attachid>336560</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-26 18:39:05 -0700</bug_when>
    <thetext>Created attachment 336560
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409462</commentid>
    <comment_count>4</comment_count>
      <attachid>336561</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-26 19:48:11 -0700</bug_when>
    <thetext>Created attachment 336561
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409467</commentid>
    <comment_count>5</comment_count>
      <attachid>336563</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-26 20:17:37 -0700</bug_when>
    <thetext>Created attachment 336563
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409477</commentid>
    <comment_count>6</comment_count>
      <attachid>336567</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-26 21:11:20 -0700</bug_when>
    <thetext>Created attachment 336567
Previous patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409482</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-26 22:08:57 -0700</bug_when>
    <thetext>Another option would be to remove use of SecurityOrigin from ContentSecurityPolicy::upgradeInsecureRequestIfNeeded().
For instance, m_insecureNavigationRequestsToUpgrade could be a HashSet&lt;SecurityOriginData&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409531</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-27 07:00:06 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #7)
&gt; Another option would be to remove use of SecurityOrigin from
&gt; ContentSecurityPolicy::upgradeInsecureRequestIfNeeded().
&gt; For instance, m_insecureNavigationRequestsToUpgrade could be a
&gt; HashSet&lt;SecurityOriginData&gt;.

That was my initial proposal but Daniel did not like that as much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409548</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-27 08:35:51 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; (In reply to youenn fablet from comment #7)
&gt; &gt; Another option would be to remove use of SecurityOrigin from
&gt; &gt; ContentSecurityPolicy::upgradeInsecureRequestIfNeeded().
&gt; &gt; For instance, m_insecureNavigationRequestsToUpgrade could be a
&gt; &gt; HashSet&lt;SecurityOriginData&gt;.
&gt; 
&gt; That was my initial proposal but Daniel did not like that as much.

Some thoughts:
- ContentSecurityPolicy seems to restrict its use of SecurityOrigin to a triple { protocol, host, port }. SecurityOrigin is (unfortunately?) much more than that. SecurityOriginData is just that triple.

- SecurityOriginData is probably more efficient to construct and compare.

- We usually try to do as much as possible in background threads so there should be some benefit in doing the reverse.

 - We are using ContentSecurityPolicy in NetworkProcess and will use it more and more as we want to move redirection handling in NetworkProcess.
There is no real SecurityOrigin in NetworkProcess since we use SecurityOriginData for IPC.
Having ContentSecurityPolicy use some form of SecurityOriginData might be more consistent. And we could envision handling redirections in a NetworkProcess background thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409653</commentid>
    <comment_count>10</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-27 13:26:46 -0700</bug_when>
    <thetext>We had some discussion with Daniel.
Here are some related points in that context:

- We should try to stop using SecurityOrigin in NetworkProcess/StorageProcess and use it only in WebProcess+MainThread.
- Using SecurityOriginData (as it is now, meaning dumb) as a replacement to SecurityOrigin is fine. That would lead me to think we should do it in that patch (smaller patch, more efficient). Daniel was not opposed to it but was not enthusiastic.
- We should probably refrain from extending SecurityOriginData to some capabilities that SecurityOrigin has, like canRequest. Efforts have been made to put all security checks in one place and that is probably a good thing. We will need to see how we do this for NetworkProcess. It has a very specific case to handle (HTTP redirections) so might be fine with a dedicated approach based on exporting SecurityOriginData plus some additional NetworkResourceLoadParameters values.

Daniel, please correct if I misinterpret your points of view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409690</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-27 15:02:32 -0700</bug_when>
    <thetext>I personally do not mind either way since I already wrote the more complicated patch. I&apos;ll wait for Daniel to comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409707</commentid>
    <comment_count>12</comment_count>
      <attachid>336626</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-27 15:45:49 -0700</bug_when>
    <thetext>Created attachment 336626
Alternative patch using SecurityOriginData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409708</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-27 15:46:31 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #12)
&gt; Created attachment 336626 [details]
&gt; Alternative patch using SecurityOriginData

Here is the patch using SecurityOriginData instead based on Youenn&apos;s discussion with Daniel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409711</commentid>
    <comment_count>14</comment_count>
      <attachid>336626</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-27 16:06:16 -0700</bug_when>
    <thetext>Comment on attachment 336626
Alternative patch using SecurityOriginData

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

&gt; Source/WebCore/loader/DocumentWriter.cpp:158
&gt; +    HashSet&lt;SecurityOriginData&gt; insecureNavigationRequestsToUpgrade;

insecureNavigationRequestsToUpgrade seems not totally correct.
insecureNavigationRequestOriginsToUpgrade seems better, but maybe not worth the refactoring effort, since it would require changing takeNavigationRequestsToUpgrade and m_insecureNavigationRequestsToUpgrade?

&gt; Source/WebCore/page/csp/ContentSecurityPolicy.h:167
&gt; +    HashSet&lt;SecurityOriginData&gt;&amp;&amp; takeNavigationRequestsToUpgrade();

Why not HashSet&lt;SecurityOriginData&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409716</commentid>
    <comment_count>15</comment_count>
      <attachid>336629</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-27 16:22:08 -0700</bug_when>
    <thetext>Created attachment 336629
Alternative patch using SecurityOriginData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409720</commentid>
    <comment_count>16</comment_count>
      <attachid>336629</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-27 16:32:24 -0700</bug_when>
    <thetext>Comment on attachment 336629
Alternative patch using SecurityOriginData

Ok, let&apos;s go with this one for now since Youenn prefers it and Daniel did not object. We can also reconsider later it turns out the other patch was better once Youenn is done with his refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409728</commentid>
    <comment_count>17</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-27 16:47:46 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #16)
&gt; Comment on attachment 336629 [details]
&gt; Alternative patch using SecurityOriginData
&gt; 
&gt; Ok, let&apos;s go with this one for now since Youenn prefers it and Daniel did
&gt; not object. We can also reconsider later it turns out the other patch was
&gt; better once Youenn is done with his refactoring.

Right, we are currently not implementing request upgrade for ping loads.
The plan is to beef up NetworkLoadChecker so that it does so through its own ContentSecurityPolicy.

Ideally, we would make ContentSecurityPolicy to be SecurityOrigin free as part of making NetworkProcess SecurityOrigin free.
As I see it now, the only refactoring bit is ContentSecurityPolicy constructor which would take a SecurityOriginData instead of a SecurityOrigin since it is only using it to get protocol/host/port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409730</commentid>
    <comment_count>18</comment_count>
      <attachid>336629</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-27 17:12:36 -0700</bug_when>
    <thetext>Comment on attachment 336629
Alternative patch using SecurityOriginData

Clearing flags on attachment: 336629

Committed r230017: &lt;https://trac.webkit.org/changeset/230017&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409731</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-27 17:12:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409736</commentid>
    <comment_count>20</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-27 17:17:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/38935104&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409930</commentid>
    <comment_count>21</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-28 11:11:37 -0700</bug_when>
    <thetext>&gt; Right, we are currently not implementing request upgrade for ping loads.
&gt; The plan is to beef up NetworkLoadChecker so that it does so through its own
&gt; ContentSecurityPolicy.

Filed https://bugs.webkit.org/show_bug.cgi?id=184098</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336560</attachid>
            <date>2018-03-26 18:39:05 -0700</date>
            <delta_ts>2018-03-26 19:48:11 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>184029_wip.patch</filename>
            <type>text/plain</type>
            <size>2733</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggNTQx
MmZkMjk2YmIuLjViNjc4ZmYwMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoTG9hZGVyLmNwcApAQCAtOTcsOCArOTcsNiBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdGFy
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBGZXRjaFJlcXVlc3QmIHJl
cQogICAgIEFTU0VSVChjb250ZXh0LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKTsKICAgICBhdXRv
JiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSAqY29udGV4dC5jb250ZW50U2VjdXJpdHlQb2xpY3ko
KTsKIAotICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeS51cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZO
ZWVkZWQoZmV0Y2hSZXF1ZXN0LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okluc2VjdXJlUmVxdWVz
dFR5cGU6OkxvYWQpOwotCiAgICAgaWYgKCFjb250ZXh0LnNob3VsZEJ5cGFzc01haW5Xb3JsZENv
bnRlbnRTZWN1cml0eVBvbGljeSgpICYmICFjb250ZW50U2VjdXJpdHlQb2xpY3kuYWxsb3dDb25u
ZWN0VG9Tb3VyY2UoZmV0Y2hSZXF1ZXN0LnVybCgpKSkgewogICAgICAgICBtX2NsaWVudC5kaWRG
YWlsKHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgZmV0Y2hSZXF1ZXN0LnVybCgpLCBB
U0NJSUxpdGVyYWwoIk5vdCBhbGxvd2VkIGJ5IENvbnRlbnRTZWN1cml0eVBvbGljeSIpLCBSZXNv
dXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOwogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmlu
ZGV4IDUwMjAwMGZiZTZjLi4zYjVhYmZmYmZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDYgQEAgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoRG9jdW1lbnQm
IGRvY3VtZW50LCBUaHJlYWRhYmwKICAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQogICAgICwgbV9v
cmlnaW4oV1RGTW92ZShvcmlnaW4pKQogICAgICwgbV9yZWZlcnJlcihXVEZNb3ZlKHJlZmVycmVy
KSkKLSAgICAsIG1fc2FtZU9yaWdpblJlcXVlc3Qoc2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0
KHJlcXVlc3QudXJsKCkpKQogICAgICwgbV9zaW1wbGVSZXF1ZXN0KHRydWUpCiAgICAgLCBtX2Fz
eW5jKGJsb2NraW5nQmVoYXZpb3IgPT0gTG9hZEFzeW5jaHJvbm91c2x5KQogICAgICwgbV9kZWxh
eUNhbGxiYWNrc0ZvckludGVncml0eUNoZWNrKCFtX29wdGlvbnMuaW50ZWdyaXR5LmlzRW1wdHko
KSkKQEAgLTEwMyw2ICsxMDIsMTMgQEAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBUaHJlYWRhYmwKIHsKICAgICBy
ZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsKIAorICAgIFVSTCB1cmwgPSByZXF1ZXN0LnVybCgp
OworICAgIGRvY3VtZW50LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT51cGdyYWRlSW5zZWN1cmVS
ZXF1ZXN0SWZOZWVkZWQodXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okluc2VjdXJlUmVxdWVz
dFR5cGU6OkxvYWQpOworICAgIGlmICh1cmwgIT0gcmVxdWVzdC51cmwoKSkKKyAgICAgICAgcmVx
dWVzdC5zZXRVUkwodXJsKTsKKworICAgIG1fc2FtZU9yaWdpblJlcXVlc3QgPSBzZWN1cml0eU9y
aWdpbigpLmNhblJlcXVlc3QocmVxdWVzdC51cmwoKSk7CisKICAgICAvLyBTZXR0aW5nIGEgcmVm
ZXJyZXIgaGVhZGVyIGlzIG9ubHkgc3VwcG9ydGVkIGluIHRoZSBhc3luYyBjb2RlIHBhdGguCiAg
ICAgQVNTRVJUKG1fYXN5bmMgfHwgbV9yZWZlcnJlci5pc0VtcHR5KCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA5MWZiYjcyZmRjYi4uZWQyMzQxZWZiMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMzcxLDggKzM3MSw2IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9k
LCBjb25zdCBVUkwmIHVybCwgYm9vCiAgICAgbV9tZXRob2QgPSBub3JtYWxpemVIVFRQTWV0aG9k
KG1ldGhvZCk7CiAKICAgICBtX3VybCA9IHVybDsKLSAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT51cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVk
ZWQobV91cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TG9h
ZCk7Ci0KICAgICBtX2FzeW5jID0gYXN5bmM7CiAKICAgICBBU1NFUlQoIW1fbG9hZGVyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336561</attachid>
            <date>2018-03-26 19:48:11 -0700</date>
            <delta_ts>2018-03-26 20:17:37 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>184029_wip.patch</filename>
            <type>text/plain</type>
            <size>3995</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggNTQx
MmZkMjk2YmIuLjViNjc4ZmYwMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoTG9hZGVyLmNwcApAQCAtOTcsOCArOTcsNiBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdGFy
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBGZXRjaFJlcXVlc3QmIHJl
cQogICAgIEFTU0VSVChjb250ZXh0LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKTsKICAgICBhdXRv
JiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSAqY29udGV4dC5jb250ZW50U2VjdXJpdHlQb2xpY3ko
KTsKIAotICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeS51cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZO
ZWVkZWQoZmV0Y2hSZXF1ZXN0LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okluc2VjdXJlUmVxdWVz
dFR5cGU6OkxvYWQpOwotCiAgICAgaWYgKCFjb250ZXh0LnNob3VsZEJ5cGFzc01haW5Xb3JsZENv
bnRlbnRTZWN1cml0eVBvbGljeSgpICYmICFjb250ZW50U2VjdXJpdHlQb2xpY3kuYWxsb3dDb25u
ZWN0VG9Tb3VyY2UoZmV0Y2hSZXF1ZXN0LnVybCgpKSkgewogICAgICAgICBtX2NsaWVudC5kaWRG
YWlsKHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgZmV0Y2hSZXF1ZXN0LnVybCgpLCBB
U0NJSUxpdGVyYWwoIk5vdCBhbGxvd2VkIGJ5IENvbnRlbnRTZWN1cml0eVBvbGljeSIpLCBSZXNv
dXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOwogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGQw
MDJjMGIxODI2Li5iN2YyZjY0NjVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTIyOSw2ICsyMjksNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwcgogICAgIEFTU0VSVChjb250ZXh0LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKTsK
ICAgICBhdXRvJiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSAqY29udGV4dC5jb250ZW50U2VjdXJp
dHlQb2xpY3koKTsKIAorICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb24gdGhl
IG1haW4gdGhyZWFkLgogICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeS51cGdyYWRlSW5zZWN1cmVS
ZXF1ZXN0SWZOZWVkZWQobV91cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1
ZXN0VHlwZTo6TG9hZCk7CiAKICAgICBpZiAoIXBvcnRBbGxvd2VkKG1fdXJsKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRl
eCA1MDIwMDBmYmU2Yy4uMmM3ODViNmVhYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC05NCw3ICs5NCw2IEBAIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKERvY3VtZW50JiBk
b2N1bWVudCwgVGhyZWFkYWJsCiAgICAgLCBtX29wdGlvbnMob3B0aW9ucykKICAgICAsIG1fb3Jp
Z2luKFdURk1vdmUob3JpZ2luKSkKICAgICAsIG1fcmVmZXJyZXIoV1RGTW92ZShyZWZlcnJlcikp
Ci0gICAgLCBtX3NhbWVPcmlnaW5SZXF1ZXN0KHNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdChy
ZXF1ZXN0LnVybCgpKSkKICAgICAsIG1fc2ltcGxlUmVxdWVzdCh0cnVlKQogICAgICwgbV9hc3lu
YyhibG9ja2luZ0JlaGF2aW9yID09IExvYWRBc3luY2hyb25vdXNseSkKICAgICAsIG1fZGVsYXlD
YWxsYmFja3NGb3JJbnRlZ3JpdHlDaGVjayghbV9vcHRpb25zLmludGVncml0eS5pc0VtcHR5KCkp
CkBAIC0xMDMsNiArMTAyLDEzIEBAIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyKERvY3VtZW50JiBkb2N1bWVudCwgVGhyZWFkYWJsCiB7CiAgICAgcmVs
YXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CiAKKyAgICBVUkwgdXJsID0gcmVxdWVzdC51cmwoKTsK
KyAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeS0+dXBncmFkZUluc2VjdXJlUmVxdWVzdElmTmVl
ZGVkKHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpJbnNlY3VyZVJlcXVlc3RUeXBlOjpMb2Fk
KTsKKyAgICBpZiAodXJsICE9IHJlcXVlc3QudXJsKCkpCisgICAgICAgIHJlcXVlc3Quc2V0VVJM
KHVybCk7CisKKyAgICBtX3NhbWVPcmlnaW5SZXF1ZXN0ID0gc2VjdXJpdHlPcmlnaW4oKS5jYW5S
ZXF1ZXN0KHJlcXVlc3QudXJsKCkpOworCiAgICAgLy8gU2V0dGluZyBhIHJlZmVycmVyIGhlYWRl
ciBpcyBvbmx5IHN1cHBvcnRlZCBpbiB0aGUgYXN5bmMgY29kZSBwYXRoLgogICAgIEFTU0VSVCht
X2FzeW5jIHx8IG1fcmVmZXJyZXIuaXNFbXB0eSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggYWU2MmExZjU0ZGQuLjhm
YTA0OWRlMThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5jcHAKQEAgLTgyMCw2ICs4MjAsOCBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6dXBncmFkZUluc2VjdXJlUmVxdWVzdElmTmVlZGVkKFJlc291cmNlUmVxdWVzdCYgcmVx
dQogCiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6dXBncmFkZUluc2VjdXJlUmVxdWVzdElm
TmVlZGVkKFVSTCYgdXJsLCBJbnNlY3VyZVJlcXVlc3RUeXBlIHJlcXVlc3RUeXBlKSBjb25zdAog
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICAgICBpZiAoIXVybC5wcm90b2NvbElz
KCJodHRwIikgJiYgIXVybC5wcm90b2NvbElzKCJ3cyIpKQogICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDkxZmJiNzJmZGNiLi5lZDIzNDFl
ZmIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0zNzEsOCArMzcx
LDYgQEAgRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5n
JiBtZXRob2QsIGNvbnN0IFVSTCYgdXJsLCBib28KICAgICBtX21ldGhvZCA9IG5vcm1hbGl6ZUhU
VFBNZXRob2QobWV0aG9kKTsKIAogICAgIG1fdXJsID0gdXJsOwotICAgIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPnVwZ3JhZGVJbnNlY3VyZVJlcXVl
c3RJZk5lZWRlZChtX3VybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpJbnNlY3VyZVJlcXVlc3RU
eXBlOjpMb2FkKTsKLQogICAgIG1fYXN5bmMgPSBhc3luYzsKIAogICAgIEFTU0VSVCghbV9sb2Fk
ZXIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336563</attachid>
            <date>2018-03-26 20:17:37 -0700</date>
            <delta_ts>2018-03-26 21:11:08 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>184029_wip.patch</filename>
            <type>text/plain</type>
            <size>14223</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggNTQx
MmZkMjk2YmIuLjViNjc4ZmYwMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoTG9hZGVyLmNwcApAQCAtOTcsOCArOTcsNiBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdGFy
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBGZXRjaFJlcXVlc3QmIHJl
cQogICAgIEFTU0VSVChjb250ZXh0LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKTsKICAgICBhdXRv
JiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSAqY29udGV4dC5jb250ZW50U2VjdXJpdHlQb2xpY3ko
KTsKIAotICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeS51cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZO
ZWVkZWQoZmV0Y2hSZXF1ZXN0LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okluc2VjdXJlUmVxdWVz
dFR5cGU6OkxvYWQpOwotCiAgICAgaWYgKCFjb250ZXh0LnNob3VsZEJ5cGFzc01haW5Xb3JsZENv
bnRlbnRTZWN1cml0eVBvbGljeSgpICYmICFjb250ZW50U2VjdXJpdHlQb2xpY3kuYWxsb3dDb25u
ZWN0VG9Tb3VyY2UoZmV0Y2hSZXF1ZXN0LnVybCgpKSkgewogICAgICAgICBtX2NsaWVudC5kaWRG
YWlsKHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgZmV0Y2hSZXF1ZXN0LnVybCgpLCBB
U0NJSUxpdGVyYWwoIk5vdCBhbGxvd2VkIGJ5IENvbnRlbnRTZWN1cml0eVBvbGljeSIpLCBSZXNv
dXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOwogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGQw
MDJjMGIxODI2Li5iOTdiOTNkYTA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTIyOSw4ICsyMjksNiBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwcgogICAgIEFTU0VSVChjb250ZXh0LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKTsK
ICAgICBhdXRvJiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSAqY29udGV4dC5jb250ZW50U2VjdXJp
dHlQb2xpY3koKTsKIAotICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeS51cGdyYWRlSW5zZWN1cmVS
ZXF1ZXN0SWZOZWVkZWQobV91cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1
ZXN0VHlwZTo6TG9hZCk7Ci0KICAgICBpZiAoIXBvcnRBbGxvd2VkKG1fdXJsKSkgewogICAgICAg
ICBTdHJpbmcgbWVzc2FnZTsKICAgICAgICAgaWYgKG1fdXJsLnBvcnQoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApp
bmRleCAxZDkyZTc3NWU5Zi4uNmQ1MmZiMmJjZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTYwLDEyICs2
MCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IFNlY29uZHMgVENQTWF4aW11bVNl
Z21lbnRMaWZldGltZSB7IDJfbWluIH07CiAKLVdlYlNvY2tldENoYW5uZWw6OldlYlNvY2tldENo
YW5uZWwoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50JiBjbGllbnQs
IFNvY2tldFByb3ZpZGVyJiBwcm92aWRlcikKK1dlYlNvY2tldENoYW5uZWw6OldlYlNvY2tldENo
YW5uZWwoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50JiBjbGllbnQs
IFNvY2tldFByb3ZpZGVyJiBwcm92aWRlciwgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0
eVBvbGljeT4mJiBjb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgOiBtX2RvY3VtZW50KCZkb2N1
bWVudCkKICAgICAsIG1fY2xpZW50KCZjbGllbnQpCiAgICAgLCBtX3Jlc3VtZVRpbWVyKCp0aGlz
LCAmV2ViU29ja2V0Q2hhbm5lbDo6cmVzdW1lVGltZXJGaXJlZCkKICAgICAsIG1fY2xvc2luZ1Rp
bWVyKCp0aGlzLCAmV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2luZ1RpbWVyRmlyZWQpCiAgICAgLCBt
X3NvY2tldFByb3ZpZGVyKHByb3ZpZGVyKQorICAgICwgbV9jb250ZW50U2VjdXJpdHlQb2xpY3ko
V1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3kpKQogewogICAgIGlmIChQYWdlKiBwYWdlID0g
ZG9jdW1lbnQucGFnZSgpKQogICAgICAgICBtX2lkZW50aWZpZXIgPSBwYWdlLT5wcm9ncmVzcygp
LmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKQEAgLTc4LDExICs3OSwyMiBAQCBXZWJTb2NrZXRD
aGFubmVsOjp+V2ViU29ja2V0Q2hhbm5lbCgpCiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRD
aGFubmVsICVwIGR0b3IiLCB0aGlzKTsKIH0KIAorY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
JiBXZWJTb2NrZXRDaGFubmVsOjpjb250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdAoreworICAg
IGlmIChtX2NvbnRlbnRTZWN1cml0eVBvbGljeSkKKyAgICAgICAgcmV0dXJuICptX2NvbnRlbnRT
ZWN1cml0eVBvbGljeS5nZXQoKTsKKyAgICBBU1NFUlQobV9kb2N1bWVudC0+Y29udGVudFNlY3Vy
aXR5UG9saWN5KCkpOworICAgIHJldHVybiAqbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9s
aWN5KCk7Cit9CisKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdChjb25zdCBVUkwmIHJl
cXVlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKIHsKICAgICBMT0coTmV0d29yaywg
IldlYlNvY2tldENoYW5uZWwgJXAgY29ubmVjdCgpIiwgdGhpcyk7CiAKICAgICBVUkwgdXJsID0g
cmVxdWVzdGVkVVJMOworCisgICAgdGhpcy0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkudXBncmFk
ZUluc2VjdXJlUmVxdWVzdElmTmVlZGVkKHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpJbnNl
Y3VyZVJlcXVlc3RUeXBlOjpMb2FkKTsKKwogICAgIGJvb2wgYWxsb3dDb29raWVzID0gdHJ1ZTsK
ICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIGlmIChhdXRvKiBwYWdlID0gbV9k
b2N1bWVudC0+cGFnZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCAxMTMxZWE2MTFmOS4uOTdhNmMzNDVkNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuaApAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBXZWJTb2NrZXRDaGFubmVsIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0Q2hhbm5lbD4sIHB1YmxpYyBTb2NrZXRTdHJlYQogewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2Vi
U29ja2V0Q2hhbm5lbD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViU29ja2V0Q2hhbm5l
bENsaWVudCYgY2xpZW50LCBTb2NrZXRQcm92aWRlciYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViU29ja2V0Q2hhbm5lbChkb2N1bWVudCwgY2xpZW50LCBwcm92aWRlcikpOyB9
CisgICAgc3RhdGljIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50JiBjbGllbnQsIFNvY2tldFByb3ZpZGVyJiBwcm92
aWRlciwgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4mJiBjb250ZW50U2Vj
dXJpdHlQb2xpY3kgPSBudWxscHRyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNvY2tldENo
YW5uZWwoZG9jdW1lbnQsIGNsaWVudCwgcHJvdmlkZXIsIFdURk1vdmUoY29udGVudFNlY3VyaXR5
UG9saWN5KSkpOyB9CiAgICAgdmlydHVhbCB+V2ViU29ja2V0Q2hhbm5lbCgpOwogCiAgICAgYm9v
bCBpc1dlYlNvY2tldENoYW5uZWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CkBAIC0x
MjgsNyArMTI4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGVyZWZUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQogCiBwcml2YXRlOgotICAgIFdFQkNP
UkVfRVhQT1JUIFdlYlNvY2tldENoYW5uZWwoRG9jdW1lbnQmLCBXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50JiwgU29ja2V0UHJvdmlkZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBXZWJTb2NrZXRDaGFu
bmVsKERvY3VtZW50JiwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCYsIFNvY2tldFByb3ZpZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4mJik7CiAKICAgICBib29sIGFw
cGVuZFRvQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW4pOwogICAgIHZvaWQgc2tp
cEJ1ZmZlcihzaXplX3QgbGVuKTsKQEAgLTEzOSw2ICsxMzksOCBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBwcm9jZXNzRnJhbWUoKTsKIAorICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSYg
Y29udGVudFNlY3VyaXR5UG9saWN5KCkgY29uc3Q7CisKICAgICAvLyBJdCBpcyBhbGxvd2VkIHRv
IHNlbmQgYSBCbG9iIGFzIGEgYmluYXJ5IGZyYW1lIGlmIGh5YmktMTAgcHJvdG9jb2wgaXMgaW4g
dXNlLiBTZW5kaW5nIGEgQmxvYgogICAgIC8vIGNhbiBiZSBkZWxheWVkIGJlY2F1c2UgaXQgbXVz
dCBiZSByZWFkIGFzeW5jaHJvbm91c2x5LiBPdGhlciB0eXBlcyBvZiBkYXRhIChTdHJpbmcgb3IK
ICAgICAvLyBBcnJheUJ1ZmZlcikgbWF5IGFsc28gYmUgYmxvY2tlZCBieSBwcmVjZWRpbmcgc2Vu
ZGluZyByZXF1ZXN0IG9mIGEgQmxvYi4KQEAgLTIyMyw2ICsyMjUsNyBAQCBwcml2YXRlOgogCiAg
ICAgV2ViU29ja2V0RGVmbGF0ZUZyYW1lciBtX2RlZmxhdGVGcmFtZXI7CiAgICAgUmVmPFNvY2tl
dFByb3ZpZGVyPiBtX3NvY2tldFByb3ZpZGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50
U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAK
aW5kZXggODQyMWIxNDU2OTkuLjM4YTNhZjBlNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIgogCiAjaW5jbHVkZSAiQmxvYi5oIgorI2luY2x1
ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNvY2tldFByb3ZpZGVy
LmgiCkBAIC0xMzksMTAgKzE0MCwxMCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpyZXN1bWUoKQogICAgICAgICBtX2JyaWRnZS0+cmVzdW1lKCk7CiB9CiAKLVdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpQZWVyKFJlZjxUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+JiYgY2xpZW50V3JhcHBlciwgV29ya2VyTG9hZGVy
UHJveHkmIGxvYWRlclByb3h5LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIHRhc2tNb2RlLCBTb2NrZXRQcm92aWRlciYgcHJvdmlkZXIpCitXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6UGVlcihSZWY8VGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyPiYmIGNsaWVudFdyYXBwZXIsIFdvcmtlckxvYWRlclByb3h5
JiBsb2FkZXJQcm94eSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3Ry
aW5nJiB0YXNrTW9kZSwgU29ja2V0UHJvdmlkZXImIHByb3ZpZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8
Q29udGVudFNlY3VyaXR5UG9saWN5PiYmIGNvbnRlbnRTZWN1cml0eVBvbGljeSkKICAgICA6IG1f
d29ya2VyQ2xpZW50V3JhcHBlcihXVEZNb3ZlKGNsaWVudFdyYXBwZXIpKQogICAgICwgbV9sb2Fk
ZXJQcm94eShsb2FkZXJQcm94eSkKLSAgICAsIG1fbWFpbldlYlNvY2tldENoYW5uZWwoV2ViU29j
a2V0Q2hhbm5lbDo6Y3JlYXRlKGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KSwgKnRoaXMsIHBy
b3ZpZGVyKSkKKyAgICAsIG1fbWFpbldlYlNvY2tldENoYW5uZWwoV2ViU29ja2V0Q2hhbm5lbDo6
Y3JlYXRlKGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KSwgKnRoaXMsIHByb3ZpZGVyLCBXVEZN
b3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeSkpKQogICAgICwgbV90YXNrTW9kZSh0YXNrTW9kZSkK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtMzUyLDE0ICszNTMsMTQgQEAgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6fkJyaWRnZSgpCiAgICAgZGlz
Y29ubmVjdCgpOwogfQogCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpC
cmlkZ2U6Om1haW5UaHJlYWRJbml0aWFsaXplKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgUmVmPFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4mJiBjbGllbnRXcmFwcGVyLCBjb25zdCBTdHJpbmcmIHRh
c2tNb2RlLCBSZWY8U29ja2V0UHJvdmlkZXI+JiYgcHJvdmlkZXIpCit2b2lkIFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJbml0aWFsaXplKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94
eSwgUmVmPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4mJiBjbGllbnRX
cmFwcGVyLCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZWY8U29ja2V0UHJvdmlkZXI+JiYgcHJv
dmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+JiYgY29udGVudFNl
Y3VyaXR5UG9saWN5KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJU
KGNvbnRleHQuaXNEb2N1bWVudCgpKTsKIAogICAgIGJvb2wgc2VudCA9IGxvYWRlclByb3h5LnBv
c3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoewogICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywKLSAgICAgICAgW2NsaWVudFdyYXBwZXIgPSBj
bGllbnRXcmFwcGVyLmNvcHlSZWYoKSwgJmxvYWRlclByb3h5LCBwZWVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxQZWVyPihjbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwgbG9hZGVyUHJveHksIGNvbnRleHQs
IHRhc2tNb2RlLCBXVEZNb3ZlKHByb3ZpZGVyKSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIG11dGFibGUgeworICAgICAgICBbY2xpZW50V3JhcHBlciA9IGNsaWVudFdyYXBwZXIu
Y29weVJlZigpLCAmbG9hZGVyUHJveHksIHBlZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlZXI+KGNs
aWVudFdyYXBwZXIuY29weVJlZigpLCBsb2FkZXJQcm94eSwgY29udGV4dCwgdGFza01vZGUsIFdU
Rk1vdmUocHJvdmlkZXIpLCBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeSkpXShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIEFTU0VSVF9V
TlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAgICAg
ICAgaWYgKGNsaWVudFdyYXBwZXItPmZhaWxlZFdlYlNvY2tldENoYW5uZWxDcmVhdGlvbigpKSB7
CiAgICAgICAgICAgICAgICAgLy8gSWYgQnJpZGdlOjppbml0aWFsaXplKCkgcXVpdHRlZCBlYXJs
aWVyLCB3ZSBuZWVkIHRvIGtpY2sgbWFpblRocmVhZERlc3Ryb3koKSB0byBkZWxldGUgdGhlIHBl
ZXIuCkBAIC0zODIsOCArMzgzLDE5IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OkJyaWRnZTo6aW5pdGlhbGl6ZSgpCiAgICAgc2V0TWV0aG9kTm90Q29tcGxldGVkKCk7
CiAgICAgUmVmPEJyaWRnZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBtX2xvYWRlclBy
b3h5LnBvc3RUYXNrVG9Mb2FkZXIoWyZsb2FkZXJQcm94eSA9IG1fbG9hZGVyUHJveHksIHdvcmtl
ckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIuY29weVJlZigpLCB0YXNrTW9k
ZSA9IG1fdGFza01vZGUuaXNvbGF0ZWRDb3B5KCksIHByb3ZpZGVyID0gbV9zb2NrZXRQcm92aWRl
ci5jb3B5UmVmKCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewot
ICAgICAgICBtYWluVGhyZWFkSW5pdGlhbGl6ZShjb250ZXh0LCBsb2FkZXJQcm94eSwgV1RGTW92
ZSh3b3JrZXJDbGllbnRXcmFwcGVyKSwgdGFza01vZGUsIFdURk1vdmUocHJvdmlkZXIpKTsKKyAg
ICBhdXRvKiBzZWN1cml0eU9yaWdpbiA9IG1fd29ya2VyR2xvYmFsU2NvcGUtPnNlY3VyaXR5T3Jp
Z2luKCk7CisgICAgYXV0byogY29udGVudFNlY3VyaXR5UG9saWN5ID0gbV93b3JrZXJHbG9iYWxT
Y29wZS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCk7CisKKyAgICBBU1NFUlQoc2VjdXJpdHlPcmln
aW4pOworICAgIEFTU0VSVChjb250ZW50U2VjdXJpdHlQb2xpY3kpOworCisgICAgYXV0byBzZWN1
cml0eU9yaWdpbkNvcHkgPSBzZWN1cml0eU9yaWdpbi0+aXNvbGF0ZWRDb3B5KCk7CisgICAgYXV0
byBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2Vj
dXJpdHlQb2xpY3k+KHNlY3VyaXR5T3JpZ2luQ29weSk7CisgICAgY29udGVudFNlY3VyaXR5UG9s
aWN5Q29weS0+Y29weVN0YXRlRnJvbShjb250ZW50U2VjdXJpdHlQb2xpY3kpOworICAgIGNvbnRl
bnRTZWN1cml0eVBvbGljeUNvcHktPmNvcHlVcGdyYWRlSW5zZWN1cmVSZXF1ZXN0U3RhdGVGcm9t
KCpjb250ZW50U2VjdXJpdHlQb2xpY3kpOworCisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1Rv
TG9hZGVyKFsmbG9hZGVyUHJveHkgPSBtX2xvYWRlclByb3h5LCB3b3JrZXJDbGllbnRXcmFwcGVy
ID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwgdGFza01vZGUgPSBtX3Rhc2tNb2Rl
Lmlzb2xhdGVkQ29weSgpLCBwcm92aWRlciA9IG1fc29ja2V0UHJvdmlkZXIuY29weVJlZigpLCBj
b250ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0gV1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3lD
b3B5KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAg
IG1haW5UaHJlYWRJbml0aWFsaXplKGNvbnRleHQsIGxvYWRlclByb3h5LCBXVEZNb3ZlKHdvcmtl
ckNsaWVudFdyYXBwZXIpLCB0YXNrTW9kZSwgV1RGTW92ZShwcm92aWRlciksIFdURk1vdmUoY29u
dGVudFNlY3VyaXR5UG9saWN5Q29weSkpOwogICAgIH0pOwogICAgIHdhaXRGb3JNZXRob2RDb21w
bGV0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXgg
ODEyZjhhMDJkMzAuLjQ4N2I5ZDhhYTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuaApAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgUGVlciA6IHB1
YmxpYyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50IHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoUGVlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAg
UGVlcihSZWY8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiYmLCBXb3Jr
ZXJMb2FkZXJQcm94eSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHRh
c2tNb2RlLCBTb2NrZXRQcm92aWRlciYpOworICAgICAgICBQZWVyKFJlZjxUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+JiYsIFdvcmtlckxvYWRlclByb3h5JiwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFNvY2tldFByb3ZpZGVy
Jiwgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4mJik7CiAgICAgICAgIH5Q
ZWVyKCk7CiAKICAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
cHJvdG9jb2wpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyB2
b2lkIHNldFdlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJyaWRnZSog
dGhpc1B0ciwgUGVlciosIFJlZjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI+JiYpOwogCiAgICAgICAgIC8vIEV4ZWN1dGVkIG9uIHRoZSBtYWluIHRocmVhZCB0byBjcmVh
dGUgYSBQZWVyIGZvciB0aGlzIGJyaWRnZS4KLSAgICAgICAgc3RhdGljIHZvaWQgbWFpblRocmVh
ZEluaXRpYWxpemUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtlckxvYWRlclByb3h5Jiwg
UmVmPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4mJiwgY29uc3QgU3Ry
aW5nJiB0YXNrTW9kZSwgUmVmPFNvY2tldFByb3ZpZGVyPiYmKTsKKyAgICAgICAgc3RhdGljIHZv
aWQgbWFpblRocmVhZEluaXRpYWxpemUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtlckxv
YWRlclByb3h5JiwgUmVmPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4m
JiwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVmPFNvY2tldFByb3ZpZGVyPiYmLCBzdGQ6OnVu
aXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiYmKTsKIAogICAgICAgICAvLyBFeGVjdXRl
ZCBvbiB0aGUgd29ya2VyIGNvbnRleHQncyB0aHJlYWQuCiAgICAgICAgIHZvaWQgY2xlYXJDbGll
bnRXcmFwcGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwCmluZGV4IDUwMjAwMGZiZTZjLi5kYmE5MDQyM2Q1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAg
LTk0LDcgKzk0LDYgQEAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBUaHJlYWRhYmwKICAgICAsIG1fb3B0aW9ucyhv
cHRpb25zKQogICAgICwgbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQogICAgICwgbV9yZWZlcnJl
cihXVEZNb3ZlKHJlZmVycmVyKSkKLSAgICAsIG1fc2FtZU9yaWdpblJlcXVlc3Qoc2VjdXJpdHlP
cmlnaW4oKS5jYW5SZXF1ZXN0KHJlcXVlc3QudXJsKCkpKQogICAgICwgbV9zaW1wbGVSZXF1ZXN0
KHRydWUpCiAgICAgLCBtX2FzeW5jKGJsb2NraW5nQmVoYXZpb3IgPT0gTG9hZEFzeW5jaHJvbm91
c2x5KQogICAgICwgbV9kZWxheUNhbGxiYWNrc0ZvckludGVncml0eUNoZWNrKCFtX29wdGlvbnMu
aW50ZWdyaXR5LmlzRW1wdHkoKSkKQEAgLTEwMyw2ICsxMDIsMTMgQEAgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBU
aHJlYWRhYmwKIHsKICAgICByZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsKIAorICAgIFVSTCB1
cmwgPSByZXF1ZXN0LnVybCgpOworICAgIHRoaXMtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLnVw
Z3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZCh1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TG9hZCk7CisgICAgaWYgKHVybCAhPSByZXF1ZXN0LnVybCgp
KQorICAgICAgICByZXF1ZXN0LnNldFVSTCh1cmwpOworCisgICAgbV9zYW1lT3JpZ2luUmVxdWVz
dCA9IHNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdChyZXF1ZXN0LnVybCgpKTsKKwogICAgIC8v
IFNldHRpbmcgYSByZWZlcnJlciBoZWFkZXIgaXMgb25seSBzdXBwb3J0ZWQgaW4gdGhlIGFzeW5j
IGNvZGUgcGF0aC4KICAgICBBU1NFUlQobV9hc3luYyB8fCBtX3JlZmVycmVyLmlzRW1wdHkoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3ku
Y3BwCmluZGV4IGFlNjJhMWY1NGRkLi44ZmEwNDlkZTE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC04MjAsNiArODIwLDgg
QEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5l
ZWRlZChSZXNvdXJjZVJlcXVlc3QmIHJlcXUKIAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChVUkwmIHVybCwgSW5zZWN1cmVSZXF1ZXN0
VHlwZSByZXF1ZXN0VHlwZSkgY29uc3QKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
CiAgICAgaWYgKCF1cmwucHJvdG9jb2xJcygiaHR0cCIpICYmICF1cmwucHJvdG9jb2xJcygid3Mi
KSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApp
bmRleCA5MWZiYjcyZmRjYi4uZWQyMzQxZWZiMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcApAQCAtMzcxLDggKzM3MSw2IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBS
ZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBVUkwmIHVybCwgYm9vCiAg
ICAgbV9tZXRob2QgPSBub3JtYWxpemVIVFRQTWV0aG9kKG1ldGhvZCk7CiAKICAgICBtX3VybCA9
IHVybDsKLSAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpLT51cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQobV91cmwsIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TG9hZCk7Ci0KICAgICBtX2FzeW5jID0gYXN5
bmM7CiAKICAgICBBU1NFUlQoIW1fbG9hZGVyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336567</attachid>
            <date>2018-03-26 21:11:20 -0700</date>
            <delta_ts>2018-03-27 16:50:14 -0700</delta_ts>
            <desc>Previous patch</desc>
            <filename>bug-184029-20180326211117.patch</filename>
            <type>text/plain</type>
            <size>16754</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5OTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJhZDAzZmFkOTdiYzYz
YTA0OWNiMTI4ZGMwNjA3NWQzZmY3ZTNmZS4uMDlmMTU5ZjZhZDY3YmFkN2Q0YmU1MmU4ZDU2OWI5
ZWQ0ZTQ5YTgyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE4LTAzLTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQ29udGVudFNlY3VyaXR5UG9s
aWN5Ojp1cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQoKSBzaG91bGQgYmUgY2FsbGVkIGZy
b20gdGhlIG1haW4gdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODQwMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJ
Zk5lZWRlZCgpIHNob3VsZCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAg
IEl0IGNvbnN0cnVjdHMgYSBTZWN1cml0eU9yaWdpbiBvYmplY3QgaW50ZXJuYWxseSwgd2hpY2gg
aXMgb25seSBzYWZlIG9uIHRoZSBtYWluIHRocmVhZC4KKworICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2FkZXI6OnN0YXJ0
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldDo6Y29ubmVjdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hh
bm5lbDo6V2ViU29ja2V0Q2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFu
bmVsOjpjb250ZW50U2VjdXJpdHlQb2xpY3kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0Q2hhbm5lbDo6Y29ubmVjdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNy
ZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpQZWVyOjpQZWVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJbml0aWFsaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6
OmluaXRpYWxpemUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
OjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogeG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojpv
cGVuKToKKwogMjAxOC0wMy0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIEF2b2lkIGNvbnN0cnVjdGluZyBTZWN1cml0eU9yaWdpbiBvYmplY3RzIGZyb20gbm9u
LW1haW4gdGhyZWFkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVy
LmNwcAppbmRleCA1NDEyZmQyOTZiYjUwOGU4MTBiZTVkOTNmNWQ2ZWYyOWJiMjczMjc4Li41YjY3
OGZmMDIyOWFmZDFlYWE0ZTQ4ZDIyNDA2ZTBmYjg0NDVkMjAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcApAQCAtOTcsOCArOTcsNiBAQCB2b2lkIEZl
dGNoTG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBG
ZXRjaFJlcXVlc3QmIHJlcQogICAgIEFTU0VSVChjb250ZXh0LmNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpKTsKICAgICBhdXRvJiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSAqY29udGV4dC5jb250ZW50
U2VjdXJpdHlQb2xpY3koKTsKIAotICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeS51cGdyYWRlSW5z
ZWN1cmVSZXF1ZXN0SWZOZWVkZWQoZmV0Y2hSZXF1ZXN0LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
Okluc2VjdXJlUmVxdWVzdFR5cGU6OkxvYWQpOwotCiAgICAgaWYgKCFjb250ZXh0LnNob3VsZEJ5
cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgpICYmICFjb250ZW50U2VjdXJpdHlQ
b2xpY3kuYWxsb3dDb25uZWN0VG9Tb3VyY2UoZmV0Y2hSZXF1ZXN0LnVybCgpKSkgewogICAgICAg
ICBtX2NsaWVudC5kaWRGYWlsKHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgZmV0Y2hS
ZXF1ZXN0LnVybCgpLCBBU0NJSUxpdGVyYWwoIk5vdCBhbGxvd2VkIGJ5IENvbnRlbnRTZWN1cml0
eVBvbGljeSIpLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOwogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwCmluZGV4IGQwMDJjMGIxODI2NDNlMTAyOGE5ZjRkOTYwOTE5ZDQ0ZTdlZjYxMmYuLmI5
N2I5M2RhMDU4YjM5ZjZkZWYxNzZjYTVlMGZiOWY1MDI1NGNmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0yMjksOCArMjI5LDYg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHIKICAgICBBU1NFUlQoY29udGV4dC5jb250ZW50U2Vj
dXJpdHlQb2xpY3koKSk7CiAgICAgYXV0byYgY29udGVudFNlY3VyaXR5UG9saWN5ID0gKmNvbnRl
eHQuY29udGVudFNlY3VyaXR5UG9saWN5KCk7CiAKLSAgICBjb250ZW50U2VjdXJpdHlQb2xpY3ku
dXBncmFkZUluc2VjdXJlUmVxdWVzdElmTmVlZGVkKG1fdXJsLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6Okluc2VjdXJlUmVxdWVzdFR5cGU6OkxvYWQpOwotCiAgICAgaWYgKCFwb3J0QWxsb3dlZCht
X3VybCkpIHsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2U7CiAgICAgICAgIGlmIChtX3VybC5wb3J0
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKaW5kZXggMWQ5MmU3NzVlOWYyYjg3MjY4YzEzY2YwYzgwMTEyOWQ2MjI5
ODYwOC4uNmQ1MmZiMmJjZmE5YjI4ODc3ZmIxYjYzOTJmN2M2ZDM2M2YwZDA5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcApAQCAtNjAsMTIgKzYwLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgU2Vj
b25kcyBUQ1BNYXhpbXVtU2VnbWVudExpZmV0aW1lIHsgMl9taW4gfTsKIAotV2ViU29ja2V0Q2hh
bm5lbDo6V2ViU29ja2V0Q2hhbm5lbChEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlNvY2tldENoYW5u
ZWxDbGllbnQmIGNsaWVudCwgU29ja2V0UHJvdmlkZXImIHByb3ZpZGVyKQorV2ViU29ja2V0Q2hh
bm5lbDo6V2ViU29ja2V0Q2hhbm5lbChEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlNvY2tldENoYW5u
ZWxDbGllbnQmIGNsaWVudCwgU29ja2V0UHJvdmlkZXImIHByb3ZpZGVyLCBzdGQ6OnVuaXF1ZV9w
dHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiYmIGNvbnRlbnRTZWN1cml0eVBvbGljeSkKICAgICA6
IG1fZG9jdW1lbnQoJmRvY3VtZW50KQogICAgICwgbV9jbGllbnQoJmNsaWVudCkKICAgICAsIG1f
cmVzdW1lVGltZXIoKnRoaXMsICZXZWJTb2NrZXRDaGFubmVsOjpyZXN1bWVUaW1lckZpcmVkKQog
ICAgICwgbV9jbG9zaW5nVGltZXIoKnRoaXMsICZXZWJTb2NrZXRDaGFubmVsOjpjbG9zaW5nVGlt
ZXJGaXJlZCkKICAgICAsIG1fc29ja2V0UHJvdmlkZXIocHJvdmlkZXIpCisgICAgLCBtX2NvbnRl
bnRTZWN1cml0eVBvbGljeShXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeSkpCiB7CiAgICAg
aWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCkpCiAgICAgICAgIG1faWRlbnRpZmllciA9
IHBhZ2UtPnByb2dyZXNzKCkuY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwpAQCAtNzgsMTEgKzc5
LDIyIEBAIFdlYlNvY2tldENoYW5uZWw6On5XZWJTb2NrZXRDaGFubmVsKCkKICAgICBMT0coTmV0
d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZHRvciIsIHRoaXMpOwogfQogCitjb25zdCBDb250
ZW50U2VjdXJpdHlQb2xpY3kmIFdlYlNvY2tldENoYW5uZWw6OmNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpIGNvbnN0Cit7CisgICAgaWYgKG1fY29udGVudFNlY3VyaXR5UG9saWN5KQorICAgICAgICBy
ZXR1cm4gKm1fY29udGVudFNlY3VyaXR5UG9saWN5LmdldCgpOworICAgIEFTU0VSVChtX2RvY3Vt
ZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSk7CisgICAgcmV0dXJuICptX2RvY3VtZW50LT5j
b250ZW50U2VjdXJpdHlQb2xpY3koKTsKK30KKwogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjb25u
ZWN0KGNvbnN0IFVSTCYgcmVxdWVzdGVkVVJMLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQogewog
ICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjb25uZWN0KCkiLCB0aGlzKTsK
IAogICAgIFVSTCB1cmwgPSByZXF1ZXN0ZWRVUkw7CisKKyAgICB0aGlzLT5jb250ZW50U2VjdXJp
dHlQb2xpY3koKS51cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQodXJsLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6Okluc2VjdXJlUmVxdWVzdFR5cGU6OkxvYWQpOworCiAgICAgYm9vbCBhbGxv
d0Nvb2tpZXMgPSB0cnVlOwogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgaWYg
KGF1dG8qIHBhZ2UgPSBtX2RvY3VtZW50LT5wYWdlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDExMzFlYTYx
MWY5NTIzYTcyMGZjNTQwNDI1M2NkNzA5YzBiODJhMGQuLjk3YTZjMzQ1ZDcxY2U0OTg4NWEyNWNi
YjYwNDY2ZjgyNGY2OTE4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBXZWJT
b2NrZXRDaGFubmVsIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0Q2hhbm5lbD4sIHB1Ymxp
YyBTb2NrZXRTdHJlYQogewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCYgY2xpZW50LCBTb2NrZXRQcm92aWRlciYgcHJvdmlk
ZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU29ja2V0Q2hhbm5lbChkb2N1bWVudCwgY2xp
ZW50LCBwcm92aWRlcikpOyB9CisgICAgc3RhdGljIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBjcmVh
dGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50JiBjbGllbnQsIFNv
Y2tldFByb3ZpZGVyJiBwcm92aWRlciwgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBv
bGljeT4mJiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSBudWxscHRyKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYlNvY2tldENoYW5uZWwoZG9jdW1lbnQsIGNsaWVudCwgcHJvdmlkZXIsIFdURk1v
dmUoY29udGVudFNlY3VyaXR5UG9saWN5KSkpOyB9CiAgICAgdmlydHVhbCB+V2ViU29ja2V0Q2hh
bm5lbCgpOwogCiAgICAgYm9vbCBpc1dlYlNvY2tldENoYW5uZWwoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CkBAIC0xMjgsNyArMTI4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGVy
ZWZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQogCiBw
cml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIFdlYlNvY2tldENoYW5uZWwoRG9jdW1lbnQmLCBX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50JiwgU29ja2V0UHJvdmlkZXImKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBXZWJTb2NrZXRDaGFubmVsKERvY3VtZW50JiwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCYs
IFNvY2tldFByb3ZpZGVyJiwgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4m
Jik7CiAKICAgICBib29sIGFwcGVuZFRvQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBs
ZW4pOwogICAgIHZvaWQgc2tpcEJ1ZmZlcihzaXplX3QgbGVuKTsKQEAgLTEzOSw2ICsxMzksOCBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBwcm9jZXNzRnJhbWUoKTsKIAorICAgIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeSYgY29udGVudFNlY3VyaXR5UG9saWN5KCkgY29uc3Q7CisKICAgICAv
LyBJdCBpcyBhbGxvd2VkIHRvIHNlbmQgYSBCbG9iIGFzIGEgYmluYXJ5IGZyYW1lIGlmIGh5Ymkt
MTAgcHJvdG9jb2wgaXMgaW4gdXNlLiBTZW5kaW5nIGEgQmxvYgogICAgIC8vIGNhbiBiZSBkZWxh
eWVkIGJlY2F1c2UgaXQgbXVzdCBiZSByZWFkIGFzeW5jaHJvbm91c2x5LiBPdGhlciB0eXBlcyBv
ZiBkYXRhIChTdHJpbmcgb3IKICAgICAvLyBBcnJheUJ1ZmZlcikgbWF5IGFsc28gYmUgYmxvY2tl
ZCBieSBwcmVjZWRpbmcgc2VuZGluZyByZXF1ZXN0IG9mIGEgQmxvYi4KQEAgLTIyMyw2ICsyMjUs
NyBAQCBwcml2YXRlOgogCiAgICAgV2ViU29ja2V0RGVmbGF0ZUZyYW1lciBtX2RlZmxhdGVGcmFt
ZXI7CiAgICAgUmVmPFNvY2tldFByb3ZpZGVyPiBtX3NvY2tldFByb3ZpZGVyOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggODQyMWIxNDU2OTk3MDY4ZmJjZmE0YzZkODA1MGJlODEy
MWU4N2QzNS4uMzhhM2FmMGU2ZDNlNTcxMGUyNjViYjBkOGQzMGEyODRlNDc3Yjg5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCIKIAogI2luY2x1
ZGUgIkJsb2IuaCIKKyNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNs
dWRlICJTb2NrZXRQcm92aWRlci5oIgpAQCAtMTM5LDEwICsxNDAsMTAgQEAgdm9pZCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6cmVzdW1lKCkKICAgICAgICAgbV9icmlkZ2UtPnJl
c3VtZSgpOwogfQogCi1Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6UGVl
cihSZWY8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiYmIGNsaWVudFdy
YXBwZXIsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgU29ja2V0UHJvdmlkZXImIHBy
b3ZpZGVyKQorV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OlBlZXIoUmVm
PFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4mJiBjbGllbnRXcmFwcGVy
LCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFNvY2tldFByb3ZpZGVyJiBwcm92aWRl
ciwgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4mJiBjb250ZW50U2VjdXJp
dHlQb2xpY3kpCiAgICAgOiBtX3dvcmtlckNsaWVudFdyYXBwZXIoV1RGTW92ZShjbGllbnRXcmFw
cGVyKSkKICAgICAsIG1fbG9hZGVyUHJveHkobG9hZGVyUHJveHkpCi0gICAgLCBtX21haW5XZWJT
b2NrZXRDaGFubmVsKFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4o
Y29udGV4dCksICp0aGlzLCBwcm92aWRlcikpCisgICAgLCBtX21haW5XZWJTb2NrZXRDaGFubmVs
KFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksICp0
aGlzLCBwcm92aWRlciwgV1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3kpKSkKICAgICAsIG1f
dGFza01vZGUodGFza01vZGUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTM1
MiwxNCArMzUzLDE0IEBAIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6
On5CcmlkZ2UoKQogICAgIGRpc2Nvbm5lY3QoKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkSW5pdGlhbGl6ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFJl
ZjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+JiYgY2xpZW50V3JhcHBl
ciwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVmPFNvY2tldFByb3ZpZGVyPiYmIHByb3ZpZGVy
KQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhy
ZWFkSW5pdGlhbGl6ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrZXJMb2Fk
ZXJQcm94eSYgbG9hZGVyUHJveHksIFJlZjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXI+JiYgY2xpZW50V3JhcHBlciwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVmPFNv
Y2tldFByb3ZpZGVyPiYmIHByb3ZpZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5
UG9saWN5PiYmIGNvbnRlbnRTZWN1cml0eVBvbGljeSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgIEFTU0VSVChjb250ZXh0LmlzRG9jdW1lbnQoKSk7CiAKICAgICBib29sIHNl
bnQgPSBsb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKHsKICAg
ICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6Q2xlYW51cFRhc2ssCi0gICAgICAg
IFtjbGllbnRXcmFwcGVyID0gY2xpZW50V3JhcHBlci5jb3B5UmVmKCksICZsb2FkZXJQcm94eSwg
cGVlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGVlcj4oY2xpZW50V3JhcHBlci5jb3B5UmVmKCksIGxv
YWRlclByb3h5LCBjb250ZXh0LCB0YXNrTW9kZSwgV1RGTW92ZShwcm92aWRlcikpXShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgW2NsaWVudFdyYXBw
ZXIgPSBjbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwgJmxvYWRlclByb3h5LCBwZWVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxQZWVyPihjbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwgbG9hZGVyUHJveHksIGNv
bnRleHQsIHRhc2tNb2RlLCBXVEZNb3ZlKHByb3ZpZGVyKSwgV1RGTW92ZShjb250ZW50U2VjdXJp
dHlQb2xpY3kpKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxT
Y29wZSgpKTsKICAgICAgICAgICAgIGlmIChjbGllbnRXcmFwcGVyLT5mYWlsZWRXZWJTb2NrZXRD
aGFubmVsQ3JlYXRpb24oKSkgewogICAgICAgICAgICAgICAgIC8vIElmIEJyaWRnZTo6aW5pdGlh
bGl6ZSgpIHF1aXR0ZWQgZWFybGllciwgd2UgbmVlZCB0byBraWNrIG1haW5UaHJlYWREZXN0cm95
KCkgdG8gZGVsZXRlIHRoZSBwZWVyLgpAQCAtMzgyLDggKzM4MywxOSBAQCB2b2lkIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmluaXRpYWxpemUoKQogICAgIHNldE1l
dGhvZE5vdENvbXBsZXRlZCgpOwogICAgIFJlZjxCcmlkZ2U+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwogCi0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFsmbG9hZGVyUHJveHkgPSBt
X2xvYWRlclByb3h5LCB3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVy
LmNvcHlSZWYoKSwgdGFza01vZGUgPSBtX3Rhc2tNb2RlLmlzb2xhdGVkQ29weSgpLCBwcm92aWRl
ciA9IG1fc29ja2V0UHJvdmlkZXIuY29weVJlZigpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgbWFpblRocmVhZEluaXRpYWxpemUoY29udGV4dCwg
bG9hZGVyUHJveHksIFdURk1vdmUod29ya2VyQ2xpZW50V3JhcHBlciksIHRhc2tNb2RlLCBXVEZN
b3ZlKHByb3ZpZGVyKSk7CisgICAgYXV0byogc2VjdXJpdHlPcmlnaW4gPSBtX3dvcmtlckdsb2Jh
bFNjb3BlLT5zZWN1cml0eU9yaWdpbigpOworICAgIGF1dG8qIGNvbnRlbnRTZWN1cml0eVBvbGlj
eSA9IG1fd29ya2VyR2xvYmFsU2NvcGUtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpOworCisgICAg
QVNTRVJUKHNlY3VyaXR5T3JpZ2luKTsKKyAgICBBU1NFUlQoY29udGVudFNlY3VyaXR5UG9saWN5
KTsKKworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW5Db3B5ID0gc2VjdXJpdHlPcmlnaW4tPmlzb2xh
dGVkQ29weSgpOworICAgIGF1dG8gY29udGVudFNlY3VyaXR5UG9saWN5Q29weSA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihzZWN1cml0eU9yaWdpbkNvcHkpOworICAg
IGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHktPmNvcHlTdGF0ZUZyb20oY29udGVudFNlY3VyaXR5
UG9saWN5KTsKKyAgICBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5LT5jb3B5VXBncmFkZUluc2Vj
dXJlUmVxdWVzdFN0YXRlRnJvbSgqY29udGVudFNlY3VyaXR5UG9saWN5KTsKKworICAgIG1fbG9h
ZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbJmxvYWRlclByb3h5ID0gbV9sb2FkZXJQcm94eSwg
d29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5jb3B5UmVmKCksIHRh
c2tNb2RlID0gbV90YXNrTW9kZS5pc29sYXRlZENvcHkoKSwgcHJvdmlkZXIgPSBtX3NvY2tldFBy
b3ZpZGVyLmNvcHlSZWYoKSwgY29udGVudFNlY3VyaXR5UG9saWN5Q29weSA9IFdURk1vdmUoY29u
dGVudFNlY3VyaXR5UG9saWN5Q29weSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IG11dGFibGUgeworICAgICAgICBtYWluVGhyZWFkSW5pdGlhbGl6ZShjb250ZXh0LCBsb2FkZXJQ
cm94eSwgV1RGTW92ZSh3b3JrZXJDbGllbnRXcmFwcGVyKSwgdGFza01vZGUsIFdURk1vdmUocHJv
dmlkZXIpLCBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkpKTsKICAgICB9KTsKICAg
ICB3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5oCmluZGV4IDgxMmY4YTAyZDMwYTE2ODNjZTk0Njg0Zjg3MTAyMGU2YmJiOTlk
MTguLjQ4N2I5ZDhhYTQ0NWNlMTUzZGZhZTk5NjZlODY0MGY5NGYzNGZmNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoK
ICAgICBjbGFzcyBQZWVyIDogcHVibGljIFdlYlNvY2tldENoYW5uZWxDbGllbnQgewogICAgICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShQZWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgcHVibGljOgotICAgICAgICBQZWVyKFJlZjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXI+JiYsIFdvcmtlckxvYWRlclByb3h5JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFNvY2tldFByb3ZpZGVyJik7CisgICAgICAgIFBl
ZXIoUmVmPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4mJiwgV29ya2Vy
TG9hZGVyUHJveHkmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiB0YXNr
TW9kZSwgU29ja2V0UHJvdmlkZXImLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9s
aWN5PiYmKTsKICAgICAgICAgflBlZXIoKTsKIAogICAgICAgICB2b2lkIGNvbm5lY3QoY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CkBAIC0xNDIsNyArMTQyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgc3RhdGljIHZvaWQgc2V0V2ViU29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgQnJpZGdlKiB0aGlzUHRyLCBQZWVyKiwgUmVmPFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4mJik7CiAKICAgICAgICAgLy8gRXhlY3V0ZWQgb24gdGhl
IG1haW4gdGhyZWFkIHRvIGNyZWF0ZSBhIFBlZXIgZm9yIHRoaXMgYnJpZGdlLgotICAgICAgICBz
dGF0aWMgdm9pZCBtYWluVGhyZWFkSW5pdGlhbGl6ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
V29ya2VyTG9hZGVyUHJveHkmLCBSZWY8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyPiYmLCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZWY8U29ja2V0UHJvdmlkZXI+JiYp
OworICAgICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkSW5pdGlhbGl6ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgV29ya2VyTG9hZGVyUHJveHkmLCBSZWY8VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyPiYmLCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZWY8U29ja2V0
UHJvdmlkZXI+JiYsIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+JiYpOwog
CiAgICAgICAgIC8vIEV4ZWN1dGVkIG9uIHRoZSB3b3JrZXIgY29udGV4dCdzIHRocmVhZC4KICAg
ICAgICAgdm9pZCBjbGVhckNsaWVudFdyYXBwZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggNTAyMDAwZmJlNmM5ZmNm
ZGY2ZDBkNjAwZmZjOTNiODIwOTVjMzljYS4uZGJhOTA0MjNkNTJiZjY3ZGRkMzZhMjUwMDUyMTE3
YmZlNzRkYTE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDYgQEAgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBUaHJlYWRh
YmwKICAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQogICAgICwgbV9vcmlnaW4oV1RGTW92ZShvcmln
aW4pKQogICAgICwgbV9yZWZlcnJlcihXVEZNb3ZlKHJlZmVycmVyKSkKLSAgICAsIG1fc2FtZU9y
aWdpblJlcXVlc3Qoc2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHJlcXVlc3QudXJsKCkpKQog
ICAgICwgbV9zaW1wbGVSZXF1ZXN0KHRydWUpCiAgICAgLCBtX2FzeW5jKGJsb2NraW5nQmVoYXZp
b3IgPT0gTG9hZEFzeW5jaHJvbm91c2x5KQogICAgICwgbV9kZWxheUNhbGxiYWNrc0ZvckludGVn
cml0eUNoZWNrKCFtX29wdGlvbnMuaW50ZWdyaXR5LmlzRW1wdHkoKSkKQEAgLTEwMyw2ICsxMDIs
MTMgQEAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIo
RG9jdW1lbnQmIGRvY3VtZW50LCBUaHJlYWRhYmwKIHsKICAgICByZWxheEFkb3B0aW9uUmVxdWly
ZW1lbnQoKTsKIAorICAgIFVSTCB1cmwgPSByZXF1ZXN0LnVybCgpOworICAgIHRoaXMtPmNvbnRl
bnRTZWN1cml0eVBvbGljeSgpLnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZCh1cmwsIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TG9hZCk7CisgICAgaWYg
KHVybCAhPSByZXF1ZXN0LnVybCgpKQorICAgICAgICByZXF1ZXN0LnNldFVSTCh1cmwpOworCisg
ICAgbV9zYW1lT3JpZ2luUmVxdWVzdCA9IHNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdChyZXF1
ZXN0LnVybCgpKTsKKwogICAgIC8vIFNldHRpbmcgYSByZWZlcnJlciBoZWFkZXIgaXMgb25seSBz
dXBwb3J0ZWQgaW4gdGhlIGFzeW5jIGNvZGUgcGF0aC4KICAgICBBU1NFUlQobV9hc3luYyB8fCBt
X3JlZmVycmVyLmlzRW1wdHkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IGFlNjJhMWY1NGRkY2RlZWIyZGEzZjgwZTQx
NTE3OTM1ZDYzNjZjYTkuLjhmYTA0OWRlMThiMWJlYjE4ZTE4YjI2MDc0ZTVkZjI5ZThlMGMwYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
LmNwcApAQCAtODIwLDYgKzgyMCw4IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojp1cGdy
YWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1CiAKIHZvaWQg
Q29udGVudFNlY3VyaXR5UG9saWN5Ojp1cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQoVVJM
JiB1cmwsIEluc2VjdXJlUmVxdWVzdFR5cGUgcmVxdWVzdFR5cGUpIGNvbnN0CiB7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKwogICAgIGlmICghdXJsLnByb3RvY29sSXMoImh0dHAiKSAm
JiAhdXJsLnByb3RvY29sSXMoIndzIikpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggOTFmYmI3MmZkY2JkNzgzZDAzMmJkNjljYmRhN2Q5
OTlkOTYyMWRjYy4uZWQyMzQxZWZiMjFhMDdkMTUyNTkxMWUyYTQyOWFjMzQzMTgxY2I5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0zNzEsOCArMzcxLDYgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2Qs
IGNvbnN0IFVSTCYgdXJsLCBib28KICAgICBtX21ldGhvZCA9IG5vcm1hbGl6ZUhUVFBNZXRob2Qo
bWV0aG9kKTsKIAogICAgIG1fdXJsID0gdXJsOwotICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRl
ZChtX3VybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpJbnNlY3VyZVJlcXVlc3RUeXBlOjpMb2Fk
KTsKLQogICAgIG1fYXN5bmMgPSBhc3luYzsKIAogICAgIEFTU0VSVCghbV9sb2FkZXIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336626</attachid>
            <date>2018-03-27 15:45:49 -0700</date>
            <delta_ts>2018-03-27 16:22:08 -0700</delta_ts>
            <desc>Alternative patch using SecurityOriginData</desc>
            <filename>184029_using_SecurityOriginData.patch</filename>
            <type>text/plain</type>
            <size>6091</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4ZTg1N2Y3OTVmMi4uMjZkNmUwMGE2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxOC0wMy0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gY2FsbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZCgpIGZyb20gbm9uLW1haW4gdGhyZWFkcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MDI5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBpdCBw
b3NzaWJsZSB0byBjYWxsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6dXBncmFkZUluc2VjdXJlUmVx
dWVzdElmTmVlZGVkKCkgZnJvbSBub24tbWFpbiB0aHJlYWRzCisgICAgICAgIGJ5IGhhdmluZyBp
dCB1c2UgU2VjdXJpdHlPcmlnaW5EYXRhICh3aGljaCBpcyBzYWZlIHRvIGNvbnN0cnVjdCBvbiBu
b24tbWFpbiB0aHJlYWRzKSBpbnN0ZWFkIG9mCisgICAgICAgIFNlY3VyaXR5T3JpZ2luICh3aGlj
aCBpc24ndCkuCisKKyAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5Ojp1cGdyYWRlSW5zZWN1
cmVSZXF1ZXN0SWZOZWVkZWQoKSBpcyBhbHJlYWR5IGNhbGxlZCBmcm9tIG5vbi1tYWluIHRocmVh
ZCBpbgorICAgICAgICBGZXRjaExvYWRlciwgWEhSIGFuZCBXZWJTb2NrZXQgd2hlbiB1c2VkIGlu
IHdvcmtlcnMuIFRoaXMgd2Fzbid0IHNhZmUuCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRX
cml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXI6OmJlZ2luKToKKyAg
ICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Ojp1cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVk
ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjpzZXRV
cGdyYWRlSW5zZWN1cmVSZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3k6OnRha2VOYXZpZ2F0aW9uUmVxdWVzdHNUb1VwZ3JhZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjpzZXRJbnNlY3VyZU5hdmlnYXRpb25SZXF1ZXN0
c1RvVXBncmFkZSk6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg6
CisKIDIwMTgtMDMtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBBdm9pZCBjb25zdHJ1Y3RpbmcgU2VjdXJpdHlPcmlnaW4gb2JqZWN0cyBmcm9tIG5vbi1tYWlu
IHRocmVhZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCmluZGV4IDBl
OWZhZjRkYjAyLi5hNTRhZmIwY2NjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRX
cml0ZXIuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgYm9vbCBEb2N1bWVudFdyaXRlcjo6YmVnaW4o
Y29uc3QgVVJMJiB1cmxSZWZlcmVuY2UsIGJvb2wgZGlzcGF0Y2gsIERvY3VtZW50KiBvd24KICAg
ICAvLyByZXF1ZXN0cyBpbiBuZXcgbmF2aWdhdGlvbiBjb250ZXh0cy4gQWx0aG91Z2ggdGhpcyBp
bmZvcm1hdGlvbiBpcyBwcmVzZW50IHdoZW4gd2UgY29uc3RydWN0IHRoZQogICAgIC8vIERvY3Vt
ZW50IG9iamVjdCwgaXQgaXMgZGlzY2FyZCBpbiB0aGUgc3Vic2VxdWVudCAnY2xlYXInIHN0YXRl
bWVudHMgYmVsb3cuIFNvLCB3ZSBtdXN0IGNhcHR1cmUgaXQKICAgICAvLyBzbyB3ZSBjYW4gcmVz
dG9yZSBpdC4KLSAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IGluc2VjdXJlTmF2
aWdhdGlvblJlcXVlc3RzVG9VcGdyYWRlOworICAgIEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRh
PiBpbnNlY3VyZU5hdmlnYXRpb25SZXF1ZXN0c1RvVXBncmFkZTsKICAgICBpZiAoYXV0byogZXhp
c3RpbmdEb2N1bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgIGluc2VjdXJlTmF2
aWdhdGlvblJlcXVlc3RzVG9VcGdyYWRlID0gZXhpc3RpbmdEb2N1bWVudC0+Y29udGVudFNlY3Vy
aXR5UG9saWN5KCktPnRha2VOYXZpZ2F0aW9uUmVxdWVzdHNUb1VwZ3JhZGUoKTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmlu
ZGV4IGFlNjJhMWY1NGRkLi42M2M3ZjUxMDRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC04MjMsNyArODIzLDcgQEAgdm9p
ZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChV
UkwmIHVybCwgSW5zZWN1cmVSZXEKICAgICBpZiAoIXVybC5wcm90b2NvbElzKCJodHRwIikgJiYg
IXVybC5wcm90b2NvbElzKCJ3cyIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIHVwZ3Jh
ZGVSZXF1ZXN0ID0gbV9pbnNlY3VyZU5hdmlnYXRpb25SZXF1ZXN0c1RvVXBncmFkZS5jb250YWlu
cyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCkpOworICAgIGJvb2wgdXBncmFkZVJlcXVlc3Qg
PSBtX2luc2VjdXJlTmF2aWdhdGlvblJlcXVlc3RzVG9VcGdyYWRlLmNvbnRhaW5zKFNlY3VyaXR5
T3JpZ2luRGF0YTo6ZnJvbVVSTCh1cmwpKTsKICAgICBpZiAocmVxdWVzdFR5cGUgPT0gSW5zZWN1
cmVSZXF1ZXN0VHlwZTo6TG9hZCB8fCByZXF1ZXN0VHlwZSA9PSBJbnNlY3VyZVJlcXVlc3RUeXBl
OjpGb3JtU3VibWlzc2lvbikKICAgICAgICAgdXBncmFkZVJlcXVlc3QgfD0gbV91cGdyYWRlSW5z
ZWN1cmVSZXF1ZXN0czsKICAgICAKQEAgLTg1OCw3ICs4NTgsNyBAQCB2b2lkIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6c2V0VXBncmFkZUluc2VjdXJlUmVxdWVzdHMoYm9vbCB1cGdyYWRlSW5zZWN1
cmVSZXF1ZQogICAgIGVsc2UgaWYgKHVwZ3JhZGVVUkwucHJvdG9jb2xJcygid3NzIikpCiAgICAg
ICAgIHVwZ3JhZGVVUkwuc2V0UHJvdG9jb2woIndzIik7CiAgICAgCi0gICAgbV9pbnNlY3VyZU5h
dmlnYXRpb25SZXF1ZXN0c1RvVXBncmFkZS5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cGdy
YWRlVVJMKSk7CisgICAgbV9pbnNlY3VyZU5hdmlnYXRpb25SZXF1ZXN0c1RvVXBncmFkZS5hZGQo
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKHVwZ3JhZGVVUkwpKTsKIH0KIAogdm9pZCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmluaGVyaXRJbnNlY3VyZU5hdmlnYXRpb25SZXF1ZXN0c1RvVXBn
cmFkZUZyb21PcGVuZXIoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5JiBvdGhlcikKQEAgLTg2
NiwxMiArODY2LDEyIEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojppbmhlcml0SW5zZWN1
cmVOYXZpZ2F0aW9uUmVxdWVzdHNUb1VwZ3JhZGVGcm9tT3BlbmVyCiAgICAgbV9pbnNlY3VyZU5h
dmlnYXRpb25SZXF1ZXN0c1RvVXBncmFkZS5hZGQob3RoZXIubV9pbnNlY3VyZU5hdmlnYXRpb25S
ZXF1ZXN0c1RvVXBncmFkZS5iZWdpbigpLCBvdGhlci5tX2luc2VjdXJlTmF2aWdhdGlvblJlcXVl
c3RzVG9VcGdyYWRlLmVuZCgpKTsKIH0KIAotSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
PiYmIENvbnRlbnRTZWN1cml0eVBvbGljeTo6dGFrZU5hdmlnYXRpb25SZXF1ZXN0c1RvVXBncmFk
ZSgpCitIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4mJiBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OnRha2VOYXZpZ2F0aW9uUmVxdWVzdHNUb1VwZ3JhZGUoKQogewogICAgIHJldHVybiBXVEZNb3Zl
KG1faW5zZWN1cmVOYXZpZ2F0aW9uUmVxdWVzdHNUb1VwZ3JhZGUpOwogfQogCi12b2lkIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6c2V0SW5zZWN1cmVOYXZpZ2F0aW9uUmVxdWVzdHNUb1VwZ3JhZGUo
SGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYmIGluc2VjdXJlTmF2aWdhdGlvblJlcXVl
c3RzKQordm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnNldEluc2VjdXJlTmF2aWdhdGlvblJl
cXVlc3RzVG9VcGdyYWRlKEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYmIGluc2VjdXJlTmF2
aWdhdGlvblJlcXVlc3RzKQogewogICAgIG1faW5zZWN1cmVOYXZpZ2F0aW9uUmVxdWVzdHNUb1Vw
Z3JhZGUgPSBXVEZNb3ZlKGluc2VjdXJlTmF2aWdhdGlvblJlcXVlc3RzKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKaW5kZXggZmJkOGQz
OWZlZTguLmI4MzE5OWIzM2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3kuaApAQCAtMTY0LDkgKzE2NCw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IHVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChSZXNvdXJjZVJlcXVlc3QmLCBJbnNlY3Vy
ZVJlcXVlc3RUeXBlKSBjb25zdDsKICAgICB2b2lkIHVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5l
ZWRlZChVUkwmLCBJbnNlY3VyZVJlcXVlc3RUeXBlKSBjb25zdDsKIAotICAgIEhhc2hTZXQ8UmVm
UHRyPFNlY3VyaXR5T3JpZ2luPj4mJiB0YWtlTmF2aWdhdGlvblJlcXVlc3RzVG9VcGdyYWRlKCk7
CisgICAgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+JiYgdGFrZU5hdmlnYXRpb25SZXF1ZXN0
c1RvVXBncmFkZSgpOwogICAgIHZvaWQgaW5oZXJpdEluc2VjdXJlTmF2aWdhdGlvblJlcXVlc3Rz
VG9VcGdyYWRlRnJvbU9wZW5lcihjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmKTsKLSAgICB2
b2lkIHNldEluc2VjdXJlTmF2aWdhdGlvblJlcXVlc3RzVG9VcGdyYWRlKEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4mJik7CisgICAgdm9pZCBzZXRJbnNlY3VyZU5hdmlnYXRpb25SZXF1
ZXN0c1RvVXBncmFkZShIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4mJik7CiAKIHByaXZhdGU6
CiAgICAgdm9pZCBsb2dUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGNvbnRleHRVUkwgPSBTdHJpbmcoKSwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250
ZXh0TGluZSA9IFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgSlNDOjpFeGVjU3Rh
dGUqID0gbnVsbHB0cikgY29uc3Q7CkBAIC0yMTgsNyArMjE4LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1faGFzQVBJUG9saWN5IHsgZmFsc2UgfTsKICAgICBPcHRpb25TZXQ8Q29udGVudFNlY3Vy
aXR5UG9saWN5SGFzaEFsZ29yaXRobT4gbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHM7
CiAgICAgT3B0aW9uU2V0PENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG0+IG1faGFz
aEFsZ29yaXRobXNGb3JJbmxpbmVTdHlsZXNoZWV0czsKLSAgICBIYXNoU2V0PFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4+IG1faW5zZWN1cmVOYXZpZ2F0aW9uUmVxdWVzdHNUb1VwZ3JhZGU7CisgICAg
SGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IG1faW5zZWN1cmVOYXZpZ2F0aW9uUmVxdWVzdHNU
b1VwZ3JhZGU7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycz4gbV9jYWNoZWRSZXNwb25zZUhlYWRlcnM7CiB9OwogCg==
</data>
<flag name="review"
          id="355148"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336629</attachid>
            <date>2018-03-27 16:22:08 -0700</date>
            <delta_ts>2018-03-27 17:12:36 -0700</delta_ts>
            <desc>Alternative patch using SecurityOriginData</desc>
            <filename>184029_using_SecurityOriginData.patch</filename>
            <type>text/plain</type>
            <size>6072</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkYTczMjExZTNlMi4uMTMyOTI3OWQ3MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxOC0wMy0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gY2FsbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZCgpIGZyb20gbm9uLW1haW4gdGhyZWFkcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MDI5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBNYWtlIGl0IHBv
c3NpYmxlIHRvIGNhbGwgQ29udGVudFNlY3VyaXR5UG9saWN5Ojp1cGdyYWRlSW5zZWN1cmVSZXF1
ZXN0SWZOZWVkZWQoKSBmcm9tIG5vbi1tYWluIHRocmVhZHMKKyAgICAgICAgYnkgaGF2aW5nIGl0
IHVzZSBTZWN1cml0eU9yaWdpbkRhdGEgKHdoaWNoIGlzIHNhZmUgdG8gY29uc3RydWN0IG9uIG5v
bi1tYWluIHRocmVhZHMpIGluc3RlYWQgb2YKKyAgICAgICAgU2VjdXJpdHlPcmlnaW4gKHdoaWNo
IGlzbid0KS4KKworICAgICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnVwZ3JhZGVJbnNlY3Vy
ZVJlcXVlc3RJZk5lZWRlZCgpIGlzIGFscmVhZHkgY2FsbGVkIGZyb20gbm9uLW1haW4gdGhyZWFk
IGluCisgICAgICAgIEZldGNoTG9hZGVyLCBYSFIgYW5kIFdlYlNvY2tldCB3aGVuIHVzZWQgaW4g
d29ya2Vycy4gVGhpcyB3YXNuJ3Qgc2FmZS4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdy
aXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6YmVnaW4pOgorICAg
ICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRl
ZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OnNldFVw
Z3JhZGVJbnNlY3VyZVJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0
eVBvbGljeTo6dGFrZU5hdmlnYXRpb25SZXF1ZXN0c1RvVXBncmFkZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OnNldEluc2VjdXJlTmF2aWdhdGlvblJlcXVlc3Rz
VG9VcGdyYWRlKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaDoK
KwogMjAxOC0wMy0yNyAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtXZWJBdXRoTl0gSW1wbGVtZW50IGF1dGhlbnRpY2F0b3JHZXRBc3NlcnRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCmluZGV4IDBlOWZhZjRkYjAyLi5hNTRh
ZmIwY2NjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCkBAIC0x
NTUsNyArMTU1LDcgQEAgYm9vbCBEb2N1bWVudFdyaXRlcjo6YmVnaW4oY29uc3QgVVJMJiB1cmxS
ZWZlcmVuY2UsIGJvb2wgZGlzcGF0Y2gsIERvY3VtZW50KiBvd24KICAgICAvLyByZXF1ZXN0cyBp
biBuZXcgbmF2aWdhdGlvbiBjb250ZXh0cy4gQWx0aG91Z2ggdGhpcyBpbmZvcm1hdGlvbiBpcyBw
cmVzZW50IHdoZW4gd2UgY29uc3RydWN0IHRoZQogICAgIC8vIERvY3VtZW50IG9iamVjdCwgaXQg
aXMgZGlzY2FyZCBpbiB0aGUgc3Vic2VxdWVudCAnY2xlYXInIHN0YXRlbWVudHMgYmVsb3cuIFNv
LCB3ZSBtdXN0IGNhcHR1cmUgaXQKICAgICAvLyBzbyB3ZSBjYW4gcmVzdG9yZSBpdC4KLSAgICBI
YXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IGluc2VjdXJlTmF2aWdhdGlvblJlcXVlc3Rz
VG9VcGdyYWRlOworICAgIEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiBpbnNlY3VyZU5hdmln
YXRpb25SZXF1ZXN0c1RvVXBncmFkZTsKICAgICBpZiAoYXV0byogZXhpc3RpbmdEb2N1bWVudCA9
IG1fZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgIGluc2VjdXJlTmF2aWdhdGlvblJlcXVlc3Rz
VG9VcGdyYWRlID0gZXhpc3RpbmdEb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPnRh
a2VOYXZpZ2F0aW9uUmVxdWVzdHNUb1VwZ3JhZGUoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IGFlNjJhMWY1NGRk
Li4wYzIwMzZmNzZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC04MjMsNyArODIzLDcgQEAgdm9pZCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChVUkwmIHVybCwgSW5zZWN1
cmVSZXEKICAgICBpZiAoIXVybC5wcm90b2NvbElzKCJodHRwIikgJiYgIXVybC5wcm90b2NvbElz
KCJ3cyIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIHVwZ3JhZGVSZXF1ZXN0ID0gbV9p
bnNlY3VyZU5hdmlnYXRpb25SZXF1ZXN0c1RvVXBncmFkZS5jb250YWlucyhTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKHVybCkpOworICAgIGJvb2wgdXBncmFkZVJlcXVlc3QgPSBtX2luc2VjdXJlTmF2
aWdhdGlvblJlcXVlc3RzVG9VcGdyYWRlLmNvbnRhaW5zKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bVVSTCh1cmwpKTsKICAgICBpZiAocmVxdWVzdFR5cGUgPT0gSW5zZWN1cmVSZXF1ZXN0VHlwZTo6
TG9hZCB8fCByZXF1ZXN0VHlwZSA9PSBJbnNlY3VyZVJlcXVlc3RUeXBlOjpGb3JtU3VibWlzc2lv
bikKICAgICAgICAgdXBncmFkZVJlcXVlc3QgfD0gbV91cGdyYWRlSW5zZWN1cmVSZXF1ZXN0czsK
ICAgICAKQEAgLTg1OCw3ICs4NTgsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6c2V0
VXBncmFkZUluc2VjdXJlUmVxdWVzdHMoYm9vbCB1cGdyYWRlSW5zZWN1cmVSZXF1ZQogICAgIGVs
c2UgaWYgKHVwZ3JhZGVVUkwucHJvdG9jb2xJcygid3NzIikpCiAgICAgICAgIHVwZ3JhZGVVUkwu
c2V0UHJvdG9jb2woIndzIik7CiAgICAgCi0gICAgbV9pbnNlY3VyZU5hdmlnYXRpb25SZXF1ZXN0
c1RvVXBncmFkZS5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cGdyYWRlVVJMKSk7CisgICAg
bV9pbnNlY3VyZU5hdmlnYXRpb25SZXF1ZXN0c1RvVXBncmFkZS5hZGQoU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tVVJMKHVwZ3JhZGVVUkwpKTsKIH0KIAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmluaGVyaXRJbnNlY3VyZU5hdmlnYXRpb25SZXF1ZXN0c1RvVXBncmFkZUZyb21PcGVuZXIo
Y29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5JiBvdGhlcikKQEAgLTg2NiwxMiArODY2LDEyIEBA
IHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojppbmhlcml0SW5zZWN1cmVOYXZpZ2F0aW9uUmVx
dWVzdHNUb1VwZ3JhZGVGcm9tT3BlbmVyCiAgICAgbV9pbnNlY3VyZU5hdmlnYXRpb25SZXF1ZXN0
c1RvVXBncmFkZS5hZGQob3RoZXIubV9pbnNlY3VyZU5hdmlnYXRpb25SZXF1ZXN0c1RvVXBncmFk
ZS5iZWdpbigpLCBvdGhlci5tX2luc2VjdXJlTmF2aWdhdGlvblJlcXVlc3RzVG9VcGdyYWRlLmVu
ZCgpKTsKIH0KIAotSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYmIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6dGFrZU5hdmlnYXRpb25SZXF1ZXN0c1RvVXBncmFkZSgpCitIYXNoU2V0PFNl
Y3VyaXR5T3JpZ2luRGF0YT4gQ29udGVudFNlY3VyaXR5UG9saWN5Ojp0YWtlTmF2aWdhdGlvblJl
cXVlc3RzVG9VcGdyYWRlKCkKIHsKICAgICByZXR1cm4gV1RGTW92ZShtX2luc2VjdXJlTmF2aWdh
dGlvblJlcXVlc3RzVG9VcGdyYWRlKTsKIH0KIAotdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OnNldEluc2VjdXJlTmF2aWdhdGlvblJlcXVlc3RzVG9VcGdyYWRlKEhhc2hTZXQ8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj4mJiBpbnNlY3VyZU5hdmlnYXRpb25SZXF1ZXN0cykKK3ZvaWQgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpzZXRJbnNlY3VyZU5hdmlnYXRpb25SZXF1ZXN0c1RvVXBncmFkZShI
YXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4mJiBpbnNlY3VyZU5hdmlnYXRpb25SZXF1ZXN0cykK
IHsKICAgICBtX2luc2VjdXJlTmF2aWdhdGlvblJlcXVlc3RzVG9VcGdyYWRlID0gV1RGTW92ZShp
bnNlY3VyZU5hdmlnYXRpb25SZXF1ZXN0cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCmluZGV4IGZiZDhkMzlmZWU4Li42NjlhOGZmZTQw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
LmgKQEAgLTE2NCw5ICsxNjQsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGdyYWRlSW5zZWN1cmVS
ZXF1ZXN0SWZOZWVkZWQoUmVzb3VyY2VSZXF1ZXN0JiwgSW5zZWN1cmVSZXF1ZXN0VHlwZSkgY29u
c3Q7CiAgICAgdm9pZCB1cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQoVVJMJiwgSW5zZWN1
cmVSZXF1ZXN0VHlwZSkgY29uc3Q7CiAKLSAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4+JiYgdGFrZU5hdmlnYXRpb25SZXF1ZXN0c1RvVXBncmFkZSgpOworICAgIEhhc2hTZXQ8U2Vj
dXJpdHlPcmlnaW5EYXRhPiB0YWtlTmF2aWdhdGlvblJlcXVlc3RzVG9VcGdyYWRlKCk7CiAgICAg
dm9pZCBpbmhlcml0SW5zZWN1cmVOYXZpZ2F0aW9uUmVxdWVzdHNUb1VwZ3JhZGVGcm9tT3BlbmVy
KGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSYpOwotICAgIHZvaWQgc2V0SW5zZWN1cmVOYXZp
Z2F0aW9uUmVxdWVzdHNUb1VwZ3JhZGUoSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYm
KTsKKyAgICB2b2lkIHNldEluc2VjdXJlTmF2aWdhdGlvblJlcXVlc3RzVG9VcGdyYWRlKEhhc2hT
ZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGxvZ1RvQ29u
c29sZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCA9IFN0
cmluZygpLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lID0gV1RGOjpPcmRp
bmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBKU0M6OkV4ZWNTdGF0ZSogPSBudWxscHRyKSBjb25z
dDsKQEAgLTIxOCw3ICsyMTgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNBUElQb2xpY3kg
eyBmYWxzZSB9OwogICAgIE9wdGlvblNldDxDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3Jp
dGhtPiBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU2NyaXB0czsKICAgICBPcHRpb25TZXQ8Q29u
dGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobT4gbV9oYXNoQWxnb3JpdGhtc0ZvcklubGlu
ZVN0eWxlc2hlZXRzOwotICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gbV9pbnNl
Y3VyZU5hdmlnYXRpb25SZXF1ZXN0c1RvVXBncmFkZTsKKyAgICBIYXNoU2V0PFNlY3VyaXR5T3Jp
Z2luRGF0YT4gbV9pbnNlY3VyZU5hdmlnYXRpb25SZXF1ZXN0c1RvVXBncmFkZTsKICAgICBtdXRh
YmxlIHN0ZDo6b3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBt
X2NhY2hlZFJlc3BvbnNlSGVhZGVyczsKIH07CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>