<?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>149493</bug_id>
          
          <creation_ts>2015-09-22 23:37:27 -0700</creation_ts>
          <short_desc>TreeWalker.previousSibling()  / nextSibling() does not behave according to the specification</short_desc>
          <delta_ts>2015-09-28 11:38:59 -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>WebKit 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, WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1128232</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-09-22 23:37:27 -0700</bug_when>
    <thetext>TreeWalker.previousSibling()  / nextSibling() does not behave according to the specification:
- https://dom.spec.whatwg.org/#dom-treewalker-nextsibling
- https://dom.spec.whatwg.org/#dom-treewalker-previoussibling
- https://dom.spec.whatwg.org/#concept-traverse-siblings

This is causing several checks in imported/w3c/web-platform-tests/dom/traversal/TreeWalker.html to fail. Firefox passes all the checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128339</commentid>
    <comment_count>1</comment_count>
      <attachid>261826</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-09-23 09:54:42 -0700</bug_when>
    <thetext>Created attachment 261826
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128352</commentid>
    <comment_count>2</comment_count>
      <attachid>261826</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-09-23 10:35:54 -0700</bug_when>
    <thetext>Comment on attachment 261826
Patch

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

&gt; Source/WebCore/dom/TreeWalker.cpp:134
&gt; +template &lt;TreeWalker::SiblingTraversalType type&gt;
&gt; +Node* TreeWalker::traverseSiblings()

I would write this:

template&lt;TreeWalker::SiblingTraversalType type&gt; Node* TreeWalker::traverseSiblings()

The desire to have it all on one line is probably just my personal quirk. I do like it better, though.

The lack of space before the &lt;&gt; is more important to me and while I don’t know about everyone on the WebKit project I know that at least Anders strongly prefers it too.

&gt; Source/WebCore/dom/TreeWalker.cpp:145
&gt; +                m_current = sibling.release();

In modern code this should be WTF::move(sibling) rather than sibling.release().

&gt; Source/WebCore/dom/TreeWalker.h:59
&gt; +        template &lt;SiblingTraversalType&gt; Node* traverseSiblings();

template&lt;&gt; with no space rather than template &lt;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128360</commentid>
    <comment_count>3</comment_count>
      <attachid>261833</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-09-23 11:38:55 -0700</bug_when>
    <thetext>Created attachment 261833
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128374</commentid>
    <comment_count>4</comment_count>
      <attachid>261833</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-09-23 13:23:30 -0700</bug_when>
    <thetext>Comment on attachment 261833
Patch

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

&gt; Source/WebCore/dom/TreeWalker.cpp:150
&gt; +            sibling = isNext ? sibling-&gt;firstChild() : sibling-&gt;lastChild();
&gt; +            if (acceptNodeResult == NodeFilter::FILTER_REJECT || !sibling)
&gt; +                sibling = isNext ? node-&gt;nextSibling() : node-&gt;previousSibling();

I just noticed something redundant here. If acceptNodeResult is FILTER_REJECT, then there’s no reason to execute that first line of code setting sibling, because it gets overwritten by the second line of code. Maybe this is better?

    if (acceptNodeResult == NodeFilter::FILTER_REJECT)
        sibling = nullptr;
    else
        sibling = isNext ? sibling-&gt;firstChild() : sibling-&gt;lastChild();
    if (!sibling)
        sibling = isNext ? node-&gt;nextSibling() : node-&gt;previousSibling();

Not really sure what’s best for efficiency and what’s best for clarity. We can definitely land it your way, but I just noticed this strangeness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128383</commentid>
    <comment_count>5</comment_count>
      <attachid>261833</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-09-23 13:50:29 -0700</bug_when>
    <thetext>Comment on attachment 261833
Patch

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

&gt;&gt; Source/WebCore/dom/TreeWalker.cpp:150
&gt;&gt; +                sibling = isNext ? node-&gt;nextSibling() : node-&gt;previousSibling();
&gt; 
&gt; I just noticed something redundant here. If acceptNodeResult is FILTER_REJECT, then there’s no reason to execute that first line of code setting sibling, because it gets overwritten by the second line of code. Maybe this is better?
&gt; 
&gt;     if (acceptNodeResult == NodeFilter::FILTER_REJECT)
&gt;         sibling = nullptr;
&gt;     else
&gt;         sibling = isNext ? sibling-&gt;firstChild() : sibling-&gt;lastChild();
&gt;     if (!sibling)
&gt;         sibling = isNext ? node-&gt;nextSibling() : node-&gt;previousSibling();
&gt; 
&gt; Not really sure what’s best for efficiency and what’s best for clarity. We can definitely land it your way, but I just noticed this strangeness.

You are right that the first sibling assignment is useless if acceptNodeResult == NodeFilter::FILTER_REJECT, however, it is should be cheap. The current code also has the benefit of being a bit more concise and matching the text of the DOM spec.
I have a slight preference for keeping it this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128390</commentid>
    <comment_count>6</comment_count>
      <attachid>261833</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-23 14:41:10 -0700</bug_when>
    <thetext>Comment on attachment 261833
Patch

Clearing flags on attachment: 261833

Committed r190187: &lt;http://trac.webkit.org/changeset/190187&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128391</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-23 14:41:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129043</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-09-28 11:38:56 -0700</bug_when>
    <thetext>&lt;rdar://problem/22882468&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261826</attachid>
            <date>2015-09-23 09:54:42 -0700</date>
            <delta_ts>2015-09-23 11:38:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149493-20150923095423.patch</filename>
            <type>text/plain</type>
            <size>11542</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmIxMGIxN2UxNTA1MWI5
