<?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>117842</bug_id>
          
          <creation_ts>2013-06-20 11:48:58 -0700</creation_ts>
          <short_desc>WebProcess hangs loading eff.org (Waiting forever on a sync XHR, NetworkProcess unable to service it)</short_desc>
          <delta_ts>2013-06-20 13:13:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>ap</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>902239</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-06-20 11:48:58 -0700</bug_when>
    <thetext>WebProcess hangs loading eff.org (Waiting forever on a sync XHR, NetworkProcess unable to service it)

This is the known theoretical &quot;6 + 1 problem&quot; where 6 asynchronous requests to a host are already outstanding while a 7th sync XHR is made.

In single WebProcess mode and WebKit 1, the sync XHR will time out and the WebProcess will recover.

With the NetworkProcess the WebProcess waits forever on the NetworkProcess, and the NetworkProcess doesn&apos;t even try to serve the 7th request.

A lot more could be said about this.  But the TLDR; is that we need to bump the platform connection-per-host limit to 7, and only use that 7th slot for a sync XHR if 6 loads are already in progress.

In radar as &lt;rdar://problem/14112329&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902252</commentid>
    <comment_count>1</comment_count>
      <attachid>205108</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-06-20 12:09:11 -0700</bug_when>
    <thetext>Created attachment 205108
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902275</commentid>
    <comment_count>2</comment_count>
      <attachid>205108</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-06-20 12:55:03 -0700</bug_when>
    <thetext>Comment on attachment 205108
Patch v1 

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

&gt; Source/WebKit2/NetworkProcess/HostRecord.cpp:198
&gt; +    ASSERT(loader &amp;&amp; loader-&gt;connectionToWebProcess());

Two lines.

&gt; Source/WebKit2/NetworkProcess/HostRecord.cpp:204
&gt; +    if (loader-&gt;connectionToWebProcess()-&gt;isSerialLoadingEnabled() &amp;&amp; m_loadersInProgress.size() &gt;= 1)
&gt; +        return true;

What is serial loading? Sounds like we have the exactly the same issue with it if there is one outstanding request, and WebProcess starts a sync one.

&gt; Source/WebKit2/NetworkProcess/HostRecord.cpp:213
&gt; +    // If we&apos;re already past the limit of the number of loaders in flight, we won&apos;t even serve new synchronous requests right now.
&gt; +    if (m_loadersInProgress.size() &gt; m_maxRequestsInFlight)
&gt; +        return true;

Perhaps assert that at least one active loader is synchronous?

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoadScheduler.h:29
&gt; +#include &quot;HostRecord.h&quot;

Why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902276</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-06-20 13:02:40 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 205108 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=205108&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/NetworkProcess/HostRecord.cpp:198
&gt; &gt; +    ASSERT(loader &amp;&amp; loader-&gt;connectionToWebProcess());
&gt; 
&gt; Two lines.

Yup!

&gt; &gt; Source/WebKit2/NetworkProcess/HostRecord.cpp:204
&gt; &gt; +    if (loader-&gt;connectionToWebProcess()-&gt;isSerialLoadingEnabled() &amp;&amp; m_loadersInProgress.size() &gt;= 1)
&gt; &gt; +        return true;
&gt; 
&gt; What is serial loading? Sounds like we have the exactly the same issue with it if there is one outstanding request, and WebProcess starts a sync one.

It&apos;s SPI for DRT/WKTR for a tiny subset of tests.  None with sync XHR.  Shouldn&apos;t be a factor in real browsing.

&gt; &gt; Source/WebKit2/NetworkProcess/HostRecord.cpp:213
&gt; &gt; +    // If we&apos;re already past the limit of the number of loaders in flight, we won&apos;t even serve new synchronous requests right now.
&gt; &gt; +    if (m_loadersInProgress.size() &gt; m_maxRequestsInFlight)
&gt; &gt; +        return true;
&gt; 
&gt; Perhaps assert that at least one active loader is synchronous?

It&apos;ll be a lot of debug-only code, but I think it&apos;s worthwhile.

&gt; &gt; Source/WebKit2/NetworkProcess/NetworkResourceLoadScheduler.h:29
&gt; &gt; +#include &quot;HostRecord.h&quot;
&gt; 
&gt; Why?

