<?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>70137</bug_id>
          
          <creation_ts>2011-10-14 13:35:56 -0700</creation_ts>
          <short_desc>[MutationObservers] Modifications to the style property don&apos;t dispatch &quot;attributes&quot; Mutation Records</short_desc>
          <delta_ts>2011-11-23 13:40:26 -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>DOM</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>68729</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Rafael Weinstein">rafaelw</reporter>
          <assigned_to name="Rafael Weinstein">rafaelw</assigned_to>
          <cc>adamk</cc>
    
    <cc>darin</cc>
    
    <cc>macpherson</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>484240</commentid>
    <comment_count>0</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2011-10-14 13:35:56 -0700</bug_when>
    <thetext>e.g. div.style.background = &quot;red&quot;; // doesn&apos;t dispatch a mutation record of type &quot;attributes&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484273</commentid>
    <comment_count>1</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2011-10-14 14:08:59 -0700</bug_when>
    <thetext>It looks to me like adding a check in CSSMutableStyleDeclaration::setNeedsStyleRecalc which asks whether there are any observers interested in the style attribute is the way to do this.

If any observer cares about the value, then we synchronously update the style attribute, otherwise we can just dispatch a record inline and leave the style attribute invalid.

Does this seem like a reasonable approach?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508245</commentid>
    <comment_count>2</comment_count>
      <attachid>116383</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2011-11-23 11:07:39 -0800</bug_when>
    <thetext>Created attachment 116383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508247</commentid>
    <comment_count>3</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2011-11-23 11:10:00 -0800</bug_when>
    <thetext>Patch ready for review.

Note that this patch takes a slightly different patch that the previous comment suggests. In particular, detecting that observers exist during setNeedsStyleRecalc will be too late if any observer requests oldValue, because at that point the change has already taken place and the last value may not have been serialized to the attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508259</commentid>
    <comment_count>4</comment_count>
      <attachid>116383</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-23 11:35:34 -0800</bug_when>
    <thetext>Comment on attachment 116383
Patch

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

It&apos;s great that this patch is small :) Just need some polishing.

&gt; Source/WebCore/ChangeLog:9
&gt; +        the RAIA pattern similar to the public ChildListMutationScope). This manages the (sometimes conditional)

s/RAIA/RAII/

