<?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>122640</bug_id>
          
          <creation_ts>2013-10-10 23:30:32 -0700</creation_ts>
          <short_desc>Do a bit of optimization and cleanup in the HTMLElement class</short_desc>
          <delta_ts>2013-10-11 08:05:38 -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>All</rep_platform>
          <op_sys>All</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>philn</cc>
    
    <cc>rniwa</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>938711</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-10 23:30:32 -0700</bug_when>
    <thetext>Do a bit of optimization and cleanup in the HTMLElement class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938716</commentid>
    <comment_count>1</comment_count>
      <attachid>213970</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-10 23:36:57 -0700</bug_when>
    <thetext>Created attachment 213970
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938722</commentid>
    <comment_count>2</comment_count>
      <attachid>213970</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-10-10 23:46:27 -0700</bug_when>
    <thetext>Comment on attachment 213970
Patch

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

r=me

&gt; Source/WebCore/html/HTMLElement.cpp:375
&gt; +    RefPtr&lt;Text&gt; textNode = &amp;node;
&gt;      RefPtr&lt;Text&gt; textNext = toText(next);

These two could be Ref&lt;Text&gt; to skip some null checks.

&gt; Source/WebCore/html/HTMLElement.cpp:740
&gt; -    if (equalIgnoringCase(value, &quot;yes&quot;) || equalIgnoringCase(value, &quot;&quot;))
&gt; +    if (equalIgnoringCase(value, &quot;yes&quot;) || value.isEmpty())

Looks like we need isEmptyIgnoringCase(). ;)

