<?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>125243</bug_id>
          
          <creation_ts>2013-12-04 12:36:11 -0800</creation_ts>
          <short_desc>[MediaStream] Firing negotiationneeded event upon track add/remove on MediaStream</short_desc>
          <delta_ts>2014-05-19 09:08:13 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>124288</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Thiago de Barros Lacerda">thiago.lacerda</reporter>
          <assigned_to name="Thiago de Barros Lacerda">thiago.lacerda</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>pnormand</cc>
    
    <cc>tommyw</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>956523</commentid>
    <comment_count>0</comment_count>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-12-04 12:36:11 -0800</bug_when>
    <thetext>Spec states that: In particular, if an RTCPeerConnection object is consuming a MediaStream on which a track is added, by, e.g., the addTrack() method being invoked, the RTCPeerConnection object must fire the &quot;negotiationneeded&quot; event. Removal of media components must also trigger &quot;negotiationneeded&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956527</commentid>
    <comment_count>1</comment_count>
      <attachid>218429</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-12-04 12:40:46 -0800</bug_when>
    <thetext>Created attachment 218429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956541</commentid>
    <comment_count>2</comment_count>
      <attachid>218429</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-12-04 13:04:40 -0800</bug_when>
    <thetext>Comment on attachment 218429
Patch

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

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:158
&gt; +            (*observer)-&gt;didAddRemoveTrack();

I am not wild about the name &quot;didAddRemoveTrack&quot;. I would prefer to see two methods, one for add and another for remove, or maybe name like &quot;didAddOrRemoveTrack&quot;.

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:170
&gt; +    for (auto stream = m_localStreams.begin(); stream != m_localStreams.end(); ++stream)
&gt; +        (*stream)-&gt;removeObserver(this);

The vector length won&apos;t change during the loop, so a more efficient way to do this would be to cache the end in the initialization:

for (auto stream = m_localStreams.begin(), end = m_localStreams.end(); stream != end; ++ stream)

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:395
&gt;      bool valid = m_peerHandler-&gt;addStream(stream-&gt;privateStream(), constraints);
&gt;      if (!valid)
&gt;          ec = SYNTAX_ERR;
&gt; +    else {
&gt; +        m_localStreams.append(stream);
&gt; +        stream-&gt;addObserver(this);
&gt; +    }

It would be good to have a test for this change.

&gt; LayoutTests/ChangeLog:13
&gt; +        * fast/mediastream/RTCPeerConnection-onnegotiationneeded.html:

Don&apos;t we also need results for this test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956878</commentid>
    <comment_count>3</comment_count>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-12-05 05:35:42 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 218429 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=218429&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:158
&gt; &gt; +            (*observer)-&gt;didAddRemoveTrack();
&gt; 
&gt; I am not wild about the name &quot;didAddRemoveTrack&quot;. I would prefer to see two methods, one for add and another for remove, or maybe name like &quot;didAddOrRemoveTrack&quot;.

Maybe two methods will be too much, I will rename it to didAddOrRemoveTrack. Is that OK to you?

&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:170
&gt; &gt; +    for (auto stream = m_localStreams.begin(); stream != m_localStreams.end(); ++stream)
&gt; &gt; +        (*stream)-&gt;removeObserver(this);
&gt; 
&gt; The vector length won&apos;t change during the loop, so a more efficient way to do this would be to cache the end in the initialization:

Makes sense

&gt; 
&gt; for (auto stream = m_localStreams.begin(), end = m_localStreams.end(); stream != end; ++ stream)
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:395
&gt; &gt;      bool valid = m_peerHandler-&gt;addStream(stream-&gt;privateStream(), constraints);
&gt; &gt;      if (!valid)
&gt; &gt;          ec = SYNTAX_ERR;
&gt; &gt; +    else {
&gt; &gt; +        m_localStreams.append(stream);
&gt; &gt; +        stream-&gt;addObserver(this);
&gt; &gt; +    }
&gt; 
&gt; It would be good to have a test for this change.

How would I test that? The observers are not accessible in javascript... and API test does that reaches it. But, in some way, the layout test that I&apos;ve updated guarantees it, since negotiationneeded will only be fired if there are observers registered

&gt; 
&gt; &gt; LayoutTests/ChangeLog:13
&gt; &gt; +        * fast/mediastream/RTCPeerConnection-onnegotiationneeded.html:
&gt; 
&gt; Don&apos;t we also need results for this test?

My bad, I forgot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956885</commentid>
    <comment_count>4</comment_count>
      <attachid>218510</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-12-05 06:31:09 -0800</bug_when>
    <thetext>Created attachment 218510
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956892</commentid>
    <comment_count>5</comment_count>
      <attachid>218429</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-12-05 07:05:26 -0800</bug_when>
    <thetext>Comment on attachment 218429
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:158
&gt;&gt;&gt; +            (*observer)-&gt;didAddRemoveTrack();
&gt;&gt; 
&gt;&gt; I am not wild about the name &quot;didAddRemoveTrack&quot;. I would prefer to see two methods, one for add and another for remove, or maybe name like &quot;didAddOrRemoveTrack&quot;.
&gt; 
&gt; Maybe two methods will be too much, I will rename it to didAddOrRemoveTrack. Is that OK to you?

That seems fine, thanks.

&gt;&gt;&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:395
&gt;&gt;&gt; +    }
&gt;&gt; 
&gt;&gt; It would be good to have a test for this change.
&gt; 
&gt; How would I test that? The observers are not accessible in javascript... and API test does that reaches it. But, in some way, the layout test that I&apos;ve updated guarantees it, since negotiationneeded will only be fired if there are observers registered

Can&apos;t you pass an invalid constraint when there is a &apos;negotiationneeded&apos; event listener registered to ensure that the event is not fired?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956893</commentid>
    <comment_count>6</comment_count>
      <attachid>218510</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-12-05 07:08:01 -0800</bug_when>
    <thetext>Comment on attachment 218510
Patch

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

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:157
&gt; +        for (auto observer = m_observers.begin(); observer != m_observers.end(); ++observer)

The length of this vector is also invariant: 

for (auto observer = m_observers.begin(), end = m_observers.end(); observer != end; ++observer)

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:192
&gt; +            (*observer)-&gt;didAddOrRemoveTrack();

Ditto.

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:388
&gt; +    size_t pos = m_observers.find(observer);
&gt; +    if (pos == notFound)

Nit: the local variable is unnecessary.