N2FmOWNmMTFhMzM2Y2UwYmJkNGEyZTQ3MS4uNzZiNzRkYWZjNzU2YWMzYmQxZDcwNTRmYTcxN2Zl
ZGU4Mjc3ODk2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTA5LTIzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVHJlZVdhbGtlci5wcmV2aW91
c1NpYmxpbmcoKSAgLyBuZXh0U2libGluZygpIGRvZXMgbm90IGJlaGF2ZSBhY2NvcmRpbmcgdG8g
dGhlIHNwZWNpZmljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0OTQ5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRyZWVXYWxrZXIucHJldmlvdXNTaWJsaW5nKCkgIC8gbmV4dFNpYmxpbmcoKSBk
b2VzIG5vdCBiZWhhdmUgYWNjb3JkaW5nCisgICAgICAgIHRvIHRoZSBzcGVjaWZpY2F0aW9uOgor
ICAgICAgICAtIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jZG9tLXRyZWV3YWxrZXItbmV4
dHNpYmxpbmcKKyAgICAgICAgLSBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvbS10cmVl
d2Fsa2VyLXByZXZpb3Vzc2libGluZworICAgICAgICAtIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdn
Lm9yZy8jY29uY2VwdC10cmF2ZXJzZS1zaWJsaW5ncworCisgICAgICAgIEluIHBhcnRpY3VsYXIs
IHRoZSBwcmV2aW91cyBjb2RlIHdvdWxkIGZhaWwgdG8gdXBkYXRlICdub2RlJyB2YXJpYWJsZQor
ICAgICAgICBpbiB0aGUgY2FzZSBhY2NlcHROb2RlKCkgcmV0dXJuZWQgRklMVEVSX1JFSkVDVC4g
VGhpcyBwYXRjaCBmaXhlcyB0aGlzCisgICAgICAgIGFuZCByZWZhY3RvcnMgdGhlIGZ1bmN0aW9u
IHRvIG1hdGNoIG1vcmUgY2xvc2VseSB0aGUgdGV4dCBvZiB0aGUgc3BlYworICAgICAgICBhbmQg
YXZvaWQgY29kZSBkdXBsaWNhdGlvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGFscmVhZHkg
Y292ZXJlZCBieSBleGlzdGluZyB0ZXN0LgorCisgICAgICAgICogZG9tL1RyZWVXYWxrZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VHJlZVdhbGtlcjo6dHJhdmVyc2VTaWJsaW5ncyk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmVlV2Fsa2VyOjpwcmV2aW91c1NpYmxpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6VHJlZVdhbGtlcjo6bmV4dFNpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVdh
bGtlcjo6cHJldmlvdXNOb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vVHJlZVdhbGtlci5o
OgorCiAyMDE1LTA5LTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIEV2ZW50IGZpcmVkIG9uIGEgZGV0YWNoZWQgbm9kZSBkb2VzIG5vdCBidWJibGUgdXAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlV2Fsa2VyLmNwcAppbmRleCA4Nzc0ODJhZmY0N2EzYzU0MzRhZjc1MzJlNmRj
MDUzZDE1MTNjZDFkLi4zNzUxZGUzZDk1YjhjZTVhOTYzZDc2NjJkMzI3MTM4YmMzYmViYTdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIuY3BwCkBAIC0xMzAsMjkgKzEzMCwyNSBAQCBOb2RlKiBU
cmVlV2Fsa2VyOjpsYXN0Q2hpbGQoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1Ob2RlKiBU
cmVlV2Fsa2VyOjpwcmV2aW91c1NpYmxpbmcoKQordGVtcGxhdGUgPFRyZWVXYWxrZXI6OlNpYmxp
bmdUcmF2ZXJzYWxUeXBlIHR5cGU+CitOb2RlKiBUcmVlV2Fsa2VyOjp0cmF2ZXJzZVNpYmxpbmdz
KCkKIHsKICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IG1fY3VycmVudDsKICAgICBpZiAobm9kZSA9
PSByb290KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHdoaWxlICgxKSB7Ci0gICAg
ICAgIGZvciAoUmVmUHRyPE5vZGU+IHNpYmxpbmcgPSBub2RlLT5wcmV2aW91c1NpYmxpbmcoKTsg
c2libGluZzsgKSB7CisKKyAgICBhdXRvIGlzTmV4dCA9IHR5cGUgPT0gU2libGluZ1RyYXZlcnNh
bFR5cGU6Ok5leHQ7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgZm9yIChSZWZQdHI8Tm9k
ZT4gc2libGluZyA9IGlzTmV4dCA/IG5vZGUtPm5leHRTaWJsaW5nKCkgOiBub2RlLT5wcmV2aW91
c1NpYmxpbmcoKTsgc2libGluZzsgKSB7CiAgICAgICAgICAgICBzaG9ydCBhY2NlcHROb2RlUmVz
dWx0ID0gYWNjZXB0Tm9kZShzaWJsaW5nLmdldCgpKTsKLSAgICAgICAgICAgIHN3aXRjaCAoYWNj
ZXB0Tm9kZVJlc3VsdCkgewotICAgICAgICAgICAgICAgIGNhc2UgTm9kZUZpbHRlcjo6RklMVEVS
X0FDQ0VQVDoKLSAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50ID0gc2libGluZy5yZWxlYXNl
KCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtX2N1cnJlbnQuZ2V0KCk7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBOb2RlRmlsdGVyOjpGSUxURVJfU0tJUDoKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHNpYmxpbmctPmxhc3RDaGlsZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBz
aWJsaW5nID0gc2libGluZy0+bGFzdENoaWxkKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBu
b2RlID0gc2libGluZzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIGNhc2UgTm9kZUZpbHRlcjo6RklMVEVSX1JFSkVDVDoKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBpZiAoYWNjZXB0Tm9kZVJlc3VsdCA9PSBOb2RlRmlsdGVyOjpG
SUxURVJfQUNDRVBUKSB7CisgICAgICAgICAgICAgICAgbV9jdXJyZW50ID0gc2libGluZy5yZWxl
YXNlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fY3VycmVudC5nZXQoKTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c1NpYmxpbmcoKTsK
KyAgICAgICAgICAgIG5vZGUgPSBzaWJsaW5nOworICAgICAgICAgICAgc2libGluZyA9IGlzTmV4
dCA/IHNpYmxpbmctPmZpcnN0Q2hpbGQoKSA6IHNpYmxpbmctPmxhc3RDaGlsZCgpOworICAgICAg
ICAgICAgaWYgKGFjY2VwdE5vZGVSZXN1bHQgPT0gTm9kZUZpbHRlcjo6RklMVEVSX1JFSkVDVCB8
fCAhc2libGluZykKKyAgICAgICAgICAgICAgICBzaWJsaW5nID0gaXNOZXh0ID8gbm9kZS0+bmV4
dFNpYmxpbmcoKSA6IG5vZGUtPnByZXZpb3VzU2libGluZygpOwogICAgICAgICB9CiAgICAgICAg
IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAgICAgICAgIGlmICghbm9kZSB8fCBub2RlID09
IHJvb3QoKSkKQEAgLTE2MywzNyArMTU5LDE0IEBAIE5vZGUqIFRyZWVXYWxrZXI6OnByZXZpb3Vz
U2libGluZygpCiAgICAgfQogfQogCitOb2RlKiBUcmVlV2Fsa2VyOjpwcmV2aW91c1NpYmxpbmco
KQoreworICAgIHJldHVybiB0cmF2ZXJzZVNpYmxpbmdzPFNpYmxpbmdUcmF2ZXJzYWxUeXBlOjpQ
cmV2aW91cz4oKTsKK30KKwogTm9kZSogVHJlZVdhbGtlcjo6bmV4dFNpYmxpbmcoKQogewotICAg
IFJlZlB0cjxOb2RlPiBub2RlID0gbV9jdXJyZW50OwotICAgIGlmIChub2RlID09IHJvb3QoKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgd2hpbGUgKDEpIHsKLSAgICAgICAgZm9yIChS
ZWZQdHI8Tm9kZT4gc2libGluZyA9IG5vZGUtPm5leHRTaWJsaW5nKCk7IHNpYmxpbmc7ICkgewot
ICAgICAgICAgICAgc2hvcnQgYWNjZXB0Tm9kZVJlc3VsdCA9IGFjY2VwdE5vZGUoc2libGluZy5n
ZXQoKSk7Ci0gICAgICAgICAgICBzd2l0Y2ggKGFjY2VwdE5vZGVSZXN1bHQpIHsKLSAgICAgICAg
ICAgICAgICBjYXNlIE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQ6Ci0gICAgICAgICAgICAgICAg
ICAgIG1fY3VycmVudCA9IHNpYmxpbmcucmVsZWFzZSgpOwotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9jdXJyZW50LmdldCgpOwotICAgICAgICAgICAgICAgIGNhc2UgTm9kZUZpbHRlcjo6
RklMVEVSX1NLSVA6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nLT5maXJzdENoaWxk
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxpbmcgPSBzaWJsaW5nLT5maXJzdENo
aWxkKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gc2libGluZzsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgTm9kZUZpbHRlcjo6RklM
VEVSX1JFSkVDVDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBzaWJsaW5nID0gc2libGluZy0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgfQot
ICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwotICAgICAgICBpZiAoIW5vZGUgfHwg
bm9kZSA9PSByb290KCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgc2hv
cnQgYWNjZXB0Tm9kZVJlc3VsdCA9IGFjY2VwdE5vZGUobm9kZS5nZXQoKSk7Ci0gICAgICAgIGlm
IChhY2NlcHROb2RlUmVzdWx0ID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQpCi0gICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ3M8
U2libGluZ1RyYXZlcnNhbFR5cGU6Ok5leHQ+KCk7CiB9CiAKIE5vZGUqIFRyZWVXYWxrZXI6OnBy
ZXZpb3VzTm9kZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIuaAppbmRleCAyMjhmMjNkNDc0NmEyMTU5
YmI1MGJmNmFhNjI3ODhiNzMzNjRmYjlmLi5mNGYzMDUzMmVhY2E5MTkzZjg4OTQzZTgzYTIyN2Ji
NDJhNzg1NDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmgKQEAgLTU1LDYgKzU1LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgVHJlZVdhbGtlcihQYXNz
UmVmUHRyPE5vZGU+LCB1bnNpZ25lZCBsb25nIHdoYXRUb1Nob3csIFJlZlB0cjxOb2RlRmlsdGVy
PiYmKTsKKyAgICAgICAgZW51bSBjbGFzcyBTaWJsaW5nVHJhdmVyc2FsVHlwZSB7IFByZXZpb3Vz
LCBOZXh0IH07CisgICAgICAgIHRlbXBsYXRlIDxTaWJsaW5nVHJhdmVyc2FsVHlwZT4gTm9kZSog
dHJhdmVyc2VTaWJsaW5ncygpOwogICAgICAgICAKICAgICAgICAgTm9kZSogc2V0Q3VycmVudChQ
YXNzUmVmUHRyPE5vZGU+KTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggOGYw
YTRlZmFkOTY5ZWM3YzA1NTdiZTdkYjQ2N2E0ZTlhZjMyMTUxOC4uNjViYjY5MDEzOTU5OGEwYTc0
MzZlMjcyY2Y5YWVlMzAxYzA1NThhOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTUtMDktMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBUcmVlV2Fsa2VyLnByZXZpb3VzU2libGluZygpICAvIG5leHRTaWJsaW5n
KCkgZG9lcyBub3QgYmVoYXZlIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NDkzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmViYXNlbGluZSBleGlz
dGluZyBXM0MgRE9NIHRlc3Qgbm93IHRoYXQgbW9yZSBjaGVja3MgYXJlIHBhc3NpbmcuCisKKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fsa2VyLWV4cGVj
dGVkLnR4dDoKKwogMjAxNS0wOS0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBFdmVudCBmaXJlZCBvbiBhIGRldGFjaGVkIG5vZGUgZG9lcyBub3QgYnViYmxl
IHVwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2RvbS90cmF2ZXJzYWwvVHJlZVdhbGtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvVHJlZVdhbGtlci1l
eHBlY3RlZC50eHQKaW5kZXggNjU1Nzg0ZGI1YmIyOGI4MTEwNzIzZjljNTQzZGE2ZjliZWVjOTA3
OC4uZjI2YWFlODRlMzE0YWRkNzI2ZjJkNDZmY2M0MDFlYzI0MWRkNjA5YyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2Fs
L1RyZWVXYWxrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fsa2VyLWV4cGVjdGVkLnR4dApA
QCAtMTQ2LDcgKzE0Niw3IEBAIFBBU1MgZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihkb2N1bWVu
dCwgMCwgKGZ1bmN0aW9uKG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZU5hCiBQQVNTIGRvY3VtZW50
LmNyZWF0ZVRyZWVXYWxrZXIoZG9jdW1lbnQsIDB4RkZGRkZGRkYsIG51bGwpIAogUEFTUyBkb2N1
bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGRvY3VtZW50LCAweEZGRkZGRkZGLCAoZnVuY3Rpb24obm9k
ZSkgeyByZXR1cm4gdHJ1ZSB9KSkgCiBQQVNTIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZG9j
dW1lbnQsIDB4RkZGRkZGRkYsIChmdW5jdGlvbihub2RlKSB7IHJldHVybiBmYWxzZSB9KSkgCi1G
QUlMIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZG9jdW1lbnQsIDB4RkZGRkZGRkYsIChmdW5j
dGlvbihub2RlKSB7IHJldHVybiBub2RlLm5vZGVOYW1lWzBdID09ICcjJyB9KSkgYXNzZXJ0X2Vx
dWFsczogLm5leHRTaWJsaW5nKCkgZXhwZWN0ZWQgVGV4dCBub2RlICJUcmVlV2Fsa2VyIHRlc3Rz
IiBidXQgZ290IG51bGwKK1BBU1MgZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihkb2N1bWVudCwg
MHhGRkZGRkZGRiwgKGZ1bmN0aW9uKG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZU5hbWVbMF0gPT0g
JyMnIH0pKSAKIFBBU1MgZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihkb2N1bWVudCwgTm9kZUZp
bHRlci5TSE9XX0VMRU1FTlQsIG51bGwpIAogUEFTUyBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2Vy
KGRvY3VtZW50LCBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwgKGZ1bmN0aW9uKG5vZGUpIHsgcmV0
dXJuIHRydWUgfSkpIAogUEFTUyBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGRvY3VtZW50LCBO
b2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwgKGZ1bmN0aW9uKG5vZGUpIHsgcmV0dXJuIGZhbHNlIH0p
KSAKQEAgLTE2Niw3ICsxNjYsNyBAQCBQQVNTIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZGV0
YWNoZWREaXYsIDAsIChmdW5jdGlvbihub2RlKSB7IHJldHVybiBub2RlLm5vZAogUEFTUyBkb2N1
bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGRldGFjaGVkRGl2LCAweEZGRkZGRkZGLCBudWxsKSAKIFBB
U1MgZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihkZXRhY2hlZERpdiwgMHhGRkZGRkZGRiwgKGZ1
bmN0aW9uKG5vZGUpIHsgcmV0dXJuIHRydWUgfSkpIAogUEFTUyBkb2N1bWVudC5jcmVhdGVUcmVl
V2Fsa2VyKGRldGFjaGVkRGl2LCAweEZGRkZGRkZGLCAoZnVuY3Rpb24obm9kZSkgeyByZXR1cm4g
ZmFsc2UgfSkpIAotRkFJTCBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGRldGFjaGVkRGl2LCAw
eEZGRkZGRkZGLCAoZnVuY3Rpb24obm9kZSkgeyByZXR1cm4gbm9kZS5ub2RlTmFtZVswXSA9PSAn
IycgfSkpIGFzc2VydF9lcXVhbHM6IC5uZXh0U2libGluZygpIGV4cGVjdGVkIFRleHQgbm9kZSAi
V3h5emFiY2QiIGJ1dCBnb3QgbnVsbAorUEFTUyBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGRl
dGFjaGVkRGl2LCAweEZGRkZGRkZGLCAoZnVuY3Rpb24obm9kZSkgeyByZXR1cm4gbm9kZS5ub2Rl
TmFtZVswXSA9PSAnIycgfSkpIAogUEFTUyBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGRldGFj
aGVkRGl2LCBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwgbnVsbCkgCiBQQVNTIGRvY3VtZW50LmNy
ZWF0ZVRyZWVXYWxrZXIoZGV0YWNoZWREaXYsIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCAoZnVu
Y3Rpb24obm9kZSkgeyByZXR1cm4gdHJ1ZSB9KSkgCiBQQVNTIGRvY3VtZW50LmNyZWF0ZVRyZWVX
YWxrZXIoZGV0YWNoZWREaXYsIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCAoZnVuY3Rpb24obm9k
ZSkgeyByZXR1cm4gZmFsc2UgfSkpIApAQCAtMTg2LDcgKzE4Niw3IEBAIFBBU1MgZG9jdW1lbnQu
Y3JlYXRlVHJlZVdhbGtlcihmb3JlaWduRG9jLCAwLCAoZnVuY3Rpb24obm9kZSkgeyByZXR1cm4g
bm9kZS5ub2RlCiBQQVNTIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZm9yZWlnbkRvYywgMHhG
RkZGRkZGRiwgbnVsbCkgCiBQQVNTIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZm9yZWlnbkRv
YywgMHhGRkZGRkZGRiwgKGZ1bmN0aW9uKG5vZGUpIHsgcmV0dXJuIHRydWUgfSkpIAogUEFTUyBk
b2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGZvcmVpZ25Eb2MsIDB4RkZGRkZGRkYsIChmdW5jdGlv
bihub2RlKSB7IHJldHVybiBmYWxzZSB9KSkgCi1GQUlMIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxr
ZXIoZm9yZWlnbkRvYywgMHhGRkZGRkZGRiwgKGZ1bmN0aW9uKG5vZGUpIHsgcmV0dXJuIG5vZGUu
bm9kZU5hbWVbMF0gPT0gJyMnIH0pKSBhc3NlcnRfZXF1YWxzOiAubmV4dFNpYmxpbmcoKSBleHBl
Y3RlZCBUZXh0IG5vZGUgIkVmZ2hpamtsIiBidXQgZ290IENvbW1lbnQgbm9kZSA8IS0tIkNvbW1l
bnRlciIgYW5kICJjb21tZW50YXRvciIgbWVhbiBkaWZmZXJlbnQgdGhpbmdzLiAgSSd2Li4uLS0+
CitQQVNTIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZm9yZWlnbkRvYywgMHhGRkZGRkZGRiwg
KGZ1bmN0aW9uKG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZU5hbWVbMF0gPT0gJyMnIH0pKSAKIFBB
U1MgZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihmb3JlaWduRG9jLCBOb2RlRmlsdGVyLlNIT1df
RUxFTUVOVCwgbnVsbCkgCiBQQVNTIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZm9yZWlnbkRv
YywgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIChmdW5jdGlvbihub2RlKSB7IHJldHVybiB0cnVl
IH0pKSAKIFBBU1MgZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihmb3JlaWduRG9jLCBOb2RlRmls
dGVyLlNIT1dfRUxFTUVOVCwgKGZ1bmN0aW9uKG5vZGUpIHsgcmV0dXJuIGZhbHNlIH0pKSAKQEAg
LTIyNiw3ICsyMjYsNyBAQCBQQVNTIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoeG1sRG9jLCAw
LCAoZnVuY3Rpb24obm9kZSkgeyByZXR1cm4gbm9kZS5ub2RlTmFtZQogUEFTUyBkb2N1bWVudC5j
cmVhdGVUcmVlV2Fsa2VyKHhtbERvYywgMHhGRkZGRkZGRiwgbnVsbCkgCiBQQVNTIGRvY3VtZW50
LmNyZWF0ZVRyZWVXYWxrZXIoeG1sRG9jLCAweEZGRkZGRkZGLCAoZnVuY3Rpb24obm9kZSkgeyBy
ZXR1cm4gdHJ1ZSB9KSkgCiBQQVNTIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoeG1sRG9jLCAw
eEZGRkZGRkZGLCAoZnVuY3Rpb24obm9kZSkgeyByZXR1cm4gZmFsc2UgfSkpIAotRkFJTCBkb2N1
bWVudC5jcmVhdGVUcmVlV2Fsa2VyKHhtbERvYywgMHhGRkZGRkZGRiwgKGZ1bmN0aW9uKG5vZGUp
IHsgcmV0dXJuIG5vZGUubm9kZU5hbWVbMF0gPT0gJyMnIH0pKSBhc3NlcnRfZXF1YWxzOiAubmV4
dFNpYmxpbmcoKSBleHBlY3RlZCBUZXh0IG5vZGUgImRvIHJlIG1pIGZhIHNvIGxhIHRpIiBidXQg
Z290IENvbW1lbnQgbm9kZSA8IS0tSSBtYWxpY2lvdXNseSBjcmVhdGVkIGEgY29tbWVudCB0aGF0
IHdpbGwgYnJlYWsgaW5jYXV0aW91Li4uLS0+CitQQVNTIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxr
ZXIoeG1sRG9jLCAweEZGRkZGRkZGLCAoZnVuY3Rpb24obm9kZSkgeyByZXR1cm4gbm9kZS5ub2Rl
TmFtZVswXSA9PSAnIycgfSkpIAogUEFTUyBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKHhtbERv
YywgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIG51bGwpIAogUEFTUyBkb2N1bWVudC5jcmVhdGVU
cmVlV2Fsa2VyKHhtbERvYywgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIChmdW5jdGlvbihub2Rl
KSB7IHJldHVybiB0cnVlIH0pKSAKIFBBU1MgZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcih4bWxE
b2MsIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCAoZnVuY3Rpb24obm9kZSkgeyByZXR1cm4gZmFs
c2UgfSkpIApAQCAtNTA2LDggKzUwNiw3IEBAIFBBU1MgZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtl
cih0ZXN0RGl2LCAwLCAoZnVuY3Rpb24obm9kZSkgeyByZXR1cm4gbm9kZS5ub2RlTmFtCiBQQVNT
IGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIodGVzdERpdiwgMHhGRkZGRkZGRiwgbnVsbCkgCiBQ
QVNTIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIodGVzdERpdiwgMHhGRkZGRkZGRiwgKGZ1bmN0
aW9uKG5vZGUpIHsgcmV0dXJuIHRydWUgfSkpIAogUEFTUyBkb2N1bWVudC5jcmVhdGVUcmVlV2Fs
a2VyKHRlc3REaXYsIDB4RkZGRkZGRkYsIChmdW5jdGlvbihub2RlKSB7IHJldHVybiBmYWxzZSB9
KSkgCi1GQUlMIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIodGVzdERpdiwgMHhGRkZGRkZGRiwg
KGZ1bmN0aW9uKG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZU5hbWVbMF0gPT0gJyMnIH0pKSBhc3Nl
cnRfZXF1YWxzOiAubmV4dFNpYmxpbmcoKSBleHBlY3RlZCBUZXh0IG5vZGUgIklqa2xtbm9wCi0i
IGJ1dCBnb3QgQ29tbWVudCBub2RlIDwhLS1BbHBoYWJldCBzb3VwPy0tPgorUEFTUyBkb2N1bWVu
dC5jcmVhdGVUcmVlV2Fsa2VyKHRlc3REaXYsIDB4RkZGRkZGRkYsIChmdW5jdGlvbihub2RlKSB7
IHJldHVybiBub2RlLm5vZGVOYW1lWzBdID09ICcjJyB9KSkgCiBQQVNTIGRvY3VtZW50LmNyZWF0
ZVRyZWVXYWxrZXIodGVzdERpdiwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIG51bGwpIAogUEFT
UyBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKHRlc3REaXYsIE5vZGVGaWx0ZXIuU0hPV19FTEVN
RU5ULCAoZnVuY3Rpb24obm9kZSkgeyByZXR1cm4gdHJ1ZSB9KSkgCiBQQVNTIGRvY3VtZW50LmNy
ZWF0ZVRyZWVXYWxrZXIodGVzdERpdiwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIChmdW5jdGlv
bihub2RlKSB7IHJldHVybiBmYWxzZSB9KSkgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261833</attachid>
            <date>2015-09-23 11:38:55 -0700</date>
            <delta_ts>2015-09-23 14:41:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149493-20150923113835.patch</filename>
            <type>text/plain</type>
            <size>11646</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjJmNTIzMGVlNmU4MTdi
