<?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>129467</bug_id>
          
          <creation_ts>2014-02-27 21:01:28 -0800</creation_ts>
          <short_desc>Element::attributeChanged shouldn&apos;t do any work when attribute value didn&apos;t change</short_desc>
          <delta_ts>2014-02-27 23:44:53 -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>DOM</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>985446</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-02-27 21:01:28 -0800</bug_when>
    <thetext>Right now attributeChanged computes the id for style resolution and so forth even if the attribute is set to the same value.
Don&apos;t do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985447</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-02-27 21:02:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/16192801&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985469</commentid>
    <comment_count>2</comment_count>
      <attachid>225438</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-02-27 22:46:06 -0800</bug_when>
    <thetext>Created attachment 225438
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985471</commentid>
    <comment_count>3</comment_count>
      <attachid>225438</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-27 22:53:30 -0800</bug_when>
    <thetext>Comment on attachment 225438
Fixes the bug

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

&gt; Source/WebCore/dom/Attr.cpp:125
&gt; +    AtomicString oldValue = this-&gt;value();

const AtomicString&amp;

&gt; Source/WebCore/dom/Attr.cpp:169
&gt; +    AtomicString oldValue = value();

const AtomicString&amp;

&gt; Source/WebCore/dom/Element.cpp:1029
&gt; +    AtomicString oldValue = attribute.value();

const AtomicString&amp;

&gt; Source/WebCore/dom/Element.cpp:1031
&gt; +    QualifiedName attributeName = (!inSynchronizationOfLazyAttribute || valueChanged) ? attribute.name() : name;

const QualifiedName&amp;

&gt; Source/WebCore/dom/Element.cpp:1074
&gt;      document().incDOMTreeVersion();
&gt;  
&gt; +    if (oldValue == newValue)
&gt; +        return;

Why do we incDOMTreeVersion unconditionally, even in the case where we&apos;re not going to make a change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985472</commentid>
    <comment_count>4</comment_count>
      <attachid>225438</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-02-27 22:56:56 -0800</bug_when>
    <thetext>Comment on attachment 225438
Fixes the bug

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

&gt;&gt; Source/WebCore/dom/Attr.cpp:125
&gt;&gt; +    AtomicString oldValue = this-&gt;value();
&gt; 
&gt; const AtomicString&amp;

Unfortunately we can&apos;t do that because setValue may remove the last ref to the old value.

&gt;&gt; Source/WebCore/dom/Attr.cpp:169
&gt;&gt; +    AtomicString oldValue = value();
&gt; 
&gt; const AtomicString&amp;

Ditto.

&gt;&gt; Source/WebCore/dom/Element.cpp:1029
&gt;&gt; +    AtomicString oldValue = attribute.value();
&gt; 
&gt; const AtomicString&amp;

Ditto.

&gt;&gt; Source/WebCore/dom/Element.cpp:1031
&gt;&gt; +    QualifiedName attributeName = (!inSynchronizationOfLazyAttribute || valueChanged) ? attribute.name() : name;
&gt; 
&gt; const QualifiedName&amp;

Will fix this one.

&gt;&gt; Source/WebCore/dom/Element.cpp:1074
&gt;&gt; +        return;
&gt; 
&gt; Why do we incDOMTreeVersion unconditionally, even in the case where we&apos;re not going to make a change?

There are some DOM elements that do work inside parseAttribute or in overridden attributedChanged
even if the old value matched the new value so I think it&apos;s a good idea to always increment the DOM tree version here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985479</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-02-27 23:44:53 -0800</bug_when>
    <thetext>Committed r164856: &lt;http://trac.webkit.org/changeset/164856&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225438</attachid>
            <date>2014-02-27 22:46:06 -0800</date>
            <delta_ts>2014-02-27 22:56:56 -0800</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-129467-20140227224712.patch</filename>
            <type>text/plain</type>
            <size>19143</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0ODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThiNGNhMzM3MzI1ZmRk
