<?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>187435</bug_id>
          
          <creation_ts>2018-07-07 10:30:09 -0700</creation_ts>
          <short_desc>&quot;serviceworker.js&quot; is fetched several times in a row</short_desc>
          <delta_ts>2018-07-10 18:57:45 -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>Safari 11</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>iOS 11</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="N">hendrex.jakai</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1440138</commentid>
    <comment_count>0</comment_count>
    <who name="N">hendrex.jakai</who>
    <bug_when>2018-07-07 10:30:09 -0700</bug_when>
    <thetext>I enabled an Apache module that will block IPs that send several requests to my website in a very short time.

I noticed that a number of IPs were blocked straight away, and all of those users use Safari on iOS.

After a quick investigation, I saw that those users were requesting &quot;serviceworker.js&quot; several times. I believe this is a bug and this file should only be fetched once.



Example access logs below:

07/Jul/2018 17:02:51	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:51	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:51	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:51	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:51	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:52	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:52	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:52	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:52	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:52	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:52	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:52	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:52	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:52	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:52	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:53	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:53	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:53	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:53	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:53	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:53	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:53	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:53	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:53	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:53	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:53	GET	HTTP/1.1	403	815	/serviceworker.js?v=29
07/Jul/2018 17:02:54	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:54	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29
07/Jul/2018 17:02:54	GET	HTTP/1.1	200	1718	/serviceworker.js?v=29



Response Headers:

HTTP/1.1 200 OK
Date: Sat, 07 Jul 2018 17:22:36 GMT
Server: Apache
Last-Modified: Sun, 01 Jul 2018 18:48:58 GMT
ETag: &quot;284a38-1328-56ff488a4561e-gzip&quot;
Accept-Ranges: bytes
Cache-Control: max-age=290304000, public
Expires: Tue, 02 Jul 2019 17:22:36 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Access-Control-Allow-Origin: *
Content-Length: 1718
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: application/javascript


Happens on both 11.3 and 11.4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1440140</commentid>
    <comment_count>1</comment_count>
    <who name="N">hendrex.jakai</who>
    <bug_when>2018-07-07 10:45:05 -0700</bug_when>
    <thetext>Please note that the access logs example above are just for 1 IP.

All IPs blocked so far followed the same pattern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1440196</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-07-07 21:20:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/41940569&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1440199</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-07-07 21:27:45 -0700</bug_when>
    <thetext>As per service worker spec, every time a navigation load happens (a page or an iframe is loaded), the service worker script is fetched, so this repetitive loads could actually happen.
I would expect 304 though, not 200, and it seems suspicious that only Safari/iOS would behave this way.
Nuno, is there a web site where we could repro this case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1440420</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-07-09 09:51:43 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #3)
&gt; As per service worker spec, every time a navigation load happens (a page or
&gt; an iframe is loaded), the service worker script is fetched, so this
&gt; repetitive loads could actually happen.
&gt; I would expect 304 though, not 200, and it seems suspicious that only
&gt; Safari/iOS would behave this way.
&gt; Nuno, is there a web site where we could repro this case?

Note that by default, service workers script fetches bypass the HTTP cache, as per the specification. We actually reported a bug against the specification about this but this behavior was apparently intentional.

