<?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>75821</bug_id>
          
          <creation_ts>2012-01-08 20:01:02 -0800</creation_ts>
          <short_desc>Using strncmp() for comparing scheme and port numbers is inefficient</short_desc>
          <delta_ts>2012-02-18 14:51:47 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>andersca</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>531935</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-01-08 20:01:02 -0800</bug_when>
    <thetext>In KURL, we frequently compare very short strings, like the scheme and port.
Currently, we use strncmp(), we could just compare char by char and let the compiler inline everything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531937</commentid>
    <comment_count>1</comment_count>
      <attachid>121613</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-01-08 20:09:18 -0800</bug_when>
    <thetext>Created attachment 121613
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531945</commentid>
    <comment_count>2</comment_count>
      <attachid>121613</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-01-08 20:44:17 -0800</bug_when>
    <thetext>Comment on attachment 121613
Patch

You should be able to do all of this without hard-coding the lengths of the arrays.

template&lt;size_t bLength&gt; static inline bool equal(const char* a, const char b[bLength])

Try it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532821</commentid>
    <comment_count>3</comment_count>
      <attachid>121613</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-01-09 22:27:22 -0800</bug_when>
    <thetext>Comment on attachment 121613
Patch

I&apos;ll update later this week, I am busy with another bug atm :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536247</commentid>
    <comment_count>4</comment_count>
      <attachid>122562</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-01-14 20:40:50 -0800</bug_when>
    <thetext>Created attachment 122562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536248</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-01-14 20:42:00 -0800</bug_when>
    <thetext>The template &quot;template&lt;size_t bLength&gt; static inline bool equal(const char* a, const char b[bLength])&quot; never matched.
I read online to use a reference to the array, and this time the compiler match the template.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542813</commentid>
    <comment_count>6</comment_count>
      <attachid>124046</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-01-25 17:37:03 -0800</bug_when>
    <thetext>Created attachment 124046
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543284</commentid>
    <comment_count>7</comment_count>
      <attachid>124046</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-01-26 11:00:36 -0800</bug_when>
    <thetext>Comment on attachment 124046
Patch

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

&gt; Source/WebCore/platform/KURL.cpp:1079
&gt; +template&lt;size_t referenceLength&gt;
&gt; +static inline bool equal(const char* str, size_t length, const char (&amp;reference)[referenceLength])
&gt; +{
&gt; +    return length == referenceLength &amp;&amp; equal(str, reference);
&gt;  }

This compares two strings. It seems a little strange that the first string is named “str” with length “length” and the second is named “reference” with name “referenceLength”. I would just name them “a” and “b”, or “stringA” and “stringB”, and “lengthA” and “lengthB”, or something like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543293</commentid>
    <comment_count>8</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-01-26 11:03:38 -0800</bug_when>
    <thetext>&gt; This compares two strings. It seems a little strange that the first string is named “str” with length “length” and the second is named “reference” with name “referenceLength”. I would just name them “a” and “b”, or “stringA” and “stringB”, and “lengthA” and “lengthB”, or something like that.

Stricto sensu, it is comparing the string to an (reference) const array, that is why I had chosen the name &quot;reference&quot;. I do not mind updating that :)

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543305</commentid>
    <comment_count>9</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-01-26 11:15:44 -0800</bug_when>
    <thetext>For reference, I still don&apos;t think it&apos;s necessary to declare the strings as character arrays, just make equals handle the trailing null character.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543360</commentid>
    <comment_count>10</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-01-26 12:10:09 -0800</bug_when>
    <thetext>Committed r106025: &lt;http://trac.webkit.org/changeset/106025&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546212</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-01-31 10:31:37 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; For reference, I still don&apos;t think it&apos;s necessary to declare the strings as character arrays, just make equals handle the trailing null character.

Right, we could easily do it that way which would look a little nicer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559829</commentid>
    <comment_count>12</comment_count>
      <attachid>124046</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-02-18 14:51:47 -0800</bug_when>
    <thetext>Comment on attachment 124046
Patch

Clearing useless flag.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121613</attachid>
            <date>2012-01-08 20:09:18 -0800</date>
            <delta_ts>2012-01-14 20:40:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75821-20120108200917.patch</filename>
            <type>text/plain</type>
            <size>6321</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZhMmQ4YTNkMjg0NWYy