&gt; Source/WebCore/css/CSSMutableStyleDeclaration.cpp:47
&gt; +namespace {

I really don&apos;t like these anonymous namespaces.

&gt; Source/WebCore/css/CSSMutableStyleDeclaration.cpp:49
&gt; +class AttributesMutationScope {

This should be named StyleAttributeMutationScope unless you&apos;re planning to use it for other attribute changes as well.

&gt; Source/WebCore/css/CSSMutableStyleDeclaration.cpp:68
&gt; +        AtomicString styleAtom(&quot;style&quot;);
&gt; +        s_mutationRecipients = MutationObserverInterestGroup::createForAttributesMutation(s_currentDecl-&gt;node(), styleAtom);

Why doesn&apos;t createForAttributesMutation just take qualified name? If we can&apos;t make that change, we should still be able to pass styleAttr.localName().

&gt; Source/WebCore/css/CSSMutableStyleDeclaration.cpp:74
&gt; +        Element* element = static_cast&lt;Element*&gt;(s_currentDecl-&gt;node());

We don&apos;t have toElement? I swear I&apos;ve used it before...

&gt; Source/WebCore/css/CSSMutableStyleDeclaration.cpp:76
&gt; +        s_mutation = MutationRecord::createAttributes(element, QualifiedName(nullAtom, styleAtom, nullAtom), oldValue);

Why are we creating a qualified name here? We should just use styleAttr. r- because of this.

&gt; Source/WebCore/css/CSSMutableStyleDeclaration.cpp:102
&gt; +unsigned AttributesMutationScope::s_scopeCount = 0;

This is an integral type so we should be able to initialize it in the class declaration, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508274</commentid>
    <comment_count>5</comment_count>
      <attachid>116383</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2011-11-23 11:59:45 -0800</bug_when>
    <thetext>Comment on attachment 116383
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        the RAIA pattern similar to the public ChildListMutationScope). This manages the (sometimes conditional)
&gt; 
&gt; s/RAIA/RAII/

done

&gt;&gt; Source/WebCore/css/CSSMutableStyleDeclaration.cpp:49
&gt;&gt; +class AttributesMutationScope {
&gt; 
&gt; This should be named StyleAttributeMutationScope unless you&apos;re planning to use it for other attribute changes as well.

done

&gt;&gt; Source/WebCore/css/CSSMutableStyleDeclaration.cpp:68
&gt;&gt; +        s_mutationRecipients = MutationObserverInterestGroup::createForAttributesMutation(s_currentDecl-&gt;node(), styleAtom);
&gt; 
&gt; Why doesn&apos;t createForAttributesMutation just take qualified name? If we can&apos;t make that change, we should still be able to pass styleAttr.localName().

good call. done.

&gt;&gt; Source/WebCore/css/CSSMutableStyleDeclaration.cpp:74
&gt;&gt; +        Element* element = static_cast&lt;Element*&gt;(s_currentDecl-&gt;node());
&gt; 
&gt; We don&apos;t have toElement? I swear I&apos;ve used it before...

done.

&gt;&gt; Source/WebCore/css/CSSMutableStyleDeclaration.cpp:76
&gt;&gt; +        s_mutation = MutationRecord::createAttributes(element, QualifiedName(nullAtom, styleAtom, nullAtom), oldValue);
&gt; 
&gt; Why are we creating a qualified name here? We should just use styleAttr. r- because of this.

done.

&gt;&gt; Source/WebCore/css/CSSMutableStyleDeclaration.cpp:102
&gt;&gt; +unsigned AttributesMutationScope::s_scopeCount = 0;
&gt; 
&gt; This is an integral type so we should be able to initialize it in the class declaration, no?

That&apos;s what I thought as well. As adam explained to me, static declarations don&apos;t actually reserve storage, so nothing can be initialized. It has to be done as below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508276</commentid>
    <comment_count>6</comment_count>
      <attachid>116383</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-11-23 12:02:32 -0800</bug_when>
    <thetext>Comment on attachment 116383
Patch

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

&gt;&gt;&gt; Source/WebCore/css/CSSMutableStyleDeclaration.cpp:102
&gt;&gt;&gt; +unsigned AttributesMutationScope::s_scopeCount = 0;
&gt;&gt; 
&gt;&gt; This is an integral type so we should be able to initialize it in the class declaration, no?
&gt; 
&gt; That&apos;s what I thought as well. As adam explained to me, static declarations don&apos;t actually reserve storage, so nothing can be initialized. It has to be done as below.

To be precise, the issue here is the non-constness.  &quot;static const&quot; integral types are allowed to be initialized inline (and don&apos;t even necessarily need storage), but non-const integrals both need storage and can&apos;t be initialized inline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508282</commentid>
    <comment_count>7</comment_count>
      <attachid>116393</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2011-11-23 12:08:22 -0800</bug_when>
    <thetext>Created attachment 116393
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508286</commentid>
    <comment_count>8</comment_count>
      <attachid>116393</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-23 12:16:16 -0800</bug_when>
    <thetext>Comment on attachment 116393
Patch

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

&gt; Source/WebCore/dom/WebKitMutationObserver.cpp:157
&gt; -PassOwnPtr&lt;MutationObserverInterestGroup&gt; MutationObserverInterestGroup::createForAttributesMutation(Node* target, const AtomicString&amp; attributeName)
&gt; +PassOwnPtr&lt;MutationObserverInterestGroup&gt; MutationObserverInterestGroup::createForAttributesMutation(Node* target, const QualifiedName&amp; attributeName)
&gt;  {
&gt; -    return adoptPtr(new MutationObserverInterestGroup(target, WebKitMutationObserver::Attributes, attributeName));
&gt; +    return adoptPtr(new MutationObserverInterestGroup(target, WebKitMutationObserver::Attributes, attributeName.localName()));

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508298</commentid>
    <comment_count>9</comment_count>
      <attachid>116397</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2011-11-23 12:29:19 -0800</bug_when>
    <thetext>Created attachment 116397
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508352</commentid>
    <comment_count>10</comment_count>
      <attachid>116397</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-23 13:40:21 -0800</bug_when>
    <thetext>Comment on attachment 116397
Patch

Clearing flags on attachment: 116397

Committed r101101: &lt;http://trac.webkit.org/changeset/101101&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508353</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-23 13:40:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116383</attachid>
            <date>2011-11-23 11:07:39 -0800</date>
            <delta_ts>2011-11-23 12:08:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70137-20111123110738.patch</filename>
            <type>text/plain</type>
            <size>19312</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMwYzRmODBmZTRhZTdh
NzYyYTkwOTMyNWYyOTczNzJlNTMwMjEwZi4uMzU0MWFmZmE5MjFlNzA0MWQzNDQ2YzFiMTA0MzUw
YjAyNzg1YWIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDExLTExLTIzICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW011dGF0aW9u
T2JzZXJ2ZXJzXSBNb2RpZmljYXRpb25zIHRvIHRoZSBzdHlsZSBwcm9wZXJ0eSBkb24ndCBkaXNw
YXRjaCAiYXR0cmlidXRlcyIgTXV0YXRpb24gUmVjb3JkcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAxMzcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBwcml2YXRlIEF0dHJp
YnV0ZXNNdXRhdGlvblNjb3BlIG1lY2hhbmlzbSB0byBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
biAod2hpY2ggdXNlcworICAgICAgICB0aGUgUkFJQSBwYXR0ZXJuIHNpbWlsYXIgdG8gdGhlIHB1
YmxpYyBDaGlsZExpc3RNdXRhdGlvblNjb3BlKS4gVGhpcyBtYW5hZ2VzIHRoZSAoc29tZXRpbWVz
IGNvbmRpdGlvbmFsKQorICAgICAgICBwcmUtY2hhbmdlIHNlcmlhbGl6YXRpb24gb2YgdGhlIHN0
eWxlIGF0dHJpYnV0ZSAoaWYgYW4gb2JzZXJ2ZXIgaGFzIHJlcXVlc3RlZCBvbGRWYWx1ZSksIGNy
ZWF0aW9uIG9mCisgICAgICAgIHRoZSBtdXRhdGlvbiByZWNvcmQsIGFuZCBkaXNwYXRjaCBpZiB0
aGUgZGVjbGFyYXRpb24gd2FzIGFjdHVhbCBhZmZlY3RlZC4KKworICAgICAgICAqIGNzcy9DU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpwYXJzZURlY2xhcmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjphZGRQYXJz
ZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOjphZGRQYXJzZWRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjo6c2V0Q3NzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbjo6bWVyZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb246OnJlbW92ZVByb3BlcnRpZXNJblNldCk6CisgICAgICAgICogZG9tL0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QXR0cmlidXRlKToKKwog
MjAxMS0xMS0yMyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLiBCdWlsZCBmaXguIEFkZGVkIG1pc3NpbmcgRU5BQkxFKFdPUktFUlMp
IGd1YXJkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24uY3BwCmluZGV4IDBlNDY1YWM4NDhmOTIyY2JlOWQyMWYzMjQ5YzM0MWRhNGM2NTBlNGYu
LmZiODAxMzQwOWE5MDlkNjZjNjdmMWQ4NjYyZDQ0ZmU3ODU3NzMxZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMzMsNyAr
MzMsOSBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIk11dGF0
aW9uUmVjb3JkLmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgorI2luY2x1ZGUgIldlYktp
dE11dGF0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQxLDYgKzQzLDcwIEBAIHVz
aW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIEVOQUJMRShN
VVRBVElPTl9PQlNFUlZFUlMpCituYW1lc3BhY2UgeworCitjbGFzcyBBdHRyaWJ1dGVzTXV0YXRp
b25TY29wZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXR0cmlidXRlc011dGF0aW9uU2Nv
cGUpOworcHVibGljOgorICAgIEF0dHJpYnV0ZXNNdXRhdGlvblNjb3BlKENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uKiBkZWNsKQorICAgIHsKKyAgICAgICAgKytzX3Njb3BlQ291bnQ7CisKKyAg
ICAgICAgaWYgKHNfc2NvcGVDb3VudCAhPSAxKSB7CisgICAgICAgICAgICBBU1NFUlQoc19jdXJy
ZW50RGVjbCA9PSBkZWNsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIEFTU0VSVCghc19jdXJyZW50RGVjbCk7CisgICAgICAgIHNfY3VycmVudERlY2wgPSBkZWNs
OworCisgICAgICAgIGlmICghc19jdXJyZW50RGVjbC0+aXNJbmxpbmVTdHlsZURlY2xhcmF0aW9u
KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgQXRvbWljU3RyaW5nIHN0eWxlQXRv
bSgic3R5bGUiKTsKKyAgICAgICAgc19tdXRhdGlvblJlY2lwaWVudHMgPSBNdXRhdGlvbk9ic2Vy
dmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQXR0cmlidXRlc011dGF0aW9uKHNfY3VycmVudERl
Y2wtPm5vZGUoKSwgc3R5bGVBdG9tKTsKKyAgICAgICAgaWYgKHNfbXV0YXRpb25SZWNpcGllbnRz
LT5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHNfbXV0YXRpb25SZWNpcGllbnRzLmNsZWFyKCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBFbGVtZW50KiBlbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHNfY3VycmVudERlY2wtPm5vZGUoKSk7CisgICAg
ICAgIEF0b21pY1N0cmluZyBvbGRWYWx1ZSA9IHNfbXV0YXRpb25SZWNpcGllbnRzLT5pc09sZFZh
bHVlUmVxdWVzdGVkKCkgPyBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoc3R5bGVBdG9tKSA6IG51bGxB
dG9tOworICAgICAgICBzX211dGF0aW9uID0gTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJpYnV0
ZXMoZWxlbWVudCwgUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgc3R5bGVBdG9tLCBudWxsQXRvbSks
IG9sZFZhbHVlKTsKKyAgICB9CisKKyAgICB+QXR0cmlidXRlc011dGF0aW9uU2NvcGUoKQorICAg
IHsKKyAgICAgICAgLS1zX3Njb3BlQ291bnQ7CisgICAgICAgIGlmICghc19zY29wZUNvdW50KQor
ICAgICAgICAgICAgc19jdXJyZW50RGVjbCA9IDA7CisgICAgfQorCisgICAgdm9pZCBlbnF1ZXVl
TXV0YXRpb25SZWNvcmQoKQorICAgIHsKKyAgICAgICAgaWYgKCFzX211dGF0aW9uKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBzX211dGF0aW9uUmVjaXBpZW50cy0+ZW5xdWV1ZU11dGF0
aW9uUmVjb3JkKHNfbXV0YXRpb24pOworICAgICAgICBzX211dGF0aW9uLmNsZWFyKCk7CisgICAg
ICAgIHNfbXV0YXRpb25SZWNpcGllbnRzLmNsZWFyKCk7CisgICAgfQorCitwcml2YXRlOgorICAg
IHN0YXRpYyB1bnNpZ25lZCBzX3Njb3BlQ291bnQ7CisgICAgc3RhdGljIE93blB0cjxNdXRhdGlv
bk9ic2VydmVySW50ZXJlc3RHcm91cD4gc19tdXRhdGlvblJlY2lwaWVudHM7CisgICAgc3RhdGlj
IFJlZlB0cjxNdXRhdGlvblJlY29yZD4gc19tdXRhdGlvbjsKKyAgICBzdGF0aWMgQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24qIHNfY3VycmVudERlY2w7Cit9OworCit1bnNpZ25lZCBBdHRyaWJ1
dGVzTXV0YXRpb25TY29wZTo6c19zY29wZUNvdW50ID0gMDsKK093blB0cjxNdXRhdGlvbk9ic2Vy
dmVySW50ZXJlc3RHcm91cD4gQXR0cmlidXRlc011dGF0aW9uU2NvcGU6OnNfbXV0YXRpb25SZWNp
cGllbnRzOworUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBBdHRyaWJ1dGVzTXV0YXRpb25TY29wZTo6
c19tdXRhdGlvbjsKK0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBBdHRyaWJ1dGVzTXV0YXRp
b25TY29wZTo6c19jdXJyZW50RGVjbCA9IDA7CisKK30gLy8gbmFtZXNwYWNlCisjZW5kaWYgLy8g
RU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKwogQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246
OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKCkKICAgICA6IENTU1N0eWxlRGVjbGFyYXRpb24o
MCwgLyogaXNNdXRhYmxlICovIHRydWUpCiAgICAgLCBtX25vZGUoMCkKQEAgLTUyMCw2ICs1ODYs
MTAgQEAgU3RyaW5nIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eShp
bnQgcHJvcGVydHlJRCwgYm9vbCBub3RpZnlDaGEKIHsKICAgICBBU1NFUlQoIW1faXRlcmF0b3JD
b3VudCk7CiAKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorICAgIEF0dHJpYnV0ZXNN
dXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CisjZW5kaWYKKwogICAgIGlmIChyZW1v
dmVTaG9ydGhhbmRQcm9wZXJ0eShwcm9wZXJ0eUlELCBub3RpZnlDaGFuZ2VkKSkgewogICAgICAg
ICAvLyBGSVhNRTogUmV0dXJuIGFuIGVxdWl2YWxlbnQgc2hvcnRoYW5kIHdoZW4gcG9zc2libGUu
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTUzNSw2ICs2MDUsMTAgQEAgU3RyaW5nIENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwg
Ym9vbCBub3RpZnlDaGEKICAgICAvLyBhbmQgc3dlZXBpbmcgdGhlbSB3aGVuIHRoZSB2ZWN0b3Ig
Z3Jvd3MgdG9vIGJpZy4KICAgICBtX3Byb3BlcnRpZXMucmVtb3ZlKGZvdW5kUHJvcGVydHkgLSBt
X3Byb3BlcnRpZXMuZGF0YSgpKTsKIAorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisg
ICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsKKyNlbmRpZgorCiAgICAg
aWYgKG5vdGlmeUNoYW5nZWQpCiAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIApAQCAt
NjAyLDYgKzY3NiwxMCBAQCBib29sIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9w
ZXJ0eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZQogewogICAgIEFTU0VSVCgh
bV9pdGVyYXRvckNvdW50KTsKIAorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAg
QXR0cmlidXRlc011dGF0aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlzKTsKKyNlbmRpZgorCiAg
ICAgLy8gU2V0dGluZyB0aGUgdmFsdWUgdG8gYW4gZW1wdHkgc3RyaW5nIGp1c3QgcmVtb3ZlcyB0
aGUgcHJvcGVydHkgaW4gYm90aCBJRSBhbmQgR2Vja28uCiAgICAgLy8gU2V0dGluZyBpdCB0byBu
dWxsIHNlZW1zIHRvIHByb2R1Y2UgbGVzcyBjb25zaXN0ZW50IHJlc3VsdHMsIGJ1dCB3ZSB0cmVh
dCBpdCBqdXN0IHRoZSBzYW1lLgogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpIHsKQEAgLTYxNSwx
NiArNjkzLDI3IEBAIGJvb2wgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5
KGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlCiAgICAgaWYgKCFzdWNjZXNzKSB7
CiAgICAgICAgIC8vIENTUyBET00gcmVxdWlyZXMgcmFpc2luZyBTWU5UQVhfRVJSIGhlcmUsIGJ1
dCB0aGlzIGlzIHRvbyBkYW5nZXJvdXMgZm9yIGNvbXBhdGliaWxpdHksCiAgICAgICAgIC8vIHNl
ZSA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI5Nj4uCi0gICAgfSBl
bHNlIGlmIChub3RpZnlDaGFuZ2VkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisj
aWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyAgICBtdXRhdGlvblNjb3BlLmVucXVldWVN
dXRhdGlvblJlY29yZCgpOworI2VuZGlmCisKKyAgICBpZiAobm90aWZ5Q2hhbmdlZCkKICAgICAg
ICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogCi0gICAgcmV0dXJuIHN1Y2Nlc3M7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHZvaWQgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnNldFByb3Bl
cnR5SW50ZXJuYWwoY29uc3QgQ1NTUHJvcGVydHkmIHByb3BlcnR5LCBDU1NQcm9wZXJ0eSogc2xv
dCkKIHsKICAgICBBU1NFUlQoIW1faXRlcmF0b3JDb3VudCk7CiAKKyNpZiBFTkFCTEUoTVVUQVRJ
T05fT0JTRVJWRVJTKQorICAgIEF0dHJpYnV0ZXNNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUo
dGhpcyk7CisjZW5kaWYKKwogICAgIGlmICghcmVtb3ZlU2hvcnRoYW5kUHJvcGVydHkocHJvcGVy
dHkuaWQoKSwgZmFsc2UpKSB7CiAgICAgICAgIENTU1Byb3BlcnR5KiB0b1JlcGxhY2UgPSBzbG90
ID8gc2xvdCA6IGZpbmRQcm9wZXJ0eVdpdGhJZChwcm9wZXJ0eS5pZCgpKTsKICAgICAgICAgaWYg
KHRvUmVwbGFjZSkgewpAQCAtNjMzLDYgKzcyMiwxMCBAQCB2b2lkIENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKGNvbnN0IENTU1Byb3BlcnR5JiBwcm9wZXJ0
eQogICAgICAgICB9CiAgICAgfQogICAgIG1fcHJvcGVydGllcy5hcHBlbmQocHJvcGVydHkpOwor
CisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyAgICBtdXRhdGlvblNjb3BlLmVucXVl
dWVNdXRhdGlvblJlY29yZCgpOworI2VuZGlmCiB9CiAKIGJvb2wgQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246OnNldFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBpbnQgdmFsdWUsIGJvb2wgaW1w
b3J0YW50LCBib29sIG5vdGlmeUNoYW5nZWQpCkBAIC02NzMsOSArNzY2LDE4IEBAIHZvaWQgQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnBhcnNlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiBz
dHlsZURlY2xhcmF0aW9uCiB7CiAgICAgQVNTRVJUKCFtX2l0ZXJhdG9yQ291bnQpOwogCisjaWYg
RU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyAgICBBdHRyaWJ1dGVzTXV0YXRpb25TY29wZSBt
dXRhdGlvblNjb3BlKHRoaXMpOworI2VuZGlmCisKICAgICBtX3Byb3BlcnRpZXMuY2xlYXIoKTsK
ICAgICBDU1NQYXJzZXIgcGFyc2VyKHVzZVN0cmljdFBhcnNpbmcoKSk7CiAgICAgcGFyc2VyLnBh
cnNlRGVjbGFyYXRpb24odGhpcywgc3R5bGVEZWNsYXJhdGlvbik7CisKKyNpZiBFTkFCTEUoTVVU
QVRJT05fT0JTRVJWRVJTKQorICAgIG11dGF0aW9uU2NvcGUuZW5xdWV1ZU11dGF0aW9uUmVjb3Jk
KCk7CisjZW5kaWYKKwogICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIApAQCAtNjgzLDEw
ICs3ODUsMTggQEAgdm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6YWRkUGFyc2VkUHJv
cGVydGllcyhjb25zdCBDU1NQcm9wZXJ0eSogY29uc3QqIHAKIHsKICAgICBBU1NFUlQoIW1faXRl
cmF0b3JDb3VudCk7CiAKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorICAgIEF0dHJp
YnV0ZXNNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CisjZW5kaWYKKwogICAgIG1f
cHJvcGVydGllcy5yZXNlcnZlQ2FwYWNpdHkobnVtUHJvcGVydGllcyk7CiAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpCiAgICAgICAgIGFkZFBhcnNlZFByb3BlcnR5
KCpwcm9wZXJ0aWVzW2ldKTsKIAorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAg
bXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsKKyNlbmRpZgorCiAgICAgLy8g
RklYTUU6IFRoaXMgcHJvYmFibHkgc2hvdWxkIGhhdmUgYSBjYWxsIHRvIHNldE5lZWRzU3R5bGVS
ZWNhbGMoKSBpZiBzb21ldGhpbmcgY2hhbmdlZC4gV2UgbWF5IGFsc28gd2lzaCB0byBhZGQKICAg
ICAvLyBhIG5vdGlmeUNoYW5nZWQgYXJndW1lbnQgdG8gdGhpcyBmdW5jdGlvbiB0byBmb2xsb3cg
dGhlIG1vZGVsIG9mIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGlzIGNsYXNzLgogfQpAQCAtNjk1LDEx
ICs4MDUsMTkgQEAgdm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6YWRkUGFyc2VkUHJv
cGVydHkoY29uc3QgQ1NTUHJvcGVydHkmIHByb3BlcnR5KQogewogICAgIEFTU0VSVCghbV9pdGVy
YXRvckNvdW50KTsKIAorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgQXR0cmli
dXRlc011dGF0aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlzKTsKKyNlbmRpZgorCiAgICAgLy8g
T25seSBhZGQgcHJvcGVydGllcyB0aGF0IGhhdmUgbm8gIWltcG9ydGFudCBjb3VudGVycGFydCBw
cmVzZW50CiAgICAgaWYgKCFnZXRQcm9wZXJ0eVByaW9yaXR5KHByb3BlcnR5LmlkKCkpIHx8IHBy
b3BlcnR5LmlzSW1wb3J0YW50KCkpIHsKICAgICAgICAgcmVtb3ZlUHJvcGVydHkocHJvcGVydHku
aWQoKSwgZmFsc2UsIGZhbHNlKTsKICAgICAgICAgbV9wcm9wZXJ0aWVzLmFwcGVuZChwcm9wZXJ0
eSk7CiAgICAgfQorCisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyAgICBtdXRhdGlv
blNjb3BlLmVucXVldWVNdXRhdGlvblJlY29yZCgpOworI2VuZGlmCiB9CiAKIHZvaWQgQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb246OnNldExlbmd0aFByb3BlcnR5KGludCBwcm9wZXJ0eUlkLCBj
b25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwgYm9vbCAvKm11bHRpTGVuZ3RoKi8p
CkBAIC03OTAsMTAgKzkwOCwxOSBAQCB2b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpz
ZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYgZQogewogICAgIEFT
U0VSVCghbV9pdGVyYXRvckNvdW50KTsKIAorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMp
CisgICAgQXR0cmlidXRlc011dGF0aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlzKTsKKyNlbmRp
ZgorCiAgICAgZWMgPSAwOwogICAgIG1fcHJvcGVydGllcy5jbGVhcigpOwogICAgIENTU1BhcnNl
ciBwYXJzZXIodXNlU3RyaWN0UGFyc2luZygpKTsKICAgICBwYXJzZXIucGFyc2VEZWNsYXJhdGlv
bih0aGlzLCB0ZXh0KTsKKworI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgbXV0
YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsKKyNlbmRpZgorCiAgICAgLy8gRklY
TUU6IERldGVjdCBzeW50YXggZXJyb3JzIGFuZCBzZXQgZWMuCiAgICAgc2V0TmVlZHNTdHlsZVJl
Y2FsYygpOwogfQpAQCAtODAyLDYgKzkyOSwxMCBAQCB2b2lkIENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uOjptZXJnZShjb25zdCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogb3RoZXIsCiB7
CiAgICAgQVNTRVJUKCFtX2l0ZXJhdG9yQ291bnQpOwogCisjaWYgRU5BQkxFKE1VVEFUSU9OX09C
U0VSVkVSUykKKyAgICBBdHRyaWJ1dGVzTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMp
OworI2VuZGlmCisKICAgICB1bnNpZ25lZCBzaXplID0gb3RoZXItPm1fcHJvcGVydGllcy5zaXpl
KCk7CiAgICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IHNpemU7ICsrbikgewogICAgICAgICBj
b25zdCBDU1NQcm9wZXJ0eSYgdG9NZXJnZSA9IG90aGVyLT5tX3Byb3BlcnRpZXNbbl07CkBAIC04
MTMsNiArOTQ0LDExIEBAIHZvaWQgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246Om1lcmdlKGNv
bnN0IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBvdGhlciwKICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICBtX3Byb3BlcnRpZXMuYXBwZW5kKHRvTWVyZ2UpOwogICAgIH0KKworI2lmIEVO
QUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRp
b25SZWNvcmQoKTsKKyNlbmRpZgorCiAgICAgLy8gRklYTUU6IFRoaXMgcHJvYmFibHkgc2hvdWxk
IGhhdmUgYSBjYWxsIHRvIHNldE5lZWRzU3R5bGVSZWNhbGMoKSBpZiBzb21ldGhpbmcgY2hhbmdl
ZC4gV2UgbWF5IGFsc28gd2lzaCB0byBhZGQKICAgICAvLyBhIG5vdGlmeUNoYW5nZWQgYXJndW1l
bnQgdG8gdGhpcyBmdW5jdGlvbiB0byBmb2xsb3cgdGhlIG1vZGVsIG9mIG90aGVyIGZ1bmN0aW9u
cyBpbiB0aGlzIGNsYXNzLgogfQpAQCAtODcwLDYgKzEwMDYsMTAgQEAgdm9pZCBDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydGllc0luU2V0KGNvbnN0IGludCogc2V0LCB1
bnNpZ25lZAogICAgIGlmIChtX3Byb3BlcnRpZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorICAgIEF0dHJpYnV0ZXNNdXRhdGlv
blNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CisjZW5kaWYKKwogICAgIC8vIEZJWE1FOiBUaGlz
IGlzIGFsd2F5cyB1c2VkIHdpdGggc3RhdGljIHNldHMgYW5kIGluIHRoYXQgY2FzZSBjb25zdHJ1
Y3RpbmcgdGhlIGhhc2ggcmVwZWF0ZWRseSBpcyBwcmV0dHkgcG9pbnRsZXNzLgogICAgIEhhc2hT
ZXQ8aW50PiB0b1JlbW92ZTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpCkBAIC04OTIsOCArMTAzMiwxNCBAQCB2b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
OjpyZW1vdmVQcm9wZXJ0aWVzSW5TZXQoY29uc3QgaW50KiBzZXQsIHVuc2lnbmVkCiAgICAgYm9v
bCBjaGFuZ2VkID0gbmV3UHJvcGVydGllcy5zaXplKCkgIT0gbV9wcm9wZXJ0aWVzLnNpemUoKTsK
ICAgICBtX3Byb3BlcnRpZXMgPSBuZXdQcm9wZXJ0aWVzOwogCi0gICAgaWYgKGNoYW5nZWQgJiYg
bm90aWZ5Q2hhbmdlZCkKLSAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAgIGlmICgh
Y2hhbmdlZCB8fCAhbm90aWZ5Q2hhbmdlZCkKKyAgICAgICAgcmV0dXJuOworCisjaWYgRU5BQkxF
KE1VVEFUSU9OX09CU0VSVkVSUykKKyAgICBtdXRhdGlvblNjb3BlLmVucXVldWVNdXRhdGlvblJl
Y29yZCgpOworI2VuZGlmCisKKyAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9CiAKIFBhc3NS
ZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOjptYWtlTXV0YWJsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYWNjZDk4NzFhZTVl
NGQzNDEyMjMxMjQ0YzM4ZTY3ODgzMTJiZjY5NS4uZTJhMjYxN2Q0OWM1OTg4ZDhiM2E2OGRjZmJk
YmY3MmFlMDAwNGY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNjQ2LDcgKzY0Niw4IEBA
IHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwKIAogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMp
CiAgICAgLy8gVGhlIGNhbGwgdG8gYXR0cmlidXRlQ2hhbmdlZCBiZWxvdyBtYXkgZGlzcGF0Y2gg
RE9NU3VidHJlZU1vZGlmaWVkLCBzbyBpdCdzIGltcG9ydGFudCB0byBlbnF1ZXVlIGEgTXV0YXRp
b25SZWNvcmQgbm93LgotICAgIGVucXVldWVBdHRyaWJ1dGVzTXV0YXRpb25SZWNvcmQodGhpcywg
YXR0cmlidXRlTmFtZSwgb2xkID8gb2xkLT52YWx1ZSgpIDogbnVsbEF0b20pOworICAgIGlmICgh
aXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKKyAgICAgICAgZW5xdWV1ZUF0dHJpYnV0
ZXNNdXRhdGlvblJlY29yZCh0aGlzLCBhdHRyaWJ1dGVOYW1lLCBvbGQgPyBvbGQtPnZhbHVlKCkg
OiBudWxsQXRvbSk7CiAjZW5kaWYKIAogICAgIGlmIChpc0lkQXR0cmlidXRlTmFtZShvbGQgPyBv
bGQtPm5hbWUoKSA6IGF0dHJpYnV0ZU5hbWUpKQpAQCAtNjg0LDcgKzY4NSw4IEBAIHZvaWQgRWxl
bWVudDo6c2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUsCiAKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQogICAgIC8v
IFRoZSBjYWxsIHRvIGF0dHJpYnV0ZUNoYW5nZWQgYmVsb3cgbWF5IGRpc3BhdGNoIERPTVN1YnRy
ZWVNb2RpZmllZCwgc28gaXQncyBpbXBvcnRhbnQgdG8gZW5xdWV1ZSBhIE11dGF0aW9uUmVjb3Jk
IG5vdy4KLSAgICBlbnF1ZXVlQXR0cmlidXRlc011dGF0aW9uUmVjb3JkKHRoaXMsIG5hbWUsIG9s
ZCA/IG9sZC0+dmFsdWUoKSA6IG51bGxBdG9tKTsKKyAgICBpZiAoIWlzU3luY2hyb25pemluZ1N0
eWxlQXR0cmlidXRlKCkpCisgICAgICAgIGVucXVldWVBdHRyaWJ1dGVzTXV0YXRpb25SZWNvcmQo
dGhpcywgbmFtZSwgb2xkID8gb2xkLT52YWx1ZSgpIDogbnVsbEF0b20pOwogI2VuZGlmCiAKICAg
ICBpZiAoaXNJZEF0dHJpYnV0ZU5hbWUobmFtZSkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzQ5ZjBhYTJiMmIzNjJlM2Iz
MmZlMTEyMjZiMzRlMjdlNDQ1YzY4Ni4uYzRjMmEwMDc1YTg5NWJmNjM0MWM3NThiZDkwZWNjZjhl
YTRiMzZiZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTExLTIzICBSYWZhZWwgV2VpbnN0
ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW011dGF0aW9uT2JzZXJ2ZXJz
XSBNb2RpZmljYXRpb25zIHRvIHRoZSBzdHlsZSBwcm9wZXJ0eSBkb24ndCBkaXNwYXRjaCAiYXR0
cmlidXRlcyIgTXV0YXRpb24gUmVjb3JkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzAxMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0cyBhc3NlcnRpbmcgdGhhdCBjaGFuZ2VzIHRvIHRo
ZSBzdHlsZSBwcm9wZXJ0eSBhcmUgb2JzZXJ2YWJsZSBhbmQgd29yayBjb3JyZWN0bHkgaWYgb2xk
VmFsdWUgaXMgcmVxdWVzdGVkLgorCisgICAgICAgICogZmFzdC9tdXRhdGlvbi9vYnNlcnZlLWF0
dHJpYnV0ZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbXV0YXRpb24vb2JzZXJ2ZS1h
dHRyaWJ1dGVzLmh0bWw6CisKIDIwMTEtMTEtMjMgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFu
ZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHNraXAgYW5vdGhlciBzdmcgdGVz
dCBvbiBHVEsgc2hvd2luZyBzaWduZWQgemVybyBpc3N1ZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUtYXR0cmlidXRlcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKaW5k
ZXggNjc5ZTkwNTg2YTg4ZGExZjk2NWRmYjc2NTY1MzZkYjQ0ZGVlZWRjMS4uZjdhNjM0ZTNlNjM1
MmE4YTQ4NDI0NjlkZGQ1MGVjOTNjMzZlNTdhZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9tdXRhdGlvbi9vYnNlcnZlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dApAQCAtMTUy
LDYgKzE1MiwzNCBAQCBQQVNTIG11dGF0aW9uc1szXS50eXBlIGlzICJhdHRyaWJ1dGVzIgogUEFT
UyBtdXRhdGlvbnNbM10uYXR0cmlidXRlTmFtZSBpcyAicGF0aExlbmd0aCIKIFBBU1MgbXV0YXRp
b25zWzNdLmF0dHJpYnV0ZU5hbWVzcGFjZSBpcyAiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
CiAKK1Rlc3RpbmcgdGhhdCBtb2RpZnlpbmcgYW4gZWxlbWVudHMgc3R5bGUgcHJvcGVydHkgZGlz
cGF0Y2hlcyBNdXRhdGlvbiBSZWNvcmRzLgorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDMKK1BB
U1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1swXS5h
dHRyaWJ1dGVOYW1lIGlzICJzdHlsZSIKK1BBU1MgbXV0YXRpb25zWzBdLm9sZFZhbHVlIGlzIG51
bGwKK1BBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9u
c1sxXS5hdHRyaWJ1dGVOYW1lIGlzICJzdHlsZSIKK1BBU1MgbXV0YXRpb25zWzFdLm9sZFZhbHVl
IGlzIG51bGwKK1BBU1MgbXV0YXRpb25zWzJdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11
dGF0aW9uc1syXS5hdHRyaWJ1dGVOYW1lIGlzICJzdHlsZSIKK1BBU1MgbXV0YXRpb25zWzJdLm9s
ZFZhbHVlIGlzIG51bGwKKy4uLm11dGF0aW9uIHJlY29yZCBjcmVhdGVkLgorUEFTUyBtdXRhdGlv
bnMgaXMgbnVsbAorCitUZXN0aW5nIHRoYXQgbW9kaWZ5aW5nIGFuIGVsZW1lbnRzIHN0eWxlIHBy
b3BlcnR5IGRpc3BhdGNoZXMgTXV0YXRpb24gUmVjb3JkcyB3aXRoIGNvcnJlY3Qgb2xkVmFsdWVz
LgorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDMKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMg
ImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJzdHlsZSIK
K1BBU1MgbXV0YXRpb25zWzBdLm9sZFZhbHVlIGlzICJjb2xvcjogeWVsbG93OyB3aWR0aDogMTAw
cHg7ICIKK1BBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0
aW9uc1sxXS5hdHRyaWJ1dGVOYW1lIGlzICJzdHlsZSIKK1BBU1MgbXV0YXRpb25zWzFdLm9sZFZh
bHVlIGlzICJ3aWR0aDogMTAwcHg7IGNvbG9yOiByZWQ7ICIKK1BBU1MgbXV0YXRpb25zWzJdLnR5
cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1syXS5hdHRyaWJ1dGVOYW1lIGlzICJz
dHlsZSIKK1BBU1MgbXV0YXRpb25zWzJdLm9sZFZhbHVlIGlzICJjb2xvcjogcmVkOyB3aWR0aDog
MjAwcHg7ICIKKy4uLm11dGF0aW9uIHJlY29yZCBjcmVhdGVkLgorUEFTUyBtdXRhdGlvbnMgaXMg
bnVsbAorCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZS1hdHRyaWJ1dGVz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUtYXR0cmlidXRlcy5odG1s
CmluZGV4IGFmNThiNTE4YjUxMmIwOGU3OWRhMGRlOGRlNDY3NTkzNDUwMDE5OGUuLmIwYWU2ZmE3
ZWY1Nzg5ODFiNzA5MTg1ODIyYTY2NGE0NTRlZGYzZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZS1hdHRyaWJ1dGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9tdXRhdGlvbi9vYnNlcnZlLWF0dHJpYnV0ZXMuaHRtbApAQCAtNjM4LDYgKzYzOCwxMTAg
QEAgZnVuY3Rpb24gdGVzdEF0dHJpYnV0ZUZpbHRlck5vbkhUTUxEb2N1bWVudCgpIHsKICAgICBz
dGFydCgpOwogfQogCitmdW5jdGlvbiB0ZXN0U3R5bGVBdHRyaWJ1dGVQcm9wZXJ0eUFjY2Vzcygp
IHsKKyAgICB2YXIgc3ZnRG9jLCBkaXYsIHBhdGg7CisgICAgdmFyIG9ic2VydmVyOworCisgICAg
ZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgbW9kaWZ5aW5n
IGFuIGVsZW1lbnRzIHN0eWxlIHByb3BlcnR5IGRpc3BhdGNoZXMgTXV0YXRpb24gUmVjb3Jkcy4n
KTsKKworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBvYnNlcnZlciA9IG5ldyBX
ZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIG11dGF0aW9u
cyA9IG07CisgICAgICAgIH0pOworCisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdzdHlsZScsICdjb2xvcjogeWVs
bG93OyB3aWR0aDogMTAwcHg7ICcpOworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBh
dHRyaWJ1dGVzOiB0cnVlIH0pOworICAgICAgICBkaXYuc3R5bGUuY29sb3IgPSAncmVkJzsKKyAg
ICAgICAgZGl2LnN0eWxlLndpZHRoID0gJzIwMHB4JzsKKyAgICAgICAgZGl2LnN0eWxlLmNvbG9y
ID0gJ2JsdWUnOworCisgICAgICAgIHNldFRpbWVvdXQoY2hlY2tBbmRDb250aW51ZSwgMCk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tBbmRDb250aW51ZSgpIHsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMycpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MF0uYXR0cmlidXRlTmFtZScsICcic3R5bGUiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMF0ub2xkVmFsdWUnLCAnbnVsbCcpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFd
LnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0u
YXR0cmlidXRlTmFtZScsICcic3R5bGUiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MV0ub2xkVmFsdWUnLCAnbnVsbCcpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLnR5
cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0uYXR0
cmlidXRlTmFtZScsICcic3R5bGUiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0u
b2xkVmFsdWUnLCAnbnVsbCcpOworCisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAg
IGRpdi5nZXRBdHRyaWJ1dGUoJ3N0eWxlJyk7CisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAw
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgICAgIGRlYnVnKCcuLi5t
dXRhdGlvbiByZWNvcmQgY3JlYXRlZC4nKTsKKworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
JywgJ251bGwnKTsKKworICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAgICAgIGRl
YnVnKCcnKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICBzdGFydCgpOwor
fQorCitmdW5jdGlvbiB0ZXN0U3R5bGVBdHRyaWJ1dGVQcm9wZXJ0eUFjY2Vzc09sZFZhbHVlKCkg
eworICAgIHZhciBzdmdEb2MsIGRpdiwgcGF0aDsKKyAgICB2YXIgb2JzZXJ2ZXI7CisKKyAgICBm
dW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBtb2RpZnlpbmcg
YW4gZWxlbWVudHMgc3R5bGUgcHJvcGVydHkgZGlzcGF0Y2hlcyBNdXRhdGlvbiBSZWNvcmRzIHdp
dGggY29ycmVjdCBvbGRWYWx1ZXMuJyk7CisKKyAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKKyAg
ICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtKSB7
CisgICAgICAgICAgICBtdXRhdGlvbnMgPSBtOworICAgICAgICB9KTsKKworICAgICAgICBkaXYg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZGl2LnNldEF0dHJpYnV0
ZSgnc3R5bGUnLCAnY29sb3I6IHllbGxvdzsgd2lkdGg6IDEwMHB4OyAnKTsKKyAgICAgICAgb2Jz
ZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlT2xkVmFsdWU6
IHRydWUgfSk7CisgICAgICAgIGRpdi5zdHlsZS5jb2xvciA9ICdyZWQnOworICAgICAgICBkaXYu
c3R5bGUud2lkdGggPSAnMjAwcHgnOworICAgICAgICBkaXYuc3R5bGUuY29sb3IgPSAnYmx1ZSc7
CisKKyAgICAgICAgc2V0VGltZW91dChjaGVja0FuZENvbnRpbnVlLCAwKTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBjaGVja0FuZENvbnRpbnVlKCkgeworICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zLmxlbmd0aCcsICczJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScs
ICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1
dGVOYW1lJywgJyJzdHlsZSInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5vbGRW
YWx1ZScsICciY29sb3I6IHllbGxvdzsgd2lkdGg6IDEwMHB4OyAiJyk7CisgICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbMV0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lJywgJyJzdHlsZSInKTsKKyAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1sxXS5vbGRWYWx1ZScsICcid2lkdGg6IDEwMHB4OyBjb2xvcjogcmVk
OyAiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0udHlwZScsICciYXR0cmlidXRl
cyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS5hdHRyaWJ1dGVOYW1lJywgJyJz
dHlsZSInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS5vbGRWYWx1ZScsICciY29s
b3I6IHJlZDsgd2lkdGg6IDIwMHB4OyAiJyk7CisKKyAgICAgICAgbXV0YXRpb25zID0gbnVsbDsK
KyAgICAgICAgZGl2LmdldEF0dHJpYnV0ZSgnc3R5bGUnKTsKKyAgICAgICAgc2V0VGltZW91dChm
aW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgZGVi
dWcoJy4uLm11dGF0aW9uIHJlY29yZCBjcmVhdGVkLicpOworCisgICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnMnLCAnbnVsbCcpOworCisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAg
ICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0
YXJ0KCk7Cit9CisKIHZhciB0ZXN0cyA9IFsKICAgICB0ZXN0QmFzaWMsCiAgICAgdGVzdFdyb25n
VHlwZSwKQEAgLTY1Myw3ICs3NTcsOSBAQCB2YXIgdGVzdHMgPSBbCiAgICAgdGVzdEF0dHJpYnV0
ZUZpbHRlciwKICAgICB0ZXN0QXR0cmlidXRlRmlsdGVyU3VidHJlZSwKICAgICB0ZXN0QXR0cmli
dXRlRmlsdGVyTm9uSFRNTEVsZW1lbnQsCi0gICAgdGVzdEF0dHJpYnV0ZUZpbHRlck5vbkhUTUxE
b2N1bWVudAorICAgIHRlc3RBdHRyaWJ1dGVGaWx0ZXJOb25IVE1MRG9jdW1lbnQsCisgICAgdGVz
dFN0eWxlQXR0cmlidXRlUHJvcGVydHlBY2Nlc3MsCisgICAgdGVzdFN0eWxlQXR0cmlidXRlUHJv
cGVydHlBY2Nlc3NPbGRWYWx1ZQogXTsKIHZhciB0ZXN0SW5kZXggPSAwOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116393</attachid>
            <date>2011-11-23 12:08:22 -0800</date>
            <delta_ts>2011-11-23 12:29:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70137-20111123120821.patch</filename>
            <type>text/plain</type>
            <size>22584</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMwYzRmODBmZTRhZTdh
NzYyYTkwOTMyNWYyOTczNzJlNTMwMjEwZi4uNmVhOThjOTk4ZjI0MjNmM2I5MzdkYzJmNWMyZjVm
YTBiYmYxYmIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDExLTExLTIzICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW011dGF0aW9u
T2JzZXJ2ZXJzXSBNb2RpZmljYXRpb25zIHRvIHRoZSBzdHlsZSBwcm9wZXJ0eSBkb24ndCBkaXNw
YXRjaCAiYXR0cmlidXRlcyIgTXV0YXRpb24gUmVjb3JkcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAxMzcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBwcml2YXRlIEF0dHJp
YnV0ZXNNdXRhdGlvblNjb3BlIG1lY2hhbmlzbSB0byBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
biAod2hpY2ggdXNlcworICAgICAgICB0aGUgUkFJSSBwYXR0ZXJuIHNpbWlsYXIgdG8gdGhlIHB1
YmxpYyBDaGlsZExpc3RNdXRhdGlvblNjb3BlKS4gVGhpcyBtYW5hZ2VzIHRoZSAoc29tZXRpbWVz
IGNvbmRpdGlvbmFsKQorICAgICAgICBwcmUtY2hhbmdlIHNlcmlhbGl6YXRpb24gb2YgdGhlIHN0
eWxlIGF0dHJpYnV0ZSAoaWYgYW4gb2JzZXJ2ZXIgaGFzIHJlcXVlc3RlZCBvbGRWYWx1ZSksIGNy
ZWF0aW9uIG9mCisgICAgICAgIHRoZSBtdXRhdGlvbiByZWNvcmQsIGFuZCBkaXNwYXRjaCBpZiB0
aGUgZGVjbGFyYXRpb24gd2FzIGFjdHVhbCBhZmZlY3RlZC4KKworICAgICAgICAqIGNzcy9DU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpwYXJzZURlY2xhcmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjphZGRQYXJz
ZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOjphZGRQYXJzZWRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjo6c2V0Q3NzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbjo6bWVyZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb246OnJlbW92ZVByb3BlcnRpZXNJblNldCk6CisgICAgICAgICogZG9tL0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QXR0cmlidXRlKToKKwog
MjAxMS0xMS0yMyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLiBCdWlsZCBmaXguIEFkZGVkIG1pc3NpbmcgRU5BQkxFKFdPUktFUlMp
IGd1YXJkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24uY3BwCmluZGV4IDBlNDY1YWM4NDhmOTIyY2JlOWQyMWYzMjQ5YzM0MWRhNGM2NTBlNGYu
LmRkN2VjN2Q0ZjdkYzQ5ZTM5Y2UyYWIxOGNmZmFmZDkxMWM5ZjYxYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMzIsOCAr
MzIsMTEgQEAKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJNdXRhdGlvblJl
Y29yZC5oIgogI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJLaXRNdXRh
dGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00MSw2ICs0NCw2OSBAQCB1c2luZyBu
YW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBFTkFCTEUoTVVUQVRJ
T05fT0JTRVJWRVJTKQorbmFtZXNwYWNlIHsKKworY2xhc3MgU3R5bGVBdHRyaWJ1dGVNdXRhdGlv
blNjb3BlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHlsZUF0dHJpYnV0ZU11dGF0aW9u
U2NvcGUpOworcHVibGljOgorICAgIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZShDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbiogZGVjbCkKKyAgICB7CisgICAgICAgICsrc19zY29wZUNvdW50
OworCisgICAgICAgIGlmIChzX3Njb3BlQ291bnQgIT0gMSkgeworICAgICAgICAgICAgQVNTRVJU
KHNfY3VycmVudERlY2wgPT0gZGVjbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBBU1NFUlQoIXNfY3VycmVudERlY2wpOworICAgICAgICBzX2N1cnJlbnREZWNs
ID0gZGVjbDsKKworICAgICAgICBpZiAoIXNfY3VycmVudERlY2wtPmlzSW5saW5lU3R5bGVEZWNs
YXJhdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHNfbXV0YXRpb25SZWNp
cGllbnRzID0gTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUZvckF0dHJpYnV0
ZXNNdXRhdGlvbihzX2N1cnJlbnREZWNsLT5ub2RlKCksIEhUTUxOYW1lczo6c3R5bGVBdHRyKTsK
KyAgICAgICAgaWYgKHNfbXV0YXRpb25SZWNpcGllbnRzLT5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgIHNfbXV0YXRpb25SZWNpcGllbnRzLmNsZWFyKCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KHNfY3VycmVu
dERlY2wtPm5vZGUoKSk7CisgICAgICAgIEF0b21pY1N0cmluZyBvbGRWYWx1ZSA9IHNfbXV0YXRp
b25SZWNpcGllbnRzLT5pc09sZFZhbHVlUmVxdWVzdGVkKCkgPyBlbGVtZW50LT5nZXRBdHRyaWJ1
dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIubG9jYWxOYW1lKCkpIDogbnVsbEF0b207CisgICAgICAg
IHNfbXV0YXRpb24gPSBNdXRhdGlvblJlY29yZDo6Y3JlYXRlQXR0cmlidXRlcyhlbGVtZW50LCBI
VE1MTmFtZXM6OnN0eWxlQXR0ciwgb2xkVmFsdWUpOworICAgIH0KKworICAgIH5TdHlsZUF0dHJp
YnV0ZU11dGF0aW9uU2NvcGUoKQorICAgIHsKKyAgICAgICAgLS1zX3Njb3BlQ291bnQ7CisgICAg
ICAgIGlmICghc19zY29wZUNvdW50KQorICAgICAgICAgICAgc19jdXJyZW50RGVjbCA9IDA7Cisg
ICAgfQorCisgICAgdm9pZCBlbnF1ZXVlTXV0YXRpb25SZWNvcmQoKQorICAgIHsKKyAgICAgICAg
aWYgKCFzX211dGF0aW9uKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzX211dGF0aW9u
UmVjaXBpZW50cy0+ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKHNfbXV0YXRpb24pOworICAgICAgICBz
X211dGF0aW9uLmNsZWFyKCk7CisgICAgICAgIHNfbXV0YXRpb25SZWNpcGllbnRzLmNsZWFyKCk7
CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyB1bnNpZ25lZCBzX3Njb3BlQ291bnQ7Cisg
ICAgc3RhdGljIE93blB0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gc19tdXRhdGlv
blJlY2lwaWVudHM7CisgICAgc3RhdGljIFJlZlB0cjxNdXRhdGlvblJlY29yZD4gc19tdXRhdGlv
bjsKKyAgICBzdGF0aWMgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHNfY3VycmVudERlY2w7
Cit9OworCit1bnNpZ25lZCBTdHlsZUF0dHJpYnV0ZU11dGF0aW9uU2NvcGU6OnNfc2NvcGVDb3Vu
dCA9IDA7CitPd25QdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IFN0eWxlQXR0cmli
dXRlTXV0YXRpb25TY29wZTo6c19tdXRhdGlvblJlY2lwaWVudHM7CitSZWZQdHI8TXV0YXRpb25S
ZWNvcmQ+IFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZTo6c19tdXRhdGlvbjsKK0NTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uKiBTdHlsZUF0dHJpYnV0ZU11dGF0aW9uU2NvcGU6OnNfY3VycmVu
dERlY2wgPSAwOworCit9IC8vIG5hbWVzcGFjZQorI2VuZGlmIC8vIEVOQUJMRShNVVRBVElPTl9P
QlNFUlZFUlMpCisKIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbigpCiAgICAgOiBDU1NTdHlsZURlY2xhcmF0aW9uKDAsIC8qIGlzTXV0YWJsZSAq
LyB0cnVlKQogICAgICwgbV9ub2RlKDApCkBAIC01MjAsNiArNTg2LDEwIEBAIFN0cmluZyBDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIGJv
b2wgbm90aWZ5Q2hhCiB7CiAgICAgQVNTRVJUKCFtX2l0ZXJhdG9yQ291bnQpOwogCisjaWYgRU5B
QkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyAgICBTdHlsZUF0dHJpYnV0ZU11dGF0aW9uU2NvcGUg
bXV0YXRpb25TY29wZSh0aGlzKTsKKyNlbmRpZgorCiAgICAgaWYgKHJlbW92ZVNob3J0aGFuZFBy
b3BlcnR5KHByb3BlcnR5SUQsIG5vdGlmeUNoYW5nZWQpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBS
ZXR1cm4gYW4gZXF1aXZhbGVudCBzaG9ydGhhbmQgd2hlbiBwb3NzaWJsZS4KICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwpAQCAtNTM1LDYgKzYwNSwxMCBAQCBTdHJpbmcgQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb246OnJlbW92ZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBib29sIG5vdGlmeUNo
YQogICAgIC8vIGFuZCBzd2VlcGluZyB0aGVtIHdoZW4gdGhlIHZlY3RvciBncm93cyB0b28gYmln
LgogICAgIG1fcHJvcGVydGllcy5yZW1vdmUoZm91bmRQcm9wZXJ0eSAtIG1fcHJvcGVydGllcy5k
YXRhKCkpOwogCisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyAgICBtdXRhdGlvblNj
b3BlLmVucXVldWVNdXRhdGlvblJlY29yZCgpOworI2VuZGlmCisKICAgICBpZiAobm90aWZ5Q2hh
bmdlZCkKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogCkBAIC02MDIsNiArNjc2LDEw
IEBAIGJvb2wgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KGludCBwcm9w
ZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlCiB7CiAgICAgQVNTRVJUKCFtX2l0ZXJhdG9yQ291
bnQpOwogCisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyAgICBTdHlsZUF0dHJpYnV0
ZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlzKTsKKyNlbmRpZgorCiAgICAgLy8gU2V0
dGluZyB0aGUgdmFsdWUgdG8gYW4gZW1wdHkgc3RyaW5nIGp1c3QgcmVtb3ZlcyB0aGUgcHJvcGVy
dHkgaW4gYm90aCBJRSBhbmQgR2Vja28uCiAgICAgLy8gU2V0dGluZyBpdCB0byBudWxsIHNlZW1z
IHRvIHByb2R1Y2UgbGVzcyBjb25zaXN0ZW50IHJlc3VsdHMsIGJ1dCB3ZSB0cmVhdCBpdCBqdXN0
IHRoZSBzYW1lLgogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpIHsKQEAgLTYxNSwxNiArNjkzLDI3
IEBAIGJvb2wgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KGludCBwcm9w
ZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlCiAgICAgaWYgKCFzdWNjZXNzKSB7CiAgICAgICAg
IC8vIENTUyBET00gcmVxdWlyZXMgcmFpc2luZyBTWU5UQVhfRVJSIGhlcmUsIGJ1dCB0aGlzIGlz
IHRvbyBkYW5nZXJvdXMgZm9yIGNvbXBhdGliaWxpdHksCiAgICAgICAgIC8vIHNlZSA8aHR0cDov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI5Nj4uCi0gICAgfSBlbHNlIGlmIChu
b3RpZnlDaGFuZ2VkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisjaWYgRU5BQkxF
KE1VVEFUSU9OX09CU0VSVkVSUykKKyAgICBtdXRhdGlvblNjb3BlLmVucXVldWVNdXRhdGlvblJl
Y29yZCgpOworI2VuZGlmCisKKyAgICBpZiAobm90aWZ5Q2hhbmdlZCkKICAgICAgICAgc2V0TmVl
ZHNTdHlsZVJlY2FsYygpOwogCi0gICAgcmV0dXJuIHN1Y2Nlc3M7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHZvaWQgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5SW50ZXJu
YWwoY29uc3QgQ1NTUHJvcGVydHkmIHByb3BlcnR5LCBDU1NQcm9wZXJ0eSogc2xvdCkKIHsKICAg
ICBBU1NFUlQoIW1faXRlcmF0b3JDb3VudCk7CiAKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJW
RVJTKQorICAgIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMp
OworI2VuZGlmCisKICAgICBpZiAoIXJlbW92ZVNob3J0aGFuZFByb3BlcnR5KHByb3BlcnR5Lmlk
KCksIGZhbHNlKSkgewogICAgICAgICBDU1NQcm9wZXJ0eSogdG9SZXBsYWNlID0gc2xvdCA/IHNs
b3QgOiBmaW5kUHJvcGVydHlXaXRoSWQocHJvcGVydHkuaWQoKSk7CiAgICAgICAgIGlmICh0b1Jl
cGxhY2UpIHsKQEAgLTYzMyw2ICs3MjIsMTAgQEAgdm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbjo6c2V0UHJvcGVydHlJbnRlcm5hbChjb25zdCBDU1NQcm9wZXJ0eSYgcHJvcGVydHkKICAg
ICAgICAgfQogICAgIH0KICAgICBtX3Byb3BlcnRpZXMuYXBwZW5kKHByb3BlcnR5KTsKKworI2lm
IEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0
YXRpb25SZWNvcmQoKTsKKyNlbmRpZgogfQogCiBib29sIENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgaW50IHZhbHVlLCBib29sIGltcG9ydGFu
dCwgYm9vbCBub3RpZnlDaGFuZ2VkKQpAQCAtNjczLDkgKzc2NiwxOCBAQCB2b2lkIENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uOjpwYXJzZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYgc3R5bGVE
ZWNsYXJhdGlvbgogewogICAgIEFTU0VSVCghbV9pdGVyYXRvckNvdW50KTsKIAorI2lmIEVOQUJM
RShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlIG11
dGF0aW9uU2NvcGUodGhpcyk7CisjZW5kaWYKKwogICAgIG1fcHJvcGVydGllcy5jbGVhcigpOwog
ICAgIENTU1BhcnNlciBwYXJzZXIodXNlU3RyaWN0UGFyc2luZygpKTsKICAgICBwYXJzZXIucGFy
c2VEZWNsYXJhdGlvbih0aGlzLCBzdHlsZURlY2xhcmF0aW9uKTsKKworI2lmIEVOQUJMRShNVVRB
VElPTl9PQlNFUlZFUlMpCisgICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQo
KTsKKyNlbmRpZgorCiAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQogCkBAIC02ODMsMTAg
Kzc4NSwxOCBAQCB2b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjphZGRQYXJzZWRQcm9w
ZXJ0aWVzKGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCogcAogewogICAgIEFTU0VSVCghbV9pdGVy
YXRvckNvdW50KTsKIAorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgU3R5bGVB
dHRyaWJ1dGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CisjZW5kaWYKKwogICAg
IG1fcHJvcGVydGllcy5yZXNlcnZlQ2FwYWNpdHkobnVtUHJvcGVydGllcyk7CiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpCiAgICAgICAgIGFkZFBhcnNlZFByb3Bl
cnR5KCpwcm9wZXJ0aWVzW2ldKTsKIAorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisg
ICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsKKyNlbmRpZgorCiAgICAg
Ly8gRklYTUU6IFRoaXMgcHJvYmFibHkgc2hvdWxkIGhhdmUgYSBjYWxsIHRvIHNldE5lZWRzU3R5
bGVSZWNhbGMoKSBpZiBzb21ldGhpbmcgY2hhbmdlZC4gV2UgbWF5IGFsc28gd2lzaCB0byBhZGQK
ICAgICAvLyBhIG5vdGlmeUNoYW5nZWQgYXJndW1lbnQgdG8gdGhpcyBmdW5jdGlvbiB0byBmb2xs
b3cgdGhlIG1vZGVsIG9mIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGlzIGNsYXNzLgogfQpAQCAtNjk1
LDExICs4MDUsMTkgQEAgdm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6YWRkUGFyc2Vk
UHJvcGVydHkoY29uc3QgQ1NTUHJvcGVydHkmIHByb3BlcnR5KQogewogICAgIEFTU0VSVCghbV9p
dGVyYXRvckNvdW50KTsKIAorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgU3R5
bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CisjZW5kaWYKKwog
ICAgIC8vIE9ubHkgYWRkIHByb3BlcnRpZXMgdGhhdCBoYXZlIG5vICFpbXBvcnRhbnQgY291bnRl
cnBhcnQgcHJlc2VudAogICAgIGlmICghZ2V0UHJvcGVydHlQcmlvcml0eShwcm9wZXJ0eS5pZCgp
KSB8fCBwcm9wZXJ0eS5pc0ltcG9ydGFudCgpKSB7CiAgICAgICAgIHJlbW92ZVByb3BlcnR5KHBy
b3BlcnR5LmlkKCksIGZhbHNlLCBmYWxzZSk7CiAgICAgICAgIG1fcHJvcGVydGllcy5hcHBlbmQo
cHJvcGVydHkpOwogICAgIH0KKworI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAg
bXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsKKyNlbmRpZgogfQogCiB2b2lk
IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpzZXRMZW5ndGhQcm9wZXJ0eShpbnQgcHJvcGVy
dHlJZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgLyptdWx0aUxl
bmd0aCovKQpAQCAtNzkwLDEwICs5MDgsMTkgQEAgdm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbjo6c2V0Q3NzVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGUKIHsK
ICAgICBBU1NFUlQoIW1faXRlcmF0b3JDb3VudCk7CiAKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JT
RVJWRVJTKQorICAgIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRo
aXMpOworI2VuZGlmCisKICAgICBlYyA9IDA7CiAgICAgbV9wcm9wZXJ0aWVzLmNsZWFyKCk7CiAg
ICAgQ1NTUGFyc2VyIHBhcnNlcih1c2VTdHJpY3RQYXJzaW5nKCkpOwogICAgIHBhcnNlci5wYXJz
ZURlY2xhcmF0aW9uKHRoaXMsIHRleHQpOworCisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVS
UykKKyAgICBtdXRhdGlvblNjb3BlLmVucXVldWVNdXRhdGlvblJlY29yZCgpOworI2VuZGlmCisK
ICAgICAvLyBGSVhNRTogRGV0ZWN0IHN5bnRheCBlcnJvcnMgYW5kIHNldCBlYy4KICAgICBzZXRO
ZWVkc1N0eWxlUmVjYWxjKCk7CiB9CkBAIC04MDIsNiArOTI5LDEwIEBAIHZvaWQgQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb246Om1lcmdlKGNvbnN0IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
KiBvdGhlciwKIHsKICAgICBBU1NFUlQoIW1faXRlcmF0b3JDb3VudCk7CiAKKyNpZiBFTkFCTEUo
TVVUQVRJT05fT0JTRVJWRVJTKQorICAgIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRh
dGlvblNjb3BlKHRoaXMpOworI2VuZGlmCisKICAgICB1bnNpZ25lZCBzaXplID0gb3RoZXItPm1f
cHJvcGVydGllcy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IHNpemU7ICsr
bikgewogICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eSYgdG9NZXJnZSA9IG90aGVyLT5tX3Byb3Bl
cnRpZXNbbl07CkBAIC04MTMsNiArOTQ0LDExIEBAIHZvaWQgQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246Om1lcmdlKGNvbnN0IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBvdGhlciwKICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX3Byb3BlcnRpZXMuYXBwZW5kKHRvTWVyZ2UpOwog
ICAgIH0KKworI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgbXV0YXRpb25TY29w
ZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsKKyNlbmRpZgorCiAgICAgLy8gRklYTUU6IFRoaXMg
cHJvYmFibHkgc2hvdWxkIGhhdmUgYSBjYWxsIHRvIHNldE5lZWRzU3R5bGVSZWNhbGMoKSBpZiBz
b21ldGhpbmcgY2hhbmdlZC4gV2UgbWF5IGFsc28gd2lzaCB0byBhZGQKICAgICAvLyBhIG5vdGlm
eUNoYW5nZWQgYXJndW1lbnQgdG8gdGhpcyBmdW5jdGlvbiB0byBmb2xsb3cgdGhlIG1vZGVsIG9m
IG90aGVyIGZ1bmN0aW9ucyBpbiB0aGlzIGNsYXNzLgogfQpAQCAtODcwLDYgKzEwMDYsMTAgQEAg
dm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydGllc0luU2V0KGNv
bnN0IGludCogc2V0LCB1bnNpZ25lZAogICAgIGlmIChtX3Byb3BlcnRpZXMuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorICAgIFN0
eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOworI2VuZGlmCisK
ICAgICAvLyBGSVhNRTogVGhpcyBpcyBhbHdheXMgdXNlZCB3aXRoIHN0YXRpYyBzZXRzIGFuZCBp
biB0aGF0IGNhc2UgY29uc3RydWN0aW5nIHRoZSBoYXNoIHJlcGVhdGVkbHkgaXMgcHJldHR5IHBv
aW50bGVzcy4KICAgICBIYXNoU2V0PGludD4gdG9SZW1vdmU7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKQpAQCAtODkyLDggKzEwMzIsMTQgQEAgdm9pZCBDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydGllc0luU2V0KGNvbnN0IGludCogc2V0
LCB1bnNpZ25lZAogICAgIGJvb2wgY2hhbmdlZCA9IG5ld1Byb3BlcnRpZXMuc2l6ZSgpICE9IG1f
cHJvcGVydGllcy5zaXplKCk7CiAgICAgbV9wcm9wZXJ0aWVzID0gbmV3UHJvcGVydGllczsKIAot
ICAgIGlmIChjaGFuZ2VkICYmIG5vdGlmeUNoYW5nZWQpCi0gICAgICAgIHNldE5lZWRzU3R5bGVS
ZWNhbGMoKTsKKyAgICBpZiAoIWNoYW5nZWQgfHwgIW5vdGlmeUNoYW5nZWQpCisgICAgICAgIHJl
dHVybjsKKworI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgbXV0YXRpb25TY29w
ZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsKKyNlbmRpZgorCisgICAgc2V0TmVlZHNTdHlsZVJl
Y2FsYygpOwogfQogCiBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6bWFrZU11dGFibGUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CmluZGV4IGFjY2Q5ODcxYWU1ZTRkMzQxMjIzMTI0NGMzOGU2Nzg4MzEyYmY2OTUuLjdhMDMxODVm
MGM3YTk0Y2I0YWE0YzZkNzVkMTdlNDQ3ODNmMzA1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
QEAgLTYxOSw3ICs2MTksNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OmdldEF0dHJp
YnV0ZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdAogI2lmIEVOQUJMRShN
VVRBVElPTl9PQlNFUlZFUlMpCiBzdGF0aWMgdm9pZCBlbnF1ZXVlQXR0cmlidXRlc011dGF0aW9u
UmVjb3JkKEVsZW1lbnQqIHRhcmdldCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSkKIHsKLSAgICBPd25QdHI8TXV0YXRpb25P
YnNlcnZlckludGVyZXN0R3JvdXA+IG11dGF0aW9uUmVjaXBpZW50cyA9IE11dGF0aW9uT2JzZXJ2
ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JBdHRyaWJ1dGVzTXV0YXRpb24odGFyZ2V0LCBhdHRy
aWJ1dGVOYW1lLmxvY2FsTmFtZSgpKTsKKyAgICBPd25QdHI8TXV0YXRpb25PYnNlcnZlckludGVy
ZXN0R3JvdXA+IG11dGF0aW9uUmVjaXBpZW50cyA9IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdy
b3VwOjpjcmVhdGVGb3JBdHRyaWJ1dGVzTXV0YXRpb24odGFyZ2V0LCBhdHRyaWJ1dGVOYW1lKTsK
ICAgICBtdXRhdGlvblJlY2lwaWVudHMtPmVucXVldWVNdXRhdGlvblJlY29yZChNdXRhdGlvblJl
Y29yZDo6Y3JlYXRlQXR0cmlidXRlcyh0YXJnZXQsIGF0dHJpYnV0ZU5hbWUsIG9sZFZhbHVlKSk7
CiB9CiAjZW5kaWYKQEAgLTY0Niw3ICs2NDYsOCBAQCB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0
ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsCiAK
ICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQogICAgIC8vIFRoZSBjYWxsIHRvIGF0dHJp
YnV0ZUNoYW5nZWQgYmVsb3cgbWF5IGRpc3BhdGNoIERPTVN1YnRyZWVNb2RpZmllZCwgc28gaXQn
cyBpbXBvcnRhbnQgdG8gZW5xdWV1ZSBhIE11dGF0aW9uUmVjb3JkIG5vdy4KLSAgICBlbnF1ZXVl
QXR0cmlidXRlc011dGF0aW9uUmVjb3JkKHRoaXMsIGF0dHJpYnV0ZU5hbWUsIG9sZCA/IG9sZC0+
dmFsdWUoKSA6IG51bGxBdG9tKTsKKyAgICBpZiAoIWlzU3luY2hyb25pemluZ1N0eWxlQXR0cmli
dXRlKCkpCisgICAgICAgIGVucXVldWVBdHRyaWJ1dGVzTXV0YXRpb25SZWNvcmQodGhpcywgYXR0
cmlidXRlTmFtZSwgb2xkID8gb2xkLT52YWx1ZSgpIDogbnVsbEF0b20pOwogI2VuZGlmCiAKICAg
ICBpZiAoaXNJZEF0dHJpYnV0ZU5hbWUob2xkID8gb2xkLT5uYW1lKCkgOiBhdHRyaWJ1dGVOYW1l
KSkKQEAgLTY4NCw3ICs2ODUsOCBAQCB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLAogCiAjaWYgRU5B
QkxFKE1VVEFUSU9OX09CU0VSVkVSUykKICAgICAvLyBUaGUgY2FsbCB0byBhdHRyaWJ1dGVDaGFu
Z2VkIGJlbG93IG1heSBkaXNwYXRjaCBET01TdWJ0cmVlTW9kaWZpZWQsIHNvIGl0J3MgaW1wb3J0
YW50IHRvIGVucXVldWUgYSBNdXRhdGlvblJlY29yZCBub3cuCi0gICAgZW5xdWV1ZUF0dHJpYnV0
ZXNNdXRhdGlvblJlY29yZCh0aGlzLCBuYW1lLCBvbGQgPyBvbGQtPnZhbHVlKCkgOiBudWxsQXRv
bSk7CisgICAgaWYgKCFpc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKQorICAgICAgICBl
bnF1ZXVlQXR0cmlidXRlc011dGF0aW9uUmVjb3JkKHRoaXMsIG5hbWUsIG9sZCA/IG9sZC0+dmFs
dWUoKSA6IG51bGxBdG9tKTsKICNlbmRpZgogCiAgICAgaWYgKGlzSWRBdHRyaWJ1dGVOYW1lKG5h
bWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuY3BwCmlu
ZGV4IGQzY2E4YjZhMTcyZTY3ZTQ0YzVmNzYxNGZjNTdiMmQ4M2FhNTllY2YuLjRlOWUxMWJmMmM0
ZDc2MDgwOWU2OWU4NWFiNTk4MGI3ZWY1NzM4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9XZWJLaXRNdXRhdGlvbk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
V2ViS2l0TXV0YXRpb25PYnNlcnZlci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJN
dXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQu
aCIKICNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1
ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTEsOSAr
MTUyLDkgQEAgUGFzc093blB0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gTXV0YXRp
b25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUYKICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwKHRhcmdldCwgV2ViS2l0TXV0YXRpb25PYnNl
cnZlcjo6Q2hhcmFjdGVyRGF0YSkpOwogfQogCi1QYXNzT3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJJ
bnRlcmVzdEdyb3VwPiBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQXR0
cmlidXRlc011dGF0aW9uKE5vZGUqIHRhcmdldCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1
dGVOYW1lKQorUGFzc093blB0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gTXV0YXRp
b25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUZvckF0dHJpYnV0ZXNNdXRhdGlvbihOb2Rl
KiB0YXJnZXQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cCh0YXJnZXQsIFdl
YktpdE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXMsIGF0dHJpYnV0ZU5hbWUpKTsKKyAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwKHRhcmdldCwg
V2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6QXR0cmlidXRlcywgYXR0cmlidXRlTmFtZS5sb2NhbE5h
bWUoKSkpOwogfQogCiBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6TXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXAoTm9kZSogdGFyZ2V0LCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpN
dXRhdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRNdXRhdGlvbk9ic2VydmVyLmgKaW5kZXggZWFhNjc1NGNh
OGZkY2RlMzllMDgxYTdjMTJmZWMxZjdkYTFiNTNlMi4uY2E0ZGFkNmYwZTE5OWY2MzdlOWE3OGQy
NWVlYjM0YzFhMzc4Yzc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE11
dGF0aW9uT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TXV0YXRpb25P
YnNlcnZlci5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIE11dGF0aW9uQ2FsbGJhY2s7CiBjbGFz
cyBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOwogY2xhc3MgTXV0YXRpb25SZWNvcmQ7CiBj
bGFzcyBOb2RlOworY2xhc3MgUXVhbGlmaWVkTmFtZTsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9u
Q29kZTsKIApAQCAtOTksNyArMTAwLDcgQEAgY2xhc3MgTXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXAgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJJ
bnRlcmVzdEdyb3VwPiBjcmVhdGVGb3JDaGlsZExpc3RNdXRhdGlvbihOb2RlKiB0YXJnZXQpOwog
ICAgIHN0YXRpYyBQYXNzT3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPiBjcmVh
dGVGb3JDaGFyYWN0ZXJEYXRhTXV0YXRpb24oTm9kZSogdGFyZ2V0KTsKLSAgICBzdGF0aWMgUGFz
c093blB0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gY3JlYXRlRm9yQXR0cmlidXRl
c011dGF0aW9uKE5vZGUqIHRhcmdldCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1l
KTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4g
Y3JlYXRlRm9yQXR0cmlidXRlc011dGF0aW9uKE5vZGUqIHRhcmdldCwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSk7CiAKICAgICBib29sIGlzT2xkVmFsdWVSZXF1ZXN0ZWQoKTsK
ICAgICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBtX29ic2VydmVycy5pc0VtcHR5KCk7IH0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCA3NDlmMGFhMmIyYjM2MmUzYjMyZmUxMTIyNmIzNGUyN2U0NDVjNjg2Li5jNGMyYTAwNzVh
ODk1YmY2MzQxYzc1OGJkOTBlY2NmOGVhNGIzNmJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTEtMTEtMjMgIFJhZmFlbCBXZWluc3RlaW4gIDxyYWZhZWx3QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbTXV0YXRpb25PYnNlcnZlcnNdIE1vZGlmaWNhdGlvbnMgdG8gdGhlIHN0eWxlIHByb3Bl
cnR5IGRvbid0IGRpc3BhdGNoICJhdHRyaWJ1dGVzIiBNdXRhdGlvbiBSZWNvcmRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDEzNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRlc3RzIGFzc2Vy
dGluZyB0aGF0IGNoYW5nZXMgdG8gdGhlIHN0eWxlIHByb3BlcnR5IGFyZSBvYnNlcnZhYmxlIGFu
ZCB3b3JrIGNvcnJlY3RseSBpZiBvbGRWYWx1ZSBpcyByZXF1ZXN0ZWQuCisKKyAgICAgICAgKiBm
YXN0L211dGF0aW9uL29ic2VydmUtYXR0cmlidXRlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9tdXRhdGlvbi9vYnNlcnZlLWF0dHJpYnV0ZXMuaHRtbDoKKwogMjAxMS0xMS0yMyAgUGhp
bGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgc2tpcCBhbm90aGVyIHN2ZyB0ZXN0IG9uIEdUSyBzaG93aW5nIHNpZ25lZCB6ZXJvIGlzc3Vl
cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZS1hdHRyaWJ1
dGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZS1hdHRy
aWJ1dGVzLWV4cGVjdGVkLnR4dAppbmRleCA2NzllOTA1ODZhODhkYTFmOTY1ZGZiNzY1NjUzNmRi
NDRkZWVlZGMxLi5mN2E2MzRlM2U2MzUyYThhNDg0MjQ2OWRkZDUwZWM5M2MzNmU1N2FlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUtYXR0cmlidXRlcy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZlLWF0dHJpYnV0
ZXMtZXhwZWN0ZWQudHh0CkBAIC0xNTIsNiArMTUyLDM0IEBAIFBBU1MgbXV0YXRpb25zWzNdLnR5
cGUgaXMgImF0dHJpYnV0ZXMiCiBQQVNTIG11dGF0aW9uc1szXS5hdHRyaWJ1dGVOYW1lIGlzICJw
YXRoTGVuZ3RoIgogUEFTUyBtdXRhdGlvbnNbM10uYXR0cmlidXRlTmFtZXNwYWNlIGlzICJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKIAorVGVzdGluZyB0aGF0IG1vZGlmeWluZyBhbiBlbGVt
ZW50cyBzdHlsZSBwcm9wZXJ0eSBkaXNwYXRjaGVzIE11dGF0aW9uIFJlY29yZHMuCitQQVNTIG11
dGF0aW9ucy5sZW5ndGggaXMgMworUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRl
cyIKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgInN0eWxlIgorUEFTUyBtdXRh
dGlvbnNbMF0ub2xkVmFsdWUgaXMgbnVsbAorUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiYXR0
cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUgaXMgInN0eWxlIgorUEFT
UyBtdXRhdGlvbnNbMV0ub2xkVmFsdWUgaXMgbnVsbAorUEFTUyBtdXRhdGlvbnNbMl0udHlwZSBp
cyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzJdLmF0dHJpYnV0ZU5hbWUgaXMgInN0eWxl
IgorUEFTUyBtdXRhdGlvbnNbMl0ub2xkVmFsdWUgaXMgbnVsbAorLi4ubXV0YXRpb24gcmVjb3Jk
IGNyZWF0ZWQuCitQQVNTIG11dGF0aW9ucyBpcyBudWxsCisKK1Rlc3RpbmcgdGhhdCBtb2RpZnlp
bmcgYW4gZWxlbWVudHMgc3R5bGUgcHJvcGVydHkgZGlzcGF0Y2hlcyBNdXRhdGlvbiBSZWNvcmRz
IHdpdGggY29ycmVjdCBvbGRWYWx1ZXMuCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMworUEFT
UyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzBdLmF0
dHJpYnV0ZU5hbWUgaXMgInN0eWxlIgorUEFTUyBtdXRhdGlvbnNbMF0ub2xkVmFsdWUgaXMgImNv
bG9yOiB5ZWxsb3c7IHdpZHRoOiAxMDBweDsgIgorUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAi
YXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUgaXMgInN0eWxlIgor
UEFTUyBtdXRhdGlvbnNbMV0ub2xkVmFsdWUgaXMgIndpZHRoOiAxMDBweDsgY29sb3I6IHJlZDsg
IgorUEFTUyBtdXRhdGlvbnNbMl0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25z
WzJdLmF0dHJpYnV0ZU5hbWUgaXMgInN0eWxlIgorUEFTUyBtdXRhdGlvbnNbMl0ub2xkVmFsdWUg
aXMgImNvbG9yOiByZWQ7IHdpZHRoOiAyMDBweDsgIgorLi4ubXV0YXRpb24gcmVjb3JkIGNyZWF0
ZWQuCitQQVNTIG11dGF0aW9ucyBpcyBudWxsCisKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRh
dGlvbi9vYnNlcnZlLWF0dHJpYnV0ZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24v
b2JzZXJ2ZS1hdHRyaWJ1dGVzLmh0bWwKaW5kZXggYWY1OGI1MThiNTEyYjA4ZTc5ZGEwZGU4ZGU0
Njc1OTM0NTAwMTk4ZS4uYjBhZTZmYTdlZjU3ODk4MWI3MDkxODU4MjJhNjY0YTQ1NGVkZjNlZiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZlLWF0dHJpYnV0ZXMu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUtYXR0cmlidXRlcy5o
dG1sCkBAIC02MzgsNiArNjM4LDExMCBAQCBmdW5jdGlvbiB0ZXN0QXR0cmlidXRlRmlsdGVyTm9u
SFRNTERvY3VtZW50KCkgewogICAgIHN0YXJ0KCk7CiB9CiAKK2Z1bmN0aW9uIHRlc3RTdHlsZUF0
dHJpYnV0ZVByb3BlcnR5QWNjZXNzKCkgeworICAgIHZhciBzdmdEb2MsIGRpdiwgcGF0aDsKKyAg
ICB2YXIgb2JzZXJ2ZXI7CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWco
J1Rlc3RpbmcgdGhhdCBtb2RpZnlpbmcgYW4gZWxlbWVudHMgc3R5bGUgcHJvcGVydHkgZGlzcGF0
Y2hlcyBNdXRhdGlvbiBSZWNvcmRzLicpOworCisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7Cisg
ICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkg
eworICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGl2
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGRpdi5zZXRBdHRyaWJ1
dGUoJ3N0eWxlJywgJ2NvbG9yOiB5ZWxsb3c7IHdpZHRoOiAxMDBweDsgJyk7CisgICAgICAgIG9i
c2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUgfSk7CisgICAgICAgIGRpdi5z
dHlsZS5jb2xvciA9ICdyZWQnOworICAgICAgICBkaXYuc3R5bGUud2lkdGggPSAnMjAwcHgnOwor
ICAgICAgICBkaXYuc3R5bGUuY29sb3IgPSAnYmx1ZSc7CisKKyAgICAgICAgc2V0VGltZW91dChj
aGVja0FuZENvbnRpbnVlLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0FuZENvbnRp
bnVlKCkgeworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICczJyk7CisgICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAg
ICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJzdHlsZSInKTsKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5vbGRWYWx1ZScsICdudWxsJyk7CisgICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lJywgJyJzdHlsZSInKTsKKyAgICAg
ICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5vbGRWYWx1ZScsICdudWxsJyk7CisgICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMl0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1syXS5hdHRyaWJ1dGVOYW1lJywgJyJzdHlsZSInKTsKKyAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1syXS5vbGRWYWx1ZScsICdudWxsJyk7CisKKyAgICAgICAgbXV0
YXRpb25zID0gbnVsbDsKKyAgICAgICAgZGl2LmdldEF0dHJpYnV0ZSgnc3R5bGUnKTsKKyAgICAg
ICAgc2V0VGltZW91dChmaW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgp
IHsKKyAgICAgICAgZGVidWcoJy4uLm11dGF0aW9uIHJlY29yZCBjcmVhdGVkLicpOworCisgICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnMnLCAnbnVsbCcpOworCisgICAgICAgIG9ic2VydmVyLmRp
c2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOwor
ICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTdHlsZUF0dHJpYnV0ZVBy
b3BlcnR5QWNjZXNzT2xkVmFsdWUoKSB7CisgICAgdmFyIHN2Z0RvYywgZGl2LCBwYXRoOworICAg
IHZhciBvYnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1Zygn
VGVzdGluZyB0aGF0IG1vZGlmeWluZyBhbiBlbGVtZW50cyBzdHlsZSBwcm9wZXJ0eSBkaXNwYXRj
aGVzIE11dGF0aW9uIFJlY29yZHMgd2l0aCBjb3JyZWN0IG9sZFZhbHVlcy4nKTsKKworICAgICAg
ICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlv
bk9ic2VydmVyKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIG11dGF0aW9ucyA9IG07CisgICAg
ICAgIH0pOworCisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdzdHlsZScsICdjb2xvcjogeWVsbG93OyB3aWR0aDog
MTAwcHg7ICcpOworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0
cnVlLCBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSB9KTsKKyAgICAgICAgZGl2LnN0eWxlLmNvbG9y
ID0gJ3JlZCc7CisgICAgICAgIGRpdi5zdHlsZS53aWR0aCA9ICcyMDBweCc7CisgICAgICAgIGRp
di5zdHlsZS5jb2xvciA9ICdibHVlJzsKKworICAgICAgICBzZXRUaW1lb3V0KGNoZWNrQW5kQ29u
dGludWUsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrQW5kQ29udGludWUoKSB7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzMnKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnInN0eWxlIicpOworICAgICAgICBzaG91
bGRCZSgnbXV0YXRpb25zWzBdLm9sZFZhbHVlJywgJyJjb2xvcjogeWVsbG93OyB3aWR0aDogMTAw
cHg7ICInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJhdHRyaWJ1
dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUnLCAn
InN0eWxlIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLm9sZFZhbHVlJywgJyJ3
aWR0aDogMTAwcHg7IGNvbG9yOiByZWQ7ICInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1syXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzJdLmF0dHJpYnV0ZU5hbWUnLCAnInN0eWxlIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzJdLm9sZFZhbHVlJywgJyJjb2xvcjogcmVkOyB3aWR0aDogMjAwcHg7ICInKTsKKworICAg
ICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBkaXYuZ2V0QXR0cmlidXRlKCdzdHlsZScp
OworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
ZmluaXNoKCkgeworICAgICAgICBkZWJ1ZygnLi4ubXV0YXRpb24gcmVjb3JkIGNyZWF0ZWQuJyk7
CisKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucycsICdudWxsJyk7CisKKyAgICAgICAgb2Jz
ZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5leHRU
ZXN0KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsKK30KKwogdmFyIHRlc3RzID0gWwogICAgIHRl
c3RCYXNpYywKICAgICB0ZXN0V3JvbmdUeXBlLApAQCAtNjUzLDcgKzc1Nyw5IEBAIHZhciB0ZXN0
cyA9IFsKICAgICB0ZXN0QXR0cmlidXRlRmlsdGVyLAogICAgIHRlc3RBdHRyaWJ1dGVGaWx0ZXJT
dWJ0cmVlLAogICAgIHRlc3RBdHRyaWJ1dGVGaWx0ZXJOb25IVE1MRWxlbWVudCwKLSAgICB0ZXN0
QXR0cmlidXRlRmlsdGVyTm9uSFRNTERvY3VtZW50CisgICAgdGVzdEF0dHJpYnV0ZUZpbHRlck5v
bkhUTUxEb2N1bWVudCwKKyAgICB0ZXN0U3R5bGVBdHRyaWJ1dGVQcm9wZXJ0eUFjY2VzcywKKyAg
ICB0ZXN0U3R5bGVBdHRyaWJ1dGVQcm9wZXJ0eUFjY2Vzc09sZFZhbHVlCiBdOwogdmFyIHRlc3RJ
bmRleCA9IDA7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116397</attachid>
            <date>2011-11-23 12:29:19 -0800</date>
            <delta_ts>2011-11-23 13:40:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70137-20111123122918.patch</filename>
            <type>text/plain</type>
            <size>22572</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMwYzRmODBmZTRhZTdh
NzYyYTkwOTMyNWYyOTczNzJlNTMwMjEwZi4uNmVhOThjOTk4ZjI0MjNmM2I5MzdkYzJmNWMyZjVm
YTBiYmYxYmIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDExLTExLTIzICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW011dGF0aW9u
T2JzZXJ2ZXJzXSBNb2RpZmljYXRpb25zIHRvIHRoZSBzdHlsZSBwcm9wZXJ0eSBkb24ndCBkaXNw
YXRjaCAiYXR0cmlidXRlcyIgTXV0YXRpb24gUmVjb3JkcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAxMzcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBwcml2YXRlIEF0dHJp
YnV0ZXNNdXRhdGlvblNjb3BlIG1lY2hhbmlzbSB0byBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
biAod2hpY2ggdXNlcworICAgICAgICB0aGUgUkFJSSBwYXR0ZXJuIHNpbWlsYXIgdG8gdGhlIHB1
YmxpYyBDaGlsZExpc3RNdXRhdGlvblNjb3BlKS4gVGhpcyBtYW5hZ2VzIHRoZSAoc29tZXRpbWVz
IGNvbmRpdGlvbmFsKQorICAgICAgICBwcmUtY2hhbmdlIHNlcmlhbGl6YXRpb24gb2YgdGhlIHN0
eWxlIGF0dHJpYnV0ZSAoaWYgYW4gb2JzZXJ2ZXIgaGFzIHJlcXVlc3RlZCBvbGRWYWx1ZSksIGNy
ZWF0aW9uIG9mCisgICAgICAgIHRoZSBtdXRhdGlvbiByZWNvcmQsIGFuZCBkaXNwYXRjaCBpZiB0
aGUgZGVjbGFyYXRpb24gd2FzIGFjdHVhbCBhZmZlY3RlZC4KKworICAgICAgICAqIGNzcy9DU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpwYXJzZURlY2xhcmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjphZGRQYXJz
ZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOjphZGRQYXJzZWRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjo6c2V0Q3NzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbjo6bWVyZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb246OnJlbW92ZVByb3BlcnRpZXNJblNldCk6CisgICAgICAgICogZG9tL0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QXR0cmlidXRlKToKKwog
MjAxMS0xMS0yMyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLiBCdWlsZCBmaXguIEFkZGVkIG1pc3NpbmcgRU5BQkxFKFdPUktFUlMp
IGd1YXJkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24uY3BwCmluZGV4IDBlNDY1YWM4NDhmOTIyY2JlOWQyMWYzMjQ5YzM0MWRhNGM2NTBlNGYu
Ljc4Y2U5YzRlYTZjMjZjZDEwYmFlNTM3YzAzOGFjOTM4MTk1MmQzYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMzIsOCAr
MzIsMTEgQEAKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJNdXRhdGlvblJl
Y29yZC5oIgogI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJLaXRNdXRh
dGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00MSw2ICs0NCw2OSBAQCB1c2luZyBu
YW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBFTkFCTEUoTVVUQVRJ
T05fT0JTRVJWRVJTKQorbmFtZXNwYWNlIHsKKworY2xhc3MgU3R5bGVBdHRyaWJ1dGVNdXRhdGlv
blNjb3BlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHlsZUF0dHJpYnV0ZU11dGF0aW9u
U2NvcGUpOworcHVibGljOgorICAgIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZShDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbiogZGVjbCkKKyAgICB7CisgICAgICAgICsrc19zY29wZUNvdW50
OworCisgICAgICAgIGlmIChzX3Njb3BlQ291bnQgIT0gMSkgeworICAgICAgICAgICAgQVNTRVJU
KHNfY3VycmVudERlY2wgPT0gZGVjbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBBU1NFUlQoIXNfY3VycmVudERlY2wpOworICAgICAgICBzX2N1cnJlbnREZWNs
ID0gZGVjbDsKKworICAgICAgICBpZiAoIXNfY3VycmVudERlY2wtPmlzSW5saW5lU3R5bGVEZWNs
YXJhdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHNfbXV0YXRpb25SZWNp
cGllbnRzID0gTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUZvckF0dHJpYnV0
ZXNNdXRhdGlvbihzX2N1cnJlbnREZWNsLT5ub2RlKCksIEhUTUxOYW1lczo6c3R5bGVBdHRyKTsK
KyAgICAgICAgaWYgKHNfbXV0YXRpb25SZWNpcGllbnRzLT5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgIHNfbXV0YXRpb25SZWNpcGllbnRzLmNsZWFyKCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KHNfY3VycmVu
dERlY2wtPm5vZGUoKSk7CisgICAgICAgIEF0b21pY1N0cmluZyBvbGRWYWx1ZSA9IHNfbXV0YXRp
b25SZWNpcGllbnRzLT5pc09sZFZhbHVlUmVxdWVzdGVkKCkgPyBlbGVtZW50LT5nZXRBdHRyaWJ1
dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIpIDogbnVsbEF0b207CisgICAgICAgIHNfbXV0YXRpb24g
PSBNdXRhdGlvblJlY29yZDo6Y3JlYXRlQXR0cmlidXRlcyhlbGVtZW50LCBIVE1MTmFtZXM6OnN0
eWxlQXR0ciwgb2xkVmFsdWUpOworICAgIH0KKworICAgIH5TdHlsZUF0dHJpYnV0ZU11dGF0aW9u
U2NvcGUoKQorICAgIHsKKyAgICAgICAgLS1zX3Njb3BlQ291bnQ7CisgICAgICAgIGlmICghc19z
Y29wZUNvdW50KQorICAgICAgICAgICAgc19jdXJyZW50RGVjbCA9IDA7CisgICAgfQorCisgICAg
dm9pZCBlbnF1ZXVlTXV0YXRpb25SZWNvcmQoKQorICAgIHsKKyAgICAgICAgaWYgKCFzX211dGF0
aW9uKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzX211dGF0aW9uUmVjaXBpZW50cy0+
ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKHNfbXV0YXRpb24pOworICAgICAgICBzX211dGF0aW9uLmNs
ZWFyKCk7CisgICAgICAgIHNfbXV0YXRpb25SZWNpcGllbnRzLmNsZWFyKCk7CisgICAgfQorCitw
cml2YXRlOgorICAgIHN0YXRpYyB1bnNpZ25lZCBzX3Njb3BlQ291bnQ7CisgICAgc3RhdGljIE93
blB0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gc19tdXRhdGlvblJlY2lwaWVudHM7
CisgICAgc3RhdGljIFJlZlB0cjxNdXRhdGlvblJlY29yZD4gc19tdXRhdGlvbjsKKyAgICBzdGF0
aWMgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHNfY3VycmVudERlY2w7Cit9OworCit1bnNp
Z25lZCBTdHlsZUF0dHJpYnV0ZU11dGF0aW9uU2NvcGU6OnNfc2NvcGVDb3VudCA9IDA7CitPd25Q
dHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IFN0eWxlQXR0cmlidXRlTXV0YXRpb25T
Y29wZTo6c19tdXRhdGlvblJlY2lwaWVudHM7CitSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IFN0eWxl
QXR0cmlidXRlTXV0YXRpb25TY29wZTo6c19tdXRhdGlvbjsKK0NTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uKiBTdHlsZUF0dHJpYnV0ZU11dGF0aW9uU2NvcGU6OnNfY3VycmVudERlY2wgPSAwOwor
Cit9IC8vIG5hbWVzcGFjZQorI2VuZGlmIC8vIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisK
IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbigp
CiAgICAgOiBDU1NTdHlsZURlY2xhcmF0aW9uKDAsIC8qIGlzTXV0YWJsZSAqLyB0cnVlKQogICAg
ICwgbV9ub2RlKDApCkBAIC01MjAsNiArNTg2LDEwIEBAIFN0cmluZyBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIGJvb2wgbm90aWZ5Q2hh
CiB7CiAgICAgQVNTRVJUKCFtX2l0ZXJhdG9yQ291bnQpOwogCisjaWYgRU5BQkxFKE1VVEFUSU9O
X09CU0VSVkVSUykKKyAgICBTdHlsZUF0dHJpYnV0ZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29w
ZSh0aGlzKTsKKyNlbmRpZgorCiAgICAgaWYgKHJlbW92ZVNob3J0aGFuZFByb3BlcnR5KHByb3Bl
cnR5SUQsIG5vdGlmeUNoYW5nZWQpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBSZXR1cm4gYW4gZXF1
aXZhbGVudCBzaG9ydGhhbmQgd2hlbiBwb3NzaWJsZS4KICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwpAQCAtNTM1LDYgKzYwNSwxMCBAQCBTdHJpbmcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246
OnJlbW92ZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBib29sIG5vdGlmeUNoYQogICAgIC8vIGFu
ZCBzd2VlcGluZyB0aGVtIHdoZW4gdGhlIHZlY3RvciBncm93cyB0b28gYmlnLgogICAgIG1fcHJv
cGVydGllcy5yZW1vdmUoZm91bmRQcm9wZXJ0eSAtIG1fcHJvcGVydGllcy5kYXRhKCkpOwogCisj
aWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyAgICBtdXRhdGlvblNjb3BlLmVucXVldWVN
dXRhdGlvblJlY29yZCgpOworI2VuZGlmCisKICAgICBpZiAobm90aWZ5Q2hhbmdlZCkKICAgICAg
ICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogCkBAIC02MDIsNiArNjc2LDEwIEBAIGJvb2wgQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBjb25z
dCBTdHJpbmcmIHZhbHVlCiB7CiAgICAgQVNTRVJUKCFtX2l0ZXJhdG9yQ291bnQpOwogCisjaWYg
RU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyAgICBTdHlsZUF0dHJpYnV0ZU11dGF0aW9uU2Nv
cGUgbXV0YXRpb25TY29wZSh0aGlzKTsKKyNlbmRpZgorCiAgICAgLy8gU2V0dGluZyB0aGUgdmFs
dWUgdG8gYW4gZW1wdHkgc3RyaW5nIGp1c3QgcmVtb3ZlcyB0aGUgcHJvcGVydHkgaW4gYm90aCBJ
RSBhbmQgR2Vja28uCiAgICAgLy8gU2V0dGluZyBpdCB0byBudWxsIHNlZW1zIHRvIHByb2R1Y2Ug
bGVzcyBjb25zaXN0ZW50IHJlc3VsdHMsIGJ1dCB3ZSB0cmVhdCBpdCBqdXN0IHRoZSBzYW1lLgog
ICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpIHsKQEAgLTYxNSwxNiArNjkzLDI3IEBAIGJvb2wgQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBjb25z
dCBTdHJpbmcmIHZhbHVlCiAgICAgaWYgKCFzdWNjZXNzKSB7CiAgICAgICAgIC8vIENTUyBET00g
cmVxdWlyZXMgcmFpc2luZyBTWU5UQVhfRVJSIGhlcmUsIGJ1dCB0aGlzIGlzIHRvbyBkYW5nZXJv
dXMgZm9yIGNvbXBhdGliaWxpdHksCiAgICAgICAgIC8vIHNlZSA8aHR0cDovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI5Nj4uCi0gICAgfSBlbHNlIGlmIChub3RpZnlDaGFuZ2Vk
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisjaWYgRU5BQkxFKE1VVEFUSU9OX09C
U0VSVkVSUykKKyAgICBtdXRhdGlvblNjb3BlLmVucXVldWVNdXRhdGlvblJlY29yZCgpOworI2Vu
ZGlmCisKKyAgICBpZiAobm90aWZ5Q2hhbmdlZCkKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2Fs
YygpOwogCi0gICAgcmV0dXJuIHN1Y2Nlc3M7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQg
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5SW50ZXJuYWwoY29uc3QgQ1NT
UHJvcGVydHkmIHByb3BlcnR5LCBDU1NQcm9wZXJ0eSogc2xvdCkKIHsKICAgICBBU1NFUlQoIW1f
aXRlcmF0b3JDb3VudCk7CiAKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorICAgIFN0
eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOworI2VuZGlmCisK
ICAgICBpZiAoIXJlbW92ZVNob3J0aGFuZFByb3BlcnR5KHByb3BlcnR5LmlkKCksIGZhbHNlKSkg
ewogICAgICAgICBDU1NQcm9wZXJ0eSogdG9SZXBsYWNlID0gc2xvdCA/IHNsb3QgOiBmaW5kUHJv
cGVydHlXaXRoSWQocHJvcGVydHkuaWQoKSk7CiAgICAgICAgIGlmICh0b1JlcGxhY2UpIHsKQEAg
LTYzMyw2ICs3MjIsMTAgQEAgdm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJv
cGVydHlJbnRlcm5hbChjb25zdCBDU1NQcm9wZXJ0eSYgcHJvcGVydHkKICAgICAgICAgfQogICAg
IH0KICAgICBtX3Byb3BlcnRpZXMuYXBwZW5kKHByb3BlcnR5KTsKKworI2lmIEVOQUJMRShNVVRB
VElPTl9PQlNFUlZFUlMpCisgICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQo
KTsKKyNlbmRpZgogfQogCiBib29sIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9w
ZXJ0eShpbnQgcHJvcGVydHlJRCwgaW50IHZhbHVlLCBib29sIGltcG9ydGFudCwgYm9vbCBub3Rp
ZnlDaGFuZ2VkKQpAQCAtNjczLDkgKzc2NiwxOCBAQCB2b2lkIENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uOjpwYXJzZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYgc3R5bGVEZWNsYXJhdGlvbgog
ewogICAgIEFTU0VSVCghbV9pdGVyYXRvckNvdW50KTsKIAorI2lmIEVOQUJMRShNVVRBVElPTl9P
QlNFUlZFUlMpCisgICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUo
dGhpcyk7CisjZW5kaWYKKwogICAgIG1fcHJvcGVydGllcy5jbGVhcigpOwogICAgIENTU1BhcnNl
ciBwYXJzZXIodXNlU3RyaWN0UGFyc2luZygpKTsKICAgICBwYXJzZXIucGFyc2VEZWNsYXJhdGlv
bih0aGlzLCBzdHlsZURlY2xhcmF0aW9uKTsKKworI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZF
UlMpCisgICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsKKyNlbmRpZgor
CiAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQogCkBAIC02ODMsMTAgKzc4NSwxOCBAQCB2
b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjphZGRQYXJzZWRQcm9wZXJ0aWVzKGNvbnN0
IENTU1Byb3BlcnR5KiBjb25zdCogcAogewogICAgIEFTU0VSVCghbV9pdGVyYXRvckNvdW50KTsK
IAorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgU3R5bGVBdHRyaWJ1dGVNdXRh
dGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CisjZW5kaWYKKwogICAgIG1fcHJvcGVydGll
cy5yZXNlcnZlQ2FwYWNpdHkobnVtUHJvcGVydGllcyk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBudW1Qcm9wZXJ0aWVzOyArK2kpCiAgICAgICAgIGFkZFBhcnNlZFByb3BlcnR5KCpwcm9wZXJ0
aWVzW2ldKTsKIAorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgbXV0YXRpb25T
Y29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsKKyNlbmRpZgorCiAgICAgLy8gRklYTUU6IFRo
aXMgcHJvYmFibHkgc2hvdWxkIGhhdmUgYSBjYWxsIHRvIHNldE5lZWRzU3R5bGVSZWNhbGMoKSBp
ZiBzb21ldGhpbmcgY2hhbmdlZC4gV2UgbWF5IGFsc28gd2lzaCB0byBhZGQKICAgICAvLyBhIG5v
dGlmeUNoYW5nZWQgYXJndW1lbnQgdG8gdGhpcyBmdW5jdGlvbiB0byBmb2xsb3cgdGhlIG1vZGVs
IG9mIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGlzIGNsYXNzLgogfQpAQCAtNjk1LDExICs4MDUsMTkg
QEAgdm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6YWRkUGFyc2VkUHJvcGVydHkoY29u
c3QgQ1NTUHJvcGVydHkmIHByb3BlcnR5KQogewogICAgIEFTU0VSVCghbV9pdGVyYXRvckNvdW50
KTsKIAorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgU3R5bGVBdHRyaWJ1dGVN
dXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CisjZW5kaWYKKwogICAgIC8vIE9ubHkg
YWRkIHByb3BlcnRpZXMgdGhhdCBoYXZlIG5vICFpbXBvcnRhbnQgY291bnRlcnBhcnQgcHJlc2Vu
dAogICAgIGlmICghZ2V0UHJvcGVydHlQcmlvcml0eShwcm9wZXJ0eS5pZCgpKSB8fCBwcm9wZXJ0
eS5pc0ltcG9ydGFudCgpKSB7CiAgICAgICAgIHJlbW92ZVByb3BlcnR5KHByb3BlcnR5LmlkKCks
IGZhbHNlLCBmYWxzZSk7CiAgICAgICAgIG1fcHJvcGVydGllcy5hcHBlbmQocHJvcGVydHkpOwog
ICAgIH0KKworI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgbXV0YXRpb25TY29w
ZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsKKyNlbmRpZgogfQogCiB2b2lkIENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOjpzZXRMZW5ndGhQcm9wZXJ0eShpbnQgcHJvcGVydHlJZCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgLyptdWx0aUxlbmd0aCovKQpAQCAt
NzkwLDEwICs5MDgsMTkgQEAgdm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6c2V0Q3Nz
VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGUKIHsKICAgICBBU1NFUlQo
IW1faXRlcmF0b3JDb3VudCk7CiAKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorICAg
IFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOworI2VuZGlm
CisKICAgICBlYyA9IDA7CiAgICAgbV9wcm9wZXJ0aWVzLmNsZWFyKCk7CiAgICAgQ1NTUGFyc2Vy
IHBhcnNlcih1c2VTdHJpY3RQYXJzaW5nKCkpOwogICAgIHBhcnNlci5wYXJzZURlY2xhcmF0aW9u
KHRoaXMsIHRleHQpOworCisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyAgICBtdXRh
dGlvblNjb3BlLmVucXVldWVNdXRhdGlvblJlY29yZCgpOworI2VuZGlmCisKICAgICAvLyBGSVhN
RTogRGV0ZWN0IHN5bnRheCBlcnJvcnMgYW5kIHNldCBlYy4KICAgICBzZXROZWVkc1N0eWxlUmVj
YWxjKCk7CiB9CkBAIC04MDIsNiArOTI5LDEwIEBAIHZvaWQgQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246Om1lcmdlKGNvbnN0IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBvdGhlciwKIHsK
ICAgICBBU1NFUlQoIW1faXRlcmF0b3JDb3VudCk7CiAKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JT
RVJWRVJTKQorICAgIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRo
aXMpOworI2VuZGlmCisKICAgICB1bnNpZ25lZCBzaXplID0gb3RoZXItPm1fcHJvcGVydGllcy5z
aXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IHNpemU7ICsrbikgewogICAgICAg
ICBjb25zdCBDU1NQcm9wZXJ0eSYgdG9NZXJnZSA9IG90aGVyLT5tX3Byb3BlcnRpZXNbbl07CkBA
IC04MTMsNiArOTQ0LDExIEBAIHZvaWQgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246Om1lcmdl
KGNvbnN0IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBvdGhlciwKICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICBtX3Byb3BlcnRpZXMuYXBwZW5kKHRvTWVyZ2UpOwogICAgIH0KKworI2lm
IEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0
YXRpb25SZWNvcmQoKTsKKyNlbmRpZgorCiAgICAgLy8gRklYTUU6IFRoaXMgcHJvYmFibHkgc2hv
dWxkIGhhdmUgYSBjYWxsIHRvIHNldE5lZWRzU3R5bGVSZWNhbGMoKSBpZiBzb21ldGhpbmcgY2hh
bmdlZC4gV2UgbWF5IGFsc28gd2lzaCB0byBhZGQKICAgICAvLyBhIG5vdGlmeUNoYW5nZWQgYXJn
dW1lbnQgdG8gdGhpcyBmdW5jdGlvbiB0byBmb2xsb3cgdGhlIG1vZGVsIG9mIG90aGVyIGZ1bmN0
aW9ucyBpbiB0aGlzIGNsYXNzLgogfQpAQCAtODcwLDYgKzEwMDYsMTAgQEAgdm9pZCBDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydGllc0luU2V0KGNvbnN0IGludCogc2V0
LCB1bnNpZ25lZAogICAgIGlmIChtX3Byb3BlcnRpZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorICAgIFN0eWxlQXR0cmlidXRl
TXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOworI2VuZGlmCisKICAgICAvLyBGSVhN
RTogVGhpcyBpcyBhbHdheXMgdXNlZCB3aXRoIHN0YXRpYyBzZXRzIGFuZCBpbiB0aGF0IGNhc2Ug
Y29uc3RydWN0aW5nIHRoZSBoYXNoIHJlcGVhdGVkbHkgaXMgcHJldHR5IHBvaW50bGVzcy4KICAg
ICBIYXNoU2V0PGludD4gdG9SZW1vdmU7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKQpAQCAtODkyLDggKzEwMzIsMTQgQEAgdm9pZCBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbjo6cmVtb3ZlUHJvcGVydGllc0luU2V0KGNvbnN0IGludCogc2V0LCB1bnNpZ25lZAog
ICAgIGJvb2wgY2hhbmdlZCA9IG5ld1Byb3BlcnRpZXMuc2l6ZSgpICE9IG1fcHJvcGVydGllcy5z
aXplKCk7CiAgICAgbV9wcm9wZXJ0aWVzID0gbmV3UHJvcGVydGllczsKIAotICAgIGlmIChjaGFu
Z2VkICYmIG5vdGlmeUNoYW5nZWQpCi0gICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAg
ICBpZiAoIWNoYW5nZWQgfHwgIW5vdGlmeUNoYW5nZWQpCisgICAgICAgIHJldHVybjsKKworI2lm
IEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0
YXRpb25SZWNvcmQoKTsKKyNlbmRpZgorCisgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQog
CiBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbjo6bWFrZU11dGFibGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGFjY2Q5
ODcxYWU1ZTRkMzQxMjIzMTI0NGMzOGU2Nzg4MzEyYmY2OTUuLjdhMDMxODVmMGM3YTk0Y2I0YWE0
YzZkNzVkMTdlNDQ3ODNmMzA1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTYxOSw3ICs2
MTksNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5TKGNvbnN0
IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdAogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNF
UlZFUlMpCiBzdGF0aWMgdm9pZCBlbnF1ZXVlQXR0cmlidXRlc011dGF0aW9uUmVjb3JkKEVsZW1l
bnQqIHRhcmdldCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBvbGRWYWx1ZSkKIHsKLSAgICBPd25QdHI8TXV0YXRpb25PYnNlcnZlckludGVy
ZXN0R3JvdXA+IG11dGF0aW9uUmVjaXBpZW50cyA9IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdy
b3VwOjpjcmVhdGVGb3JBdHRyaWJ1dGVzTXV0YXRpb24odGFyZ2V0LCBhdHRyaWJ1dGVOYW1lLmxv
Y2FsTmFtZSgpKTsKKyAgICBPd25QdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IG11
dGF0aW9uUmVjaXBpZW50cyA9IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVG
b3JBdHRyaWJ1dGVzTXV0YXRpb24odGFyZ2V0LCBhdHRyaWJ1dGVOYW1lKTsKICAgICBtdXRhdGlv
blJlY2lwaWVudHMtPmVucXVldWVNdXRhdGlvblJlY29yZChNdXRhdGlvblJlY29yZDo6Y3JlYXRl
QXR0cmlidXRlcyh0YXJnZXQsIGF0dHJpYnV0ZU5hbWUsIG9sZFZhbHVlKSk7CiB9CiAjZW5kaWYK
QEAgLTY0Niw3ICs2NDYsOCBAQCB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsCiAKICNpZiBFTkFCTEUo
TVVUQVRJT05fT0JTRVJWRVJTKQogICAgIC8vIFRoZSBjYWxsIHRvIGF0dHJpYnV0ZUNoYW5nZWQg
YmVsb3cgbWF5IGRpc3BhdGNoIERPTVN1YnRyZWVNb2RpZmllZCwgc28gaXQncyBpbXBvcnRhbnQg
dG8gZW5xdWV1ZSBhIE11dGF0aW9uUmVjb3JkIG5vdy4KLSAgICBlbnF1ZXVlQXR0cmlidXRlc011
dGF0aW9uUmVjb3JkKHRoaXMsIGF0dHJpYnV0ZU5hbWUsIG9sZCA/IG9sZC0+dmFsdWUoKSA6IG51
bGxBdG9tKTsKKyAgICBpZiAoIWlzU3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlKCkpCisgICAg
ICAgIGVucXVldWVBdHRyaWJ1dGVzTXV0YXRpb25SZWNvcmQodGhpcywgYXR0cmlidXRlTmFtZSwg
b2xkID8gb2xkLT52YWx1ZSgpIDogbnVsbEF0b20pOwogI2VuZGlmCiAKICAgICBpZiAoaXNJZEF0
dHJpYnV0ZU5hbWUob2xkID8gb2xkLT5uYW1lKCkgOiBhdHRyaWJ1dGVOYW1lKSkKQEAgLTY4NCw3
ICs2ODUsOCBAQCB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLAogCiAjaWYgRU5BQkxFKE1VVEFUSU9O
X09CU0VSVkVSUykKICAgICAvLyBUaGUgY2FsbCB0byBhdHRyaWJ1dGVDaGFuZ2VkIGJlbG93IG1h
eSBkaXNwYXRjaCBET01TdWJ0cmVlTW9kaWZpZWQsIHNvIGl0J3MgaW1wb3J0YW50IHRvIGVucXVl
dWUgYSBNdXRhdGlvblJlY29yZCBub3cuCi0gICAgZW5xdWV1ZUF0dHJpYnV0ZXNNdXRhdGlvblJl
Y29yZCh0aGlzLCBuYW1lLCBvbGQgPyBvbGQtPnZhbHVlKCkgOiBudWxsQXRvbSk7CisgICAgaWYg
KCFpc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKQorICAgICAgICBlbnF1ZXVlQXR0cmli
dXRlc011dGF0aW9uUmVjb3JkKHRoaXMsIG5hbWUsIG9sZCA/IG9sZC0+dmFsdWUoKSA6IG51bGxB
dG9tKTsKICNlbmRpZgogCiAgICAgaWYgKGlzSWRBdHRyaWJ1dGVOYW1lKG5hbWUpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuY3BwCmluZGV4IGQzY2E4YjZh
MTcyZTY3ZTQ0YzVmNzYxNGZjNTdiMmQ4M2FhNTllY2YuLjRlOWUxMWJmMmM0ZDc2MDgwOWU2OWU4
NWFiNTk4MGI3ZWY1NzM4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRN
dXRhdGlvbk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TXV0YXRp
b25PYnNlcnZlci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJNdXRhdGlvbk9ic2Vy
dmVyUmVnaXN0cmF0aW9uLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKICNpbmNsdWRl
ICJOb2RlLmgiCisjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0
SGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTEsOSArMTUyLDkgQEAgUGFz
c093blB0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gTXV0YXRpb25PYnNlcnZlcklu
dGVyZXN0R3JvdXA6OmNyZWF0ZUYKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE11dGF0aW9uT2Jz
ZXJ2ZXJJbnRlcmVzdEdyb3VwKHRhcmdldCwgV2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6Q2hhcmFj
dGVyRGF0YSkpOwogfQogCi1QYXNzT3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3Vw
PiBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQXR0cmlidXRlc011dGF0
aW9uKE5vZGUqIHRhcmdldCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1lKQorUGFz
c093blB0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gTXV0YXRpb25PYnNlcnZlcklu
dGVyZXN0R3JvdXA6OmNyZWF0ZUZvckF0dHJpYnV0ZXNNdXRhdGlvbihOb2RlKiB0YXJnZXQsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cCh0YXJnZXQsIFdlYktpdE11dGF0aW9u
T2JzZXJ2ZXI6OkF0dHJpYnV0ZXMsIGF0dHJpYnV0ZU5hbWUpKTsKKyAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwKHRhcmdldCwgV2ViS2l0TXV0YXRp
b25PYnNlcnZlcjo6QXR0cmlidXRlcywgYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSkpOwogfQog
CiBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXAoTm9kZSogdGFyZ2V0LCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGUg
dHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9XZWJLaXRNdXRhdGlvbk9ic2VydmVyLmgKaW5kZXggZWFhNjc1NGNhOGZkY2RlMzllMDgx
YTdjMTJmZWMxZjdkYTFiNTNlMi4uY2E0ZGFkNmYwZTE5OWY2MzdlOWE3OGQyNWVlYjM0YzFhMzc4
Yzc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TXV0YXRpb25PYnNlcnZlci5oCkBA
IC00Nyw2ICs0Nyw3IEBAIGNsYXNzIE11dGF0aW9uQ2FsbGJhY2s7CiBjbGFzcyBNdXRhdGlvbk9i
c2VydmVyUmVnaXN0cmF0aW9uOwogY2xhc3MgTXV0YXRpb25SZWNvcmQ7CiBjbGFzcyBOb2RlOwor
Y2xhc3MgUXVhbGlmaWVkTmFtZTsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIApAQCAt
OTksNyArMTAwLDcgQEAgY2xhc3MgTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAgewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3Vw
PiBjcmVhdGVGb3JDaGlsZExpc3RNdXRhdGlvbihOb2RlKiB0YXJnZXQpOwogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPiBjcmVhdGVGb3JDaGFyYWN0
ZXJEYXRhTXV0YXRpb24oTm9kZSogdGFyZ2V0KTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxNdXRh
dGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gY3JlYXRlRm9yQXR0cmlidXRlc011dGF0aW9uKE5v
ZGUqIHRhcmdldCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1lKTsKKyAgICBzdGF0
aWMgUGFzc093blB0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gY3JlYXRlRm9yQXR0
cmlidXRlc011dGF0aW9uKE5vZGUqIHRhcmdldCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSk7CiAKICAgICBib29sIGlzT2xkVmFsdWVSZXF1ZXN0ZWQoKTsKICAgICBib29sIGlz
RW1wdHkoKSB7IHJldHVybiBtX29ic2VydmVycy5pc0VtcHR5KCk7IH0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3NDlmMGFh
MmIyYjM2MmUzYjMyZmUxMTIyNmIzNGUyN2U0NDVjNjg2Li5jNGMyYTAwNzVhODk1YmY2MzQxYzc1
OGJkOTBlY2NmOGVhNGIzNmJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTEtMjMgIFJh
ZmFlbCBXZWluc3RlaW4gIDxyYWZhZWx3QGNocm9taXVtLm9yZz4KKworICAgICAgICBbTXV0YXRp
b25PYnNlcnZlcnNdIE1vZGlmaWNhdGlvbnMgdG8gdGhlIHN0eWxlIHByb3BlcnR5IGRvbid0IGRp
c3BhdGNoICJhdHRyaWJ1dGVzIiBNdXRhdGlvbiBSZWNvcmRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDEzNworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRlc3RzIGFzc2VydGluZyB0aGF0IGNo
YW5nZXMgdG8gdGhlIHN0eWxlIHByb3BlcnR5IGFyZSBvYnNlcnZhYmxlIGFuZCB3b3JrIGNvcnJl
Y3RseSBpZiBvbGRWYWx1ZSBpcyByZXF1ZXN0ZWQuCisKKyAgICAgICAgKiBmYXN0L211dGF0aW9u
L29ic2VydmUtYXR0cmlidXRlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tdXRhdGlv
bi9vYnNlcnZlLWF0dHJpYnV0ZXMuaHRtbDoKKwogMjAxMS0xMS0yMyAgUGhpbGlwcGUgTm9ybWFu
ZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgc2tpcCBhbm90
aGVyIHN2ZyB0ZXN0IG9uIEdUSyBzaG93aW5nIHNpZ25lZCB6ZXJvIGlzc3Vlcy4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZS1hdHRyaWJ1dGVzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZS1hdHRyaWJ1dGVzLWV4cGVj
dGVkLnR4dAppbmRleCA2NzllOTA1ODZhODhkYTFmOTY1ZGZiNzY1NjUzNmRiNDRkZWVlZGMxLi5m
N2E2MzRlM2U2MzUyYThhNDg0MjQ2OWRkZDUwZWM5M2MzNmU1N2FlIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQu
dHh0CkBAIC0xNTIsNiArMTUyLDM0IEBAIFBBU1MgbXV0YXRpb25zWzNdLnR5cGUgaXMgImF0dHJp
YnV0ZXMiCiBQQVNTIG11dGF0aW9uc1szXS5hdHRyaWJ1dGVOYW1lIGlzICJwYXRoTGVuZ3RoIgog
UEFTUyBtdXRhdGlvbnNbM10uYXR0cmlidXRlTmFtZXNwYWNlIGlzICJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIKIAorVGVzdGluZyB0aGF0IG1vZGlmeWluZyBhbiBlbGVtZW50cyBzdHlsZSBw
cm9wZXJ0eSBkaXNwYXRjaGVzIE11dGF0aW9uIFJlY29yZHMuCitQQVNTIG11dGF0aW9ucy5sZW5n
dGggaXMgMworUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0
YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgInN0eWxlIgorUEFTUyBtdXRhdGlvbnNbMF0ub2xk
VmFsdWUgaXMgbnVsbAorUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BB
U1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUgaXMgInN0eWxlIgorUEFTUyBtdXRhdGlvbnNb
MV0ub2xkVmFsdWUgaXMgbnVsbAorUEFTUyBtdXRhdGlvbnNbMl0udHlwZSBpcyAiYXR0cmlidXRl
cyIKK1BBU1MgbXV0YXRpb25zWzJdLmF0dHJpYnV0ZU5hbWUgaXMgInN0eWxlIgorUEFTUyBtdXRh
dGlvbnNbMl0ub2xkVmFsdWUgaXMgbnVsbAorLi4ubXV0YXRpb24gcmVjb3JkIGNyZWF0ZWQuCitQ
QVNTIG11dGF0aW9ucyBpcyBudWxsCisKK1Rlc3RpbmcgdGhhdCBtb2RpZnlpbmcgYW4gZWxlbWVu
dHMgc3R5bGUgcHJvcGVydHkgZGlzcGF0Y2hlcyBNdXRhdGlvbiBSZWNvcmRzIHdpdGggY29ycmVj
dCBvbGRWYWx1ZXMuCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMworUEFTUyBtdXRhdGlvbnNb
MF0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUg
aXMgInN0eWxlIgorUEFTUyBtdXRhdGlvbnNbMF0ub2xkVmFsdWUgaXMgImNvbG9yOiB5ZWxsb3c7
IHdpZHRoOiAxMDBweDsgIgorUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiYXR0cmlidXRlcyIK
K1BBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUgaXMgInN0eWxlIgorUEFTUyBtdXRhdGlv
bnNbMV0ub2xkVmFsdWUgaXMgIndpZHRoOiAxMDBweDsgY29sb3I6IHJlZDsgIgorUEFTUyBtdXRh
dGlvbnNbMl0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzJdLmF0dHJpYnV0
ZU5hbWUgaXMgInN0eWxlIgorUEFTUyBtdXRhdGlvbnNbMl0ub2xkVmFsdWUgaXMgImNvbG9yOiBy
ZWQ7IHdpZHRoOiAyMDBweDsgIgorLi4ubXV0YXRpb24gcmVjb3JkIGNyZWF0ZWQuCitQQVNTIG11
dGF0aW9ucyBpcyBudWxsCisKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVT
VCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZl
LWF0dHJpYnV0ZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZS1hdHRy
aWJ1dGVzLmh0bWwKaW5kZXggYWY1OGI1MThiNTEyYjA4ZTc5ZGEwZGU4ZGU0Njc1OTM0NTAwMTk4
ZS4uYjBhZTZmYTdlZjU3ODk4MWI3MDkxODU4MjJhNjY0YTQ1NGVkZjNlZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZlLWF0dHJpYnV0ZXMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUtYXR0cmlidXRlcy5odG1sCkBAIC02Mzgs
NiArNjM4LDExMCBAQCBmdW5jdGlvbiB0ZXN0QXR0cmlidXRlRmlsdGVyTm9uSFRNTERvY3VtZW50
KCkgewogICAgIHN0YXJ0KCk7CiB9CiAKK2Z1bmN0aW9uIHRlc3RTdHlsZUF0dHJpYnV0ZVByb3Bl
cnR5QWNjZXNzKCkgeworICAgIHZhciBzdmdEb2MsIGRpdiwgcGF0aDsKKyAgICB2YXIgb2JzZXJ2
ZXI7CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhh
dCBtb2RpZnlpbmcgYW4gZWxlbWVudHMgc3R5bGUgcHJvcGVydHkgZGlzcGF0Y2hlcyBNdXRhdGlv
biBSZWNvcmRzLicpOworCisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIG9ic2Vy
dmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obSkgeworICAgICAgICAg
ICAgbXV0YXRpb25zID0gbTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywg
J2NvbG9yOiB5ZWxsb3c7IHdpZHRoOiAxMDBweDsgJyk7CisgICAgICAgIG9ic2VydmVyLm9ic2Vy
dmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUgfSk7CisgICAgICAgIGRpdi5zdHlsZS5jb2xvciA9
ICdyZWQnOworICAgICAgICBkaXYuc3R5bGUud2lkdGggPSAnMjAwcHgnOworICAgICAgICBkaXYu
c3R5bGUuY29sb3IgPSAnYmx1ZSc7CisKKyAgICAgICAgc2V0VGltZW91dChjaGVja0FuZENvbnRp
bnVlLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0FuZENvbnRpbnVlKCkgeworICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICczJyk7CisgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJzdHlsZSInKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS5vbGRWYWx1ZScsICdudWxsJyk7CisgICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMV0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lJywgJyJzdHlsZSInKTsKKyAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1sxXS5vbGRWYWx1ZScsICdudWxsJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMl0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0
aW9uc1syXS5hdHRyaWJ1dGVOYW1lJywgJyJzdHlsZSInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1syXS5vbGRWYWx1ZScsICdudWxsJyk7CisKKyAgICAgICAgbXV0YXRpb25zID0gbnVs
bDsKKyAgICAgICAgZGl2LmdldEF0dHJpYnV0ZSgnc3R5bGUnKTsKKyAgICAgICAgc2V0VGltZW91
dChmaW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAg
ZGVidWcoJy4uLm11dGF0aW9uIHJlY29yZCBjcmVhdGVkLicpOworCisgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnMnLCAnbnVsbCcpOworCisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsK
KyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKworICAg
IHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTdHlsZUF0dHJpYnV0ZVByb3BlcnR5QWNjZXNz
T2xkVmFsdWUoKSB7CisgICAgdmFyIHN2Z0RvYywgZGl2LCBwYXRoOworICAgIHZhciBvYnNlcnZl
cjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1ZygnVGVzdGluZyB0aGF0
IG1vZGlmeWluZyBhbiBlbGVtZW50cyBzdHlsZSBwcm9wZXJ0eSBkaXNwYXRjaGVzIE11dGF0aW9u
IFJlY29yZHMgd2l0aCBjb3JyZWN0IG9sZFZhbHVlcy4nKTsKKworICAgICAgICBtdXRhdGlvbnMg
PSBudWxsOworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1
bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIG11dGF0aW9ucyA9IG07CisgICAgICAgIH0pOworCisg
ICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBkaXYu
c2V0QXR0cmlidXRlKCdzdHlsZScsICdjb2xvcjogeWVsbG93OyB3aWR0aDogMTAwcHg7ICcpOwor
ICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1
dGVPbGRWYWx1ZTogdHJ1ZSB9KTsKKyAgICAgICAgZGl2LnN0eWxlLmNvbG9yID0gJ3JlZCc7Cisg
ICAgICAgIGRpdi5zdHlsZS53aWR0aCA9ICcyMDBweCc7CisgICAgICAgIGRpdi5zdHlsZS5jb2xv
ciA9ICdibHVlJzsKKworICAgICAgICBzZXRUaW1lb3V0KGNoZWNrQW5kQ29udGludWUsIDApOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrQW5kQ29udGludWUoKSB7CisgICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzMnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzBdLmF0dHJpYnV0ZU5hbWUnLCAnInN0eWxlIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzBdLm9sZFZhbHVlJywgJyJjb2xvcjogeWVsbG93OyB3aWR0aDogMTAwcHg7ICInKTsKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUnLCAnInN0eWxlIicpOwor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLm9sZFZhbHVlJywgJyJ3aWR0aDogMTAwcHg7
IGNvbG9yOiByZWQ7ICInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS50eXBlJywg
JyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLmF0dHJpYnV0
ZU5hbWUnLCAnInN0eWxlIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLm9sZFZh
bHVlJywgJyJjb2xvcjogcmVkOyB3aWR0aDogMjAwcHg7ICInKTsKKworICAgICAgICBtdXRhdGlv
bnMgPSBudWxsOworICAgICAgICBkaXYuZ2V0QXR0cmlidXRlKCdzdHlsZScpOworICAgICAgICBz
ZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNoKCkgewor
ICAgICAgICBkZWJ1ZygnLi4ubXV0YXRpb24gcmVjb3JkIGNyZWF0ZWQuJyk7CisKKyAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9ucycsICdudWxsJyk7CisKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29u
bmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAg
fQorCisgICAgc3RhcnQoKTsKK30KKwogdmFyIHRlc3RzID0gWwogICAgIHRlc3RCYXNpYywKICAg
ICB0ZXN0V3JvbmdUeXBlLApAQCAtNjUzLDcgKzc1Nyw5IEBAIHZhciB0ZXN0cyA9IFsKICAgICB0
ZXN0QXR0cmlidXRlRmlsdGVyLAogICAgIHRlc3RBdHRyaWJ1dGVGaWx0ZXJTdWJ0cmVlLAogICAg
IHRlc3RBdHRyaWJ1dGVGaWx0ZXJOb25IVE1MRWxlbWVudCwKLSAgICB0ZXN0QXR0cmlidXRlRmls
dGVyTm9uSFRNTERvY3VtZW50CisgICAgdGVzdEF0dHJpYnV0ZUZpbHRlck5vbkhUTUxEb2N1bWVu
dCwKKyAgICB0ZXN0U3R5bGVBdHRyaWJ1dGVQcm9wZXJ0eUFjY2VzcywKKyAgICB0ZXN0U3R5bGVB
dHRyaWJ1dGVQcm9wZXJ0eUFjY2Vzc09sZFZhbHVlCiBdOwogdmFyIHRlc3RJbmRleCA9IDA7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>