NGQyZDM3ODk2NmY1ZDdjNTkyYjNiNGU2OS4uYzljNDQxYTUxMjZhYTI4NWYzYjM1ZTUxOTc1MDg5
NTI3MmUwMDMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTA5LTIzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVHJlZVdhbGtlci5wcmV2aW91
c1NpYmxpbmcoKSAgLyBuZXh0U2libGluZygpIGRvZXMgbm90IGJlaGF2ZSBhY2NvcmRpbmcgdG8g
dGhlIHNwZWNpZmljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0OTQ5MworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisg
ICAgICAgIFRyZWVXYWxrZXIucHJldmlvdXNTaWJsaW5nKCkgIC8gbmV4dFNpYmxpbmcoKSBkb2Vz
IG5vdCBiZWhhdmUgYWNjb3JkaW5nCisgICAgICAgIHRvIHRoZSBzcGVjaWZpY2F0aW9uOgorICAg
ICAgICAtIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jZG9tLXRyZWV3YWxrZXItbmV4dHNp
YmxpbmcKKyAgICAgICAgLSBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvbS10cmVld2Fs
a2VyLXByZXZpb3Vzc2libGluZworICAgICAgICAtIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9y
Zy8jY29uY2VwdC10cmF2ZXJzZS1zaWJsaW5ncworCisgICAgICAgIEluIHBhcnRpY3VsYXIsIHRo
ZSBwcmV2aW91cyBjb2RlIHdvdWxkIGZhaWwgdG8gdXBkYXRlICdub2RlJyB2YXJpYWJsZQorICAg
ICAgICBpbiB0aGUgY2FzZSBhY2NlcHROb2RlKCkgcmV0dXJuZWQgRklMVEVSX1JFSkVDVC4gVGhp
cyBwYXRjaCBmaXhlcyB0aGlzCisgICAgICAgIGFuZCByZWZhY3RvcnMgdGhlIGZ1bmN0aW9uIHRv
IG1hdGNoIG1vcmUgY2xvc2VseSB0aGUgdGV4dCBvZiB0aGUgc3BlYworICAgICAgICBhbmQgYXZv
aWQgY29kZSBkdXBsaWNhdGlvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGFscmVhZHkgY292
ZXJlZCBieSBleGlzdGluZyB0ZXN0LgorCisgICAgICAgICogZG9tL1RyZWVXYWxrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VHJlZVdhbGtlcjo6dHJhdmVyc2VTaWJsaW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpUcmVlV2Fsa2VyOjpwcmV2aW91c1NpYmxpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJlZVdhbGtlcjo6bmV4dFNpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVdhbGtl
cjo6cHJldmlvdXNOb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vVHJlZVdhbGtlci5oOgor
CiAyMDE1LTA5LTIzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAg
IE1hYyBwcm9kdWN0aW9uIGJ1aWxkIGZpeCBhdHRlbXB0IGFmdGVyIHIxOTAxNTUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVdhbGtlci5jcHAKaW5kZXggODc3NDgyYWZmNDdhM2M1NDM0YWY3NTMyZTZkYzA1M2Qx
NTEzY2QxZC4uY2U3ZjFjMTg5OTQ0YmFlNmE5ODJmN2I0ZDJkYzQ2MTNiNmExYWUyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlV2Fsa2VyLmNwcApAQCAtMTMwLDI5ICsxMzAsMjQgQEAgTm9kZSogVHJlZVdh
bGtlcjo6bGFzdENoaWxkKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotTm9kZSogVHJlZVdh
bGtlcjo6cHJldmlvdXNTaWJsaW5nKCkKK3RlbXBsYXRlPFRyZWVXYWxrZXI6OlNpYmxpbmdUcmF2
ZXJzYWxUeXBlIHR5cGU+IE5vZGUqIFRyZWVXYWxrZXI6OnRyYXZlcnNlU2libGluZ3MoKQogewog
ICAgIFJlZlB0cjxOb2RlPiBub2RlID0gbV9jdXJyZW50OwogICAgIGlmIChub2RlID09IHJvb3Qo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgd2hpbGUgKDEpIHsKLSAgICAgICAgZm9y
IChSZWZQdHI8Tm9kZT4gc2libGluZyA9IG5vZGUtPnByZXZpb3VzU2libGluZygpOyBzaWJsaW5n
OyApIHsKKworICAgIGF1dG8gaXNOZXh0ID0gdHlwZSA9PSBTaWJsaW5nVHJhdmVyc2FsVHlwZTo6
TmV4dDsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBmb3IgKFJlZlB0cjxOb2RlPiBzaWJs
aW5nID0gaXNOZXh0ID8gbm9kZS0+bmV4dFNpYmxpbmcoKSA6IG5vZGUtPnByZXZpb3VzU2libGlu
ZygpOyBzaWJsaW5nOyApIHsKICAgICAgICAgICAgIHNob3J0IGFjY2VwdE5vZGVSZXN1bHQgPSBh
Y2NlcHROb2RlKHNpYmxpbmcuZ2V0KCkpOwotICAgICAgICAgICAgc3dpdGNoIChhY2NlcHROb2Rl
UmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBU
OgotICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBzaWJsaW5nLnJlbGVhc2UoKTsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fY3VycmVudC5nZXQoKTsKLSAgICAgICAgICAgICAg
ICBjYXNlIE5vZGVGaWx0ZXI6OkZJTFRFUl9TS0lQOgotICAgICAgICAgICAgICAgICAgICBpZiAo
c2libGluZy0+bGFzdENoaWxkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxpbmcg
PSBzaWJsaW5nLT5sYXN0Q2hpbGQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBz
aWJsaW5nOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBOb2RlRmlsdGVyOjpGSUxURVJfUkVKRUNUOgotICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGlmIChhY2NlcHROb2RlUmVzdWx0ID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9B
Q0NFUFQpIHsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBXVEY6Om1vdmUoc2libGluZyk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fY3VycmVudC5nZXQoKTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c1NpYmxpbmcoKTsKKyAgICAg
ICAgICAgIG5vZGUgPSBzaWJsaW5nOworICAgICAgICAgICAgc2libGluZyA9IGlzTmV4dCA/IHNp
YmxpbmctPmZpcnN0Q2hpbGQoKSA6IHNpYmxpbmctPmxhc3RDaGlsZCgpOworICAgICAgICAgICAg
aWYgKGFjY2VwdE5vZGVSZXN1bHQgPT0gTm9kZUZpbHRlcjo6RklMVEVSX1JFSkVDVCB8fCAhc2li
bGluZykKKyAgICAgICAgICAgICAgICBzaWJsaW5nID0gaXNOZXh0ID8gbm9kZS0+bmV4dFNpYmxp
bmcoKSA6IG5vZGUtPnByZXZpb3VzU2libGluZygpOwogICAgICAgICB9CiAgICAgICAgIG5vZGUg
PSBub2RlLT5wYXJlbnROb2RlKCk7CiAgICAgICAgIGlmICghbm9kZSB8fCBub2RlID09IHJvb3Qo
KSkKQEAgLTE2MywzNyArMTU4LDE0IEBAIE5vZGUqIFRyZWVXYWxrZXI6OnByZXZpb3VzU2libGlu
ZygpCiAgICAgfQogfQogCitOb2RlKiBUcmVlV2Fsa2VyOjpwcmV2aW91c1NpYmxpbmcoKQorewor
ICAgIHJldHVybiB0cmF2ZXJzZVNpYmxpbmdzPFNpYmxpbmdUcmF2ZXJzYWxUeXBlOjpQcmV2aW91
cz4oKTsKK30KKwogTm9kZSogVHJlZVdhbGtlcjo6bmV4dFNpYmxpbmcoKQogewotICAgIFJlZlB0
cjxOb2RlPiBub2RlID0gbV9jdXJyZW50OwotICAgIGlmIChub2RlID09IHJvb3QoKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgd2hpbGUgKDEpIHsKLSAgICAgICAgZm9yIChSZWZQdHI8
Tm9kZT4gc2libGluZyA9IG5vZGUtPm5leHRTaWJsaW5nKCk7IHNpYmxpbmc7ICkgewotICAgICAg
ICAgICAgc2hvcnQgYWNjZXB0Tm9kZVJlc3VsdCA9IGFjY2VwdE5vZGUoc2libGluZy5nZXQoKSk7
Ci0gICAgICAgICAgICBzd2l0Y2ggKGFjY2VwdE5vZGVSZXN1bHQpIHsKLSAgICAgICAgICAgICAg
ICBjYXNlIE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQ6Ci0gICAgICAgICAgICAgICAgICAgIG1f
Y3VycmVudCA9IHNpYmxpbmcucmVsZWFzZSgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bV9jdXJyZW50LmdldCgpOwotICAgICAgICAgICAgICAgIGNhc2UgTm9kZUZpbHRlcjo6RklMVEVS
X1NLSVA6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nLT5maXJzdENoaWxkKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxpbmcgPSBzaWJsaW5nLT5maXJzdENoaWxkKCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gc2libGluZzsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgTm9kZUZpbHRlcjo6RklMVEVSX1JF
SkVDVDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBzaWJsaW5nID0gc2libGluZy0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgfQotICAgICAg
ICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwotICAgICAgICBpZiAoIW5vZGUgfHwgbm9kZSA9
PSByb290KCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgc2hvcnQgYWNj
ZXB0Tm9kZVJlc3VsdCA9IGFjY2VwdE5vZGUobm9kZS5nZXQoKSk7Ci0gICAgICAgIGlmIChhY2Nl
cHROb2RlUmVzdWx0ID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQpCi0gICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ3M8U2libGlu
Z1RyYXZlcnNhbFR5cGU6Ok5leHQ+KCk7CiB9CiAKIE5vZGUqIFRyZWVXYWxrZXI6OnByZXZpb3Vz
Tm9kZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIuaAppbmRleCAyMjhmMjNkNDc0NmEyMTU5YmI1MGJm
NmFhNjI3ODhiNzMzNjRmYjlmLi43OTVlZWQxMzNhYzQyMDJiZWRhMzk2ZjgxZDQ2YzNjZDk5NTc3
YzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmgKQEAgLTU1LDYgKzU1LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgVHJlZVdhbGtlcihQYXNzUmVmUHRy
PE5vZGU+LCB1bnNpZ25lZCBsb25nIHdoYXRUb1Nob3csIFJlZlB0cjxOb2RlRmlsdGVyPiYmKTsK
KyAgICAgICAgZW51bSBjbGFzcyBTaWJsaW5nVHJhdmVyc2FsVHlwZSB7IFByZXZpb3VzLCBOZXh0
IH07CisgICAgICAgIHRlbXBsYXRlPFNpYmxpbmdUcmF2ZXJzYWxUeXBlPiBOb2RlKiB0cmF2ZXJz
ZVNpYmxpbmdzKCk7CiAgICAgICAgIAogICAgICAgICBOb2RlKiBzZXRDdXJyZW50KFBhc3NSZWZQ
dHI8Tm9kZT4pOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBiMzM2ODk2NTE0
ZDAxZjVjYzlmZDcwMzI1OGVhYzg0MDBiZjgzYmY5Li41OTQxM2IyMTM2ZGE1Mjg1MzI2ZTg4Yzc5
M2NkMDYwN2UyNWQ4NmI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsNSAr
MSwxNiBAQAogMjAxNS0wOS0yMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisg
ICAgICAgIFRyZWVXYWxrZXIucHJldmlvdXNTaWJsaW5nKCkgIC8gbmV4dFNpYmxpbmcoKSBkb2Vz
IG5vdCBiZWhhdmUgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk0OTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZWJhc2VsaW5lIGV4aXN0aW5nIFczQyBE
T00gdGVzdCBub3cgdGhhdCBtb3JlIGNoZWNrcyBhcmUgcGFzc2luZy4KKworICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL1RyZWVXYWxrZXItZXhwZWN0ZWQudHh0Ogor
CisyMDE1LTA5LTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAg
UmFuZ2UncyBzZXRTdGFydEJlZm9yZSgpIC8gc2V0U3RhcnRBZnRlcigpIC8gc2V0RW5kQmVmb3Jl
KCkgLyBzZXRFbmRBZnRlcigpIGRvIG5vdCBtYXRjaCB0aGUgc3BlY2lmaWNhdGlvbgogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NDkwCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3Ry
YXZlcnNhbC9UcmVlV2Fsa2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fsa2VyLWV4cGVjdGVkLnR4
dAppbmRleCA2NTU3ODRkYjViYjI4YjgxMTA3MjNmOWM1NDNkYTZmOWJlZWM5MDc4Li5mMjZhYWU4
NGUzMTRhZGQ3MjZmMmQ0NmZjYzQwMWVjMjQxZGQ2MDljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvVHJlZVdhbGtl
ci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9kb20vdHJhdmVyc2FsL1RyZWVXYWxrZXItZXhwZWN0ZWQudHh0CkBAIC0xNDYsNyAr
MTQ2LDcgQEAgUEFTUyBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGRvY3VtZW50LCAwLCAoZnVu
Y3Rpb24obm9kZSkgeyByZXR1cm4gbm9kZS5ub2RlTmEKIFBBU1MgZG9jdW1lbnQuY3JlYXRlVHJl
ZVdhbGtlcihkb2N1bWVudCwgMHhGRkZGRkZGRiwgbnVsbCkgCiBQQVNTIGRvY3VtZW50LmNyZWF0
ZVRyZWVXYWxrZXIoZG9jdW1lbnQsIDB4RkZGRkZGRkYsIChmdW5jdGlvbihub2RlKSB7IHJldHVy
biB0cnVlIH0pKSAKIFBBU1MgZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihkb2N1bWVudCwgMHhG
RkZGRkZGRiwgKGZ1bmN0aW9uKG5vZGUpIHsgcmV0dXJuIGZhbHNlIH0pKSAKLUZBSUwgZG9jdW1l
bnQuY3JlYXRlVHJlZVdhbGtlcihkb2N1bWVudCwgMHhGRkZGRkZGRiwgKGZ1bmN0aW9uKG5vZGUp
IHsgcmV0dXJuIG5vZGUubm9kZU5hbWVbMF0gPT0gJyMnIH0pKSBhc3NlcnRfZXF1YWxzOiAubmV4
dFNpYmxpbmcoKSBleHBlY3RlZCBUZXh0IG5vZGUgIlRyZWVXYWxrZXIgdGVzdHMiIGJ1dCBnb3Qg
bnVsbAorUEFTUyBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGRvY3VtZW50LCAweEZGRkZGRkZG
LCAoZnVuY3Rpb24obm9kZSkgeyByZXR1cm4gbm9kZS5ub2RlTmFtZVswXSA9PSAnIycgfSkpIAog
UEFTUyBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGRvY3VtZW50LCBOb2RlRmlsdGVyLlNIT1df
RUxFTUVOVCwgbnVsbCkgCiBQQVNTIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZG9jdW1lbnQs
IE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCAoZnVuY3Rpb24obm9kZSkgeyByZXR1cm4gdHJ1ZSB9
KSkgCiBQQVNTIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZG9jdW1lbnQsIE5vZGVGaWx0ZXIu
U0hPV19FTEVNRU5ULCAoZnVuY3Rpb24obm9kZSkgeyByZXR1cm4gZmFsc2UgfSkpIApAQCAtMTY2
LDcgKzE2Niw3IEBAIFBBU1MgZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihkZXRhY2hlZERpdiwg
MCwgKGZ1bmN0aW9uKG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kCiBQQVNTIGRvY3VtZW50LmNyZWF0
ZVRyZWVXYWxrZXIoZGV0YWNoZWREaXYsIDB4RkZGRkZGRkYsIG51bGwpIAogUEFTUyBkb2N1bWVu
dC5jcmVhdGVUcmVlV2Fsa2VyKGRldGFjaGVkRGl2LCAweEZGRkZGRkZGLCAoZnVuY3Rpb24obm9k
ZSkgeyByZXR1cm4gdHJ1ZSB9KSkgCiBQQVNTIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZGV0
YWNoZWREaXYsIDB4RkZGRkZGRkYsIChmdW5jdGlvbihub2RlKSB7IHJldHVybiBmYWxzZSB9KSkg
Ci1GQUlMIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZGV0YWNoZWREaXYsIDB4RkZGRkZGRkYs
IChmdW5jdGlvbihub2RlKSB7IHJldHVybiBub2RlLm5vZGVOYW1lWzBdID09ICcjJyB9KSkgYXNz
ZXJ0X2VxdWFsczogLm5leHRTaWJsaW5nKCkgZXhwZWN0ZWQgVGV4dCBub2RlICJXeHl6YWJjZCIg
YnV0IGdvdCBudWxsCitQQVNTIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZGV0YWNoZWREaXYs
IDB4RkZGRkZGRkYsIChmdW5jdGlvbihub2RlKSB7IHJldHVybiBub2RlLm5vZGVOYW1lWzBdID09
ICcjJyB9KSkgCiBQQVNTIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZGV0YWNoZWREaXYsIE5v
ZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCBudWxsKSAKIFBBU1MgZG9jdW1lbnQuY3JlYXRlVHJlZVdh
bGtlcihkZXRhY2hlZERpdiwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIChmdW5jdGlvbihub2Rl
KSB7IHJldHVybiB0cnVlIH0pKSAKIFBBU1MgZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihkZXRh
Y2hlZERpdiwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIChmdW5jdGlvbihub2RlKSB7IHJldHVy
biBmYWxzZSB9KSkgCkBAIC0xODYsNyArMTg2LDcgQEAgUEFTUyBkb2N1bWVudC5jcmVhdGVUcmVl
V2Fsa2VyKGZvcmVpZ25Eb2MsIDAsIChmdW5jdGlvbihub2RlKSB7IHJldHVybiBub2RlLm5vZGUK
IFBBU1MgZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihmb3JlaWduRG9jLCAweEZGRkZGRkZGLCBu
dWxsKSAKIFBBU1MgZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihmb3JlaWduRG9jLCAweEZGRkZG
RkZGLCAoZnVuY3Rpb24obm9kZSkgeyByZXR1cm4gdHJ1ZSB9KSkgCiBQQVNTIGRvY3VtZW50LmNy
ZWF0ZVRyZWVXYWxrZXIoZm9yZWlnbkRvYywgMHhGRkZGRkZGRiwgKGZ1bmN0aW9uKG5vZGUpIHsg
cmV0dXJuIGZhbHNlIH0pKSAKLUZBSUwgZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihmb3JlaWdu
RG9jLCAweEZGRkZGRkZGLCAoZnVuY3Rpb24obm9kZSkgeyByZXR1cm4gbm9kZS5ub2RlTmFtZVsw
XSA9PSAnIycgfSkpIGFzc2VydF9lcXVhbHM6IC5uZXh0U2libGluZygpIGV4cGVjdGVkIFRleHQg
bm9kZSAiRWZnaGlqa2wiIGJ1dCBnb3QgQ29tbWVudCBub2RlIDwhLS0iQ29tbWVudGVyIiBhbmQg
ImNvbW1lbnRhdG9yIiBtZWFuIGRpZmZlcmVudCB0aGluZ3MuICBJJ3YuLi4tLT4KK1BBU1MgZG9j
dW1lbnQuY3JlYXRlVHJlZVdhbGtlcihmb3JlaWduRG9jLCAweEZGRkZGRkZGLCAoZnVuY3Rpb24o
bm9kZSkgeyByZXR1cm4gbm9kZS5ub2RlTmFtZVswXSA9PSAnIycgfSkpIAogUEFTUyBkb2N1bWVu
dC5jcmVhdGVUcmVlV2Fsa2VyKGZvcmVpZ25Eb2MsIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCBu
dWxsKSAKIFBBU1MgZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihmb3JlaWduRG9jLCBOb2RlRmls
dGVyLlNIT1dfRUxFTUVOVCwgKGZ1bmN0aW9uKG5vZGUpIHsgcmV0dXJuIHRydWUgfSkpIAogUEFT
UyBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGZvcmVpZ25Eb2MsIE5vZGVGaWx0ZXIuU0hPV19F
TEVNRU5ULCAoZnVuY3Rpb24obm9kZSkgeyByZXR1cm4gZmFsc2UgfSkpIApAQCAtMjI2LDcgKzIy
Niw3IEBAIFBBU1MgZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcih4bWxEb2MsIDAsIChmdW5jdGlv
bihub2RlKSB7IHJldHVybiBub2RlLm5vZGVOYW1lCiBQQVNTIGRvY3VtZW50LmNyZWF0ZVRyZWVX
YWxrZXIoeG1sRG9jLCAweEZGRkZGRkZGLCBudWxsKSAKIFBBU1MgZG9jdW1lbnQuY3JlYXRlVHJl
ZVdhbGtlcih4bWxEb2MsIDB4RkZGRkZGRkYsIChmdW5jdGlvbihub2RlKSB7IHJldHVybiB0cnVl
IH0pKSAKIFBBU1MgZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcih4bWxEb2MsIDB4RkZGRkZGRkYs
IChmdW5jdGlvbihub2RlKSB7IHJldHVybiBmYWxzZSB9KSkgCi1GQUlMIGRvY3VtZW50LmNyZWF0
ZVRyZWVXYWxrZXIoeG1sRG9jLCAweEZGRkZGRkZGLCAoZnVuY3Rpb24obm9kZSkgeyByZXR1cm4g
bm9kZS5ub2RlTmFtZVswXSA9PSAnIycgfSkpIGFzc2VydF9lcXVhbHM6IC5uZXh0U2libGluZygp
IGV4cGVjdGVkIFRleHQgbm9kZSAiZG8gcmUgbWkgZmEgc28gbGEgdGkiIGJ1dCBnb3QgQ29tbWVu
dCBub2RlIDwhLS1JIG1hbGljaW91c2x5IGNyZWF0ZWQgYSBjb21tZW50IHRoYXQgd2lsbCBicmVh
ayBpbmNhdXRpb3UuLi4tLT4KK1BBU1MgZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcih4bWxEb2Ms
IDB4RkZGRkZGRkYsIChmdW5jdGlvbihub2RlKSB7IHJldHVybiBub2RlLm5vZGVOYW1lWzBdID09
ICcjJyB9KSkgCiBQQVNTIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoeG1sRG9jLCBOb2RlRmls
dGVyLlNIT1dfRUxFTUVOVCwgbnVsbCkgCiBQQVNTIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIo
eG1sRG9jLCBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwgKGZ1bmN0aW9uKG5vZGUpIHsgcmV0dXJu
IHRydWUgfSkpIAogUEFTUyBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKHhtbERvYywgTm9kZUZp
bHRlci5TSE9XX0VMRU1FTlQsIChmdW5jdGlvbihub2RlKSB7IHJldHVybiBmYWxzZSB9KSkgCkBA
IC01MDYsOCArNTA2LDcgQEAgUEFTUyBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKHRlc3REaXYs
IDAsIChmdW5jdGlvbihub2RlKSB7IHJldHVybiBub2RlLm5vZGVOYW0KIFBBU1MgZG9jdW1lbnQu
Y3JlYXRlVHJlZVdhbGtlcih0ZXN0RGl2LCAweEZGRkZGRkZGLCBudWxsKSAKIFBBU1MgZG9jdW1l
bnQuY3JlYXRlVHJlZVdhbGtlcih0ZXN0RGl2LCAweEZGRkZGRkZGLCAoZnVuY3Rpb24obm9kZSkg
eyByZXR1cm4gdHJ1ZSB9KSkgCiBQQVNTIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIodGVzdERp
diwgMHhGRkZGRkZGRiwgKGZ1bmN0aW9uKG5vZGUpIHsgcmV0dXJuIGZhbHNlIH0pKSAKLUZBSUwg
ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcih0ZXN0RGl2LCAweEZGRkZGRkZGLCAoZnVuY3Rpb24o
bm9kZSkgeyByZXR1cm4gbm9kZS5ub2RlTmFtZVswXSA9PSAnIycgfSkpIGFzc2VydF9lcXVhbHM6
IC5uZXh0U2libGluZygpIGV4cGVjdGVkIFRleHQgbm9kZSAiSWprbG1ub3AKLSIgYnV0IGdvdCBD
b21tZW50IG5vZGUgPCEtLUFscGhhYmV0IHNvdXA/LS0+CitQQVNTIGRvY3VtZW50LmNyZWF0ZVRy
ZWVXYWxrZXIodGVzdERpdiwgMHhGRkZGRkZGRiwgKGZ1bmN0aW9uKG5vZGUpIHsgcmV0dXJuIG5v
ZGUubm9kZU5hbWVbMF0gPT0gJyMnIH0pKSAKIFBBU1MgZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtl
cih0ZXN0RGl2LCBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwgbnVsbCkgCiBQQVNTIGRvY3VtZW50
LmNyZWF0ZVRyZWVXYWxrZXIodGVzdERpdiwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIChmdW5j
dGlvbihub2RlKSB7IHJldHVybiB0cnVlIH0pKSAKIFBBU1MgZG9jdW1lbnQuY3JlYXRlVHJlZVdh
bGtlcih0ZXN0RGl2LCBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwgKGZ1bmN0aW9uKG5vZGUpIHsg
cmV0dXJuIGZhbHNlIH0pKSAK
</data>

          </attachment>
      

    </bug>

</bugzilla>