<?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>19388</bug_id>
          
          <creation_ts>2008-06-03 21:28:24 -0700</creation_ts>
          <short_desc>Filter Effects being cleared and reloaded multiple times</short_desc>
          <delta_ts>2014-05-12 05:54:35 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.w3.org/TR/SVG11/images/filters/filters01.svg</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>33091</dependson>
          <blocked>68469</blocked>
    
    <blocked>26389</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Mathews">possessedpenguinbob</reporter>
          <assigned_to name="Alex Mathews">possessedpenguinbob</assigned_to>
          <cc>eric</cc>
    
    <cc>jeffschiller</cc>
    
    <cc>krit</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>82276</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-06-03 21:28:24 -0700</bug_when>
    <thetext>On close inspection the filter effects for each filter were being cleared and added to the  Vector&lt;SVGFilterEffect*&gt; in SVGResourceFilter every time a styled svg element is found, I believe.

To find this I added a printf telling me what the values of the effect&apos;s &quot;in&quot; attribute are as they go through SVGResourceFilter::addFilterEffect() and looked at the output from an example svg filter image:

http://www.w3.org/TR/SVG11/images/filters/filters01.svg

Though it is probably easier to just set a breakpoint in the addFilterEffect function and debug it.

The output I got when running through that example svg with my printf was:

SourceAlpha
blur
blur
specOut
SourceGraphic
(null impl)       &lt;-- that is just because the feMerge doesn&apos;t have an &quot;in&quot; attribute

7 times total.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82280</commentid>
    <comment_count>1</comment_count>
      <attachid>21494</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-06-03 21:34:49 -0700</bug_when>
    <thetext>Created attachment 21494
Possible patch for eseidel/MacDome??

If I am indeed correct and this is not the correct behavior, checking for whether or not the vector is populated before clearing it and repopulating it provides a fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82345</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-06-05 07:02:48 -0700</bug_when>
    <thetext>I&apos;ll look at this again later today.  I&apos;ll need to stare at the exiting code a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82454</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-06-06 14:00:29 -0700</bug_when>
    <thetext>Had a talk with Eric about this and while it is not really correct behavior, for the moment it will stand. My patch would break many things because it doesn&apos;t take into account the fact that filter effects can be added and removed as well as individual attributes changed. 

So while the current behavior isn&apos;t very good performance wise, as it reloads the filter before each call to the filter whether or not it needs to, it allows for the filter to change dynamically. 

Possible fixes include adding the ability for filter effects to force a reload of the filter when their attributes change or when they are added or removed. Though in the grand scheme of things I would like to make &lt;filter&gt;s as smart as possible to reduce the amount of reloading needs to be done on changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176261</commentid>
    <comment_count>4</comment_count>
      <attachid>45729</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-01-01 01:25:20 -0800</bug_when>
    <thetext>Created attachment 45729
Calculate the filters once, not on every call af applyFilter

This patch does not only create the filter effects once, they are also just calculated onece (simuliar to SVG Masker). This is a massive speed up of filters. Not on the first calculation, but on the scrolling or animations. SVGResourceFilter would depend on bug 33091 like SVGResourceMasker with this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245216</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-07-01 02:27:04 -0700</bug_when>
    <thetext>This was fixed with moving the filter code to a renderer. Closing the bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21494</attachid>
            <date>2008-06-03 21:34:49 -0700</date>
            <delta_ts>2010-01-01 01:25:20 -0800</delta_ts>
            <desc>Possible patch for eseidel/MacDome??</desc>
            <filename>SVG_FE_Multi.diff</filename>
            <type>text/plain</type>
            <size>2569</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNDM1OCkKKysrIFdlYkNv
cmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksMTggKzEz
OSwyMCBAQAogICAgIG1fZmlsdGVyLT5zZXRFZmZlY3RCb3VuZGluZ0JveE1vZGUocHJpbWl0aXZl
QkJveE1vZGUpOwogCiAgICAgLy8gVE9ETyA6IHVzZSBzd2l0Y2gvY2FzZSBpbnN0ZWFkPwotICAg
IG1fZmlsdGVyLT5jbGVhckVmZmVjdHMoKTsKLSAgICBmb3IgKE5vZGUqIG4gPSBmaXJzdENoaWxk
KCk7IG4gIT0gMDsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgU1ZHRWxlbWVudCog
ZWxlbWVudCA9IDA7Ci0gICAgICAgIGlmIChuLT5pc1NWR0VsZW1lbnQoKSkKLSAgICAgICAgICAg
IGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4obik7Ci0gICAgICAgIGlmIChlbGVt
ZW50ICYmIGVsZW1lbnQtPmlzRmlsdGVyRWZmZWN0KCkpIHsKLSAgICAgICAgICAgIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyogZmlsdGVyQXR0cmlidXRlcyA9IHN0YXRpY19j
YXN0PFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyo+KGVsZW1lbnQpOwotICAg
ICAgICAgICAgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QgPSBmaWx0ZXJBdHRyaWJ1dGVz
LT5maWx0ZXJFZmZlY3QobV9maWx0ZXIuZ2V0KCkpOwotICAgICAgICAgICAgaWYgKCFmaWx0ZXJF
ZmZlY3QpCi0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAgaWYobV9maWx0ZXItPmlzRWZm
ZWN0c0VtcHR5KCkpIHsKKyAgICAgICAgbV9maWx0ZXItPmNsZWFyRWZmZWN0cygpOworICAgICAg
ICBmb3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG4gIT0gMDsgbiA9IG4tPm5leHRTaWJsaW5n
KCkpIHsKKyAgICAgICAgICAgIFNWR0VsZW1lbnQqIGVsZW1lbnQgPSAwOworICAgICAgICAgICAg
aWYgKG4tPmlzU1ZHRWxlbWVudCgpKQorICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxTVkdFbGVtZW50Kj4obik7CisgICAgICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50
LT5pc0ZpbHRlckVmZmVjdCgpKSB7CisgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzKiBmaWx0ZXJBdHRyaWJ1dGVzID0gc3RhdGljX2Nhc3Q8U1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKj4oZWxlbWVudCk7CisgICAgICAgICAgICAg
ICAgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QgPSBmaWx0ZXJBdHRyaWJ1dGVzLT5maWx0
ZXJFZmZlY3QobV9maWx0ZXIuZ2V0KCkpOworICAgICAgICAgICAgICAgIGlmICghZmlsdGVyRWZm
ZWN0KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgbV9maWx0
ZXItPmFkZEZpbHRlckVmZmVjdChmaWx0ZXJFZmZlY3QpOworICAgICAgICAgICAgICAgIG1fZmls
dGVyLT5hZGRGaWx0ZXJFZmZlY3QoZmlsdGVyRWZmZWN0KTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmls
dGVyLmNwcAkocmV2aXNpb24gMzQzNTgpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNv
dXJjZUZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDE0IEBACiB7CiB9CiAK
K2Jvb2wgU1ZHUmVzb3VyY2VGaWx0ZXI6OmlzRWZmZWN0c0VtcHR5KCkKK3sKKyAgICBpZihtX2Vm
ZmVjdHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBlbHNlCisgICAgICAg
IHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBTVkdSZXNvdXJjZUZpbHRlcjo6Y2xlYXJFZmZlY3Rz
KCkKIHsKICAgICBtX2VmZmVjdHMuY2xlYXIoKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR1Jlc291cmNlRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHUmVzb3VyY2VGaWx0ZXIuaAkocmV2aXNpb24gMzQzNTgpCisrKyBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdSZXNvdXJjZUZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBA
CiAKICAgICBGbG9hdFJlY3QgZmlsdGVyQkJveEZvckl0ZW1CQm94KGNvbnN0IEZsb2F0UmVjdCYg
aXRlbUJCb3gpIGNvbnN0OwogCisgICAgYm9vbCBpc0VmZmVjdHNFbXB0eSgpOwogICAgIHZvaWQg
Y2xlYXJFZmZlY3RzKCk7CiAgICAgdm9pZCBhZGRGaWx0ZXJFZmZlY3QoU1ZHRmlsdGVyRWZmZWN0
Kik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45729</attachid>
            <date>2010-01-01 01:25:20 -0800</date>
            <delta_ts>2010-06-10 20:03:37 -0700</delta_ts>
            <desc>Calculate the filters once, not on every call af applyFilter</desc>
            <filename>filter-cleanup4.patch</filename>
            <type>text/plain</type>
            <size>10761</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiA1MjY3MCkKKysrIFdlYkNv
cmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsOCArMTI2
LDE0IEBAIEZsb2F0UmVjdCBTVkdGaWx0ZXJFbGVtZW50OjpmaWx0ZXJCb3VuZGkKICAgICByZXR1
cm4gZmlsdGVyQkJveDsKIH0KIAotdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpidWlsZEZpbHRlcihj
b25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QpIGNvbnN0Citib29sIFNWR0ZpbHRlckVsZW1lbnQ6
OmJ1aWxkRmlsdGVyRWZmZWN0cyhjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkgY29uc3QKIHsK
KyAgICBpZiAoIW1fZmlsdGVyLmNvbnRhaW5zKG9iamVjdCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIFJlZlB0cjxTVkdSZXNvdXJjZUZpbHRlcj4gZmlsdGVyID0gbV9maWx0ZXIuZ2V0
KG9iamVjdCkuZ2V0KCk7CisKKyAgICBGbG9hdFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3ggPSBvYmpl
Y3QtPm9iamVjdEJvdW5kaW5nQm94KCk7CiAgICAgYm9vbCBmaWx0ZXJCQm94TW9kZSA9IGZpbHRl
clVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9Y
OwogICAgIGJvb2wgcHJpbWl0aXZlQkJveE1vZGUgPSBwcmltaXRpdmVVbml0cygpID09IFNWR1Vu
aXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWDsKIApAQCAtMTQ1LDQ2ICsx
NTEsNTUgQEAgdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpidWlsZEZpbHRlcihjb25zdAogCiAgICAg
RmxvYXRSZWN0IGZpbHRlclJlY3QgPSBmaWx0ZXJCQm94OwogICAgIGlmIChmaWx0ZXJCQm94TW9k
ZSkKLSAgICAgICAgZmlsdGVyUmVjdCA9IEZsb2F0UmVjdCh0YXJnZXRSZWN0LngoKSArIGZpbHRl
clJlY3QueCgpICogdGFyZ2V0UmVjdC53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRhcmdldFJlY3QueSgpICsgZmlsdGVyUmVjdC55KCkgKiB0YXJnZXRSZWN0LmhlaWdo
dCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclJlY3Qud2lkdGgoKSAq
IHRhcmdldFJlY3Qud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0
ZXJSZWN0LmhlaWdodCgpICogdGFyZ2V0UmVjdC5oZWlnaHQoKSk7Ci0KLSAgICBtX2ZpbHRlci0+
c2V0RmlsdGVyQm91bmRpbmdCb3goZmlsdGVyUmVjdCk7Ci0gICAgbV9maWx0ZXItPnNldEZpbHRl
clJlY3QoZmlsdGVyQkJveCk7Ci0gICAgbV9maWx0ZXItPnNldEVmZmVjdEJvdW5kaW5nQm94TW9k
ZShwcmltaXRpdmVCQm94TW9kZSk7Ci0gICAgbV9maWx0ZXItPnNldEZpbHRlckJvdW5kaW5nQm94
TW9kZShmaWx0ZXJCQm94TW9kZSk7CisgICAgICAgIGZpbHRlclJlY3QgPSBGbG9hdFJlY3Qob2Jq
ZWN0Qm91bmRpbmdCb3gueCgpICsgZmlsdGVyUmVjdC54KCkgKiBvYmplY3RCb3VuZGluZ0JveC53
aWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdEJvdW5kaW5nQm94
LnkoKSArIGZpbHRlclJlY3QueSgpICogb2JqZWN0Qm91bmRpbmdCb3guaGVpZ2h0KCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUmVjdC53aWR0aCgpICogb2JqZWN0Qm91
bmRpbmdCb3gud2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJS
ZWN0LmhlaWdodCgpICogb2JqZWN0Qm91bmRpbmdCb3guaGVpZ2h0KCkpOworCisgICAgZmlsdGVy
LT5zZXRGaWx0ZXJCb3VuZGluZ0JveChmaWx0ZXJSZWN0KTsKKyAgICBmaWx0ZXItPnNldEZpbHRl
clJlY3QoZmlsdGVyQkJveCk7CisgICAgZmlsdGVyLT5zZXRFZmZlY3RCb3VuZGluZ0JveE1vZGUo
cHJpbWl0aXZlQkJveE1vZGUpOworICAgIGZpbHRlci0+c2V0RmlsdGVyQm91bmRpbmdCb3hNb2Rl
KGZpbHRlckJCb3hNb2RlKTsKIAogICAgIGlmIChoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmZpbHRl
clJlc0F0dHIpKSB7Ci0gICAgICAgIG1fZmlsdGVyLT5zZXRIYXNGaWx0ZXJSZXNvbHV0aW9uKHRy
dWUpOwotICAgICAgICBtX2ZpbHRlci0+c2V0RmlsdGVyUmVzb2x1dGlvbihGbG9hdFNpemUoZmls
dGVyUmVzWCgpLCBmaWx0ZXJSZXNZKCkpKTsKKyAgICAgICAgZmlsdGVyLT5zZXRIYXNGaWx0ZXJS
ZXNvbHV0aW9uKHRydWUpOworICAgICAgICBmaWx0ZXItPnNldEZpbHRlclJlc29sdXRpb24oRmxv
YXRTaXplKGZpbHRlclJlc1goKSwgZmlsdGVyUmVzWSgpKSk7CiAgICAgfQotCisgICAgCiAgICAg
Ly8gQWRkIGVmZmVjdHMgdG8gdGhlIGZpbHRlcgotICAgIG1fZmlsdGVyLT5idWlsZGVyKCktPmNs
ZWFyRWZmZWN0cygpOworICAgIGZpbHRlci0+YnVpbGRlcigpLT5jbGVhckVmZmVjdHMoKTsKICAg
ICBmb3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG4gIT0gMDsgbiA9IG4tPm5leHRTaWJsaW5n
KCkpIHsKICAgICAgICAgU1ZHRWxlbWVudCogZWxlbWVudCA9IDA7CiAgICAgICAgIGlmIChuLT5p
c1NWR0VsZW1lbnQoKSkgewogICAgICAgICAgICAgZWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0Vs
ZW1lbnQqPihuKTsKICAgICAgICAgICAgIGlmIChlbGVtZW50LT5pc0ZpbHRlckVmZmVjdCgpKSB7
CiAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKiBl
ZmZlY3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzKj4oZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFlZmZlY3RFbGVtZW50LT5i
dWlsZChtX2ZpbHRlci5nZXQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9maWx0ZXItPmJ1
aWxkZXIoKS0+Y2xlYXJFZmZlY3RzKCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGlmICghZWZmZWN0RWxlbWVudC0+YnVpbGQoZmlsdGVyLmdldCgpKSkgewor
ICAgICAgICAgICAgICAgICAgICBmaWx0ZXItPmJ1aWxkZXIoKS0+Y2xlYXJFZmZlY3RzKCk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU1ZH
UmVzb3VyY2UqIFNWR0ZpbHRlckVsZW1lbnQ6OmNhbnZhc1Jlc291cmNlKGNvbnN0IFJlbmRlck9i
amVjdCopCitTVkdSZXNvdXJjZSogU1ZHRmlsdGVyRWxlbWVudDo6Y2FudmFzUmVzb3VyY2UoY29u
c3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgaWYgKCFhdHRhY2hlZCgpKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAvL2lmICghYXR0YWNoZWQoKSkKKyAgICAvLyAgICByZXR1cm4gMDsK
KworICAgIEFTU0VSVChvYmplY3QpOworCisgICAgaWYgKG1fZmlsdGVyLmNvbnRhaW5zKG9iamVj
dCkpCisgICAgICAgIHJldHVybiBtX2ZpbHRlci5nZXQob2JqZWN0KS5nZXQoKTsKKworICAgIFJl
ZlB0cjxTVkdSZXNvdXJjZUZpbHRlcj4gZmlsdGVyID0gU1ZHUmVzb3VyY2VGaWx0ZXI6OmNyZWF0
ZSh0aGlzKTsKKyAgICBTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyUHRyID0gZmlsdGVyLmdldCgp
OworICAgIG1fZmlsdGVyLnNldChvYmplY3QsIGZpbHRlci5yZWxlYXNlKCkpOwogCi0gICAgaWYg
KCFtX2ZpbHRlcikKLSAgICAgICAgbV9maWx0ZXIgPSBTVkdSZXNvdXJjZUZpbHRlcjo6Y3JlYXRl
KHRoaXMpOwotICAgIHJldHVybiBtX2ZpbHRlci5nZXQoKTsKKyAgICByZXR1cm4gZmlsdGVyUHRy
OwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCShyZXZpc2lvbiA1MjY3MCkKKysr
IFdlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiAr
MjksOCBAQAogI2luY2x1ZGUgIlNWR0xhbmdTcGFjZS5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNzAsMTIgKzcyLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkQXR0clN0cmluZywgYm9vbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCiAKLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHUmVzb3VyY2VGaWx0ZXI+IG1fZmlsdGVy
OworICAgICAgICBIYXNoTWFwPGNvbnN0IFJlbmRlck9iamVjdCosIFJlZlB0cjxTVkdSZXNvdXJj
ZUZpbHRlcj4gPiBtX2ZpbHRlcjsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBTVkdSZXNvdXJjZUZpbHRlcjsKICAgICAgICAgRmxvYXRSZWN0IGZpbHRlckJvdW5kaW5nQm94
KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwotICAgICAgICB2b2lkIGJ1aWxkRmlsdGVyKGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCkgY29uc3Q7CisgICAgICAgIGJvb2wgYnVpbGRGaWx0ZXJF
ZmZlY3RzKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRl
ci5jcHAJKHJldmlzaW9uIDUyNjcwKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3Vy
Y2VGaWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCwxNyBAQCBTVkdSZXNvdXJj
ZUZpbHRlcjo6flNWR1Jlc291cmNlRmlsdGVyKCkKIHsKIH0KIAordm9pZCBTVkdSZXNvdXJjZUZp
bHRlcjo6aW52YWxpZGF0ZSgpCit7CisgICAgU1ZHUmVzb3VyY2U6OmludmFsaWRhdGUoKTsKKyAg
ICBtX2ZpbHRlckJ1aWxkZXIuY2xlYXIoKTsKKyAgICBtX2ZpbHRlclJlY3QgPSBGbG9hdFJlY3Qo
KTsKKyAgICBtX2ZpbHRlckJCb3ggPSBGbG9hdFJlY3QoKTsKKyAgICBtX2ZpbHRlclJlc1NpemUg
PSBGbG9hdFNpemUoKTsKKyAgICBtX3NhdmVkQ29udGV4dCA9IDA7CisgICAgbV9zb3VyY2VHcmFw
aGljQnVmZmVyLmNsZWFyKCk7Cit9CisKIEZsb2F0UmVjdCBTVkdSZXNvdXJjZUZpbHRlcjo6Zmls
dGVyQm91bmRpbmdCb3goY29uc3QgRmxvYXRSZWN0JiBvYmIpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fb3duZXJFbGVtZW50LT5maWx0ZXJCb3VuZGluZ0JveChvYmIpOwpAQCAtNzAsNiArODEsMjAg
QEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZFByb2Nlc3NGaWx0ZXIoUwogICAgIHJldHVybiAo
IWZpbHRlci0+c2NhbGVYKCkgfHwgIWZpbHRlci0+c2NhbGVZKCkgfHwgIWZpbHRlclJlY3Qud2lk
dGgoKSB8fCAhZmlsdGVyUmVjdC5oZWlnaHQoKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBk
cmF3RWZmZWN0UmVzdWx0VG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIEZpbHRl
ckVmZmVjdCogbGFzdEVmZmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIEltYWdl
QnVmZmVyKiByZXN1bHRJbWFnZSA9IGxhc3RFZmZlY3QtPnJlc3VsdEltYWdlKCk7CisgICAgaWYg
KHJlc3VsdEltYWdlKSB7CisjaWYgIVBMQVRGT1JNKENHKQorICAgICAgICByZXN1bHRJbWFnZS0+
dHJhbnNmb3JtQ29sb3JTcGFjZShMaW5lYXJSR0IsIERldmljZVJHQik7CisjZW5kaWYKKyAgICAg
ICAgY29udGV4dC0+ZHJhd0ltYWdlKHJlc3VsdEltYWdlLT5pbWFnZSgpLCBjb2xvclNwYWNlLCBs
YXN0RWZmZWN0LT5zdWJSZWdpb24oKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgU1ZHUmVzb3VyY2VGaWx0ZXI6OmFkZEZp
bHRlckVmZmVjdChTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMqIGVmZmVjdEF0
dHJpYnV0ZXMsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QpCiB7CiAgICAgZWZmZWN0
QXR0cmlidXRlcy0+c2V0U3RhbmRhcmRBdHRyaWJ1dGVzKHRoaXMsIGVmZmVjdC5nZXQoKSk7CkBA
IC05Myw3ICsxMTgsMTMgQEAgYm9vbCBTVkdSZXNvdXJjZUZpbHRlcjo6Zml0c0luTWF4aW11bUlt
YQogCiBib29sIFNWR1Jlc291cmNlRmlsdGVyOjpwcmVwYXJlRmlsdGVyKEdyYXBoaWNzQ29udGV4
dComIGNvbnRleHQsIGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0KQogewotICAgIG1fb3duZXJF
bGVtZW50LT5idWlsZEZpbHRlcihvYmplY3QtPm9iamVjdEJvdW5kaW5nQm94KCkpOworICAgIC8v
IFJldHVybiBpZiB0aGUgZmlsdGVyIHdhcyBhbHJlYWR5IGNyZWF0ZWQuCisgICAgaWYgKCFtX2Zp
bHRlckJ1aWxkZXItPmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KCFtX293bmVyRWxlbWVudC0+YnVpbGRGaWx0ZXJFZmZlY3RzKG9iamVjdCkgfHwgc2hvdWxkUHJv
Y2Vzc0ZpbHRlcih0aGlzLCBtX2ZpbHRlckJCb3gpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
ICAgICBjb25zdCBTVkdSZW5kZXJCYXNlKiByZW5kZXJlciA9IG9iamVjdC0+dG9TVkdSZW5kZXJC
YXNlKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTAx
LDkgKzEzMiw2IEBAIGJvb2wgU1ZHUmVzb3VyY2VGaWx0ZXI6OnByZXBhcmVGaWx0ZXIoR3IKICAg
ICBGbG9hdFJlY3QgcGFpbnRSZWN0ID0gcmVuZGVyZXItPnN0cm9rZUJvdW5kaW5nQm94KCk7CiAg
ICAgcGFpbnRSZWN0LnVuaXRlKHJlbmRlcmVyLT5tYXJrZXJCb3VuZGluZ0JveCgpKTsKIAotICAg
IGlmIChzaG91bGRQcm9jZXNzRmlsdGVyKHRoaXMsIG1fZmlsdGVyQkJveCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQogICAgIC8vIGNsaXAgc291cmNlSW1hZ2UgdG8gZmlsdGVyUmVnaW9uCiAg
ICAgRmxvYXRSZWN0IGNsaXBwZWRTb3VyY2VSZWN0ID0gcGFpbnRSZWN0OwogICAgIGNsaXBwZWRT
b3VyY2VSZWN0LmludGVyc2VjdChtX2ZpbHRlckJCb3gpOwpAQCAtMTU4LDMxICsxODYsMzQgQEAg
Ym9vbCBTVkdSZXNvdXJjZUZpbHRlcjo6cHJlcGFyZUZpbHRlcihHcgogCiB2b2lkIFNWR1Jlc291
cmNlRmlsdGVyOjphcHBseUZpbHRlcihHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCBjb25zdCBS
ZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKKyAgICAvLyBXZSBhbHJlYWR5IGhhdmUgZHJhd24gdGhl
IGZpbHRlci4gQ2F0Y2ggdGhlIGxhc3QgcmVzdWx0IGFuZCBkcmF3IGl0IHRvIHRoZSBjb250ZXh0
LgorICAgIEZpbHRlckVmZmVjdCogbGFzdEVmZmVjdCA9IG1fZmlsdGVyQnVpbGRlci0+bGFzdEVm
ZmVjdCgpOworCisgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gRGV2aWNlQ29sb3JTcGFjZTsK
KyAgICBpZiAob2JqZWN0KQorICAgICAgICBjb2xvclNwYWNlID0gb2JqZWN0LT5zdHlsZSgpLT5j
b2xvclNwYWNlKCk7CisKKyAgICAvLyBEcmF3IHRoZSBmaWx0ZXIgcmVzdWx0IGRpcmVjdGx5IGlm
IHdlIGFscmVhZHkgaGF2ZSBvbmUuCisgICAgaWYgKGxhc3RFZmZlY3QgJiYgIW1fZmlsdGVyQkJv
eC5pc0VtcHR5KCkgJiYKKyAgICAgICAgIWxhc3RFZmZlY3QtPnN1YlJlZ2lvbigpLmlzRW1wdHko
KSAmJgorICAgICAgICBkcmF3RWZmZWN0UmVzdWx0VG9Db250ZXh0KGNvbnRleHQsIGxhc3RFZmZl
Y3QsIGNvbG9yU3BhY2UpKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFtX3NhdmVk
Q29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29udGV4dCA9IG1fc2F2ZWRDb250ZXh0
OwogICAgIG1fc2F2ZWRDb250ZXh0ID0gMDsKKwogI2lmICFQTEFURk9STShDRykKICAgICBtX3Nv
dXJjZUdyYXBoaWNCdWZmZXItPnRyYW5zZm9ybUNvbG9yU3BhY2UoRGV2aWNlUkdCLCBMaW5lYXJS
R0IpOwogI2VuZGlmCiAKLSAgICBGaWx0ZXJFZmZlY3QqIGxhc3RFZmZlY3QgPSBtX2ZpbHRlckJ1
aWxkZXItPmxhc3RFZmZlY3QoKTsKLQorICAgIC8vIENyZWF0ZSB0aGUgZmlsdGVyIHJlc3VsdC4K
ICAgICBpZiAobGFzdEVmZmVjdCAmJiAhbV9maWx0ZXJCQm94LmlzRW1wdHkoKSAmJiAhbGFzdEVm
ZmVjdC0+c3ViUmVnaW9uKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fZmlsdGVyLT5zZXRTb3Vy
Y2VJbWFnZShtX3NvdXJjZUdyYXBoaWNCdWZmZXIucmVsZWFzZSgpKTsKICAgICAgICAgbGFzdEVm
ZmVjdC0+YXBwbHkobV9maWx0ZXIuZ2V0KCkpOwotCi0gICAgICAgIEltYWdlQnVmZmVyKiByZXN1
bHRJbWFnZSA9IGxhc3RFZmZlY3QtPnJlc3VsdEltYWdlKCk7Ci0gICAgICAgIGlmIChyZXN1bHRJ
bWFnZSkgewotI2lmICFQTEFURk9STShDRykKLSAgICAgICAgICAgIHJlc3VsdEltYWdlLT50cmFu
c2Zvcm1Db2xvclNwYWNlKExpbmVhclJHQiwgRGV2aWNlUkdCKTsKLSNlbmRpZgotICAgICAgICAg
ICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gRGV2aWNlQ29sb3JTcGFjZTsKLSAgICAgICAgICAg
IGlmIChvYmplY3QpCi0gICAgICAgICAgICAgICAgY29sb3JTcGFjZSA9IG9iamVjdC0+c3R5bGUo
KS0+Y29sb3JTcGFjZSgpOwotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKHJlc3VsdElt
YWdlLT5pbWFnZSgpLCBjb2xvclNwYWNlLCBsYXN0RWZmZWN0LT5zdWJSZWdpb24oKSk7Ci0gICAg
ICAgIH0KKyAgICAgICAgZHJhd0VmZmVjdFJlc3VsdFRvQ29udGV4dChjb250ZXh0LCBsYXN0RWZm
ZWN0LCBjb2xvclNwYWNlKTsKICAgICB9CiAKICAgICBtX3NvdXJjZUdyYXBoaWNCdWZmZXIuY2xl
YXIoKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuaAkocmV2
aXNpb24gNTI2NzApCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5T
VkdSZXNvdXJjZUZpbHRlcigpOwogICAgIAogICAgIHZpcnR1YWwgU1ZHUmVzb3VyY2VUeXBlIHJl
c291cmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIEZpbHRlclJlc291cmNlVHlwZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBpbnZhbGlkYXRlKCk7CiAKICAgICB2b2lkIHNldEZpbHRlclJlc29sdXRpb24o
Y29uc3QgRmxvYXRTaXplJiBmaWx0ZXJSZXNTaXplKSB7IG1fZmlsdGVyUmVzU2l6ZSA9IGZpbHRl
clJlc1NpemU7IH0KICAgICB2b2lkIHNldEhhc0ZpbHRlclJlc29sdXRpb24oYm9vbCBmaWx0ZXJS
ZXMpIHsgbV9maWx0ZXJSZXMgPSBmaWx0ZXJSZXM7IH0KSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAkocmV2aXNpb24gNTI2NzAp
CisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCwxMSBAQCB2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmNs
ZWFyRWZmZWN0cygpCiAgICAgbV9uYW1lZEVmZmVjdHMuY2xlYXIoKTsKIH0KIAorYm9vbCBTVkdG
aWx0ZXJCdWlsZGVyOjppc0VtcHR5KCkKK3sKKyAgICByZXR1cm4gKCFtX2xhc3RFZmZlY3QgJiYg
bV9uYW1lZEVmZmVjdHMuaXNFbXB0eSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCkluZGV4OiBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAkocmV2aXNpb24g
NTI2NzApCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIEZpbHRlckVmZmVjdCogbGFzdEVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEVm
ZmVjdC5nZXQoKTsgfQogCiAgICAgICAgIHZvaWQgY2xlYXJFZmZlY3RzKCk7CisgICAgICAgIGJv
b2wgaXNFbXB0eSgpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgSGFzaE1hcDxBdG9taWNTdHJp
bmcsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+ID4gbV9idWlsdGluRWZmZWN0czsK
</data>

          </attachment>
      

    </bug>

</bugzilla>