ZTlhMzliMjI0NWNmN2ZjMjNkMTU4YzcxNC4uOTM3MmVmYjZkZDBmMzRiY2E2NmM0ZWUzYjUyNmE1
NTA3MTAxZGQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAxLTA4ICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2luZyBzdHJu
Y21wKCkgZm9yIGNvbXBhcmluZyBzY2hlbWUgYW5kIHBvcnQgbnVtYmVycyBpcyBpbmVmZmVjdGl2
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MjEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNl
IHRoZSBlcXVhbCgpIGZ1bmN0aW9uIGNvbXBhcmluZyAyIGFyYml0cmFyeSBzdHJpbmdzIGJ5IGEg
dGVtcGxhdGUKKyAgICAgICAgY29tcGFyaW5nIHRoZSBzdHJpbmcgdG8gYW4gYXJyYXksIGNoYXJh
Y3RlciBieSBjaGFyYWN0ZXIuCisKKyAgICAgICAgVGhpcyBpcyBvbmx5IHVzZWQgZm9yIHNtYWxs
IHN0cmluZ3M6IHRoZSBzY2hlbWVzIGFuZCB0aGUgcG9ydHMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9LVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6
OjEpOgorICAgICAgICAoV2ViQ29yZTo6aXNEZWZhdWx0UG9ydEZvclNjaGVtZSk6CisgICAgICAg
IChXZWJDb3JlOjppc05vbkZpbGVIaWVyYXJjaGljYWxTY2hlbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNDYW5vbmljYWxIb3N0bmFtZUxvd2VyY2FzZUZvclNjaGVtZSk6CisKIDIwMTItMDEtMDgg
IExlbyBZYW5nICA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNuPgogCiAgICAgICAgIFtCbGFj
a0JlcnJ5XSBVc2UgdGhlIGNvbmNyZXRlIEZyYW1lTmV0d29ya2luZ0NvbnRleHRCbGFja0JlcnJ5
IHRvIGFjY2VzcyBGcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VS
TC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAppbmRleCAyNDA4Y2MyYjQy
NTU3NjU5NDBhNjA0ZTdhMmNjNmZlOTljZjc5YzU0Li4zOGFhODkzZTg3ZjIxZGExOTlmYWFjMzAw
OGQ3MDY0OTYyMDQxYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcApAQCAtNjgsNiArNjgs
MTggQEAgc3RhdGljIGlubGluZSBib29sIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UoVUNoYXIg
Y2hhcmFjdGVyLCBjaGFyIGxvd2VyY2FzZUxldHQKIAogI2lmICFVU0UoR09PR0xFVVJMKQogCitz
dGF0aWMgY29uc3QgY2hhciB3c1NjaGVtZVtdID0geyd3JywgJ3MnfTsKK3N0YXRpYyBjb25zdCBj
aGFyIGZ0cFNjaGVtZVtdID0geydmJywgJ3QnLCAncCd9Oworc3RhdGljIGNvbnN0IGNoYXIgZnRw
UG9ydFtdID0geycyJywgJzEnfTsKK3N0YXRpYyBjb25zdCBjaGFyIHdzc1NjaGVtZVtdID0geyd3
JywgJ3MnLCAncyd9Oworc3RhdGljIGNvbnN0IGNoYXIgZmlsZVNjaGVtZVtdID0geydmJywgJ2kn
LCAnbCcsICdlJ307CitzdGF0aWMgY29uc3QgY2hhciBodHRwU2NoZW1lW10gPSB7J2gnLCAndCcs
ICd0JywgJ3AnfTsKK3N0YXRpYyBjb25zdCBjaGFyIGh0dHBQb3J0W10gPSB7JzgnLCAnMCd9Owor
c3RhdGljIGNvbnN0IGNoYXIgaHR0cHNTY2hlbWVbXSA9IHsnaCcsICd0JywgJ3QnLCAncCcsICdz
J307CitzdGF0aWMgY29uc3QgY2hhciBodHRwc1BvcnRbXSA9IHsnNCcsICc0JywgJzMnfTsKK3N0
YXRpYyBjb25zdCBjaGFyIGdvcGhlclNjaGVtZVtdID0geydnJywgJ28nLCAncCcsICdoJywgJ2Un
LCAncid9Oworc3RhdGljIGNvbnN0IGNoYXIgZ29waGVyUG9ydFtdID0geyc3JywgJzAnfTsKKwog
c3RhdGljIGlubGluZSBib29sIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UoY2hhciBjaGFyYWN0
ZXIsIGNoYXIgbG93ZXJjYXNlTGV0dGVyKQogewogICAgIEFTU0VSVChpc0FTQ0lJTG93ZXIobG93
ZXJjYXNlTGV0dGVyKSk7CkBAIC0xMDUwLDEzICsxMDYyLDIyIEBAIHZvaWQgS1VSTDo6cGFyc2Uo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcGFyc2UoYnVmZmVyLmRhdGEoKSwgJnN0cmluZyk7
CiB9CiAKLS8vIEZJWE1FOiAobGVuQSAhPSBsZW5CKSBpcyBuZXZlciB0cnVlIGluIHRoZSB3YXkg
dGhpcyBmdW5jdGlvbiBpcyB1c2VkLgotLy8gRklYTUU6IFRoaXMgaXMgb25seSB1c2VkIGZvciBz
aG9ydCBzdHJpbmcsIHdlIHNob3VsZCByZXBsYWNlIGVxdWFsKCkgYnkgYSByZWN1cnNpdmUgdGVt
cGxhdGUgY29tcGFyaW5nIHRoZSBzdHJpbmdzIHdpdGhvdXQgbG9vcC4KLXN0YXRpYyBpbmxpbmUg
Ym9vbCBlcXVhbChjb25zdCBjaGFyKiBhLCBzaXplX3QgbGVuQSwgY29uc3QgY2hhciogYiwgc2l6
ZV90IGxlbkIpCit0ZW1wbGF0ZTxzaXplX3QgbGVuZ3RoPgorc3RhdGljIGlubGluZSBib29sIGVx
dWFsKGNvbnN0IGNoYXIqIGEsIGNvbnN0IGNoYXIgYltdKQogewotICAgIGlmIChsZW5BICE9IGxl
bkIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gIXN0cm5jbXAoYSwgYiwgbGVu
QSk7CisgICAgcmV0dXJuIGVxdWFsPGxlbmd0aCAtIDE+KGEsIGIpICYmIChhW2xlbmd0aCAtIDFd
ID09IGJbbGVuZ3RoIC0gMV0pOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9vbCBlcXVhbDwx
Pihjb25zdCBjaGFyKiBhLCBjb25zdCBjaGFyIGJbXSkKK3sKKyAgICByZXR1cm4gYVswXSA9PSBi
WzBdOworfQorCit0ZW1wbGF0ZTxzaXplX3QgcmVmZXJlbmNlTGVuZ3RoPgorc3RhdGljIGlubGlu
ZSBib29sIGVxdWFsKGNvbnN0IGNoYXIqIHN0ciwgc2l6ZV90IGxlbmd0aCwgY29uc3QgY2hhciBy
ZWZlcmVuY2VbXSkKK3sKKyAgICByZXR1cm4gbGVuZ3RoID09IHJlZmVyZW5jZUxlbmd0aCAmJiBl
cXVhbDxyZWZlcmVuY2VMZW5ndGg+KHN0ciwgcmVmZXJlbmNlKTsKIH0KIAogLy8gTGlzdCBvZiBk
ZWZhdWx0IHNjaGVtZXMgaXMgdGFrZW4gZnJvbSBnb29nbGUtdXJsOgpAQCAtMTA2NywxOSArMTA4
OCwxOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNEZWZhdWx0UG9ydEZvclNjaGVtZShjb25zdCBj
aGFyKiBwb3J0LCBzaXplX3QgcG9ydExlbmd0aCwgYwogICAgIC8vIHRoZSBjb2RlIHdhcyBtb3Zl
ZCBmcm9tIGdvb2dsZS11cmwsIGJ1dCBtYXkgYmUgcmVtb3ZlZCBsYXRlci4KICAgICBzd2l0Y2gg
KHNjaGVtZUxlbmd0aCkgewogICAgIGNhc2UgMjoKLSAgICAgICAgcmV0dXJuIGVxdWFsKCJ3cyIs
IDIsIHNjaGVtZSwgc2NoZW1lTGVuZ3RoKSAmJiBlcXVhbCgiODAiLCAyLCBwb3J0LCBwb3J0TGVu
Z3RoKTsKKyAgICAgICAgcmV0dXJuIGVxdWFsPDI+KHNjaGVtZSwgd3NTY2hlbWUpICYmIGVxdWFs
PDI+KHBvcnQsIHBvcnRMZW5ndGgsIGh0dHBQb3J0KTsKICAgICBjYXNlIDM6Ci0gICAgICAgIGlm
IChlcXVhbCgiZnRwIiwgMywgc2NoZW1lLCBzY2hlbWVMZW5ndGgpKQotICAgICAgICAgICAgcmV0
dXJuIGVxdWFsKCIyMSIsIDIsIHBvcnQsIHBvcnRMZW5ndGgpOwotICAgICAgICBpZiAoZXF1YWwo
IndzcyIsIDMsIHNjaGVtZSwgc2NoZW1lTGVuZ3RoKSkKLSAgICAgICAgICAgIHJldHVybiBlcXVh
bCgiNDQzIiwgMywgcG9ydCwgcG9ydExlbmd0aCk7CisgICAgICAgIGlmIChlcXVhbDwzPihzY2hl
bWUsIGZ0cFNjaGVtZSkpCisgICAgICAgICAgICByZXR1cm4gZXF1YWw8Mj4ocG9ydCwgcG9ydExl
bmd0aCwgZnRwUG9ydCk7CisgICAgICAgIGlmIChlcXVhbDwzPihzY2hlbWUsIHdzc1NjaGVtZSkp
CisgICAgICAgICAgICByZXR1cm4gZXF1YWw8Mz4ocG9ydCwgcG9ydExlbmd0aCwgaHR0cHNQb3J0
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA0OgotICAgICAgICByZXR1cm4gZXF1YWwoImh0
dHAiLCA0LCBzY2hlbWUsIHNjaGVtZUxlbmd0aCkgJiYgZXF1YWwoIjgwIiwgMiwgcG9ydCwgcG9y
dExlbmd0aCk7CisgICAgICAgIHJldHVybiBlcXVhbDw0PihzY2hlbWUsIGh0dHBTY2hlbWUpICYm
IGVxdWFsPDI+KHBvcnQsIHBvcnRMZW5ndGgsIGh0dHBQb3J0KTsKICAgICBjYXNlIDU6Ci0gICAg
ICAgIHJldHVybiBlcXVhbCgiaHR0cHMiLCA1LCBzY2hlbWUsIHNjaGVtZUxlbmd0aCkgJiYgZXF1
YWwoIjQ0MyIsIDMsIHBvcnQsIHBvcnRMZW5ndGgpOworICAgICAgICByZXR1cm4gZXF1YWw8NT4o
c2NoZW1lLCBodHRwc1NjaGVtZSkgJiYgZXF1YWw8Mz4ocG9ydCwgcG9ydExlbmd0aCwgaHR0cHNQ
b3J0KTsKICAgICBjYXNlIDY6Ci0gICAgICAgIHJldHVybiBlcXVhbCgiZ29waGVyIiwgNiwgc2No
ZW1lLCBzY2hlbWVMZW5ndGgpICYmIGVxdWFsKCI3MCIsIDIsIHBvcnQsIHBvcnRMZW5ndGgpOwor
ICAgICAgICByZXR1cm4gZXF1YWw8Nj4oc2NoZW1lLCBnb3BoZXJTY2hlbWUpICYmIGVxdWFsPDI+
KHBvcnQsIHBvcnRMZW5ndGgsIGdvcGhlclBvcnQpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7
CiB9CkBAIC0xMDkzLDE1ICsxMTE0LDE1IEBAIHN0YXRpYyBib29sIGlzTm9uRmlsZUhpZXJhcmNo
aWNhbFNjaGVtZShjb25zdCBjaGFyKiBzY2hlbWUsIHNpemVfdCBzY2hlbWVMZW5ndGgpCiB7CiAg
ICAgc3dpdGNoIChzY2hlbWVMZW5ndGgpIHsKICAgICBjYXNlIDI6Ci0gICAgICAgIHJldHVybiBl
cXVhbCgid3MiLCAyLCBzY2hlbWUsIHNjaGVtZUxlbmd0aCk7CisgICAgICAgIHJldHVybiBlcXVh
bDwyPihzY2hlbWUsIHdzU2NoZW1lKTsKICAgICBjYXNlIDM6Ci0gICAgICAgIHJldHVybiBlcXVh
bCgiZnRwIiwgMywgc2NoZW1lLCBzY2hlbWVMZW5ndGgpIHx8IGVxdWFsKCJ3c3MiLCAzLCBzY2hl
bWUsIHNjaGVtZUxlbmd0aCk7CisgICAgICAgIHJldHVybiBlcXVhbDwzPihzY2hlbWUsIGZ0cFNj
aGVtZSkgfHwgZXF1YWw8Mz4oc2NoZW1lLCB3c3NTY2hlbWUpOwogICAgIGNhc2UgNDoKLSAgICAg
ICAgcmV0dXJuIGVxdWFsKCJodHRwIiwgNCwgc2NoZW1lLCBzY2hlbWVMZW5ndGgpOworICAgICAg
ICByZXR1cm4gZXF1YWw8ND4oc2NoZW1lLCBodHRwU2NoZW1lKTsKICAgICBjYXNlIDU6Ci0gICAg
ICAgIHJldHVybiBlcXVhbCgiaHR0cHMiLCA1LCBzY2hlbWUsIHNjaGVtZUxlbmd0aCk7CisgICAg
ICAgIHJldHVybiBlcXVhbDw1PihzY2hlbWUsIGh0dHBzU2NoZW1lKTsKICAgICBjYXNlIDY6Ci0g
ICAgICAgIHJldHVybiBlcXVhbCgiZ29waGVyIiwgNiwgc2NoZW1lLCBzY2hlbWVMZW5ndGgpOwor
ICAgICAgICByZXR1cm4gZXF1YWw8Nj4oc2NoZW1lLCBnb3BoZXJTY2hlbWUpOwogICAgIH0KICAg
ICByZXR1cm4gZmFsc2U7CiB9CkBAIC0xMTEwLDE1ICsxMTMxLDE1IEBAIHN0YXRpYyBib29sIGlz
Q2Fub25pY2FsSG9zdG5hbWVMb3dlcmNhc2VGb3JTY2hlbWUoY29uc3QgY2hhciogc2NoZW1lLCBz
aXplX3Qgc2NoCiB7CiAgICAgc3dpdGNoIChzY2hlbWVMZW5ndGgpIHsKICAgICBjYXNlIDI6Ci0g
ICAgICAgIHJldHVybiBlcXVhbCgid3MiLCAyLCBzY2hlbWUsIHNjaGVtZUxlbmd0aCk7CisgICAg
ICAgIHJldHVybiBlcXVhbDwyPihzY2hlbWUsIHdzU2NoZW1lKTsKICAgICBjYXNlIDM6Ci0gICAg
ICAgIHJldHVybiBlcXVhbCgiZnRwIiwgMywgc2NoZW1lLCBzY2hlbWVMZW5ndGgpIHx8IGVxdWFs
KCJ3c3MiLCAzLCBzY2hlbWUsIHNjaGVtZUxlbmd0aCk7CisgICAgICAgIHJldHVybiBlcXVhbDwz
PihzY2hlbWUsIGZ0cFNjaGVtZSkgfHwgZXF1YWw8Mz4oc2NoZW1lLCB3c3NTY2hlbWUpOwogICAg
IGNhc2UgNDoKLSAgICAgICAgcmV0dXJuIGVxdWFsKCJodHRwIiwgNCwgc2NoZW1lLCBzY2hlbWVM
ZW5ndGgpIHx8IGVxdWFsKCJmaWxlIiwgNCwgc2NoZW1lLCBzY2hlbWVMZW5ndGgpOworICAgICAg
ICByZXR1cm4gZXF1YWw8ND4oc2NoZW1lLCBodHRwU2NoZW1lKSB8fCBlcXVhbDw0PihzY2hlbWUs
IGZpbGVTY2hlbWUpOwogICAgIGNhc2UgNToKLSAgICAgICAgcmV0dXJuIGVxdWFsKCJodHRwcyIs
IDUsIHNjaGVtZSwgc2NoZW1lTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGVxdWFsPDU+KHNjaGVt
ZSwgaHR0cHNTY2hlbWUpOwogICAgIGNhc2UgNjoKLSAgICAgICAgcmV0dXJuIGVxdWFsKCJnb3Bo
ZXIiLCA2LCBzY2hlbWUsIHNjaGVtZUxlbmd0aCk7CisgICAgICAgIHJldHVybiBlcXVhbDw2Pihz
Y2hlbWUsIGdvcGhlclNjaGVtZSk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122562</attachid>
            <date>2012-01-14 20:40:50 -0800</date>
            <delta_ts>2012-01-25 17:37:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75821-20120114204049.patch</filename>
            <type>text/plain</type>
            <size>6378</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTdhZjIzM2VhY2JmNTkz