As a Web developer, you can opt into using the HTTP cache by using {updateViaCache: &quot;all&quot; } as options when registering your service worker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1440422</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-07-09 09:54:25 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; (In reply to youenn fablet from comment #3)
&gt; &gt; As per service worker spec, every time a navigation load happens (a page or
&gt; &gt; an iframe is loaded), the service worker script is fetched, so this
&gt; &gt; repetitive loads could actually happen.
&gt; &gt; I would expect 304 though, not 200, and it seems suspicious that only
&gt; &gt; Safari/iOS would behave this way.
&gt; &gt; Nuno, is there a web site where we could repro this case?
&gt; 
&gt; Note that by default, service workers script fetches bypass the HTTP cache,
&gt; as per the specification. We actually reported a bug against the
&gt; specification about this but this behavior was apparently intentional.
&gt; 
&gt; As a Web developer, you can opt into using the HTTP cache by using
&gt; {updateViaCache: &quot;all&quot; } as options when registering your service worker.

Spec says:
&quot;&quot;&quot;
If request is a non-subresource request, or request is a subresource request and the time difference in seconds calculated by the current time minus registration’s last update check time is greater than 86400, invoke Soft Update algorithm with registration.
&quot;&quot;&quot;

And Soft update is defined at https://w3c.github.io/ServiceWorker/#soft-update.

The way I understand the specification, the &quot;last update check time is greater than 86400&quot; check only applies to sub resource loads, not main resource requests. Although it could be me misunderstanding the spec.

I personally, really do not like this behavior though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1440441</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-07-09 10:29:49 -0700</bug_when>
    <thetext>&gt; The way I understand the specification, the &quot;last update check time is
&gt; greater than 86400&quot; check only applies to sub resource loads, not main
&gt; resource requests. Although it could be me misunderstanding the spec.

Right, I believe we currently fetch the worker script for every main resource load, as per spec.
I believe we should still send conditional GET requests whenever possible though, which might not be the case here.

Checking https://mdn.github.io/sw-test/, we are actually sending conditional GET requests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1440533</commentid>
    <comment_count>7</comment_count>
      <attachid>344612</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-07-09 13:58:06 -0700</bug_when>
    <thetext>Created attachment 344612
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1440547</commentid>
    <comment_count>8</comment_count>
      <attachid>344612</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-07-09 14:09:56 -0700</bug_when>
    <thetext>Comment on attachment 344612
Patch

Causes WPT test failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1440568</commentid>
    <comment_count>9</comment_count>
      <attachid>344621</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-07-09 14:53:54 -0700</bug_when>
    <thetext>Created attachment 344621
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1440575</commentid>
    <comment_count>10</comment_count>
      <attachid>344621</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-07-09 15:02:49 -0700</bug_when>
    <thetext>Comment on attachment 344621
Patch

As long as the bots are happy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1440928</commentid>
    <comment_count>11</comment_count>
    <who name="N">hendrex.jakai</who>
    <bug_when>2018-07-10 11:25:37 -0700</bug_when>
    <thetext>
&gt; &gt; As a Web developer, you can opt into using the HTTP cache by using {updateViaCache: &quot;all&quot; } as options when registering your service worker.


Couldn&apos;t really find much information about this, but this option seems to be used for when updating inside a registration?

However, that&apos;s not what I&apos;m doing. I&apos;m simply registering the service worker like this:


	navigator.serviceWorker.register(serviceWorkerUrl).then(function(swReg) {
		serviceWorkerRegistration = swReg;
		
		(PushManager stuff here)
	}).catch(function(error) {
		console.error(error);
	});



&gt; &gt; As per service worker spec, every time a navigation load happens (a page or
&gt; &gt; an iframe is loaded), the service worker script is fetched, so this
&gt; &gt; repetitive loads could actually happen.


Are you saying that for every single image/js/css/etc, the serviceworker.js is retrieved from the server?!
That doesn&apos;t make any sense.

And only Safari (iPhone and MacOS) is doing that... all other browsers are working fine.

Only with Safari I&apos;m having issues so far. The previous one I had is that users can&apos;t use my website on Private mode since 11.4.
https://bugs.webkit.org/show_bug.cgi?id=186617

Also, Safari is the only browser I know that supports service workers and doesn&apos;t support Push....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1440929</commentid>
    <comment_count>12</comment_count>
    <who name="N">hendrex.jakai</who>
    <bug_when>2018-07-10 11:30:56 -0700</bug_when>
    <thetext>Note that my website uses ajax heavily, so there should really be only one serviceworker call. Once the user loaded the page, any further navigations shouldn&apos;t invoke serviceworker, since the calls are done through ajax.

So, unless serviceworker is fetched for every image, css, js, etc,
the only other thing I can think of is that when Safari opens and there are multiple tabs with my website open, Safari will fetch serviceworker for every tab. I have no idea what really happens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441065</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-07-10 18:36:02 -0700</bug_when>
    <thetext>(In reply to Nuno from comment #12)
&gt; Note that my website uses ajax heavily, so there should really be only one
&gt; serviceworker call. Once the user loaded the page, any further navigations
&gt; shouldn&apos;t invoke serviceworker, since the calls are done through ajax.
&gt; 
&gt; So, unless serviceworker is fetched for every image, css, js, etc,
&gt; the only other thing I can think of is that when Safari opens and there are
&gt; multiple tabs with my website open, Safari will fetch serviceworker for
&gt; every tab. I have no idea what really happens.

For sub resources (js, css, img, ...), we would only fetch the service worker at most once a day. It is only for main resources (main document and subframes) that we would fetch the service worker script.

Yes, if you have multiple tab to your site open, each tab load would be intercepted by the service worker and trigger a serviceworker.js load.

In any case, the patch that is about to land should align our behavior with Chrome and you should still only one serviceworker.js load per page load.

As I mentioned earlier, you can opt into using the disk cache so that your server will be hit only when the serviceworker.js script in the HTTP cache has expired. To do so:

navigator.serviceWorker.register(serviceWorkerUrl, { updateViaCache: &quot;all&quot; });

This is on registration, unlike what you stated earlier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441068</commentid>
    <comment_count>14</comment_count>
      <attachid>344621</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-10 18:57:43 -0700</bug_when>
    <thetext>Comment on attachment 344621
Patch

Clearing flags on attachment: 344621

Committed r233719: &lt;https://trac.webkit.org/changeset/233719&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441069</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-10 18:57:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344612</attachid>
            <date>2018-07-09 13:58:06 -0700</date>
            <delta_ts>2018-07-09 14:09:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187435-20180709135805.patch</filename>
            <type>text/plain</type>
            <size>4991</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q3NTMwYzUxNDk5YzQw
ODk3ZTI3N2I0ODRmZDVkYmQxM2M1OWU1YS4uODdhZWJjNGE5ZjAyYzdiYjA5ZGIwZjlkNTZjMmZj
OWI2ZmI3YjRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE4LTA3LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgInNlcnZpY2V3b3JrZXIuanMi
IGlzIGZldGNoZWQgc2V2ZXJhbCB0aW1lcyBpbiBhIHJvdworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3NDM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS80MTk0MDU2OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBPdXIgcHJldmlvdXMgcG9saWN5IHdhcyB0aGF0IGVhY2ggbWFpbiByZXNvdXJjZSBsb2Fk
IHdvdWxkIHVwZGF0ZSB0aGUgc2VydmljZSB3b3JrZXIKKyAgICAgICAgcmVnaXN0cmF0aW9uLCBh
bmQgZWFjaCBzdWJyZXNvdXJjZSBsb2FkIHdvdWxkIHVwZGF0ZSB0aGUgcmVnaXN0cmF0aW9uIGF0
IG1vc3QgZXZlcnkKKyAgICAgICAgMjQgaG91cnMuIEdpdmVuIHRoYXQgcmVnaXN0cmF0aW9uIHVw
ZGF0ZXMgYnlwYXNzIHRoZSBIVFRQIGNhY2hlIGJ5IGRlZmF1bHQsIHRoaXMgaXMKKyAgICAgICAg
dmVyeSBhZ2dyZXNzaXZlLiBJbnN0ZWFkLCBmb3IgbWFpbiByZXNvdXJjZSBsb2FkcyB3ZSBub3cg
dXBkYXRlIHRoZSByZWdpc3RyYXRpb24gYXQKKyAgICAgICAgbW9zdCBldmVyeSA1IG1pbnV0ZXMs
IHNvIHRoYXQgd2UgZG8gbm90IGVuZCB1cCB1cGRhdGluZyB0aGUgcmVnaXN0cmF0aW9uIHNldmVy
YWwgdGltZXMKKyAgICAgICAgZHVyaW5nIGEgc2luZ2xlIHBhZ2UgbG9hZC4KKworICAgICAgICAq
IHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGU6OmltcG9ydFNjcmlwdHMpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJGZXRjaDo6ZGlzcGF0Y2hGZXRjaEV2ZW50KToKKwogMjAxOC0wNy0wOSAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTaHJpbmsgV2ViQ29yZTo6
UGFpcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRl
eCBhNWIxYjM2ZWRhMmQ2ODExNDgwNmFhYWVkNDVjNWI4OTc5NmZhMWZiLi5mN2MyODBjZGM5NDg4
MDU3YmZjODljYzQwNDcxZTAzNWE3ODg4MzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IFdvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB1cmxzKQogICAgICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8j
aW1wb3J0c2NyaXB0cwogICAgICAgICBhdXRvJiBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBk
b3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKTsKICAgICAgICAgYXV0byYg
cmVnaXN0cmF0aW9uID0gc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnJlZ2lzdHJhdGlvbigpOwot
ICAgICAgICBpZiAocmVnaXN0cmF0aW9uLnVwZGF0ZVZpYUNhY2hlKCkgPT0gU2VydmljZVdvcmtl
clVwZGF0ZVZpYUNhY2hlOjpOb25lIHx8IHJlZ2lzdHJhdGlvbi5uZWVkc1VwZGF0ZSgpKQorICAg
ICAgICBpZiAocmVnaXN0cmF0aW9uLnVwZGF0ZVZpYUNhY2hlKCkgPT0gU2VydmljZVdvcmtlclVw
ZGF0ZVZpYUNhY2hlOjpOb25lIHx8IHJlZ2lzdHJhdGlvbi5uZWVkc1VwZGF0ZShTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uOjpJc05vblN1YnJlc291cmNlUmVxdWVzdDo6Tm8pKQogICAgICAgICAg
ICAgY2FjaGVQb2xpY3kgPSBGZXRjaE9wdGlvbnM6OkNhY2hlOjpOb0NhY2hlOwogICAgIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgKaW5kZXggNDM3Mjg4NzM0OWQ1NDE5ZWE4YmYxZjg5MWQ2
NzM0NDU5NzM3ZTZkNS4uM2E1NTM1NzhiYjlmN2RjY2M4MWJkYWJlODY2NWI3NzM3YjM5OGJhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbi5oCkBAIC02MSw3ICs2MSw4IEBAIHB1YmxpYzoKICAgICBXYWxs
VGltZSBsYXN0VXBkYXRlVGltZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0TGFzdFVwZGF0ZVRpbWUo
V2FsbFRpbWUpOwogCi0gICAgYm9vbCBuZWVkc1VwZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGxhc3RV
cGRhdGVUaW1lKCkgJiYgKFdhbGxUaW1lOjpub3coKSAtIGxhc3RVcGRhdGVUaW1lKCkpID4gODY0
MDBfczsgfQorICAgIGVudW0gY2xhc3MgSXNOb25TdWJyZXNvdXJjZVJlcXVlc3QgeyBObywgWWVz
IH07CisgICAgYm9vbCBuZWVkc1VwZGF0ZShJc05vblN1YnJlc291cmNlUmVxdWVzdCBpc05vblN1
YnJlc291cmNlUmVxdWVzdCkgY29uc3QgeyByZXR1cm4gbGFzdFVwZGF0ZVRpbWUoKSAmJiAoV2Fs
bFRpbWU6Om5vdygpIC0gbGFzdFVwZGF0ZVRpbWUoKSkgPiAoaXNOb25TdWJyZXNvdXJjZVJlcXVl
c3QgPT0gSXNOb25TdWJyZXNvdXJjZVJlcXVlc3Q6OlllcyA/IDVfbWluIDogMjRfaCk7IH0KIAog
ICAgIHZvaWQgdXBkYXRlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIHZvaWQgdW5yZWdp
c3RlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmlu
ZGV4IDQxNmIwNWZlZjkxNmQ4OTVjYzYwYjgyMTUwMjkwYTcxNDQ0ZjdhNDIuLmY2YzI1MTYyZjdi
ZDE4YjdkZTMzZjcyNzc1MWE5NmEzMmExZjNkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNw
cApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaCIKICNpbmNsdWRl
ICJXb3JrZXJHbG9iYWxTY29wZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04OSw3ICs5
MCw3IEBAIHZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxDbGllbnQ+JiYgY2xpZW50LCBTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUmIGdsb2JhbFNjCiAgICAgYXV0byByZXF1ZXN0SGVhZGVycyA9
IEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OkltbXV0YWJsZSwgSFRU
UEhlYWRlck1hcCB7IHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpIH0pOwogCiAgICAgYm9vbCBp
c05hdmlnYXRpb24gPSBvcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0
ZTsKLSAgICBib29sIGlzTm9uU3VicmVzb3VyY2VSZXF1ZXN0ID0gV2ViQ29yZTo6aXNOb25TdWJy
ZXNvdXJjZVJlcXVlc3Qob3B0aW9ucy5kZXN0aW5hdGlvbik7CisgICAgYXV0byBpc05vblN1YnJl
c291cmNlUmVxdWVzdCA9IFdlYkNvcmU6OmlzTm9uU3VicmVzb3VyY2VSZXF1ZXN0KG9wdGlvbnMu
ZGVzdGluYXRpb24pID8gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6SXNOb25TdWJyZXNvdXJj
ZVJlcXVlc3Q6OlllcyA6IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OklzTm9uU3VicmVzb3Vy
Y2VSZXF1ZXN0OjpObzsKIAogICAgIEFTU0VSVChnbG9iYWxTY29wZS5yZWdpc3RyYXRpb24oKS5h
Y3RpdmUoKSk7CiAgICAgQVNTRVJUKGdsb2JhbFNjb3BlLnJlZ2lzdHJhdGlvbigpLmFjdGl2ZSgp
LT5pZGVudGlmaWVyKCkgPT0gZ2xvYmFsU2NvcGUudGhyZWFkKCkuaWRlbnRpZmllcigpKTsKQEAg
LTEzOSw3ICsxNDAsNyBAQCB2b2lkIGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmIGNs
aWVudCwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBnbG9iYWxTYwogICAgIGdsb2JhbFNjb3Bl
LnVwZGF0ZUV4dGVuZGVkRXZlbnRzU2V0KGV2ZW50LnB0cigpKTsKIAogICAgIGF1dG8mIHJlZ2lz
dHJhdGlvbiA9IGdsb2JhbFNjb3BlLnJlZ2lzdHJhdGlvbigpOwotICAgIGlmIChpc05vblN1YnJl
c291cmNlUmVxdWVzdCB8fCByZWdpc3RyYXRpb24ubmVlZHNVcGRhdGUoKSkKKyAgICBpZiAocmVn
aXN0cmF0aW9uLm5lZWRzVXBkYXRlKGlzTm9uU3VicmVzb3VyY2VSZXF1ZXN0KSkKICAgICAgICAg
cmVnaXN0cmF0aW9uLnNvZnRVcGRhdGUoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344621</attachid>
            <date>2018-07-09 14:53:54 -0700</date>
            <delta_ts>2018-07-10 18:57:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187435-20180709145354.patch</filename>
            <type>text/plain</type>
            <size>5416</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzNjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q3NTMwYzUxNDk5YzQw
ODk3ZTI3N2I0ODRmZDVkYmQxM2M1OWU1YS4uYTFlOTE2MjQ0ZGEwYTUzNGY1ZDI4ZDVkMmY4Y2Rh
Y2ZiNTZhZGY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE4LTA3LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgInNlcnZpY2V3b3JrZXIuanMi
IGlzIGZldGNoZWQgc2V2ZXJhbCB0aW1lcyBpbiBhIHJvdworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3NDM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS80MTk0MDU2OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTb2Z0IHVwZGF0ZXMgaGFwcGVuIGV2ZXJ5IHRpbWUgYSBmZXRjaCBldmVudCBpcyBzZW50
IHRvIGEgc2VydmljZSB3b3JrZXIgZm9yIGEgbWFpbiByZXNvdXJjZSByZXF1ZXN0LgorICAgICAg
ICBUaGlzIGNhbiBoYXBwZW4gbWFueSB0aW1lcyBkdXJpbmcgYSBwYWdlIGxvYWQgYW5kIHdpbGwg
Y2F1c2UgdXMgdG8gc3BhbSB0aGUgSFRUUCBzZXJ2ZXIgd2l0aCB1cGRhdGUKKyAgICAgICAgcmVx
dWVzdHMsIGVzcGVjaWFsbHkgY29uc2lkZXJpbmcgdGhhdCB0aGUgZGVmYXVsdCBiZWhhdmlvciBp
cyB0byBieXBhc3MgdGhlIEhUVFAgY2FjaGUuIFRvIGFkZHJlc3MKKyAgICAgICAgdGhlIGlzc3Vl
LCB3ZSBub3cgZG8gc29mdCB1cGRhdGVzIG9uIGEgMSBzZWNvbmQgZGVsYXkgYW5kIHdlIGtlZXAg
cmVzY2hlZHVsaW5nIHRoaXMgdGltZXIgd2FzIGxvbmcgYXMKKyAgICAgICAgc29mdCB1cGRhdGUg
cmVxdWVzdHMga2VlcCBjb21pbmcuIEJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIENo
cm9taXVtIGNvZGUsIHRoaXMgc2VlbXMgdG8gYmUKKyAgICAgICAgd2hhdCB0aGV5IGFyZSBkb2lu
ZyBzbyB0aGlzIHNob3VsZCBhbGlnbiBvdXIgYmVoYXZpb3Igd2l0aCB0aGVtLgorCisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpz
Y2hlZHVsZVNvZnRVcGRhdGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRj
aDo6ZGlzcGF0Y2hGZXRjaEV2ZW50KToKKwogMjAxOC0wNy0wOSAgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTaHJpbmsgV2ViQ29yZTo6UGFpcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDUxNWY4NjA2ZmZhN2I2ZDVmMWFlZmQ1NWFkNjk4YTkz
OWRiMzVlODUuLjhmZWE2MjkzNjcxMjYxYmE5NDYwMWQwNzJhY2M2YTg4MDA5NTJjNDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTQyLDYgKzQyLDggQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjb25zdCBTZWNvbmRzIHNvZnRVcGRhdGVEZWxheSB7IDFfcyB9OworCiBSZWY8U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbj4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0T3JD
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPFNlcnZpY2VXb3JrZXJD
b250YWluZXI+JiYgY29udGFpbmVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmIGRh
dGEpCiB7CiAgICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IGNvbnRhaW5lci0+cmVnaXN0cmF0
aW9uKGRhdGEuaWRlbnRpZmllcikpIHsKQEAgLTU2LDYgKzU4LDcgQEAgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbjo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb24KICAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKICAgICAsIG1fcmVnaXN0
cmF0aW9uRGF0YShXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpKQogICAgICwgbV9jb250YWluZXIo
V1RGTW92ZShjb250YWluZXIpKQorICAgICwgbV9zb2Z0VXBkYXRlVGltZXIoW3RoaXNdIHsgc29m
dFVwZGF0ZSgpOyB9KQogewogICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiQ3JlYXRpbmcgcmVnaXN0
cmF0aW9uICVwIGZvciByZWdpc3RyYXRpb24ga2V5ICVzIiwgdGhpcywgbV9yZWdpc3RyYXRpb25E
YXRhLmtleS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgc3VzcGVuZElmTmVl
ZGVkKCk7CkBAIC0xNDksNiArMTUyLDE1IEBAIHZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bjo6dXBkYXRlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICBtX2NvbnRhaW5l
ci0+dXBkYXRlUmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uRGF0YS5zY29wZVVSTCwgbmV3ZXN0
V29ya2VyLT5zY3JpcHRVUkwoKSwgV29ya2VyVHlwZTo6Q2xhc3NpYywgV1RGTW92ZShwcm9taXNl
KSk7CiB9CiAKKy8vIFRvIGF2b2lkIHNjaGVkdWxpbmcgbWFueSB1cGRhdGVzIGR1cmluZyBhIHNp
bmdsZSBwYWdlIGxvYWQsIHdlIGRvIHNvZnQgdXBkYXRlcyBvbiBhIDEgc2Vjb25kIGRlbGF5IGFu
ZCBrZWVwIGRlbGF5aW5nCisvLyBhcyBsb25nIGFzIHNvZnQgdXBkYXRlIHJlcXVlc3RzIGtlZXAg
Y29taW5nLiBUaGlzIHNlZW1zIHRvIG1hdGNoIENocm9tZSdzIGJlaGF2aW9yLgordm9pZCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzY2hlZHVsZVNvZnRVcGRhdGUoKQoreworICAgIGlmICht
X3NvZnRVcGRhdGVUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3NvZnRVcGRhdGVUaW1lci5z
dG9wKCk7CisgICAgbV9zb2Z0VXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KHNvZnRVcGRhdGVEZWxh
eSk7Cit9CisKIHZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6c29mdFVwZGF0ZSgpCiB7
CiAgICAgaWYgKG1faXNTdG9wcGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgKaW5kZXggNDM3Mjg4NzM0
OWQ1NDE5ZWE4YmYxZjg5MWQ2NzM0NDU5NzM3ZTZkNS4uZDc1ZmJjNDU4YmI2MGEwYmRmM2RmMjBj
NWExOWZhZWNlYWQyZjUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJTV0NsaWVudENv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIgor
I2luY2x1ZGUgIlRpbWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjYsNyArNjcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGUoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAg
ICAgdm9pZCB1bnJlZ2lzdGVyKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCi0gICAgdm9pZCBz
b2Z0VXBkYXRlKCk7CisgICAgdm9pZCBzY2hlZHVsZVNvZnRVcGRhdGUoKTsKIAogICAgIHVzaW5n
IFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKQEAgLTg1LDYg
Kzg2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYo
KTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCisg
ICAgdm9pZCBzb2Z0VXBkYXRlKCk7CisKICAgICAvLyBBY3RpdmVET01PYmplY3QuCiAgICAgY29u
c3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgY2Fu
U3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOwpAQCAtOTksNiArMTAy
LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9pc1N0b3BwZWQgeyBmYWxzZSB9OwogICAgIFJl
ZlB0cjxQZW5kaW5nQWN0aXZpdHk8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbj4+IG1fcGVuZGlu
Z0FjdGl2aXR5Rm9yRXZlbnREaXNwYXRjaDsKKyAgICBUaW1lciBtX3NvZnRVcGRhdGVUaW1lcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmlu
ZGV4IDQxNmIwNWZlZjkxNmQ4OTVjYzYwYjgyMTUwMjkwYTcxNDQ0ZjdhNDIuLjdlNWE2MGRiMDQ1
Njg5YTVmNjg2ZjJlNzdmZWY2MGZhNTE0OWE3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNw
cApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxDbGllbnQ+
JiYgY2xpZW50LCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIGdsb2JhbFNjCiAKICAgICBhdXRv
JiByZWdpc3RyYXRpb24gPSBnbG9iYWxTY29wZS5yZWdpc3RyYXRpb24oKTsKICAgICBpZiAoaXNO
b25TdWJyZXNvdXJjZVJlcXVlc3QgfHwgcmVnaXN0cmF0aW9uLm5lZWRzVXBkYXRlKCkpCi0gICAg
ICAgIHJlZ2lzdHJhdGlvbi5zb2Z0VXBkYXRlKCk7CisgICAgICAgIHJlZ2lzdHJhdGlvbi5zY2hl
ZHVsZVNvZnRVcGRhdGUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgU2VydmljZVdvcmtlckZldGNo
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>