<?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>136519</bug_id>
          
          <creation_ts>2014-09-03 18:21:41 -0700</creation_ts>
          <short_desc>WebProcess spins loading a very large textarea</short_desc>
          <delta_ts>2014-09-09 18:18:00 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Ding Zhao">ding_zhao</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aestes</cc>
    
    <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1033110</commentid>
    <comment_count>0</comment_count>
    <who name="Ding Zhao">ding_zhao</who>
    <bug_when>2014-09-03 18:21:41 -0700</bug_when>
    <thetext>WebProcess spins loading a very large &lt;textarea&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033239</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-09-04 11:01:46 -0700</bug_when>
    <thetext>Could you please provide an example URL for the issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033257</commentid>
    <comment_count>2</comment_count>
    <who name="Ding Zhao">ding_zhao</who>
    <bug_when>2014-09-04 11:41:41 -0700</bug_when>
    <thetext>rdar://problem/14680371</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033265</commentid>
    <comment_count>3</comment_count>
      <attachid>237636</attachid>
    <who name="Ding Zhao">ding_zhao</who>
    <bug_when>2014-09-04 11:56:19 -0700</bug_when>
    <thetext>Created attachment 237636
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034220</commentid>
    <comment_count>4</comment_count>
      <attachid>237636</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-09-09 18:18:00 -0700</bug_when>
    <thetext>Comment on attachment 237636
Patch

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

r- because the behavior of HTMLTextFormControlElement::setInnerTextValue is wrong.

&gt; Source/WebCore/dom/ContainerNode.h:123
&gt; +        Node* childPtr;

This should be of type CharacterData, not Node. Also, we don&apos;t use abbreviations like Ptr. And the name is too general since this only has a meaningful value in certain cases. I&apos;d call it insertedTextNode.

&gt; Source/WebCore/dom/ContainerNode.h:124
&gt; +        unsigned numberOfCharactersAppended;

Instead of a Node + unsigned, could we use a WTF::StringView here instead that references the range of characters that was appended? If you had that then there&apos;d be no need to know the child node.

&gt; Source/WebCore/html/HTMLTextAreaElement.cpp:148
&gt; +    else if (change.type == TextInserted) {
&gt; +        CharacterData* child = (CharacterData*)change.childPtr;
&gt; +        setNonDirtyValue(child-&gt;data(), true);
&gt; +    } else if (change.type == TextChanged &amp;&amp; change.numberOfCharactersAppended &gt; 0) {
&gt; +        CharacterData* child = (CharacterData*)change.childPtr;
&gt; +        String text = child-&gt;data();
&gt; +        String newText = text.substring(text.length() - change.numberOfCharactersAppended, change.numberOfCharactersAppended);
&gt; +        setNonDirtyValue(newText, true);
&gt; +    } else

I don&apos;t like that there are two different change types used for when text is inserted. Can CharacterData::parserAppendData() use TextInserted instead of TextChanged? I think it should be able to. I also don&apos;t like how numberOfCharactersAppended only has meaning for TextChanged. Why not always set it to a valid value? If you did these two things you&apos;d only need one condition here instead of two.

&gt; Source/WebCore/html/HTMLTextAreaElement.cpp:373
&gt; +void HTMLTextAreaElement::setNonDirtyValue(const String&amp; value, bool didAppendText)

I don&apos;t like that this is still called setNonDirtyValue but it sometimes appends to the non-dirty value rather than setting it. I would create a new function called appendToNonDirtyValue, and call it in the two places above that pass true to setNonDirtyValue.

&gt; Source/WebCore/html/HTMLTextAreaElement.cpp:380
&gt; +void HTMLTextAreaElement::setValueCommon(const String&amp; newValue, bool didAppendText)

I would rename this to updateValueCommon. I would also have it take an enum rather than a bool. The enum should have values like OverwriteExistingValue and AppendToExistingValue.

&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:524
&gt; +void HTMLTextFormControlElement::setInnerTextValue(const String&amp; value, bool didAppendText)

I don&apos;t like that this is still called setInnerTextValue but it sometimes appends to the inner text value rather than setting it. I also don&apos;t like that this function still does an expensive string comparison to see if text has changed even when we know we&apos;re appending text.

Let&apos;s call this updateInnerTextValue instead, and have it take the enum passed to setValueCommon instead of a bool. When appending, you&apos;ll want to append a new text node child to innerTextElement() followed by a new &lt;br&gt; element if the value ends with a line break.

&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:535
&gt; +        innerTextElement()-&gt;setInnerText(value, ASSERT_NO_EXCEPTION, didAppendText);