NTlkODAyOWFkZDM0NDJhMDFlOGQ2ZGNmZC4uNzJhNDFkMGNmODVlYjAyMWRmYzdhMWQ3ZDc4NTI0
MGI5MTNiM2JhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAxLTE0ICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2luZyBzdHJu
Y21wKCkgZm9yIGNvbXBhcmluZyBzY2hlbWUgYW5kIHBvcnQgbnVtYmVycyBpcyBpbmVmZmljaWVu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MjEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNl
IHRoZSBlcXVhbCgpIGZ1bmN0aW9uIGNvbXBhcmluZyAyIGFyYml0cmFyeSBzdHJpbmdzIGJ5IGEg
dGVtcGxhdGUKKyAgICAgICAgY29tcGFyaW5nIHRoZSBzdHJpbmcgdG8gYW4gYXJyYXksIGNoYXJh
Y3RlciBieSBjaGFyYWN0ZXIuCisKKyAgICAgICAgVGhpcyBpcyBvbmx5IHVzZWQgZm9yIHNtYWxs
IHN0cmluZ3M6IHRoZSBzY2hlbWVzIGFuZCB0aGUgcG9ydHMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9LVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6
OjEpOgorICAgICAgICAoV2ViQ29yZTo6aXNEZWZhdWx0UG9ydEZvclNjaGVtZSk6CisgICAgICAg
IChXZWJDb3JlOjppc05vbkZpbGVIaWVyYXJjaGljYWxTY2hlbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNDYW5vbmljYWxIb3N0bmFtZUxvd2VyY2FzZUZvclNjaGVtZSk6CisKIDIwMTItMDEtMTQg
IERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEhXbmREQyBzaG91
bGQgYmUgaW4gcGxhdGZvcm0vd2luIGluc3RlYWQgb2Ygd3RmLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJM
LmNwcAppbmRleCAyNDA4Y2MyYjQyNTU3NjU5NDBhNjA0ZTdhMmNjNmZlOTljZjc5YzU0Li42NDg4
NTI3NTY0YTY0ODA2NzZiZjY4MWM5MzRlY2I3ZGUzOTI1ZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9L
VVJMLmNwcApAQCAtNjgsNiArNjgsMTggQEAgc3RhdGljIGlubGluZSBib29sIGlzTGV0dGVyTWF0
Y2hJZ25vcmluZ0Nhc2UoVUNoYXIgY2hhcmFjdGVyLCBjaGFyIGxvd2VyY2FzZUxldHQKIAogI2lm
ICFVU0UoR09PR0xFVVJMKQogCitzdGF0aWMgY29uc3QgY2hhciB3c1NjaGVtZVtdID0geyd3Jywg
J3MnfTsKK3N0YXRpYyBjb25zdCBjaGFyIGZ0cFNjaGVtZVtdID0geydmJywgJ3QnLCAncCd9Owor
c3RhdGljIGNvbnN0IGNoYXIgZnRwUG9ydFtdID0geycyJywgJzEnfTsKK3N0YXRpYyBjb25zdCBj
aGFyIHdzc1NjaGVtZVtdID0geyd3JywgJ3MnLCAncyd9Oworc3RhdGljIGNvbnN0IGNoYXIgZmls
ZVNjaGVtZVtdID0geydmJywgJ2knLCAnbCcsICdlJ307CitzdGF0aWMgY29uc3QgY2hhciBodHRw
U2NoZW1lW10gPSB7J2gnLCAndCcsICd0JywgJ3AnfTsKK3N0YXRpYyBjb25zdCBjaGFyIGh0dHBQ
b3J0W10gPSB7JzgnLCAnMCd9Oworc3RhdGljIGNvbnN0IGNoYXIgaHR0cHNTY2hlbWVbXSA9IHsn
aCcsICd0JywgJ3QnLCAncCcsICdzJ307CitzdGF0aWMgY29uc3QgY2hhciBodHRwc1BvcnRbXSA9
IHsnNCcsICc0JywgJzMnfTsKK3N0YXRpYyBjb25zdCBjaGFyIGdvcGhlclNjaGVtZVtdID0geydn
JywgJ28nLCAncCcsICdoJywgJ2UnLCAncid9Oworc3RhdGljIGNvbnN0IGNoYXIgZ29waGVyUG9y
dFtdID0geyc3JywgJzAnfTsKKwogc3RhdGljIGlubGluZSBib29sIGlzTGV0dGVyTWF0Y2hJZ25v
cmluZ0Nhc2UoY2hhciBjaGFyYWN0ZXIsIGNoYXIgbG93ZXJjYXNlTGV0dGVyKQogewogICAgIEFT
U0VSVChpc0FTQ0lJTG93ZXIobG93ZXJjYXNlTGV0dGVyKSk7CkBAIC0xMDUwLDEzICsxMDYyLDI4
IEBAIHZvaWQgS1VSTDo6cGFyc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcGFyc2UoYnVm
ZmVyLmRhdGEoKSwgJnN0cmluZyk7CiB9CiAKLS8vIEZJWE1FOiAobGVuQSAhPSBsZW5CKSBpcyBu
ZXZlciB0cnVlIGluIHRoZSB3YXkgdGhpcyBmdW5jdGlvbiBpcyB1c2VkLgotLy8gRklYTUU6IFRo
aXMgaXMgb25seSB1c2VkIGZvciBzaG9ydCBzdHJpbmcsIHdlIHNob3VsZCByZXBsYWNlIGVxdWFs
KCkgYnkgYSByZWN1cnNpdmUgdGVtcGxhdGUgY29tcGFyaW5nIHRoZSBzdHJpbmdzIHdpdGhvdXQg
bG9vcC4KLXN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBjaGFyKiBhLCBzaXplX3QgbGVu
QSwgY29uc3QgY2hhciogYiwgc2l6ZV90IGxlbkIpCit0ZW1wbGF0ZTxzaXplX3QgbGVuZ3RoPgor
c3RhdGljIGlubGluZSBib29sIGVxdWFsSW1wbChjb25zdCBjaGFyKiBhLCBjb25zdCBjaGFyKiBi
KQogewotICAgIGlmIChsZW5BICE9IGxlbkIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBy
ZXR1cm4gIXN0cm5jbXAoYSwgYiwgbGVuQSk7CisgICAgcmV0dXJuIGVxdWFsSW1wbDxsZW5ndGgg
LSAxPihhLCBiKSAmJiAoYVtsZW5ndGggLSAxXSA9PSBiW2xlbmd0aCAtIDFdKTsKK30KKwordGVt
cGxhdGU8PgoraW5saW5lIGJvb2wgZXF1YWxJbXBsPDE+KGNvbnN0IGNoYXIqIGEsIGNvbnN0IGNo
YXIqIGIpCit7CisgICAgcmV0dXJuIGFbMF0gPT0gYlswXTsKK30KKwordGVtcGxhdGU8c2l6ZV90
IGxlbmd0aD4KK3N0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBjaGFyKiBhLCBjb25zdCBj
aGFyICgmYilbbGVuZ3RoXSkKK3sKKyAgICByZXR1cm4gZXF1YWxJbXBsPGxlbmd0aD4oYSwgYik7
Cit9CisKK3RlbXBsYXRlPHNpemVfdCByZWZlcmVuY2VMZW5ndGg+CitzdGF0aWMgaW5saW5lIGJv
b2wgZXF1YWwoY29uc3QgY2hhciogc3RyLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBjaGFyICgmcmVm
ZXJlbmNlKVtyZWZlcmVuY2VMZW5ndGhdKQoreworICAgIHJldHVybiBsZW5ndGggPT0gcmVmZXJl
bmNlTGVuZ3RoICYmIGVxdWFsSW1wbDxyZWZlcmVuY2VMZW5ndGg+KHN0ciwgcmVmZXJlbmNlKTsK
IH0KIAogLy8gTGlzdCBvZiBkZWZhdWx0IHNjaGVtZXMgaXMgdGFrZW4gZnJvbSBnb29nbGUtdXJs
OgpAQCAtMTA2NywxOSArMTA5NCwxOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNEZWZhdWx0UG9y
dEZvclNjaGVtZShjb25zdCBjaGFyKiBwb3J0LCBzaXplX3QgcG9ydExlbmd0aCwgYwogICAgIC8v
IHRoZSBjb2RlIHdhcyBtb3ZlZCBmcm9tIGdvb2dsZS11cmwsIGJ1dCBtYXkgYmUgcmVtb3ZlZCBs
YXRlci4KICAgICBzd2l0Y2ggKHNjaGVtZUxlbmd0aCkgewogICAgIGNhc2UgMjoKLSAgICAgICAg
cmV0dXJuIGVxdWFsKCJ3cyIsIDIsIHNjaGVtZSwgc2NoZW1lTGVuZ3RoKSAmJiBlcXVhbCgiODAi
LCAyLCBwb3J0LCBwb3J0TGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgd3NT
Y2hlbWUpICYmIGVxdWFsKHBvcnQsIHBvcnRMZW5ndGgsIGh0dHBQb3J0KTsKICAgICBjYXNlIDM6
Ci0gICAgICAgIGlmIChlcXVhbCgiZnRwIiwgMywgc2NoZW1lLCBzY2hlbWVMZW5ndGgpKQotICAg
ICAgICAgICAgcmV0dXJuIGVxdWFsKCIyMSIsIDIsIHBvcnQsIHBvcnRMZW5ndGgpOwotICAgICAg
ICBpZiAoZXF1YWwoIndzcyIsIDMsIHNjaGVtZSwgc2NoZW1lTGVuZ3RoKSkKLSAgICAgICAgICAg
IHJldHVybiBlcXVhbCgiNDQzIiwgMywgcG9ydCwgcG9ydExlbmd0aCk7CisgICAgICAgIGlmIChl
cXVhbChzY2hlbWUsIGZ0cFNjaGVtZSkpCisgICAgICAgICAgICByZXR1cm4gZXF1YWwocG9ydCwg
cG9ydExlbmd0aCwgZnRwUG9ydCk7CisgICAgICAgIGlmIChlcXVhbChzY2hlbWUsIHdzc1NjaGVt
ZSkpCisgICAgICAgICAgICByZXR1cm4gZXF1YWwocG9ydCwgcG9ydExlbmd0aCwgaHR0cHNQb3J0
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA0OgotICAgICAgICByZXR1cm4gZXF1YWwoImh0
dHAiLCA0LCBzY2hlbWUsIHNjaGVtZUxlbmd0aCkgJiYgZXF1YWwoIjgwIiwgMiwgcG9ydCwgcG9y
dExlbmd0aCk7CisgICAgICAgIHJldHVybiBlcXVhbChzY2hlbWUsIGh0dHBTY2hlbWUpICYmIGVx
dWFsKHBvcnQsIHBvcnRMZW5ndGgsIGh0dHBQb3J0KTsKICAgICBjYXNlIDU6Ci0gICAgICAgIHJl
dHVybiBlcXVhbCgiaHR0cHMiLCA1LCBzY2hlbWUsIHNjaGVtZUxlbmd0aCkgJiYgZXF1YWwoIjQ0
MyIsIDMsIHBvcnQsIHBvcnRMZW5ndGgpOworICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBo
dHRwc1NjaGVtZSkgJiYgZXF1YWwocG9ydCwgcG9ydExlbmd0aCwgaHR0cHNQb3J0KTsKICAgICBj
YXNlIDY6Ci0gICAgICAgIHJldHVybiBlcXVhbCgiZ29waGVyIiwgNiwgc2NoZW1lLCBzY2hlbWVM
ZW5ndGgpICYmIGVxdWFsKCI3MCIsIDIsIHBvcnQsIHBvcnRMZW5ndGgpOworICAgICAgICByZXR1
cm4gZXF1YWwoc2NoZW1lLCBnb3BoZXJTY2hlbWUpICYmIGVxdWFsKHBvcnQsIHBvcnRMZW5ndGgs
IGdvcGhlclBvcnQpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0xMDkzLDE1ICsx
MTIwLDE1IEBAIHN0YXRpYyBib29sIGlzTm9uRmlsZUhpZXJhcmNoaWNhbFNjaGVtZShjb25zdCBj
aGFyKiBzY2hlbWUsIHNpemVfdCBzY2hlbWVMZW5ndGgpCiB7CiAgICAgc3dpdGNoIChzY2hlbWVM
ZW5ndGgpIHsKICAgICBjYXNlIDI6Ci0gICAgICAgIHJldHVybiBlcXVhbCgid3MiLCAyLCBzY2hl
bWUsIHNjaGVtZUxlbmd0aCk7CisgICAgICAgIHJldHVybiBlcXVhbChzY2hlbWUsIHdzU2NoZW1l
KTsKICAgICBjYXNlIDM6Ci0gICAgICAgIHJldHVybiBlcXVhbCgiZnRwIiwgMywgc2NoZW1lLCBz
Y2hlbWVMZW5ndGgpIHx8IGVxdWFsKCJ3c3MiLCAzLCBzY2hlbWUsIHNjaGVtZUxlbmd0aCk7Cisg
ICAgICAgIHJldHVybiBlcXVhbChzY2hlbWUsIGZ0cFNjaGVtZSkgfHwgZXF1YWwoc2NoZW1lLCB3
c3NTY2hlbWUpOwogICAgIGNhc2UgNDoKLSAgICAgICAgcmV0dXJuIGVxdWFsKCJodHRwIiwgNCwg
c2NoZW1lLCBzY2hlbWVMZW5ndGgpOworICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBodHRw
U2NoZW1lKTsKICAgICBjYXNlIDU6Ci0gICAgICAgIHJldHVybiBlcXVhbCgiaHR0cHMiLCA1LCBz
Y2hlbWUsIHNjaGVtZUxlbmd0aCk7CisgICAgICAgIHJldHVybiBlcXVhbChzY2hlbWUsIGh0dHBz
U2NoZW1lKTsKICAgICBjYXNlIDY6Ci0gICAgICAgIHJldHVybiBlcXVhbCgiZ29waGVyIiwgNiwg
c2NoZW1lLCBzY2hlbWVMZW5ndGgpOworICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBnb3Bo
ZXJTY2hlbWUpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0xMTEwLDE1ICsxMTM3
LDE1IEBAIHN0YXRpYyBib29sIGlzQ2Fub25pY2FsSG9zdG5hbWVMb3dlcmNhc2VGb3JTY2hlbWUo
Y29uc3QgY2hhciogc2NoZW1lLCBzaXplX3Qgc2NoCiB7CiAgICAgc3dpdGNoIChzY2hlbWVMZW5n
dGgpIHsKICAgICBjYXNlIDI6Ci0gICAgICAgIHJldHVybiBlcXVhbCgid3MiLCAyLCBzY2hlbWUs
IHNjaGVtZUxlbmd0aCk7CisgICAgICAgIHJldHVybiBlcXVhbChzY2hlbWUsIHdzU2NoZW1lKTsK
ICAgICBjYXNlIDM6Ci0gICAgICAgIHJldHVybiBlcXVhbCgiZnRwIiwgMywgc2NoZW1lLCBzY2hl
bWVMZW5ndGgpIHx8IGVxdWFsKCJ3c3MiLCAzLCBzY2hlbWUsIHNjaGVtZUxlbmd0aCk7CisgICAg
ICAgIHJldHVybiBlcXVhbChzY2hlbWUsIGZ0cFNjaGVtZSkgfHwgZXF1YWwoc2NoZW1lLCB3c3NT
Y2hlbWUpOwogICAgIGNhc2UgNDoKLSAgICAgICAgcmV0dXJuIGVxdWFsKCJodHRwIiwgNCwgc2No
ZW1lLCBzY2hlbWVMZW5ndGgpIHx8IGVxdWFsKCJmaWxlIiwgNCwgc2NoZW1lLCBzY2hlbWVMZW5n
dGgpOworICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBodHRwU2NoZW1lKSB8fCBlcXVhbChz
Y2hlbWUsIGZpbGVTY2hlbWUpOwogICAgIGNhc2UgNToKLSAgICAgICAgcmV0dXJuIGVxdWFsKCJo
dHRwcyIsIDUsIHNjaGVtZSwgc2NoZW1lTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGVxdWFsKHNj
aGVtZSwgaHR0cHNTY2hlbWUpOwogICAgIGNhc2UgNjoKLSAgICAgICAgcmV0dXJuIGVxdWFsKCJn
b3BoZXIiLCA2LCBzY2hlbWUsIHNjaGVtZUxlbmd0aCk7CisgICAgICAgIHJldHVybiBlcXVhbChz
Y2hlbWUsIGdvcGhlclNjaGVtZSk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124046</attachid>
            <date>2012-01-25 17:37:03 -0800</date>
            <delta_ts>2012-02-18 14:51:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75821-20120125173702.patch</filename>
            <type>text/plain</type>
            <size>6198</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1OTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTA2NTIyNzdjOGRiYmY5
