<?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>154769</bug_id>
          
          <creation_ts>2016-02-26 19:18:57 -0800</creation_ts>
          <short_desc>Contents inside a shadow host with a negative tabindex should not be tab focusable</short_desc>
          <delta_ts>2016-03-01 21:31:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>151379</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1168785</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-26 19:18:57 -0800</bug_when>
    <thetext>We shouldn&apos;t tab-focus a focusable element inside a shadow host with a negative tab index
per discussion on https://github.com/w3c/webcomponents/issues/399.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168790</commentid>
    <comment_count>1</comment_count>
      <attachid>272393</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-26 19:45:43 -0800</bug_when>
    <thetext>Created attachment 272393
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168795</commentid>
    <comment_count>2</comment_count>
      <attachid>272393</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-26 20:22:41 -0800</bug_when>
    <thetext>Comment on attachment 272393
Fixes the bug

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

&gt; LayoutTests/fast/shadow-dom/negative-tabindex-on-shadow-host-expected.txt:7
&gt; +2. Shadow host with a positive tabindex

WTF is this. There&apos;s some weird bug somewhere...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169280</commentid>
    <comment_count>3</comment_count>
      <attachid>272521</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-29 14:58:09 -0800</bug_when>
    <thetext>Created attachment 272521
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169281</commentid>
    <comment_count>4</comment_count>
      <attachid>272522</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-29 14:59:48 -0800</bug_when>
    <thetext>Created attachment 272522
Minor cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169547</commentid>
    <comment_count>5</comment_count>
      <attachid>272522</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-03-01 13:28:10 -0800</bug_when>
    <thetext>Comment on attachment 272522
Minor cleanup

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