This isn&apos;t right. You&apos;re potentially appending text before the &lt;br&gt; node created by the previous call to setInnerTextValue(). Instead you should be creating a new text node after the &lt;br&gt;. If you did this I don&apos;t believe you&apos;d need any of the changes to HTMLElement::setInnerText or replaceChildrenWithText.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237636</attachid>
            <date>2014-09-04 11:56:19 -0700</date>
            <delta_ts>2014-09-09 18:18:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136519-20140904115614.patch</filename>
            <type>text/plain</type>
            <size>15846</size>
            <attacher name="Ding Zhao">ding_zhao</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczMDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjIzOTJmMzE5YWQwMjA3
MDViMTM0MThjZjkxMDdiM2M1ZTk3OTI0MS4uMzJjMDFmNTc5NWQwNjc1OWJlYTE2NWYyYjk0NTM0
YWQxOGRkMGQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE0LTA5LTAzICBEaW5n
IFpoYW8gIDxkaW5nX3poYW9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYlByb2Nlc3Mgc3BpbnMg
bG9hZGluZyBhIHZlcnkgbGFyZ2UgdGV4dGFyZWEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjUxOQorCisgICAgICAgIFdoZW4gbG9hZGluZyBhIGxh
cmdlIHRleHRhcmVhLCBXZWJQcm9jZXNzIHNwbGl0cyB0aGUgdGV4dCBpbnRvIG1hbnkgY2hpbGQg
dGV4dCBub2Rlcy4KKyAgICAgICAgV2hlbmV2ZXIgYSBjaGlsZCB0ZXh0IG5vZGUgaXMgY3JlYXRl
ZCwgV2ViUHJvY2VzcyB3aWxsIHBhcnNlIGFsbCBleGlzdGluZyBjaGlsZCB0ZXh0CisgICAgICAg
IG5vZGVzIGFuZCByZXBsYWNlIG1fdmFsdWUgb2YgSFRNTFRleHRBcmVhRWxlbWVudCB3aXRoIG5l
dyB2YWx1ZS4gSW5uZXJUZXh0IG9mIHRoZQorICAgICAgICBzaGFkb3cgRE9NIGZvciB0aGUgdGV4
dGFyZWEgZWxlbWVudCBpcyB1cGRhdGVkIHRoZSBzYW1lIHdheS4gSW5zdGVhZCBvZiByZXBsYWNp
bmcsIHdlCisgICAgICAgIGNhbiBoYXZlIG11Y2ggYmV0dGVyIHBlcmZvcm1hbmNlIGJ5IGFwcGVu
ZGluZyB0aGUgdGV4dCBmcm9tIGEgbmV3bHkgY3JlYXRlZCB0ZXh0IG5vZGUuCisKKyAgICAgICAg
QWZ0ZXIgdGhpcyBwYXRjaCwgaXQgdGFrZXMgNTAlIGxlc3MgdGltZSB3aGVuIGxvYWRpbmcgYSB0
ZXh0YXJlYSB3aXRoIDE2TSBjaGFyYWN0ZXJzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcmUgYWRkZWQgYmVjYXVzZSB0aGUg
cGF0Y2ggZG9lcyBub3QgY2hhbmdlIHRoZSBiZWhhdmlvci4KKworICAgICAgICAqIGRvbS9DaGFy
YWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OnBhcnNlckFw
cGVuZERhdGEpOiBDaGFuZ2VkIGR1ZSB0byB0aGUgY2hhbmdlIG9mIHN0cnVjdCBDaGlsZENoYW5n
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OmRpc3BhdGNoTW9kaWZpZWRFdmVu
dCk6IENoYW5nZWQgZHVlIHRvIHRoZSBjaGFuZ2Ugb2YgQ2hpbGRDaGFuZ2UuCisgICAgICAgICog
ZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6
bm90aWZ5Q2hpbGRJbnNlcnRlZCk6IENoYW5nZWQgZHVlIHRvIHRoZSBjaGFuZ2Ugb2YgQ2hpbGRD
aGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbik6
IENoYW5nZWQgZHVlIHRvIHRoZSBjaGFuZ2Ugb2YgQ2hpbGRDaGFuZ2UuCisgICAgICAgICogZG9t
L0NvbnRhaW5lck5vZGUuaDogQWRkZWQgbmV3IG1lbWJlcnMgaW50byBzdHJ1Y3QgQ2hpbGRDaGFu
Z2UuCisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVw
bGFjZUNoaWxkcmVuV2l0aFRleHQpOiBOb3cgaGFzIGFuIG9wdGlvbiB0byBhcHBlbmQgdGV4dC4K
KyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5oOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldElubmVyVGV4dCk6IE5vdyBo
YXMgYW4gb3B0aW9uIHRvIGFwcGVuZCB0ZXh0LgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgSWYg
dGV4dCBpbnNlcnRlZCBvciBhcHBlbmRlZCwgYXBwZW5kIHRleHQgaW50byBtX3ZhbHVlIGFuZCBp
bm5lcnRleHQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXROb25E
aXJ0eVZhbHVlKTogTm93IGhhcyBhbiBvcHRpb24gdG8gYXBwZW5kIHRleHQuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRWYWx1ZUNvbW1vbik6IE5vdyBoYXMgYW4g
b3B0aW9uIHRvIGFwcGVuZCB0ZXh0LgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldElubmVyVGV4dFZh
bHVlKTogTm93IGhhcyBhbiBvcHRpb24gdG8gYXBwZW5kIHRleHQuCisgICAgICAgICogaHRtbC9I
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oOgorCiAyMDE0LTA4LTI4ICBNaWhuZWEgT3ZpZGVu
aWUgIDxtaWhuZWFAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1NSZWdpb25zXSBJbmNvcnJlY3Qg
c2VsZWN0aW9uIGNsZWFyaW5nIG9uIGEgZG9jdW1lbnQgd2l0aG91dCByZWdpb25zCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKaW5kZXggMzFmMGQ1ZmE1MWU5ODdlNTY5MDg0YWZlYmVh
YzllZDgxZjUxMjUxZS4uNTI5MjY5NWM2YTVkMDgyMmZmMzcwZjdjMzAwNjQzMDg5OWFjN2FjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcApAQCAtOTksNyArOTksOSBAQCB1bnNp
Z25lZCBDaGFyYWN0ZXJEYXRhOjpwYXJzZXJBcHBlbmREYXRhKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCB1bnNpZ25lZCBvZmZzZXQsCiAgICAgICAgICAgICBDb250YWluZXJOb2RlOjpUZXh0Q2hhbmdl
ZCwKICAgICAgICAgICAgIEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyh0aGlzKSwK
ICAgICAgICAgICAgIEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKHRoaXMpLAotICAgICAg
ICAgICAgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2VTb3VyY2VQYXJzZXIKKyAgICAgICAgICAg
IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlU291cmNlUGFyc2VyLAorICAgICAgICAgICAgdGhp
cywKKyAgICAgICAgICAgIGNoYXJhY3Rlckxlbmd0aExpbWl0CiAgICAgICAgIH07CiAgICAgICAg
IHBhcmVudE5vZGUoKS0+Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CiAgICAgfQpAQCAtMjE5LDcg
KzIyMSw5IEBAIHZvaWQgQ2hhcmFjdGVyRGF0YTo6ZGlzcGF0Y2hNb2RpZmllZEV2ZW50KGNvbnN0
IFN0cmluZyYgb2xkRGF0YSkKICAgICAgICAgICAgICAgICBDb250YWluZXJOb2RlOjpUZXh0Q2hh
bmdlZCwKICAgICAgICAgICAgICAgICBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmco
dGhpcyksCiAgICAgICAgICAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcodGhp
cyksCi0gICAgICAgICAgICAgICAgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2VTb3VyY2VBUEkK
KyAgICAgICAgICAgICAgICBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZVNvdXJjZUFQSSwKKyAg
ICAgICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgICAgIDAKICAgICAgICAgICAgIH07CiAg
ICAgICAgICAgICBwYXJlbnROb2RlKCktPmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggMWIxMTQwMmJhZjIxNzJh
NWVmZTZhZmNhNGI3M2JlN2Q5NWQ0ZGM1Mi4uMTQxODQ0ZThhMDkyYzg4ZWU1ZWIwYjgyMWQ0NjFk
NTkwYjhhYmJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMzQwLDYg
KzM0MCw4IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6bm90aWZ5Q2hpbGRJbnNlcnRlZChOb2RlJiBj
aGlsZCwgQ2hpbGRDaGFuZ2VTb3VyY2Ugc291cmNlKQogICAgIGNoYW5nZS5wcmV2aW91c1NpYmxp
bmdFbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKCZjaGlsZCk7CiAg
ICAgY2hhbmdlLm5leHRTaWJsaW5nRWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJs
aW5nKCZjaGlsZCk7CiAgICAgY2hhbmdlLnNvdXJjZSA9IHNvdXJjZTsKKyAgICBjaGFuZ2UuY2hp
bGRQdHIgPSAmY2hpbGQ7CisgICAgY2hhbmdlLm51bWJlck9mQ2hhcmFjdGVyc0FwcGVuZGVkID0g
MDsKIAogICAgIGNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogfQpAQCAtNjYwLDcgKzY2Miw3IEBA
IHZvaWQgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4oKQogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKLSAgICAgICAgQ2hpbGRDaGFuZ2UgY2hhbmdlID0geyBBbGxDaGlsZHJlblJlbW92
ZWQsIG51bGxwdHIsIG51bGxwdHIsIENoaWxkQ2hhbmdlU291cmNlQVBJIH07CisgICAgICAgIENo
aWxkQ2hhbmdlIGNoYW5nZSA9IHsgQWxsQ2hpbGRyZW5SZW1vdmVkLCBudWxscHRyLCBudWxscHRy
LCBDaGlsZENoYW5nZVNvdXJjZUFQSSwgbnVsbHB0ciwgMCB9OwogICAgICAgICBjaGlsZHJlbkNo
YW5nZWQoY2hhbmdlKTsKICAgICAgICAgCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cmVtb3ZlZENoaWxkcmVuLnNpemUoKTsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgK
aW5kZXggNjM5ZWQyNDYwNDM4MGY0MjU1YjM4NGQwMjg2NDc3OWNlYjlhYWQ0Yi4uMTM4ZGMwN2Fm
MWI5MjNiOTdjODc1NDA0YzIwZTk2OWFjZTM5OTU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5oCkBAIC0xMjAsNiArMTIwLDggQEAgcHVibGljOgogICAgICAgICBFbGVtZW50KiBwcmV2
aW91c1NpYmxpbmdFbGVtZW50OwogICAgICAgICBFbGVtZW50KiBuZXh0U2libGluZ0VsZW1lbnQ7
CiAgICAgICAgIENoaWxkQ2hhbmdlU291cmNlIHNvdXJjZTsKKyAgICAgICAgTm9kZSogY2hpbGRQ
dHI7CisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQ2hhcmFjdGVyc0FwcGVuZGVkOwogICAgIH07
CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggZDdlNDJmOTM2YWZjZDBhZDFlZDIxY2Jh
NmRjZjUxNjExZjIxMGZmOS4uMTg2MDBmZmQzNDBjOWM2MDg5Y2VkNzAxNDM0ZjE0OTA2YTZiNGFj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMTAwMSwxMyArMTAwMSwxNiBAQCB2
b2lkIHJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudChDb250YWluZXJOb2RlJiBjb250YWluZXIs
IFBhc3NSZWZQdHI8RG9jdW1lbnRGcgogICAgIGNvbnRhaW5lck5vZGUtPmFwcGVuZENoaWxkKGZy
YWdtZW50LCBlYyk7CiB9CiAKLXZvaWQgcmVwbGFjZUNoaWxkcmVuV2l0aFRleHQoQ29udGFpbmVy
Tm9kZSYgY29udGFpbmVyLCBjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
dm9pZCByZXBsYWNlQ2hpbGRyZW5XaXRoVGV4dChDb250YWluZXJOb2RlJiBjb250YWluZXIsIGNv
bnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIGJvb2wgZGlkQXBwZW5kVGV4dElm
SGFzT25lVGV4dENoaWxkKQogewogICAgIFJlZjxDb250YWluZXJOb2RlPiBjb250YWluZXJOb2Rl
KGNvbnRhaW5lcik7CiAgICAgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSBtdXRhdGlvbihjb250YWlu
ZXJOb2RlLmdldCgpKTsKIAogICAgIGlmIChoYXNPbmVUZXh0Q2hpbGQoJmNvbnRhaW5lck5vZGUu
Z2V0KCkpKSB7Ci0gICAgICAgIHRvVGV4dChjb250YWluZXJOb2RlLT5maXJzdENoaWxkKCkpLT5z
ZXREYXRhKHRleHQsIGVjKTsKKyAgICAgICAgaWYgKGRpZEFwcGVuZFRleHRJZkhhc09uZVRleHRD
aGlsZCkKKyAgICAgICAgICAgIHRvVGV4dChjb250YWluZXJOb2RlLT5maXJzdENoaWxkKCkpLT5h
cHBlbmREYXRhKHRleHQsIGVjKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdG9UZXh0KGNv
bnRhaW5lck5vZGUtPmZpcnN0Q2hpbGQoKSktPnNldERhdGEodGV4dCwgZWMpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAppbmRleCA5ZTgxZjdkOWRiYWVl
YWQxMGRlNjJjZDExZTFkMWIzNWI5YzVhYTUyLi4xZjgxNzlmMzk3MmU4NjFmNTdhZjQzODJkZDdl
MmYwZjY0NWJhY2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKQEAgLTYwLDcgKzYwLDcgQEAg
Ym9vbCBpc1BsYWluVGV4dE1hcmt1cChOb2RlKik7CiAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2Vk
IGJ5IEhUTUxFbGVtZW50ICYgU2hhZG93Um9vdCB0byByZXBsYWNlIHRoZQogLy8gY2hpbGRyZW4g
d2l0aCByZXNwZWN0ZWQgZnJhZ21lbnQvdGV4dC4KIHZvaWQgcmVwbGFjZUNoaWxkcmVuV2l0aEZy
YWdtZW50KENvbnRhaW5lck5vZGUmLCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+LCBFeGNl
cHRpb25Db2RlJik7Ci12b2lkIHJlcGxhY2VDaGlsZHJlbldpdGhUZXh0KENvbnRhaW5lck5vZGUm
LCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Cit2b2lkIHJlcGxhY2VDaGlsZHJlbldp
dGhUZXh0KENvbnRhaW5lck5vZGUmLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJiwgYm9v
bCBkaWRBcHBlbmRUZXh0SWZIYXNPbmVUZXh0Q2hpbGQgPSBmYWxzZSk7CiAKIFN0cmluZyBjcmVh
dGVNYXJrdXAoY29uc3QgUmFuZ2UmLCBWZWN0b3I8Tm9kZSo+KiA9IDAsIEVBbm5vdGF0ZUZvcklu
dGVyY2hhbmdlID0gRG9Ob3RBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBib29sIGNvbnZlcnRCbG9j
a3NUb0lubGluZXMgPSBmYWxzZSwgRUFic29sdXRlVVJMcyA9IERvTm90UmVzb2x2ZVVSTHMpOwog
U3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBOb2RlJiwgRUNoaWxkcmVuT25seSA9IEluY2x1ZGVO
b2RlLCBWZWN0b3I8Tm9kZSo+KiA9IDAsIEVBYnNvbHV0ZVVSTHMgPSBEb05vdFJlc29sdmVVUkxz
LCBWZWN0b3I8UXVhbGlmaWVkTmFtZT4qIHRhZ05hbWVzVG9Ta2lwID0gMCwgRUZyYWdtZW50U2Vy
aWFsaXphdGlvbiA9IEhUTUxGcmFnbWVudFNlcmlhbGl6YXRpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmNwcAppbmRleCBmNWU1MmU5YjE3OTc1Mjk4ZjhlMDQ2N2E4Njg2OTViMDdiYWQy
YmYxLi42MGE0YTU0OTU0ZTliZGQwNTdlNWU0MDU5YmRkM2I5NTRhNjVlNTNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtNDY5LDcgKzQ2OSw3IEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBzaG91bGRQcm9oaWJpdFNldElubmVyT3V0ZXJUZXh0KGNvbnN0IEhUTUxFbGVtZW50JiBl
bGVtZW50KQogICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUodHJUYWcpOwogfQogCi12b2lk
IEhUTUxFbGVtZW50OjpzZXRJbm5lclRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25D
b2RlJiBlYykKK3ZvaWQgSFRNTEVsZW1lbnQ6OnNldElubmVyVGV4dChjb25zdCBTdHJpbmcmIHRl
eHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBib29sIGRpZEFwcGVuZFRleHQpCiB7CiAgICAgaWYgKGll
Rm9yYmlkc0luc2VydEhUTUwoKSkgewogICAgICAgICBlYyA9IE5PX01PRElGSUNBVElPTl9BTExP
V0VEX0VSUjsKQEAgLTQ4Nyw3ICs0ODcsNyBAQCB2b2lkIEhUTUxFbGVtZW50OjpzZXRJbm5lclRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgICAgIHJl
bW92ZUNoaWxkcmVuKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAg
cmVwbGFjZUNoaWxkcmVuV2l0aFRleHQoKnRoaXMsIHRleHQsIGVjKTsKKyAgICAgICAgcmVwbGFj
ZUNoaWxkcmVuV2l0aFRleHQoKnRoaXMsIHRleHQsIGVjLCBkaWRBcHBlbmRUZXh0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDk3LDE2ICs0OTcsMTcgQEAgdm9pZCBIVE1MRWxlbWVu
dDo6c2V0SW5uZXJUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgYXV0byByID0gcmVuZGVyZXIoKTsKICAgICBpZiAoKHIgJiYgci0+c3R5bGUoKS5wcmVzZXJ2
ZU5ld2xpbmUoKSkgfHwgKGluRG9jdW1lbnQoKSAmJiBpc1RleHRDb250cm9sSW5uZXJUZXh0RWxl
bWVudCgpKSkgewogICAgICAgICBpZiAoIXRleHQuY29udGFpbnMoJ1xyJykpIHsKLSAgICAgICAg
ICAgIHJlcGxhY2VDaGlsZHJlbldpdGhUZXh0KCp0aGlzLCB0ZXh0LCBlYyk7CisgICAgICAgICAg
ICByZXBsYWNlQ2hpbGRyZW5XaXRoVGV4dCgqdGhpcywgdGV4dCwgZWMsIGRpZEFwcGVuZFRleHQp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIFN0cmluZyB0ZXh0V2l0
aENvbnNpc3RlbnRMaW5lQnJlYWtzID0gdGV4dDsKICAgICAgICAgdGV4dFdpdGhDb25zaXN0ZW50
TGluZUJyZWFrcy5yZXBsYWNlKCJcclxuIiwgIlxuIik7CiAgICAgICAgIHRleHRXaXRoQ29uc2lz
dGVudExpbmVCcmVha3MucmVwbGFjZSgnXHInLCAnXG4nKTsKLSAgICAgICAgcmVwbGFjZUNoaWxk
cmVuV2l0aFRleHQoKnRoaXMsIHRleHRXaXRoQ29uc2lzdGVudExpbmVCcmVha3MsIGVjKTsKKyAg
ICAgICAgcmVwbGFjZUNoaWxkcmVuV2l0aFRleHQoKnRoaXMsIHRleHRXaXRoQ29uc2lzdGVudExp
bmVCcmVha3MsIGVjLCBkaWRBcHBlbmRUZXh0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIC8vIFRPRE86IGhvdyBkbyBkZWFsIHdpdGggdGhpcz8KICAgICAvLyBBZGQgdGV4dCBub2Rl
cyBhbmQgPGJyPiBlbGVtZW50cy4KICAgICBlYyA9IDA7CiAgICAgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGZyYWdtZW50ID0gdGV4dFRvRnJhZ21lbnQodGV4dCwgZWMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5oCmluZGV4IDY1YTZjMmUwYjZkNzE0NWI1OGUyOGU5ODJkNGI0OGE5ZTU5MWUx
MDEuLjk3ODc1ZGU0NDEyZjUyODhjYTllNDA2MmIwNGY2MWFlMjFmMGUwN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBv
dXRlckhUTUwoKSBjb25zdDsKICAgICB2b2lkIHNldElubmVySFRNTChjb25zdCBTdHJpbmcmLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRPdXRlckhUTUwoY29uc3QgU3RyaW5nJiwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2V0SW5uZXJUZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldElubmVyVGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRp
b25Db2RlJiwgYm9vbCBkaWRBcHBlbmRUZXh0ID0gZmFsc2UpOwogICAgIHZvaWQgc2V0T3V0ZXJU
ZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIEVsZW1lbnQqIGluc2Vy
dEFkamFjZW50RWxlbWVudChjb25zdCBTdHJpbmcmIHdoZXJlLCBFbGVtZW50KiBuZXdDaGlsZCwg
RXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5jcHAKaW5kZXggNzkyMGMyZWJjYzE2NjU4MDA1ZDdkMDE4YWJmZDMwNzc3ZWFmYWE3Mi4uNTY1
ZDllMjNmOTYyZTk0OTNiZDcxMWU2NTI0YmQ3ZmFjMzMyMGUyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0xMzQsOSArMTM0LDE4IEBAIHZvaWQg
SFRNTFRleHRBcmVhRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBj
aGFuZ2UpCiB7CiAgICAgSFRNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogICAg
IHNldExhc3RDaGFuZ2VXYXNOb3RVc2VyRWRpdCgpOworCiAgICAgaWYgKG1faXNEaXJ0eSkKICAg
ICAgICAgc2V0SW5uZXJUZXh0VmFsdWUodmFsdWUoKSk7Ci0gICAgZWxzZQorICAgIGVsc2UgaWYg
KGNoYW5nZS50eXBlID09IFRleHRJbnNlcnRlZCkgeworICAgICAgICBDaGFyYWN0ZXJEYXRhKiBj
aGlsZCA9IChDaGFyYWN0ZXJEYXRhKiljaGFuZ2UuY2hpbGRQdHI7CisgICAgICAgIHNldE5vbkRp
cnR5VmFsdWUoY2hpbGQtPmRhdGEoKSwgdHJ1ZSk7CisgICAgfSBlbHNlIGlmIChjaGFuZ2UudHlw
ZSA9PSBUZXh0Q2hhbmdlZCAmJiBjaGFuZ2UubnVtYmVyT2ZDaGFyYWN0ZXJzQXBwZW5kZWQgPiAw
KSB7CisgICAgICAgIENoYXJhY3RlckRhdGEqIGNoaWxkID0gKENoYXJhY3RlckRhdGEqKWNoYW5n
ZS5jaGlsZFB0cjsKKyAgICAgICAgU3RyaW5nIHRleHQgPSBjaGlsZC0+ZGF0YSgpOworICAgICAg
ICBTdHJpbmcgbmV3VGV4dCA9IHRleHQuc3Vic3RyaW5nKHRleHQubGVuZ3RoKCkgLSBjaGFuZ2Uu
bnVtYmVyT2ZDaGFyYWN0ZXJzQXBwZW5kZWQsIGNoYW5nZS5udW1iZXJPZkNoYXJhY3RlcnNBcHBl
bmRlZCk7CisgICAgICAgIHNldE5vbkRpcnR5VmFsdWUobmV3VGV4dCwgdHJ1ZSk7CisgICAgfSBl
bHNlCiAgICAgICAgIHNldE5vbkRpcnR5VmFsdWUoZGVmYXVsdFZhbHVlKCkpOwogfQogCkBAIC0z
NjEsMTQgKzM3MCwxNCBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlKGNvbnN0
IFN0cmluZyYgdmFsdWUpCiAgICAgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7CiB9CiAKLXZvaWQg
SFRNTFRleHRBcmVhRWxlbWVudDo6c2V0Tm9uRGlydHlWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVl
KQordm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXROb25EaXJ0eVZhbHVlKGNvbnN0IFN0cmlu
ZyYgdmFsdWUsIGJvb2wgZGlkQXBwZW5kVGV4dCkKIHsKLSAgICBzZXRWYWx1ZUNvbW1vbih2YWx1
ZSk7CisgICAgc2V0VmFsdWVDb21tb24odmFsdWUsIGRpZEFwcGVuZFRleHQpOwogICAgIG1faXNE
aXJ0eSA9IGZhbHNlOwogICAgIHNldE5lZWRzVmFsaWRpdHlDaGVjaygpOwogfQogCi12b2lkIEhU
TUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlQ29tbW9uKGNvbnN0IFN0cmluZyYgbmV3VmFsdWUp
Cit2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlQ29tbW9uKGNvbnN0IFN0cmluZyYg
bmV3VmFsdWUsIGJvb2wgZGlkQXBwZW5kVGV4dCkKIHsKICAgICBtX3dhc01vZGlmaWVkQnlVc2Vy
ID0gZmFsc2U7CiAgICAgLy8gQ29kZSBlbHNld2hlcmUgbm9ybWFsaXplcyBsaW5lIGVuZGluZ3Mg
YWRkZWQgYnkgdGhlIHVzZXIgdmlhIHRoZSBrZXlib2FyZCBvciBwYXN0aW5nLgpAQCAtMzc3LDEz
ICszODYsMTcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRWYWx1ZUNvbW1vbihjb25z
dCBTdHJpbmcmIG5ld1ZhbHVlKQogICAgIG5vcm1hbGl6ZWRWYWx1ZS5yZXBsYWNlKCJcclxuIiwg
IlxuIik7CiAgICAgbm9ybWFsaXplZFZhbHVlLnJlcGxhY2UoJ1xyJywgJ1xuJyk7CiAKLSAgICAv
LyBSZXR1cm4gZWFybHkgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIG1vdmUgdGhlIGNhcmV0IG9y
IHRyaWdnZXIgb3RoZXIgc2lkZSBlZmZlY3RzCi0gICAgLy8gd2hlbiB0aGUgdmFsdWUgaXNuJ3Qg
Y2hhbmdpbmcuIFRoaXMgbWF0Y2hlcyBGaXJlZm94IGJlaGF2aW9yLCBhdCBsZWFzdC4KLSAgICBp
ZiAobm9ybWFsaXplZFZhbHVlID09IHZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAo
ZGlkQXBwZW5kVGV4dCkKKyAgICAgICAgbV92YWx1ZS5hcHBlbmQobm9ybWFsaXplZFZhbHVlKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgLy8gUmV0dXJuIGVhcmx5IGJlY2F1c2Ugd2UgZG9uJ3Qgd2Fu
dCB0byBtb3ZlIHRoZSBjYXJldCBvciB0cmlnZ2VyIG90aGVyIHNpZGUgZWZmZWN0cworICAgICAg
ICAvLyB3aGVuIHRoZSB2YWx1ZSBpc24ndCBjaGFuZ2luZy4gVGhpcyBtYXRjaGVzIEZpcmVmb3gg
YmVoYXZpb3IsIGF0IGxlYXN0LgorICAgICAgICBpZiAobm9ybWFsaXplZFZhbHVlID09IHZhbHVl
KCkpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICBtX3ZhbHVlID0gbm9ybWFsaXplZFZhbHVl
OwotICAgIHNldElubmVyVGV4dFZhbHVlKG1fdmFsdWUpOworICAgICAgICBtX3ZhbHVlID0gbm9y
bWFsaXplZFZhbHVlOworICAgIH0KKyAgICBzZXRJbm5lclRleHRWYWx1ZShub3JtYWxpemVkVmFs
dWUsIGRpZEFwcGVuZFRleHQpOwogICAgIHNldExhc3RDaGFuZ2VXYXNOb3RVc2VyRWRpdCgpOwog
ICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSgpOwogICAgIHNldE5lZWRzU3R5bGVSZWNh
bGMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKaW5kZXggMTU5
ODkxMGFiNTFjMzBkYTU3ZDRhZGM2MzA3N2E4YzdlMTAwNTcyMy4uYzE1MTc3Mjk3MDQ5MTJlMzkx
M2M1N2YyMjhjOTY3OTVmZWY3ZTU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEFyZWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmgKQEAgLTcyLDggKzcyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZUJl
Zm9yZVRleHRJbnNlcnRlZEV2ZW50KEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KikgY29uc3Q7CiAg
ICAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZVVzZXJJbnB1dFZhbHVlKGNvbnN0IFN0cmluZyYsIHVu
c2lnbmVkIG1heExlbmd0aCk7CiAgICAgdm9pZCB1cGRhdGVWYWx1ZSgpIGNvbnN0OwotICAgIHZv
aWQgc2V0Tm9uRGlydHlWYWx1ZShjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHNldFZhbHVlQ29t
bW9uKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0Tm9uRGlydHlWYWx1ZShjb25zdCBTdHJp
bmcmLCBib29sIGRpZEFwcGVuZFRleHQgPSBmYWxzZSk7CisgICAgdm9pZCBzZXRWYWx1ZUNvbW1v
bihjb25zdCBTdHJpbmcmLCBib29sIGRpZEFwcGVuZFRleHQgPSBmYWxzZSk7CiAKICAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNQbGFjZWhvbGRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KICAgICB2aXJ0dWFsIEhUTUxFbGVtZW50KiBwbGFjZWhvbGRlckVsZW1lbnQoKSBjb25z
dCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudC5jcHAKaW5kZXggN2Q5MTkxYjk5Y2Q1OGVmNjlmOTFhZTQwYWJjZjUzNWU3MjE0
YzBhNi4uY2FhYjIyMzdiMTQxZTgyOWUzMmM1NWYzOWNlMGYwYzQwYThlYjlhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAg
LTUyMSw3ICs1MjEsNyBAQCBib29sIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpsYXN0Q2hh
bmdlV2FzVXNlckVkaXQoKSBjb25zdAogICAgIHJldHVybiBtX2xhc3RDaGFuZ2VXYXNVc2VyRWRp
dDsKIH0KIAotdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0SW5uZXJUZXh0VmFs
dWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OnNldElubmVyVGV4dFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgZGlkQXBwZW5kVGV4
dCkKIHsKICAgICBpZiAoIWlzVGV4dEZvcm1Db250cm9sKCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTUzMiw3ICs1MzIsNyBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRJbm5l
clRleHRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICAgICAgaWYgKEFYT2JqZWN0
Q2FjaGUqIGNhY2hlID0gZG9jdW1lbnQoKS5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKICAgICAg
ICAgICAgICAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbih0aGlzLCBBWE9iamVjdENhY2hlOjpB
WFZhbHVlQ2hhbmdlZCwgVGFyZ2V0T2JzZXJ2YWJsZVBhcmVudCk7CiAgICAgICAgIH0KLSAgICAg
ICAgaW5uZXJUZXh0RWxlbWVudCgpLT5zZXRJbm5lclRleHQodmFsdWUsIEFTU0VSVF9OT19FWENF
UFRJT04pOworICAgICAgICBpbm5lclRleHRFbGVtZW50KCktPnNldElubmVyVGV4dCh2YWx1ZSwg
QVNTRVJUX05PX0VYQ0VQVElPTiwgZGlkQXBwZW5kVGV4dCk7CiAKICAgICAgICAgaWYgKHZhbHVl
LmVuZHNXaXRoKCdcbicpIHx8IHZhbHVlLmVuZHNXaXRoKCdccicpKQogICAgICAgICAgICAgaW5u
ZXJUZXh0RWxlbWVudCgpLT5hcHBlbmRDaGlsZChIVE1MQlJFbGVtZW50OjpjcmVhdGUoZG9jdW1l
bnQoKSksIEFTU0VSVF9OT19FWENFUFRJT04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IDk3MGY3YWIxYzNhMTgxNDVmZmFiMjk4
NWMwNjExYThhY2Q1M2I5YjcuLmE1NzQwZWU3OWY1MzA5OTk5NTJkOTIyM2ExYzA0YTZjOWM3M2Jk
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmgKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZWxlY3Rpb25DaGFu
Z2VkKGJvb2wgc2hvdWxkRmlyZVNlbGVjdEV2ZW50KTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGxhc3RDaGFuZ2VXYXNVc2VyRWRpdCgpIGNvbnN0OwotICAgIHZvaWQgc2V0SW5uZXJUZXh0VmFs
dWUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRJbm5lclRleHRWYWx1ZShjb25zdCBTdHJp
bmcmLCBib29sIGRpZEFwcGVuZFRleHQgPSBmYWxzZSk7CiAgICAgU3RyaW5nIGlubmVyVGV4dFZh
bHVlKCkgY29uc3Q7CiAKICAgICBTdHJpbmcgZGlyZWN0aW9uRm9yRm9ybURhdGEoKSBjb25zdDsK
</data>
<flag name="review"
          id="262368"
          type_id="1"
          status="-"
          setter="aestes"
    />
          </attachment>
      

    </bug>

</bugzilla>