<?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>23022</bug_id>
          
          <creation_ts>2008-12-29 03:41:35 -0800</creation_ts>
          <short_desc>Fix multiple issues with appcache online whitelist handling</short_desc>
          <delta_ts>2009-01-02 03:13:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>103690</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-29 03:41:35 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103694</commentid>
    <comment_count>1</comment_count>
      <attachid>26288</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-29 03:57:26 -0800</bug_when>
    <thetext>Created attachment 26288
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103800</commentid>
    <comment_count>2</comment_count>
      <attachid>26288</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-30 10:34:54 -0800</bug_when>
    <thetext>Comment on attachment 26288
proposed patch

&gt; +    unsigned whitelistSize = m_onlineWhitelist.size();
&gt; +    for (unsigned i = 0; i &lt; whitelistSize; ++i) {

We normally use size_t to iterate vectors.

&gt; +        unsigned whitelistSize = onlineWhitelist.size();
&gt; +        for (unsigned i = 0; i &lt; whitelistSize; ++i) {

Ditto.

For scaling, with large whitelists, it seems we might want to come up with a hash function so we can use a hashed set rather than a vector.

&gt; +# This should work normally.
&gt; +counter.php?uncached
&gt; \ No newline at end of file

Can we add a newline?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103808</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-30 10:57:52 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; For scaling, with large whitelists, it seems we might want to come up with a
&gt; hash function so we can use a hashed set rather than a vector.

I&apos;m not aware of any way to use a hash function for prefix matching. We could use a tree though.

But I doubt that whitelists will be very large.

&gt; &gt; +# This should work normally.
&gt; &gt; +counter.php?uncached
&gt; &gt; \ No newline at end of file
&gt; 
&gt; Can we add a newline?

I didn&apos;t add it intentionally - I wanted to have a test for parsing such a manifest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104053</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-02 03:13:04 -0800</bug_when>
    <thetext>Committed revision 39548.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26288</attachid>
            <date>2008-12-29 03:57:26 -0800</date>
            <delta_ts>2008-12-30 10:34:54 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>OnlineWhitelist.txt</filename>
            <type>text/plain</type>
            <size>13727</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTQ5OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMDgtMTItMjkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAyMgorICAgICAgICBG
aXggbXVsdGlwbGUgaXNzdWVzIHdpdGggYXBwY2FjaGUgb25saW5lIHdoaXRlbGlzdCBoYW5kbGlu
ZworCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvYXBwY2FjaGUvb25saW5lLXdoaXRlbGlzdC5o
dG1sCisKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlOjppc1VSTEluT25saW5lV2hpdGVsaXN0
KTogVGVzdCB3aGl0ZWxpc3QgZW50cmllcyBhcyBwcmVmaXhlcywKKyAgICAgICAgbWFraW5nIGl0
IHBvc3NpYmxlIHRvIHVzZSB0aGVtIGZvciBDR0kgaW52b2NhdGlvbiAoYXMgcmVxdWlyZWQgYnkg
SFRNTDUpLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDogKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpzaG91bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRpb25DYWNoZSk6
CisgICAgICAgIFJlLW9yZGVyZWQgY2hlY2tzLCBzbyB0aGF0IHJlc291cmNlcyB0aGF0IGFyZSBj
YWNoZWQsIGJ1dCBhcmUgYWxzbyBsaXN0ZWQgaW4gb25saW5lIHdoaXRlbGlzdAorICAgICAgICBh
cmUgbG9hZGVkIGZyb20gdGhlIGNhY2hlLiBUaGlzIGlzIHJlcXVpcmVkIGJ5IEhUTUw1LCBhbHRo
b3VnaCBGaXJlZm94IGRvZXNuJ3QgbWF0Y2guCisKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUv
TWFuaWZlc3RQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VNYW5pZmVzdCk6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmg6CisgICAgICAgICogbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGU6Om9ubGluZVdoaXRlbGlzdCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAgQ2hhbmdlZCBvbmxpbmUgd2hpdGVsaXN0
IHRvIGJlIGEgdmVjdG9yIG9mIFVSTHMsIHdoaWNoIGlzIGJldHRlciBzdWl0ZWQgZm9yIHRoZSBu
ZXcgYWxnb3JpdGhtLgorCiAyMDA4LTEyLTI4ICBDYW1lcm9uIFp3YXJpY2ggIDxjd3p3YXJpY2hA
dXdhdGVybG9vLmNhPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAzOTQ5NykKKysrIFdlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODY2LDE5ICs4NjYsMjAg
QEAgYm9vbCBEb2N1bWVudExvYWRlcjo6c2hvdWxkTG9hZFJlc291cmNlRgogICAgIEFwcGxpY2F0
aW9uQ2FjaGUqIGNhY2hlID0gYXBwbGljYXRpb25DYWNoZSgpOwogICAgIGlmICghY2FjaGUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIC8vIElmIHRoZSByZXNvdXJjZSBpcyBu
b3QgYSBIVFRQL0hUVFBTIEdFVCwgdGhlbiBhYm9ydAogICAgIGlmICghQXBwbGljYXRpb25DYWNo
ZTo6cmVxdWVzdElzSFRUUE9ySFRUUFNHZXQocmVxdWVzdCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAKLSAgICBpZiAoY2FjaGUtPmlzVVJMSW5PbmxpbmVXaGl0ZWxpc3QocmVxdWVzdC51
cmwoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIHJlc291cmNlID0gY2Fj
aGUtPnJlc291cmNlRm9yVVJMKHJlcXVlc3QudXJsKCkpOwotICAgIAorCiAgICAgLy8gRG9uJ3Qg
bG9hZCBmb3JlaWduIHJlc291cmNlcy4KKyAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBzaG91bGQg
bm90IGJlIGhlcmUuIEZvcmVpZ24gcmVzb3VyY2VzIGFyZSBvbmx5IHRvIGJlIGlnbm9yZWQgd2hl
biBuYXZpZ2F0aW5nLCBub3QgZHVyaW5nIG90aGVyIGtpbmRzIG9mIGxvYWRzLgogICAgIGlmIChy
ZXNvdXJjZSAmJiAocmVzb3VyY2UtPnR5cGUoKSAmIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6
Rm9yZWlnbikpCiAgICAgICAgIHJlc291cmNlID0gMDsKKworICAgIGlmICghcmVzb3VyY2UgJiYg
Y2FjaGUtPmlzVVJMSW5PbmxpbmVXaGl0ZWxpc3QocmVxdWVzdC51cmwoKSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCShyZXZpc2lvbiAzOTQ5NykKKysr
IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlOjpyZW1vdmVEeW5h
bWljRW50cgogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlOjpzZXRPbmxpbmVXaGl0ZWxpc3QoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBvbmxpbmVXaGl0
ZWxpc3QpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGU6OnNldE9ubGluZVdoaXRlbGlzdChjb25zdCBW
ZWN0b3I8S1VSTD4mIG9ubGluZVdoaXRlbGlzdCkKIHsKICAgICBBU1NFUlQobV9vbmxpbmVXaGl0
ZWxpc3QuaXNFbXB0eSgpKTsKICAgICBtX29ubGluZVdoaXRlbGlzdCA9IG9ubGluZVdoaXRlbGlz
dDsgCkBAIC0xNTgsMTIgKzE1OCwxMiBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGU6OnNldE9ubGlu
ZVdoaXRlbGlzCiAKIGJvb2wgQXBwbGljYXRpb25DYWNoZTo6aXNVUkxJbk9ubGluZVdoaXRlbGlz
dChjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgaWYgKCF1cmwuaGFzUmVmKCkpCi0gICAgICAgIHJl
dHVybiBtX29ubGluZVdoaXRlbGlzdC5jb250YWlucyh1cmwpOwotICAgIAotICAgIEtVUkwgY29w
eSh1cmwpOwotICAgIGNvcHkuc2V0UmVmKFN0cmluZygpKTsKLSAgICByZXR1cm4gbV9vbmxpbmVX
aGl0ZWxpc3QuY29udGFpbnMoY29weSk7CisgICAgdW5zaWduZWQgd2hpdGVsaXN0U2l6ZSA9IG1f
b25saW5lV2hpdGVsaXN0LnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd2hp
dGVsaXN0U2l6ZTsgKytpKSB7CisgICAgICAgIGlmIChwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1
YWwodXJsLCBtX29ubGluZVdoaXRlbGlzdFtpXSkgJiYgdXJsLnN0cmluZygpLnN0YXJ0c1dpdGgo
bV9vbmxpbmVXaGl0ZWxpc3RbaV0uc3RyaW5nKCkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0KICAgICAKIHZvaWQgQXBwbGljYXRpb25DYWNo
ZTo6Y2xlYXJTdG9yYWdlSUQoKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGUuaAkocmV2aXNpb24gMzk0OTcpCisrKyBXZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDkgKzY3LDkgQEAgcHVi
bGljOgogICAgIGJvb2wgYWRkRHluYW1pY0VudHJ5KGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2
b2lkIHJlbW92ZUR5bmFtaWNFbnRyeShjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgCi0gICAgdm9p
ZCBzZXRPbmxpbmVXaGl0ZWxpc3QoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBvbmxpbmVXaGl0ZWxp
c3QpOwotICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgb25saW5lV2hpdGVsaXN0KCkgY29uc3Qg
eyByZXR1cm4gbV9vbmxpbmVXaGl0ZWxpc3Q7IH0KLSAgICBib29sIGlzVVJMSW5PbmxpbmVXaGl0
ZWxpc3QoY29uc3QgS1VSTCYpOworICAgIHZvaWQgc2V0T25saW5lV2hpdGVsaXN0KGNvbnN0IFZl
Y3RvcjxLVVJMPiYpOworICAgIGNvbnN0IFZlY3RvcjxLVVJMPiYgb25saW5lV2hpdGVsaXN0KCkg
Y29uc3QgeyByZXR1cm4gbV9vbmxpbmVXaGl0ZWxpc3Q7IH0KKyAgICBib29sIGlzVVJMSW5Pbmxp
bmVXaGl0ZWxpc3QoY29uc3QgS1VSTCYpOyAvLyBUaGVyZSBpcyBhbiBlbnRyeSBpbiBvbmxpbmUg
d2hpdGVsaXN0IHRoYXQgaGFzIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgcmVzb3VyY2UncyBVUkwg
YW5kIHRoYXQgaXMgYSBwcmVmaXggbWF0Y2ggZm9yIHRoZSByZXNvdXJjZSdzIFVSTC4KICAgICAK
ICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBkdW1wKCk7CkBAIC04NCwxNSArODQsMTYgQEAgcHVi
bGljOgogICAgIHZvaWQgY2xlYXJTdG9yYWdlSUQoKTsKICAgICAKICAgICBzdGF0aWMgYm9vbCBy
ZXF1ZXN0SXNIVFRQT3JIVFRQU0dldChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKwogcHJpdmF0
ZToKICAgICBBcHBsaWNhdGlvbkNhY2hlKCk7CiAgICAgCiAgICAgQXBwbGljYXRpb25DYWNoZUdy
b3VwKiBtX2dyb3VwOwogICAgIFJlc291cmNlTWFwIG1fcmVzb3VyY2VzOwogICAgIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZSogbV9tYW5pZmVzdDsKLSAgICAKLSAgICBIYXNoU2V0PFN0cmluZz4g
bV9vbmxpbmVXaGl0ZWxpc3Q7Ci0gICAgCisKKyAgICBWZWN0b3I8S1VSTD4gbV9vbmxpbmVXaGl0
ZWxpc3Q7CisKICAgICB1bnNpZ25lZCBtX3N0b3JhZ2VJRDsKIH07CiAKSW5kZXg6IFdlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAJKHJl
dmlzaW9uIDM5NDk3KQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTksMTQgKzM1OSwxNCBAQCBib29sIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsCiAgICAgfQogICAgIAogICAgIC8vIFN0
b3JlIHRoZSBvbmxpbmUgd2hpdGVsaXN0Ci0gICAgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBvbmxp
bmVXaGl0ZWxpc3QgPSBjYWNoZS0+b25saW5lV2hpdGVsaXN0KCk7CisgICAgY29uc3QgVmVjdG9y
PEtVUkw+JiBvbmxpbmVXaGl0ZWxpc3QgPSBjYWNoZS0+b25saW5lV2hpdGVsaXN0KCk7CiAgICAg
ewotICAgICAgICBIYXNoU2V0PFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG9ubGluZVdo
aXRlbGlzdC5lbmQoKTsKLSAgICAgICAgZm9yIChIYXNoU2V0PFN0cmluZz46OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gb25saW5lV2hpdGVsaXN0LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAg
ICAgICB1bnNpZ25lZCB3aGl0ZWxpc3RTaXplID0gb25saW5lV2hpdGVsaXN0LnNpemUoKTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdoaXRlbGlzdFNpemU7ICsraSkgewogICAg
ICAgICAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiSU5TRVJUIElO
VE8gQ2FjaGVXaGl0ZWxpc3RVUkxzICh1cmwsIGNhY2hlKSBWQUxVRVMgKD8sID8pIik7CiAgICAg
ICAgICAgICBzdGF0ZW1lbnQucHJlcGFyZSgpOwogCi0gICAgICAgICAgICBzdGF0ZW1lbnQuYmlu
ZFRleHQoMSwgKml0KTsKKyAgICAgICAgICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBvbmxpbmVX
aGl0ZWxpc3RbaV0pOwogICAgICAgICAgICAgc3RhdGVtZW50LmJpbmRJbnQ2NCgyLCBjYWNoZVN0
b3JhZ2VJRCk7CiAKICAgICAgICAgICAgIGlmICghZXhlY3V0ZVN0YXRlbWVudChzdGF0ZW1lbnQp
KQpAQCAtNTc1LDkgKzU3NSw5IEBAIFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGlj
YXRpb24KICAgICAgICAgcmV0dXJuIDA7CiAgICAgd2hpdGVsaXN0U3RhdGVtZW50LmJpbmRJbnQ2
NCgxLCBzdG9yYWdlSUQpOwogICAgIAotICAgIEhhc2hTZXQ8U3RyaW5nPiB3aGl0ZWxpc3Q7Cisg
ICAgVmVjdG9yPEtVUkw+IHdoaXRlbGlzdDsKICAgICB3aGlsZSAoKHJlc3VsdCA9IHdoaXRlbGlz
dFN0YXRlbWVudC5zdGVwKCkpID09IFNRTFJlc3VsdFJvdykgCi0gICAgICAgIHdoaXRlbGlzdC5h
ZGQod2hpdGVsaXN0U3RhdGVtZW50LmdldENvbHVtblRleHQoMCkpOworICAgICAgICB3aGl0ZWxp
c3QuYXBwZW5kKHdoaXRlbGlzdFN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApKTsKIAogICAgIGlm
IChyZXN1bHQgIT0gU1FMUmVzdWx0RG9uZSkKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3Qg
bG9hZCBjYWNoZSBvbmxpbmUgd2hpdGVsaXN0LCBlcnJvciBcIiVzXCIiLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFy
c2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBh
cnNlci5jcHAJKHJldmlzaW9uIDM5NDk3KQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFu
aWZlc3RQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgYm9vbCBw
YXJzZU1hbmlmZXN0KGNvbnN0IEtVUkwmIG1hbmlmZXN0VQogICAgICAgICAgICAgaWYgKG1vZGUg
PT0gRXhwbGljaXQpCiAgICAgICAgICAgICAgICAgbWFuaWZlc3QuZXhwbGljaXRVUkxzLmFkZCh1
cmwuc3RyaW5nKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1hbmlmZXN0
Lm9ubGluZVdoaXRlbGlzdGVkVVJMcy5hZGQodXJsLnN0cmluZygpKTsKKyAgICAgICAgICAgICAg
ICBtYW5pZmVzdC5vbmxpbmVXaGl0ZWxpc3RlZFVSTHMuYXBwZW5kKHVybCk7CiAgICAgICAgICAg
ICAKICAgICAgICAgfSBlbHNlIGlmIChtb2RlID09IEZhbGxiYWNrKSB7CiAgICAgICAgICAgICBj
b25zdCBVQ2hhciogcCA9IGxpbmUuY2hhcmFjdGVycygpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oCShyZXZpc2lvbiAzOTQ5NykKKysrIFdlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMw
LDggQEAKIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUg
IlN0cmluZ0hhc2guaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCkBAIC0zOCw3ICs0
MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEtVUkw7CiAKIHN0cnVjdCBNYW5pZmVz
dCB7Ci0gICAgSGFzaFNldDxTdHJpbmc+IG9ubGluZVdoaXRlbGlzdGVkVVJMczsKKyAgICBWZWN0
b3I8S1VSTD4gb25saW5lV2hpdGVsaXN0ZWRVUkxzOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBleHBs
aWNpdFVSTHM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gZmFsbGJhY2tVUkxzOwogfTsK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDM5NDk4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDgtMTItMjkgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAy
MgorICAgICAgICBGaXggbXVsdGlwbGUgaXNzdWVzIHdpdGggYXBwY2FjaGUgb25saW5lIHdoaXRl
bGlzdCBoYW5kbGluZworCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMv
Y291bnRlci5waHA6IEFkZGVkIGEgcmVzb3VyY2UgdGhhdCBjaGFuZ2VzIG9uIGVhY2ggYWNjZXNz
LAorICAgICAgICBtYWtpbmcgaXQgcG9zc2libGUgdG8gdGVzdCB0aGF0IHRoZSBuZXR3b3JrIHdh
cyBoaXQgd2hlbiBsb2FkaW5nLgorCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9vbmxp
bmUtd2hpdGVsaXN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9h
cHBjYWNoZS9vbmxpbmUtd2hpdGVsaXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvYXBwY2FjaGUvcmVzb3VyY2VzL29ubGluZS13aGl0ZWxpc3QubWFuaWZlc3Q6IEFkZGVkLgor
CiAyMDA4LTEyLTI4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwY2FjaGUvb25saW5lLXdoaXRlbGlzdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vbmxpbmUtd2hpdGVsaXN0LWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb25s
aW5lLXdoaXRlbGlzdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAor
VGVzdCBvbmxpbmUgd2hpdGVsaXN0IGZ1bmN0aW9uYWxpdHkuIFNob3VsZCBzYXkgUEFTUzoKKwor
UEFTUworCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL29ubGluZS13aGl0ZWxpc3QtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1p
bWUtdHlwZQogICArIHRleHQvcGxhaW4KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb25saW5lLXdoaXRlbGlzdC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb25saW5l
LXdoaXRlbGlzdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9h
cHBjYWNoZS9vbmxpbmUtd2hpdGVsaXN0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzcg
QEAKKzxodG1sIG1hbmlmZXN0PSJyZXNvdXJjZXMvb25saW5lLXdoaXRlbGlzdC5tYW5pZmVzdCI+
Cis8Ym9keT4KKzxwPlRlc3Qgb25saW5lIHdoaXRlbGlzdCBmdW5jdGlvbmFsaXR5LiBTaG91bGQg
c2F5IFBBU1M6PC9wPgorCis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPHNjcmlwdD4KK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCkKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9
CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKwordmFyIGhhZEVy
cm9yID0gZmFsc2U7CisKK2Z1bmN0aW9uIGNhbkxvYWQodXJsKQoreworICAgIHRyeSB7CisgICAg
ICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICAgICAgcmVxLm9wZW4oIkdF
VCIsIHVybCwgZmFsc2UpOworICAgICAgICByZXEuc2VuZCgiIik7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30K
KworZnVuY3Rpb24gbG9hZCh1cmwpCit7CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHJlcSA9IG5l
dyBYTUxIdHRwUmVxdWVzdCgpOworICAgICAgICByZXEub3BlbigiR0VUIiwgdXJsLCBmYWxzZSk7
CisgICAgICAgIHJlcS5zZW5kKCIiKTsKKyAgICAgICAgcmV0dXJuIHJlcS5yZXNwb25zZVRleHQ7
CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgYWxlcnQoIlVuZXhwZWN0ZWQgZXJyb3IgbG9h
ZGluZyAiICsgdXJsICsgIjogIiArIGV4KTsKKyAgICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAg
IH0KK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWYgKGxvYWQoInJlc291cmNlcy9jb3Vu
dGVyLnBocD9jYWNoZWQiKSAhPSBsb2FkKCJyZXNvdXJjZXMvY291bnRlci5waHA/Y2FjaGVkIikp
IHsKKyAgICAgICAgbG9nKCJGQUlMOiBFeHBsaWNpdCBlbnRyeSBkaWRuJ3Qgb3ZlcnJpZGUgb25s
aW5lIHdoaXRlbGlzdC4iKTsKKyAgICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAgIH0KKworICAg
IGlmIChsb2FkKCJyZXNvdXJjZXMvY291bnRlci5waHA/dW5jYWNoZWQiKSA9PSBsb2FkKCJyZXNv
dXJjZXMvY291bnRlci5waHA/dW5jYWNoZWQiKSkgeworICAgICAgICBsb2coIkZBSUw6IE9ubGlu
ZSB3aGl0ZWxpc3QgcmVzb3VyY2Ugd2Fzbid0IHJlbG9hZGVkIGZyb20gbmV0d29yay4iKTsKKyAg
ICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAgIH0KKworICAgIGlmIChsb2FkKCJyZXNvdXJjZXMv
Y291bnRlci5waHA/dW5jYWNoZWR4eHgiKSA9PSBsb2FkKCJyZXNvdXJjZXMvY291bnRlci5waHA/
dW5jYWNoZWR4eHgiKSkgeworICAgICAgICBsb2coIkZBSUw6IE9ubGluZSB3aGl0ZWxpc3QgcmVz
b3VyY2Ugd2Fzbid0IHJlbG9hZGVkIGZyb20gbmV0d29yayAocHJlZml4IG1hdGNoaW5nKS4iKTsK
KyAgICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAgIH0KKworICAgIGlmIChjYW5Mb2FkKCJyZXNv
dXJjZXMvY291bnRlci5waHA/Zm9vYmFyIikpIHsKKyAgICAgICAgbG9nKCJGQUlMOiBVbmNhY2hl
ZCByZXNvdXJjZSB3YXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZC4iKTsKKyAgICAgICAgaGFkRXJyb3Ig
PSB0cnVlOworICAgIH0KKworICAgIGxvZyhoYWRFcnJvciA/ICJGQUlMIiA6ICJQQVNTIik7CisK
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRM
aXN0ZW5lcignY2FjaGVkJywgdGVzdCwgZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVu
dExpc3RlbmVyKCdub3VwZGF0ZScsIHRlc3QsIGZhbHNlKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL29ubGluZS13aGl0ZWxpc3QuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5
cGUKICAgKyB0ZXh0L2h0bWwKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hl
L3Jlc291cmNlcy9jb3VudGVyLnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL3Jlc291cmNlcy9jb3VudGVyLnBocAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2NvdW50ZXIucGhwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDIzIEBACis8P3BocAorcmVxdWlyZV9vbmNlICcuLi8uLi9yZXNvdXJj
ZXMvcG9ydGFiaWxpdHlMYXllci5waHAnOworCiskdG1wRmlsZSA9IHN5c19nZXRfdGVtcF9kaXIo
KSAuICIvIiAuICJhcHBjYWNoZV9jb3VudGVyIjsKKworZnVuY3Rpb24gc3RlcENvdW50ZXIoJGZp
bGUpCit7CisgICAgaWYgKCFmaWxlX2V4aXN0cygkZmlsZSkpIHsKKyAgICAgICAgZmlsZV9wdXRf
Y29udGVudHMoJGZpbGUsICIwIik7CisgICAgICAgIHJldHVybiAiMCI7CisgICAgfQorICAgICR2
YWx1ZSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlKTsKKyAgICBmaWxlX3B1dF9jb250ZW50cygk
ZmlsZSwgKyskdmFsdWUpOworICAgIHJldHVybiAkdmFsdWU7Cit9CisKK2hlYWRlcigiRXhwaXJl
czogVGh1LCAwMSBEZWMgMjAwMyAxNjowMDowMCBHTVQiKTsKK2hlYWRlcigiQ2FjaGUtQ29udHJv
bDogbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSIpOworaGVhZGVyKCJQcmFnbWE6IG5vLWNhY2hl
Iik7CitoZWFkZXIoIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbiIpOworCitwcmludChzdGVwQ291
bnRlcigkdG1wRmlsZSkpOworPz4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2Fj
aGUvcmVzb3VyY2VzL29ubGluZS13aGl0ZWxpc3QubWFuaWZlc3QKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvb25saW5lLXdoaXRlbGlzdC5t
YW5pZmVzdAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUv
cmVzb3VyY2VzL29ubGluZS13aGl0ZWxpc3QubWFuaWZlc3QJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTQgQEAKK0NBQ0hFIE1BTklGRVNUCitjb3VudGVyLnBocD9jYWNoZWQKKworTkVUV09SSzoK
KyMgVGhlc2UgYXJlIHByZWZpeGVzIGZvciByZXF1ZXN0cyB3ZSB0ZXN0LCBidXQgdGhleSBhcmUg
bm90IHNhbWUgb3JpZ2luLCBzbyB0aGV5IHdpbGwgYmUgc2tpcHBlZC4KK2h0dHA6Ly8KK2h0dHA6
Ly8xMjcKK2h0dHA6Ly8xMjcuMC4wLjE6OAorCisjIFRoaXMgc2hvdWxkIGJlIGlnbm9yZWQsIGJl
Y2F1c2UgZXhwbGljaXQgZW50cmllcyBhcmUgY2hlY2tlZCBiZWZvcmUgb25saW5lIHdoaXRlbGlz
dAorY291bnRlci5waHA/Y2FjaGVkCisKKyMgVGhpcyBzaG91bGQgd29yayBub3JtYWxseS4KK2Nv
dW50ZXIucGhwP3VuY2FjaGVkClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="12443"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>