&gt; Source/WebCore/dom/Element.cpp:222
&gt; +bool Element::tabIndexSetExplicitly() const
&gt; +{
&gt; +    return hasRareData() &amp;&amp; elementRareData()-&gt;tabIndexSetExplicitly();
&gt; +}
&gt; +
&gt;  bool Element::supportsFocus() const
&gt;  {
&gt;      return hasRareData() &amp;&amp; elementRareData()-&gt;tabIndexSetExplicitly();

supportsFocus() should probably just call tabIndexSetExplicitly()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169717</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-01 21:29:48 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 272522 [details]
&gt; Minor cleanup
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=272522&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Element.cpp:222
&gt; &gt; +bool Element::tabIndexSetExplicitly() const
&gt; &gt; +{
&gt; &gt; +    return hasRareData() &amp;&amp; elementRareData()-&gt;tabIndexSetExplicitly();
&gt; &gt; +}
&gt; &gt; +
&gt; &gt;  bool Element::supportsFocus() const
&gt; &gt;  {
&gt; &gt;      return hasRareData() &amp;&amp; elementRareData()-&gt;tabIndexSetExplicitly();
&gt; 
&gt; supportsFocus() should probably just call tabIndexSetExplicitly()

Done that.  Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169719</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-01 21:31:17 -0800</bug_when>
    <thetext>Committed r197439: &lt;http://trac.webkit.org/changeset/197439&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272393</attachid>
            <date>2016-02-26 19:45:43 -0800</date>
            <delta_ts>2016-02-29 14:58:06 -0800</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-154769-20160226194526.patch</filename>
            <type>text/plain</type>
            <size>14355</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzIyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE2LTAyLTI2ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIENvbnRlbnRzIGluc2lkZSBhIHNo
YWRvdyBob3N0IHdpdGggYSBuZWdhdGl2ZSB0YWJpbmRleCBzaG91bGQgbm90IGJlIHRhYiBmb2N1
c2FibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NDc2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENv
bnRlbnRzIGluc2lkZSBhIHNoYWRvdyBob3N0IHdpdGggYSBuZWdhdGl2ZSB0YWJpbmRleCBjb250
ZW50IGF0dHJpYnV0ZSBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluCisgICAgICAgIHRoZSBzZXF1
ZW50aWFsIGZvY3VzIG5hdmlnYXRpb24gb3JkZXIgc3MgZGlzY3Vzc2VkIG9uIGh0dHBzOi8vZ2l0
aHViLmNvbS93M2Mvd2ViY29tcG9uZW50cy9pc3N1ZXMvMzk5LgorCisgICAgICAgIFRlc3Q6IGZh
c3Qvc2hhZG93LWRvbS9uZWdhdGl2ZS10YWJpbmRleC1vbi1zaGFkb3ctaG9zdC5odG1sCisKKyAg
ICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp0YWJJ
bmRleFNldEV4cGxpY2l0bHkpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAg
ICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNoYWRv
d0FkanVzdGVkVGFiSW5kZXgpOiBSZW5hbWVkIGZyb20gYWRqdXN0ZWRUYWJJbmRleC4gUmV0dXJu
IDAgd2hlbiB0YWJpbmRleCBjb250ZW50IGF0dHJpYnV0ZQorICAgICAgICBpcyBub3QgZXhwbGlj
aXRseSBzZXQgc2luY2UgZWxlbWVudC50YWJJbmRleCgpIHdvdWxkIHJldHVybiAtMSBmb3IgSFRN
TCBlbGVtZW50cyBpbiBzdWNoIGNhc2UuCisgICAgICAgIChXZWJDb3JlOjppc0ZvY3VzYWJsZU9y
SGFzU2hhZG93VHJlZVdpdGhvdXRDdXN0b21Mb2dpYyk6IFJlbmFtZWQgZnJvbSBzaG91bGRWaXNp
dC4KKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6ZmluZEVsZW1lbnRXaXRoRXhh
Y3RUYWJJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0RWxlbWVudFdpdGhHcmVhdGVyVGFi
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNFbGVtZW50V2l0aExvd2VyVGFiSW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpuZXh0Rm9jdXNhYmxlRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OnByZXZpb3VzRm9jdXNh
YmxlRWxlbWVudCk6CisKIDIwMTYtMDItMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgQVBJIHRlc3QgY292ZXJhZ2UgZm9yIHBhcnNlSFRNTEludGVnZXIg
LyBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE5NzA0NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjEyLDYgKzIxMiwxMSBAQCB2b2lkIEVsZW1lbnQ6OnNldFRhYkluZGV4
RXhwbGljaXRseShzaG9yCiAgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0VGFiSW5kZXhF
eHBsaWNpdGx5KHRhYkluZGV4KTsKIH0KIAorYm9vbCBFbGVtZW50Ojp0YWJJbmRleFNldEV4cGxp
Y2l0bHkoKSBjb25zdAoreworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJl
RGF0YSgpLT50YWJJbmRleFNldEV4cGxpY2l0bHkoKTsKK30KKwogYm9vbCBFbGVtZW50OjpzdXBw
b3J0c0ZvY3VzKCkgY29uc3QKIHsKICAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiBlbGVtZW50
UmFyZURhdGEoKS0+dGFiSW5kZXhTZXRFeHBsaWNpdGx5KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgJKHJldmlzaW9uIDE5NzA0NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2Niw2ICsyNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldEhvdmVyZWQoYm9vbCBmbGFnID0gdHJ1ZSk7CiAgICAgdmlydHVhbCB2b2lkIHNldEZvY3Vz
KGJvb2wgZmxhZyk7CiAKKyAgICBib29sIHRhYkluZGV4U2V0RXhwbGljaXRseSgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IGlzRm9jdXNhYmxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzS2V5Ym9hcmRGb2N1c2Fi
bGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1
c0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXND
b250cm9sbGVyLmNwcAkocmV2aXNpb24gMTk3MDU1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9G
b2N1c0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsMTQgKzIxNCwxNiBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaXNGb2N1c2FibGVTaGFkb3dIb3N0CiAgICAgcmV0dXJuIGlzPEVs
ZW1lbnQ+KG5vZGUpICYmIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpLmlzS2V5Ym9hcmRGb2N1c2Fi
bGUoJmV2ZW50KSAmJiBkb3duY2FzdDxFbGVtZW50Pihub2RlKS5zaGFkb3dSb290KCkgJiYgIWhh
c0N1c3RvbUZvY3VzTG9naWMoZG93bmNhc3Q8RWxlbWVudD4obm9kZSkpOwogfQogCi1zdGF0aWMg
aW5saW5lIGludCBhZGp1c3RlZFRhYkluZGV4KE5vZGUmIG5vZGUsIEtleWJvYXJkRXZlbnQmIGV2
ZW50KQorc3RhdGljIGlubGluZSBpbnQgc2hhZG93QWRqdXN0ZWRUYWJJbmRleChFbGVtZW50JiBl
bGVtZW50LCBLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKLSAgICBpZiAoIWlzPEVsZW1lbnQ+KG5v
ZGUpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gaXNOb25Gb2N1c2FibGVTaGFkb3dI
b3N0KGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpLCBldmVudCkgPyAwIDogZG93bmNhc3Q8RWxlbWVu
dD4obm9kZSkudGFiSW5kZXgoKTsKKyAgICBpZiAoaXNOb25Gb2N1c2FibGVTaGFkb3dIb3N0KGVs
ZW1lbnQsIGV2ZW50KSkgeworICAgICAgICBpZiAoIWVsZW1lbnQudGFiSW5kZXhTZXRFeHBsaWNp
dGx5KCkpCisgICAgICAgICAgICByZXR1cm4gMDsgLy8gVHJlYXQgYSBzaGFkb3cgaG9zdCB3aXRo
b3V0IHRhYmluZGV4IGlmIGl0IGhhcyB0YWJpbmRleD0wIGV2ZW4gdGhvdWdoIEhUTUxFbGVtZW50
Ojp0YWJJbmRleCByZXR1cm5zIC0xIG9uIHN1Y2ggYW4gZWxlbWVudC4KKyAgICB9CisgICAgcmV0
dXJuIGVsZW1lbnQudGFiSW5kZXgoKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHNob3VsZFZp
c2l0KEVsZW1lbnQmIGVsZW1lbnQsIEtleWJvYXJkRXZlbnQmIGV2ZW50KQorc3RhdGljIGlubGlu
ZSBib29sIGlzRm9jdXNhYmxlT3JIYXNTaGFkb3dUcmVlV2l0aG91dEN1c3RvbUxvZ2ljKEVsZW1l
bnQmIGVsZW1lbnQsIEtleWJvYXJkRXZlbnQmIGV2ZW50KQogewogICAgIHJldHVybiBlbGVtZW50
LmlzS2V5Ym9hcmRGb2N1c2FibGUoJmV2ZW50KSB8fCBpc05vbkZvY3VzYWJsZVNoYWRvd0hvc3Qo
ZWxlbWVudCwgZXZlbnQpOwogfQpAQCAtNDc5LDcgKzQ4MSw3IEBAIEVsZW1lbnQqIEZvY3VzQ29u
dHJvbGxlcjo6ZmluZEVsZW1lbnRXaXQKICAgICAgICAgaWYgKCFpczxFbGVtZW50Pigqbm9kZSkp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgRWxlbWVudCYgZWxlbWVudCA9IGRvd25j
YXN0PEVsZW1lbnQ+KCpub2RlKTsKLSAgICAgICAgaWYgKHNob3VsZFZpc2l0KGVsZW1lbnQsICpl
dmVudCkgJiYgYWRqdXN0ZWRUYWJJbmRleChlbGVtZW50LCAqZXZlbnQpID09IHRhYkluZGV4KQor
ICAgICAgICBpZiAoaXNGb2N1c2FibGVPckhhc1NoYWRvd1RyZWVXaXRob3V0Q3VzdG9tTG9naWMo
ZWxlbWVudCwgKmV2ZW50KSAmJiBzaGFkb3dBZGp1c3RlZFRhYkluZGV4KGVsZW1lbnQsICpldmVu
dCkgPT0gdGFiSW5kZXgpCiAgICAgICAgICAgICByZXR1cm4gJmVsZW1lbnQ7CiAgICAgfQogICAg
IHJldHVybiBudWxscHRyOwpAQCAtNDk0LDcgKzQ5Niw3IEBAIHN0YXRpYyBFbGVtZW50KiBuZXh0
RWxlbWVudFdpdGhHcmVhdGVyVGEKICAgICAgICAgaWYgKCFpczxFbGVtZW50Pigqbm9kZSkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgRWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0
PEVsZW1lbnQ+KCpub2RlKTsKLSAgICAgICAgaWYgKHNob3VsZFZpc2l0KGVsZW1lbnQsIGV2ZW50
KSAmJiBlbGVtZW50LnRhYkluZGV4KCkgPiB0YWJJbmRleCAmJiBlbGVtZW50LnRhYkluZGV4KCkg
PCB3aW5uaW5nVGFiSW5kZXgpIHsKKyAgICAgICAgaWYgKGlzRm9jdXNhYmxlT3JIYXNTaGFkb3dU
cmVlV2l0aG91dEN1c3RvbUxvZ2ljKGVsZW1lbnQsIGV2ZW50KSAmJiBlbGVtZW50LnRhYkluZGV4
KCkgPiB0YWJJbmRleCAmJiBlbGVtZW50LnRhYkluZGV4KCkgPCB3aW5uaW5nVGFiSW5kZXgpIHsK
ICAgICAgICAgICAgIHdpbm5lciA9ICZlbGVtZW50OwogICAgICAgICAgICAgd2lubmluZ1RhYklu
ZGV4ID0gZWxlbWVudC50YWJJbmRleCgpOwogICAgICAgICB9CkBAIC01MTIsOCArNTE0LDggQEAg
c3RhdGljIEVsZW1lbnQqIHByZXZpb3VzRWxlbWVudFdpdGhMb3dlcgogICAgICAgICBpZiAoIWlz
PEVsZW1lbnQ+KCpub2RlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBFbGVtZW50
JiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpOwotICAgICAgICBpbnQgY3VycmVu
dFRhYkluZGV4ID0gYWRqdXN0ZWRUYWJJbmRleChlbGVtZW50LCBldmVudCk7Ci0gICAgICAgIGlm
ICgoc2hvdWxkVmlzaXQoZWxlbWVudCwgZXZlbnQpIHx8IGlzTm9uRm9jdXNhYmxlU2hhZG93SG9z
dChlbGVtZW50LCBldmVudCkpICYmIGN1cnJlbnRUYWJJbmRleCA8IHRhYkluZGV4ICYmIGN1cnJl
bnRUYWJJbmRleCA+IHdpbm5pbmdUYWJJbmRleCkgeworICAgICAgICBpbnQgY3VycmVudFRhYklu
ZGV4ID0gc2hhZG93QWRqdXN0ZWRUYWJJbmRleChlbGVtZW50LCBldmVudCk7CisgICAgICAgIGlm
ICgoaXNGb2N1c2FibGVPckhhc1NoYWRvd1RyZWVXaXRob3V0Q3VzdG9tTG9naWMoZWxlbWVudCwg
ZXZlbnQpIHx8IGlzTm9uRm9jdXNhYmxlU2hhZG93SG9zdChlbGVtZW50LCBldmVudCkpICYmIGN1
cnJlbnRUYWJJbmRleCA8IHRhYkluZGV4ICYmIGN1cnJlbnRUYWJJbmRleCA+IHdpbm5pbmdUYWJJ
bmRleCkgewogICAgICAgICAgICAgd2lubmVyID0gJmVsZW1lbnQ7CiAgICAgICAgICAgICB3aW5u
aW5nVGFiSW5kZXggPSBjdXJyZW50VGFiSW5kZXg7CiAgICAgICAgIH0KQEAgLTUzNSwzMiArNTM3
LDM0IEBAIEVsZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6cHJldmlvdXNGb2N1c2EKIAogRWxlbWVu
dCogRm9jdXNDb250cm9sbGVyOjpuZXh0Rm9jdXNhYmxlRWxlbWVudChjb25zdCBGb2N1c05hdmln
YXRpb25TY29wZSYgc2NvcGUsIE5vZGUqIHN0YXJ0LCBLZXlib2FyZEV2ZW50KiBldmVudCkKIHsK
KyAgICBpbnQgc3RhcnRUYWJJbmRleCA9IDA7CisgICAgaWYgKHN0YXJ0ICYmIGlzPEVsZW1lbnQ+
KCpzdGFydCkpCisgICAgICAgIHN0YXJ0VGFiSW5kZXggPSBzaGFkb3dBZGp1c3RlZFRhYkluZGV4
KGRvd25jYXN0PEVsZW1lbnQ+KCpzdGFydCksICpldmVudCk7CisKICAgICBpZiAoc3RhcnQpIHsK
LSAgICAgICAgaW50IHRhYkluZGV4ID0gYWRqdXN0ZWRUYWJJbmRleCgqc3RhcnQsICpldmVudCk7
CiAgICAgICAgIC8vIElmIGEgbm9kZSBpcyBleGNsdWRlZCBmcm9tIHRoZSBub3JtYWwgdGFiYmlu
ZyBjeWNsZSwgdGhlIG5leHQgZm9jdXNhYmxlIG5vZGUgaXMgZGV0ZXJtaW5lZCBieSB0cmVlIG9y
ZGVyCi0gICAgICAgIGlmICh0YWJJbmRleCA8IDApIHsKKyAgICAgICAgaWYgKHN0YXJ0VGFiSW5k
ZXggPCAwKSB7CiAgICAgICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBzY29wZS5uZXh0SW5TY29w
ZShzdGFydCk7IG5vZGU7IG5vZGUgPSBzY29wZS5uZXh0SW5TY29wZShub2RlKSkgewogICAgICAg
ICAgICAgICAgIGlmICghaXM8RWxlbWVudD4oKm5vZGUpKQogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgICAgICBFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8RWxl
bWVudD4oKm5vZGUpOwotICAgICAgICAgICAgICAgIGlmIChzaG91bGRWaXNpdChlbGVtZW50LCAq
ZXZlbnQpICYmIGFkanVzdGVkVGFiSW5kZXgoZWxlbWVudCwgKmV2ZW50KSA+PSAwKQorICAgICAg
ICAgICAgICAgIGlmIChpc0ZvY3VzYWJsZU9ySGFzU2hhZG93VHJlZVdpdGhvdXRDdXN0b21Mb2dp
YyhlbGVtZW50LCAqZXZlbnQpICYmIHNoYWRvd0FkanVzdGVkVGFiSW5kZXgoZWxlbWVudCwgKmV2
ZW50KSA+PSAwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gJmVsZW1lbnQ7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICAvLyBGaXJzdCB0cnkgdG8gZmluZCBhIG5vZGUg
d2l0aCB0aGUgc2FtZSB0YWJpbmRleCBhcyBzdGFydCB0aGF0IGNvbWVzIGFmdGVyIHN0YXJ0IGlu
IHRoZSBzY29wZS4KLSAgICAgICAgaWYgKEVsZW1lbnQqIHdpbm5lciA9IGZpbmRFbGVtZW50V2l0
aEV4YWN0VGFiSW5kZXgoc2NvcGUsIHNjb3BlLm5leHRJblNjb3BlKHN0YXJ0KSwgdGFiSW5kZXgs
IGV2ZW50LCBGb2N1c0RpcmVjdGlvbkZvcndhcmQpKQorICAgICAgICBpZiAoRWxlbWVudCogd2lu
bmVyID0gZmluZEVsZW1lbnRXaXRoRXhhY3RUYWJJbmRleChzY29wZSwgc2NvcGUubmV4dEluU2Nv
cGUoc3RhcnQpLCBzdGFydFRhYkluZGV4LCBldmVudCwgRm9jdXNEaXJlY3Rpb25Gb3J3YXJkKSkK
ICAgICAgICAgICAgIHJldHVybiB3aW5uZXI7CiAKLSAgICAgICAgaWYgKCF0YWJJbmRleCkKLSAg
ICAgICAgICAgIC8vIFdlJ3ZlIHJlYWNoZWQgdGhlIGxhc3Qgbm9kZSBpbiB0aGUgZG9jdW1lbnQg
d2l0aCBhIHRhYmluZGV4IG9mIDAuIFRoaXMgaXMgdGhlIGVuZCBvZiB0aGUgdGFiYmluZyBvcmRl
ci4KLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoIXN0YXJ0VGFiSW5kZXgpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8gV2UndmUgcmVhY2hlZCB0aGUgbGFzdCBub2Rl
IGluIHRoZSBkb2N1bWVudCB3aXRoIGEgdGFiaW5kZXggb2YgMC4gVGhpcyBpcyB0aGUgZW5kIG9m
IHRoZSB0YWJiaW5nIG9yZGVyLgogICAgIH0KIAogICAgIC8vIExvb2sgZm9yIHRoZSBmaXJzdCBF
bGVtZW50IGluIHRoZSBzY29wZSB0aGF0OgogICAgIC8vIDEpIGhhcyB0aGUgbG93ZXN0IHRhYmlu
ZGV4IHRoYXQgaXMgaGlnaGVyIHRoYW4gc3RhcnQncyB0YWJpbmRleCAob3IgMCwgaWYgc3RhcnQg
aXMgbnVsbCksIGFuZAogICAgIC8vIDIpIGNvbWVzIGZpcnN0IGluIHRoZSBzY29wZSwgaWYgdGhl
cmUncyBhIHRpZS4KLSAgICBpZiAoRWxlbWVudCogd2lubmVyID0gbmV4dEVsZW1lbnRXaXRoR3Jl
YXRlclRhYkluZGV4KHNjb3BlLCBzdGFydCA/IGFkanVzdGVkVGFiSW5kZXgoKnN0YXJ0LCAqZXZl
bnQpIDogMCwgKmV2ZW50KSkKKyAgICBpZiAoRWxlbWVudCogd2lubmVyID0gbmV4dEVsZW1lbnRX
aXRoR3JlYXRlclRhYkluZGV4KHNjb3BlLCBzdGFydFRhYkluZGV4LCAqZXZlbnQpKQogICAgICAg
ICByZXR1cm4gd2lubmVyOwogCiAgICAgLy8gVGhlcmUgYXJlIG5vIG5vZGVzIHdpdGggYSB0YWJp
bmRleCBncmVhdGVyIHRoYW4gc3RhcnQncyB0YWJpbmRleCwKQEAgLTU3OCwxNCArNTgyLDEzIEBA
IEVsZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6cHJldmlvdXNGb2N1c2EKICAgICAvLyBGaXJzdCB0
cnkgdG8gZmluZCB0aGUgbGFzdCBub2RlIGluIHRoZSBzY29wZSB0aGF0IGNvbWVzIGJlZm9yZSBz
dGFydCBhbmQgaGFzIHRoZSBzYW1lIHRhYmluZGV4IGFzIHN0YXJ0LgogICAgIC8vIElmIHN0YXJ0
IGlzIG51bGwsIGZpbmQgdGhlIGxhc3Qgbm9kZSBpbiB0aGUgc2NvcGUgd2l0aCBhIHRhYmluZGV4
IG9mIDAuCiAgICAgTm9kZSogc3RhcnRpbmdOb2RlOwotICAgIGludCBzdGFydGluZ1RhYkluZGV4
OworICAgIGludCBzdGFydGluZ1RhYkluZGV4ID0gMDsKICAgICBpZiAoc3RhcnQpIHsKICAgICAg
ICAgc3RhcnRpbmdOb2RlID0gc2NvcGUucHJldmlvdXNJblNjb3BlKHN0YXJ0KTsKLSAgICAgICAg
c3RhcnRpbmdUYWJJbmRleCA9IGFkanVzdGVkVGFiSW5kZXgoKnN0YXJ0LCAqZXZlbnQpOwotICAg
IH0gZWxzZSB7CisgICAgICAgIGlmIChpczxFbGVtZW50Pigqc3RhcnQpKQorICAgICAgICAgICAg
c3RhcnRpbmdUYWJJbmRleCA9IHNoYWRvd0FkanVzdGVkVGFiSW5kZXgoZG93bmNhc3Q8RWxlbWVu
dD4oKnN0YXJ0KSwgKmV2ZW50KTsKKyAgICB9IGVsc2UKICAgICAgICAgc3RhcnRpbmdOb2RlID0g
bGFzdDsKLSAgICAgICAgc3RhcnRpbmdUYWJJbmRleCA9IDA7Ci0gICAgfQogCiAgICAgLy8gSG93
ZXZlciwgaWYgYSBub2RlIGlzIGV4Y2x1ZGVkIGZyb20gdGhlIG5vcm1hbCB0YWJiaW5nIGN5Y2xl
LCB0aGUgcHJldmlvdXMgZm9jdXNhYmxlIG5vZGUgaXMgZGV0ZXJtaW5lZCBieSB0cmVlIG9yZGVy
CiAgICAgaWYgKHN0YXJ0aW5nVGFiSW5kZXggPCAwKSB7CkBAIC01OTMsNyArNTk2LDcgQEAgRWxl
bWVudCogRm9jdXNDb250cm9sbGVyOjpwcmV2aW91c0ZvY3VzYQogICAgICAgICAgICAgaWYgKCFp
czxFbGVtZW50Pigqbm9kZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICBFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpOwotICAgICAgICAg
ICAgaWYgKHNob3VsZFZpc2l0KGVsZW1lbnQsICpldmVudCkgJiYgYWRqdXN0ZWRUYWJJbmRleChl
bGVtZW50LCAqZXZlbnQpID49IDApCisgICAgICAgICAgICBpZiAoaXNGb2N1c2FibGVPckhhc1No
YWRvd1RyZWVXaXRob3V0Q3VzdG9tTG9naWMoZWxlbWVudCwgKmV2ZW50KSAmJiBzaGFkb3dBZGp1
c3RlZFRhYkluZGV4KGVsZW1lbnQsICpldmVudCkgPj0gMCkKICAgICAgICAgICAgICAgICByZXR1
cm4gJmVsZW1lbnQ7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTcwNDUp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBA
QAorMjAxNi0wMi0yNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAg
ICBDb250ZW50cyBpbnNpZGUgYSBzaGFkb3cgaG9zdCB3aXRoIGEgbmVnYXRpdmUgdGFiaW5kZXgg
c2hvdWxkIG5vdCBiZSB0YWIgZm9jdXNhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ3NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHRlc3QgZm9yIG5hdmlnYXRpbmcgYWNyb3NzIHNo
YWRvdyBib3VuZGFyaWVzLgorCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL25lZ2F0aXZlLXRh
YmluZGV4LW9uLXNoYWRvdy1ob3N0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9zaGFkb3ctZG9tL25lZ2F0aXZlLXRhYmluZGV4LW9uLXNoYWRvdy1ob3N0Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9uczoKKwog
MjAxNi0wMi0yNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE5NzAzMy4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3Qvc2hhZG93LWRvbS9uZWdhdGl2ZS10YWJpbmRleC1vbi1zaGFkb3ctaG9zdC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL25lZ2F0aXZl
LXRhYmluZGV4LW9uLXNoYWRvdy1ob3N0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9uZWdhdGl2ZS10YWJpbmRleC1vbi1zaGFkb3ctaG9z
dC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgZm9y
IHNldHRpbmcgYSBuZWdhdGl2ZSB0YWJpbmRleCBvbiBzaGFkb3cgaG9zdC4gRWxlbWVudHMgaW5z
aWRlIHN1Y2ggYSBzaGFkb3cgdHJlZSBzaG91bGQgbm90IGJlIGluIHRoZSBzZXF1ZW50aWFsIG5h
dmlnYXRpb24gb3JkZXIuCitUbyBtYW51YWxseSB0ZXN0LCBwcmVzcyB0YWIga2V5IGZvdXIgdGlt
ZXMuIEl0IHNob3VsZCB0cmF2ZXJzZSBmb2N1c2FibGUgZWxlbWVudHMgaW4gdGhlIGluY3JlYXNp
bmcgbnVtZXJpY2FsIG9yZGVyLgorCisxLiBGaXJzdCBzZXF1ZW50aWFsbHkgZm9jdXNhYmxlIGVs
ZW1lbnQgb3V0c2lkZSBzaGFkb3cgdHJlZXMKKzIuIFNoYWRvdyBob3N0IHdpdGggYSBwb3NpdGl2
ZSB0YWJpbmRleAorMy4gRm9jdXNhYmxlIGVsZW1lbnQgaW5zaWRlIGEgc2hhZG93IGhvc3Qgd2l0
aCBhIHBvc2l0aXZlIHRhYmluZGV4CisyLiBTaGFkb3cgaG9zdCB3aXRoIGEgcG9zaXRpdmUgdGFi
aW5kZXgKKzQuMS4gRm9jdXNhYmxlIGVsZW1lbnQgaW5zaWRlIGEgc2hhZG93IGhvc3Qgd2l0aCBu
byB0YWJpbmRleAorNC4yLiBTaGFkb3cgaG9zdCB3aXRoIG5vIHRhYmluZGV4CisKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9uZWdhdGl2ZS10YWJpbmRleC1vbi1zaGFkb3ctaG9z
dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9uZWdhdGl2
ZS10YWJpbmRleC1vbi1zaGFkb3ctaG9zdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9zaGFkb3ctZG9tL25lZ2F0aXZlLXRhYmluZGV4LW9uLXNoYWRvdy1ob3N0Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
Kzxib2R5PgorPHA+VGVzdHMgZm9yIHNldHRpbmcgYSBuZWdhdGl2ZSB0YWJpbmRleCBvbiBzaGFk
b3cgaG9zdC4gRWxlbWVudHMgaW5zaWRlIHN1Y2ggYSBzaGFkb3cgdHJlZSBzaG91bGQgbm90IGJl
IGluIHRoZSBzZXF1ZW50aWFsIG5hdmlnYXRpb24gb3JkZXIuPGJyPgorVG8gbWFudWFsbHkgdGVz
dCwgcHJlc3MgdGFiIGtleSBmb3VyIHRpbWVzLiBJdCBzaG91bGQgdHJhdmVyc2UgZm9jdXNhYmxl
IGVsZW1lbnRzIGluIHRoZSBpbmNyZWFzaW5nIG51bWVyaWNhbCBvcmRlci48L3A+Cis8ZGl2IGlk
PSJ0ZXN0LWNvbnRlbnQiPgorPGRpdiB0YWJpbmRleD0iMSIgb25mb2N1cz0ibG9nKHRoaXMpIj4x
LiBGaXJzdCBzZXF1ZW50aWFsbHkgZm9jdXNhYmxlIGVsZW1lbnQgb3V0c2lkZSBzaGFkb3cgdHJl
ZXM8L2Rpdj4KKzxkaXYgaWQ9Imhvc3Qtd2l0aC1uZWdhdGl2ZS10YWJpbmRleCIgdGFiaW5kZXg9
Ii0xIiBvbmZvY3VzPSJsb2codGhpcykiPlNoYWRvdyBob3N0IHdpdGggYSBuZWdhdGl2ZSB0YWJp
bmRleDwvZGl2PgorPGRpdiBpZD0iaG9zdC13aXRoLW5vLXRhYmluZGV4IiBvbmZvY3VzPSJsb2co
dGhpcykiPjQuMi4gU2hhZG93IGhvc3Qgd2l0aCBubyB0YWJpbmRleDwvZGl2PgorPGRpdiBpZD0i
aG9zdC13aXRoLXBvc2l0aXZlLXRhYmluZGV4IiB0YWJpbmRleD0iMiIgb25mb2N1cz0ibG9nKHRo
aXMpIj4yLiBTaGFkb3cgaG9zdCB3aXRoIGEgcG9zaXRpdmUgdGFiaW5kZXg8L2Rpdj4KKzxkaXYg
dGFiaW5kZXg9IjAiIG9uZm9jdXM9ImxvZyh0aGlzKSI+NS4gTGFzdCBzZXF1ZW50aWFsbHkgZm9j
dXNhYmxlIGVsZW1lbnQgb3V0c2lkZSBzaGFkb3cgdHJlZXM8L2Rpdj4KKzwvZGl2PgorPHByZT48
L3ByZT4KKzxzY3JpcHQ+CisKK2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdicpLmZvY3VzKCk7
CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdob3N0LXdpdGgtbmVnYXRpdmUtdGFiaW5kZXgn
KS5hdHRhY2hTaGFkb3coe21vZGU6ICdjbG9zZWQnfSkuaW5uZXJIVE1MID0gYAorICAgIDxkaXYg
dGFiaW5kZXg9IjAiIG9uZm9jdXM9ImxvZyh0aGlzKSI+U2hvdWxkIG5vdCBiZSBmb2N1c2VkIGFz
IGl0IGlzIGluc2lkZSBhIHNoYWRvdyBob3N0IHdpdGggYSBuZWdhdGl2ZSB0YWJpbmRleDwvZGl2
PgorYDsKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hvc3Qtd2l0aC1uby10YWJpbmRleCcp
LmF0dGFjaFNoYWRvdyh7bW9kZTogJ2Nsb3NlZCd9KS5pbm5lckhUTUwgPSBgCisgICAgPGRpdiB0
YWJpbmRleD0iMCIgb25mb2N1cz0ibG9nKHRoaXMpIj40LjEuIEZvY3VzYWJsZSBlbGVtZW50IGlu
c2lkZSBhIHNoYWRvdyBob3N0IHdpdGggbm8gdGFiaW5kZXg8L2Rpdj4KK2A7CisKK2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdob3N0LXdpdGgtcG9zaXRpdmUtdGFiaW5kZXgnKS5hdHRhY2hTaGFk
b3coe21vZGU6ICdjbG9zZWQnfSkuaW5uZXJIVE1MID0gYAorICAgIDxzbG90Pjwvc2xvdD4KKyAg
ICA8ZGl2IHRhYmluZGV4PSIwIiBvbmZvY3VzPSJsb2codGhpcykiPjMuIEZvY3VzYWJsZSBlbGVt
ZW50IGluc2lkZSBhIHNoYWRvdyBob3N0IHdpdGggYSBwb3NpdGl2ZSB0YWJpbmRleDwvZGl2Pgor
YDsKKworZnVuY3Rpb24gbG9nKGVsZW1lbnQpIHsKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCdwcmUnKS50ZXh0Q29udGVudCArPSBlbGVtZW50LnRleHRDb250ZW50ICsgJ1xuJzsKK30KKwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCitp
ZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgZXZlbnRTZW5kZXIua2V5RG93bignXHQnKTsK
KyAgICBldmVudFNlbmRlci5rZXlEb3duKCdcdCcpOworICAgIGV2ZW50U2VuZGVyLmtleURvd24o
J1x0Jyk7CisgICAgZXZlbnRTZW5kZXIua2V5RG93bignXHQnKTsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndGVzdC1jb250ZW50Jykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKK30KKwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxOTcwNDUp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMJ
KHdvcmtpbmcgY29weSkKQEAgLTIyNSw2ICsyMjUsOSBAQCB3ZWJraXQub3JnL2IvMTQ5NDQwIGZh
c3Qvc2hhZG93LWRvbS9jc3MtCiB3ZWJraXQub3JnL2IvMTQ5NDQxIGZhc3Qvc2hhZG93LWRvbS9j
c3Mtc2NvcGluZy1zaGFkb3ctc2xvdHRlZC1ydWxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi8xNDk0NDEgZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy1z
bG90LWRpc3BsYXktb3ZlcnJpZGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCisjIE5vIHRh
YiBuYXZpZ2F0aW9uIHN1cHBvcnQgb24gaU9TCitmYXN0L3NoYWRvdy1kb20vbmVnYXRpdmUtdGFi
aW5kZXgtb24tc2hhZG93LWhvc3QuaHRtbCBbIEZhaWx1cmUgXQorCiB3ZWJraXQub3JnL2IvMTUw
MjI1IGZhc3QvY3VzdG9tLWVsZW1lbnRzIFsgUGFzcyBdCiAKICMgVGhpcyB0ZXN0IG5lZWRzIHRv
IGJlIHJld3JpdHRlbiB0byB1c2UgcnVuVUlTY3JpcHQgdG8gd29yayBvbiBpT1MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272521</attachid>
            <date>2016-02-29 14:58:09 -0800</date>
            <delta_ts>2016-02-29 14:59:44 -0800</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-154769-20160229145753.patch</filename>
            <type>text/plain</type>
            <size>14499</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzIyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE2LTAyLTI2ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIENvbnRlbnRzIGluc2lkZSBhIHNo
YWRvdyBob3N0IHdpdGggYSBuZWdhdGl2ZSB0YWJpbmRleCBzaG91bGQgbm90IGJlIHRhYiBmb2N1
c2FibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NDc2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENv
bnRlbnRzIGluc2lkZSBhIHNoYWRvdyBob3N0IHdpdGggYSBuZWdhdGl2ZSB0YWJpbmRleCBjb250
ZW50IGF0dHJpYnV0ZSBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluCisgICAgICAgIHRoZSBzZXF1
ZW50aWFsIGZvY3VzIG5hdmlnYXRpb24gb3JkZXIgc3MgZGlzY3Vzc2VkIG9uIGh0dHBzOi8vZ2l0
aHViLmNvbS93M2Mvd2ViY29tcG9uZW50cy9pc3N1ZXMvMzk5LgorCisgICAgICAgIFRlc3Q6IGZh
c3Qvc2hhZG93LWRvbS9uZWdhdGl2ZS10YWJpbmRleC1vbi1zaGFkb3ctaG9zdC5odG1sCisKKyAg
ICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp0YWJJ
bmRleFNldEV4cGxpY2l0bHkpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAg
ICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNoYWRv
d0FkanVzdGVkVGFiSW5kZXgpOiBSZW5hbWVkIGZyb20gYWRqdXN0ZWRUYWJJbmRleC4gUmV0dXJu
IDAgd2hlbiB0YWJpbmRleCBjb250ZW50IGF0dHJpYnV0ZQorICAgICAgICBpcyBub3QgZXhwbGlj
aXRseSBzZXQgc2luY2UgZWxlbWVudC50YWJJbmRleCgpIHdvdWxkIHJldHVybiAtMSBmb3IgSFRN
TCBlbGVtZW50cyBpbiBzdWNoIGNhc2UuCisgICAgICAgIChXZWJDb3JlOjppc0ZvY3VzYWJsZU9y
SGFzU2hhZG93VHJlZVdpdGhvdXRDdXN0b21Mb2dpYyk6IFJlbmFtZWQgZnJvbSBzaG91bGRWaXNp
dC4KKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6ZmluZEVsZW1lbnRXaXRoRXhh
Y3RUYWJJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0RWxlbWVudFdpdGhHcmVhdGVyVGFi
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNFbGVtZW50V2l0aExvd2VyVGFiSW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpuZXh0Rm9jdXNhYmxlRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OnByZXZpb3VzRm9jdXNh
YmxlRWxlbWVudCk6CisKIDIwMTYtMDItMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgQVBJIHRlc3QgY292ZXJhZ2UgZm9yIHBhcnNlSFRNTEludGVnZXIg
LyBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE5NzA0NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjEyLDYgKzIxMiwxMSBAQCB2b2lkIEVsZW1lbnQ6OnNldFRhYkluZGV4
RXhwbGljaXRseShzaG9yCiAgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0VGFiSW5kZXhF
eHBsaWNpdGx5KHRhYkluZGV4KTsKIH0KIAorYm9vbCBFbGVtZW50Ojp0YWJJbmRleFNldEV4cGxp
Y2l0bHkoKSBjb25zdAoreworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJl
RGF0YSgpLT50YWJJbmRleFNldEV4cGxpY2l0bHkoKTsKK30KKwogYm9vbCBFbGVtZW50OjpzdXBw
b3J0c0ZvY3VzKCkgY29uc3QKIHsKICAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiBlbGVtZW50
UmFyZURhdGEoKS0+dGFiSW5kZXhTZXRFeHBsaWNpdGx5KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgJKHJldmlzaW9uIDE5NzA0NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2Niw2ICsyNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldEhvdmVyZWQoYm9vbCBmbGFnID0gdHJ1ZSk7CiAgICAgdmlydHVhbCB2b2lkIHNldEZvY3Vz
KGJvb2wgZmxhZyk7CiAKKyAgICBib29sIHRhYkluZGV4U2V0RXhwbGljaXRseSgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IGlzRm9jdXNhYmxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzS2V5Ym9hcmRGb2N1c2Fi
bGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1
c0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXND
b250cm9sbGVyLmNwcAkocmV2aXNpb24gMTk3MDU1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9G
b2N1c0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsMTQgKzIxNCwxNiBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaXNGb2N1c2FibGVTaGFkb3dIb3N0CiAgICAgcmV0dXJuIGlzPEVs
ZW1lbnQ+KG5vZGUpICYmIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpLmlzS2V5Ym9hcmRGb2N1c2Fi
bGUoJmV2ZW50KSAmJiBkb3duY2FzdDxFbGVtZW50Pihub2RlKS5zaGFkb3dSb290KCkgJiYgIWhh
c0N1c3RvbUZvY3VzTG9naWMoZG93bmNhc3Q8RWxlbWVudD4obm9kZSkpOwogfQogCi1zdGF0aWMg
aW5saW5lIGludCBhZGp1c3RlZFRhYkluZGV4KE5vZGUmIG5vZGUsIEtleWJvYXJkRXZlbnQmIGV2
ZW50KQorc3RhdGljIGlubGluZSBpbnQgc2hhZG93QWRqdXN0ZWRUYWJJbmRleChFbGVtZW50JiBl
bGVtZW50LCBLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKLSAgICBpZiAoIWlzPEVsZW1lbnQ+KG5v
ZGUpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gaXNOb25Gb2N1c2FibGVTaGFkb3dI
b3N0KGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpLCBldmVudCkgPyAwIDogZG93bmNhc3Q8RWxlbWVu
dD4obm9kZSkudGFiSW5kZXgoKTsKKyAgICBpZiAoaXNOb25Gb2N1c2FibGVTaGFkb3dIb3N0KGVs
ZW1lbnQsIGV2ZW50KSkgeworICAgICAgICBpZiAoIWVsZW1lbnQudGFiSW5kZXhTZXRFeHBsaWNp
dGx5KCkpCisgICAgICAgICAgICByZXR1cm4gMDsgLy8gVHJlYXQgYSBzaGFkb3cgaG9zdCB3aXRo
b3V0IHRhYmluZGV4IGlmIGl0IGhhcyB0YWJpbmRleD0wIGV2ZW4gdGhvdWdoIEhUTUxFbGVtZW50
Ojp0YWJJbmRleCByZXR1cm5zIC0xIG9uIHN1Y2ggYW4gZWxlbWVudC4KKyAgICB9CisgICAgcmV0
dXJuIGVsZW1lbnQudGFiSW5kZXgoKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHNob3VsZFZp
c2l0KEVsZW1lbnQmIGVsZW1lbnQsIEtleWJvYXJkRXZlbnQmIGV2ZW50KQorc3RhdGljIGlubGlu
ZSBib29sIGlzRm9jdXNhYmxlT3JIYXNTaGFkb3dUcmVlV2l0aG91dEN1c3RvbUxvZ2ljKEVsZW1l
bnQmIGVsZW1lbnQsIEtleWJvYXJkRXZlbnQmIGV2ZW50KQogewogICAgIHJldHVybiBlbGVtZW50
LmlzS2V5Ym9hcmRGb2N1c2FibGUoJmV2ZW50KSB8fCBpc05vbkZvY3VzYWJsZVNoYWRvd0hvc3Qo
ZWxlbWVudCwgZXZlbnQpOwogfQpAQCAtNDc5LDcgKzQ4MSw3IEBAIEVsZW1lbnQqIEZvY3VzQ29u
dHJvbGxlcjo6ZmluZEVsZW1lbnRXaXQKICAgICAgICAgaWYgKCFpczxFbGVtZW50Pigqbm9kZSkp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgRWxlbWVudCYgZWxlbWVudCA9IGRvd25j
YXN0PEVsZW1lbnQ+KCpub2RlKTsKLSAgICAgICAgaWYgKHNob3VsZFZpc2l0KGVsZW1lbnQsICpl
dmVudCkgJiYgYWRqdXN0ZWRUYWJJbmRleChlbGVtZW50LCAqZXZlbnQpID09IHRhYkluZGV4KQor
ICAgICAgICBpZiAoaXNGb2N1c2FibGVPckhhc1NoYWRvd1RyZWVXaXRob3V0Q3VzdG9tTG9naWMo
ZWxlbWVudCwgKmV2ZW50KSAmJiBzaGFkb3dBZGp1c3RlZFRhYkluZGV4KGVsZW1lbnQsICpldmVu
dCkgPT0gdGFiSW5kZXgpCiAgICAgICAgICAgICByZXR1cm4gJmVsZW1lbnQ7CiAgICAgfQogICAg
IHJldHVybiBudWxscHRyOwpAQCAtNDk0LDcgKzQ5Niw3IEBAIHN0YXRpYyBFbGVtZW50KiBuZXh0
RWxlbWVudFdpdGhHcmVhdGVyVGEKICAgICAgICAgaWYgKCFpczxFbGVtZW50Pigqbm9kZSkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgRWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0
PEVsZW1lbnQ+KCpub2RlKTsKLSAgICAgICAgaWYgKHNob3VsZFZpc2l0KGVsZW1lbnQsIGV2ZW50
KSAmJiBlbGVtZW50LnRhYkluZGV4KCkgPiB0YWJJbmRleCAmJiBlbGVtZW50LnRhYkluZGV4KCkg
PCB3aW5uaW5nVGFiSW5kZXgpIHsKKyAgICAgICAgaWYgKGlzRm9jdXNhYmxlT3JIYXNTaGFkb3dU
cmVlV2l0aG91dEN1c3RvbUxvZ2ljKGVsZW1lbnQsIGV2ZW50KSAmJiBlbGVtZW50LnRhYkluZGV4
KCkgPiB0YWJJbmRleCAmJiBlbGVtZW50LnRhYkluZGV4KCkgPCB3aW5uaW5nVGFiSW5kZXgpIHsK
ICAgICAgICAgICAgIHdpbm5lciA9ICZlbGVtZW50OwogICAgICAgICAgICAgd2lubmluZ1RhYklu
ZGV4ID0gZWxlbWVudC50YWJJbmRleCgpOwogICAgICAgICB9CkBAIC01MTIsOCArNTE0LDggQEAg
c3RhdGljIEVsZW1lbnQqIHByZXZpb3VzRWxlbWVudFdpdGhMb3dlcgogICAgICAgICBpZiAoIWlz
PEVsZW1lbnQ+KCpub2RlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBFbGVtZW50
JiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpOwotICAgICAgICBpbnQgY3VycmVu
dFRhYkluZGV4ID0gYWRqdXN0ZWRUYWJJbmRleChlbGVtZW50LCBldmVudCk7Ci0gICAgICAgIGlm
ICgoc2hvdWxkVmlzaXQoZWxlbWVudCwgZXZlbnQpIHx8IGlzTm9uRm9jdXNhYmxlU2hhZG93SG9z
dChlbGVtZW50LCBldmVudCkpICYmIGN1cnJlbnRUYWJJbmRleCA8IHRhYkluZGV4ICYmIGN1cnJl
bnRUYWJJbmRleCA+IHdpbm5pbmdUYWJJbmRleCkgeworICAgICAgICBpbnQgY3VycmVudFRhYklu
ZGV4ID0gc2hhZG93QWRqdXN0ZWRUYWJJbmRleChlbGVtZW50LCBldmVudCk7CisgICAgICAgIGlm
ICgoaXNGb2N1c2FibGVPckhhc1NoYWRvd1RyZWVXaXRob3V0Q3VzdG9tTG9naWMoZWxlbWVudCwg
ZXZlbnQpIHx8IGlzTm9uRm9jdXNhYmxlU2hhZG93SG9zdChlbGVtZW50LCBldmVudCkpICYmIGN1
cnJlbnRUYWJJbmRleCA8IHRhYkluZGV4ICYmIGN1cnJlbnRUYWJJbmRleCA+IHdpbm5pbmdUYWJJ
bmRleCkgewogICAgICAgICAgICAgd2lubmVyID0gJmVsZW1lbnQ7CiAgICAgICAgICAgICB3aW5u
aW5nVGFiSW5kZXggPSBjdXJyZW50VGFiSW5kZXg7CiAgICAgICAgIH0KQEAgLTUzNSwzMiArNTM3
LDM0IEBAIEVsZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6cHJldmlvdXNGb2N1c2EKIAogRWxlbWVu
dCogRm9jdXNDb250cm9sbGVyOjpuZXh0Rm9jdXNhYmxlRWxlbWVudChjb25zdCBGb2N1c05hdmln
YXRpb25TY29wZSYgc2NvcGUsIE5vZGUqIHN0YXJ0LCBLZXlib2FyZEV2ZW50KiBldmVudCkKIHsK
KyAgICBpbnQgc3RhcnRUYWJJbmRleCA9IDA7CisgICAgaWYgKHN0YXJ0ICYmIGlzPEVsZW1lbnQ+
KCpzdGFydCkpCisgICAgICAgIHN0YXJ0VGFiSW5kZXggPSBzaGFkb3dBZGp1c3RlZFRhYkluZGV4
KGRvd25jYXN0PEVsZW1lbnQ+KCpzdGFydCksICpldmVudCk7CisKICAgICBpZiAoc3RhcnQpIHsK
LSAgICAgICAgaW50IHRhYkluZGV4ID0gYWRqdXN0ZWRUYWJJbmRleCgqc3RhcnQsICpldmVudCk7
CiAgICAgICAgIC8vIElmIGEgbm9kZSBpcyBleGNsdWRlZCBmcm9tIHRoZSBub3JtYWwgdGFiYmlu
ZyBjeWNsZSwgdGhlIG5leHQgZm9jdXNhYmxlIG5vZGUgaXMgZGV0ZXJtaW5lZCBieSB0cmVlIG9y
ZGVyCi0gICAgICAgIGlmICh0YWJJbmRleCA8IDApIHsKKyAgICAgICAgaWYgKHN0YXJ0VGFiSW5k
ZXggPCAwKSB7CiAgICAgICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBzY29wZS5uZXh0SW5TY29w
ZShzdGFydCk7IG5vZGU7IG5vZGUgPSBzY29wZS5uZXh0SW5TY29wZShub2RlKSkgewogICAgICAg
ICAgICAgICAgIGlmICghaXM8RWxlbWVudD4oKm5vZGUpKQogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgICAgICBFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8RWxl
bWVudD4oKm5vZGUpOwotICAgICAgICAgICAgICAgIGlmIChzaG91bGRWaXNpdChlbGVtZW50LCAq
ZXZlbnQpICYmIGFkanVzdGVkVGFiSW5kZXgoZWxlbWVudCwgKmV2ZW50KSA+PSAwKQorICAgICAg
ICAgICAgICAgIGlmIChpc0ZvY3VzYWJsZU9ySGFzU2hhZG93VHJlZVdpdGhvdXRDdXN0b21Mb2dp
YyhlbGVtZW50LCAqZXZlbnQpICYmIHNoYWRvd0FkanVzdGVkVGFiSW5kZXgoZWxlbWVudCwgKmV2
ZW50KSA+PSAwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gJmVsZW1lbnQ7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICAvLyBGaXJzdCB0cnkgdG8gZmluZCBhIG5vZGUg
d2l0aCB0aGUgc2FtZSB0YWJpbmRleCBhcyBzdGFydCB0aGF0IGNvbWVzIGFmdGVyIHN0YXJ0IGlu
IHRoZSBzY29wZS4KLSAgICAgICAgaWYgKEVsZW1lbnQqIHdpbm5lciA9IGZpbmRFbGVtZW50V2l0
aEV4YWN0VGFiSW5kZXgoc2NvcGUsIHNjb3BlLm5leHRJblNjb3BlKHN0YXJ0KSwgdGFiSW5kZXgs
IGV2ZW50LCBGb2N1c0RpcmVjdGlvbkZvcndhcmQpKQorICAgICAgICBpZiAoRWxlbWVudCogd2lu
bmVyID0gZmluZEVsZW1lbnRXaXRoRXhhY3RUYWJJbmRleChzY29wZSwgc2NvcGUubmV4dEluU2Nv
cGUoc3RhcnQpLCBzdGFydFRhYkluZGV4LCBldmVudCwgRm9jdXNEaXJlY3Rpb25Gb3J3YXJkKSkK
ICAgICAgICAgICAgIHJldHVybiB3aW5uZXI7CiAKLSAgICAgICAgaWYgKCF0YWJJbmRleCkKLSAg
ICAgICAgICAgIC8vIFdlJ3ZlIHJlYWNoZWQgdGhlIGxhc3Qgbm9kZSBpbiB0aGUgZG9jdW1lbnQg
d2l0aCBhIHRhYmluZGV4IG9mIDAuIFRoaXMgaXMgdGhlIGVuZCBvZiB0aGUgdGFiYmluZyBvcmRl
ci4KLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoIXN0YXJ0VGFiSW5kZXgpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8gV2UndmUgcmVhY2hlZCB0aGUgbGFzdCBub2Rl
IGluIHRoZSBkb2N1bWVudCB3aXRoIGEgdGFiaW5kZXggb2YgMC4gVGhpcyBpcyB0aGUgZW5kIG9m
IHRoZSB0YWJiaW5nIG9yZGVyLgogICAgIH0KIAogICAgIC8vIExvb2sgZm9yIHRoZSBmaXJzdCBF
bGVtZW50IGluIHRoZSBzY29wZSB0aGF0OgogICAgIC8vIDEpIGhhcyB0aGUgbG93ZXN0IHRhYmlu
ZGV4IHRoYXQgaXMgaGlnaGVyIHRoYW4gc3RhcnQncyB0YWJpbmRleCAob3IgMCwgaWYgc3RhcnQg
aXMgbnVsbCksIGFuZAogICAgIC8vIDIpIGNvbWVzIGZpcnN0IGluIHRoZSBzY29wZSwgaWYgdGhl
cmUncyBhIHRpZS4KLSAgICBpZiAoRWxlbWVudCogd2lubmVyID0gbmV4dEVsZW1lbnRXaXRoR3Jl
YXRlclRhYkluZGV4KHNjb3BlLCBzdGFydCA/IGFkanVzdGVkVGFiSW5kZXgoKnN0YXJ0LCAqZXZl
bnQpIDogMCwgKmV2ZW50KSkKKyAgICBpZiAoRWxlbWVudCogd2lubmVyID0gbmV4dEVsZW1lbnRX
aXRoR3JlYXRlclRhYkluZGV4KHNjb3BlLCBzdGFydFRhYkluZGV4LCAqZXZlbnQpKQogICAgICAg
ICByZXR1cm4gd2lubmVyOwogCiAgICAgLy8gVGhlcmUgYXJlIG5vIG5vZGVzIHdpdGggYSB0YWJp
bmRleCBncmVhdGVyIHRoYW4gc3RhcnQncyB0YWJpbmRleCwKQEAgLTU3OCwxNCArNTgyLDEzIEBA
IEVsZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6cHJldmlvdXNGb2N1c2EKICAgICAvLyBGaXJzdCB0
cnkgdG8gZmluZCB0aGUgbGFzdCBub2RlIGluIHRoZSBzY29wZSB0aGF0IGNvbWVzIGJlZm9yZSBz
dGFydCBhbmQgaGFzIHRoZSBzYW1lIHRhYmluZGV4IGFzIHN0YXJ0LgogICAgIC8vIElmIHN0YXJ0
IGlzIG51bGwsIGZpbmQgdGhlIGxhc3Qgbm9kZSBpbiB0aGUgc2NvcGUgd2l0aCBhIHRhYmluZGV4
IG9mIDAuCiAgICAgTm9kZSogc3RhcnRpbmdOb2RlOwotICAgIGludCBzdGFydGluZ1RhYkluZGV4
OworICAgIGludCBzdGFydGluZ1RhYkluZGV4ID0gMDsKICAgICBpZiAoc3RhcnQpIHsKICAgICAg
ICAgc3RhcnRpbmdOb2RlID0gc2NvcGUucHJldmlvdXNJblNjb3BlKHN0YXJ0KTsKLSAgICAgICAg
c3RhcnRpbmdUYWJJbmRleCA9IGFkanVzdGVkVGFiSW5kZXgoKnN0YXJ0LCAqZXZlbnQpOwotICAg
IH0gZWxzZSB7CisgICAgICAgIGlmIChpczxFbGVtZW50Pigqc3RhcnQpKQorICAgICAgICAgICAg
c3RhcnRpbmdUYWJJbmRleCA9IHNoYWRvd0FkanVzdGVkVGFiSW5kZXgoZG93bmNhc3Q8RWxlbWVu
dD4oKnN0YXJ0KSwgKmV2ZW50KTsKKyAgICB9IGVsc2UKICAgICAgICAgc3RhcnRpbmdOb2RlID0g
bGFzdDsKLSAgICAgICAgc3RhcnRpbmdUYWJJbmRleCA9IDA7Ci0gICAgfQogCiAgICAgLy8gSG93
ZXZlciwgaWYgYSBub2RlIGlzIGV4Y2x1ZGVkIGZyb20gdGhlIG5vcm1hbCB0YWJiaW5nIGN5Y2xl
LCB0aGUgcHJldmlvdXMgZm9jdXNhYmxlIG5vZGUgaXMgZGV0ZXJtaW5lZCBieSB0cmVlIG9yZGVy
CiAgICAgaWYgKHN0YXJ0aW5nVGFiSW5kZXggPCAwKSB7CkBAIC01OTMsNyArNTk2LDcgQEAgRWxl
bWVudCogRm9jdXNDb250cm9sbGVyOjpwcmV2aW91c0ZvY3VzYQogICAgICAgICAgICAgaWYgKCFp
czxFbGVtZW50Pigqbm9kZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICBFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpOwotICAgICAgICAg
ICAgaWYgKHNob3VsZFZpc2l0KGVsZW1lbnQsICpldmVudCkgJiYgYWRqdXN0ZWRUYWJJbmRleChl
bGVtZW50LCAqZXZlbnQpID49IDApCisgICAgICAgICAgICBpZiAoaXNGb2N1c2FibGVPckhhc1No
YWRvd1RyZWVXaXRob3V0Q3VzdG9tTG9naWMoZWxlbWVudCwgKmV2ZW50KSAmJiBzaGFkb3dBZGp1
c3RlZFRhYkluZGV4KGVsZW1lbnQsICpldmVudCkgPj0gMCkKICAgICAgICAgICAgICAgICByZXR1
cm4gJmVsZW1lbnQ7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTcwNDUp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBA
QAorMjAxNi0wMi0yNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAg
ICBDb250ZW50cyBpbnNpZGUgYSBzaGFkb3cgaG9zdCB3aXRoIGEgbmVnYXRpdmUgdGFiaW5kZXgg
c2hvdWxkIG5vdCBiZSB0YWIgZm9jdXNhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ3NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHRlc3QgZm9yIG5hdmlnYXRpbmcgYWNyb3NzIHNo
YWRvdyBib3VuZGFyaWVzLgorCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL25lZ2F0aXZlLXRh
YmluZGV4LW9uLXNoYWRvdy1ob3N0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9zaGFkb3ctZG9tL25lZ2F0aXZlLXRhYmluZGV4LW9uLXNoYWRvdy1ob3N0Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9uczoKKwog
MjAxNi0wMi0yNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE5NzAzMy4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3Qvc2hhZG93LWRvbS9uZWdhdGl2ZS10YWJpbmRleC1vbi1zaGFkb3ctaG9zdC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL25lZ2F0aXZl
LXRhYmluZGV4LW9uLXNoYWRvdy1ob3N0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9uZWdhdGl2ZS10YWJpbmRleC1vbi1zaGFkb3ctaG9z
dC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorVGVzdHMgZm9y
IHNldHRpbmcgYSBuZWdhdGl2ZSB0YWJpbmRleCBvbiBzaGFkb3cgaG9zdC4gRWxlbWVudHMgaW5z
aWRlIHN1Y2ggYSBzaGFkb3cgdHJlZSBzaG91bGQgbm90IGJlIGluIHRoZSBzZXF1ZW50aWFsIG5h
dmlnYXRpb24gb3JkZXIuCitUbyBtYW51YWxseSB0ZXN0LCBwcmVzcyB0YWIga2V5IGZvdXIgdGlt
ZXMuIEl0IHNob3VsZCB0cmF2ZXJzZSBmb2N1c2FibGUgZWxlbWVudHMgaW4gdGhlIGluY3JlYXNp
bmcgbnVtZXJpY2FsIG9yZGVyLgorCisxLiBGaXJzdCBzZXF1ZW50aWFsbHkgZm9jdXNhYmxlIGVs
ZW1lbnQgb3V0c2lkZSBzaGFkb3cgdHJlZXMKKzIuIC8gMy4yLiBTaGFkb3cgaG9zdCB3aXRoIGEg
cG9zaXRpdmUgdGFiaW5kZXgKKzMuMS4gRm9jdXNhYmxlIGVsZW1lbnQgaW5zaWRlIGEgc2hhZG93
IGhvc3Qgd2l0aCBhIHBvc2l0aXZlIHRhYmluZGV4CisyLiAvIDMuMi4gU2hhZG93IGhvc3Qgd2l0
aCBhIHBvc2l0aXZlIHRhYmluZGV4Cis0LjEuIEZvY3VzYWJsZSBlbGVtZW50IGluc2lkZSBhIHNo
YWRvdyBob3N0IHdpdGggbm8gdGFiaW5kZXgKKzQuMi4gU2hhZG93IGhvc3Qgd2l0aCBubyB0YWJp
bmRleAorNS4gTGFzdCBzZXF1ZW50aWFsbHkgZm9jdXNhYmxlIGVsZW1lbnQgb3V0c2lkZSBzaGFk
b3cgdHJlZXMKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL25lZ2F0aXZlLXRh
YmluZGV4LW9uLXNoYWRvdy1ob3N0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9zaGFkb3ctZG9tL25lZ2F0aXZlLXRhYmluZGV4LW9uLXNoYWRvdy1ob3N0Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vbmVnYXRpdmUtdGFiaW5kZXgt
b24tc2hhZG93LWhvc3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8cD5UZXN0cyBmb3Igc2V0dGluZyBhIG5lZ2F0
aXZlIHRhYmluZGV4IG9uIHNoYWRvdyBob3N0LiBFbGVtZW50cyBpbnNpZGUgc3VjaCBhIHNoYWRv
dyB0cmVlIHNob3VsZCBub3QgYmUgaW4gdGhlIHNlcXVlbnRpYWwgbmF2aWdhdGlvbiBvcmRlci48
YnI+CitUbyBtYW51YWxseSB0ZXN0LCBwcmVzcyB0YWIga2V5IGZvdXIgdGltZXMuIEl0IHNob3Vs
ZCB0cmF2ZXJzZSBmb2N1c2FibGUgZWxlbWVudHMgaW4gdGhlIGluY3JlYXNpbmcgbnVtZXJpY2Fs
IG9yZGVyLjwvcD4KKzxkaXYgaWQ9InRlc3QtY29udGVudCI+Cis8ZGl2IGlkPSJmaXJzdCIgdGFi
aW5kZXg9IjEiIG9uZm9jdXM9ImxvZyh0aGlzKSI+MS4gRmlyc3Qgc2VxdWVudGlhbGx5IGZvY3Vz
YWJsZSBlbGVtZW50IG91dHNpZGUgc2hhZG93IHRyZWVzPC9kaXY+Cis8ZGl2IGlkPSJob3N0LXdp
dGgtbmVnYXRpdmUtdGFiaW5kZXgiIHRhYmluZGV4PSItMSIgb25mb2N1cz0ibG9nKHRoaXMpIj5T
aGFkb3cgaG9zdCB3aXRoIGEgbmVnYXRpdmUgdGFiaW5kZXg8L2Rpdj4KKzxkaXYgaWQ9Imhvc3Qt
d2l0aC1uby10YWJpbmRleCIgb25mb2N1cz0ibG9nKHRoaXMpIj40LjIuIFNoYWRvdyBob3N0IHdp
dGggbm8gdGFiaW5kZXg8L2Rpdj4KKzxkaXYgaWQ9Imhvc3Qtd2l0aC1wb3NpdGl2ZS10YWJpbmRl
eCIgdGFiaW5kZXg9IjIiIG9uZm9jdXM9ImxvZyh0aGlzKSI+Mi4gLyAzLjIuIFNoYWRvdyBob3N0
IHdpdGggYSBwb3NpdGl2ZSB0YWJpbmRleDwvZGl2PgorPGRpdiB0YWJpbmRleD0iMCIgb25mb2N1
cz0ibG9nKHRoaXMpIj41LiBMYXN0IHNlcXVlbnRpYWxseSBmb2N1c2FibGUgZWxlbWVudCBvdXRz
aWRlIHNoYWRvdyB0cmVlczwvZGl2PgorPC9kaXY+Cis8cHJlPjwvcHJlPgorPHNjcmlwdD4KKwor
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hvc3Qtd2l0aC1uZWdhdGl2ZS10YWJpbmRleCcpLmF0
dGFjaFNoYWRvdyh7bW9kZTogJ2Nsb3NlZCd9KS5pbm5lckhUTUwgPSBgCisgICAgPGRpdiB0YWJp
bmRleD0iMCIgb25mb2N1cz0ibG9nKHRoaXMpIj5TaG91bGQgbm90IGJlIGZvY3VzZWQgYXMgaXQg
aXMgaW5zaWRlIGEgc2hhZG93IGhvc3Qgd2l0aCBhIG5lZ2F0aXZlIHRhYmluZGV4PC9kaXY+Citg
OworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaG9zdC13aXRoLW5vLXRhYmluZGV4JykuYXR0
YWNoU2hhZG93KHttb2RlOiAnY2xvc2VkJ30pLmlubmVySFRNTCA9IGAKKyAgICA8ZGl2IHRhYmlu
ZGV4PSIwIiBvbmZvY3VzPSJsb2codGhpcykiPjQuMS4gRm9jdXNhYmxlIGVsZW1lbnQgaW5zaWRl
IGEgc2hhZG93IGhvc3Qgd2l0aCBubyB0YWJpbmRleDwvZGl2PgorYDsKKwordmFyIHMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnaG9zdC13aXRoLXBvc2l0aXZlLXRhYmluZGV4JykuYXR0YWNo
U2hhZG93KHttb2RlOiAnY2xvc2VkJ30pOworcy5pbm5lckhUTUwgPSBgCisgICAgPHNsb3Q+PC9z
bG90PgorICAgIDxkaXYgdGFiaW5kZXg9IjAiIG9uZm9jdXM9ImxvZyh0aGlzKSI+My4xLiBGb2N1
c2FibGUgZWxlbWVudCBpbnNpZGUgYSBzaGFkb3cgaG9zdCB3aXRoIGEgcG9zaXRpdmUgdGFiaW5k
ZXg8L2Rpdj4KK2A7CisKK2UzID0gcy5xdWVyeVNlbGVjdG9yKCdkaXYnKTsKKworZnVuY3Rpb24g
bG9nKGVsZW1lbnQpIHsKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdwcmUnKS50ZXh0Q29u
dGVudCArPSBlbGVtZW50LnRleHRDb250ZW50ICsgJ1xuJzsKK30KKworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCitkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnZmlyc3QnKS5mb2N1cygpOworCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgZXZlbnRTZW5kZXIua2V5RG93bignXHQnKTsKKyAgICBldmVudFNlbmRlci5rZXlEb3duKCdc
dCcpOworICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ1x0Jyk7CisgICAgZXZlbnRTZW5kZXIua2V5
RG93bignXHQnKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdC1jb250ZW50Jyku
c3R5bGUuZGlzcGxheSA9ICdub25lJzsKK30KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlv
bnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9UZXN0
RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxOTcwNDUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTIyNSw2ICsy
MjUsOSBAQCB3ZWJraXQub3JnL2IvMTQ5NDQwIGZhc3Qvc2hhZG93LWRvbS9jc3MtCiB3ZWJraXQu
b3JnL2IvMTQ5NDQxIGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctc2xvdHRlZC1y
dWxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNDk0NDEgZmFzdC9z
aGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy1zbG90LWRpc3BsYXktb3ZlcnJpZGUuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQogCisjIE5vIHRhYiBuYXZpZ2F0aW9uIHN1cHBvcnQgb24gaU9T
CitmYXN0L3NoYWRvdy1kb20vbmVnYXRpdmUtdGFiaW5kZXgtb24tc2hhZG93LWhvc3QuaHRtbCBb
IEZhaWx1cmUgXQorCiB3ZWJraXQub3JnL2IvMTUwMjI1IGZhc3QvY3VzdG9tLWVsZW1lbnRzIFsg
UGFzcyBdCiAKICMgVGhpcyB0ZXN0IG5lZWRzIHRvIGJlIHJld3JpdHRlbiB0byB1c2UgcnVuVUlT
Y3JpcHQgdG8gd29yayBvbiBpT1MK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272522</attachid>
            <date>2016-02-29 14:59:48 -0800</date>
            <delta_ts>2016-03-01 13:28:10 -0800</delta_ts>
            <desc>Minor cleanup</desc>
            <filename>bug-154769-20160229145932.patch</filename>
            <type>text/plain</type>
            <size>14490</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzIyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE2LTAyLTI2ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIENvbnRlbnRzIGluc2lkZSBhIHNo
YWRvdyBob3N0IHdpdGggYSBuZWdhdGl2ZSB0YWJpbmRleCBzaG91bGQgbm90IGJlIHRhYiBmb2N1
c2FibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NDc2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENv
bnRlbnRzIGluc2lkZSBhIHNoYWRvdyBob3N0IHdpdGggYSBuZWdhdGl2ZSB0YWJpbmRleCBjb250
ZW50IGF0dHJpYnV0ZSBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluCisgICAgICAgIHRoZSBzZXF1
ZW50aWFsIGZvY3VzIG5hdmlnYXRpb24gb3JkZXIgc3MgZGlzY3Vzc2VkIG9uIGh0dHBzOi8vZ2l0
aHViLmNvbS93M2Mvd2ViY29tcG9uZW50cy9pc3N1ZXMvMzk5LgorCisgICAgICAgIFRlc3Q6IGZh
c3Qvc2hhZG93LWRvbS9uZWdhdGl2ZS10YWJpbmRleC1vbi1zaGFkb3ctaG9zdC5odG1sCisKKyAg
ICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp0YWJJ
bmRleFNldEV4cGxpY2l0bHkpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAg
ICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNoYWRv
d0FkanVzdGVkVGFiSW5kZXgpOiBSZW5hbWVkIGZyb20gYWRqdXN0ZWRUYWJJbmRleC4gUmV0dXJu
IDAgd2hlbiB0YWJpbmRleCBjb250ZW50IGF0dHJpYnV0ZQorICAgICAgICBpcyBub3QgZXhwbGlj
aXRseSBzZXQgc2luY2UgZWxlbWVudC50YWJJbmRleCgpIHdvdWxkIHJldHVybiAtMSBmb3IgSFRN
TCBlbGVtZW50cyBpbiBzdWNoIGNhc2UuCisgICAgICAgIChXZWJDb3JlOjppc0ZvY3VzYWJsZU9y
SGFzU2hhZG93VHJlZVdpdGhvdXRDdXN0b21Gb2N1c0xvZ2ljKTogUmVuYW1lZCBmcm9tIHNob3Vs
ZFZpc2l0LgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpmaW5kRWxlbWVudFdp
dGhFeGFjdFRhYkluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRFbGVtZW50V2l0aEdyZWF0
ZXJUYWJJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c0VsZW1lbnRXaXRoTG93ZXJU
YWJJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6Om5leHRGb2N1c2Fi
bGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6cHJldmlvdXNG
b2N1c2FibGVFbGVtZW50KToKKwogMjAxNi0wMi0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFnZSBmb3IgcGFyc2VIVE1MSW50
ZWdlciAvIHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcgpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAkocmV2aXNpb24gMTk3MDQ1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNiArMjEyLDExIEBAIHZvaWQgRWxlbWVudDo6c2V0VGFi
SW5kZXhFeHBsaWNpdGx5KHNob3IKICAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS5zZXRUYWJJ
bmRleEV4cGxpY2l0bHkodGFiSW5kZXgpOwogfQogCitib29sIEVsZW1lbnQ6OnRhYkluZGV4U2V0
RXhwbGljaXRseSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgZWxlbWVu
dFJhcmVEYXRhKCktPnRhYkluZGV4U2V0RXhwbGljaXRseSgpOworfQorCiBib29sIEVsZW1lbnQ6
OnN1cHBvcnRzRm9jdXMoKSBjb25zdAogewogICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVs
ZW1lbnRSYXJlRGF0YSgpLT50YWJJbmRleFNldEV4cGxpY2l0bHkoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAkocmV2aXNpb24gMTk3MDQ1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjY2LDYgKzI2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0SG92ZXJlZChib29sIGZsYWcgPSB0cnVlKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Rm9jdXMoYm9vbCBmbGFnKTsKIAorICAgIGJvb2wgdGFiSW5kZXhTZXRFeHBsaWNpdGx5KCkgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdDsKICAgICB2aXJ0dWFs
IGJvb2wgaXNGb2N1c2FibGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEZv
Y3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0ZvY3VzQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9G
b2N1c0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxOTcwNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZvY3VzQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNCwxNCArMjE0LDE2
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0ZvY3VzYWJsZVNoYWRvd0hvc3QKICAgICByZXR1cm4g
aXM8RWxlbWVudD4obm9kZSkgJiYgZG93bmNhc3Q8RWxlbWVudD4obm9kZSkuaXNLZXlib2FyZEZv
Y3VzYWJsZSgmZXZlbnQpICYmIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpLnNoYWRvd1Jvb3QoKSAm
JiAhaGFzQ3VzdG9tRm9jdXNMb2dpYyhkb3duY2FzdDxFbGVtZW50Pihub2RlKSk7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgaW50IGFkanVzdGVkVGFiSW5kZXgoTm9kZSYgbm9kZSwgS2V5Ym9hcmRFdmVu
dCYgZXZlbnQpCitzdGF0aWMgaW5saW5lIGludCBzaGFkb3dBZGp1c3RlZFRhYkluZGV4KEVsZW1l
bnQmIGVsZW1lbnQsIEtleWJvYXJkRXZlbnQmIGV2ZW50KQogewotICAgIGlmICghaXM8RWxlbWVu
dD4obm9kZSkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBpc05vbkZvY3VzYWJsZVNo
YWRvd0hvc3QoZG93bmNhc3Q8RWxlbWVudD4obm9kZSksIGV2ZW50KSA/IDAgOiBkb3duY2FzdDxF
bGVtZW50Pihub2RlKS50YWJJbmRleCgpOworICAgIGlmIChpc05vbkZvY3VzYWJsZVNoYWRvd0hv
c3QoZWxlbWVudCwgZXZlbnQpKSB7CisgICAgICAgIGlmICghZWxlbWVudC50YWJJbmRleFNldEV4
cGxpY2l0bHkoKSkKKyAgICAgICAgICAgIHJldHVybiAwOyAvLyBUcmVhdCBhIHNoYWRvdyBob3N0
IHdpdGhvdXQgdGFiaW5kZXggaWYgaXQgaGFzIHRhYmluZGV4PTAgZXZlbiB0aG91Z2ggSFRNTEVs
ZW1lbnQ6OnRhYkluZGV4IHJldHVybnMgLTEgb24gc3VjaCBhbiBlbGVtZW50LgorICAgIH0KKyAg
ICByZXR1cm4gZWxlbWVudC50YWJJbmRleCgpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgc2hv
dWxkVmlzaXQoRWxlbWVudCYgZWxlbWVudCwgS2V5Ym9hcmRFdmVudCYgZXZlbnQpCitzdGF0aWMg
aW5saW5lIGJvb2wgaXNGb2N1c2FibGVPckhhc1NoYWRvd1RyZWVXaXRob3V0Q3VzdG9tRm9jdXNM
b2dpYyhFbGVtZW50JiBlbGVtZW50LCBLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKICAgICByZXR1
cm4gZWxlbWVudC5pc0tleWJvYXJkRm9jdXNhYmxlKCZldmVudCkgfHwgaXNOb25Gb2N1c2FibGVT
aGFkb3dIb3N0KGVsZW1lbnQsIGV2ZW50KTsKIH0KQEAgLTQ3OSw3ICs0ODEsNyBAQCBFbGVtZW50
KiBGb2N1c0NvbnRyb2xsZXI6OmZpbmRFbGVtZW50V2l0CiAgICAgICAgIGlmICghaXM8RWxlbWVu
dD4oKm5vZGUpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIEVsZW1lbnQmIGVsZW1l
bnQgPSBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSk7Ci0gICAgICAgIGlmIChzaG91bGRWaXNpdChl
bGVtZW50LCAqZXZlbnQpICYmIGFkanVzdGVkVGFiSW5kZXgoZWxlbWVudCwgKmV2ZW50KSA9PSB0
YWJJbmRleCkKKyAgICAgICAgaWYgKGlzRm9jdXNhYmxlT3JIYXNTaGFkb3dUcmVlV2l0aG91dEN1
c3RvbUZvY3VzTG9naWMoZWxlbWVudCwgKmV2ZW50KSAmJiBzaGFkb3dBZGp1c3RlZFRhYkluZGV4
KGVsZW1lbnQsICpldmVudCkgPT0gdGFiSW5kZXgpCiAgICAgICAgICAgICByZXR1cm4gJmVsZW1l
bnQ7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwpAQCAtNDk0LDcgKzQ5Niw3IEBAIHN0YXRp
YyBFbGVtZW50KiBuZXh0RWxlbWVudFdpdGhHcmVhdGVyVGEKICAgICAgICAgaWYgKCFpczxFbGVt
ZW50Pigqbm9kZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgRWxlbWVudCYgZWxl
bWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKTsKLSAgICAgICAgaWYgKHNob3VsZFZpc2l0
KGVsZW1lbnQsIGV2ZW50KSAmJiBlbGVtZW50LnRhYkluZGV4KCkgPiB0YWJJbmRleCAmJiBlbGVt
ZW50LnRhYkluZGV4KCkgPCB3aW5uaW5nVGFiSW5kZXgpIHsKKyAgICAgICAgaWYgKGlzRm9jdXNh
YmxlT3JIYXNTaGFkb3dUcmVlV2l0aG91dEN1c3RvbUZvY3VzTG9naWMoZWxlbWVudCwgZXZlbnQp
ICYmIGVsZW1lbnQudGFiSW5kZXgoKSA+IHRhYkluZGV4ICYmIGVsZW1lbnQudGFiSW5kZXgoKSA8
IHdpbm5pbmdUYWJJbmRleCkgewogICAgICAgICAgICAgd2lubmVyID0gJmVsZW1lbnQ7CiAgICAg
ICAgICAgICB3aW5uaW5nVGFiSW5kZXggPSBlbGVtZW50LnRhYkluZGV4KCk7CiAgICAgICAgIH0K
QEAgLTUxMiw4ICs1MTQsOCBAQCBzdGF0aWMgRWxlbWVudCogcHJldmlvdXNFbGVtZW50V2l0aExv
d2VyCiAgICAgICAgIGlmICghaXM8RWxlbWVudD4oKm5vZGUpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSk7
Ci0gICAgICAgIGludCBjdXJyZW50VGFiSW5kZXggPSBhZGp1c3RlZFRhYkluZGV4KGVsZW1lbnQs
IGV2ZW50KTsKLSAgICAgICAgaWYgKChzaG91bGRWaXNpdChlbGVtZW50LCBldmVudCkgfHwgaXNO
b25Gb2N1c2FibGVTaGFkb3dIb3N0KGVsZW1lbnQsIGV2ZW50KSkgJiYgY3VycmVudFRhYkluZGV4
IDwgdGFiSW5kZXggJiYgY3VycmVudFRhYkluZGV4ID4gd2lubmluZ1RhYkluZGV4KSB7CisgICAg
ICAgIGludCBjdXJyZW50VGFiSW5kZXggPSBzaGFkb3dBZGp1c3RlZFRhYkluZGV4KGVsZW1lbnQs
IGV2ZW50KTsKKyAgICAgICAgaWYgKChpc0ZvY3VzYWJsZU9ySGFzU2hhZG93VHJlZVdpdGhvdXRD
dXN0b21Gb2N1c0xvZ2ljKGVsZW1lbnQsIGV2ZW50KSB8fCBpc05vbkZvY3VzYWJsZVNoYWRvd0hv
c3QoZWxlbWVudCwgZXZlbnQpKSAmJiBjdXJyZW50VGFiSW5kZXggPCB0YWJJbmRleCAmJiBjdXJy
ZW50VGFiSW5kZXggPiB3aW5uaW5nVGFiSW5kZXgpIHsKICAgICAgICAgICAgIHdpbm5lciA9ICZl
bGVtZW50OwogICAgICAgICAgICAgd2lubmluZ1RhYkluZGV4ID0gY3VycmVudFRhYkluZGV4Owog
ICAgICAgICB9CkBAIC01MzUsMzIgKzUzNywzNCBAQCBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6
OnByZXZpb3VzRm9jdXNhCiAKIEVsZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6bmV4dEZvY3VzYWJs
ZUVsZW1lbnQoY29uc3QgRm9jdXNOYXZpZ2F0aW9uU2NvcGUmIHNjb3BlLCBOb2RlKiBzdGFydCwg
S2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CisgICAgaW50IHN0YXJ0VGFiSW5kZXggPSAwOworICAg
IGlmIChzdGFydCAmJiBpczxFbGVtZW50Pigqc3RhcnQpKQorICAgICAgICBzdGFydFRhYkluZGV4
ID0gc2hhZG93QWRqdXN0ZWRUYWJJbmRleChkb3duY2FzdDxFbGVtZW50Pigqc3RhcnQpLCAqZXZl
bnQpOworCiAgICAgaWYgKHN0YXJ0KSB7Ci0gICAgICAgIGludCB0YWJJbmRleCA9IGFkanVzdGVk
VGFiSW5kZXgoKnN0YXJ0LCAqZXZlbnQpOwogICAgICAgICAvLyBJZiBhIG5vZGUgaXMgZXhjbHVk
ZWQgZnJvbSB0aGUgbm9ybWFsIHRhYmJpbmcgY3ljbGUsIHRoZSBuZXh0IGZvY3VzYWJsZSBub2Rl
IGlzIGRldGVybWluZWQgYnkgdHJlZSBvcmRlcgotICAgICAgICBpZiAodGFiSW5kZXggPCAwKSB7
CisgICAgICAgIGlmIChzdGFydFRhYkluZGV4IDwgMCkgewogICAgICAgICAgICAgZm9yIChOb2Rl
KiBub2RlID0gc2NvcGUubmV4dEluU2NvcGUoc3RhcnQpOyBub2RlOyBub2RlID0gc2NvcGUubmV4
dEluU2NvcGUobm9kZSkpIHsKICAgICAgICAgICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KCpub2Rl
KSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgRWxlbWVu
dCYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKTsKLSAgICAgICAgICAgICAgICBp
ZiAoc2hvdWxkVmlzaXQoZWxlbWVudCwgKmV2ZW50KSAmJiBhZGp1c3RlZFRhYkluZGV4KGVsZW1l
bnQsICpldmVudCkgPj0gMCkKKyAgICAgICAgICAgICAgICBpZiAoaXNGb2N1c2FibGVPckhhc1No
YWRvd1RyZWVXaXRob3V0Q3VzdG9tRm9jdXNMb2dpYyhlbGVtZW50LCAqZXZlbnQpICYmIHNoYWRv
d0FkanVzdGVkVGFiSW5kZXgoZWxlbWVudCwgKmV2ZW50KSA+PSAwKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gJmVsZW1lbnQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBGaXJzdCB0cnkgdG8gZmluZCBhIG5vZGUgd2l0aCB0aGUgc2FtZSB0YWJpbmRleCBhcyBz
dGFydCB0aGF0IGNvbWVzIGFmdGVyIHN0YXJ0IGluIHRoZSBzY29wZS4KLSAgICAgICAgaWYgKEVs
ZW1lbnQqIHdpbm5lciA9IGZpbmRFbGVtZW50V2l0aEV4YWN0VGFiSW5kZXgoc2NvcGUsIHNjb3Bl
Lm5leHRJblNjb3BlKHN0YXJ0KSwgdGFiSW5kZXgsIGV2ZW50LCBGb2N1c0RpcmVjdGlvbkZvcndh
cmQpKQorICAgICAgICBpZiAoRWxlbWVudCogd2lubmVyID0gZmluZEVsZW1lbnRXaXRoRXhhY3RU
YWJJbmRleChzY29wZSwgc2NvcGUubmV4dEluU2NvcGUoc3RhcnQpLCBzdGFydFRhYkluZGV4LCBl
dmVudCwgRm9jdXNEaXJlY3Rpb25Gb3J3YXJkKSkKICAgICAgICAgICAgIHJldHVybiB3aW5uZXI7
CiAKLSAgICAgICAgaWYgKCF0YWJJbmRleCkKLSAgICAgICAgICAgIC8vIFdlJ3ZlIHJlYWNoZWQg
dGhlIGxhc3Qgbm9kZSBpbiB0aGUgZG9jdW1lbnQgd2l0aCBhIHRhYmluZGV4IG9mIDAuIFRoaXMg
aXMgdGhlIGVuZCBvZiB0aGUgdGFiYmluZyBvcmRlci4KLSAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICBpZiAoIXN0YXJ0VGFiSW5kZXgpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsg
Ly8gV2UndmUgcmVhY2hlZCB0aGUgbGFzdCBub2RlIGluIHRoZSBkb2N1bWVudCB3aXRoIGEgdGFi
aW5kZXggb2YgMC4gVGhpcyBpcyB0aGUgZW5kIG9mIHRoZSB0YWJiaW5nIG9yZGVyLgogICAgIH0K
IAogICAgIC8vIExvb2sgZm9yIHRoZSBmaXJzdCBFbGVtZW50IGluIHRoZSBzY29wZSB0aGF0Ogog
ICAgIC8vIDEpIGhhcyB0aGUgbG93ZXN0IHRhYmluZGV4IHRoYXQgaXMgaGlnaGVyIHRoYW4gc3Rh
cnQncyB0YWJpbmRleCAob3IgMCwgaWYgc3RhcnQgaXMgbnVsbCksIGFuZAogICAgIC8vIDIpIGNv
bWVzIGZpcnN0IGluIHRoZSBzY29wZSwgaWYgdGhlcmUncyBhIHRpZS4KLSAgICBpZiAoRWxlbWVu
dCogd2lubmVyID0gbmV4dEVsZW1lbnRXaXRoR3JlYXRlclRhYkluZGV4KHNjb3BlLCBzdGFydCA/
IGFkanVzdGVkVGFiSW5kZXgoKnN0YXJ0LCAqZXZlbnQpIDogMCwgKmV2ZW50KSkKKyAgICBpZiAo
RWxlbWVudCogd2lubmVyID0gbmV4dEVsZW1lbnRXaXRoR3JlYXRlclRhYkluZGV4KHNjb3BlLCBz
dGFydFRhYkluZGV4LCAqZXZlbnQpKQogICAgICAgICByZXR1cm4gd2lubmVyOwogCiAgICAgLy8g
VGhlcmUgYXJlIG5vIG5vZGVzIHdpdGggYSB0YWJpbmRleCBncmVhdGVyIHRoYW4gc3RhcnQncyB0
YWJpbmRleCwKQEAgLTU3OCwxNCArNTgyLDEzIEBAIEVsZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6
cHJldmlvdXNGb2N1c2EKICAgICAvLyBGaXJzdCB0cnkgdG8gZmluZCB0aGUgbGFzdCBub2RlIGlu
IHRoZSBzY29wZSB0aGF0IGNvbWVzIGJlZm9yZSBzdGFydCBhbmQgaGFzIHRoZSBzYW1lIHRhYmlu
ZGV4IGFzIHN0YXJ0LgogICAgIC8vIElmIHN0YXJ0IGlzIG51bGwsIGZpbmQgdGhlIGxhc3Qgbm9k
ZSBpbiB0aGUgc2NvcGUgd2l0aCBhIHRhYmluZGV4IG9mIDAuCiAgICAgTm9kZSogc3RhcnRpbmdO
b2RlOwotICAgIGludCBzdGFydGluZ1RhYkluZGV4OworICAgIGludCBzdGFydGluZ1RhYkluZGV4
ID0gMDsKICAgICBpZiAoc3RhcnQpIHsKICAgICAgICAgc3RhcnRpbmdOb2RlID0gc2NvcGUucHJl
dmlvdXNJblNjb3BlKHN0YXJ0KTsKLSAgICAgICAgc3RhcnRpbmdUYWJJbmRleCA9IGFkanVzdGVk
VGFiSW5kZXgoKnN0YXJ0LCAqZXZlbnQpOwotICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChpczxF
bGVtZW50Pigqc3RhcnQpKQorICAgICAgICAgICAgc3RhcnRpbmdUYWJJbmRleCA9IHNoYWRvd0Fk
anVzdGVkVGFiSW5kZXgoZG93bmNhc3Q8RWxlbWVudD4oKnN0YXJ0KSwgKmV2ZW50KTsKKyAgICB9
IGVsc2UKICAgICAgICAgc3RhcnRpbmdOb2RlID0gbGFzdDsKLSAgICAgICAgc3RhcnRpbmdUYWJJ
bmRleCA9IDA7Ci0gICAgfQogCiAgICAgLy8gSG93ZXZlciwgaWYgYSBub2RlIGlzIGV4Y2x1ZGVk
IGZyb20gdGhlIG5vcm1hbCB0YWJiaW5nIGN5Y2xlLCB0aGUgcHJldmlvdXMgZm9jdXNhYmxlIG5v
ZGUgaXMgZGV0ZXJtaW5lZCBieSB0cmVlIG9yZGVyCiAgICAgaWYgKHN0YXJ0aW5nVGFiSW5kZXgg
PCAwKSB7CkBAIC01OTMsNyArNTk2LDcgQEAgRWxlbWVudCogRm9jdXNDb250cm9sbGVyOjpwcmV2
aW91c0ZvY3VzYQogICAgICAgICAgICAgaWYgKCFpczxFbGVtZW50Pigqbm9kZSkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBFbGVtZW50JiBlbGVtZW50ID0gZG93bmNh
c3Q8RWxlbWVudD4oKm5vZGUpOwotICAgICAgICAgICAgaWYgKHNob3VsZFZpc2l0KGVsZW1lbnQs
ICpldmVudCkgJiYgYWRqdXN0ZWRUYWJJbmRleChlbGVtZW50LCAqZXZlbnQpID49IDApCisgICAg
ICAgICAgICBpZiAoaXNGb2N1c2FibGVPckhhc1NoYWRvd1RyZWVXaXRob3V0Q3VzdG9tRm9jdXNM
b2dpYyhlbGVtZW50LCAqZXZlbnQpICYmIHNoYWRvd0FkanVzdGVkVGFiSW5kZXgoZWxlbWVudCwg
KmV2ZW50KSA+PSAwKQogICAgICAgICAgICAgICAgIHJldHVybiAmZWxlbWVudDsKICAgICAgICAg
fQogICAgIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzA0NSkKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE2LTAyLTI2ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIENvbnRlbnRzIGluc2lkZSBhIHNo
YWRvdyBob3N0IHdpdGggYSBuZWdhdGl2ZSB0YWJpbmRleCBzaG91bGQgbm90IGJlIHRhYiBmb2N1
c2FibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NDc2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIGEgdGVzdCBmb3IgbmF2aWdhdGluZyBhY3Jvc3Mgc2hhZG93IGJvdW5kYXJpZXMuCisKKyAg
ICAgICAgKiBmYXN0L3NoYWRvdy1kb20vbmVnYXRpdmUtdGFiaW5kZXgtb24tc2hhZG93LWhvc3Qt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vbmVnYXRpdmUt
dGFiaW5kZXgtb24tc2hhZG93LWhvc3QuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
aW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE2LTAyLTI0ICBDb21taXQgUXVl
dWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMTk3MDMzLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL25lZ2F0
aXZlLXRhYmluZGV4LW9uLXNoYWRvdy1ob3N0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vbmVnYXRpdmUtdGFiaW5kZXgtb24tc2hhZG93LWhv
c3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ct
ZG9tL25lZ2F0aXZlLXRhYmluZGV4LW9uLXNoYWRvdy1ob3N0LWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACitUZXN0cyBmb3Igc2V0dGluZyBhIG5lZ2F0aXZlIHRh
YmluZGV4IG9uIHNoYWRvdyBob3N0LiBFbGVtZW50cyBpbnNpZGUgc3VjaCBhIHNoYWRvdyB0cmVl
IHNob3VsZCBub3QgYmUgaW4gdGhlIHNlcXVlbnRpYWwgbmF2aWdhdGlvbiBvcmRlci4KK1RvIG1h
bnVhbGx5IHRlc3QsIHByZXNzIHRhYiBrZXkgZm91ciB0aW1lcy4gSXQgc2hvdWxkIHRyYXZlcnNl
IGZvY3VzYWJsZSBlbGVtZW50cyBpbiB0aGUgaW5jcmVhc2luZyBudW1lcmljYWwgb3JkZXIuCisK
KzEuIEZpcnN0IHNlcXVlbnRpYWxseSBmb2N1c2FibGUgZWxlbWVudCBvdXRzaWRlIHNoYWRvdyB0
cmVlcworMi4gLyAzLjIuIFNoYWRvdyBob3N0IHdpdGggYSBwb3NpdGl2ZSB0YWJpbmRleAorMy4x
LiBGb2N1c2FibGUgZWxlbWVudCBpbnNpZGUgYSBzaGFkb3cgaG9zdCB3aXRoIGEgcG9zaXRpdmUg
dGFiaW5kZXgKKzIuIC8gMy4yLiBTaGFkb3cgaG9zdCB3aXRoIGEgcG9zaXRpdmUgdGFiaW5kZXgK
KzQuMS4gRm9jdXNhYmxlIGVsZW1lbnQgaW5zaWRlIGEgc2hhZG93IGhvc3Qgd2l0aCBubyB0YWJp
bmRleAorNC4yLiBTaGFkb3cgaG9zdCB3aXRoIG5vIHRhYmluZGV4Cis1LiBMYXN0IHNlcXVlbnRp
YWxseSBmb2N1c2FibGUgZWxlbWVudCBvdXRzaWRlIHNoYWRvdyB0cmVlcworCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vbmVnYXRpdmUtdGFiaW5kZXgtb24tc2hhZG93LWhvc3Qu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vbmVnYXRpdmUt
dGFiaW5kZXgtb24tc2hhZG93LWhvc3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3Qvc2hhZG93LWRvbS9uZWdhdGl2ZS10YWJpbmRleC1vbi1zaGFkb3ctaG9zdC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
Ym9keT4KKzxwPlRlc3RzIGZvciBzZXR0aW5nIGEgbmVnYXRpdmUgdGFiaW5kZXggb24gc2hhZG93
IGhvc3QuIEVsZW1lbnRzIGluc2lkZSBzdWNoIGEgc2hhZG93IHRyZWUgc2hvdWxkIG5vdCBiZSBp
biB0aGUgc2VxdWVudGlhbCBuYXZpZ2F0aW9uIG9yZGVyLjxicj4KK1RvIG1hbnVhbGx5IHRlc3Qs
IHByZXNzIHRhYiBrZXkgZm91ciB0aW1lcy4gSXQgc2hvdWxkIHRyYXZlcnNlIGZvY3VzYWJsZSBl
bGVtZW50cyBpbiB0aGUgaW5jcmVhc2luZyBudW1lcmljYWwgb3JkZXIuPC9wPgorPGRpdiBpZD0i
dGVzdC1jb250ZW50Ij4KKzxkaXYgaWQ9ImZpcnN0IiB0YWJpbmRleD0iMSIgb25mb2N1cz0ibG9n
KHRoaXMpIj4xLiBGaXJzdCBzZXF1ZW50aWFsbHkgZm9jdXNhYmxlIGVsZW1lbnQgb3V0c2lkZSBz
aGFkb3cgdHJlZXM8L2Rpdj4KKzxkaXYgaWQ9Imhvc3Qtd2l0aC1uZWdhdGl2ZS10YWJpbmRleCIg
dGFiaW5kZXg9Ii0xIiBvbmZvY3VzPSJsb2codGhpcykiPlNoYWRvdyBob3N0IHdpdGggYSBuZWdh
dGl2ZSB0YWJpbmRleDwvZGl2PgorPGRpdiBpZD0iaG9zdC13aXRoLW5vLXRhYmluZGV4IiBvbmZv
Y3VzPSJsb2codGhpcykiPjQuMi4gU2hhZG93IGhvc3Qgd2l0aCBubyB0YWJpbmRleDwvZGl2Pgor
PGRpdiBpZD0iaG9zdC13aXRoLXBvc2l0aXZlLXRhYmluZGV4IiB0YWJpbmRleD0iMiIgb25mb2N1
cz0ibG9nKHRoaXMpIj4yLiAvIDMuMi4gU2hhZG93IGhvc3Qgd2l0aCBhIHBvc2l0aXZlIHRhYmlu
ZGV4PC9kaXY+Cis8ZGl2IHRhYmluZGV4PSIwIiBvbmZvY3VzPSJsb2codGhpcykiPjUuIExhc3Qg
c2VxdWVudGlhbGx5IGZvY3VzYWJsZSBlbGVtZW50IG91dHNpZGUgc2hhZG93IHRyZWVzPC9kaXY+
Cis8L2Rpdj4KKzxwcmU+PC9wcmU+Cis8c2NyaXB0PgorCitkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnaG9zdC13aXRoLW5lZ2F0aXZlLXRhYmluZGV4JykuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xv
c2VkJ30pLmlubmVySFRNTCA9IGAKKyAgICA8ZGl2IHRhYmluZGV4PSIwIiBvbmZvY3VzPSJsb2co
dGhpcykiPlNob3VsZCBub3QgYmUgZm9jdXNlZCBhcyBpdCBpcyBpbnNpZGUgYSBzaGFkb3cgaG9z
dCB3aXRoIGEgbmVnYXRpdmUgdGFiaW5kZXg8L2Rpdj4KK2A7CisKK2RvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdob3N0LXdpdGgtbm8tdGFiaW5kZXgnKS5hdHRhY2hTaGFkb3coe21vZGU6ICdjbG9z
ZWQnfSkuaW5uZXJIVE1MID0gYAorICAgIDxkaXYgdGFiaW5kZXg9IjAiIG9uZm9jdXM9ImxvZyh0
aGlzKSI+NC4xLiBGb2N1c2FibGUgZWxlbWVudCBpbnNpZGUgYSBzaGFkb3cgaG9zdCB3aXRoIG5v
IHRhYmluZGV4PC9kaXY+CitgOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaG9zdC13aXRo
LXBvc2l0aXZlLXRhYmluZGV4JykuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xvc2VkJ30pLmlubmVy
SFRNTCA9IGAKKyAgICA8c2xvdD48L3Nsb3Q+CisgICAgPGRpdiB0YWJpbmRleD0iMCIgb25mb2N1
cz0ibG9nKHRoaXMpIj4zLjEuIEZvY3VzYWJsZSBlbGVtZW50IGluc2lkZSBhIHNoYWRvdyBob3N0
IHdpdGggYSBwb3NpdGl2ZSB0YWJpbmRleDwvZGl2PgorYDsKKworZnVuY3Rpb24gbG9nKGVsZW1l
bnQpIHsKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdwcmUnKS50ZXh0Q29udGVudCArPSBl
bGVtZW50LnRleHRDb250ZW50ICsgJ1xuJzsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Zmlyc3QnKS5mb2N1cygpOworCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgZXZlbnRT
ZW5kZXIua2V5RG93bignXHQnKTsKKyAgICBldmVudFNlbmRlci5rZXlEb3duKCdcdCcpOworICAg
IGV2ZW50U2VuZGVyLmtleURvd24oJ1x0Jyk7CisgICAgZXZlbnRTZW5kZXIua2V5RG93bignXHQn
KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdC1jb250ZW50Jykuc3R5bGUuZGlz
cGxheSA9ICdub25lJzsKK30KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0YXRp
b25zCShyZXZpc2lvbiAxOTcwNDUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxh
dG9yL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTIyNSw2ICsyMjUsOSBAQCB3
ZWJraXQub3JnL2IvMTQ5NDQwIGZhc3Qvc2hhZG93LWRvbS9jc3MtCiB3ZWJraXQub3JnL2IvMTQ5
NDQxIGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctc2xvdHRlZC1ydWxlLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNDk0NDEgZmFzdC9zaGFkb3ctZG9t
L2Nzcy1zY29waW5nLXNoYWRvdy1zbG90LWRpc3BsYXktb3ZlcnJpZGUuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQogCisjIE5vIHRhYiBuYXZpZ2F0aW9uIHN1cHBvcnQgb24gaU9TCitmYXN0L3No
YWRvdy1kb20vbmVnYXRpdmUtdGFiaW5kZXgtb24tc2hhZG93LWhvc3QuaHRtbCBbIEZhaWx1cmUg
XQorCiB3ZWJraXQub3JnL2IvMTUwMjI1IGZhc3QvY3VzdG9tLWVsZW1lbnRzIFsgUGFzcyBdCiAK
ICMgVGhpcyB0ZXN0IG5lZWRzIHRvIGJlIHJld3JpdHRlbiB0byB1c2UgcnVuVUlTY3JpcHQgdG8g
d29yayBvbiBpT1MK
</data>
<flag name="review"
          id="297301"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>