&gt; Source/WebCore/html/HTMLElement.cpp:752
&gt; +    for (const Element* element = this; element; element = element-&gt;parentElement()) {
&gt; +        if (!element-&gt;isHTMLElement())
&gt; +            continue;

This would look slightly nicer as a loop over ancestorsOfType&lt;HTMLElement&gt;(this).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938723</commentid>
    <comment_count>3</comment_count>
      <attachid>213970</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-10 23:46:56 -0700</bug_when>
    <thetext>Comment on attachment 213970
Patch

Attachment 213970 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/3953027</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938724</commentid>
    <comment_count>4</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-10-10 23:48:18 -0700</bug_when>
    <thetext>Dang, I didn&apos;t spot the bogus &quot;string-&gt;parsedLength()&quot; calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938725</commentid>
    <comment_count>5</comment_count>
      <attachid>213970</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-10 23:50:22 -0700</bug_when>
    <thetext>Comment on attachment 213970
Patch

Attachment 213970 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/3953029</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938730</commentid>
    <comment_count>6</comment_count>
      <attachid>213970</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-11 00:03:44 -0700</bug_when>
    <thetext>Comment on attachment 213970
Patch

Attachment 213970 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/3403112</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938733</commentid>
    <comment_count>7</comment_count>
      <attachid>213970</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-11 00:14:22 -0700</bug_when>
    <thetext>Comment on attachment 213970
Patch

Attachment 213970 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/3889011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938734</commentid>
    <comment_count>8</comment_count>
      <attachid>213970</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-11 00:22:08 -0700</bug_when>
    <thetext>Comment on attachment 213970
Patch

Attachment 213970 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/3867103</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938737</commentid>
    <comment_count>9</comment_count>
      <attachid>213970</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-10-11 00:34:05 -0700</bug_when>
    <thetext>Comment on attachment 213970
Patch

Attachment 213970 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/3952018</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938795</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-11 08:05:38 -0700</bug_when>
    <thetext>Committed r157300: &lt;http://trac.webkit.org/changeset/157300&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213970</attachid>
            <date>2013-10-10 23:36:57 -0700</date>
            <delta_ts>2013-10-11 00:34:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122640-20131010233656.patch</filename>
            <type>text/plain</type>
            <size>22471</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI3YjUwMDkxNjVlMDFh
Nzc4MTkzMTE5NzQyMGQ5MmMxNjM3ODNlNy4uN2VhY2UwNDY5ZjQzMzRlMDA5ZDY3YmMzYmYzZmNj
NDA3NjBlNWNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTEwLTEwICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBEbyBhIGJpdCBvZiBvcHRpbWl6
YXRpb24gYW5kIGNsZWFudXAgaW4gdGhlIEhUTUxFbGVtZW50IGNsYXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI2NDAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6dW5pY29kZUJpZGlBdHRyaWJ1dGVGb3JEaXJBdXRvKTogVGFr
ZSBhIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5
bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUpOiBQYXNzIG9uZS4KKyAgICAgICAgKFdlYkNvcmU6
Om1lcmdlV2l0aE5leHRUZXh0Tm9kZSk6IFRha2UgYSByZWZlcmVuY2UgdG8gYSBUZXh0IG5vZGUg
aW5zdGVhZAorICAgICAgICBvZiBhIFBhc3NSZWZQdHIgdG8gYSBOb2RlLiBBbHNvIHJlbW92ZWQg
dW5uZWNlc3NhcnkgY2hlY2sgb2YgcGFyZW50Tm9kZS4KKyAgICAgICAgQWxzbyB1cGRhdGUgdG8g
bmV3IGNhbGxpbmcgY29udmVudGlvbiBmb3IgbWVyZ2VXaXRoTmV4dFRleHROb2RlLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldE91dGVySFRNTCk6IFVzZSBwYXJlbnRFbGVtZW50
IGluc3RlYWQgb2YKKyAgICAgICAgcGFyZW50Tm9kZSwgc2luY2UgQW50dGkgc2F5cyB0aGF0J3Mg
dGhlIGZ1dHVyZSwgYW5kIGVpdGhlciB3aWxsIHdvcmsgaGVyZS4KKyAgICAgICAgQWxzbyB1c2Ug
bnVsbHB0ci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojp0ZXh0VG9GcmFnbWVudCk6
IEZpeCBpbmRlbnRhdGlvbiBhbmQgdXNlIG51bGxwdHIuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
RWxlbWVudDo6c2V0T3V0ZXJUZXh0KTogVXNlIGEgUmVmUHRyIGZvciB0aGUgcGFyZW50IGhlcmUs
CisgICAgICAgIHNpbmNlIG90aGVyd2lzZSB0aGVyZSBpcyBubyBndWFyYW50ZWUgaXQgc3Vydml2
ZXMuIEFsc28gdXNlIG51bGxwdHIgYW5kCisgICAgICAgIHVwZGF0ZSB0byBuZXcgY2FsbGluZyBj
b252ZW50aW9uIGZvciBtZXJnZVdpdGhOZXh0VGV4dE5vZGUuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnQpOiBVc2UgbnVsbHB0ci4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxFbGVtZW50OjppbnNlcnRBZGphY2VudEVsZW1lbnQpOiBVc2UgbnVsbHB0ci4KKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnRleHRFbGVtZW50Rm9ySW5zZXJ0aW9uKTogVXNlIG51bGxwdHIu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6Y29udGVudEVkaXRhYmxlKTogVXNlIEFT
Q0lJTGl0ZXJhbC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRDb250ZW50RWRp
dGFibGUpOiBVc2UgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbC4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxFbGVtZW50OjpkcmFnZ2FibGUpOiBVc2UgZmFzdEdldEF0dHJpYnV0ZS4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXREcmFnZ2FibGUpOiBVc2UgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVt
ZW50OjpzZXRTcGVsbGNoZWNrKTogVXNlIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6Y2xpY2spOiBVc2UgbnVsbHB0ci4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjphY2Nlc3NLZXlBY3Rpb24pOiBVc2UgbnVs
bHB0ci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojp0aXRsZSk6IFVzZSBmYXN0R2V0
QXR0cmlidXRlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnRyYW5zbGF0ZUF0dHJp
YnV0ZU1vZGUpOiBVc2UgZmFzdEdldEF0dHJpYnV0ZSwgaXNOdWxsLAorICAgICAgICBhbmQgaXNF
bXB0eS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojp0cmFuc2xhdGUpOiBVc2UgcGFy
ZW50RWxlbWVudCBhbmQgdG9IVE1MRWxlbWVudC4KKyAgICAgICAgVXNlIGVhcmx5LWNvbnRpbnVl
IHN0eWxlIGluc3RlYWQgb2YgbmVzdGluZyB0aGUgd2hvbGUgbG9vcCBib2R5IGluc2lkZSBhbiBp
Zi4KKyAgICAgICAgKFdlYkNvcmU6OnNldEhhc0RpckF1dG9GbGFnUmVjdXJzaXZlbHkpOiBVc2Ug
bnVsbHB0ci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpoYXNEaXJlY3Rpb25BdXRv
KTogVXNlIGlzTnVsbC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpkaXJlY3Rpb25h
bGl0eSk6IFVzZSBudWxscHRyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmFkanVz
dERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkcmVuQ2hhbmdlZCk6IFVzZSBudWxscHRy
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmFkZEhUTUxMZW5ndGhUb1N0eWxlKTog
VXNlIGxvbmdlciB2YXJpYWJsZSBuYW1lcy4KKworICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmFi
YnIpOiBVc2UgZmFzdEdldEF0dHJpYnV0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUNl
bGxFbGVtZW50OjpheGlzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDZWxs
RWxlbWVudDo6aGVhZGVycyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlQ2Vs
bEVsZW1lbnQ6OnNjb3BlKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MVGFibGVDb2xFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUNvbEVsZW1lbnQ6OndpZHRoKTog
RGl0dG8uCisKIDIwMTMtMTAtMTAgIFNhbnRvc2ggTWFodG8gIDxzYW50b3NoLm1hQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIGNvbnRlbnRFZGl0YWJsZSB3aXRoICJwb3NpdGlvbjpyZWxhdGl2ZSIg
cGFyYWdyYXBocyBpcyBidWdneQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCAx
MGIzODZkMWFmOTc5ZDRmZGQ0YTcyN2ZkODI3ZDZhMzQ2NWUxZTNjLi43NTI5ZDFiNzViOGNlOWRh
MDNiZGJlMGZhZWQ4YzMyMDY2MTMxMDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cApAQCAtMTI0LDkgKzEyNCw5IEBAIGJvb2wgSFRNTEVsZW1lbnQ6OmllRm9yYmlkc0luc2VydEhU
TUwoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGlubGluZSBDU1NWYWx1
ZUlEIHVuaWNvZGVCaWRpQXR0cmlidXRlRm9yRGlyQXV0byhIVE1MRWxlbWVudCogZWxlbWVudCkK
K3N0YXRpYyBpbmxpbmUgQ1NTVmFsdWVJRCB1bmljb2RlQmlkaUF0dHJpYnV0ZUZvckRpckF1dG8o
SFRNTEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgaWYgKGVsZW1lbnQtPmhhc0xvY2FsTmFtZShw
cmVUYWcpIHx8IGVsZW1lbnQtPmhhc0xvY2FsTmFtZSh0ZXh0YXJlYVRhZykpCisgICAgaWYgKGVs
ZW1lbnQuaGFzTG9jYWxOYW1lKHByZVRhZykgfHwgZWxlbWVudC5oYXNMb2NhbE5hbWUodGV4dGFy
ZWFUYWcpKQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVXZWJraXRQbGFpbnRleHQ7CiAgICAgLy8g
RklYTUU6IEZvciBiZG8gZWxlbWVudCwgZGlyPSJhdXRvIiBzaG91bGQgcmVzdWx0IGluICJiaWRp
LW92ZXJyaWRlIGlzb2xhdGUiIGJ1dCB3ZSBkb24ndCBzdXBwb3J0IGhhdmluZyBtdWx0aXBsZSB2
YWx1ZXMgaW4gdW5pY29kZS1iaWRpIHlldC4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTY0LgpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgSFRN
TEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lCiAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0
cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcsIENTU1ZhbHVlTm9u
ZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGRpckF0dHIpIHsKICAgICAgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKHZhbHVlLCAiYXV0byIpKQotICAgICAgICAgICAgYWRkUHJvcGVydHlUb1By
ZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCB1
bmljb2RlQmlkaUF0dHJpYnV0ZUZvckRpckF1dG8odGhpcykpOworICAgICAgICAgICAgYWRkUHJv
cGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVVuaWNv
ZGVCaWRpLCB1bmljb2RlQmlkaUF0dHJpYnV0ZUZvckRpckF1dG8oKnRoaXMpKTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5
bGUoc3R5bGUsIENTU1Byb3BlcnR5RGlyZWN0aW9uLCB2YWx1ZSk7CiAgICAgICAgICAgICBpZiAo
IWhhc1RhZ05hbWUoYmRpVGFnKSAmJiAhaGFzVGFnTmFtZShiZG9UYWcpICYmICFoYXNUYWdOYW1l
KG91dHB1dFRhZykpCkBAIC0zNjUsMjUgKzM2NSwyMyBAQCB2b2lkIEhUTUxFbGVtZW50OjpzZXRJ
bm5lckhUTUwoY29uc3QgU3RyaW5nJiBodG1sLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB9CiB9
CiAKLXN0YXRpYyB2b2lkIG1lcmdlV2l0aE5leHRUZXh0Tm9kZShQYXNzUmVmUHRyPE5vZGU+IG5v
ZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorc3RhdGljIHZvaWQgbWVyZ2VXaXRoTmV4dFRleHROb2Rl
KFRleHQmIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIEFTU0VSVChub2RlICYmIG5v
ZGUtPmlzVGV4dE5vZGUoKSk7Ci0gICAgTm9kZSogbmV4dCA9IG5vZGUtPm5leHRTaWJsaW5nKCk7
CisgICAgTm9kZSogbmV4dCA9IG5vZGUubmV4dFNpYmxpbmcoKTsKICAgICBpZiAoIW5leHQgfHwg
IW5leHQtPmlzVGV4dE5vZGUoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIFJlZlB0cjxU
ZXh0PiB0ZXh0Tm9kZSA9IHRvVGV4dChub2RlLmdldCgpKTsKKworICAgIFJlZlB0cjxUZXh0PiB0
ZXh0Tm9kZSA9ICZub2RlOwogICAgIFJlZlB0cjxUZXh0PiB0ZXh0TmV4dCA9IHRvVGV4dChuZXh0
KTsKICAgICB0ZXh0Tm9kZS0+YXBwZW5kRGF0YSh0ZXh0TmV4dC0+ZGF0YSgpLCBlYyk7CiAgICAg
aWYgKGVjKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKHRleHROZXh0LT5wYXJlbnROb2RlKCkp
IC8vIE1pZ2h0IGhhdmUgYmVlbiByZW1vdmVkIGJ5IG11dGF0aW9uIGV2ZW50LgotICAgICAgICB0
ZXh0TmV4dC0+cmVtb3ZlKGVjKTsKKyAgICB0ZXh0TmV4dC0+cmVtb3ZlKGVjKTsKIH0KIAogdm9p
ZCBIVE1MRWxlbWVudDo6c2V0T3V0ZXJIVE1MKGNvbnN0IFN0cmluZyYgaHRtbCwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7Ci0gICAgTm9kZSogcCA9IHBhcmVudE5vZGUoKTsKKyAgICBFbGVtZW50KiBw
ID0gcGFyZW50RWxlbWVudCgpOwogICAgIGlmICghcCB8fCAhcC0+aXNIVE1MRWxlbWVudCgpKSB7
CiAgICAgICAgIGVjID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOwogICAgICAgICByZXR1
cm47CkBAIC0zOTcsMTIgKzM5NSwxMSBAQCB2b2lkIEhUTUxFbGVtZW50OjpzZXRPdXRlckhUTUwo
Y29uc3QgU3RyaW5nJiBodG1sLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuOwog
ICAgICAgCiAgICAgcGFyZW50LT5yZXBsYWNlQ2hpbGQoZnJhZ21lbnQucmVsZWFzZSgpLCB0aGlz
LCBlYyk7Ci0gICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBuZXh0ID8gbmV4dC0+cHJldmlvdXNTaWJs
aW5nKCkgOiAwOworICAgIFJlZlB0cjxOb2RlPiBub2RlID0gbmV4dCA/IG5leHQtPnByZXZpb3Vz
U2libGluZygpIDogbnVsbHB0cjsKICAgICBpZiAoIWVjICYmIG5vZGUgJiYgbm9kZS0+aXNUZXh0
Tm9kZSgpKQotICAgICAgICBtZXJnZVdpdGhOZXh0VGV4dE5vZGUobm9kZS5yZWxlYXNlKCksIGVj
KTsKLQorICAgICAgICBtZXJnZVdpdGhOZXh0VGV4dE5vZGUodG9UZXh0KCpub2RlKSwgZWMpOwog
ICAgIGlmICghZWMgJiYgcHJldiAmJiBwcmV2LT5pc1RleHROb2RlKCkpCi0gICAgICAgIG1lcmdl
V2l0aE5leHRUZXh0Tm9kZShwcmV2LnJlbGVhc2UoKSwgZWMpOworICAgICAgICBtZXJnZVdpdGhO
ZXh0VGV4dE5vZGUodG9UZXh0KCpwcmV2KSwgZWMpOwogfQogCiBQYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IEhUTUxFbGVtZW50Ojp0ZXh0VG9GcmFnbWVudChjb25zdCBTdHJpbmcmIHRleHQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNDE0LDE5ICs0MTEsMTkgQEAgUGFzc1JlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBIVE1MRWxlbWVudDo6dGV4dFRvRnJhZ21lbnQoY29uc3QgU3RyaW5nJiB0
ZXh0LCBFeGMKIAogICAgICAgICAvLyBGaW5kIG5leHQgbGluZSBicmVhay4KICAgICAgICAgZm9y
IChpID0gc3RhcnQ7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICAgIGMgPSB0ZXh0W2ldOwot
ICAgICAgICAgIGlmIChjID09ICdccicgfHwgYyA9PSAnXG4nKQotICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGMgPSB0ZXh0W2ldOworICAgICAgICAgICAgaWYgKGMgPT0gJ1xyJyB8
fCBjID09ICdcbicpCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAg
ICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIHRleHQuc3Vi
c3RyaW5nKHN0YXJ0LCBpIC0gc3RhcnQpKSwgZWMpOwogICAgICAgICBpZiAoZWMpCi0gICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGlm
IChjID09ICdccicgfHwgYyA9PSAnXG4nKSB7CiAgICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5k
Q2hpbGQoSFRNTEJSRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpLCBlYyk7CiAgICAgICAgICAg
ICBpZiAoZWMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgXHJcbiBkb2Vzbid0IHJlc3Vs
dCBpbiB0d28gbGluZSBicmVha3MuCiAgICAgICAgICAgICBpZiAoYyA9PSAnXHInICYmIGkgKyAx
IDwgbGVuZ3RoICYmIHRleHRbaSArIDFdID09ICdcbicpCiAgICAgICAgICAgICAgICAgaSsrOwpA
QCAtNDg2LDcgKzQ4Myw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnNldElubmVyVGV4dChjb25zdCBT
dHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXBsYWNlQ2hpbGRyZW5X
aXRoRnJhZ21lbnQoKnRoaXMsIGZyYWdtZW50LnJlbGVhc2UoKSwgZWMpOwogfQogCi12b2lkIEhU
TUxFbGVtZW50OjpzZXRPdXRlclRleHQoY29uc3QgU3RyaW5nICZ0ZXh0LCBFeGNlcHRpb25Db2Rl
JiBlYykKK3ZvaWQgSFRNTEVsZW1lbnQ6OnNldE91dGVyVGV4dChjb25zdCBTdHJpbmcmIHRleHQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChpZUZvcmJpZHNJbnNlcnRIVE1MKCkpIHsK
ICAgICAgICAgZWMgPSBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7CkBAIC01MDAsNyArNDk3
LDcgQEAgdm9pZCBIVE1MRWxlbWVudDo6c2V0T3V0ZXJUZXh0KGNvbnN0IFN0cmluZyAmdGV4dCwg
RXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBDb250YWlu
ZXJOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlKCk7CisgICAgUmVmUHRyPENvbnRhaW5lck5vZGU+
IHBhcmVudCA9IHBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkgewogICAgICAgICBlYyA9
IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjsKICAgICAgICAgcmV0dXJuOwpAQCAtNTIzLDEy
ICs1MjAsMTEgQEAgdm9pZCBIVE1MRWxlbWVudDo6c2V0T3V0ZXJUZXh0KGNvbnN0IFN0cmluZyAm
dGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJldHVybjsKICAgICBwYXJlbnQtPnJl
cGxhY2VDaGlsZChuZXdDaGlsZC5yZWxlYXNlKCksIHRoaXMsIGVjKTsKIAotICAgIFJlZlB0cjxO
b2RlPiBub2RlID0gbmV4dCA/IG5leHQtPnByZXZpb3VzU2libGluZygpIDogMDsKKyAgICBSZWZQ
dHI8Tm9kZT4gbm9kZSA9IG5leHQgPyBuZXh0LT5wcmV2aW91c1NpYmxpbmcoKSA6IG51bGxwdHI7
CiAgICAgaWYgKCFlYyAmJiBub2RlICYmIG5vZGUtPmlzVGV4dE5vZGUoKSkKLSAgICAgICAgbWVy
Z2VXaXRoTmV4dFRleHROb2RlKG5vZGUucmVsZWFzZSgpLCBlYyk7Ci0KKyAgICAgICAgbWVyZ2VX
aXRoTmV4dFRleHROb2RlKHRvVGV4dCgqbm9kZSksIGVjKTsKICAgICBpZiAoIWVjICYmIHByZXYg
JiYgcHJldi0+aXNUZXh0Tm9kZSgpKQotICAgICAgICBtZXJnZVdpdGhOZXh0VGV4dE5vZGUocHJl
di5yZWxlYXNlKCksIGVjKTsKKyAgICAgICAgbWVyZ2VXaXRoTmV4dFRleHROb2RlKHRvVGV4dCgq
cHJldiksIGVjKTsKIH0KIAogTm9kZSogSFRNTEVsZW1lbnQ6Omluc2VydEFkamFjZW50KGNvbnN0
IFN0cmluZyYgd2hlcmUsIE5vZGUqIG5ld0NoaWxkLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTU0
MiwyMyArNTM4LDIzIEBAIE5vZGUqIEhUTUxFbGVtZW50OjppbnNlcnRBZGphY2VudChjb25zdCBT
dHJpbmcmIHdoZXJlLCBOb2RlKiBuZXdDaGlsZCwgRXhjZXB0aW9uCiAKICAgICBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2Uod2hlcmUsICJiZWZvcmVCZWdpbiIpKSB7CiAgICAgICAgIENvbnRhaW5lck5v
ZGUqIHBhcmVudCA9IHRoaXMtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgcmV0dXJuIChwYXJlbnQg
JiYgcGFyZW50LT5pbnNlcnRCZWZvcmUobmV3Q2hpbGQsIHRoaXMsIGVjKSkgPyBuZXdDaGlsZCA6
IDA7CisgICAgICAgIHJldHVybiAocGFyZW50ICYmIHBhcmVudC0+aW5zZXJ0QmVmb3JlKG5ld0No
aWxkLCB0aGlzLCBlYykpID8gbmV3Q2hpbGQgOiBudWxscHRyOwogICAgIH0KIAogICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZSh3aGVyZSwgImFmdGVyQmVnaW4iKSkKLSAgICAgICAgcmV0dXJuIGlu
c2VydEJlZm9yZShuZXdDaGlsZCwgZmlyc3RDaGlsZCgpLCBlYykgPyBuZXdDaGlsZCA6IDA7Cisg
ICAgICAgIHJldHVybiBpbnNlcnRCZWZvcmUobmV3Q2hpbGQsIGZpcnN0Q2hpbGQoKSwgZWMpID8g
bmV3Q2hpbGQgOiBudWxscHRyOwogCiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHdoZXJlLCAi
YmVmb3JlRW5kIikpCi0gICAgICAgIHJldHVybiBhcHBlbmRDaGlsZChuZXdDaGlsZCwgZWMpID8g
bmV3Q2hpbGQgOiAwOworICAgICAgICByZXR1cm4gYXBwZW5kQ2hpbGQobmV3Q2hpbGQsIGVjKSA/
IG5ld0NoaWxkIDogbnVsbHB0cjsKIAogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh3aGVyZSwg
ImFmdGVyRW5kIikpIHsKICAgICAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gdGhpcy0+cGFy
ZW50Tm9kZSgpOwotICAgICAgICByZXR1cm4gKHBhcmVudCAmJiBwYXJlbnQtPmluc2VydEJlZm9y
ZShuZXdDaGlsZCwgbmV4dFNpYmxpbmcoKSwgZWMpKSA/IG5ld0NoaWxkIDogMDsKKyAgICAgICAg
cmV0dXJuIChwYXJlbnQgJiYgcGFyZW50LT5pbnNlcnRCZWZvcmUobmV3Q2hpbGQsIG5leHRTaWJs
aW5nKCksIGVjKSkgPyBuZXdDaGlsZCA6IG51bGxwdHI7CiAgICAgfQogICAgIAogICAgIC8vIElF
IHRocm93cyBDT00gRXhjZXB0aW9uIEVfSU5WQUxJREFSRzsgdGhpcyBpcyB0aGUgYmVzdCBET00g
ZXhjZXB0aW9uIGFsdGVybmF0aXZlLgogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEVsZW1lbnQqIEhUTUxFbGVtZW50
OjppbnNlcnRBZGphY2VudEVsZW1lbnQoY29uc3QgU3RyaW5nJiB3aGVyZSwgRWxlbWVudCogbmV3
Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNTY2LDcgKzU2Miw3IEBAIEVsZW1lbnQqIEhU
TUxFbGVtZW50OjppbnNlcnRBZGphY2VudEVsZW1lbnQoY29uc3QgU3RyaW5nJiB3aGVyZSwgRWxl
bWVudCogbmV3Q2hpCiAgICAgaWYgKCFuZXdDaGlsZCkgewogICAgICAgICAvLyBJRSB0aHJvd3Mg
Q09NIEV4Y2VwdGlvbiBFX0lOVkFMSURBUkc7IHRoaXMgaXMgdGhlIGJlc3QgRE9NIGV4Y2VwdGlv
biBhbHRlcm5hdGl2ZS4KICAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIE5vZGUqIHJl
dHVyblZhbHVlID0gaW5zZXJ0QWRqYWNlbnQod2hlcmUsIG5ld0NoaWxkLCBlYyk7CkBAIC01ODEs
NyArNTc3LDcgQEAgc3RhdGljIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50Rm9ySW5zZXJ0aW9uKGNv
bnN0IFN0cmluZyYgd2hlcmUsIEVsZW1lbnQqIGVsZW1lbnQKICAgICAgICAgQ29udGFpbmVyTm9k
ZSogcGFyZW50ID0gZWxlbWVudC0+cGFyZW50Tm9kZSgpOwogICAgICAgICBpZiAocGFyZW50ICYm
ICFwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSkgewogICAgICAgICAgICAgZWMgPSBOT19NT0RJRklD
QVRJT05fQUxMT1dFRF9FUlI7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKCFwYXJlbnQgfHwgcGFyZW50LT5pc0VsZW1lbnROb2RlKCkpOwogICAgICAgICBy
ZXR1cm4gdG9FbGVtZW50KHBhcmVudCk7CkBAIC01ODksNyArNTg1LDcgQEAgc3RhdGljIEVsZW1l
bnQqIGNvbnRleHRFbGVtZW50Rm9ySW5zZXJ0aW9uKGNvbnN0IFN0cmluZyYgd2hlcmUsIEVsZW1l
bnQqIGVsZW1lbnQKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uod2hlcmUsICJhZnRlckJlZ2lu
IikgfHwgZXF1YWxJZ25vcmluZ0Nhc2Uod2hlcmUsICJiZWZvcmVFbmQiKSkKICAgICAgICAgcmV0
dXJuIGVsZW1lbnQ7CiAgICAgZWMgPSAgU1lOVEFYX0VSUjsKLSAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBIVE1MRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnRIVE1M
KGNvbnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0IFN0cmluZyYgbWFya3VwLCBFeGNlcHRpb25Db2Rl
JiBlYykKQEAgLTY1OSwyNSArNjU1LDI1IEBAIFN0cmluZyBIVE1MRWxlbWVudDo6Y29udGVudEVk
aXRhYmxlKCkgY29uc3QKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZmFzdEdldEF0
dHJpYnV0ZShjb250ZW50ZWRpdGFibGVBdHRyKTsKIAogICAgIGlmICh2YWx1ZS5pc051bGwoKSkK
LSAgICAgICAgcmV0dXJuICJpbmhlcml0IjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
aW5oZXJpdCIpOwogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkgfHwgZXF1YWxJZ25vcmluZ0Nhc2Uo
dmFsdWUsICJ0cnVlIikpCi0gICAgICAgIHJldHVybiAidHJ1ZSI7CisgICAgICAgIHJldHVybiBB
U0NJSUxpdGVyYWwoInRydWUiKTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJm
YWxzZSIpKQotICAgICAgICAgcmV0dXJuICJmYWxzZSI7CisgICAgICAgIHJldHVybiBBU0NJSUxp
dGVyYWwoImZhbHNlIik7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAicGxhaW50
ZXh0LW9ubHkiKSkKLSAgICAgICAgcmV0dXJuICJwbGFpbnRleHQtb25seSI7CisgICAgICAgIHJl
dHVybiBBU0NJSUxpdGVyYWwoInBsYWludGV4dC1vbmx5Iik7CiAKLSAgICByZXR1cm4gImluaGVy
aXQiOworICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImluaGVyaXQiKTsKIH0KIAogdm9pZCBIVE1M
RWxlbWVudDo6c2V0Q29udGVudEVkaXRhYmxlKGNvbnN0IFN0cmluZyYgZW5hYmxlZCwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGVuYWJsZWQsICJ0cnVl
IikpCi0gICAgICAgIHNldEF0dHJpYnV0ZShjb250ZW50ZWRpdGFibGVBdHRyLCAidHJ1ZSIpOwor
ICAgICAgICBzZXRBdHRyaWJ1dGUoY29udGVudGVkaXRhYmxlQXR0ciwgQXRvbWljU3RyaW5nKCJ0
cnVlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIGVsc2UgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKGVuYWJsZWQsICJmYWxzZSIpKQotICAgICAgICBzZXRBdHRyaWJ1
dGUoY29udGVudGVkaXRhYmxlQXR0ciwgImZhbHNlIik7CisgICAgICAgIHNldEF0dHJpYnV0ZShj
b250ZW50ZWRpdGFibGVBdHRyLCBBdG9taWNTdHJpbmcoImZhbHNlIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGVu
YWJsZWQsICJwbGFpbnRleHQtb25seSIpKQotICAgICAgICBzZXRBdHRyaWJ1dGUoY29udGVudGVk
aXRhYmxlQXR0ciwgInBsYWludGV4dC1vbmx5Iik7CisgICAgICAgIHNldEF0dHJpYnV0ZShjb250
ZW50ZWRpdGFibGVBdHRyLCBBdG9taWNTdHJpbmcoInBsYWludGV4dC1vbmx5IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKGVuYWJsZWQsICJpbmhlcml0IikpCiAgICAgICAgIHJlbW92ZUF0dHJpYnV0ZShjb250ZW50
ZWRpdGFibGVBdHRyKTsKICAgICBlbHNlCkBAIC02ODYsMTIgKzY4MiwxNCBAQCB2b2lkIEhUTUxF
bGVtZW50OjpzZXRDb250ZW50RWRpdGFibGUoY29uc3QgU3RyaW5nJiBlbmFibGVkLCBFeGNlcHRp
b25Db2RlJiBlYykKIAogYm9vbCBIVE1MRWxlbWVudDo6ZHJhZ2dhYmxlKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRlKGRyYWdnYWJsZUF0dHIpLCAi
dHJ1ZSIpOworICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShmYXN0R2V0QXR0cmlidXRlKGRy
YWdnYWJsZUF0dHIpLCAidHJ1ZSIpOwogfQogCiB2b2lkIEhUTUxFbGVtZW50OjpzZXREcmFnZ2Fi
bGUoYm9vbCB2YWx1ZSkKIHsKLSAgICBzZXRBdHRyaWJ1dGUoZHJhZ2dhYmxlQXR0ciwgdmFsdWUg
PyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICBzZXRBdHRyaWJ1dGUoZHJhZ2dhYmxlQXR0ciwgdmFs
dWUKKyAgICAgICAgPyBBdG9taWNTdHJpbmcoInRydWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKQorICAgICAgICA6IEF0b21pY1N0cmluZygiZmFsc2UiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiB9CiAKIGJvb2wgSFRNTEVsZW1lbnQ6OnNwZWxs
Y2hlY2soKSBjb25zdApAQCAtNzAxLDIzICs2OTksMjQgQEAgYm9vbCBIVE1MRWxlbWVudDo6c3Bl
bGxjaGVjaygpIGNvbnN0CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldFNwZWxsY2hlY2soYm9vbCBl
bmFibGUpCiB7Ci0gICAgc2V0QXR0cmlidXRlKHNwZWxsY2hlY2tBdHRyLCBlbmFibGUgPyAidHJ1
ZSIgOiAiZmFsc2UiKTsKKyAgICBzZXRBdHRyaWJ1dGUoc3BlbGxjaGVja0F0dHIsIGVuYWJsZQor
ICAgICAgICA/IEF0b21pY1N0cmluZygidHJ1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpCisgICAgICAgIDogQXRvbWljU3RyaW5nKCJmYWxzZSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIH0KIAotCiB2b2lkIEhUTUxFbGVtZW50OjpjbGljaygp
CiB7Ci0gICAgZGlzcGF0Y2hTaW11bGF0ZWRDbGljaygwLCBTZW5kTm9FdmVudHMsIERvTm90U2hv
d1ByZXNzZWRMb29rKTsKKyAgICBkaXNwYXRjaFNpbXVsYXRlZENsaWNrKG51bGxwdHIsIFNlbmRO
b0V2ZW50cywgRG9Ob3RTaG93UHJlc3NlZExvb2spOwogfQogCiB2b2lkIEhUTUxFbGVtZW50Ojph
Y2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpCiB7Ci0gICAgZGlzcGF0Y2hTaW11
bGF0ZWRDbGljaygwLCBzZW5kTW91c2VFdmVudHMgPyBTZW5kTW91c2VVcERvd25FdmVudHMgOiBT
ZW5kTm9FdmVudHMpOworICAgIGRpc3BhdGNoU2ltdWxhdGVkQ2xpY2sobnVsbHB0ciwgc2VuZE1v
dXNlRXZlbnRzID8gU2VuZE1vdXNlVXBEb3duRXZlbnRzIDogU2VuZE5vRXZlbnRzKTsKIH0KIAog
U3RyaW5nIEhUTUxFbGVtZW50Ojp0aXRsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdldEF0dHJp
YnV0ZSh0aXRsZUF0dHIpOworICAgIHJldHVybiBmYXN0R2V0QXR0cmlidXRlKHRpdGxlQXR0cik7
CiB9CiAKIHNob3J0IEhUTUxFbGVtZW50Ojp0YWJJbmRleCgpIGNvbnN0CkBAIC03MzQsMTEgKzcz
MywxMSBAQCB2b2lkIEhUTUxFbGVtZW50OjpzZXRUYWJJbmRleChpbnQgdmFsdWUpCiAKIFRyYW5z
bGF0ZUF0dHJpYnV0ZU1vZGUgSFRNTEVsZW1lbnQ6OnRyYW5zbGF0ZUF0dHJpYnV0ZU1vZGUoKSBj
b25zdAogewotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBnZXRBdHRyaWJ1dGUodHJh
bnNsYXRlQXR0cik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGZhc3RHZXRBdHRy
aWJ1dGUodHJhbnNsYXRlQXR0cik7CiAKLSAgICBpZiAodmFsdWUgPT0gbnVsbEF0b20pCisgICAg
aWYgKHZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gVHJhbnNsYXRlQXR0cmlidXRlSW5o
ZXJpdDsKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJ5ZXMiKSB8fCBlcXVhbEln
bm9yaW5nQ2FzZSh2YWx1ZSwgIiIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwg
InllcyIpIHx8IHZhbHVlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFRyYW5zbGF0ZUF0dHJp
YnV0ZVllczsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJubyIpKQogICAgICAg
ICByZXR1cm4gVHJhbnNsYXRlQXR0cmlidXRlTm87CkBAIC03NDgsMTQgKzc0NywxNCBAQCBUcmFu
c2xhdGVBdHRyaWJ1dGVNb2RlIEhUTUxFbGVtZW50Ojp0cmFuc2xhdGVBdHRyaWJ1dGVNb2RlKCkg
Y29uc3QKIAogYm9vbCBIVE1MRWxlbWVudDo6dHJhbnNsYXRlKCkgY29uc3QKIHsKLSAgICBmb3Ig
KGNvbnN0IE5vZGUqIG4gPSB0aGlzOyBuOyBuID0gbi0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAg
IGlmIChuLT5pc0hUTUxFbGVtZW50KCkpIHsKLSAgICAgICAgICAgIFRyYW5zbGF0ZUF0dHJpYnV0
ZU1vZGUgbW9kZSA9IHN0YXRpY19jYXN0PGNvbnN0IEhUTUxFbGVtZW50Kj4obiktPnRyYW5zbGF0
ZUF0dHJpYnV0ZU1vZGUoKTsKLSAgICAgICAgICAgIGlmIChtb2RlICE9IFRyYW5zbGF0ZUF0dHJp
YnV0ZUluaGVyaXQpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobW9kZSA9PSBUcmFuc2xhdGVB
dHRyaWJ1dGVZZXMgfHwgbW9kZSA9PSBUcmFuc2xhdGVBdHRyaWJ1dGVObyk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIG1vZGUgPT0gVHJhbnNsYXRlQXR0cmlidXRlWWVzOwotICAgICAgICAgICAg
fQotICAgICAgICB9CisgICAgZm9yIChjb25zdCBFbGVtZW50KiBlbGVtZW50ID0gdGhpczsgZWxl
bWVudDsgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgeworICAgICAgICBpZiAo
IWVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBUcmFuc2xhdGVBdHRyaWJ1dGVNb2RlIG1vZGUgPSB0b0hUTUxFbGVtZW50KGVsZW1lbnQpLT50
cmFuc2xhdGVBdHRyaWJ1dGVNb2RlKCk7CisgICAgICAgIGlmIChtb2RlID09IFRyYW5zbGF0ZUF0
dHJpYnV0ZUluaGVyaXQpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQVNTRVJUKG1v
ZGUgPT0gVHJhbnNsYXRlQXR0cmlidXRlWWVzIHx8IG1vZGUgPT0gVHJhbnNsYXRlQXR0cmlidXRl
Tm8pOworICAgICAgICByZXR1cm4gbW9kZSA9PSBUcmFuc2xhdGVBdHRyaWJ1dGVZZXM7CiAgICAg
fQogCiAgICAgLy8gRGVmYXVsdCBvbiB0aGUgcm9vdCBlbGVtZW50IGlzIHRyYW5zbGF0ZT15ZXMu
CkBAIC03NjcsNyArNzY2LDYgQEAgdm9pZCBIVE1MRWxlbWVudDo6c2V0VHJhbnNsYXRlKGJvb2wg
ZW5hYmxlKQogICAgIHNldEF0dHJpYnV0ZSh0cmFuc2xhdGVBdHRyLCBlbmFibGUgPyAieWVzIiA6
ICJubyIpOwogfQogCi0KIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IEhUTUxFbGVtZW50Ojpj
aGlsZHJlbigpCiB7CiAgICAgcmV0dXJuIGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKE5vZGVD
aGlsZHJlbik7CkBAIC04MDQsNyArODAyLDcgQEAgc3RhdGljIGlubGluZSBib29sIGVsZW1lbnRB
ZmZlY3RzRGlyZWN0aW9uYWxpdHkoY29uc3QgTm9kZSogbm9kZSkKICAgICByZXR1cm4gbm9kZS0+
aXNIVE1MRWxlbWVudCgpICYmIChub2RlLT5oYXNUYWdOYW1lKGJkaVRhZykgfHwgdG9IVE1MRWxl
bWVudChub2RlKS0+aGFzQXR0cmlidXRlKGRpckF0dHIpKTsKIH0KIAotc3RhdGljIHZvaWQgc2V0
SGFzRGlyQXV0b0ZsYWdSZWN1cnNpdmVseShOb2RlKiBmaXJzdE5vZGUsIGJvb2wgZmxhZywgTm9k
ZSogbGFzdE5vZGUgPSAwKQorc3RhdGljIHZvaWQgc2V0SGFzRGlyQXV0b0ZsYWdSZWN1cnNpdmVs
eShOb2RlKiBmaXJzdE5vZGUsIGJvb2wgZmxhZywgTm9kZSogbGFzdE5vZGUgPSBudWxscHRyKQog
ewogICAgIGZpcnN0Tm9kZS0+c2V0U2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKGZs
YWcpOwogCkBAIC04MzYsNyArODM0LDcgQEAgdm9pZCBIVE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiBib29sIEhUTUxFbGVtZW50OjpoYXNEaXJl
Y3Rpb25BdXRvKCkgY29uc3QKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGRpcmVjdGlvbiA9
IGZhc3RHZXRBdHRyaWJ1dGUoZGlyQXR0cik7Ci0gICAgcmV0dXJuIChoYXNUYWdOYW1lKGJkaVRh
ZykgJiYgZGlyZWN0aW9uID09IG51bGxBdG9tKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShkaXJlY3Rp
b24sICJhdXRvIik7CisgICAgcmV0dXJuIChoYXNUYWdOYW1lKGJkaVRhZykgJiYgZGlyZWN0aW9u
LmlzTnVsbCgpKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShkaXJlY3Rpb24sICJhdXRvIik7CiB9CiAK
IFRleHREaXJlY3Rpb24gSFRNTEVsZW1lbnQ6OmRpcmVjdGlvbmFsaXR5SWZoYXNEaXJBdXRvQXR0
cmlidXRlKGJvb2wmIGlzQXV0bykgY29uc3QKQEAgLTg1Nyw3ICs4NTUsNyBAQCBUZXh0RGlyZWN0
aW9uIEhUTUxFbGVtZW50OjpkaXJlY3Rpb25hbGl0eShOb2RlKiogc3Ryb25nRGlyZWN0aW9uYWxp
dHlUZXh0Tm9kZSkgYwogICAgICAgICBib29sIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5OwogICAg
ICAgICBVbmljb2RlOjpEaXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IHRleHRFbGVtZW50LT52YWx1
ZSgpLmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCZoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSk7CiAg
ICAgICAgIGlmIChzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlKQotICAgICAgICAgICAgKnN0
cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUgPSBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA/IHRl
eHRFbGVtZW50IDogMDsKKyAgICAgICAgICAgICpzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2Rl
ID0gaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPyB0ZXh0RWxlbWVudCA6IG51bGxwdHI7CiAgICAg
ICAgIHJldHVybiAodGV4dERpcmVjdGlvbiA9PSBVbmljb2RlOjpMZWZ0VG9SaWdodCkgPyBMVFIg
OiBSVEw7CiAgICAgfQogCkBAIC04OTEsNyArODg5LDcgQEAgVGV4dERpcmVjdGlvbiBIVE1MRWxl
bWVudDo6ZGlyZWN0aW9uYWxpdHkoTm9kZSoqIHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUp
IGMKICAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSwgdGhpcyk7CiAgICAg
fQogICAgIGlmIChzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlKQotICAgICAgICAqc3Ryb25n
RGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSA9IDA7CisgICAgICAgICpzdHJvbmdEaXJlY3Rpb25hbGl0
eVRleHROb2RlID0gbnVsbHB0cjsKICAgICByZXR1cm4gTFRSOwogfQogCkBAIC05MzYsNyArOTM0
LDcgQEAgdm9pZCBIVE1MRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFmdGVy
Q2hpbGRyZW5DaGFuZ2VkKEVsZW1lbnQqIGJlZm8KIHsKICAgICAvLyBGSVhNRTogVGhpcyBmdW5j
dGlvbiBsb29rcyBzdXNwaWNpb3VzLgogICAgIGlmIChkb2N1bWVudCgpLnJlbmRlclZpZXcoKSAm
JiAoY2hhbmdlVHlwZSA9PSBFbGVtZW50UmVtb3ZlZCB8fCBjaGFuZ2VUeXBlID09IFRleHRSZW1v
dmVkKSkgewotICAgICAgICBOb2RlKiBub2RlID0gYmVmb3JlQ2hhbmdlID8gYmVmb3JlQ2hhbmdl
LT5uZXh0U2libGluZygpIDogMDsKKyAgICAgICAgTm9kZSogbm9kZSA9IGJlZm9yZUNoYW5nZSA/
IGJlZm9yZUNoYW5nZS0+bmV4dFNpYmxpbmcoKSA6IG51bGxwdHI7CiAgICAgICAgIGZvciAoOyBu
b2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICAgICAgaWYgKGVsZW1l
bnRBZmZlY3RzRGlyZWN0aW9uYWxpdHkobm9kZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CkBAIC05NDgsNyArOTQ2LDcgQEAgdm9pZCBIVE1MRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxp
dHlJZk5lZWRlZEFmdGVyQ2hpbGRyZW5DaGFuZ2VkKEVsZW1lbnQqIGJlZm8KICAgICBpZiAoIXNl
bGZPckFuY2VzdG9ySGFzRGlyQXV0b0F0dHJpYnV0ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBOb2RlKiBvbGRNYXJrZWROb2RlID0gMDsKKyAgICBOb2RlKiBvbGRNYXJrZWROb2RlID0gbnVs
bHB0cjsKICAgICBpZiAoYmVmb3JlQ2hhbmdlKQogICAgICAgICBvbGRNYXJrZWROb2RlID0gY2hh
bmdlVHlwZSA9PSBFbGVtZW50SW5zZXJ0ZWQgPyBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGlu
ZyhiZWZvcmVDaGFuZ2UpIDogYmVmb3JlQ2hhbmdlLT5uZXh0U2libGluZygpOwogCkBAIC05NzYs
MjggKzk3NCwyNiBAQCB2b2lkIEhUTUxFbGVtZW50OjphZGRIVE1MTGVuZ3RoVG9TdHlsZShNdXRh
YmxlU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUsIENTU1Byb3BlcgogICAgIC8vIEZJWE1FOiBUaGlz
IGZ1bmN0aW9uIHNob3VsZCBub3Qgc3BpbiB1cCB0aGUgQ1NTIHBhcnNlciwgYnV0IHNob3VsZCBp
bnN0ZWFkIGp1c3QgZmlndXJlIG91dCB0aGUgY29ycmVjdAogICAgIC8vIGxlbmd0aCB1bml0IGFu
ZCBtYWtlIHRoZSBhcHByb3ByaWF0ZSBwYXJzZWQgdmFsdWUuCiAKLSAgICAvLyBzdHJpcCBhdHRy
aWJ1dGUgZ2FyYmFnZS4uCi0gICAgU3RyaW5nSW1wbCogdiA9IHZhbHVlLmltcGwoKTsKLSAgICBp
ZiAodikgewotICAgICAgICB1bnNpZ25lZCBpbnQgbCA9IDA7CisgICAgaWYgKFN0cmluZ0ltcGwq
IHN0cmluZyA9IHZhbHVlLmltcGwoKSkgeworICAgICAgICB1bnNpZ25lZCBwYXJzZWRMZW5ndGgg
PSAwOwogCi0gICAgICAgIHdoaWxlIChsIDwgdi0+bGVuZ3RoKCkgJiYgKCp2KVtsXSA8PSAnICcp
Ci0gICAgICAgICAgICBsKys7CisgICAgICAgIHdoaWxlIChwYXJzZWRMZW5ndGggPCBzdHJpbmct
PnBhcnNlZExlbmd0aCgpICYmICgqc3RyaW5nKVtwYXJzZWRMZW5ndGhdIDw9ICcgJykKKyAgICAg
ICAgICAgICsrcGFyc2VkTGVuZ3RoOwogCi0gICAgICAgIGZvciAoOyBsIDwgdi0+bGVuZ3RoKCk7
IGwrKykgewotICAgICAgICAgICAgVUNoYXIgY2MgPSAoKnYpW2xdOworICAgICAgICBmb3IgKDsg
cGFyc2VkTGVuZ3RoIDwgc3RyaW5nLT5wYXJzZWRMZW5ndGgoKTsgKytwYXJzZWRMZW5ndGgpIHsK
KyAgICAgICAgICAgIFVDaGFyIGNjID0gKCpzdHJpbmcpW3BhcnNlZExlbmd0aF07CiAgICAgICAg
ICAgICBpZiAoY2MgPiAnOScpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBp
ZiAoY2MgPCAnMCcpIHsKICAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJyUnIHx8IGNjID09ICcq
JykKLSAgICAgICAgICAgICAgICAgICAgbCsrOworICAgICAgICAgICAgICAgICAgICArK3BhcnNl
ZExlbmd0aDsKICAgICAgICAgICAgICAgICBpZiAoY2MgIT0gJy4nKQogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChsICE9
IHYtPmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0
cmlidXRlU3R5bGUoc3R5bGUsIHByb3BlcnR5SUQsIHYtPnN1YnN0cmluZygwLCBsKSk7CisgICAg
ICAgIGlmIChwYXJzZWRMZW5ndGggIT0gc3RyaW5nLT5sZW5ndGgoKSkgeworICAgICAgICAgICAg
YWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBwcm9wZXJ0eUlE
LCBzdHJpbmctPnN1YnN0cmluZygwLCBwYXJzZWRMZW5ndGgpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgIH0KQEAgLTEwOTMsNCArMTA4OSw1IEBAIHZvaWQgZHVtcElubmVy
SFRNTChXZWJDb3JlOjpIVE1MRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBwcmludGYoIiVzXG4i
LCBlbGVtZW50LT5pbm5lckhUTUwoKS5hc2NpaSgpLmRhdGEoKSk7CiB9CisKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAppbmRleCA5NWM4NDM4
ZTZiMGQyZWRiMWMwZWQ4ZGNiM2I3ODBjYmJkMzFjNmYzLi5jNDczZjc1NTQ1MzMwYzRiMGFiMDM1
NDI1Y2I2NDliM2E1MjNmNzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUNlbGxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNl
bGxFbGVtZW50LmNwcApAQCAtMTMxLDEyICsxMzEsMTIgQEAgYm9vbCBIVE1MVGFibGVDZWxsRWxl
bWVudDo6aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAK
IFN0cmluZyBIVE1MVGFibGVDZWxsRWxlbWVudDo6YWJicigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGdldEF0dHJpYnV0ZShhYmJyQXR0cik7CisgICAgcmV0dXJuIGZhc3RHZXRBdHRyaWJ1dGUoYWJi
ckF0dHIpOwogfQogCiBTdHJpbmcgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmF4aXMoKSBjb25zdAog
ewotICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoYXhpc0F0dHIpOworICAgIHJldHVybiBmYXN0R2V0
QXR0cmlidXRlKGF4aXNBdHRyKTsKIH0KIAogdm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6c2V0
Q29sU3BhbihpbnQgbikKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIEhUTUxUYWJsZUNlbGxFbGVt
ZW50OjpzZXRDb2xTcGFuKGludCBuKQogCiBTdHJpbmcgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6Omhl
YWRlcnMoKSBjb25zdAogewotICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoaGVhZGVyc0F0dHIpOwor
ICAgIHJldHVybiBmYXN0R2V0QXR0cmlidXRlKGhlYWRlcnNBdHRyKTsKIH0KIAogdm9pZCBIVE1M
VGFibGVDZWxsRWxlbWVudDo6c2V0Um93U3BhbihpbnQgbikKQEAgLTE1Niw3ICsxNTYsNyBAQCB2
b2lkIEhUTUxUYWJsZUNlbGxFbGVtZW50OjpzZXRSb3dTcGFuKGludCBuKQogCiBTdHJpbmcgSFRN
TFRhYmxlQ2VsbEVsZW1lbnQ6OnNjb3BlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZ2V0QXR0cmli
dXRlKHNjb3BlQXR0cik7CisgICAgcmV0dXJuIGZhc3RHZXRBdHRyaWJ1dGUoc2NvcGVBdHRyKTsK
IH0KIAogdm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVV
UkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVDb2xFbGVtZW50LmNwcAppbmRleCBkOGI0MDNlYjJkOWUxNjA0MDZiNWIwMjRjMDZk
OGUzN2YwODIwYzY4Li5mM2RmMDY1NzRhMDg0NTllOWViYTZiM2IxZjEzOTlhMmQyZTk0ZWZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAKQEAgLTk3LDcg
Kzk3LDcgQEAgdm9pZCBIVE1MVGFibGVDb2xFbGVtZW50OjpzZXRTcGFuKGludCBuKQogCiBTdHJp
bmcgSFRNTFRhYmxlQ29sRWxlbWVudDo6d2lkdGgoKSBjb25zdAogewotICAgIHJldHVybiBnZXRB
dHRyaWJ1dGUod2lkdGhBdHRyKTsKKyAgICByZXR1cm4gZmFzdEdldEF0dHJpYnV0ZSh3aWR0aEF0
dHIpOwogfQogCiB9Cg==
</data>
<flag name="review"
          id="236436"
          type_id="1"
          status="+"
          setter="kling"
    />
    <flag name="commit-queue"
          id="236437"
          type_id="3"
          status="-"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>