MjJhYzEyMmQ2Nzk0ZTUxYjFjMjUzMTliNC4uZGFlMWY3NDg1MDJmODc5NzhjZmJmNGUwZmZkMjI0
NDI5YmYzYjVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQyIEBACiAyMDE0LTAyLTI3ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCisgICAgICAgIEVsZW1lbnQ6OmF0dHJpYnV0
ZUNoYW5nZWQgc2hvdWxkbid0IGRvIGFueSB3b3JrIHdoZW4gYXR0cmlidXRlIHZhbHVlIGRpZG4n
dCBjaGFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyOTQ2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEV4aXQgZWFybHkgaW4gY2hpbGRyZW5DaGFuZ2VkIHdoZW4gdGhlIGF0dHJpYnV0ZSB2YWx1ZSBk
aWRuJ3QgY2hhbmdlLgorCisgICAgICAgICogZG9tL0F0dHIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXR0cjo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXR0cjo6Y2hpbGRyZW5DaGFu
Z2VkKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjpzZXRBdHRyaWJ1dGVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojph
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnBhcnNlclNldEF0
dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlSW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlkQWRkQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpZE1vZGlmeUF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpkaWRSZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6Y2xvbmVBdHRyaWJ1dGVzRnJvbUVsZW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVt
ZW50Lmg6CisgICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVkRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogZG9tL1N0eWxl
ZEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6dXBkYXRlVHlwZSk6CisgICAgICAgICogbWF0
aG1sL01hdGhNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6
YXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogbWF0aG1sL01hdGhNTEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBtYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNYXRoTUxTZWxlY3RFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBtYXRo
bWwvTWF0aE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisKKzIwMTQtMDItMjcgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CisKICAgICAgICAgSlNDIGlnbm9yZXMgdGhlIGV4dHJhIG1lbW9yeSBjb3N0
IG9mIEhUTUxDb2xsZWN0aW9uIGFmdGVyIGEgbWFqb3IgR0MKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTQ1MAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQXR0ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKaW5kZXgg
MmRlYjE4NDNjYzc3OTFmZTJlMzlmMWNiNTM3ZmZkZjE4YzRiZTY3NC4uNTBmZjBiNjdhZmM0MzQ2
NjZiZjBjZDE5MjZjYWQ2MmQ5YjU0YzZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0F0dHIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcApAQCAtMTIyLDEzICsx
MjIsMTQgQEAgdm9pZCBBdHRyOjpzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQog
CiB2b2lkIEF0dHI6OnNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlv
bkNvZGUmKQogeworICAgIEF0b21pY1N0cmluZyBvbGRWYWx1ZSA9IHRoaXMtPnZhbHVlKCk7CiAg
ICAgaWYgKG1fZWxlbWVudCkKLSAgICAgICAgbV9lbGVtZW50LT53aWxsTW9kaWZ5QXR0cmlidXRl
KHF1YWxpZmllZE5hbWUoKSwgdGhpcy0+dmFsdWUoKSwgdmFsdWUpOworICAgICAgICBtX2VsZW1l
bnQtPndpbGxNb2RpZnlBdHRyaWJ1dGUocXVhbGlmaWVkTmFtZSgpLCBvbGRWYWx1ZSwgdmFsdWUp
OwogCiAgICAgc2V0VmFsdWUodmFsdWUpOwogCiAgICAgaWYgKG1fZWxlbWVudCkKLSAgICAgICAg
bV9lbGVtZW50LT5kaWRNb2RpZnlBdHRyaWJ1dGUocXVhbGlmaWVkTmFtZSgpLCB2YWx1ZSk7Cisg
ICAgICAgIG1fZWxlbWVudC0+ZGlkTW9kaWZ5QXR0cmlidXRlKHF1YWxpZmllZE5hbWUoKSwgb2xk
VmFsdWUsIHZhbHVlKTsKIH0KIAogdm9pZCBBdHRyOjpzZXROb2RlVmFsdWUoY29uc3QgU3RyaW5n
JiB2LCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTE2NSw5ICsxNjYsMTAgQEAgdm9pZCBBdHRyOjpj
aGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKQogICAgIFN0cmluZ0J1aWxkZXIgdmFs
dWVCdWlsZGVyOwogICAgIFRleHROb2RlVHJhdmVyc2FsOjphcHBlbmRDb250ZW50cyh0aGlzLCB2
YWx1ZUJ1aWxkZXIpOwogCisgICAgQXRvbWljU3RyaW5nIG9sZFZhbHVlID0gdmFsdWUoKTsKICAg
ICBBdG9taWNTdHJpbmcgbmV3VmFsdWUgPSB2YWx1ZUJ1aWxkZXIudG9BdG9taWNTdHJpbmcoKTsK
ICAgICBpZiAobV9lbGVtZW50KQotICAgICAgICBtX2VsZW1lbnQtPndpbGxNb2RpZnlBdHRyaWJ1
dGUocXVhbGlmaWVkTmFtZSgpLCB2YWx1ZSgpLCBuZXdWYWx1ZSk7CisgICAgICAgIG1fZWxlbWVu
dC0+d2lsbE1vZGlmeUF0dHJpYnV0ZShxdWFsaWZpZWROYW1lKCksIG9sZFZhbHVlLCBuZXdWYWx1
ZSk7CiAKICAgICBpZiAobV9lbGVtZW50KQogICAgICAgICBlbGVtZW50QXR0cmlidXRlKCkuc2V0
VmFsdWUobmV3VmFsdWUpOwpAQCAtMTc1LDcgKzE3Nyw3IEBAIHZvaWQgQXR0cjo6Y2hpbGRyZW5D
aGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikKICAgICAgICAgbV9zdGFuZGFsb25lVmFsdWUgPSBu
ZXdWYWx1ZTsKIAogICAgIGlmIChtX2VsZW1lbnQpCi0gICAgICAgIG1fZWxlbWVudC0+YXR0cmli
dXRlQ2hhbmdlZChxdWFsaWZpZWROYW1lKCksIG5ld1ZhbHVlKTsKKyAgICAgICAgbV9lbGVtZW50
LT5hdHRyaWJ1dGVDaGFuZ2VkKHF1YWxpZmllZE5hbWUoKSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsK
IH0KIAogYm9vbCBBdHRyOjppc0lkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA3
OWQxNTc5ZGI5ZDUwZTM4NjVkMDkyZjMyNGFhYWExNWYyNDY3MzQxLi5lN2RlMzgzZTRkNDE5ZjQ3
YjcyM2RjZTIwMWI3MjA5YmM4ZmM2YTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMDI1
LDExICsxMDI1LDEzIEBAIGlubGluZSB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFs
KHVuc2lnbmVkIGluZGV4LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBib29sIHZhbHVlQ2hhbmdlZCA9IG5ld1ZhbHVlICE9IGF0dHJpYnV0ZUF0
KGluZGV4KS52YWx1ZSgpOwotICAgIFF1YWxpZmllZE5hbWUgYXR0cmlidXRlTmFtZSA9ICghaW5T
eW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUgfHwgdmFsdWVDaGFuZ2VkKSA/IGF0dHJpYnV0
ZUF0KGluZGV4KS5uYW1lKCkgOiBuYW1lOworICAgIGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRl
ID0gYXR0cmlidXRlQXQoaW5kZXgpOworICAgIEF0b21pY1N0cmluZyBvbGRWYWx1ZSA9IGF0dHJp
YnV0ZS52YWx1ZSgpOworICAgIGJvb2wgdmFsdWVDaGFuZ2VkID0gbmV3VmFsdWUgIT0gb2xkVmFs
dWU7CisgICAgUXVhbGlmaWVkTmFtZSBhdHRyaWJ1dGVOYW1lID0gKCFpblN5bmNocm9uaXphdGlv
bk9mTGF6eUF0dHJpYnV0ZSB8fCB2YWx1ZUNoYW5nZWQpID8gYXR0cmlidXRlLm5hbWUoKSA6IG5h
bWU7CiAKICAgICBpZiAoIWluU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRlKQotICAgICAg
ICB3aWxsTW9kaWZ5QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZUF0KGluZGV4KS52
YWx1ZSgpLCBuZXdWYWx1ZSk7CisgICAgICAgIHdpbGxNb2RpZnlBdHRyaWJ1dGUoYXR0cmlidXRl
TmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKIAogICAgIGlmICh2YWx1ZUNoYW5nZWQpIHsKICAg
ICAgICAgLy8gSWYgdGhlcmUgaXMgYW4gQXR0ciBub2RlIGhvb2tlZCB0byB0aGlzIGF0dHJpYnV0
ZSwgdGhlIEF0dHI6OnNldFZhbHVlKCkgY2FsbCBiZWxvdwpAQCAtMTA0Miw3ICsxMDQ0LDcgQEAg
aW5saW5lIHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlSW50ZXJuYWwodW5zaWduZWQgaW5kZXgs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIG4KICAgICB9CiAKICAgICBpZiAoIWluU3luY2hyb25pemF0
aW9uT2ZMYXp5QXR0cmlidXRlKQotICAgICAgICBkaWRNb2RpZnlBdHRyaWJ1dGUoYXR0cmlidXRl
TmFtZSwgbmV3VmFsdWUpOworICAgICAgICBkaWRNb2RpZnlBdHRyaWJ1dGUoYXR0cmlidXRlTmFt
ZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKIH0KIAogc3RhdGljIGlubGluZSBBdG9taWNTdHJpbmcg
bWFrZUlkRm9yU3R5bGVSZXNvbHV0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIGJvb2wg
aW5RdWlya3NNb2RlKQpAQCAtMTA2MiwxMiArMTA2NCwxNSBAQCBzdGF0aWMgYm9vbCBjaGVja05l
ZWRzU3R5bGVJbnZhbGlkYXRpb25Gb3JJZENoYW5nZShjb25zdCBBdG9taWNTdHJpbmcmIG9sZElk
LCBjbwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFs
dWUsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbikKK3ZvaWQgRWxlbWVudDo6YXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG9s
ZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlLCBBdHRyaWJ1dGVNb2RpZmljYXRp
b25SZWFzb24pCiB7CiAgICAgcGFyc2VBdHRyaWJ1dGUobmFtZSwgbmV3VmFsdWUpOwogCiAgICAg
ZG9jdW1lbnQoKS5pbmNET01UcmVlVmVyc2lvbigpOwogCisgICAgaWYgKG9sZFZhbHVlID09IG5l
d1ZhbHVlKQorICAgICAgICByZXR1cm47CisKICAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29s
dmVyID0gZG9jdW1lbnQoKS5zdHlsZVJlc29sdmVySWZFeGlzdHMoKTsKICAgICBib29sIHRlc3RT
aG91bGRJbnZhbGlkYXRlU3R5bGUgPSBpblJlbmRlcmVkRG9jdW1lbnQoKSAmJiBzdHlsZVJlc29s
dmVyICYmIHN0eWxlQ2hhbmdlVHlwZSgpIDwgRnVsbFN0eWxlQ2hhbmdlOwogICAgIGJvb2wgc2hv
dWxkSW52YWxpZGF0ZVN0eWxlID0gZmFsc2U7CkBAIC0xMjQ0LDcgKzEyNDksNyBAQCB2b2lkIEVs
ZW1lbnQ6OnBhcnNlclNldEF0dHJpYnV0ZXMoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJp
YnV0ZVZlY3RvcikKIAogICAgIC8vIFVzZSBhdHRyaWJ1dGVWZWN0b3IgaW5zdGVhZCBvZiBtX2Vs
ZW1lbnREYXRhIGJlY2F1c2UgYXR0cmlidXRlQ2hhbmdlZCBtaWdodCBtb2RpZnkgbV9lbGVtZW50
RGF0YS4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cmlidXRlVmVjdG9yLnNpemUo
KTsgKytpKQotICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKGF0dHJpYnV0ZVZlY3RvcltpXS5uYW1l
KCksIGF0dHJpYnV0ZVZlY3RvcltpXS52YWx1ZSgpLCBNb2RpZmllZERpcmVjdGx5KTsKKyAgICAg
ICAgYXR0cmlidXRlQ2hhbmdlZChhdHRyaWJ1dGVWZWN0b3JbaV0ubmFtZSgpLCBudWxsQXRvbSwg
YXR0cmlidXRlVmVjdG9yW2ldLnZhbHVlKCksIE1vZGlmaWVkRGlyZWN0bHkpOwogfQogCiBib29s
IEVsZW1lbnQ6Omhhc0F0dHJpYnV0ZXMoKSBjb25zdApAQCAtMTgwMyw3ICsxODA4LDcgQEAgdm9p
ZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVJbnRlcm5hbCh1bnNpZ25lZCBpbmRleCwgU3luY2hy
b25pemF0aW9uT2ZMYXp5QXR0cmkKICAgICBlbGVtZW50RGF0YS5yZW1vdmVBdHRyaWJ1dGUoaW5k
ZXgpOwogCiAgICAgaWYgKCFpblN5bmNocm9uaXphdGlvbk9mTGF6eUF0dHJpYnV0ZSkKLSAgICAg
ICAgZGlkUmVtb3ZlQXR0cmlidXRlKG5hbWUpOworICAgICAgICBkaWRSZW1vdmVBdHRyaWJ1dGUo
bmFtZSwgdmFsdWVCZWluZ1JlbW92ZWQpOwogfQogCiB2b2lkIEVsZW1lbnQ6OmFkZEF0dHJpYnV0
ZUludGVybmFsKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUsIFN5bmNocm9uaXphdGlvbk9mTGF6eUF0dHJpYnV0ZSBpblN5bmNocm9uaXphdGlvbk9m
TGF6eUF0dHJpYnV0ZSkKQEAgLTI3NjksMjEgKzI3NzQsMjEgQEAgdm9pZCBFbGVtZW50Ojp3aWxs
TW9kaWZ5QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0
cmluZyYKIAogdm9pZCBFbGVtZW50OjpkaWRBZGRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBhdHRyaWJ1dGVDaGFu
Z2VkKG5hbWUsIHZhbHVlKTsKKyAgICBhdHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIG51bGxBdG9tLCB2
YWx1ZSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlET01BdHRyKCZk
b2N1bWVudCgpLCB0aGlzLCBuYW1lLmxvY2FsTmFtZSgpLCB2YWx1ZSk7CiAgICAgZGlzcGF0Y2hT
dWJ0cmVlTW9kaWZpZWRFdmVudCgpOwogfQogCi12b2lkIEVsZW1lbnQ6OmRpZE1vZGlmeUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
KQordm9pZCBFbGVtZW50OjpkaWRNb2RpZnlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBu
ZXdWYWx1ZSkKIHsKLSAgICBhdHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIHZhbHVlKTsKLSAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHIoJmRvY3VtZW50KCksIHRoaXMs
IG5hbWUubG9jYWxOYW1lKCksIHZhbHVlKTsKKyAgICBhdHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIG9s
ZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2Rp
ZnlET01BdHRyKCZkb2N1bWVudCgpLCB0aGlzLCBuYW1lLmxvY2FsTmFtZSgpLCBuZXdWYWx1ZSk7
CiAgICAgLy8gRG8gbm90IGRpc3BhdGNoIGEgRE9NU3VidHJlZU1vZGlmaWVkIGV2ZW50IGhlcmU7
IHNlZSBidWcgODExNDEuCiB9CiAKLXZvaWQgRWxlbWVudDo6ZGlkUmVtb3ZlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCit2b2lkIEVsZW1lbnQ6OmRpZFJlbW92ZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVl
KQogewotICAgIGF0dHJpYnV0ZUNoYW5nZWQobmFtZSwgbnVsbEF0b20pOworICAgIGF0dHJpYnV0
ZUNoYW5nZWQobmFtZSwgb2xkVmFsdWUsIG51bGxBdG9tKTsKICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlbW92ZURPTUF0dHIoJmRvY3VtZW50KCksIHRoaXMsIG5hbWUubG9jYWxO
YW1lKCkpOwogICAgIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQoKTsKIH0KQEAgLTI5ODQs
OSArMjk4OSw4IEBAIHZvaWQgRWxlbWVudDo6Y2xvbmVBdHRyaWJ1dGVzRnJvbUVsZW1lbnQoY29u
c3QgRWxlbWVudCYgb3RoZXIpCiAgICAgZWxzZQogICAgICAgICBtX2VsZW1lbnREYXRhID0gb3Ro
ZXIubV9lbGVtZW50RGF0YS0+bWFrZVVuaXF1ZUNvcHkoKTsKIAotICAgIGZvciAoY29uc3QgQXR0
cmlidXRlJiBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGVzSXRlcmF0b3IoKSkgewotICAgICAgICBhdHRy
aWJ1dGVDaGFuZ2VkKGF0dHJpYnV0ZS5uYW1lKCksIGF0dHJpYnV0ZS52YWx1ZSgpLCBNb2RpZmll
ZEJ5Q2xvbmluZyk7Ci0gICAgfQorICAgIGZvciAoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUg
OiBhdHRyaWJ1dGVzSXRlcmF0b3IoKSkKKyAgICAgICAgYXR0cmlidXRlQ2hhbmdlZChhdHRyaWJ1
dGUubmFtZSgpLCBudWxsQXRvbSwgYXR0cmlidXRlLnZhbHVlKCksIE1vZGlmaWVkQnlDbG9uaW5n
KTsKIH0KIAogdm9pZCBFbGVtZW50OjpjbG9uZURhdGFGcm9tRWxlbWVudChjb25zdCBFbGVtZW50
JiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDE3NWYxM2EyMjc3NmQyMWExNjA5NTdhMWVi
NDU0YjA3NDcxMmVjOGUuLjM5NjY3ZTNhMzE0ZDMyYzAwNGNiYTllMTk0OTA4MjAxZmRkZDM0MzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMjkwLDcgKzI5MCw3IEBAIHB1YmxpYzoKICAgICB9Owog
CiAgICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW5ldmVyIGFuIGF0dHJpYnV0ZSBpcyBh
ZGRlZCwgY2hhbmdlZCBvciByZW1vdmVkLgotICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBBdHRyaWJ1dGVN
b2RpZmljYXRpb25SZWFzb24gPSBNb2RpZmllZERpcmVjdGx5KTsKKyAgICB2aXJ0dWFsIHZvaWQg
YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
JiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZp
Y2F0aW9uUmVhc29uID0gTW9kaWZpZWREaXJlY3RseSk7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSB7IH0K
IAogICAgIC8vIE9ubHkgY2FsbGVkIGJ5IHRoZSBwYXJzZXIgaW1tZWRpYXRlbHkgYWZ0ZXIgZWxl
bWVudCBjb25zdHJ1Y3Rpb24uCkBAIC02MTIsOCArNjEyLDggQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgZGlkQWRkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmKTsKICAgICB2b2lkIHdpbGxNb2RpZnlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFs
dWUpOwotICAgIHZvaWQgZGlkTW9kaWZ5QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmKTsKLSAgICB2b2lkIGRpZFJlbW92ZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJik7CisgICAgdm9pZCBkaWRNb2RpZnlBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmV3VmFsdWUpOworICAgIHZvaWQgZGlkUmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlKTsKIAogICAgIHZvaWQgc3luY2hy
b25pemVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIHZvaWQgc3lu
Y2hyb25pemVBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCmluZGV4IDNiOTQ3NWRjNGZjNjYzMWE4YmM1
NDNjNmJlODUyZTA1M2IzOWI4YTAuLjQ5YjM5NjU4NmE3YWEyY2VlYWNmOGUzZTRiMWFiOWFiYmEx
OTJmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKQEAgLTE0OSw3ICsxNDks
NyBAQCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBTdHlsZWRFbGVtZW50OjplbnN1cmVNdXRhYmxl
SW5saW5lU3R5bGUoKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzJj4oKmlubGluZVN0eWxlKTsKIH0KIAotdm9pZCBTdHlsZWRFbGVtZW50OjphdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3
VmFsdWUsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbiByZWFzb24pCit2b2lkIFN0eWxlZEVs
ZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSwgQXR0
cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uIHJlYXNvbikKIHsKICAgICBpZiAobmFtZSA9PSBzdHls
ZUF0dHIpCiAgICAgICAgIHN0eWxlQXR0cmlidXRlQ2hhbmdlZChuZXdWYWx1ZSwgcmVhc29uKTsK
QEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaQogICAgICAgICBzZXRO
ZWVkc1N0eWxlUmVjYWxjKElubGluZVN0eWxlQ2hhbmdlKTsKICAgICB9CiAKLSAgICBFbGVtZW50
OjphdHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIG5ld1ZhbHVlLCByZWFzb24pOworICAgIEVsZW1lbnQ6
OmF0dHJpYnV0ZUNoYW5nZWQobmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCByZWFzb24pOwogfQog
CiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24qIFN0eWxlZEVsZW1lbnQ6OmlubGluZVN0
eWxlQ1NTT01XcmFwcGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCmluZGV4IDJkODBj
MzQxNmYzZWE2YjFkNjgxZjBjNDAwYTA3ZTU0MWEyOTE4MTguLjU2NTUwMWI3NTE0MjYzZjhmMjg5
Zjk0Y2IwZDg1NmU2ZWIzMjI3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHls
ZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaApAQCAt
NjksNyArNjksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmLCBBdHRyaWJ1dGVNb2RpZmljYXRpb25SZWFzb24gPSBNb2RpZmllZERpcmVjdGx5KSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBu
ZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uID0gTW9kaWZpZWREaXJlY3RseSkg
b3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGRmMjBkM2U2ZDA0NGRiMDc3OWFkNTFk
NmIxYjZhMDk1OWExZmMzYTMuLjE4ZDA0ZjlkZjMwNDE2YmFhM2VkYjdkZDkwMmVlMjMyNGFkZjQ4
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNTEzLDEy
ICs1MTMsMTMgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKIAogICAgIGlm
IChkaWRSZXNwZWN0SGVpZ2h0QW5kV2lkdGggIT0gbV9pbnB1dFR5cGUtPnNob3VsZFJlc3BlY3RI
ZWlnaHRBbmRXaWR0aEF0dHJpYnV0ZXMoKSkgewogICAgICAgICBBU1NFUlQoZWxlbWVudERhdGEo
KSk7CisgICAgICAgIC8vIEZJWE1FOiBXZSBkb24ndCBoYXZlIHRoZSBvbGQgYXR0cmlidXRlIHZh
bHVlcyBzbyB3ZSBwcmV0ZW5kIHRoYXQgd2UgZGlkbid0IGhhdmUgdGhlIG9sZCB2YWx1ZXMuCiAg
ICAgICAgIGlmIChjb25zdCBBdHRyaWJ1dGUqIGhlaWdodCA9IGZpbmRBdHRyaWJ1dGVCeU5hbWUo
aGVpZ2h0QXR0cikpCi0gICAgICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKGhlaWdodEF0dHIsIGhl
aWdodC0+dmFsdWUoKSk7CisgICAgICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKGhlaWdodEF0dHIs
IG51bGxBdG9tLCBoZWlnaHQtPnZhbHVlKCkpOwogICAgICAgICBpZiAoY29uc3QgQXR0cmlidXRl
KiB3aWR0aCA9IGZpbmRBdHRyaWJ1dGVCeU5hbWUod2lkdGhBdHRyKSkKLSAgICAgICAgICAgIGF0
dHJpYnV0ZUNoYW5nZWQod2lkdGhBdHRyLCB3aWR0aC0+dmFsdWUoKSk7CisgICAgICAgICAgICBh
dHRyaWJ1dGVDaGFuZ2VkKHdpZHRoQXR0ciwgbnVsbEF0b20sIHdpZHRoLT52YWx1ZSgpKTsKICAg
ICAgICAgaWYgKGNvbnN0IEF0dHJpYnV0ZSogYWxpZ24gPSBmaW5kQXR0cmlidXRlQnlOYW1lKGFs
aWduQXR0cikpCi0gICAgICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKGFsaWduQXR0ciwgYWxpZ24t
PnZhbHVlKCkpOworICAgICAgICAgICAgYXR0cmlidXRlQ2hhbmdlZChhbGlnbkF0dHIsIG51bGxB
dG9tLCBhbGlnbi0+dmFsdWUoKSk7CiAgICAgfQogCiAgICAgaWYgKHJlbmRlcmVyKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKaW5kZXggMjQwMTc5MjUxNThjM2M0YzQw
MTAxZTg2ZGMwMWRjZjEwYTFmNzJkMi4uNDJmZTI1ZDhhNDBlZDI0MWExMzBmZWNjMWJkOGI2NTky
ODZiMWU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcApAQCAtMTMy
LDE0ICsxMzIsMTQgQEAgYm9vbCBNYXRoTUxFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRl
cmVyKGNvbnN0IE5vZGUmIGNoaWxkKSBjb25zdAogICAgIHJldHVybiBjaGlsZC5pc1RleHROb2Rl
KCkgfHwgY2hpbGQuaXNNYXRoTUxFbGVtZW50KCk7CiB9CiAKLXZvaWQgTWF0aE1MRWxlbWVudDo6
YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHJpbmcmIG5ld1ZhbHVlLCBBdHRyaWJ1dGVNb2RpZmljYXRpb25SZWFzb24gcmVhc29uKQordm9p
ZCBNYXRoTUxFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3
VmFsdWUsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbiByZWFzb24pCiB7CiAgICAgaWYgKGlz
U2VtYW50aWNBbm5vdGF0aW9uKCkgJiYgKG5hbWUgPT0gTWF0aE1MTmFtZXM6OnNyY0F0dHIgfHwg
bmFtZSA9PSBNYXRoTUxOYW1lczo6ZW5jb2RpbmdBdHRyKSkgewogICAgICAgICBFbGVtZW50KiBw
YXJlbnQgPSBwYXJlbnRFbGVtZW50KCk7CiAgICAgICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5p
c01hdGhNTEVsZW1lbnQoKSAmJiBwYXJlbnQtPmhhc1RhZ05hbWUoc2VtYW50aWNzVGFnKSkKICAg
ICAgICAgICAgIHRvTWF0aE1MRWxlbWVudChwYXJlbnQpLT51cGRhdGVTZWxlY3RlZENoaWxkKCk7
CiAgICAgfQotICAgIFN0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQobmFtZSwgbmV3VmFs
dWUsIHJlYXNvbik7CisgICAgU3R5bGVkRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChuYW1lLCBv
bGRWYWx1ZSwgbmV3VmFsdWUsIHJlYXNvbik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MRWxlbWVudC5oCmluZGV4IDAyZjE0YTI2MzUzMmIzMTQ2ZTA4OTdjYTA3OWU2ZmJhYzA3YmEx
ODguLjlmOTg4YTlhOWQ2MTY3OGY3NmZkZTRmOTcyZTE5NGE0OTViMzhiYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaApAQCAtNTksNyArNTksNyBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3Vs
ZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1
ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJs
ZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IGEyMmQ1ODRiZDJiZDg3M2UxMzE5ZjIxZTc0NzU1
MjNjOTY0YmVmZTEuLmExMjdiZmQ4NTRlOTk1ZGFkOTZiNWVkNzkwNDE3MzFhMzY5MDA2MDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKQEAgLTY5
LDEyICs2OSwxMiBAQCB2b2lkIE1hdGhNTFNlbGVjdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChj
b25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1l
bnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogfQogCi12b2lkIE1hdGhNTFNlbGVjdEVsZW1l
bnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uIHJlYXNvbikK
K3ZvaWQgTWF0aE1MU2VsZWN0RWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNT
dHJpbmcmIG5ld1ZhbHVlLCBBdHRyaWJ1dGVNb2RpZmljYXRpb25SZWFzb24gcmVhc29uKQogewog
ICAgIGlmIChoYXNMb2NhbE5hbWUobWFjdGlvblRhZykgJiYgKG5hbWUgPT0gTWF0aE1MTmFtZXM6
OmFjdGlvbnR5cGVBdHRyIHx8IG5hbWUgPT0gTWF0aE1MTmFtZXM6OnNlbGVjdGlvbkF0dHIpKQog
ICAgICAgICB1cGRhdGVTZWxlY3RlZENoaWxkKCk7CiAKLSAgICBNYXRoTUxJbmxpbmVDb250YWlu
ZXJFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIG5ld1ZhbHVlLCByZWFzb24pOworICAg
IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQobmFtZSwgb2xk
VmFsdWUsIG5ld1ZhbHVlLCByZWFzb24pOwogfQogCiBpbnQgTWF0aE1MU2VsZWN0RWxlbWVudDo6
Z2V0U2VsZWN0ZWRBY3Rpb25DaGlsZEFuZEluZGV4KEVsZW1lbnQqJiBzZWxlY3RlZENoaWxkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50LmgKaW5kZXggMzBmM2Vj
YzYwYTQ4NDIzNjZkNmIyNTBlYTQzNzIyMDI1ZWY0NmMyNi4uOWMxYjJmZmRmYzZlMWFiNGIzYWYz
OTJkMmIzMGM3OTYzZDc0Njk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTFNlbGVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2Vs
ZWN0RWxlbWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNo
aWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmLCBBdHRyaWJ1dGVNb2RpZmljYXRpb25SZWFzb24gPSBNb2RpZmllZERpcmVjdGx5KSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uID0gTW9kaWZpZWREaXJlY3Rs
eSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVu
dHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDAwMGI4NmM1
Mzk4ZTIxOGQ0YTE0Y2VmOWYwNzA1OWFlZTc2NGM5YjMuLjIwMjljYjM0OWNmNDQ2Yjc5ZWZlYzkw
NjM3NzVmMTcyZTMwN2Y2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTcxNiw5
ICs3MTYsOSBAQCBib29sIFNWR0VsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29u
c3QgTm9kZSYgY2hpbGQpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNWR0Vs
ZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uKQordm9p
ZCBTVkdFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFs
dWUsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbikKIHsKLSAgICBTdHlsZWRFbGVtZW50Ojph
dHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIG5ld1ZhbHVlKTsKKyAgICBTdHlsZWRFbGVtZW50OjphdHRy
aWJ1dGVDaGFuZ2VkKG5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CiAKICAgICBpZiAoaXNJZEF0
dHJpYnV0ZU5hbWUobmFtZSkpCiAgICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9u
cygpLT5yZWJ1aWxkQWxsRWxlbWVudFJlZmVyZW5jZXNGb3JUYXJnZXQodGhpcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuaAppbmRleCAxMzQ3OGE4YzBhZTQ2N2Q1OTIzMDMyZGMyOTgwNGVhOGRiNjVh
ZDk3Li44YzlmMGY1NDA0NjQ4NTVkZTM4Yzg5MGNmODc4YWM5YWU1YzgzODQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmgKQEAgLTE0OCw3ICsxNDgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRy
ZW4oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgQXR0cmlidXRlTW9kaWZpY2F0aW9u
UmVhc29uID0gTW9kaWZpZWREaXJlY3RseSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGF0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYg
b2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUsIEF0dHJpYnV0ZU1vZGlmaWNh
dGlvblJlYXNvbiA9IE1vZGlmaWVkRGlyZWN0bHkpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9v
bCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIFNWR0VsZW1lbnRSYXJlRGF0YSYgZW5zdXJlU1ZHUmFyZURhdGEoKTsK
</data>
<flag name="review"
          id="249577"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>