<?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>25513</bug_id>
          
          <creation_ts>2009-05-01 15:33:11 -0700</creation_ts>
          <short_desc>V8 CSSStyleDeclaration bindings are slow</short_desc>
          <delta_ts>2009-05-06 15:03:22 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Dave Moore">davemoore</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>dglazkov</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>119639</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2009-05-01 15:33:11 -0700</bug_when>
    <thetext>The V8 bindings convert every javascript property to its associated css style name. It then calls functions that convert that name to an id. This makes getting or setting css styles on elements slow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119640</commentid>
    <comment_count>1</comment_count>
      <attachid>29949</attachid>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2009-05-01 15:43:11 -0700</bug_when>
    <thetext>Created attachment 29949
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119998</commentid>
    <comment_count>2</comment_count>
      <attachid>29949</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-05-05 11:22:41 -0700</bug_when>
    <thetext>Comment on attachment 29949
Fix

Just a few nits/comments:

&gt; +class CSSPropertyInfo {
&gt; +  public:

align public to class.

&gt; +    static HashMap&lt;String, CSSPropertyInfo*&gt; map;

Use DEFINE_STATIC_LOCAL macro.

&gt; +        if (!length)
&gt; +            return NULL;

return 0.

&gt; +        else if (WTF::isASCIIUpper(propertyName[0]))
&gt; +            return NULL;

return 0.

&gt; -    INC_STATS(&quot;DOM.CSSStyleDeclaration.NamedPropertyGetter&quot;);
&gt; +    //INC_STATS(&quot;DOM.CSSStyleDeclaration.NamedPropertyGetter&quot;);

Did you mean leave this in?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120096</commentid>
    <comment_count>3</comment_count>
      <attachid>30049</attachid>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2009-05-06 07:55:04 -0700</bug_when>
    <thetext>Created attachment 30049
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120100</commentid>
    <comment_count>4</comment_count>
      <attachid>30049</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-05-06 08:57:15 -0700</bug_when>
    <thetext>Comment on attachment 30049
Fix

Great! Am I landing it? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120149</commentid>
    <comment_count>5</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-05-06 14:14:15 -0700</bug_when>
    <thetext>Assign to levin for landing.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120165</commentid>
    <comment_count>6</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-05-06 15:03:22 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/43327</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29949</attachid>
            <date>2009-05-01 15:43:11 -0700</date>
            <delta_ts>2009-05-06 07:55:04 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>25513.patch</filename>
            <type>text/plain</type>
            <size>8834</size>
            <attacher name="Dave Moore">davemoore</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIENoYW5nZUxvZwkocmV2aXNpb24gNDMx
MjEpCisrKyBDaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAwOS0w
NS0wMSAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNTUxMworICAgICAgICBUaGUgVjggYmluZGluZ3MgY29udmVydCBl
dmVyeSBqYXZhc2NyaXB0IHByb3BlcnR5IHRvIGl0cyBhc3NvY2lhdGVkIGNzcyBzdHlsZQorICAg
ICAgICBuYW1lLiBJdCB0aGVuIGNhbGxzIGZ1bmN0aW9ucyB0aGF0IGNvbnZlcnQgdGhhdCBuYW1l
IHRvIGFuIGlkLiBUaGlzIG1ha2VzCisgICAgICAgIGdldHRpbmcgb3Igc2V0dGluZyBjc3Mgc3R5
bGVzIG9uIGVsZW1lbnRzIHNsb3cuCisgICAgICAgIAorICAgICAgICBUaGUgcGF0Y2ggZml4ZXMg
dGhpcyBieSBjYWNoaW5nIHRoZSByZXN1bHRzIG9mIHRoZSB0cmFuc2Zvcm1hdGlvbiwgbWFwcGlu
ZyBhCisgICAgICAgIGphdmFzY3JpcHQgcHJvcGVydHkgbmFtZSB0byBpdHMgY3NzIHByb3BlcnR5
IGlkLiBJdCB0aGVuIGNhbGxzIHRoZSBhbHJlYWR5CisgICAgICAgIHB1YmxpYyB3ZWJraXQgbWV0
aG9kcyB0aGF0IHRha2UgdGhlIGlkIGluIHBsYWNlIG9mIHRoZSBzdHJpbmcgcHJvcGVydHkgbmFt
ZXMuCisKKyAgICAgICAgKiBiaW5kaW5nc1x2OFxjdXN0b21cVjhDU1NTdHlsZURlY2xhcmF0aW9u
Q3VzdG9tLmNwcAorOgorCiAyMDA5LTA1LTAxICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBi
aW5kaW5ncy92OC9jdXN0b20vVjhDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20u
Y3BwCShyZXZpc2lvbiA0MzExOCkKKysrIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1N0eWxlRGVj
bGFyYXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIgogCisjaW5j
bHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQ
cmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCkBAIC03NSw2ICs3Niwx
MyBAQCBzdGF0aWMgYm9vbCBoYXNDU1NQcm9wZXJ0eU5hbWVQcmVmaXgoY29uCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCitjbGFzcyBDU1NQcm9wZXJ0eUluZm8geworICBwdWJsaWM6CisgICAgaW50
IHByb3BJRDsKKyAgICBib29sIGhhZFBpeGVsT3JQb3NQcmVmaXg7CisgICAgYm9vbCB3YXNGaWx0
ZXI7Cit9OworCiAvLyBXaGVuIGdldHRpbmcgcHJvcGVydGllcyBvbiBDU1NTdHlsZURlY2xhcmF0
aW9ucywgdGhlIG5hbWUgdXNlZCBmcm9tCiAvLyBKYXZhc2NyaXB0IGFuZCB0aGUgYWN0dWFsIG5h
bWUgb2YgdGhlIHByb3BlcnR5IGFyZSBub3QgdGhlIHNhbWUsIHNvCiAvLyB3ZSBoYXZlIHRvIGRv
IHRoZSBmb2xsb3dpbmcgdHJhbnNsYXRpb24uICBUaGUgdHJhbnNsYXRpb24gdHVybnMgdXBwZXIK
QEAgLTg2LDgxICs5NCw5NiBAQCBzdGF0aWMgYm9vbCBoYXNDU1NQcm9wZXJ0eU5hbWVQcmVmaXgo
Y29uCiAvLyBBbHNvLCBjZXJ0YWluIHByZWZpeGVzIHN1Y2ggYXMgJ3BvcycsICdjc3MtJyBhbmQg
J3BpeGVsLScgYXJlIHN0cmlwcGVkCiAvLyBhbmQgdGhlIGhhZFBpeGVsT3JQb3NQcmVmaXggb3V0
IHBhcmFtZXRlciBpcyB1c2VkIHRvIGluZGljYXRlIHdoZXRoZXIgb3IKIC8vIG5vdCB0aGUgcHJv
cGVydHkgbmFtZSB3YXMgcHJlZml4ZWQgd2l0aCAncG9zLScgb3IgJ3BpeGVsLScuCi1zdGF0aWMg
U3RyaW5nIGNzc1Byb3BlcnR5TmFtZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgYm9vbCYg
aGFkUGl4ZWxPclBvc1ByZWZpeCkKK3N0YXRpYyBDU1NQcm9wZXJ0eUluZm8qIGNzc1Byb3BlcnR5
SW5mbyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+djhQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgaGFkUGl4
ZWxPclBvc1ByZWZpeCA9IGZhbHNlOwotCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gcHJvcGVydHlO
YW1lLmxlbmd0aCgpOwotICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgU3RyaW5nIHByb3BlcnR5TmFtZSA9IHRvV2ViQ29yZVN0cmluZyh2OFByb3BlcnR5TmFt
ZSk7CisgICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBDU1NQcm9wZXJ0eUluZm8qPiBtYXA7Cisg
ICAgQ1NTUHJvcGVydHlJbmZvKiBwcm9wSW5mbyA9IG1hcC5nZXQocHJvcGVydHlOYW1lKTsKKyAg
ICBpZiAoIXByb3BJbmZvKSB7CisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHByb3BlcnR5TmFt
ZS5sZW5ndGgoKTsKKyAgICAgICAgYm9vbCBoYWRQaXhlbE9yUG9zUHJlZml4ID0gZmFsc2U7Cisg
ICAgICAgIGlmICghbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAg
VmVjdG9yPFVDaGFyPiBuYW1lOworICAgICAgICBuYW1lLnJlc2VydmVDYXBhY2l0eShsZW5ndGgp
OworCisgICAgICAgIHVuc2lnbmVkIGkgPSAwOworCisgICAgICAgIGlmIChoYXNDU1NQcm9wZXJ0
eU5hbWVQcmVmaXgocHJvcGVydHlOYW1lLCAiY3NzIikpCisgICAgICAgICAgICBpICs9IDM7Cisg
ICAgICAgIGVsc2UgaWYgKGhhc0NTU1Byb3BlcnR5TmFtZVByZWZpeChwcm9wZXJ0eU5hbWUsICJw
aXhlbCIpKSB7CisgICAgICAgICAgICBpICs9IDU7CisgICAgICAgICAgICBoYWRQaXhlbE9yUG9z
UHJlZml4ID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChoYXNDU1NQcm9wZXJ0eU5hbWVQcmVm
aXgocHJvcGVydHlOYW1lLCAicG9zIikpIHsKKyAgICAgICAgICAgIGkgKz0gMzsKKyAgICAgICAg
ICAgIGhhZFBpeGVsT3JQb3NQcmVmaXggPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKGhhc0NT
U1Byb3BlcnR5TmFtZVByZWZpeChwcm9wZXJ0eU5hbWUsICJ3ZWJraXQiKQorICAgICAgICAgICAg
ICAgIHx8IGhhc0NTU1Byb3BlcnR5TmFtZVByZWZpeChwcm9wZXJ0eU5hbWUsICJraHRtbCIpCisg
ICAgICAgICAgICAgICAgfHwgaGFzQ1NTUHJvcGVydHlOYW1lUHJlZml4KHByb3BlcnR5TmFtZSwg
ImFwcGxlIikpCisgICAgICAgICAgICBuYW1lLmFwcGVuZCgnLScpOworICAgICAgICBlbHNlIGlm
IChXVEY6OmlzQVNDSUlVcHBlcihwcm9wZXJ0eU5hbWVbMF0pKQorICAgICAgICAgICAgcmV0dXJu
IE5VTEw7CiAKLSAgICBWZWN0b3I8VUNoYXI+IG5hbWU7Ci0gICAgbmFtZS5yZXNlcnZlQ2FwYWNp
dHkobGVuZ3RoKTsKKyAgICAgICAgbmFtZS5hcHBlbmQoV1RGOjp0b0FTQ0lJTG93ZXIocHJvcGVy
dHlOYW1lW2krK10pKTsKIAotICAgIHVuc2lnbmVkIGkgPSAwOworICAgICAgICBmb3IgKDsgaSA8
IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBVQ2hhciBjID0gcHJvcGVydHlOYW1lW2ldOwor
ICAgICAgICAgICAgaWYgKCFXVEY6OmlzQVNDSUlVcHBlcihjKSkKKyAgICAgICAgICAgICAgICBu
YW1lLmFwcGVuZChjKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG5hbWUu
YXBwZW5kKCctJyk7CisgICAgICAgICAgICAgICAgbmFtZS5hcHBlbmQoV1RGOjp0b0FTQ0lJTG93
ZXIoYykpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAKLSAgICBpZiAoaGFzQ1NTUHJvcGVy
dHlOYW1lUHJlZml4KHByb3BlcnR5TmFtZSwgImNzcyIpKQotICAgICAgICBpICs9IDM7Ci0gICAg
ZWxzZSBpZiAoaGFzQ1NTUHJvcGVydHlOYW1lUHJlZml4KHByb3BlcnR5TmFtZSwgInBpeGVsIikp
IHsKLSAgICAgICAgaSArPSA1OwotICAgICAgICBoYWRQaXhlbE9yUG9zUHJlZml4ID0gdHJ1ZTsK
LSAgICB9IGVsc2UgaWYgKGhhc0NTU1Byb3BlcnR5TmFtZVByZWZpeChwcm9wZXJ0eU5hbWUsICJw
b3MiKSkgewotICAgICAgICBpICs9IDM7Ci0gICAgICAgIGhhZFBpeGVsT3JQb3NQcmVmaXggPSB0
cnVlOwotICAgIH0gZWxzZSBpZiAoaGFzQ1NTUHJvcGVydHlOYW1lUHJlZml4KHByb3BlcnR5TmFt
ZSwgIndlYmtpdCIpCi0gICAgICAgICAgICB8fCBoYXNDU1NQcm9wZXJ0eU5hbWVQcmVmaXgocHJv
cGVydHlOYW1lLCAia2h0bWwiKQotICAgICAgICAgICAgfHwgaGFzQ1NTUHJvcGVydHlOYW1lUHJl
Zml4KHByb3BlcnR5TmFtZSwgImFwcGxlIikpCi0gICAgICAgIG5hbWUuYXBwZW5kKCctJyk7Ci0g
ICAgZWxzZSBpZiAoV1RGOjppc0FTQ0lJVXBwZXIocHJvcGVydHlOYW1lWzBdKSkKLSAgICAgICAg
cmV0dXJuIFN0cmluZygpOwotCi0gICAgbmFtZS5hcHBlbmQoV1RGOjp0b0FTQ0lJTG93ZXIocHJv
cGVydHlOYW1lW2krK10pKTsKLQotICAgIGZvciAoOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgVUNoYXIgYyA9IHByb3BlcnR5TmFtZVtpXTsKLSAgICAgICAgaWYgKCFXVEY6OmlzQVNDSUlV
cHBlcihjKSkKLSAgICAgICAgICAgIG5hbWUuYXBwZW5kKGMpOwotICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIG5hbWUuYXBwZW5kKCctJyk7Ci0gICAgICAgICAgICBuYW1lLmFwcGVuZChXVEY6
OnRvQVNDSUlMb3dlcihjKSk7CisgICAgICAgIFN0cmluZyBwcm9wTmFtZSA9IFN0cmluZzo6YWRv
cHQobmFtZSk7CisgICAgICAgIGludCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9wTmFt
ZSk7CisgICAgICAgIGlmIChwcm9wZXJ0eUlEKSB7CisgICAgICAgICAgICBwcm9wSW5mbyA9IG5l
dyBDU1NQcm9wZXJ0eUluZm8oKTsKKyAgICAgICAgICAgIHByb3BJbmZvLT5oYWRQaXhlbE9yUG9z
UHJlZml4ID0gaGFkUGl4ZWxPclBvc1ByZWZpeDsKKyAgICAgICAgICAgIHByb3BJbmZvLT53YXNG
aWx0ZXIgPSAocHJvcE5hbWUgPT0gImZpbHRlciIpOworICAgICAgICAgICAgcHJvcEluZm8tPnBy
b3BJRCA9IHByb3BlcnR5SUQ7CisgICAgICAgICAgICBtYXAuYWRkKHByb3BlcnR5TmFtZSwgcHJv
cEluZm8pOwogICAgICAgICB9CiAgICAgfQotCi0gICAgcmV0dXJuIFN0cmluZzo6YWRvcHQobmFt
ZSk7CisgICAgcmV0dXJuIHByb3BJbmZvOwogfQogCiBOQU1FRF9QUk9QRVJUWV9HRVRURVIoQ1NT
U3R5bGVEZWNsYXJhdGlvbikKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5DU1NTdHlsZURlY2xhcmF0
aW9uLk5hbWVkUHJvcGVydHlHZXR0ZXIiKTsKKyAgICAvL0lOQ19TVEFUUygiRE9NLkNTU1N0eWxl
RGVjbGFyYXRpb24uTmFtZWRQcm9wZXJ0eUdldHRlciIpOwogICAgIC8vIEZpcnN0IGxvb2sgZm9y
IEFQSSBkZWZpbmVkIGF0dHJpYnV0ZXMgb24gdGhlIHN0eWxlIGRlY2xhcmF0aW9uIG9iamVjdC4K
ICAgICBpZiAoaW5mby5Ib2xkZXIoKS0+SGFzUmVhbE5hbWVkQ2FsbGJhY2tQcm9wZXJ0eShuYW1l
KSkKICAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CiAKICAgICAvLyBT
ZWFyY2ggdGhlIHN0eWxlIGRlY2xhcmF0aW9uLgotICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIGlt
cCA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PENTU1N0eWxlRGVjbGFyYXRpb24+KFY4Q2xhc3NJ
bmRleDo6Q1NTU1RZTEVERUNMQVJBVElPTiwgaW5mby5Ib2xkZXIoKSk7Ci0KLSAgICBib29sIGhh
ZFBpeGVsT3JQb3NQcmVmaXggPSBmYWxzZTsKLSAgICBTdHJpbmcgcHJvcGVydHlOYW1lID0gY3Nz
UHJvcGVydHlOYW1lKHRvV2ViQ29yZVN0cmluZyhuYW1lKSwgaGFkUGl4ZWxPclBvc1ByZWZpeCk7
CisgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogaW1wID0gCisgICAgICAgIFY4UHJveHk6OlRvTmF0
aXZlT2JqZWN0PENTU1N0eWxlRGVjbGFyYXRpb24+KFY4Q2xhc3NJbmRleDo6Q1NTU1RZTEVERUNM
QVJBVElPTiwgaW5mby5Ib2xkZXIoKSk7CisgICAgQ1NTUHJvcGVydHlJbmZvKiBwcm9wSW5mbyA9
IGNzc1Byb3BlcnR5SW5mbyhuYW1lKTsKIAogICAgIC8vIERvIG5vdCBoYW5kbGUgbm9uLXByb3Bl
cnR5IG5hbWVzLgotICAgIGlmICghQ1NTU3R5bGVEZWNsYXJhdGlvbjo6aXNQcm9wZXJ0eU5hbWUo
cHJvcGVydHlOYW1lKSkKKyAgICBpZiAoIXByb3BJbmZvKQogICAgICAgICByZXR1cm4gbm90SGFu
ZGxlZEJ5SW50ZXJjZXB0b3IoKTsKIAogCi0gICAgUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSA9
IGltcC0+Z2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eU5hbWUpOworICAgIFJlZlB0cjxDU1NW
YWx1ZT4gY3NzVmFsdWUgPSBpbXAtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcEluZm8tPnByb3BJ
RCk7CiAgICAgaWYgKGNzc1ZhbHVlKSB7Ci0gICAgICAgIGlmIChoYWRQaXhlbE9yUG9zUHJlZml4
ICYmIGNzc1ZhbHVlLT5jc3NWYWx1ZVR5cGUoKSA9PSBDU1NWYWx1ZTo6Q1NTX1BSSU1JVElWRV9W
QUxVRSkKLSAgICAgICAgICAgIHJldHVybiB2ODo6TnVtYmVyOjpOZXcoc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPihjc3NWYWx1ZS5nZXQoKSktPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QWCkpOworICAgICAgICBpZiAocHJvcEluZm8tPmhhZFBpeGVsT3JQb3NQ
cmVmaXggJiYgCisgICAgICAgICAgICBjc3NWYWx1ZS0+Y3NzVmFsdWVUeXBlKCkgPT0gQ1NTVmFs
dWU6OkNTU19QUklNSVRJVkVfVkFMVUUpIHsKKyAgICAgICAgICAgIHJldHVybiB2ODo6TnVtYmVy
OjpOZXcoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPigKKyAgICAgICAgICAgICAgICBj
c3NWYWx1ZS5nZXQoKSktPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkp
OworICAgICAgICB9CiAgICAgICAgIHJldHVybiB2OFN0cmluZ09yTnVsbChjc3NWYWx1ZS0+Y3Nz
VGV4dCgpKTsKICAgICB9CiAKLSAgICBTdHJpbmcgcmVzdWx0ID0gaW1wLT5nZXRQcm9wZXJ0eVZh
bHVlKHByb3BlcnR5TmFtZSk7CisgICAgU3RyaW5nIHJlc3VsdCA9IGltcC0+Z2V0UHJvcGVydHlW
YWx1ZShwcm9wSW5mby0+cHJvcElEKTsKICAgICBpZiAocmVzdWx0LmlzTnVsbCgpKQogICAgICAg
ICByZXN1bHQgPSAiIjsgIC8vIGNvbnZlcnQgbnVsbCB0byBlbXB0eSBzdHJpbmcuCiAKICAgICAv
LyBUaGUgJ2ZpbHRlcicgYXR0cmlidXRlIGlzIG1hZGUgdW5kZXRlY3RhYmxlIGluIEtKUy9XZWJL
aXQKICAgICAvLyB0byBhdm9pZCBjb25mdXNpb24gd2l0aCBJRSdzIGZpbHRlciBleHRlbnNpb24u
Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSAiZmlsdGVyIikKKyAgICBpZiAocHJvcEluZm8tPndh
c0ZpbHRlcikKICAgICAgICAgcmV0dXJuIHY4VW5kZXRlY3RhYmxlU3RyaW5nKHJlc3VsdCk7CiAK
ICAgICByZXR1cm4gdjhTdHJpbmcocmVzdWx0KTsKQEAgLTE2OSwxOSArMTkyLDI1IEBAIE5BTUVE
X1BST1BFUlRZX0dFVFRFUihDU1NTdHlsZURlY2xhcmF0aW8KIE5BTUVEX1BST1BFUlRZX1NFVFRF
UihDU1NTdHlsZURlY2xhcmF0aW9uKQogewogICAgIElOQ19TVEFUUygiRE9NLkNTU1N0eWxlRGVj
bGFyYXRpb24uTmFtZWRQcm9wZXJ0eVNldHRlciIpOwotICAgIENTU1N0eWxlRGVjbGFyYXRpb24q
IGltcCA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PENTU1N0eWxlRGVjbGFyYXRpb24+KFY4Q2xh
c3NJbmRleDo6Q1NTU1RZTEVERUNMQVJBVElPTiwgaW5mby5Ib2xkZXIoKSk7Ci0KLSAgICBib29s
IGhhZFBpeGVsT3JQb3NQcmVmaXggPSBmYWxzZTsKLSAgICBTdHJpbmcgcHJvcCA9IGNzc1Byb3Bl
cnR5TmFtZSh0b1dlYkNvcmVTdHJpbmcobmFtZSksIGhhZFBpeGVsT3JQb3NQcmVmaXgpOwotICAg
IGlmICghQ1NTU3R5bGVEZWNsYXJhdGlvbjo6aXNQcm9wZXJ0eU5hbWUocHJvcCkpCisgICAgQ1NT
U3R5bGVEZWNsYXJhdGlvbiogaW1wID0gCisgICAgICAgIFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0
PENTU1N0eWxlRGVjbGFyYXRpb24+KAorICAgICAgICAgICAgVjhDbGFzc0luZGV4OjpDU1NTVFlM
RURFQ0xBUkFUSU9OLCBpbmZvLkhvbGRlcigpKTsKKyAgICBDU1NQcm9wZXJ0eUluZm8qIHByb3BJ
bmZvID0gY3NzUHJvcGVydHlJbmZvKG5hbWUpOworICAgIGlmICghcHJvcEluZm8pCiAgICAgICAg
IHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwogCiAgICAgU3RyaW5nIHByb3BlcnR5
VmFsdWUgPSB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayh2YWx1ZSk7Ci0gICAgaWYgKGhhZFBp
eGVsT3JQb3NQcmVmaXgpCisgICAgaWYgKHByb3BJbmZvLT5oYWRQaXhlbE9yUG9zUHJlZml4KQog
ICAgICAgICBwcm9wZXJ0eVZhbHVlLmFwcGVuZCgicHgiKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIGltcC0+c2V0UHJvcGVydHkocHJvcCwgcHJvcGVydHlWYWx1ZSwgZWMpOwor
ICAgIGludCBpbXBvcnRhbnRJbmRleCA9IHByb3BlcnR5VmFsdWUuZmluZCgiIWltcG9ydGFudCIs
IDAsIGZhbHNlKTsKKyAgICBib29sIGltcG9ydGFudCA9IGZhbHNlOworICAgIGlmIChpbXBvcnRh
bnRJbmRleCAhPSAtMSkgeworICAgICAgICBpbXBvcnRhbnQgPSB0cnVlOworICAgICAgICBwcm9w
ZXJ0eVZhbHVlID0gcHJvcGVydHlWYWx1ZS5sZWZ0KGltcG9ydGFudEluZGV4IC0gMSk7CisgICAg
fQorICAgIGltcC0+c2V0UHJvcGVydHkocHJvcEluZm8tPnByb3BJRCwgcHJvcGVydHlWYWx1ZSwg
aW1wb3J0YW50LCBlYyk7CiAKICAgICBpZiAoZWMpCiAgICAgICAgIHRocm93RXJyb3IoZWMpOwo=
</data>
<flag name="review"
          id="15009"
          type_id="1"
          status="-"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30049</attachid>
            <date>2009-05-06 07:55:04 -0700</date>
            <delta_ts>2009-05-06 08:57:15 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>25513.patch</filename>
            <type>text/plain</type>
            <size>8867</size>
            <attacher name="Dave Moore">davemoore</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIENoYW5nZUxvZwkocmV2aXNpb24gNDMx
MjEpCisrKyBDaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAwOS0w
NS0wMSAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNTUxMworICAgICAgICBUaGUgVjggYmluZGluZ3MgY29udmVydCBl
dmVyeSBqYXZhc2NyaXB0IHByb3BlcnR5IHRvIGl0cyBhc3NvY2lhdGVkIGNzcyBzdHlsZQorICAg
ICAgICBuYW1lLiBJdCB0aGVuIGNhbGxzIGZ1bmN0aW9ucyB0aGF0IGNvbnZlcnQgdGhhdCBuYW1l
IHRvIGFuIGlkLiBUaGlzIG1ha2VzCisgICAgICAgIGdldHRpbmcgb3Igc2V0dGluZyBjc3Mgc3R5
bGVzIG9uIGVsZW1lbnRzIHNsb3cuCisgICAgICAgIAorICAgICAgICBUaGUgcGF0Y2ggZml4ZXMg
dGhpcyBieSBjYWNoaW5nIHRoZSByZXN1bHRzIG9mIHRoZSB0cmFuc2Zvcm1hdGlvbiwgbWFwcGlu
ZyBhCisgICAgICAgIGphdmFzY3JpcHQgcHJvcGVydHkgbmFtZSB0byBpdHMgY3NzIHByb3BlcnR5
IGlkLiBJdCB0aGVuIGNhbGxzIHRoZSBhbHJlYWR5CisgICAgICAgIHB1YmxpYyB3ZWJraXQgbWV0
aG9kcyB0aGF0IHRha2UgdGhlIGlkIGluIHBsYWNlIG9mIHRoZSBzdHJpbmcgcHJvcGVydHkgbmFt
ZXMuCisKKyAgICAgICAgKiBiaW5kaW5nc1x2OFxjdXN0b21cVjhDU1NTdHlsZURlY2xhcmF0aW9u
Q3VzdG9tLmNwcAorOgorCiAyMDA5LTA1LTAxICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBi
aW5kaW5ncy92OC9jdXN0b20vVjhDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20u
Y3BwCShyZXZpc2lvbiA0MzExOCkKKysrIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1N0eWxlRGVj
bGFyYXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIgogCisjaW5j
bHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQ
cmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCkBAIC00Miw2ICs0Myw3
IEBACiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03
NSw2ICs3NywxMyBAQCBzdGF0aWMgYm9vbCBoYXNDU1NQcm9wZXJ0eU5hbWVQcmVmaXgoY29uCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCitjbGFzcyBDU1NQcm9wZXJ0eUluZm8geworcHVibGljOgor
ICAgIGludCBwcm9wSUQ7CisgICAgYm9vbCBoYWRQaXhlbE9yUG9zUHJlZml4OworICAgIGJvb2wg
d2FzRmlsdGVyOworfTsKKwogLy8gV2hlbiBnZXR0aW5nIHByb3BlcnRpZXMgb24gQ1NTU3R5bGVE
ZWNsYXJhdGlvbnMsIHRoZSBuYW1lIHVzZWQgZnJvbQogLy8gSmF2YXNjcmlwdCBhbmQgdGhlIGFj
dHVhbCBuYW1lIG9mIHRoZSBwcm9wZXJ0eSBhcmUgbm90IHRoZSBzYW1lLCBzbwogLy8gd2UgaGF2
ZSB0byBkbyB0aGUgZm9sbG93aW5nIHRyYW5zbGF0aW9uLiAgVGhlIHRyYW5zbGF0aW9uIHR1cm5z
IHVwcGVyCkBAIC04Niw0NyArOTUsNjEgQEAgc3RhdGljIGJvb2wgaGFzQ1NTUHJvcGVydHlOYW1l
UHJlZml4KGNvbgogLy8gQWxzbywgY2VydGFpbiBwcmVmaXhlcyBzdWNoIGFzICdwb3MnLCAnY3Nz
LScgYW5kICdwaXhlbC0nIGFyZSBzdHJpcHBlZAogLy8gYW5kIHRoZSBoYWRQaXhlbE9yUG9zUHJl
Zml4IG91dCBwYXJhbWV0ZXIgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yCiAvLyBub3Qg
dGhlIHByb3BlcnR5IG5hbWUgd2FzIHByZWZpeGVkIHdpdGggJ3Bvcy0nIG9yICdwaXhlbC0nLgot
c3RhdGljIFN0cmluZyBjc3NQcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUs
IGJvb2wmIGhhZFBpeGVsT3JQb3NQcmVmaXgpCitzdGF0aWMgQ1NTUHJvcGVydHlJbmZvKiBjc3NQ
cm9wZXJ0eUluZm8odjg6OkhhbmRsZTx2ODo6U3RyaW5nPnY4UHJvcGVydHlOYW1lKQogewotICAg
IGhhZFBpeGVsT3JQb3NQcmVmaXggPSBmYWxzZTsKLQotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHBy
b3BlcnR5TmFtZS5sZW5ndGgoKTsKLSAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIFN0
cmluZygpOworICAgIFN0cmluZyBwcm9wZXJ0eU5hbWUgPSB0b1dlYkNvcmVTdHJpbmcodjhQcm9w
ZXJ0eU5hbWUpOworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIENTU1Byb3BlcnR5SW5mbyo+
IENTU1Byb3BlcnR5SW5mb01hcDsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5
SW5mb01hcCwgbWFwLCAoKSk7CisgICAgQ1NTUHJvcGVydHlJbmZvKiBwcm9wSW5mbyA9IG1hcC5n
ZXQocHJvcGVydHlOYW1lKTsKKyAgICBpZiAoIXByb3BJbmZvKSB7CisgICAgICAgIHVuc2lnbmVk
IGxlbmd0aCA9IHByb3BlcnR5TmFtZS5sZW5ndGgoKTsKKyAgICAgICAgYm9vbCBoYWRQaXhlbE9y
UG9zUHJlZml4ID0gZmFsc2U7CisgICAgICAgIGlmICghbGVuZ3RoKQorICAgICAgICAgICAgcmV0
dXJuIDA7CisKKyAgICAgICAgVmVjdG9yPFVDaGFyPiBuYW1lOworICAgICAgICBuYW1lLnJlc2Vy
dmVDYXBhY2l0eShsZW5ndGgpOworCisgICAgICAgIHVuc2lnbmVkIGkgPSAwOworCisgICAgICAg
IGlmIChoYXNDU1NQcm9wZXJ0eU5hbWVQcmVmaXgocHJvcGVydHlOYW1lLCAiY3NzIikpCisgICAg
ICAgICAgICBpICs9IDM7CisgICAgICAgIGVsc2UgaWYgKGhhc0NTU1Byb3BlcnR5TmFtZVByZWZp
eChwcm9wZXJ0eU5hbWUsICJwaXhlbCIpKSB7CisgICAgICAgICAgICBpICs9IDU7CisgICAgICAg
ICAgICBoYWRQaXhlbE9yUG9zUHJlZml4ID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChoYXND
U1NQcm9wZXJ0eU5hbWVQcmVmaXgocHJvcGVydHlOYW1lLCAicG9zIikpIHsKKyAgICAgICAgICAg
IGkgKz0gMzsKKyAgICAgICAgICAgIGhhZFBpeGVsT3JQb3NQcmVmaXggPSB0cnVlOworICAgICAg
ICB9IGVsc2UgaWYgKGhhc0NTU1Byb3BlcnR5TmFtZVByZWZpeChwcm9wZXJ0eU5hbWUsICJ3ZWJr
aXQiKQorICAgICAgICAgICAgICAgIHx8IGhhc0NTU1Byb3BlcnR5TmFtZVByZWZpeChwcm9wZXJ0
eU5hbWUsICJraHRtbCIpCisgICAgICAgICAgICAgICAgfHwgaGFzQ1NTUHJvcGVydHlOYW1lUHJl
Zml4KHByb3BlcnR5TmFtZSwgImFwcGxlIikpCisgICAgICAgICAgICBuYW1lLmFwcGVuZCgnLScp
OworICAgICAgICBlbHNlIGlmIChXVEY6OmlzQVNDSUlVcHBlcihwcm9wZXJ0eU5hbWVbMF0pKQor
ICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBWZWN0b3I8VUNoYXI+IG5hbWU7Ci0gICAgbmFt
ZS5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoKTsKKyAgICAgICAgbmFtZS5hcHBlbmQoV1RGOjp0b0FT
Q0lJTG93ZXIocHJvcGVydHlOYW1lW2krK10pKTsKIAotICAgIHVuc2lnbmVkIGkgPSAwOworICAg
ICAgICBmb3IgKDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBVQ2hhciBjID0gcHJv
cGVydHlOYW1lW2ldOworICAgICAgICAgICAgaWYgKCFXVEY6OmlzQVNDSUlVcHBlcihjKSkKKyAg
ICAgICAgICAgICAgICBuYW1lLmFwcGVuZChjKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgIG5hbWUuYXBwZW5kKCctJyk7CisgICAgICAgICAgICAgICAgbmFtZS5hcHBlbmQo
V1RGOjp0b0FTQ0lJTG93ZXIoYykpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAKLSAgICBp
ZiAoaGFzQ1NTUHJvcGVydHlOYW1lUHJlZml4KHByb3BlcnR5TmFtZSwgImNzcyIpKQotICAgICAg
ICBpICs9IDM7Ci0gICAgZWxzZSBpZiAoaGFzQ1NTUHJvcGVydHlOYW1lUHJlZml4KHByb3BlcnR5
TmFtZSwgInBpeGVsIikpIHsKLSAgICAgICAgaSArPSA1OwotICAgICAgICBoYWRQaXhlbE9yUG9z
UHJlZml4ID0gdHJ1ZTsKLSAgICB9IGVsc2UgaWYgKGhhc0NTU1Byb3BlcnR5TmFtZVByZWZpeChw
cm9wZXJ0eU5hbWUsICJwb3MiKSkgewotICAgICAgICBpICs9IDM7Ci0gICAgICAgIGhhZFBpeGVs
T3JQb3NQcmVmaXggPSB0cnVlOwotICAgIH0gZWxzZSBpZiAoaGFzQ1NTUHJvcGVydHlOYW1lUHJl
Zml4KHByb3BlcnR5TmFtZSwgIndlYmtpdCIpCi0gICAgICAgICAgICB8fCBoYXNDU1NQcm9wZXJ0
eU5hbWVQcmVmaXgocHJvcGVydHlOYW1lLCAia2h0bWwiKQotICAgICAgICAgICAgfHwgaGFzQ1NT
UHJvcGVydHlOYW1lUHJlZml4KHByb3BlcnR5TmFtZSwgImFwcGxlIikpCi0gICAgICAgIG5hbWUu
YXBwZW5kKCctJyk7Ci0gICAgZWxzZSBpZiAoV1RGOjppc0FTQ0lJVXBwZXIocHJvcGVydHlOYW1l
WzBdKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgbmFtZS5hcHBlbmQoV1RGOjp0
b0FTQ0lJTG93ZXIocHJvcGVydHlOYW1lW2krK10pKTsKLQotICAgIGZvciAoOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgVUNoYXIgYyA9IHByb3BlcnR5TmFtZVtpXTsKLSAgICAgICAgaWYg
KCFXVEY6OmlzQVNDSUlVcHBlcihjKSkKLSAgICAgICAgICAgIG5hbWUuYXBwZW5kKGMpOwotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIG5hbWUuYXBwZW5kKCctJyk7Ci0gICAgICAgICAgICBu
YW1lLmFwcGVuZChXVEY6OnRvQVNDSUlMb3dlcihjKSk7CisgICAgICAgIFN0cmluZyBwcm9wTmFt
ZSA9IFN0cmluZzo6YWRvcHQobmFtZSk7CisgICAgICAgIGludCBwcm9wZXJ0eUlEID0gY3NzUHJv
cGVydHlJRChwcm9wTmFtZSk7CisgICAgICAgIGlmIChwcm9wZXJ0eUlEKSB7CisgICAgICAgICAg
ICBwcm9wSW5mbyA9IG5ldyBDU1NQcm9wZXJ0eUluZm8oKTsKKyAgICAgICAgICAgIHByb3BJbmZv
LT5oYWRQaXhlbE9yUG9zUHJlZml4ID0gaGFkUGl4ZWxPclBvc1ByZWZpeDsKKyAgICAgICAgICAg
IHByb3BJbmZvLT53YXNGaWx0ZXIgPSAocHJvcE5hbWUgPT0gImZpbHRlciIpOworICAgICAgICAg
ICAgcHJvcEluZm8tPnByb3BJRCA9IHByb3BlcnR5SUQ7CisgICAgICAgICAgICBtYXAuYWRkKHBy
b3BlcnR5TmFtZSwgcHJvcEluZm8pOwogICAgICAgICB9CiAgICAgfQotCi0gICAgcmV0dXJuIFN0
cmluZzo6YWRvcHQobmFtZSk7CisgICAgcmV0dXJuIHByb3BJbmZvOwogfQogCiBOQU1FRF9QUk9Q
RVJUWV9HRVRURVIoQ1NTU3R5bGVEZWNsYXJhdGlvbikKQEAgLTEzNywzMCArMTYwLDMyIEBAIE5B
TUVEX1BST1BFUlRZX0dFVFRFUihDU1NTdHlsZURlY2xhcmF0aW8KICAgICAgICAgcmV0dXJuIG5v
dEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CiAKICAgICAvLyBTZWFyY2ggdGhlIHN0eWxlIGRlY2xh
cmF0aW9uLgotICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIGltcCA9IFY4UHJveHk6OlRvTmF0aXZl
T2JqZWN0PENTU1N0eWxlRGVjbGFyYXRpb24+KFY4Q2xhc3NJbmRleDo6Q1NTU1RZTEVERUNMQVJB
VElPTiwgaW5mby5Ib2xkZXIoKSk7Ci0KLSAgICBib29sIGhhZFBpeGVsT3JQb3NQcmVmaXggPSBm
YWxzZTsKLSAgICBTdHJpbmcgcHJvcGVydHlOYW1lID0gY3NzUHJvcGVydHlOYW1lKHRvV2ViQ29y
ZVN0cmluZyhuYW1lKSwgaGFkUGl4ZWxPclBvc1ByZWZpeCk7CisgICAgQ1NTU3R5bGVEZWNsYXJh
dGlvbiogaW1wID0KKyAgICAgICAgVjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8Q1NTU3R5bGVEZWNs
YXJhdGlvbj4oVjhDbGFzc0luZGV4OjpDU1NTVFlMRURFQ0xBUkFUSU9OLCBpbmZvLkhvbGRlcigp
KTsKKyAgICBDU1NQcm9wZXJ0eUluZm8qIHByb3BJbmZvID0gY3NzUHJvcGVydHlJbmZvKG5hbWUp
OwogCiAgICAgLy8gRG8gbm90IGhhbmRsZSBub24tcHJvcGVydHkgbmFtZXMuCi0gICAgaWYgKCFD
U1NTdHlsZURlY2xhcmF0aW9uOjppc1Byb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKQorICAgIGlm
ICghcHJvcEluZm8pCiAgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwog
CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlID0gaW1wLT5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKHByb3BlcnR5TmFtZSk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSA9IGltcC0+
Z2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wSW5mby0+cHJvcElEKTsKICAgICBpZiAoY3NzVmFsdWUp
IHsKLSAgICAgICAgaWYgKGhhZFBpeGVsT3JQb3NQcmVmaXggJiYgY3NzVmFsdWUtPmNzc1ZhbHVl
VHlwZSgpID09IENTU1ZhbHVlOjpDU1NfUFJJTUlUSVZFX1ZBTFVFKQotICAgICAgICAgICAgcmV0
dXJuIHY4OjpOdW1iZXI6Ok5ldyhzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGNzc1Zh
bHVlLmdldCgpKS0+Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7Cisg
ICAgICAgIGlmIChwcm9wSW5mby0+aGFkUGl4ZWxPclBvc1ByZWZpeCAmJgorICAgICAgICAgICAg
Y3NzVmFsdWUtPmNzc1ZhbHVlVHlwZSgpID09IENTU1ZhbHVlOjpDU1NfUFJJTUlUSVZFX1ZBTFVF
KSB7CisgICAgICAgICAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4oCisgICAgICAgICAgICAgICAgY3NzVmFsdWUuZ2V0KCkpLT5nZXRGbG9h
dFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKKyAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gdjhTdHJpbmdPck51bGwoY3NzVmFsdWUtPmNzc1RleHQoKSk7CiAgICAgfQogCi0gICAg
U3RyaW5nIHJlc3VsdCA9IGltcC0+Z2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eU5hbWUpOworICAg
IFN0cmluZyByZXN1bHQgPSBpbXAtPmdldFByb3BlcnR5VmFsdWUocHJvcEluZm8tPnByb3BJRCk7
CiAgICAgaWYgKHJlc3VsdC5pc051bGwoKSkKICAgICAgICAgcmVzdWx0ID0gIiI7ICAvLyBjb252
ZXJ0IG51bGwgdG8gZW1wdHkgc3RyaW5nLgogCiAgICAgLy8gVGhlICdmaWx0ZXInIGF0dHJpYnV0
ZSBpcyBtYWRlIHVuZGV0ZWN0YWJsZSBpbiBLSlMvV2ViS2l0CiAgICAgLy8gdG8gYXZvaWQgY29u
ZnVzaW9uIHdpdGggSUUncyBmaWx0ZXIgZXh0ZW5zaW9uLgotICAgIGlmIChwcm9wZXJ0eU5hbWUg
PT0gImZpbHRlciIpCisgICAgaWYgKHByb3BJbmZvLT53YXNGaWx0ZXIpCiAgICAgICAgIHJldHVy
biB2OFVuZGV0ZWN0YWJsZVN0cmluZyhyZXN1bHQpOwogCiAgICAgcmV0dXJuIHY4U3RyaW5nKHJl
c3VsdCk7CkBAIC0xNjksMTkgKzE5NCwyNSBAQCBOQU1FRF9QUk9QRVJUWV9HRVRURVIoQ1NTU3R5
bGVEZWNsYXJhdGlvCiBOQU1FRF9QUk9QRVJUWV9TRVRURVIoQ1NTU3R5bGVEZWNsYXJhdGlvbikK
IHsKICAgICBJTkNfU1RBVFMoIkRPTS5DU1NTdHlsZURlY2xhcmF0aW9uLk5hbWVkUHJvcGVydHlT
ZXR0ZXIiKTsKLSAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBpbXAgPSBWOFByb3h5OjpUb05hdGl2
ZU9iamVjdDxDU1NTdHlsZURlY2xhcmF0aW9uPihWOENsYXNzSW5kZXg6OkNTU1NUWUxFREVDTEFS
QVRJT04sIGluZm8uSG9sZGVyKCkpOwotCi0gICAgYm9vbCBoYWRQaXhlbE9yUG9zUHJlZml4ID0g
ZmFsc2U7Ci0gICAgU3RyaW5nIHByb3AgPSBjc3NQcm9wZXJ0eU5hbWUodG9XZWJDb3JlU3RyaW5n
KG5hbWUpLCBoYWRQaXhlbE9yUG9zUHJlZml4KTsKLSAgICBpZiAoIUNTU1N0eWxlRGVjbGFyYXRp
b246OmlzUHJvcGVydHlOYW1lKHByb3ApKQorICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIGltcCA9
CisgICAgICAgIFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PENTU1N0eWxlRGVjbGFyYXRpb24+KAor
ICAgICAgICAgICAgVjhDbGFzc0luZGV4OjpDU1NTVFlMRURFQ0xBUkFUSU9OLCBpbmZvLkhvbGRl
cigpKTsKKyAgICBDU1NQcm9wZXJ0eUluZm8qIHByb3BJbmZvID0gY3NzUHJvcGVydHlJbmZvKG5h
bWUpOworICAgIGlmICghcHJvcEluZm8pCiAgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRl
cmNlcHRvcigpOwogCiAgICAgU3RyaW5nIHByb3BlcnR5VmFsdWUgPSB2YWx1ZVRvU3RyaW5nV2l0
aE51bGxDaGVjayh2YWx1ZSk7Ci0gICAgaWYgKGhhZFBpeGVsT3JQb3NQcmVmaXgpCisgICAgaWYg
KHByb3BJbmZvLT5oYWRQaXhlbE9yUG9zUHJlZml4KQogICAgICAgICBwcm9wZXJ0eVZhbHVlLmFw
cGVuZCgicHgiKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcC0+c2V0UHJv
cGVydHkocHJvcCwgcHJvcGVydHlWYWx1ZSwgZWMpOworICAgIGludCBpbXBvcnRhbnRJbmRleCA9
IHByb3BlcnR5VmFsdWUuZmluZCgiIWltcG9ydGFudCIsIDAsIGZhbHNlKTsKKyAgICBib29sIGlt
cG9ydGFudCA9IGZhbHNlOworICAgIGlmIChpbXBvcnRhbnRJbmRleCAhPSAtMSkgeworICAgICAg
ICBpbXBvcnRhbnQgPSB0cnVlOworICAgICAgICBwcm9wZXJ0eVZhbHVlID0gcHJvcGVydHlWYWx1
ZS5sZWZ0KGltcG9ydGFudEluZGV4IC0gMSk7CisgICAgfQorICAgIGltcC0+c2V0UHJvcGVydHko
cHJvcEluZm8tPnByb3BJRCwgcHJvcGVydHlWYWx1ZSwgaW1wb3J0YW50LCBlYyk7CiAKICAgICBp
ZiAoZWMpCiAgICAgICAgIHRocm93RXJyb3IoZWMpOwo=
</data>
<flag name="review"
          id="15083"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>