&gt; LayoutTests/fast/mediastream/RTCPeerConnection-onnegotiationneeded.html:33
&gt; +            function onNegotiationNeeded2(event) {

I see that you are just following the existing style of this test, but a function&apos;s opening brace should be on a new line.

&gt; LayoutTests/fast/mediastream/RTCPeerConnection-onnegotiationneeded.html:38
&gt; +            function onNegotiationNeeded3(event) {

Ditto.

&gt; LayoutTests/fast/mediastream/RTCPeerConnection-onnegotiationneeded.html:53
&gt; +            function removeTrack() {

Ditto.

&gt; LayoutTests/fast/mediastream/RTCPeerConnection-onnegotiationneeded.html:61
&gt; +            function addTrack() {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956894</commentid>
    <comment_count>7</comment_count>
      <attachid>218510</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-12-05 07:09:02 -0800</bug_when>
    <thetext>Comment on attachment 218510
Patch

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

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:191
&gt; +        for (auto observer = m_observers.begin(); observer != m_observers.end(); ++observer)

&quot;Ditto&quot; should be here, not on the next line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956914</commentid>
    <comment_count>8</comment_count>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-12-05 08:45:01 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 218429 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=218429&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:158
&gt; &gt;&gt;&gt; +            (*observer)-&gt;didAddRemoveTrack();
&gt; &gt;&gt; 
&gt; &gt;&gt; I am not wild about the name &quot;didAddRemoveTrack&quot;. I would prefer to see two methods, one for add and another for remove, or maybe name like &quot;didAddOrRemoveTrack&quot;.
&gt; &gt; 
&gt; &gt; Maybe two methods will be too much, I will rename it to didAddOrRemoveTrack. Is that OK to you?
&gt; 
&gt; That seems fine, thanks.
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:395
&gt; &gt;&gt;&gt; +    }
&gt; &gt;&gt; 
&gt; &gt;&gt; It would be good to have a test for this change.
&gt; &gt; 
&gt; &gt; How would I test that? The observers are not accessible in javascript... and API test does that reaches it. But, in some way, the layout test that I&apos;ve updated guarantees it, since negotiationneeded will only be fired if there are observers registered
&gt; 
&gt; Can&apos;t you pass an invalid constraint when there is a &apos;negotiationneeded&apos; event listener registered to ensure that the event is not fired?

Sorry, I thought you were talking about the add/removeObserver method, I was looking at the wrong place. Yes, this can be tested, I&apos;m updating a test to handle that</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956950</commentid>
    <comment_count>9</comment_count>
      <attachid>218522</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-12-05 10:18:38 -0800</bug_when>
    <thetext>Created attachment 218522
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956972</commentid>
    <comment_count>10</comment_count>
      <attachid>218522</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-05 11:20:10 -0800</bug_when>
    <thetext>Comment on attachment 218522
Patch

Clearing flags on attachment: 218522

Committed r160181: &lt;http://trac.webkit.org/changeset/160181&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956973</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-05 11:20:12 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218429</attachid>
            <date>2013-12-04 12:40:46 -0800</date>
            <delta_ts>2013-12-05 07:05:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125243-20131204174045.patch</filename>
            <type>text/plain</type>
            <size>11055</size>
            <attacher name="Thiago de Barros Lacerda">thiago.lacerda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzRiNmExOTE2NzIxYWQ0
ZGE1Mzc3ZDJiY2RmNTZlYmE3ODZhMGU3ZS4uNjcwN2I4ZjUxMGEzODFkNTBjZGYzNWQ2OGQ1YmM2
ZGRlNGJkMWRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEzLTEyLTA0ICBUaGlh
Z28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIFtNZWRpYVN0cmVhbV0gRmlyaW5nIG5lZ290aWF0aW9ubmVlZGVkIGV2ZW50IHVwb24g
dHJhY2sgYWRkL3JlbW92ZSBvbiBNZWRpYVN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MjQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU3BlYyBzdGF0ZXMgdGhhdDogSW4gcGFydGljdWxhciwg
aWYgYW4gUlRDUGVlckNvbm5lY3Rpb24gb2JqZWN0IGlzIGNvbnN1bWluZyBhCisgICAgICAgIE1l
ZGlhU3RyZWFtIG9uIHdoaWNoIGEgdHJhY2sgaXMgYWRkZWQsIGJ5LCBlLmcuLCB0aGUgYWRkVHJh
Y2soKSBtZXRob2QgYmVpbmcgaW52b2tlZCwKKyAgICAgICAgdGhlIFJUQ1BlZXJDb25uZWN0aW9u
IG9iamVjdCBtdXN0IGZpcmUgdGhlICJuZWdvdGlhdGlvbm5lZWRlZCIgZXZlbnQuIFJlbW92YWwg
b2YgbWVkaWEKKyAgICAgICAgY29tcG9uZW50cyBtdXN0IGFsc28gdHJpZ2dlciAibmVnb3RpYXRp
b25uZWVkZWQiLgorCisgICAgICAgIEV4aXN0aW5nIHRlc3Qgd2FzIHVwZGF0ZWQuCisKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bTo6cmVtb3ZlVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmFkZE9ic2Vy
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpyZW1vdmVPYnNlcnZlcik6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDUGVlckNvbm5lY3Rpb246On5SVENQZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6YWRkU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1BlZXJDb25uZWN0aW9uOjpyZW1vdmVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVl
ckNvbm5lY3Rpb246OmRpZEFkZFJlbW92ZVRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmg6CisKIDIwMTMtMTItMDQgIERhbmllbCBCYXRlcyAg
PGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgQXBwbGUgV2luZG93cyBidWls
ZCBhZnRlciA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTYwMTEzPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAppbmRl
eCA3OGFlY2I1ZGZkMzI3OWQxODMxMTUwNmNjMWM1YjIwY2NiNjJjYTRiLi5mYmI5OGVjODI2NGI1
NDRlOTJmYTI1OWMxZmZiMDk0ODA0ODZkZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcApAQCAtMTUzLDcgKzE1MywxMCBAQCB2
b2lkIE1lZGlhU3RyZWFtOjphZGRUcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHBy
cFRyYWNrLCBFeGNlcHRpb25Db2RlJgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYWRk
VHJhY2socHJwVHJhY2spOworICAgIGlmIChhZGRUcmFjayhwcnBUcmFjaykpIHsKKyAgICAgICAg
Zm9yIChhdXRvIG9ic2VydmVyID0gbV9vYnNlcnZlcnMuYmVnaW4oKTsgb2JzZXJ2ZXIgIT0gbV9v
YnNlcnZlcnMuZW5kKCk7ICsrb2JzZXJ2ZXIpCisgICAgICAgICAgICAoKm9ic2VydmVyKS0+ZGlk
QWRkUmVtb3ZlVHJhY2soKTsKKyAgICB9CiB9CiAKIGJvb2wgTWVkaWFTdHJlYW06OmFkZFRyYWNr
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gcHJwVHJhY2spCkBAIC0xODQsNyArMTg3LDEw
IEBAIHZvaWQgTWVkaWFTdHJlYW06OnJlbW92ZVRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1U
cmFjaz4gcHJwVHJhY2ssIEV4Y2VwdGlvbkNvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICByZW1vdmVUcmFjayhwcnBUcmFjayk7CisgICAgaWYgKHJlbW92ZVRyYWNrKHBycFRyYWNrKSkg
eworICAgICAgICBmb3IgKGF1dG8gb2JzZXJ2ZXIgPSBtX29ic2VydmVycy5iZWdpbigpOyBvYnNl
cnZlciAhPSBtX29ic2VydmVycy5lbmQoKTsgKytvYnNlcnZlcikKKyAgICAgICAgICAgICgqb2Jz
ZXJ2ZXIpLT5kaWRBZGRSZW1vdmVUcmFjaygpOworICAgIH0KIH0KIAogYm9vbCBNZWRpYVN0cmVh
bTo6cmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaykKQEAg
LTM3Niw2ICszODIsMjAgQEAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4qIE1lZGlh
U3RyZWFtOjp0cmFja1ZlY3RvckZvclR5cGUoTWVkaWFTdHJlYW1Tb3UKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAordm9pZCBNZWRpYVN0cmVhbTo6YWRkT2JzZXJ2ZXIoTWVkaWFTdHJlYW06Ok9i
c2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBzaXplX3QgcG9zID0gbV9vYnNlcnZlcnMuZmluZChv
YnNlcnZlcik7CisgICAgaWYgKHBvcyA9PSBub3RGb3VuZCkKKyAgICAgICAgbV9vYnNlcnZlcnMu
YXBwZW5kKG9ic2VydmVyKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbTo6cmVtb3ZlT2JzZXJ2ZXIo
TWVkaWFTdHJlYW06Ok9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBzaXplX3QgcG9zID0gbV9v
YnNlcnZlcnMuZmluZChvYnNlcnZlcik7CisgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKKyAgICAg
ICAgbV9vYnNlcnZlcnMucmVtb3ZlKHBvcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKaW5kZXggYTVhNTczMjQ4YWU4N2M2OTgy
M2QwMzI1NDg3ZjNkOWM5YjI2NGZiZC4uZjM2YWNmZjQxYjI4ZTQwOTAwZDk3ZWFlYWJjNWM2MTNm
MzAzNjE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uaApAQCAtNDcsNiArNDcsMTEgQEAgY2xhc3MgTWVkaWFTdHJlYW1DZW50ZXI7CiAK
IGNsYXNzIE1lZGlhU3RyZWFtIEZJTkFMIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW0+
LCBwdWJsaWMgVVJMUmVnaXN0cmFibGUsIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBN
ZWRpYVN0cmVhbVByaXZhdGVDbGllbnQsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRh
LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgorICAgIGNsYXNz
IE9ic2VydmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRSZW1v
dmVUcmFjaygpID0gMDsKKyAgICB9OworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbT4pOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJl
YW1UcmFjaz4+Jik7CkBAIC04Miw2ICs4Nyw5IEBAIHB1YmxpYzoKICAgICAvLyBVUkxSZWdpc3Ry
YWJsZQogICAgIHZpcnR1YWwgVVJMUmVnaXN0cnkmIHJlZ2lzdHJ5KCkgY29uc3QgT1ZFUlJJREU7
CiAKKyAgICB2b2lkIGFkZE9ic2VydmVyKE9ic2VydmVyKik7CisgICAgdm9pZCByZW1vdmVPYnNl
cnZlcihPYnNlcnZlciopOworCiBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFTdHJlYW0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPik7CiAKQEAgLTEx
OSw2ICsxMjcsOCBAQCBwcml2YXRlOgogCiAgICAgVGltZXI8TWVkaWFTdHJlYW0+IG1fc2NoZWR1
bGVkRXZlbnRUaW1lcjsKICAgICBWZWN0b3I8UmVmUHRyPEV2ZW50Pj4gbV9zY2hlZHVsZWRFdmVu
dHM7CisKKyAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKIH07CiAKIHR5cGVkZWYg
VmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbT4+IE1lZGlhU3RyZWFtVmVjdG9yOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LmNwcAppbmRleCBkMzkwNzdlYWZlM2FkNjczZDVjOWRmYThlNDRjYzZmNmNmZGE3MDJlLi5lNWM1
NDE5Nzk4Y2NmMGEyMmIwYjViM2ZjZTgxMmU4OWY5NmE4NDMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApA
QCAtMTY1LDYgKzE2NSw5IEBAIFJUQ1BlZXJDb25uZWN0aW9uOjpSVENQZWVyQ29ubmVjdGlvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBQYXNzUmVmUHRyCiBSVENQZWVyQ29ubmVj
dGlvbjo6flJUQ1BlZXJDb25uZWN0aW9uKCkKIHsKICAgICBzdG9wKCk7CisKKyAgICBmb3IgKGF1
dG8gc3RyZWFtID0gbV9sb2NhbFN0cmVhbXMuYmVnaW4oKTsgc3RyZWFtICE9IG1fbG9jYWxTdHJl
YW1zLmVuZCgpOyArK3N0cmVhbSkKKyAgICAgICAgKCpzdHJlYW0pLT5yZW1vdmVPYnNlcnZlcih0
aGlzKTsKIH0KIAogdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlT2ZmZXIoUGFzc1JlZlB0
cjxSVENTZXNzaW9uRGVzY3JpcHRpb25DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVm
UHRyPFJUQ0Vycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIGNvbnN0IERpY3Rpb25hcnkmIG1l
ZGlhQ29uc3RyYWludHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzgzLDExICszODYsMTMgQEAg
dm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6YWRkU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+
IHBycFN0cmVhbSwgY29uc3QgRGljdGkKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fbG9jYWxTdHJlYW1zLmFwcGVuZChzdHJlYW0pOwotCiAgICAgYm9vbCB2YWxpZCA9IG1f
cGVlckhhbmRsZXItPmFkZFN0cmVhbShzdHJlYW0tPnByaXZhdGVTdHJlYW0oKSwgY29uc3RyYWlu
dHMpOwogICAgIGlmICghdmFsaWQpCiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICBlbHNl
IHsKKyAgICAgICAgbV9sb2NhbFN0cmVhbXMuYXBwZW5kKHN0cmVhbSk7CisgICAgICAgIHN0cmVh
bS0+YWRkT2JzZXJ2ZXIodGhpcyk7CisgICAgfQogfQogCiB2b2lkIFJUQ1BlZXJDb25uZWN0aW9u
OjpyZW1vdmVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gcHJwU3RyZWFtLCBFeGNlcHRp
b25Db2RlJiBlYykKQEAgLTQwOSw3ICs0MTQsNyBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpy
ZW1vdmVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gcHJwU3RyZWFtLCBFeGNlcHRpbwog
ICAgICAgICByZXR1cm47CiAKICAgICBtX2xvY2FsU3RyZWFtcy5yZW1vdmUocG9zKTsKLQorICAg
IHN0cmVhbS0+cmVtb3ZlT2JzZXJ2ZXIodGhpcyk7CiAgICAgbV9wZWVySGFuZGxlci0+cmVtb3Zl
U3RyZWFtKHN0cmVhbS0+cHJpdmF0ZVN0cmVhbSgpKTsKIH0KIApAQCAtNjAxLDYgKzYwNiwxMSBA
QCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpzdG9wKCkKICAgICAgICAgKCppKS0+c3RvcCgpOwog
fQogCit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpkaWRBZGRSZW1vdmVUcmFjaygpCit7CisgICAg
bmVnb3RpYXRpb25OZWVkZWQoKTsKK30KKwogdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6Y2hhbmdl
U2lnbmFsaW5nU3RhdGUoU2lnbmFsaW5nU3RhdGUgc2lnbmFsaW5nU3RhdGUpCiB7CiAgICAgaWYg
KG1fc2lnbmFsaW5nU3RhdGUgIT0gU2lnbmFsaW5nU3RhdGVDbG9zZWQgJiYgbV9zaWduYWxpbmdT
dGF0ZSAhPSBzaWduYWxpbmdTdGF0ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCmluZGV4IDM0YzFlN2E0ZjU4NGJk
NjhkOTliODlmZmRkZTkxOGU3MzUyM2Y4MjcuLjc4MjU1OGNkYjkxOWY1ZDlkYWNjYzU4ZjYzOTJm
ZWY5MWM0MDViYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKQEAgLTU5LDcgKzU5LDcgQEAgY2xhc3MgUlRDU2Vz
c2lvbkRlc2NyaXB0aW9uQ2FsbGJhY2s7CiBjbGFzcyBSVENTdGF0c0NhbGxiYWNrOwogY2xhc3Mg
Vm9pZENhbGxiYWNrOwogCi1jbGFzcyBSVENQZWVyQ29ubmVjdGlvbiBGSU5BTCA6IHB1YmxpYyBS
ZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVi
bGljIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0
aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworY2xhc3MgUlRDUGVlckNvbm5l
Y3Rpb24gRklOQUwgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENQZWVyQ29ubmVjdGlvbj4sIHB1Ymxp
YyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQs
IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0
LCBwdWJsaWMgTWVkaWFTdHJlYW06Ok9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxSVENQZWVyQ29ubmVjdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBjb25zdCBEaWN0aW9uYXJ5JiBydGNDb25maWd1cmF0aW9uLCBjb25zdCBEaWN0aW9uYXJ5JiBt
ZWRpYUNvbnN0cmFpbnRzLCBFeGNlcHRpb25Db2RlJik7CiAgICAgflJUQ1BlZXJDb25uZWN0aW9u
KCk7CkBAIC0xMjcsNiArMTI3LDkgQEAgcHVibGljOgogICAgIC8vIEFjdGl2ZURPTU9iamVjdAog
ICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CiAKKyAgICAvLyBNZWRpYVN0cmVhbTo6
T2JzZXJ2ZXIKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3ZlVHJhY2soKSBPVkVSUklERTsK
KwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8UlRDUGVlckNvbm5lY3Rpb24+OjpyZWY7CiAgICAgdXNp
bmcgUmVmQ291bnRlZDxSVENQZWVyQ29ubmVjdGlvbj46OmRlcmVmOwogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDIyNDM5
NjllYmU0ODA4MTk3M2U3YTg5ZWFiMTRkMzg4YjhjY2MyZi4uOTM5NTNkMWY2Mjg5NWQzYWJiZThj
Mjg2MDMzNjRlMjdiZmQ2YWQ3NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTEyLTA0ICBU
aGlhZ28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgor
CisgICAgICAgIFtNZWRpYVN0cmVhbV0gRmlyaW5nIG5lZ290aWF0aW9ubmVlZGVkIGV2ZW50IHVw
b24gdHJhY2sgYWRkL3JlbW92ZSBvbiBNZWRpYVN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MjQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3BlYyBzdGF0ZXMgdGhhdDogSW4gcGFydGljdWxh
ciwgaWYgYW4gUlRDUGVlckNvbm5lY3Rpb24gb2JqZWN0IGlzIGNvbnN1bWluZyBhCisgICAgICAg
IE1lZGlhU3RyZWFtIG9uIHdoaWNoIGEgdHJhY2sgaXMgYWRkZWQsIGJ5LCBlLmcuLCB0aGUgYWRk
VHJhY2soKSBtZXRob2QgYmVpbmcgaW52b2tlZCwKKyAgICAgICAgdGhlIFJUQ1BlZXJDb25uZWN0
aW9uIG9iamVjdCBtdXN0IGZpcmUgdGhlICJuZWdvdGlhdGlvbm5lZWRlZCIgZXZlbnQuIFJlbW92
YWwgb2YgbWVkaWEKKyAgICAgICAgY29tcG9uZW50cyBtdXN0IGFsc28gdHJpZ2dlciAibmVnb3Rp
YXRpb25uZWVkZWQiLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbi1vbm5lZ290aWF0aW9ubmVlZGVkLmh0bWw6CisKIDIwMTMtMTItMDQgIE1paG5lYSBPdmlk
ZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTU1JlZ2lvbnNdIFRlc3QgZHlu
YW1pYyBjaGFuZ2Ugb2YgcG9zaXRpb24gZm9yIG91dC1vZi1mbG93IHRyYW5zZm9ybWVkIGVsZW1l
bnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24tb25uZWdvdGlhdGlvbm5lZWRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1vbm5lZ290aWF0aW9ubmVlZGVkLmh0bWwKaW5kZXggMmIz
YWIwYzRiY2Q5NWFiYmQxNTk2YzYyMzE1NjYwNzUyNWExY2JiOC4uYmJkNTMzNjM2NWEzMjEzNzI4
NmZjYWZjMmM5OWZhZWVkZDU3NjE0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1vbm5lZ290aWF0aW9ubmVlZGVkLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1vbm5lZ290aWF0
aW9ubmVlZGVkLmh0bWwKQEAgLTksNiArOSw3IEBACiAKICAgICAgICAgICAgIHZhciBzdHJlYW0g
PSBudWxsOwogICAgICAgICAgICAgdmFyIHBjID0gbnVsbDsKKyAgICAgICAgICAgIHZhciB0cmFj
ayA9IG51bGw7CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGVycm9yKCkgewogICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoJ1N0cmVhbSBnZW5lcmF0aW9uIGZhaWxlZC4nKTsKQEAgLTI2LDcgKzI3
LDE2IEBACiAKICAgICAgICAgICAgIGZ1bmN0aW9uIG9uTmVnb3RpYXRpb25OZWVkZWQoZXZlbnQp
IHsKICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdvbk5lZ290aWF0aW9uTmVlZGVkIHdhcyBj
YWxsZWQuJyk7CisgICAgICAgICAgICAgICAgcmVtb3ZlVHJhY2soKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZnVuY3Rpb24gb25OZWdvdGlhdGlvbk5lZWRlZDIoZXZlbnQpIHsKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdvbk5lZ290aWF0aW9uTmVlZGVkIHdhcyBjYWxsZWQg
d2hlbiB0cmFjayB3YXMgcmVtb3ZlZC4nKTsKKyAgICAgICAgICAgICAgICBhZGRUcmFjaygpOwor
ICAgICAgICAgICAgfQogCisgICAgICAgICAgICBmdW5jdGlvbiBvbk5lZ290aWF0aW9uTmVlZGVk
MyhldmVudCkgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ29uTmVnb3RpYXRpb25OZWVk
ZWQgd2FzIGNhbGxlZCB3aGVuIHRyYWNrIHdhcyBhZGRlZC4nKTsKICAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKICAgICAgICAgICAgIH0KIApAQCAtNDAsNiArNTAsMjEgQEAKICAgICAg
ICAgICAgICAgICBwYy5hZGRTdHJlYW0oc3RyZWFtKTsKICAgICAgICAgICAgIH0KIAorICAgICAg
ICAgICAgZnVuY3Rpb24gcmVtb3ZlVHJhY2soKSB7CisgICAgICAgICAgICAgICAgcGMub25uZWdv
dGlhdGlvbm5lZWRlZCA9IG9uTmVnb3RpYXRpb25OZWVkZWQyOworICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCdzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOworICAgICAgICAg
ICAgICAgIHRyYWNrID0gc3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF07CisgICAgICAgICAgICAg
ICAgc3RyZWFtLnJlbW92ZVRyYWNrKHRyYWNrKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgn
c3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzAnKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZnVuY3Rpb24gYWRkVHJhY2soKSB7CisgICAgICAgICAgICAgICAgcGMub25u
ZWdvdGlhdGlvbm5lZWRlZCA9IG9uTmVnb3RpYXRpb25OZWVkZWQzOworICAgICAgICAgICAgICAg
IHNob3VsZEJlKCdzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMCcpOworICAgICAg
ICAgICAgICAgIHN0cmVhbS5hZGRUcmFjayh0cmFjayk7CisgICAgICAgICAgICAgICAgc2hvdWxk
QmUoJ3N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CisgICAgICAgICAgICB9
CisKICAgICAgICAgICAgIGdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdv
dFN0cmVhbSk7CiAKICAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218510</attachid>
            <date>2013-12-05 06:31:09 -0800</date>
            <delta_ts>2013-12-05 10:18:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125243-20131205113107.patch</filename>
            <type>text/plain</type>
            <size>12027</size>
            <attacher name="Thiago de Barros Lacerda">thiago.lacerda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQ2M2JhODQ5YjBhMTlm
YTA4ZWE2NGVjOTliYzJkM2Y0M2UyNDQxMS4uZjFlMWQwODI1ZTVkNDE1ZmFkNTU0NDUxYzFiZjI1
OGFiNjMzYTk2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTEyLTA1ICBUaGlh
Z28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIFtNZWRpYVN0cmVhbV0gRmlyaW5nIG5lZ290aWF0aW9ubmVlZGVkIGV2ZW50IHVwb24g
dHJhY2sgYWRkL3JlbW92ZSBvbiBNZWRpYVN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MjQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU3BlYyBzdGF0ZXMgdGhhdDogSW4gcGFydGljdWxhciwg
aWYgYW4gUlRDUGVlckNvbm5lY3Rpb24gb2JqZWN0IGlzIGNvbnN1bWluZyBhIE1lZGlhU3RyZWFt
IG9uIHdoaWNoIGEgdHJhY2sgaXMKKyAgICAgICAgYWRkZWQsIGJ5LCBlLmcuLCB0aGUgYWRkVHJh
Y2soKSBtZXRob2QgYmVpbmcgaW52b2tlZCwgdGhlIFJUQ1BlZXJDb25uZWN0aW9uIG9iamVjdCBt
dXN0IGZpcmUgdGhlCisgICAgICAgICJuZWdvdGlhdGlvbm5lZWRlZCIgZXZlbnQuIFJlbW92YWwg
b2YgbWVkaWEgY29tcG9uZW50cyBtdXN0IGFsc28gdHJpZ2dlciAibmVnb3RpYXRpb25uZWVkZWQi
LgorCisgICAgICAgIEV4aXN0aW5nIHRlc3Qgd2FzIHVwZGF0ZWQuCisKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6cmVtb3Zl
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmFkZE9ic2VydmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpyZW1vdmVPYnNlcnZlcik6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVl
ckNvbm5lY3Rpb246On5SVENQZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSVENQ
ZWVyQ29ubmVjdGlvbjo6YWRkU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25u
ZWN0aW9uOjpyZW1vdmVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rp
b246OmRpZEFkZE9yUmVtb3ZlVHJhY2spOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uaDoKKwogMjAxMy0xMi0wNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIG1pc3Npbmcgc3ltYm9s
cyB0byBXZWJLaXRET01EZXByZWNhdGVkLnN5bWJvbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggNzhhZWNiNWRmZDMyNzlk
MTgzMTE1MDZjYzFjNWIyMGNjYjYyY2E0Yi4uYmM5NzIyYzcyN2ZhM2QxYWFhYWIyN2MwOTUzOWU5
ODk4NmM0YWRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5jcHAKQEAgLTE1Myw3ICsxNTMsMTAgQEAgdm9pZCBNZWRpYVN0cmVhbTo6
YWRkVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaywgRXhjZXB0aW9u
Q29kZSYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGFkZFRyYWNrKHBycFRyYWNrKTsK
KyAgICBpZiAoYWRkVHJhY2socHJwVHJhY2spKSB7CisgICAgICAgIGZvciAoYXV0byBvYnNlcnZl
ciA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7IG9ic2VydmVyICE9IG1fb2JzZXJ2ZXJzLmVuZCgpOyAr
K29ic2VydmVyKQorICAgICAgICAgICAgKCpvYnNlcnZlciktPmRpZEFkZE9yUmVtb3ZlVHJhY2so
KTsKKyAgICB9CiB9CiAKIGJvb2wgTWVkaWFTdHJlYW06OmFkZFRyYWNrKFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1UcmFjaz4gcHJwVHJhY2spCkBAIC0xODQsNyArMTg3LDEwIEBAIHZvaWQgTWVkaWFT
dHJlYW06OnJlbW92ZVRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gcHJwVHJhY2ss
IEV4Y2VwdGlvbkNvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICByZW1vdmVUcmFjayhw
cnBUcmFjayk7CisgICAgaWYgKHJlbW92ZVRyYWNrKHBycFRyYWNrKSkgeworICAgICAgICBmb3Ig
KGF1dG8gb2JzZXJ2ZXIgPSBtX29ic2VydmVycy5iZWdpbigpOyBvYnNlcnZlciAhPSBtX29ic2Vy
dmVycy5lbmQoKTsgKytvYnNlcnZlcikKKyAgICAgICAgICAgICgqb2JzZXJ2ZXIpLT5kaWRBZGRP
clJlbW92ZVRyYWNrKCk7CisgICAgfQogfQogCiBib29sIE1lZGlhU3RyZWFtOjpyZW1vdmVUcmFj
ayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHBycFRyYWNrKQpAQCAtMzc2LDYgKzM4Miwy
MCBAQCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+PiogTWVkaWFTdHJlYW06OnRyYWNr
VmVjdG9yRm9yVHlwZShNZWRpYVN0cmVhbVNvdQogICAgIHJldHVybiBudWxscHRyOwogfQogCit2
b2lkIE1lZGlhU3RyZWFtOjphZGRPYnNlcnZlcihNZWRpYVN0cmVhbTo6T2JzZXJ2ZXIqIG9ic2Vy
dmVyKQoreworICAgIHNpemVfdCBwb3MgPSBtX29ic2VydmVycy5maW5kKG9ic2VydmVyKTsKKyAg
ICBpZiAocG9zID09IG5vdEZvdW5kKQorICAgICAgICBtX29ic2VydmVycy5hcHBlbmQob2JzZXJ2
ZXIpOworfQorCit2b2lkIE1lZGlhU3RyZWFtOjpyZW1vdmVPYnNlcnZlcihNZWRpYVN0cmVhbTo6
T2JzZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIHNpemVfdCBwb3MgPSBtX29ic2VydmVycy5maW5k
KG9ic2VydmVyKTsKKyAgICBpZiAocG9zICE9IG5vdEZvdW5kKQorICAgICAgICBtX29ic2VydmVy
cy5yZW1vdmUocG9zKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uaAppbmRleCBhNWE1NzMyNDhhZTg3YzY5ODIzZDAzMjU0ODdmM2Q5
YzliMjY0ZmJkLi44ODY1OGIwNzA4Y2U3NzM1ZDU1YzJiMWVlYmQ3MjE1NzMwMDIyNmIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCkBA
IC00Nyw2ICs0NywxMSBAQCBjbGFzcyBNZWRpYVN0cmVhbUNlbnRlcjsKIAogY2xhc3MgTWVkaWFT
dHJlYW0gRklOQUwgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbT4sIHB1YmxpYyBVUkxS
ZWdpc3RyYWJsZSwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIE1lZGlhU3RyZWFtUHJp
dmF0ZUNsaWVudCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CisgICAgY2xhc3MgT2JzZXJ2ZXIgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEFkZE9yUmVtb3ZlVHJhY2soKSA9
IDA7CisgICAgfTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW0+KTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+PiYp
OwpAQCAtODIsNiArODcsOSBAQCBwdWJsaWM6CiAgICAgLy8gVVJMUmVnaXN0cmFibGUKICAgICB2
aXJ0dWFsIFVSTFJlZ2lzdHJ5JiByZWdpc3RyeSgpIGNvbnN0IE9WRVJSSURFOwogCisgICAgdm9p
ZCBhZGRPYnNlcnZlcihPYnNlcnZlciopOworICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2
ZXIqKTsKKwogcHJvdGVjdGVkOgogICAgIE1lZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4pOwogCkBAIC0xMTksNiArMTI3LDgg
QEAgcHJpdmF0ZToKIAogICAgIFRpbWVyPE1lZGlhU3RyZWFtPiBtX3NjaGVkdWxlZEV2ZW50VGlt
ZXI7CiAgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4+IG1fc2NoZWR1bGVkRXZlbnRzOworCisgICAg
VmVjdG9yPE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiB9OwogCiB0eXBlZGVmIFZlY3RvcjxSZWZQ
dHI8TWVkaWFTdHJlYW0+PiBNZWRpYVN0cmVhbVZlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXgg
ZDM5MDc3ZWFmZTNhZDY3M2Q1YzlkZmE4ZTQ0Y2M2ZjZjZmRhNzAyZS4uODM1YWUyMzAwZTdmMmM1
Yjc1MmE3ZmI3NjZkZDIxMWViNmU2ODM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTE2NSw2ICsx
NjUsOSBAQCBSVENQZWVyQ29ubmVjdGlvbjo6UlRDUGVlckNvbm5lY3Rpb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgUGFzc1JlZlB0cgogUlRDUGVlckNvbm5lY3Rpb246On5SVENQ
ZWVyQ29ubmVjdGlvbigpCiB7CiAgICAgc3RvcCgpOworCisgICAgZm9yIChhdXRvIHN0cmVhbSA9
IG1fbG9jYWxTdHJlYW1zLmJlZ2luKCksIGVuZCA9IG1fbG9jYWxTdHJlYW1zLmVuZCgpOyBzdHJl
YW0gIT0gZW5kOyArK3N0cmVhbSkKKyAgICAgICAgKCpzdHJlYW0pLT5yZW1vdmVPYnNlcnZlcih0
aGlzKTsKIH0KIAogdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlT2ZmZXIoUGFzc1JlZlB0
cjxSVENTZXNzaW9uRGVzY3JpcHRpb25DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVm
UHRyPFJUQ0Vycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIGNvbnN0IERpY3Rpb25hcnkmIG1l
ZGlhQ29uc3RyYWludHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzgzLDExICszODYsMTMgQEAg
dm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6YWRkU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+
IHBycFN0cmVhbSwgY29uc3QgRGljdGkKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fbG9jYWxTdHJlYW1zLmFwcGVuZChzdHJlYW0pOwotCiAgICAgYm9vbCB2YWxpZCA9IG1f
cGVlckhhbmRsZXItPmFkZFN0cmVhbShzdHJlYW0tPnByaXZhdGVTdHJlYW0oKSwgY29uc3RyYWlu
dHMpOwogICAgIGlmICghdmFsaWQpCiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICBlbHNl
IHsKKyAgICAgICAgbV9sb2NhbFN0cmVhbXMuYXBwZW5kKHN0cmVhbSk7CisgICAgICAgIHN0cmVh
bS0+YWRkT2JzZXJ2ZXIodGhpcyk7CisgICAgfQogfQogCiB2b2lkIFJUQ1BlZXJDb25uZWN0aW9u
OjpyZW1vdmVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gcHJwU3RyZWFtLCBFeGNlcHRp
b25Db2RlJiBlYykKQEAgLTQwOSw3ICs0MTQsNyBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpy
ZW1vdmVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gcHJwU3RyZWFtLCBFeGNlcHRpbwog
ICAgICAgICByZXR1cm47CiAKICAgICBtX2xvY2FsU3RyZWFtcy5yZW1vdmUocG9zKTsKLQorICAg
IHN0cmVhbS0+cmVtb3ZlT2JzZXJ2ZXIodGhpcyk7CiAgICAgbV9wZWVySGFuZGxlci0+cmVtb3Zl
U3RyZWFtKHN0cmVhbS0+cHJpdmF0ZVN0cmVhbSgpKTsKIH0KIApAQCAtNjAxLDYgKzYwNiwxMSBA
QCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpzdG9wKCkKICAgICAgICAgKCppKS0+c3RvcCgpOwog
fQogCit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpkaWRBZGRPclJlbW92ZVRyYWNrKCkKK3sKKyAg
ICBuZWdvdGlhdGlvbk5lZWRlZCgpOworfQorCiB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpjaGFu
Z2VTaWduYWxpbmdTdGF0ZShTaWduYWxpbmdTdGF0ZSBzaWduYWxpbmdTdGF0ZSkKIHsKICAgICBp
ZiAobV9zaWduYWxpbmdTdGF0ZSAhPSBTaWduYWxpbmdTdGF0ZUNsb3NlZCAmJiBtX3NpZ25hbGlu
Z1N0YXRlICE9IHNpZ25hbGluZ1N0YXRlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggMzRjMWU3YTRmNTg0
YmQ2OGQ5OWI4OWZmZGRlOTE4ZTczNTIzZjgyNy4uNDNiOTZjMzZlMWNmNzkyYzAwNGNlNjk2MGRh
NmY2MDI4ODBhNGU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaApAQCAtNTksNyArNTksNyBAQCBjbGFzcyBSVENT
ZXNzaW9uRGVzY3JpcHRpb25DYWxsYmFjazsKIGNsYXNzIFJUQ1N0YXRzQ2FsbGJhY2s7CiBjbGFz
cyBWb2lkQ2FsbGJhY2s7CiAKLWNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uIEZJTkFMIDogcHVibGlj
IFJlZkNvdW50ZWQ8UlRDUGVlckNvbm5lY3Rpb24+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBw
dWJsaWMgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LCBwdWJsaWMgRXZlbnRUYXJnZXRX
aXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitjbGFzcyBSVENQZWVyQ29u
bmVjdGlvbiBGSU5BTCA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPiwgcHVi
bGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVu
dCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmpl
Y3QsIHB1YmxpYyBNZWRpYVN0cmVhbTo6T2JzZXJ2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIGNvbnN0IERpY3Rpb25hcnkmIHJ0Y0NvbmZpZ3VyYXRpb24sIGNvbnN0IERpY3Rpb25hcnkm
IG1lZGlhQ29uc3RyYWludHMsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB+UlRDUGVlckNvbm5lY3Rp
b24oKTsKQEAgLTEyNyw2ICsxMjcsOSBAQCBwdWJsaWM6CiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0
CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKIAorICAgIC8vIE1lZGlhU3RyZWFt
OjpPYnNlcnZlcgorICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRPclJlbW92ZVRyYWNrKCkgT1ZFUlJJ
REU7CisKICAgICB1c2luZyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPjo6cmVmOwogICAg
IHVzaW5nIFJlZkNvdW50ZWQ8UlRDUGVlckNvbm5lY3Rpb24+OjpkZXJlZjsKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE0
OWIwYzYzYzYzYjRiYjdkM2E2NmRmYjZjOGJlZTE2NmM4NmVjZWEuLjhhYWU3OGY1OTMyYWI1OTcy
ZDkxZDE5Y2ZjMDVmMDdkNGI3OGNhNWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMy0xMi0w
NSAgVGhpYWdvIGRlIEJhcnJvcyBMYWNlcmRhICA8dGhpYWdvLmxhY2VyZGFAb3BlbmJvc3NhLm9y
Zz4KKworICAgICAgICBbTWVkaWFTdHJlYW1dIEZpcmluZyBuZWdvdGlhdGlvbm5lZWRlZCBldmVu
dCB1cG9uIHRyYWNrIGFkZC9yZW1vdmUgb24gTWVkaWFTdHJlYW0KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTI0MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWMgc3RhdGVzIHRoYXQ6IEluIHBhcnRp
Y3VsYXIsIGlmIGFuIFJUQ1BlZXJDb25uZWN0aW9uIG9iamVjdCBpcyBjb25zdW1pbmcgYSBNZWRp
YVN0cmVhbSBvbiB3aGljaCBhIHRyYWNrIGlzCisgICAgICAgIGFkZGVkLCBieSwgZS5nLiwgdGhl
IGFkZFRyYWNrKCkgbWV0aG9kIGJlaW5nIGludm9rZWQsIHRoZSBSVENQZWVyQ29ubmVjdGlvbiBv
YmplY3QgbXVzdCBmaXJlIHRoZQorICAgICAgICAibmVnb3RpYXRpb25uZWVkZWQiIGV2ZW50LiBS
ZW1vdmFsIG9mIG1lZGlhIGNvbXBvbmVudHMgbXVzdCBhbHNvIHRyaWdnZXIgIm5lZ290aWF0aW9u
bmVlZGVkIi4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24t
b25uZWdvdGlhdGlvbm5lZWRlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1vbm5lZ290aWF0aW9ubmVlZGVkLmh0bWw6CisKIDIwMTMt
MTItMDUgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1zdW5nLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkIEVGTCBnYXJkZW5pbmcKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tb25uZWdvdGlhdGlvbm5lZWRl
ZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLW9ubmVnb3RpYXRpb25uZWVkZWQtZXhwZWN0ZWQudHh0CmluZGV4IGQwZjk5ZTg1MjY0
YmJjNGUzNmYyZWJmODY1NWFiMDJhNGE5ZDM5NjQuLmU5ODI4ODZhMDZhYzNkMzE5NWUzMDUyNTEz
N2ZkOGU1OWY1OTNlMDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24tb25uZWdvdGlhdGlvbm5lZWRlZC1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1vbm5lZ290aWF0
aW9ubmVlZGVkLWV4cGVjdGVkLnR4dApAQCAtNSw2ICs1LDEyIEBAIE9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFCiAKIFBBU1MgR290IGEgc3RyZWFtLgogUEFTUyBvbk5lZ290aWF0aW9uTmVlZGVkIHdh
cyBjYWxsZWQuCitQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCitQQVNT
IHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAwCitQQVNTIG9uTmVnb3RpYXRpb25O
ZWVkZWQgd2FzIGNhbGxlZCB3aGVuIHRyYWNrIHdhcyByZW1vdmVkLgorUEFTUyBzdHJlYW0uZ2V0
QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMAorUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5s
ZW5ndGggaXMgMQorUEFTUyBvbk5lZ290aWF0aW9uTmVlZGVkIHdhcyBjYWxsZWQgd2hlbiB0cmFj
ayB3YXMgYWRkZWQuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09N
UExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb24tb25uZWdvdGlhdGlvbm5lZWRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1vbm5lZ290aWF0aW9ubmVlZGVkLmh0bWwKaW5kZXgg
MmIzYWIwYzRiY2Q5NWFiYmQxNTk2YzYyMzE1NjYwNzUyNWExY2JiOC4uYmJkNTMzNjM2NWEzMjEz
NzI4NmZjYWZjMmM5OWZhZWVkZDU3NjE0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1vbm5lZ290aWF0aW9ubmVlZGVkLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1vbm5lZ290
aWF0aW9ubmVlZGVkLmh0bWwKQEAgLTksNiArOSw3IEBACiAKICAgICAgICAgICAgIHZhciBzdHJl
YW0gPSBudWxsOwogICAgICAgICAgICAgdmFyIHBjID0gbnVsbDsKKyAgICAgICAgICAgIHZhciB0
cmFjayA9IG51bGw7CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGVycm9yKCkgewogICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoJ1N0cmVhbSBnZW5lcmF0aW9uIGZhaWxlZC4nKTsKQEAgLTI2LDcg
KzI3LDE2IEBACiAKICAgICAgICAgICAgIGZ1bmN0aW9uIG9uTmVnb3RpYXRpb25OZWVkZWQoZXZl
bnQpIHsKICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdvbk5lZ290aWF0aW9uTmVlZGVkIHdh
cyBjYWxsZWQuJyk7CisgICAgICAgICAgICAgICAgcmVtb3ZlVHJhY2soKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZnVuY3Rpb24gb25OZWdvdGlhdGlvbk5lZWRlZDIoZXZlbnQpIHsK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdvbk5lZ290aWF0aW9uTmVlZGVkIHdhcyBjYWxs
ZWQgd2hlbiB0cmFjayB3YXMgcmVtb3ZlZC4nKTsKKyAgICAgICAgICAgICAgICBhZGRUcmFjaygp
OworICAgICAgICAgICAgfQogCisgICAgICAgICAgICBmdW5jdGlvbiBvbk5lZ290aWF0aW9uTmVl
ZGVkMyhldmVudCkgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ29uTmVnb3RpYXRpb25O
ZWVkZWQgd2FzIGNhbGxlZCB3aGVuIHRyYWNrIHdhcyBhZGRlZC4nKTsKICAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKICAgICAgICAgICAgIH0KIApAQCAtNDAsNiArNTAsMjEgQEAKICAg
ICAgICAgICAgICAgICBwYy5hZGRTdHJlYW0oc3RyZWFtKTsKICAgICAgICAgICAgIH0KIAorICAg
ICAgICAgICAgZnVuY3Rpb24gcmVtb3ZlVHJhY2soKSB7CisgICAgICAgICAgICAgICAgcGMub25u
ZWdvdGlhdGlvbm5lZWRlZCA9IG9uTmVnb3RpYXRpb25OZWVkZWQyOworICAgICAgICAgICAgICAg
IHNob3VsZEJlKCdzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOworICAgICAg
ICAgICAgICAgIHRyYWNrID0gc3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF07CisgICAgICAgICAg
ICAgICAgc3RyZWFtLnJlbW92ZVRyYWNrKHRyYWNrKTsKKyAgICAgICAgICAgICAgICBzaG91bGRC
ZSgnc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzAnKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZnVuY3Rpb24gYWRkVHJhY2soKSB7CisgICAgICAgICAgICAgICAgcGMu
b25uZWdvdGlhdGlvbm5lZWRlZCA9IG9uTmVnb3RpYXRpb25OZWVkZWQzOworICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCdzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMCcpOworICAg
ICAgICAgICAgICAgIHN0cmVhbS5hZGRUcmFjayh0cmFjayk7CisgICAgICAgICAgICAgICAgc2hv
dWxkQmUoJ3N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CisgICAgICAgICAg
ICB9CisKICAgICAgICAgICAgIGdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0s
IGdvdFN0cmVhbSk7CiAKICAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218522</attachid>
            <date>2013-12-05 10:18:38 -0800</date>
            <delta_ts>2013-12-05 11:20:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125243-20131205151836.patch</filename>
            <type>text/plain</type>
            <size>17573</size>
            <attacher name="Thiago de Barros Lacerda">thiago.lacerda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTQyN2YxNTkxNjQzYjUx
NWY1ZmIzMmM1YjEzNGYwZTNjYTFlOGFiMy4uYzkzOTBlNDA3ZTgzMDQ1YjdmYzgzNmIyNzAzNTU0
ODRjMmMxZDg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEzLTEyLTA1ICBUaGlh
Z28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIFtNZWRpYVN0cmVhbV0gRmlyaW5nIG5lZ290aWF0aW9ubmVlZGVkIGV2ZW50IHVwb24g
dHJhY2sgYWRkL3JlbW92ZSBvbiBNZWRpYVN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1MjQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU3BlYyBzdGF0ZXMgdGhhdDogSW4gcGFydGljdWxhciwg
aWYgYW4gUlRDUGVlckNvbm5lY3Rpb24gb2JqZWN0IGlzIGNvbnN1bWluZyBhIE1lZGlhU3RyZWFt
IG9uIHdoaWNoIGEgdHJhY2sgaXMKKyAgICAgICAgYWRkZWQsIGJ5LCBlLmcuLCB0aGUgYWRkVHJh
Y2soKSBtZXRob2QgYmVpbmcgaW52b2tlZCwgdGhlIFJUQ1BlZXJDb25uZWN0aW9uIG9iamVjdCBt
dXN0IGZpcmUgdGhlCisgICAgICAgICJuZWdvdGlhdGlvbm5lZWRlZCIgZXZlbnQuIFJlbW92YWwg
b2YgbWVkaWEgY29tcG9uZW50cyBtdXN0IGFsc28gdHJpZ2dlciAibmVnb3RpYXRpb25uZWVkZWQi
LgorCisgICAgICAgIEV4aXN0aW5nIHRlc3RzIHVwZGF0ZWQuCisKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6cmVtb3ZlVHJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmFkZE9ic2VydmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpyZW1vdmVPYnNlcnZlcik6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNv
bm5lY3Rpb246On5SVENQZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVy
Q29ubmVjdGlvbjo6YWRkU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0
aW9uOjpyZW1vdmVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246
OmRpZEFkZE9yUmVtb3ZlVHJhY2spOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1JUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyTW9jazo6YWRkU3RyZWFtKToKKwogMjAxMy0xMi0wNSAgQmV0aCBEYWtpbiAgPGJkYWtp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQmFkIHJlcGFpbnRzIG9uIHR3aXR0ZXIgd2hlbiB0aGUg
dGlsZSBjYWNoZSBoYXMgYSBtYXJnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggNzhhZWNiNWRmZDMyNzlkMTgzMTE1MDZj
YzFjNWIyMGNjYjYyY2E0Yi4uMjJlYzNkNGNjOGYzYjIxMGU5MmU2ZGQzODM5ZTE3YmJiNzM4Yjcw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5jcHAKQEAgLTE1Myw3ICsxNTMsMTAgQEAgdm9pZCBNZWRpYVN0cmVhbTo6YWRkVHJhY2so
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaywgRXhjZXB0aW9uQ29kZSYKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGFkZFRyYWNrKHBycFRyYWNrKTsKKyAgICBpZiAo
YWRkVHJhY2socHJwVHJhY2spKSB7CisgICAgICAgIGZvciAoYXV0byBvYnNlcnZlciA9IG1fb2Jz
ZXJ2ZXJzLmJlZ2luKCksIGVuZCA9IG1fb2JzZXJ2ZXJzLmVuZCgpOyBvYnNlcnZlciAhPSBlbmQ7
ICsrb2JzZXJ2ZXIpCisgICAgICAgICAgICAoKm9ic2VydmVyKS0+ZGlkQWRkT3JSZW1vdmVUcmFj
aygpOworICAgIH0KIH0KIAogYm9vbCBNZWRpYVN0cmVhbTo6YWRkVHJhY2soUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaykKQEAgLTE4NCw3ICsxODcsMTAgQEAgdm9pZCBNZWRp
YVN0cmVhbTo6cmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFj
aywgRXhjZXB0aW9uQ28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJlbW92ZVRyYWNr
KHBycFRyYWNrKTsKKyAgICBpZiAocmVtb3ZlVHJhY2socHJwVHJhY2spKSB7CisgICAgICAgIGZv
ciAoYXV0byBvYnNlcnZlciA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCksIGVuZCA9IG1fb2JzZXJ2ZXJz
LmVuZCgpOyBvYnNlcnZlciAhPSBlbmQ7ICsrb2JzZXJ2ZXIpCisgICAgICAgICAgICAoKm9ic2Vy
dmVyKS0+ZGlkQWRkT3JSZW1vdmVUcmFjaygpOworICAgIH0KIH0KIAogYm9vbCBNZWRpYVN0cmVh
bTo6cmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaykKQEAg
LTM3Niw2ICszODIsMTkgQEAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4qIE1lZGlh
U3RyZWFtOjp0cmFja1ZlY3RvckZvclR5cGUoTWVkaWFTdHJlYW1Tb3UKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAordm9pZCBNZWRpYVN0cmVhbTo6YWRkT2JzZXJ2ZXIoTWVkaWFTdHJlYW06Ok9i
c2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBpZiAobV9vYnNlcnZlcnMuZmluZChvYnNlcnZlcikg
PT0gbm90Rm91bmQpCisgICAgICAgIG1fb2JzZXJ2ZXJzLmFwcGVuZChvYnNlcnZlcik7Cit9CisK
K3ZvaWQgTWVkaWFTdHJlYW06OnJlbW92ZU9ic2VydmVyKE1lZGlhU3RyZWFtOjpPYnNlcnZlciog
b2JzZXJ2ZXIpCit7CisgICAgc2l6ZV90IHBvcyA9IG1fb2JzZXJ2ZXJzLmZpbmQob2JzZXJ2ZXIp
OworICAgIGlmIChwb3MgIT0gbm90Rm91bmQpCisgICAgICAgIG1fb2JzZXJ2ZXJzLnJlbW92ZShw
b3MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbS5oCmluZGV4IGE1YTU3MzI0OGFlODdjNjk4MjNkMDMyNTQ4N2YzZDljOWIyNjRmYmQu
Ljg4NjU4YjA3MDhjZTc3MzVkNTVjMmIxZWViZDcyMTU3MzAwMjI2YjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKQEAgLTQ3LDYgKzQ3
LDExIEBAIGNsYXNzIE1lZGlhU3RyZWFtQ2VudGVyOwogCiBjbGFzcyBNZWRpYVN0cmVhbSBGSU5B
TCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtPiwgcHVibGljIFVSTFJlZ2lzdHJhYmxl
LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgTWVkaWFTdHJlYW1Qcml2YXRlQ2xpZW50
LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIENvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKKyAgICBjbGFzcyBPYnNlcnZlciB7CisgICAgcHVibGlj
OgorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkT3JSZW1vdmVUcmFjaygpID0gMDsKKyAgICB9
OworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0Jik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4pOwogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+Jik7CkBAIC04Miw2
ICs4Nyw5IEBAIHB1YmxpYzoKICAgICAvLyBVUkxSZWdpc3RyYWJsZQogICAgIHZpcnR1YWwgVVJM
UmVnaXN0cnkmIHJlZ2lzdHJ5KCkgY29uc3QgT1ZFUlJJREU7CiAKKyAgICB2b2lkIGFkZE9ic2Vy
dmVyKE9ic2VydmVyKik7CisgICAgdm9pZCByZW1vdmVPYnNlcnZlcihPYnNlcnZlciopOworCiBw
cm90ZWN0ZWQ6CiAgICAgTWVkaWFTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPik7CiAKQEAgLTExOSw2ICsxMjcsOCBAQCBwcml2YXRl
OgogCiAgICAgVGltZXI8TWVkaWFTdHJlYW0+IG1fc2NoZWR1bGVkRXZlbnRUaW1lcjsKICAgICBW
ZWN0b3I8UmVmUHRyPEV2ZW50Pj4gbV9zY2hlZHVsZWRFdmVudHM7CisKKyAgICBWZWN0b3I8T2Jz
ZXJ2ZXIqPiBtX29ic2VydmVyczsKIH07CiAKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxNZWRpYVN0
cmVhbT4+IE1lZGlhU3RyZWFtVmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAppbmRleCBkMzkwNzdlYWZl
M2FkNjczZDVjOWRmYThlNDRjYzZmNmNmZGE3MDJlLi44MzVhZTIzMDBlN2YyYzViNzUyYTdmYjc2
NmRkMjExZWI2ZTY4MzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApAQCAtMTY1LDYgKzE2NSw5IEBAIFJU
Q1BlZXJDb25uZWN0aW9uOjpSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBQYXNzUmVmUHRyCiBSVENQZWVyQ29ubmVjdGlvbjo6flJUQ1BlZXJDb25uZWN0
aW9uKCkKIHsKICAgICBzdG9wKCk7CisKKyAgICBmb3IgKGF1dG8gc3RyZWFtID0gbV9sb2NhbFN0
cmVhbXMuYmVnaW4oKSwgZW5kID0gbV9sb2NhbFN0cmVhbXMuZW5kKCk7IHN0cmVhbSAhPSBlbmQ7
ICsrc3RyZWFtKQorICAgICAgICAoKnN0cmVhbSktPnJlbW92ZU9ic2VydmVyKHRoaXMpOwogfQog
CiB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpjcmVhdGVPZmZlcihQYXNzUmVmUHRyPFJUQ1Nlc3Np
b25EZXNjcmlwdGlvbkNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UlRDRXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgY29uc3QgRGljdGlvbmFyeSYgbWVkaWFDb25zdHJh
aW50cywgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0zODMsMTEgKzM4NiwxMyBAQCB2b2lkIFJUQ1Bl
ZXJDb25uZWN0aW9uOjphZGRTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gcHJwU3RyZWFt
LCBjb25zdCBEaWN0aQogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9sb2Nh
bFN0cmVhbXMuYXBwZW5kKHN0cmVhbSk7Ci0KICAgICBib29sIHZhbGlkID0gbV9wZWVySGFuZGxl
ci0+YWRkU3RyZWFtKHN0cmVhbS0+cHJpdmF0ZVN0cmVhbSgpLCBjb25zdHJhaW50cyk7CiAgICAg
aWYgKCF2YWxpZCkKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgIGVsc2UgeworICAgICAg
ICBtX2xvY2FsU3RyZWFtcy5hcHBlbmQoc3RyZWFtKTsKKyAgICAgICAgc3RyZWFtLT5hZGRPYnNl
cnZlcih0aGlzKTsKKyAgICB9CiB9CiAKIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnJlbW92ZVN0
cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBwcnBTdHJlYW0sIEV4Y2VwdGlvbkNvZGUmIGVj
KQpAQCAtNDA5LDcgKzQxNCw3IEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnJlbW92ZVN0cmVh
bShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBwcnBTdHJlYW0sIEV4Y2VwdGlvCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1fbG9jYWxTdHJlYW1zLnJlbW92ZShwb3MpOwotCisgICAgc3RyZWFtLT5y
ZW1vdmVPYnNlcnZlcih0aGlzKTsKICAgICBtX3BlZXJIYW5kbGVyLT5yZW1vdmVTdHJlYW0oc3Ry
ZWFtLT5wcml2YXRlU3RyZWFtKCkpOwogfQogCkBAIC02MDEsNiArNjA2LDExIEBAIHZvaWQgUlRD
UGVlckNvbm5lY3Rpb246OnN0b3AoKQogICAgICAgICAoKmkpLT5zdG9wKCk7CiB9CiAKK3ZvaWQg
UlRDUGVlckNvbm5lY3Rpb246OmRpZEFkZE9yUmVtb3ZlVHJhY2soKQoreworICAgIG5lZ290aWF0
aW9uTmVlZGVkKCk7Cit9CisKIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmNoYW5nZVNpZ25hbGlu
Z1N0YXRlKFNpZ25hbGluZ1N0YXRlIHNpZ25hbGluZ1N0YXRlKQogewogICAgIGlmIChtX3NpZ25h
bGluZ1N0YXRlICE9IFNpZ25hbGluZ1N0YXRlQ2xvc2VkICYmIG1fc2lnbmFsaW5nU3RhdGUgIT0g
c2lnbmFsaW5nU3RhdGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAppbmRleCAzNGMxZTdhNGY1ODRiZDY4ZDk5Yjg5
ZmZkZGU5MThlNzM1MjNmODI3Li40M2I5NmMzNmUxY2Y3OTJjMDA0Y2U2OTYwZGE2ZjYwMjg4MGE0
ZThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5oCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIFJUQ1Nlc3Npb25EZXNj
cmlwdGlvbkNhbGxiYWNrOwogY2xhc3MgUlRDU3RhdHNDYWxsYmFjazsKIGNsYXNzIFZvaWRDYWxs
YmFjazsKIAotY2xhc3MgUlRDUGVlckNvbm5lY3Rpb24gRklOQUwgOiBwdWJsaWMgUmVmQ291bnRl
ZDxSVENQZWVyQ29ubmVjdGlvbj4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVE
YXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKK2NsYXNzIFJUQ1BlZXJDb25uZWN0aW9uIEZJ
TkFMIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDUGVlckNvbm5lY3Rpb24+LCBwdWJsaWMgU2NyaXB0
V3JhcHBhYmxlLCBwdWJsaWMgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LCBwdWJsaWMg
RXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGlj
IE1lZGlhU3RyZWFtOjpPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
UlRDUGVlckNvbm5lY3Rpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3Qg
RGljdGlvbmFyeSYgcnRjQ29uZmlndXJhdGlvbiwgY29uc3QgRGljdGlvbmFyeSYgbWVkaWFDb25z
dHJhaW50cywgRXhjZXB0aW9uQ29kZSYpOwogICAgIH5SVENQZWVyQ29ubmVjdGlvbigpOwpAQCAt
MTI3LDYgKzEyNyw5IEBAIHB1YmxpYzoKICAgICAvLyBBY3RpdmVET01PYmplY3QKICAgICB2aXJ0
dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwogCisgICAgLy8gTWVkaWFTdHJlYW06Ok9ic2VydmVy
CisgICAgdmlydHVhbCB2b2lkIGRpZEFkZE9yUmVtb3ZlVHJhY2soKSBPVkVSUklERTsKKwogICAg
IHVzaW5nIFJlZkNvdW50ZWQ8UlRDUGVlckNvbm5lY3Rpb24+OjpyZWY7CiAgICAgdXNpbmcgUmVm
Q291bnRlZDxSVENQZWVyQ29ubmVjdGlvbj46OmRlcmVmOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2Nr
LmNwcAppbmRleCBlYmE1NzU1YmZkYzQ2ODIwMWUwZTg5YTBhMWUzNDA1NDZiMDEyYjU3Li41Zjc2
YmFmNjA4MDEyYjkxZDMzOTIzNzM2ODBmZmEwM2U4ZGQwMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
TW9jay5jcHAKQEAgLTEzNSw4ICsxMzUsMTIgQEAgYm9vbCBSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJNb2NrOjphZGRJY2VDYW5kaWRhdGUoUGFzc1JlZlB0cjxSVENWb2lkUmVxdWVzdD4gcmUKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrOjph
ZGRTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+LCBQYXNzUmVmUHRyPE1lZGlh
Q29uc3RyYWludHM+KQorYm9vbCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrOjphZGRTdHJl
YW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHM+IGNvbnN0cmFpbnRzKQogeworICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSBNZWRpYUNv
bnN0cmFpbnRzTW9jazo6dmVyaWZ5Q29uc3RyYWludHMoY29uc3RyYWludHMpOworICAgIGlmICgh
aW52YWxpZFF1ZXJ5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgLy8g
U3BlYyBzdGF0ZXMgdGhhdCBldmVyeSB0aW1lIGEgc3RyZWFtIGlzIGFkZGVkLCBhIG5lZ290aWF0
aW9ubmVlZGVkIGV2ZW50IG11c3QgYmUgZmlyZWQuCiAgICAgbV9jbGllbnQtPm5lZ290aWF0aW9u
TmVlZGVkKCk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjMxMzA2ODRiMzAwMDc5MWI2Mjcz
ZmEyOGNlNWM4YzM4ZDdkMjhkMi4uZTEzMjkxMjRmYmI2MzE5OWIzOWI1ODM4NjhkZjQ0NmY1ZGFh
NGNiMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTEyLTA1ICBUaGlhZ28gZGUgQmFycm9z
IExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtNZWRp
YVN0cmVhbV0gRmlyaW5nIG5lZ290aWF0aW9ubmVlZGVkIGV2ZW50IHVwb24gdHJhY2sgYWRkL3Jl
bW92ZSBvbiBNZWRpYVN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI1MjQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU3BlYyBzdGF0ZXMgdGhhdDogSW4gcGFydGljdWxhciwgaWYgYW4gUlRDUGVl
ckNvbm5lY3Rpb24gb2JqZWN0IGlzIGNvbnN1bWluZyBhIE1lZGlhU3RyZWFtIG9uIHdoaWNoIGEg
dHJhY2sgaXMKKyAgICAgICAgYWRkZWQsIGJ5LCBlLmcuLCB0aGUgYWRkVHJhY2soKSBtZXRob2Qg
YmVpbmcgaW52b2tlZCwgdGhlIFJUQ1BlZXJDb25uZWN0aW9uIG9iamVjdCBtdXN0IGZpcmUgdGhl
CisgICAgICAgICJuZWdvdGlhdGlvbm5lZWRlZCIgZXZlbnQuIFJlbW92YWwgb2YgbWVkaWEgY29t
cG9uZW50cyBtdXN0IGFsc28gdHJpZ2dlciAibmVnb3RpYXRpb25uZWVkZWQiLgorCisgICAgICAg
ICogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1BZGRSZW1vdmVTdHJlYW0tZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24t
QWRkUmVtb3ZlU3RyZWFtLmh0bWw6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbi1vbm5lZ290aWF0aW9ubmVlZGVkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLW9ubmVnb3RpYXRpb25uZWVkZWQuaHRt
bDoKKwogMjAxMy0xMi0wNSAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBbQ1NTIFNoYXBlc10gRml4IGluc2V0IHdoZW4gb25seSBhIHN1YnNldCBvZiB0aGUg
YXJndW1lbnRzIGFyZSBkZWZpbmVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLUFkZFJlbW92ZVN0cmVhbS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLUFkZFJlbW92ZVN0
cmVhbS1leHBlY3RlZC50eHQKaW5kZXggOGNkN2MwOWY4MzgyZGVkMTUyMTM5MzBiY2YxYjRlN2Iy
YzY2NDIyNS4uMDczMmMzMzEzMDMyNTQ2ZDNlYzk3YzIzMzBiYzI1MzllNmMwZjBjMCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1BZGRS
ZW1vdmVTdHJlYW0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24tQWRkUmVtb3ZlU3RyZWFtLWV4cGVjdGVkLnR4dApAQCAtNCw2
ICs0LDggQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogCiBQQVNTIEdvdCBhIHN0cmVhbS4K
K1BBU1MgcGMuYWRkU3RyZWFtKHN0cmVhbSwge21hbmRhdG9yeTp7aW52YWxpZDoxfX0pIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTIuCitQQVNTIHBj
LmdldExvY2FsU3RyZWFtcygpLmxlbmd0aCBpcyAwCiBQQVNTIEdvdCBhbm90aGVyIHN0cmVhbS4K
IFBBU1Mgc3RyZWFtLmlkID09PSBzdHJlYW0yLmlkIGlzIGZhbHNlCiBQQVNTIG9uQWRkU3RyZWFt
IHdhcyBjYWxsZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLUFkZFJlbW92ZVN0cmVhbS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1BZGRSZW1vdmVTdHJlYW0uaHRtbAppbmRleCAw
YjA5MDI3YzdkOTdmYTQ0NTM5MzQ2NjIxMGJlOWVmMmY1YjU4OWUyLi44ODI4NjBiZGZlZDNkNTgy
ZjVkYTRjMTJkM2NkMzczNmE1MGY1ZTdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLUFkZFJlbW92ZVN0cmVhbS5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tQWRkUmVtb3ZlU3Ry
ZWFtLmh0bWwKQEAgLTExLDEyICsxMSwxNCBAQAogICAgICAgICAgICAgdmFyIHN0cmVhbTIgPSBu
dWxsOwogICAgICAgICAgICAgdmFyIHBjID0gbnVsbDsKIAotICAgICAgICAgICAgZnVuY3Rpb24g
ZXJyb3IoKSB7CisgICAgICAgICAgICBmdW5jdGlvbiBlcnJvcigpCisgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnU3RyZWFtIGdlbmVyYXRpb24gZmFpbGVkLicpOwog
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBmdW5jdGlvbiBnZXRVc2VyTWVkaWEoZGljdGlvbmFyeSwgY2FsbGJhY2spIHsKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIGdldFVzZXJNZWRpYShkaWN0aW9uYXJ5LCBjYWxsYmFjaykKKyAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICBuYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKGRpY3Rpb25hcnksIGNhbGxiYWNrLCBlcnJvcik7CiAg
ICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewpAQCAtMjUsMTIgKzI3LDE0IEBACiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBvbkVycm9u
ZW91c05lZ290aWF0aW9uTmVlZGVkKCkgeworICAgICAgICAgICAgZnVuY3Rpb24gb25FcnJvbmVv
dXNOZWdvdGlhdGlvbk5lZWRlZCgpCisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgnb25FcnJvbmVvdXNOZWdvdGlhdGlvbk5lZWRlZCB3YXMgY2FsbGVkLicpOwogICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBmdW5jdGlvbiBvblJlbW92ZVN0cmVhbShldmVudCkgeworICAgICAgICAgICAgZnVuY3Rpb24g
b25SZW1vdmVTdHJlYW0oZXZlbnQpCisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgnb25SZW1vdmVTdHJlYW0gd2FzIGNhbGxlZC4nKTsKIAogICAgICAgICAgICAgICAg
IHNob3VsZEJlKCdwYy5nZXRMb2NhbFN0cmVhbXMoKS5sZW5ndGgnLCAnMCcpOwpAQCAtMzgsNyAr
NDIsOCBAQAogICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBmdW5jdGlvbiBvbkFkZFN0cmVhbShldmVudCkgeworICAgICAgICAgICAg
ZnVuY3Rpb24gb25BZGRTdHJlYW0oZXZlbnQpCisgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgnb25BZGRTdHJlYW0gd2FzIGNhbGxlZC4nKTsKIAogICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCdwYy5nZXRTdHJlYW1CeUlkKHN0cmVhbS5pZCknLCAnc3RyZWFtJyk7CkBA
IC01NCwyMSArNTksMjggQEAKICAgICAgICAgICAgICAgICBwYy5yZW1vdmVTdHJlYW0oc3RyZWFt
KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtMihzKSB7
CisgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW0yKHMpCisgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgnR290IGFub3RoZXIgc3RyZWFtLicpOwogICAgICAgICAg
ICAgICAgIHN0cmVhbTIgPSBzOwogCiAgICAgICAgICAgICAgICAgc2hvdWxkQmVGYWxzZSgic3Ry
ZWFtLmlkID09PSBzdHJlYW0yLmlkIik7CiAKLSAgICAgICAgICAgICAgICBwYyA9IG5ldyB3ZWJr
aXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbXX0pOwogICAgICAgICAgICAgICAgIHBj
Lm9ubmVnb3RpYXRpb25uZWVkZWQgPSBvbkFkZFN0cmVhbTsKICAgICAgICAgICAgICAgICBwYy5h
ZGRTdHJlYW0oc3RyZWFtKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZnVuY3Rpb24g
Z290U3RyZWFtMShzKSB7CisgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW0xKHMpCisgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnR290IGEgc3RyZWFtLicpOwog
ICAgICAgICAgICAgICAgIHN0cmVhbSA9IHM7CiAKKyAgICAgICAgICAgICAgICBwYyA9IG5ldyB3
ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbXX0pOworICAgICAgICAgICAgICAg
IHBjLm9ubmVnb3RpYXRpb25uZWVkZWQgPSBvbkVycm9uZW91c05lZ290aWF0aW9uTmVlZGVkOwor
ICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJwYy5hZGRTdHJlYW0oc3RyZWFtLCB7bWFuZGF0
b3J5OntpbnZhbGlkOjF9fSkiKTsKKworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdwYy5nZXRM
b2NhbFN0cmVhbXMoKS5sZW5ndGgnLCAnMCcpOworCiAgICAgICAgICAgICAgICAgZ2V0VXNlck1l
ZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtMik7CiAgICAgICAgICAgICB9
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24tb25uZWdvdGlhdGlvbm5lZWRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLW9ubmVnb3RpYXRpb25uZWVkZWQtZXhwZWN0
ZWQudHh0CmluZGV4IGQwZjk5ZTg1MjY0YmJjNGUzNmYyZWJmODY1NWFiMDJhNGE5ZDM5NjQuLmU5
ODI4ODZhMDZhYzNkMzE5NWUzMDUyNTEzN2ZkOGU1OWY1OTNlMDEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tb25uZWdvdGlhdGlvbm5l
ZWRlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi1vbm5lZ290aWF0aW9ubmVlZGVkLWV4cGVjdGVkLnR4dApAQCAtNSw2ICs1
LDEyIEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIFBBU1MgR290IGEgc3RyZWFtLgogUEFT
UyBvbk5lZ290aWF0aW9uTmVlZGVkIHdhcyBjYWxsZWQuCitQQVNTIHN0cmVhbS5nZXRBdWRpb1Ry
YWNrcygpLmxlbmd0aCBpcyAxCitQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBp
cyAwCitQQVNTIG9uTmVnb3RpYXRpb25OZWVkZWQgd2FzIGNhbGxlZCB3aGVuIHRyYWNrIHdhcyBy
ZW1vdmVkLgorUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMAorUEFTUyBz
dHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMQorUEFTUyBvbk5lZ290aWF0aW9uTmVl
ZGVkIHdhcyBjYWxsZWQgd2hlbiB0cmFjayB3YXMgYWRkZWQuCiBQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tb25uZWdvdGlhdGlvbm5lZWRlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1vbm5lZ290
aWF0aW9ubmVlZGVkLmh0bWwKaW5kZXggMmIzYWIwYzRiY2Q5NWFiYmQxNTk2YzYyMzE1NjYwNzUy
NWExY2JiOC4uZmYwYWExNzM1ZjQzODA2MTZlYThmZTYwOTg4NGIyNzQyMGRmYjdlNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1vbm5l
Z290aWF0aW9ubmVlZGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi1vbm5lZ290aWF0aW9ubmVlZGVkLmh0bWwKQEAgLTksMTMgKzksMTYg
QEAKIAogICAgICAgICAgICAgdmFyIHN0cmVhbSA9IG51bGw7CiAgICAgICAgICAgICB2YXIgcGMg
PSBudWxsOworICAgICAgICAgICAgdmFyIHRyYWNrID0gbnVsbDsKIAotICAgICAgICAgICAgZnVu
Y3Rpb24gZXJyb3IoKSB7CisgICAgICAgICAgICBmdW5jdGlvbiBlcnJvcigpCisgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnU3RyZWFtIGdlbmVyYXRpb24gZmFpbGVk
LicpOwogICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBmdW5jdGlvbiBnZXRVc2VyTWVkaWEoZGljdGlvbmFyeSwgY2FsbGJhY2spIHsK
KyAgICAgICAgICAgIGZ1bmN0aW9uIGdldFVzZXJNZWRpYShkaWN0aW9uYXJ5LCBjYWxsYmFjaykK
KyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAg
ICBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKGRpY3Rpb25hcnksIGNhbGxiYWNrLCBlcnJv
cik7CiAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewpAQCAtMjQsMTMgKzI3LDI2IEBACiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBv
bk5lZ290aWF0aW9uTmVlZGVkKGV2ZW50KSB7CisgICAgICAgICAgICBmdW5jdGlvbiBvbk5lZ290
aWF0aW9uTmVlZGVkKGV2ZW50KQorICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoJ29uTmVnb3RpYXRpb25OZWVkZWQgd2FzIGNhbGxlZC4nKTsKKyAgICAgICAgICAgICAg
ICByZW1vdmVUcmFjaygpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBv
bk5lZ290aWF0aW9uTmVlZGVkMihldmVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCdvbk5lZ290aWF0aW9uTmVlZGVkIHdhcyBjYWxsZWQgd2hlbiB0cmFjayB3
YXMgcmVtb3ZlZC4nKTsKKyAgICAgICAgICAgICAgICBhZGRUcmFjaygpOworICAgICAgICAgICAg
fQogCisgICAgICAgICAgICBmdW5jdGlvbiBvbk5lZ290aWF0aW9uTmVlZGVkMyhldmVudCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdvbk5lZ290aWF0aW9uTmVl
ZGVkIHdhcyBjYWxsZWQgd2hlbiB0cmFjayB3YXMgYWRkZWQuJyk7CiAgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIGdv
dFN0cmVhbShzKSB7CisgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW0ocykKKyAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdHb3QgYSBzdHJlYW0uJyk7CiAgICAg
ICAgICAgICAgICAgc3RyZWFtID0gczsKIApAQCAtNDAsNiArNTYsMjMgQEAKICAgICAgICAgICAg
ICAgICBwYy5hZGRTdHJlYW0oc3RyZWFtKTsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAg
ZnVuY3Rpb24gcmVtb3ZlVHJhY2soKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHBj
Lm9ubmVnb3RpYXRpb25uZWVkZWQgPSBvbk5lZ290aWF0aW9uTmVlZGVkMjsKKyAgICAgICAgICAg
ICAgICBzaG91bGRCZSgnc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKKyAg
ICAgICAgICAgICAgICB0cmFjayA9IHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdOworICAgICAg
ICAgICAgICAgIHN0cmVhbS5yZW1vdmVUcmFjayh0cmFjayk7CisgICAgICAgICAgICAgICAgc2hv
dWxkQmUoJ3N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcwJyk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGFkZFRyYWNrKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBwYy5vbm5lZ290aWF0aW9ubmVlZGVkID0gb25OZWdvdGlhdGlvbk5lZWRl
ZDM7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxl
bmd0aCcsICcwJyk7CisgICAgICAgICAgICAgICAgc3RyZWFtLmFkZFRyYWNrKHRyYWNrKTsKKyAg
ICAgICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywg
JzEnKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgZ2V0VXNlck1lZGlhKHthdWRpbzp0
cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtKTsKIAogICAgICAgICAgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>