MTc0NjhlZjNiZTk5MjlmNjI2ZTNmYWI4Yy4uNWFiMWE1YWViN2M4MTAxMzYxYWFmMWRjZjRiMDEx
MzcwZDU5MTUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAxLTI1ICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2luZyBzdHJu
Y21wKCkgZm9yIGNvbXBhcmluZyBzY2hlbWUgYW5kIHBvcnQgbnVtYmVycyBpcyBpbmVmZmljaWVu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MjEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNl
IHRoZSBlcXVhbCgpIGZ1bmN0aW9uIGNvbXBhcmluZyAyIGFyYml0cmFyeSBzdHJpbmdzIGJ5IGEg
dGVtcGxhdGUKKyAgICAgICAgY29tcGFyaW5nIHRoZSBzdHJpbmcgdG8gYW4gYXJyYXksIGNoYXJh
Y3RlciBieSBjaGFyYWN0ZXIuCisKKyAgICAgICAgVGhpcyBpcyBvbmx5IHVzZWQgZm9yIHNtYWxs
IHN0cmluZ3M6IHRoZSBzY2hlbWVzIGFuZCB0aGUgcG9ydHMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9LVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6
OmlzRGVmYXVsdFBvcnRGb3JTY2hlbWUpOgorICAgICAgICAoV2ViQ29yZTo6aXNOb25GaWxlSGll
cmFyY2hpY2FsU2NoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQ2Fub25pY2FsSG9zdG5hbWVM
b3dlcmNhc2VGb3JTY2hlbWUpOgorCiAyMDEyLTAxLTI1ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBIVE1MRW1iZWRPYmplY3Qgc2hvdWxkIG1hdGNoIEhUTUxPYmpl
Y3RFbGVtZW50IGJ5IHN0b3BwaW5nIGFueSBsb2FkIHdoZW4gaXQgaXMgcmVtb3ZlZCBmcm9tIGJl
Zm9yZWxvYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKaW5kZXggN2FkZGI0ZTU1NmExMGU0ZDE0
Y2M5YjUyZTgxMzgyM2M3YzVhMzNmMC4uZDA1MzI2MDdiMzczMWEyZDIxNTAxZjEzOTNmNWU5YTE4
ZWFiNTFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKQEAgLTY4LDYgKzY4LDE4IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKFVDaGFyIGNoYXJhY3Rl
ciwgY2hhciBsb3dlcmNhc2VMZXR0CiAKICNpZiAhVVNFKEdPT0dMRVVSTCkKIAorc3RhdGljIGNv
bnN0IGNoYXIgd3NTY2hlbWVbXSA9IHsndycsICdzJ307CitzdGF0aWMgY29uc3QgY2hhciBmdHBT
Y2hlbWVbXSA9IHsnZicsICd0JywgJ3AnfTsKK3N0YXRpYyBjb25zdCBjaGFyIGZ0cFBvcnRbXSA9
IHsnMicsICcxJ307CitzdGF0aWMgY29uc3QgY2hhciB3c3NTY2hlbWVbXSA9IHsndycsICdzJywg
J3MnfTsKK3N0YXRpYyBjb25zdCBjaGFyIGZpbGVTY2hlbWVbXSA9IHsnZicsICdpJywgJ2wnLCAn
ZSd9Oworc3RhdGljIGNvbnN0IGNoYXIgaHR0cFNjaGVtZVtdID0geydoJywgJ3QnLCAndCcsICdw
J307CitzdGF0aWMgY29uc3QgY2hhciBodHRwUG9ydFtdID0geyc4JywgJzAnfTsKK3N0YXRpYyBj
b25zdCBjaGFyIGh0dHBzU2NoZW1lW10gPSB7J2gnLCAndCcsICd0JywgJ3AnLCAncyd9Oworc3Rh
dGljIGNvbnN0IGNoYXIgaHR0cHNQb3J0W10gPSB7JzQnLCAnNCcsICczJ307CitzdGF0aWMgY29u
c3QgY2hhciBnb3BoZXJTY2hlbWVbXSA9IHsnZycsICdvJywgJ3AnLCAnaCcsICdlJywgJ3InfTsK
K3N0YXRpYyBjb25zdCBjaGFyIGdvcGhlclBvcnRbXSA9IHsnNycsICcwJ307CisKIHN0YXRpYyBp
bmxpbmUgYm9vbCBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKGNoYXIgY2hhcmFjdGVyLCBjaGFy
IGxvd2VyY2FzZUxldHRlcikKIHsKICAgICBBU1NFUlQoaXNBU0NJSUxvd2VyKGxvd2VyY2FzZUxl
dHRlcikpOwpAQCAtMTA1MCwxMyArMTA2MiwyMCBAQCB2b2lkIEtVUkw6OnBhcnNlKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogICAgIHBhcnNlKGJ1ZmZlci5kYXRhKCksICZzdHJpbmcpOwogfQogCi0v
LyBGSVhNRTogKGxlbkEgIT0gbGVuQikgaXMgbmV2ZXIgdHJ1ZSBpbiB0aGUgd2F5IHRoaXMgZnVu
Y3Rpb24gaXMgdXNlZC4KLS8vIEZJWE1FOiBUaGlzIGlzIG9ubHkgdXNlZCBmb3Igc2hvcnQgc3Ry
aW5nLCB3ZSBzaG91bGQgcmVwbGFjZSBlcXVhbCgpIGJ5IGEgcmVjdXJzaXZlIHRlbXBsYXRlIGNv
bXBhcmluZyB0aGUgc3RyaW5ncyB3aXRob3V0IGxvb3AuCi1zdGF0aWMgaW5saW5lIGJvb2wgZXF1
YWwoY29uc3QgY2hhciogYSwgc2l6ZV90IGxlbkEsIGNvbnN0IGNoYXIqIGIsIHNpemVfdCBsZW5C
KQordGVtcGxhdGU8c2l6ZV90IGxlbmd0aD4KK3N0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbChjb25z
dCBjaGFyKiBhLCBjb25zdCBjaGFyICgmYilbbGVuZ3RoXSkKIHsKLSAgICBpZiAobGVuQSAhPSBs
ZW5CKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFzdHJuY21wKGEsIGIsIGxl
bkEpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
aWYgKGFbaV0gIT0gYltpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHNpemVfdCByZWZlcmVuY2VMZW5ndGg+CitzdGF0
aWMgaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgY2hhciogc3RyLCBzaXplX3QgbGVuZ3RoLCBjb25z
dCBjaGFyICgmcmVmZXJlbmNlKVtyZWZlcmVuY2VMZW5ndGhdKQoreworICAgIHJldHVybiBsZW5n
dGggPT0gcmVmZXJlbmNlTGVuZ3RoICYmIGVxdWFsKHN0ciwgcmVmZXJlbmNlKTsKIH0KIAogLy8g
TGlzdCBvZiBkZWZhdWx0IHNjaGVtZXMgaXMgdGFrZW4gZnJvbSBnb29nbGUtdXJsOgpAQCAtMTA2
NywxOSArMTA4NiwxOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNEZWZhdWx0UG9ydEZvclNjaGVt
ZShjb25zdCBjaGFyKiBwb3J0LCBzaXplX3QgcG9ydExlbmd0aCwgYwogICAgIC8vIHRoZSBjb2Rl
IHdhcyBtb3ZlZCBmcm9tIGdvb2dsZS11cmwsIGJ1dCBtYXkgYmUgcmVtb3ZlZCBsYXRlci4KICAg
ICBzd2l0Y2ggKHNjaGVtZUxlbmd0aCkgewogICAgIGNhc2UgMjoKLSAgICAgICAgcmV0dXJuIGVx
dWFsKCJ3cyIsIDIsIHNjaGVtZSwgc2NoZW1lTGVuZ3RoKSAmJiBlcXVhbCgiODAiLCAyLCBwb3J0
LCBwb3J0TGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgd3NTY2hlbWUpICYm
IGVxdWFsKHBvcnQsIHBvcnRMZW5ndGgsIGh0dHBQb3J0KTsKICAgICBjYXNlIDM6Ci0gICAgICAg
IGlmIChlcXVhbCgiZnRwIiwgMywgc2NoZW1lLCBzY2hlbWVMZW5ndGgpKQotICAgICAgICAgICAg
cmV0dXJuIGVxdWFsKCIyMSIsIDIsIHBvcnQsIHBvcnRMZW5ndGgpOwotICAgICAgICBpZiAoZXF1
YWwoIndzcyIsIDMsIHNjaGVtZSwgc2NoZW1lTGVuZ3RoKSkKLSAgICAgICAgICAgIHJldHVybiBl
cXVhbCgiNDQzIiwgMywgcG9ydCwgcG9ydExlbmd0aCk7CisgICAgICAgIGlmIChlcXVhbChzY2hl
bWUsIGZ0cFNjaGVtZSkpCisgICAgICAgICAgICByZXR1cm4gZXF1YWwocG9ydCwgcG9ydExlbmd0
aCwgZnRwUG9ydCk7CisgICAgICAgIGlmIChlcXVhbChzY2hlbWUsIHdzc1NjaGVtZSkpCisgICAg
ICAgICAgICByZXR1cm4gZXF1YWwocG9ydCwgcG9ydExlbmd0aCwgaHR0cHNQb3J0KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSA0OgotICAgICAgICByZXR1cm4gZXF1YWwoImh0dHAiLCA0LCBz
Y2hlbWUsIHNjaGVtZUxlbmd0aCkgJiYgZXF1YWwoIjgwIiwgMiwgcG9ydCwgcG9ydExlbmd0aCk7
CisgICAgICAgIHJldHVybiBlcXVhbChzY2hlbWUsIGh0dHBTY2hlbWUpICYmIGVxdWFsKHBvcnQs
IHBvcnRMZW5ndGgsIGh0dHBQb3J0KTsKICAgICBjYXNlIDU6Ci0gICAgICAgIHJldHVybiBlcXVh
bCgiaHR0cHMiLCA1LCBzY2hlbWUsIHNjaGVtZUxlbmd0aCkgJiYgZXF1YWwoIjQ0MyIsIDMsIHBv
cnQsIHBvcnRMZW5ndGgpOworICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBodHRwc1NjaGVt
ZSkgJiYgZXF1YWwocG9ydCwgcG9ydExlbmd0aCwgaHR0cHNQb3J0KTsKICAgICBjYXNlIDY6Ci0g
ICAgICAgIHJldHVybiBlcXVhbCgiZ29waGVyIiwgNiwgc2NoZW1lLCBzY2hlbWVMZW5ndGgpICYm
IGVxdWFsKCI3MCIsIDIsIHBvcnQsIHBvcnRMZW5ndGgpOworICAgICAgICByZXR1cm4gZXF1YWwo
c2NoZW1lLCBnb3BoZXJTY2hlbWUpICYmIGVxdWFsKHBvcnQsIHBvcnRMZW5ndGgsIGdvcGhlclBv
cnQpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0xMDkzLDE1ICsxMTEyLDE1IEBA
IHN0YXRpYyBib29sIGlzTm9uRmlsZUhpZXJhcmNoaWNhbFNjaGVtZShjb25zdCBjaGFyKiBzY2hl
bWUsIHNpemVfdCBzY2hlbWVMZW5ndGgpCiB7CiAgICAgc3dpdGNoIChzY2hlbWVMZW5ndGgpIHsK
ICAgICBjYXNlIDI6Ci0gICAgICAgIHJldHVybiBlcXVhbCgid3MiLCAyLCBzY2hlbWUsIHNjaGVt
ZUxlbmd0aCk7CisgICAgICAgIHJldHVybiBlcXVhbChzY2hlbWUsIHdzU2NoZW1lKTsKICAgICBj
YXNlIDM6Ci0gICAgICAgIHJldHVybiBlcXVhbCgiZnRwIiwgMywgc2NoZW1lLCBzY2hlbWVMZW5n
dGgpIHx8IGVxdWFsKCJ3c3MiLCAzLCBzY2hlbWUsIHNjaGVtZUxlbmd0aCk7CisgICAgICAgIHJl
dHVybiBlcXVhbChzY2hlbWUsIGZ0cFNjaGVtZSkgfHwgZXF1YWwoc2NoZW1lLCB3c3NTY2hlbWUp
OwogICAgIGNhc2UgNDoKLSAgICAgICAgcmV0dXJuIGVxdWFsKCJodHRwIiwgNCwgc2NoZW1lLCBz
Y2hlbWVMZW5ndGgpOworICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBodHRwU2NoZW1lKTsK
ICAgICBjYXNlIDU6Ci0gICAgICAgIHJldHVybiBlcXVhbCgiaHR0cHMiLCA1LCBzY2hlbWUsIHNj
aGVtZUxlbmd0aCk7CisgICAgICAgIHJldHVybiBlcXVhbChzY2hlbWUsIGh0dHBzU2NoZW1lKTsK
ICAgICBjYXNlIDY6Ci0gICAgICAgIHJldHVybiBlcXVhbCgiZ29waGVyIiwgNiwgc2NoZW1lLCBz
Y2hlbWVMZW5ndGgpOworICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBnb3BoZXJTY2hlbWUp
OwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0xMTEwLDE1ICsxMTI5LDE1IEBAIHN0
YXRpYyBib29sIGlzQ2Fub25pY2FsSG9zdG5hbWVMb3dlcmNhc2VGb3JTY2hlbWUoY29uc3QgY2hh
ciogc2NoZW1lLCBzaXplX3Qgc2NoCiB7CiAgICAgc3dpdGNoIChzY2hlbWVMZW5ndGgpIHsKICAg
ICBjYXNlIDI6Ci0gICAgICAgIHJldHVybiBlcXVhbCgid3MiLCAyLCBzY2hlbWUsIHNjaGVtZUxl
bmd0aCk7CisgICAgICAgIHJldHVybiBlcXVhbChzY2hlbWUsIHdzU2NoZW1lKTsKICAgICBjYXNl
IDM6Ci0gICAgICAgIHJldHVybiBlcXVhbCgiZnRwIiwgMywgc2NoZW1lLCBzY2hlbWVMZW5ndGgp
IHx8IGVxdWFsKCJ3c3MiLCAzLCBzY2hlbWUsIHNjaGVtZUxlbmd0aCk7CisgICAgICAgIHJldHVy
biBlcXVhbChzY2hlbWUsIGZ0cFNjaGVtZSkgfHwgZXF1YWwoc2NoZW1lLCB3c3NTY2hlbWUpOwog
ICAgIGNhc2UgNDoKLSAgICAgICAgcmV0dXJuIGVxdWFsKCJodHRwIiwgNCwgc2NoZW1lLCBzY2hl
bWVMZW5ndGgpIHx8IGVxdWFsKCJmaWxlIiwgNCwgc2NoZW1lLCBzY2hlbWVMZW5ndGgpOworICAg
ICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBodHRwU2NoZW1lKSB8fCBlcXVhbChzY2hlbWUsIGZp
bGVTY2hlbWUpOwogICAgIGNhc2UgNToKLSAgICAgICAgcmV0dXJuIGVxdWFsKCJodHRwcyIsIDUs
IHNjaGVtZSwgc2NoZW1lTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgaHR0
cHNTY2hlbWUpOwogICAgIGNhc2UgNjoKLSAgICAgICAgcmV0dXJuIGVxdWFsKCJnb3BoZXIiLCA2
LCBzY2hlbWUsIHNjaGVtZUxlbmd0aCk7CisgICAgICAgIHJldHVybiBlcXVhbChzY2hlbWUsIGdv
cGhlclNjaGVtZSk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0K
</data>
<flag name="review"
          id="125212"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>