Leftover from earlier patch, and I&apos;d fixed locally but not committed - Thanks for spotting it.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902279</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-06-20 13:13:09 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/151795</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205108</attachid>
            <date>2013-06-20 12:09:11 -0700</date>
            <delta_ts>2013-06-20 12:55:02 -0700</delta_ts>
            <desc>Patch v1 </desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>13466</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjZjllZWQ1Li4yMDIxMzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTMtMDYtMjAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYlByb2Nlc3MgaGFuZ3MgbG9hZGluZyBlZmYub3JnIChXYWl0aW5nIGZvcmV2ZXIgb24g
YSBzeW5jIFhIUiwgTmV0d29ya1Byb2Nlc3MgdW5hYmxlIHRvIHNlcnZpY2UgaXQpLgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTQxMTIzMjk+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTE3ODQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ib3N0UmVjb3JkLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6cmVtb3ZlTG9hZGVyRnJvbVF1ZXVlKTogVXRpbGl0eSB0byBjbGVhciBhIExvYWRl
ciBvdXQgb2YgYSBMb2FkZXJRdWV1ZS4KKyAgICAgICAgKFdlYktpdDo6SG9zdFJlY29yZDo6cmVt
b3ZlTG9hZGVyKTogVXNlIHJlbW92ZUxvYWRlckZyb21RdWV1ZSwgYW5kIGFsc28gdHJ5IHRvIGNs
ZWFyIHRoZSBsb2FkZXIgZnJvbSBtX3N5bmNMb2FkZXJzUGVuZGluZy4KKyAgICAgICAgKFdlYktp
dDo6SG9zdFJlY29yZDo6c2VydmVQZW5kaW5nUmVxdWVzdHNGb3JRdWV1ZSk6IFNtYWxsIHJlZmFj
dG9yaW5nL2NsZWFudXAuCisgICAgICAgIChXZWJLaXQ6Okhvc3RSZWNvcmQ6OmxpbWl0c1JlcXVl
c3RzKTogQ2hhbmdlIHNvIHRoYXQgaWYgdGhlIG51bWJlciBvZiBsb2FkZXJzIGluIGZsaWdodCBp
cyBleGFjdGx5IGVxdWFsIHRvIHRoZSBsaW1pdCwgdGhlbgorICAgICAgICAgIGFsbG93IHNlcnZp
bmcgYSBzeW5jaHJvbm91cyBsb2FkZXIgdG8gZ28gZXhhY3RseSBvbmUgYmV5b25kIHRoZSBsaW1p
dC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ib3N0UmVjb3JkLmg6CisKKyAgICAgICAgTWFr
ZSB0aGUgc3RhdGljIG1heFJlcXVlc3RzSW5GbGlnaHRQZXJIb3N0IGEgbWVtYmVyIG9mIHRoZSBO
ZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLCBpbnN0ZWFkOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1
bGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6aG9z
dEZvclVSTCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNj
aGVkdWxlci5oOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtSZXNvdXJj
ZUxvYWRTY2hlZHVsZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRTY2hlZHVsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZU1heGltdW1IVFRQQ29ubmVjdGlvbkNvdW50
UGVySG9zdCk6IFRlbGwgQ0ZOZXR3b3JrIHRvIGFsbG93CisgICAgICAgICAgNyBjb25uZWN0aW9u
cyBwZXIgaG9zdCBpbnN0ZWFkIG9mIDYsIGJ1dCB0ZWxsIHRoZSBzY2hlZHVsZXIgdGhhdCA2IGlz
IHN0aWxsIHRoZSBub3JtYWwgbGltaXQuCisKIDIwMTMtMDYtMTkgIEtyenlzenRvZiBXb2xhbnNr
aSAgPGsud29sYW5za2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1l
bnQgdW5pdCB0ZXN0IGNhbGxiYWNrOiBvblNldHRpbmdDaGFuZ2UuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Ib3N0UmVjb3JkLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL0hvc3RSZWNvcmQuY3BwCmluZGV4IGVhMDAxNTQuLjMzN2MzOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0hvc3RSZWNvcmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0hvc3RSZWNvcmQuY3BwCkBAIC03Niw2
ICs3NiwxOSBAQCB2b2lkIEhvc3RSZWNvcmQ6OmFkZExvYWRlckluUHJvZ3Jlc3MoU2NoZWR1bGFi
bGVMb2FkZXIqIGxvYWRlcikKICAgICBsb2FkZXItPnNldEhvc3RSZWNvcmQodGhpcyk7CiB9CiAK
K2lubGluZSBib29sIHJlbW92ZUxvYWRlckZyb21RdWV1ZShTY2hlZHVsYWJsZUxvYWRlciogbG9h
ZGVyLCBMb2FkZXJRdWV1ZSYgcXVldWUpCit7CisgICAgTG9hZGVyUXVldWU6Oml0ZXJhdG9yIGVu
ZCA9IHF1ZXVlLmVuZCgpOworICAgIGZvciAoTG9hZGVyUXVldWU6Oml0ZXJhdG9yIGl0ID0gcXVl
dWUuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlmIChpdC0+Z2V0KCkgPT0g
bG9hZGVyKSB7CisgICAgICAgICAgICBsb2FkZXItPnNldEhvc3RSZWNvcmQoMCk7CisgICAgICAg
ICAgICBxdWV1ZS5yZW1vdmUoaXQpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEhvc3RSZWNvcmQ6OnJlbW92
ZUxvYWRlcihTY2hlZHVsYWJsZUxvYWRlciogbG9hZGVyKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CkBAIC04OSwxNiArMTAyLDEzIEBAIHZvaWQgSG9zdFJlY29yZDo6cmVtb3ZlTG9h
ZGVyKFNjaGVkdWxhYmxlTG9hZGVyKiBsb2FkZXIpCiAgICAgICAgIG1fbG9hZGVyc0luUHJvZ3Jl
c3MucmVtb3ZlKGkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgaWYgKHJlbW92ZUxv
YWRlckZyb21RdWV1ZShsb2FkZXIsIG1fc3luY0xvYWRlcnNQZW5kaW5nKSkKKyAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIGZvciAoaW50IHByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlI
aWdoZXN0OyBwcmlvcml0eSA+PSBSZXNvdXJjZUxvYWRQcmlvcml0eUxvd2VzdDsgLS1wcmlvcml0
eSkgeyAgCi0gICAgICAgIExvYWRlclF1ZXVlOjppdGVyYXRvciBlbmQgPSBtX2xvYWRlcnNQZW5k
aW5nW3ByaW9yaXR5XS5lbmQoKTsKLSAgICAgICAgZm9yIChMb2FkZXJRdWV1ZTo6aXRlcmF0b3Ig
aXQgPSBtX2xvYWRlcnNQZW5kaW5nW3ByaW9yaXR5XS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKLSAgICAgICAgICAgIGlmIChpdC0+Z2V0KCkgPT0gbG9hZGVyKSB7Ci0gICAgICAgICAgICAg
ICAgaXQtPmdldCgpLT5zZXRIb3N0UmVjb3JkKDApOwotICAgICAgICAgICAgICAgIG1fbG9hZGVy
c1BlbmRpbmdbcHJpb3JpdHldLnJlbW92ZShpdCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgZm9yIChpbnQgcHJpb3JpdHkgPSBSZXNvdXJj
ZUxvYWRQcmlvcml0eUhpZ2hlc3Q7IHByaW9yaXR5ID49IFJlc291cmNlTG9hZFByaW9yaXR5TG93
ZXN0OyAtLXByaW9yaXR5KSB7CisgICAgICAgIGlmIChyZW1vdmVMb2FkZXJGcm9tUXVldWUobG9h
ZGVyLCBtX2xvYWRlcnNQZW5kaW5nW3ByaW9yaXR5XSkpCisgICAgICAgICAgICByZXR1cm47CiAg
ICAgfQogfQogCkBAIC0xMzIsNiArMTQyLDIzIEBAIHVpbnQ2NF90IEhvc3RSZWNvcmQ6OmFjdGl2
ZUxvYWRDb3VudCgpIGNvbnN0CiAKIHZvaWQgSG9zdFJlY29yZDo6c2VydmVQZW5kaW5nUmVxdWVz
dHNGb3JRdWV1ZShMb2FkZXJRdWV1ZSYgcXVldWUsIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9y
aXR5KQogeworICAgIC8vIFdlIG9ubHkgZW5mb3JjZSB0aGUgY29ubmVjdGlvbiBsaW1pdCBmb3Ig
aHR0cChzKSBob3N0cywgd2hpY2ggYXJlIHRoZSBvbmx5IG9uZXMgd2l0aCBuYW1lcy4KKyAgICBi
b29sIHNob3VsZExpbWl0UmVxdWVzdHMgPSAhbmFtZSgpLmlzTnVsbCgpOworCisgICAgLy8gRm9y
IG5vbi1uYW1lZCBob3N0cyAtIGV2ZXJ5dGhpbmcgYnV0IGh0dHAocykgLSB3ZSBzaG91bGQgb25s
eSBlbmZvcmNlIHRoZSBsaW1pdCBpZiB0aGUgZG9jdW1lbnQKKyAgICAvLyBpc24ndCBkb25lIHBh
cnNpbmcgYW5kIHdlIGRvbid0IGtub3cgYWxsIHN0eWxlc2hlZXRzIHlldC4KKworICAgIC8vIEZJ
WE1FIChOZXR3b3JrUHJvY2Vzcyk6IFRoZSBhYm92ZSBjb21tZW50IGFib3V0IGRvY3VtZW50IHBh
cnNpbmcgYW5kIHN0eWxlc2hlZXRzIGlzIGEgaG9sZG92ZXIKKyAgICAvLyBmcm9tIHRoZSBXZWJD
b3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXIuCisgICAgLy8gVGhlIGJlaGF2aW9yIGRlc2NyaWJl
ZCB3YXMgYXQgb25lIHRpbWUgaW1wb3J0YW50IGZvciBXZWJDb3JlJ3Mgc2luZ2xlIHRocmVhZGVk
bmVzcy4KKyAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgd2UgZG9uJ3QgY2FyZSBhYm91dCBpdCB3
aXRoIHRoZSBOZXR3b3JrUHJvY2Vzcy4KKyAgICAvLyBXZSBzaG91bGQgZWl0aGVyIGRlY2lkZSBp
dCdzIG5vdCBpbXBvcnRhbnQgYW5kIGNoYW5nZSB0aGUgYWJvdmUgY29tbWVudCwgb3IgZGVjaWRl
IGl0IGlzCisgICAgLy8gc3RpbGwgaW1wb3J0YW50IGFuZCBzb21laG93IGFjY291bnQgZm9yIGl0
LgorICAgIAorICAgIC8vIFZlcnkgbG93IHByaW9yaXR5IGxvYWRlcnMgYXJlIG9ubHkgaGFuZGxl
ZCB3aGVuIG5vIG90aGVyIGxvYWRlcnMgYXJlIGluIHByb2dyZXNzLgorICAgIGlmIChzaG91bGRM
aW1pdFJlcXVlc3RzICYmIHByaW9yaXR5ID09IFJlc291cmNlTG9hZFByaW9yaXR5VmVyeUxvdyAm
JiAhbV9sb2FkZXJzSW5Qcm9ncmVzcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICAK
ICAgICB3aGlsZSAoIXF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICBSZWZQdHI8U2NoZWR1bGFi
bGVMb2FkZXI+IGxvYWRlciA9IHF1ZXVlLmZpcnN0KCk7CiAgICAgICAgIEFTU0VSVChsb2FkZXIt
Pmhvc3RSZWNvcmQoKSA9PSB0aGlzKTsKQEAgLTE0MywxOSArMTcwLDcgQEAgdm9pZCBIb3N0UmVj
b3JkOjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0c0ZvclF1ZXVlKExvYWRlclF1ZXVlJiBxdWV1ZSwgUmVz
b3VyY2VMb2FkUHIKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAg
Ly8gRm9yIG5hbWVkIGhvc3RzIC0gd2hpY2ggYXJlIG9ubHkgaHR0cChzKSBob3N0cyAtIHdlIHNo
b3VsZCBhbHdheXMgZW5mb3JjZSB0aGUgY29ubmVjdGlvbiBsaW1pdC4KLSAgICAgICAgLy8gRm9y
IG5vbi1uYW1lZCBob3N0cyAtIGV2ZXJ5dGhpbmcgYnV0IGh0dHAocykgLSB3ZSBzaG91bGQgb25s
eSBlbmZvcmNlIHRoZSBsaW1pdCBpZiB0aGUgZG9jdW1lbnQKLSAgICAgICAgLy8gaXNuJ3QgZG9u
ZSBwYXJzaW5nIGFuZCB3ZSBkb24ndCBrbm93IGFsbCBzdHlsZXNoZWV0cyB5ZXQuCi0KLSAgICAg
ICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogVGhlIGFib3ZlIGNvbW1lbnQgYWJvdXQgZG9j
dW1lbnQgcGFyc2luZyBhbmQgc3R5bGVzaGVldHMgaXMgYSBob2xkb3ZlcgotICAgICAgICAvLyBm
cm9tIHRoZSBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXIuCi0gICAgICAgIC8vIFRoZSBi
ZWhhdmlvciBkZXNjcmliZWQgd2FzIGF0IG9uZSB0aW1lIGltcG9ydGFudCBmb3IgV2ViQ29yZSdz
IHNpbmdsZSB0aHJlYWRlZG5lc3MuCi0gICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB3ZSBk
b24ndCBjYXJlIGFib3V0IGl0IHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzLgotICAgICAgICAvLyBX
ZSBzaG91bGQgZWl0aGVyIGRlY2lkZSBpdCdzIG5vdCBpbXBvcnRhbnQgYW5kIGNoYW5nZSB0aGUg
YWJvdmUgY29tbWVudCwgb3IgZGVjaWRlIGl0IGlzCi0gICAgICAgIC8vIHN0aWxsIGltcG9ydGFu
dCBhbmQgc29tZWhvdyBhY2NvdW50IGZvciBpdC4KLQotICAgICAgICBib29sIHNob3VsZExpbWl0
UmVxdWVzdHMgPSAhbmFtZSgpLmlzTnVsbCgpOwotICAgICAgICBpZiAoc2hvdWxkTGltaXRSZXF1
ZXN0cyAmJiBsaW1pdHNSZXF1ZXN0cyhwcmlvcml0eSwgbG9hZGVyLT5jb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKCktPmlzU2VyaWFsTG9hZGluZ0VuYWJsZWQoKSkpCisgICAgICAgIGlmIChzaG91bGRM
aW1pdFJlcXVlc3RzICYmIGxpbWl0c1JlcXVlc3RzKHByaW9yaXR5LCBsb2FkZXIuZ2V0KCkpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1fbG9hZGVyc0luUHJvZ3Jlc3MuYWRkKGxv
YWRlcik7CkBAIC0xNzgsMTIgKzE5MywyNiBAQCB2b2lkIEhvc3RSZWNvcmQ6OnNlcnZlUGVuZGlu
Z1JlcXVlc3RzKFJlc291cmNlTG9hZFByaW9yaXR5IG1pbmltdW1Qcmlvcml0eSkKICAgICAgICAg
c2VydmVQZW5kaW5nUmVxdWVzdHNGb3JRdWV1ZShtX2xvYWRlcnNQZW5kaW5nW3ByaW9yaXR5XSwg
KFJlc291cmNlTG9hZFByaW9yaXR5KXByaW9yaXR5KTsKIH0KIAotYm9vbCBIb3N0UmVjb3JkOjps
aW1pdHNSZXF1ZXN0cyhSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSwgYm9vbCBzZXJpYWxM
b2FkaW5nRW5hYmxlZCkgY29uc3QKK2Jvb2wgSG9zdFJlY29yZDo6bGltaXRzUmVxdWVzdHMoUmVz
b3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHksIFNjaGVkdWxhYmxlTG9hZGVyKiBsb2FkZXIpIGNv
bnN0CiB7CisgICAgQVNTRVJUKGxvYWRlciAmJiBsb2FkZXItPmNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoKSk7CisKICAgICBpZiAocHJpb3JpdHkgPT0gUmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93
ICYmICFtX2xvYWRlcnNJblByb2dyZXNzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKLSAgICByZXR1cm4gbV9sb2FkZXJzSW5Qcm9ncmVzcy5zaXplKCkgPj0gKHNlcmlhbExvYWRp
bmdFbmFibGVkID8gMSA6IG1fbWF4UmVxdWVzdHNJbkZsaWdodCk7CisgICAgaWYgKGxvYWRlci0+
Y29ubmVjdGlvblRvV2ViUHJvY2VzcygpLT5pc1NlcmlhbExvYWRpbmdFbmFibGVkKCkgJiYgbV9s
b2FkZXJzSW5Qcm9ncmVzcy5zaXplKCkgPj0gMSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICAvLyBJZiB3ZSdyZSBleGFjdGx5IGF0IHRoZSBsaW1pdCBmb3IgcmVxdWVzdHMgaW4gZmxpZ2h0
LCBhbmQgdGhpcyBsb2FkZXIgaXMgYXN5bmNocm9ub3VzLCB0aGVuIHdlJ3JlIGRvbmUgc2Vydmlu
ZyBuZXcgcmVxdWVzdHMuCisgICAgLy8gVGhlIHN5bmNocm9ub3VzIGxvYWRlciBleGNlcHRpb24g
aGFuZGxlcyB0aGUgY2FzZSB3aGVyZSBhIHN5bmMgWEhSIGlzIG1hZGUgd2hpbGUgNiBvdGhlciBy
ZXF1ZXN0cyBhcmUgYWxyZWFkeSBpbiBmbGlnaHQuCisgICAgaWYgKG1fbG9hZGVyc0luUHJvZ3Jl
c3Muc2l6ZSgpID09IG1fbWF4UmVxdWVzdHNJbkZsaWdodCAmJiAhbG9hZGVyLT5pc1N5bmNocm9u
b3VzKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gSWYgd2UncmUgYWxyZWFkeSBw
YXN0IHRoZSBsaW1pdCBvZiB0aGUgbnVtYmVyIG9mIGxvYWRlcnMgaW4gZmxpZ2h0LCB3ZSB3b24n
dCBldmVuIHNlcnZlIG5ldyBzeW5jaHJvbm91cyByZXF1ZXN0cyByaWdodCBub3cuCisgICAgaWYg
KG1fbG9hZGVyc0luUHJvZ3Jlc3Muc2l6ZSgpID4gbV9tYXhSZXF1ZXN0c0luRmxpZ2h0KQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
SG9zdFJlY29yZC5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvSG9zdFJlY29yZC5o
CmluZGV4IGU3YjZiNTIuLjA1ODIwODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0hvc3RSZWNvcmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9Ib3N0UmVjb3JkLmgKQEAgLTM5LDYgKzM5LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTY2hlZHVsYWJsZUxvYWRlcjsKIGNsYXNz
IFN5bmNOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CisKK3R5cGVkZWYgRGVxdWU8UmVmUHRyPFNjaGVk
dWxhYmxlTG9hZGVyPj4gTG9hZGVyUXVldWU7CiB0eXBlZGVmIHVpbnQ2NF90IFJlc291cmNlTG9h
ZElkZW50aWZpZXI7CiAKIGNsYXNzIEhvc3RSZWNvcmQgOiBwdWJsaWMgUmVmQ291bnRlZDxIb3N0
UmVjb3JkPiB7CkBAIC02NCwxMCArNjYsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhvc3RS
ZWNvcmQoY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQgbWF4UmVxdWVzdHNJbkZsaWdodCk7CiAKLSAg
ICB0eXBlZGVmIERlcXVlPFJlZlB0cjxTY2hlZHVsYWJsZUxvYWRlcj4+IExvYWRlclF1ZXVlOwot
CiAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0c0ZvclF1ZXVlKExvYWRlclF1ZXVlJiwgV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHkpOwotICAgIGJvb2wgbGltaXRzUmVxdWVzdHMoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHksIGJvb2wgc2VyaWFsTG9hZGluZ0VuYWJsZWQpIGNv
bnN0OworICAgIGJvb2wgbGltaXRzUmVxdWVzdHMoV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3Jp
dHksIFNjaGVkdWxhYmxlTG9hZGVyKikgY29uc3Q7CiAKICAgICBMb2FkZXJRdWV1ZSBtX2xvYWRl
cnNQZW5kaW5nW1dlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5SGlnaGVzdCArIDFdOwogICAg
IExvYWRlclF1ZXVlIG1fc3luY0xvYWRlcnNQZW5kaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmNwcAppbmRleCAzY2U3NWM4Li45YWViY2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNw
cApAQCAtMTcsMTQgKzE3LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhSZXF1ZXN0c0luRmxpZ2h0Rm9y
Tm9uSFRUUFByb3RvY29scyA9IDIwOwotc3RhdGljIHVuc2lnbmVkIG1heFJlcXVlc3RzSW5GbGln
aHRQZXJIb3N0OwogCiBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyKCkKICAgICA6IG1fbm9uSFRUUFByb3RvY29sSG9zdChIb3N0UmVjb3Jk
OjpjcmVhdGUoU3RyaW5nKCksIG1heFJlcXVlc3RzSW5GbGlnaHRGb3JOb25IVFRQUHJvdG9jb2xz
KSkKICAgICAsIG1fcmVxdWVzdFRpbWVyKHRoaXMsICZOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1
bGVyOjpyZXF1ZXN0VGltZXJGaXJlZCkKIAogewotICAgIG1heFJlcXVlc3RzSW5GbGlnaHRQZXJI
b3N0ID0gcGxhdGZvcm1Jbml0aWFsaXplTWF4aW11bUhUVFBDb25uZWN0aW9uQ291bnRQZXJIb3N0
KCk7CisgICAgcGxhdGZvcm1Jbml0aWFsaXplTWF4aW11bUhUVFBDb25uZWN0aW9uQ291bnRQZXJI
b3N0KCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVT
ZXJ2ZVBlbmRpbmdSZXF1ZXN0cygpCkBAIC02OCw3ICs2Nyw3IEBAIEhvc3RSZWNvcmQqIE5ldHdv
cmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Omhvc3RGb3JVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYg
dXJsLCBDCiAgICAgU3RyaW5nIGhvc3ROYW1lID0gdXJsLmhvc3QoKTsKICAgICBIb3N0UmVjb3Jk
KiBob3N0ID0gbV9ob3N0cy5nZXQoaG9zdE5hbWUpOwogICAgIGlmICghaG9zdCAmJiBjcmVhdGVI
b3N0UG9saWN5ID09IENyZWF0ZUlmTm90Rm91bmQpIHsKLSAgICAgICAgUmVmUHRyPEhvc3RSZWNv
cmQ+IG5ld0hvc3QgPSBIb3N0UmVjb3JkOjpjcmVhdGUoaG9zdE5hbWUsIG1heFJlcXVlc3RzSW5G
bGlnaHRQZXJIb3N0KTsKKyAgICAgICAgUmVmUHRyPEhvc3RSZWNvcmQ+IG5ld0hvc3QgPSBIb3N0
UmVjb3JkOjpjcmVhdGUoaG9zdE5hbWUsIG1fbWF4UmVxdWVzdHNJbkZsaWdodFBlckhvc3QpOwog
ICAgICAgICBob3N0ID0gbmV3SG9zdC5nZXQoKTsKICAgICAgICAgbV9ob3N0cy5hZGQoaG9zdE5h
bWUsIG5ld0hvc3QucmVsZWFzZSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5k
ZXggMzQwY2Y3Ny4uMGU4NTI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaApAQCAtMjYsNiAr
MjYsNyBAQAogI2lmbmRlZiBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyX2gKICNkZWZpbmUg
TmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcl9oCiAKKyNpbmNsdWRlICJIb3N0UmVjb3JkLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRQcmlvcml0eS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDEsNyArNDIsNiBA
QCBjbGFzcyBLVVJMOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFNjaGVkdWxhYmxlTG9h
ZGVyOwotY2xhc3MgSG9zdFJlY29yZDsKIAogY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZFNjaGVk
dWxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTmV0d29ya1Jlc291cmNlTG9hZFNjaGVk
dWxlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2NoZWR1bGVTZXJ2ZVBlbmRpbmdSZXF1ZXN0cygpOwogICAgIHZvaWQgcmVx
dWVzdFRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8TmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxl
cj4qKTsKIAotICAgIHVuc2lnbmVkIHBsYXRmb3JtSW5pdGlhbGl6ZU1heGltdW1IVFRQQ29ubmVj
dGlvbkNvdW50UGVySG9zdCgpOworICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTWF4aW11bUhU
VFBDb25uZWN0aW9uQ291bnRQZXJIb3N0KCk7CiAKICAgICBzdGF0aWMgdm9pZCByZW1vdmVTY2hl
ZHVsZWRMb2FkZXJzKHZvaWQqIGNvbnRleHQpOwogICAgIHZvaWQgcmVtb3ZlU2NoZWR1bGVkTG9h
ZGVycygpOwpAQCAtOTcsNiArOTcsOCBAQCBwcml2YXRlOgogICAgIAogICAgIE11dGV4IG1fbG9h
ZGVyc1RvUmVtb3ZlTXV0ZXg7CiAgICAgVmVjdG9yPFJlZlB0cjxTY2hlZHVsYWJsZUxvYWRlcj4+
IG1fbG9hZGVyc1RvUmVtb3ZlOworCisgICAgdW5zaWduZWQgbV9tYXhSZXF1ZXN0c0luRmxpZ2h0
UGVySG9zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXJN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Jlc291cmNl
TG9hZFNjaGVkdWxlck1hYy5tbQppbmRleCAxNGIzNjU3Li4xNWYyMWM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVk
dWxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29y
a1Jlc291cmNlTG9hZFNjaGVkdWxlck1hYy5tbQpAQCAtMzcsMTMgKzM3LDE1IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdW5zaWduZWQgTmV0d29y
a1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6cGxhdGZvcm1Jbml0aWFsaXplTWF4aW11bUhUVFBDb25u
ZWN0aW9uQ291bnRQZXJIb3N0KCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6
cGxhdGZvcm1Jbml0aWFsaXplTWF4aW11bUhUVFBDb25uZWN0aW9uQ291bnRQZXJIb3N0KCkKIHsK
ICAgICB3a0luaXRpYWxpemVNYXhpbXVtSFRUUENvbm5lY3Rpb25Db3VudFBlckhvc3QgPSBXS0lu
aXRpYWxpemVNYXhpbXVtSFRUUENvbm5lY3Rpb25Db3VudFBlckhvc3Q7CiAgICAgd2tTZXRIVFRQ
UGlwZWxpbmluZ01heGltdW1Qcmlvcml0eSA9IFdLU2V0SFRUUFBpcGVsaW5pbmdNYXhpbXVtUHJp
b3JpdHk7CiAgICAgd2tTZXRIVFRQUGlwZWxpbmluZ01pbmltdW1GYXN0TGFuZVByaW9yaXR5ID0g
V0tTZXRIVFRQUGlwZWxpbmluZ01pbmltdW1GYXN0TGFuZVByaW9yaXR5OwogCi0gICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHByZWZlcnJlZENvbm5lY3Rpb25Db3VudCA9IDY7CisgICAgLy8gT3Vy
IHByZWZlcnJlZCBjb25uZWN0aW9uLXBlci1ob3N0IGxpbWl0IGlzIHRoZSBzdGFuZGFyZCA2LCBi
dXQgd2UgbmVlZCB0byBsZXQgQ0ZOZXR3b3JrIGhhbmRsZSBhIDd0aAorICAgIC8vIGluIGNhc2Ug
YSBzeW5jaHJvbm91cyBYSFJzIGlzIG1hZGUgd2hpbGUgNiBsb2FkcyBhcmUgYWxyZWFkeSBvdXRz
dGFuZGluZy4KKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHJlZmVycmVkQ29ubmVjdGlvbkNv
dW50ID0gNzsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdW5saW1pdGVkQ29ubmVjdGlvbkNv
dW50ID0gMTAwMDA7CiAKICAgICAvLyBBbHdheXMgc2V0IHRoZSBjb25uZWN0aW9uIGNvdW50IHBl
ciBob3N0LCBldmVuIHdoZW4gcGlwZWxpbmluZy4KQEAgLTYwLDEwICs2MiwxMyBAQCB1bnNpZ25l
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpwbGF0Zm9ybUluaXRpYWxpemVNYXhpbXVt
SFRUUENvbm5lY3Rpb25DbwogICAgICAgICB3a1NldEhUVFBQaXBlbGluaW5nTWluaW11bUZhc3RM
YW5lUHJpb3JpdHkodG9IVFRQUGlwZWxpbmluZ1ByaW9yaXR5KFJlc291cmNlTG9hZFByaW9yaXR5
TWVkaXVtKSk7CiAKICAgICAgICAgLy8gV2hlbiBwaXBlbGluaW5nIGRvIG5vdCByYXRlLWxpbWl0
IHJlcXVlc3RzIHNlbnQgZnJvbSBXZWJDb3JlIHNpbmNlIENGTmV0d29yayBoYW5kbGVzIHRoYXQu
Ci0gICAgICAgIHJldHVybiB1bmxpbWl0ZWRDb25uZWN0aW9uQ291bnQ7CisgICAgICAgIG1fbWF4
UmVxdWVzdHNJbkZsaWdodFBlckhvc3QgPSB1bmxpbWl0ZWRDb25uZWN0aW9uQ291bnQ7CisKKyAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJldHVybiBtYXhpbXVtSFRUUENvbm5lY3Rpb25D
b3VudFBlckhvc3Q7CisgICAgLy8gV2UndmUgYXNrZWQgZm9yIG9uZSBtb3JlIGNvbm5lY3Rpb24g
cGVyIGhvc3QgdGhhbiB3ZSBpbnRlbmQgdG8gdXNlIGluIG1vc3QgY2FzZXMgc28gc3luY2ggWEhS
cyBjYW4gYnlwYXNzIHRoYXQgbGltaXQuCisgICAgbV9tYXhSZXF1ZXN0c0luRmxpZ2h0UGVySG9z
dCA9IG1heGltdW1IVFRQQ29ubmVjdGlvbkNvdW50UGVySG9zdCAtIDE7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="226577"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>