<?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>156458</bug_id>
          
          <creation_ts>2016-04-10 18:26:55 -0700</creation_ts>
          <short_desc>Remove UsePointersEvenForNonNullableObjectArguments from HTMLSelectElement</short_desc>
          <delta_ts>2016-04-11 21:15:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>cdumez</cc>
    
    <cc>sam</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1182580</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-10 18:26:55 -0700</bug_when>
    <thetext>Remove UsePointersEvenForNonNullableObjectArguments from HTMLSelectElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182581</commentid>
    <comment_count>1</comment_count>
      <attachid>276116</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-10 18:36:40 -0700</bug_when>
    <thetext>Created attachment 276116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182583</commentid>
    <comment_count>2</comment_count>
      <attachid>276117</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-10 18:50:44 -0700</bug_when>
    <thetext>Created attachment 276117
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182584</commentid>
    <comment_count>3</comment_count>
      <attachid>276118</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-10 18:52:03 -0700</bug_when>
    <thetext>Created attachment 276118
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182598</commentid>
    <comment_count>4</comment_count>
      <attachid>276118</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-10 21:03:16 -0700</bug_when>
    <thetext>Comment on attachment 276118
Patch

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

r=me but please fix the Window build before landing as the compilation error seems related to your change.

&gt; Source/WebCore/ChangeLog:42
&gt; +        protects itself, and unneeded call to updateValidity, since updateChildren

updateChildren? Do you mean HTMLSelectElement::childrenChanged()?

&gt; Source/WebCore/html/HTMLOptionsCollection.cpp:56
&gt;  void HTMLOptionsCollection::remove(HTMLOptionElement* option)

This should be updated to take a reference. It is only called by JSHTMLOptionsCollection::remove() as far as I can tell, which is custom bindings and already does a null check.
The null check added below does not seem needed.

&gt; Source/WebCore/html/HTMLSelectElement.cpp:225
&gt; +    if (!(is&lt;HTMLOptionElement&gt;(element) || element.hasTagName(hrTag) || is&lt;HTMLOptGroupElement&gt;(element)))

element.hasTagName(hrTag) should probably be is&lt;HTMLHRElement&gt;(element), for consistency.

&gt; Source/WebCore/html/HTMLSelectElement.h:62
&gt; +public:

Why the public?

&gt; Source/WebCore/html/HTMLSelectElement.idl:25
&gt;      [Reflect] attribute boolean disabled;

the form attribute below should be nullable although not strictly related to your change.
May be nice to add a FIXME comment though.

&gt; Source/WebCore/html/HTMLSelectElement.idl:43
&gt;      [SetterRaisesException] attribute unsigned long length;

item() / namedItem() below should return a nullable HTMLOptionElement. Maybe we could add a FIXME comment.

&gt; Source/WebCore/html/HTMLSelectElement.idl:66
&gt;  

FYI, the DOMString? parameter to setCustomValidity() below is not right. It should not be nullable. We should either fix or add a FIXME comment.
https://html.spec.whatwg.org/multipage/forms.html#htmlselectelement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182755</commentid>
    <comment_count>5</comment_count>
      <attachid>276118</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-11 11:50:58 -0700</bug_when>
    <thetext>Comment on attachment 276118
Patch

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

&gt;&gt; Source/WebCore/html/HTMLOptionsCollection.cpp:56
&gt;&gt;  void HTMLOptionsCollection::remove(HTMLOptionElement* option)
&gt; 
&gt; This should be updated to take a reference. It is only called by JSHTMLOptionsCollection::remove() as far as I can tell, which is custom bindings and already does a null check.
&gt; The null check added below does not seem needed.

My plan was to do this in my next patch, which is going to remove UsePointersEvenForNonNullableObjectArguments from HTMLOptionsCollection, but I suppose I can do it now given it’s a custom hand-written binding that’s already doing a null check.

&gt;&gt; Source/WebCore/html/HTMLSelectElement.cpp:225
&gt;&gt; +    if (!(is&lt;HTMLOptionElement&gt;(element) || element.hasTagName(hrTag) || is&lt;HTMLOptGroupElement&gt;(element)))
&gt; 
&gt; element.hasTagName(hrTag) should probably be is&lt;HTMLHRElement&gt;(element), for consistency.

I thought the same thing. But that requires adding the macros to HTMLHRElement.h, which doesn’t have them at this time. Do you think I should do it?

&gt;&gt; Source/WebCore/html/HTMLSelectElement.h:62
&gt;&gt; +public:
&gt; 
&gt; Why the public?

Oops. This is an editing mistake from when I made lots of things private and then slowly made them all public again. I will definitely remove it before landing.

&gt;&gt; Source/WebCore/html/HTMLSelectElement.idl:25
&gt;&gt;      [Reflect] attribute boolean disabled;
&gt; 
&gt; the form attribute below should be nullable although not strictly related to your change.
&gt; May be nice to add a FIXME comment though.

I’d be happy to make that change in this patch; I believe marking it nullable will have no effect on the bindings code generated; it supports null even if we don’t tell it to.

&gt;&gt; Source/WebCore/html/HTMLSelectElement.idl:43
&gt;&gt;      [SetterRaisesException] attribute unsigned long length;
&gt; 
&gt; item() / namedItem() below should return a nullable HTMLOptionElement. Maybe we could add a FIXME comment.

I’d be happy to make that change in this patch; I believe marking it nullable will have no effect on the bindings code generated; it supports null even if we don’t tell it to.

&gt;&gt; Source/WebCore/html/HTMLSelectElement.idl:66
&gt;&gt;  
&gt; 
&gt; FYI, the DOMString? parameter to setCustomValidity() below is not right. It should not be nullable. We should either fix or add a FIXME comment.
&gt; https://html.spec.whatwg.org/multipage/forms.html#htmlselectelement

I wouldn’t want to fix that without test coverage. I’m surprised there is no test for that already. Guess I can &quot;wimp out&quot; and just add the FIXME.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182757</commentid>
    <comment_count>6</comment_count>
      <attachid>276118</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-11 11:52:14 -0700</bug_when>
    <thetext>Comment on attachment 276118
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:42
&gt;&gt; +        protects itself, and unneeded call to updateValidity, since updateChildren
&gt; 
&gt; updateChildren? Do you mean HTMLSelectElement::childrenChanged()?

Yes, that’s exactly what I meant. No idea why I typed nonsense instead!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182758</commentid>
    <comment_count>7</comment_count>
      <attachid>276118</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-11 11:53:03 -0700</bug_when>
    <thetext>Comment on attachment 276118
Patch

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

&gt;&gt;&gt; Source/WebCore/html/HTMLSelectElement.cpp:225
&gt;&gt;&gt; +    if (!(is&lt;HTMLOptionElement&gt;(element) || element.hasTagName(hrTag) || is&lt;HTMLOptGroupElement&gt;(element)))
&gt;&gt; 
&gt;&gt; element.hasTagName(hrTag) should probably be is&lt;HTMLHRElement&gt;(element), for consistency.
&gt; 
&gt; I thought the same thing. But that requires adding the macros to HTMLHRElement.h, which doesn’t have them at this time. Do you think I should do it?

No, I don&apos;t think you need to add any macros, they should be auto-generated already. You may need to include HTMLHRElement.h though if not done already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182759</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-11 11:53:26 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; please fix the Window build before landing as the compilation error
&gt; seems related to your change.

Looks like I need to add an include of Event.h to DOMCoreClasses.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182761</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-11 11:54:39 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 276118 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=276118&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/html/HTMLSelectElement.cpp:225
&gt; &gt;&gt;&gt; +    if (!(is&lt;HTMLOptionElement&gt;(element) || element.hasTagName(hrTag) || is&lt;HTMLOptGroupElement&gt;(element)))
&gt; &gt;&gt; 
&gt; &gt;&gt; element.hasTagName(hrTag) should probably be is&lt;HTMLHRElement&gt;(element), for consistency.
&gt; &gt; 
&gt; &gt; I thought the same thing. But that requires adding the macros to HTMLHRElement.h, which doesn’t have them at this time. Do you think I should do it?
&gt; 
&gt; No, I don&apos;t think you need to add any macros, they should be auto-generated
&gt; already. You may need to include HTMLHRElement.h though if not done already.

See:
namespace WebCore {
class HTMLHRElement;
}
namespace WTF {
template &lt;typename ArgType&gt;
class TypeCastTraits&lt;const WebCore::HTMLHRElement, ArgType, false /* isBaseType */&gt; {
public:
    static bool isOfType(ArgType&amp; node) { return checkTagName(node); }
private:
    static bool checkTagName(const WebCore::HTMLElement&amp; element) { return element.hasTagName(WebCore::HTMLNames::hrTag); }
    static bool checkTagName(const WebCore::Node&amp; node) { return node.hasTagName(WebCore::HTMLNames::hrTag); }
};
}

In WebKitBuild/Release/DerivedSources/WebCore/HTMLElementTypeHelpers.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182938</commentid>
    <comment_count>10</comment_count>
      <attachid>276204</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-11 20:07:19 -0700</bug_when>
    <thetext>Created attachment 276204
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182964</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-11 21:15:10 -0700</bug_when>
    <thetext>Committed r199334: &lt;http://trac.webkit.org/changeset/199334&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276116</attachid>
            <date>2016-04-10 18:36:40 -0700</date>
            <delta_ts>2016-04-10 18:50:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156458-20160410183647.patch</filename>
            <type>text/plain</type>
            <size>40161</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5Mjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTViMjJmYWY4YzVmZWYw
OGEzOGVkYjk1YzM4ZmM0MTI4YTRkMjcwNC4uN2I4MjNjYzgxMmUxZGI5MGFmMTdiZDgxMGVlM2Ri
NTc4ZGE0NTdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE2LTA0LTEwICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgVXNlUG9pbnRlcnNF
dmVuRm9yTm9uTnVsbGFibGVPYmplY3RBcmd1bWVudHMgZnJvbSBIVE1MU2VsZWN0RWxlbWVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NDU4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
SFRNTFNlbGVjdEVsZW1lbnQ6OnJlbW92ZSk6IFVwZGF0ZWQgdG8gY2FsbCByZW1vdmUgd2l0aCBh
IHJlZmVyZW5jZQorICAgICAgICByYXRoZXIgdGhhbiBhIHBvaW50ZXIuCisgICAgICAgIChXZWJD
b3JlOjpzZWxlY3RJbmRleFNldHRlcik6IFVwZGF0ZWQgdG8gY2FsbCBzZXRPcHRpb24gd2l0aCBh
IHJlZmVyZW5jZSByYXRoZXIKKyAgICAgICAgdGhhbiBhIHBvaW50ZXIuCisKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtOgorICAgICAgICAoR2VuZXJh
dGVGdW5jdGlvbik6IEFkZGVkIGJhc2ljIHN1cHBvcnQgZm9yIHBhc3Npbmcgd3JhcHBlcnMgYnkg
cmVmZXJlbmNlLgorICAgICAgICBHT2JqZWN0IGJpbmRpbmdzIGFscmVhZHkgY2hlY2sgYXJndW1l
bnRzIGZvciBudWxsLCBzbyBkaWRuJ3QgYWRkIGFueSBuZXcgY2hlY2tzLgorCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVj
dC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdENhbGxiYWNrLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHA6Cisg
ICAgICAgIFVwZGF0ZWQuCisKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDog
VXBkYXRlZCBpbmNsdWRlcy4KKworICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OnNldFNlbGVjdGVkKTogUGFz
cyByZWZlcmVuY2Ugd2hlbiBjYWxsaW5nCisgICAgICAgIEhUTUxTZWxlY3RFbGVtZW50OjpvcHRp
b25TZWxlY3Rpb25TdGF0ZUNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvKTogRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25z
Q29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uc0NvbGxlY3Rpb246
OmFkZCk6IE1vdmVkIG51bGwgY2hlY2tpbmcgYmVoYXZpb3IgaGVyZS4KKyAgICAgICAgUHJlc2Vy
dmVzIGV4aXN0aW5nICJzaWxlbnRseSBkbyBub3RoaW5nIGlmIG51bGwiLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1vdmUpOiBEaXR0by4KKworICAgICAgICAq
IGh0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmg6IFVwZGF0ZWQgaW5jbHVkZS4KKworICAgICAg
ICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNl
bGVjdEVsZW1lbnQ6OmFkZCk6IENoYW5nZWQgdG8gdGFrZSBhIHJlZmVyZW5jZSBpbnN0ZWFkIG9m
CisgICAgICAgIGEgcG9pbnRlci4gQWxzbyByZW1vdmVkIHVubmVlZGVkIHByb3RlY3QgY29kZSwg
c2luY2UgaW5zZXJ0QmVmb3JlIGFscmVhZHkKKyAgICAgICAgcHJvdGVjdHMgaXRzZWxmLCBhbmQg
dW5uZWVkZWQgY2FsbCB0byB1cGRhdGVWYWxpZGl0eSwgc2luY2UgdXBkYXRlQ2hpbGRyZW4KKyAg
ICAgICAgYWxyZWFkeSBjYWxscyB1cGRhdGVWYWxpZGl0eS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTZWxlY3RFbGVtZW50OjpyZW1vdmUpOiBDaGFuZ2VkIHRvIHRha2UgYSByZWZlcmVuY2UgaW5z
dGVhZAorICAgICAgICBvZiBhIHBvaW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6c2V0T3B0aW9uKTogQ2hhbmdlZCB0byB0YWtlIGEgcmVmZXJlbmNlCisgICAgICAg
IGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1l
bnQ6OnNldExlbmd0aCk6IFJlbmFtZWQgIm5ld0xlbiIgdG8gIm5ld0xlbmd0aCIuCisgICAgICAg
IFVzZSBSZWYgaW5zdGVhZCBvZiBSZWZQdHIgZm9yIHJlc3VsdCBvZiBjcmVhdGVFbGVtZW50LCB3
aGljaCBtYWtlcyB0aGUKKyAgICAgICAgYXJndW1lbnQgcGFzc2VkIHRvIGFkZCBiZSBhIHJlZmVy
ZW5jZSByYXRoZXIgdGhhbiBhIHBvaW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMpOiBQdXQgdGhlICNpZgorICAg
ICAgICBmb3IgdGhpcyBoZXJlIGluc3RlYWQgb2YgaW4gdGhlIGhlYWRlci4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpvcHRpb25TZWxlY3Rpb25TdGF0ZUNoYW5nZWQpOiBD
aGFuZ2VkIHRvIHRha2UKKyAgICAgICAgYSByZWZlcmVuY2UgaW5zdGVhZCBvZiBhIHBvaW50ZXIg
Zm9yIHRoZSBvcHRpb24gZWxlbWVudC4KKworICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4gRGVyaXZlIHByaXZhdGVseQorICAgICAg
ICBmcm9tIFR5cGVBaGVhZERhdGFTb3VyY2UgaW5zdGVhZCBvZiBwdWJsaWNseS4gTWFrZSBhbGwg
b3ZlcnJpZGVzIGZpbmFsCisgICAgICAgIGV4Y2VwdCBmb3IgdGhlIG9uZSB0aGF0IGlzIGFjdHVh
bGx5IG92ZXJyaWRkZW4gYnkgYSBkZXJpdmVkIGNsYXNzLgorICAgICAgICBDaGFuZ2VkIHRoZSBh
cmd1bWVudHMgb2YgdGhlIGFkZCwgcmVtb3ZlLCBzZXRPcHRpb24sIGFuZAorICAgICAgICBvcHRp
b25TZWxlY3Rpb25TdGF0ZUNoYW5nZWQgZnVuY3Rpb25zIHRvIGJlIHJlZmVyZW5jZXMgaW5zdGVh
ZCBvZiBwb2ludGVycy4KKyAgICAgICAgVHdlYWtlZCBmb3JtYXR0aW5nIGEgYml0IGFuZCB1c2Vk
IG51bGxwdHIgaW5zdGVhZCBvZiAwLiBPdmVycmlkZQorICAgICAgICB3aWxsUmVzcG9uZFRvTW91
c2VDbGlja0V2ZW50cyBvbiBhbGwgcGxhdGZvcm1zLCBub3QganVzdCBpT1MuCisKKyAgICAgICAg
KiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbDogUmVtb3ZlZCBVc2VQb2ludGVyc0V2ZW5Gb3JO
b25OdWxsYWJsZU9iamVjdEFyZ3VtZW50cy4KKyAgICAgICAgQWxzbyByZW1vdmVkIGEgY29tbWVu
dCB0aGF0IGlzIG5vIGxvbmdlciBuZWVkZWQuCisKIDIwMTYtMDQtMTAgIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggdGhlIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDg4
YmE5M2IwMDFjMTFkNDYwNzdlNDFjNjU1YmE0ZmNkZWQwNzc4Y2IuLjkzZGFjMjEzYjZjNGFlYzc2
ZWYwMjk0OGFkOWFkOThiZjAyODdjZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAx
Ni0wNC0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
IFVzZVBvaW50ZXJzRXZlbkZvck5vbk51bGxhYmxlT2JqZWN0QXJndW1lbnRzIGZyb20gSFRNTFNl
bGVjdEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NjQ1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tOiBVcGRh
dGVkIGluY2x1ZGVzLgorCiAyMDE2LTA0LTA4ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIGN1c3RvbSB0YXJnZXQgcGlja2VyIGFjdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVs
ZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0
RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggMzBlM2ViYmI4OWE0ZWYyM2E1OTY5NGMzYWJlZTU3YTgw
YTYyMzFlNy4uZjcxMDkzNDM3MDBlZDczMWQ3ODJlYjc0ZGE4MTA2M2UxOWRmMjgxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVu
dEN1c3RvbS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgSlNWYWx1ZSBKU0hUTUxTZWxlY3RFbGVtZW50
OjpyZW1vdmUoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9IGVsc2UgewogICAgICAgICAvLyBUaGUg
SFRNTFNlbGVjdEVsZW1lbnQ6OnJlbW92ZSgpIGZ1bmN0aW9uIGNhbiB0YWtlIGVpdGhlciBhbiBv
cHRpb24gb2JqZWN0IG9yIHRoZSBpbmRleCBvZiBhbiBvcHRpb24uCiAgICAgICAgIGlmIChIVE1M
T3B0aW9uRWxlbWVudCogb3B0aW9uID0gSlNIVE1MT3B0aW9uRWxlbWVudDo6dG9XcmFwcGVkKHN0
YXRlLmFyZ3VtZW50KDApKSkKLSAgICAgICAgICAgIHNlbGVjdC5yZW1vdmUob3B0aW9uKTsKKyAg
ICAgICAgICAgIHNlbGVjdC5yZW1vdmUoKm9wdGlvbik7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHNlbGVjdC5yZW1vdmVCeUluZGV4KHN0YXRlLmFyZ3VtZW50KDApLnRvSW50MzIoJnN0YXRl
KSk7CiAgICAgfQpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIHNlbGVjdEluZGV4U2V0dGVyKEhUTUxT
ZWxlY3RFbGVtZW50KiBzZWxlY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZAogICAg
ICAgICBpZiAoIW9wdGlvbikKICAgICAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNlbGVjdC0+c2V0T3B0aW9uKGluZGV4LCBvcHRpb24s
IGVjKTsKKyAgICAgICAgICAgIHNlbGVjdC0+c2V0T3B0aW9uKGluZGV4LCAqb3B0aW9uLCBlYyk7
CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5w
bSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3Qu
cG0KaW5kZXggZmUyZjhlNzUyMjMwNjIzNTIwNzA0ODBlYzM3YzA5YmVmZDk2OGU3NS4uZmZkNmIz
MGMyMjNjMjJhMzE4N2E0OTYyMGZjNTM4NzM4YWI3OGRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCkBAIC0x
MTA5LDYgKzExMDksOSBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbiB7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKCRwYXJhbUlzR0RPTVR5cGUgfHwgKCRwYXJhbUlETFR5cGUgZXEgIkRPTVN0cmluZyIp
KSB7CiAgICAgICAgICAgICAkcGFyYW1OYW1lID0gImNvbnZlcnRlZCIgLiAkY29kZUdlbmVyYXRv
ci0+V0tfdWNmaXJzdCgkcGFyYW1OYW1lKTsKKyAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRv
ci0+U2hvdWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZSgkcGFyYW0sICRwYXJlbnROb2RlKSkgewor
ICAgICAgICAgICAgICAgICRwYXJhbU5hbWUgPSAiKiRwYXJhbU5hbWUiOworICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgICAgIGlmICgkcGFyYW1JRExUeXBlIGVxICJOb2RlRmlsdGVyIiB8
fCAkcGFyYW1JRExUeXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiKSB7CiAgICAgICAgICAgICAkcGFy
YW1OYW1lID0gIldURjo6Z2V0UHRyKCIgLiAkcGFyYW1OYW1lIC4gIikiOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVz
dEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCA3YTZhNTk3
YjVlNWRmODdhYTk5YjI3MmZkYzU4NjI0ZjIwOTRkZGNkLi42OWY4ODYzMzZlNjYxMGI2Mjc4ZjQ0
MWFmMGE2M2ZiOTE1MzE2ZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgd2Via2l0X2Rv
bV90ZXN0X2FjdGl2ZV9kb21fb2JqZWN0X2V4Y2l0aW5nX2Z1bmN0aW9uKFdlYktpdERPTVRlc3RB
Y3RpdmVET01PCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX05PREUobmV4dENo
aWxkKSk7CiAgICAgV2ViQ29yZTo6VGVzdEFjdGl2ZURPTU9iamVjdCogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKICAgICBXZWJDb3JlOjpOb2RlKiBjb252ZXJ0ZWROZXh0Q2hpbGQgPSBXZWJL
aXQ6OmNvcmUobmV4dENoaWxkKTsKLSAgICBpdGVtLT5leGNpdGluZ0Z1bmN0aW9uKGNvbnZlcnRl
ZE5leHRDaGlsZCk7CisgICAgaXRlbS0+ZXhjaXRpbmdGdW5jdGlvbigqY29udmVydGVkTmV4dENo
aWxkKTsKIH0KIAogdm9pZCB3ZWJraXRfZG9tX3Rlc3RfYWN0aXZlX2RvbV9vYmplY3RfcG9zdF9t
ZXNzYWdlKFdlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3QqIHNlbGYsIGNvbnN0IGdjaGFyKiBt
ZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5jcHAKaW5kZXgg
OGNlY2NjZTQ4YTc5MzNhYzFiYjY2OWI2NmQ4ZmI4NTZlNTc5OGE3Mi4uYzdlYjM4ZDRhNWJiZTA2
ODRlNzViMTJmZDQxNTdmMmUyM2ZkODdhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0Q2FsbGJhY2suY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X2RvbV90
ZXN0X2NhbGxiYWNrX2NhbGxiYWNrX3dpdGhfYXJyYXlfcGFyYW0oV2ViS2l0RE9NVGVzdENhbGxi
YWMKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0ZMT0FUMzJBUlJBWShh
cnJheVBhcmFtKSwgRkFMU0UpOwogICAgIFdlYkNvcmU6OlRlc3RDYWxsYmFjayogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKICAgICBXZWJDb3JlOjpGbG9hdDMyQXJyYXkqIGNvbnZlcnRlZEFy
cmF5UGFyYW0gPSBXZWJLaXQ6OmNvcmUoYXJyYXlQYXJhbSk7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0
ID0gaXRlbS0+Y2FsbGJhY2tXaXRoQXJyYXlQYXJhbShjb252ZXJ0ZWRBcnJheVBhcmFtKTsKKyAg
ICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5jYWxsYmFja1dpdGhBcnJheVBhcmFtKCpjb252ZXJ0
ZWRBcnJheVBhcmFtKTsKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oc2VsZik7CkBAIC0xOTEsNyArMTkxLDcgQEAgZ2Jvb2xlYW4gd2Via2l0X2RvbV90ZXN0X2Nh
bGxiYWNrX2NhbGxiYWNrX3dpdGhfc3RyaW5nX2xpc3QoV2ViS2l0RE9NVGVzdENhbGxiYWMKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0RPTV9TVFJJTkdfTElTVChsaXN0
UGFyYW0pLCBGQUxTRSk7CiAgICAgV2ViQ29yZTo6VGVzdENhbGxiYWNrKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6OkRPTVN0cmluZ0xpc3QqIGNvbnZlcnRlZExpc3RQ
YXJhbSA9IFdlYktpdDo6Y29yZShsaXN0UGFyYW0pOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0
ZW0tPmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoY29udmVydGVkTGlzdFBhcmFtKTsKKyAgICBnYm9v
bGVhbiByZXN1bHQgPSBpdGVtLT5jYWxsYmFja1dpdGhTdHJpbmdMaXN0KCpjb252ZXJ0ZWRMaXN0
UGFyYW0pOwogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzZWxm
KTsKQEAgLTIyNSw3ICsyMjUsNyBAQCBnYm9vbGVhbiB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tf
Y2FsbGJhY2tfcmVxdWlyZXNfdGhpc190b19wYXNzKFdlYktpdERPTVRlc3RDYQogICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9OT0RFKHRlc3ROb2RlUGFyYW0pLCBG
QUxTRSk7CiAgICAgV2ViQ29yZTo6VGVzdENhbGxiYWNrKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwogICAgIFdlYkNvcmU6OlRlc3ROb2RlKiBjb252ZXJ0ZWRUZXN0Tm9kZVBhcmFtID0gV2Vi
S2l0Ojpjb3JlKHRlc3ROb2RlUGFyYW0pOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmNh
bGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNzKGxvbmdQYXJhbSwgY29udmVydGVkVGVzdE5vZGVQYXJh
bSk7CisgICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+Y2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bh
c3MobG9uZ1BhcmFtLCAqY29udmVydGVkVGVzdE5vZGVQYXJhbSk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNlbGYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNr
RnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwCmluZGV4IDM1OGM0ZTZhNWRiMmUw
ZWE3Njg5YzU2MjdiYzc0YzA2YzgyYWY2NDMuLmU0NWU1MjQzYWEyMWQ5ZTlhYTFmODZlZDEzOWQz
YTZhMWU5MTllNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2Fs
bGJhY2tGdW5jdGlvbi5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBnYm9vbGVhbiB3ZWJraXRfZG9t
X3Rlc3RfY2FsbGJhY2tfZnVuY3Rpb25fY2FsbGJhY2tfd2l0aF9hcnJheV9wYXJhbShXZWJLaXRE
T01UZQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfRkxPQVQzMkFSUkFZ
KGFycmF5UGFyYW0pLCBGQUxTRSk7CiAgICAgV2ViQ29yZTo6VGVzdENhbGxiYWNrRnVuY3Rpb24q
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV2ViQ29yZTo6RmxvYXQzMkFycmF5KiBj
b252ZXJ0ZWRBcnJheVBhcmFtID0gV2ViS2l0Ojpjb3JlKGFycmF5UGFyYW0pOwotICAgIGdib29s
ZWFuIHJlc3VsdCA9IGl0ZW0tPmNhbGxiYWNrV2l0aEFycmF5UGFyYW0oY29udmVydGVkQXJyYXlQ
YXJhbSk7CisgICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+Y2FsbGJhY2tXaXRoQXJyYXlQYXJh
bSgqY29udmVydGVkQXJyYXlQYXJhbSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKHNlbGYpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIGdib29sZWFuIHdlYmtpdF9k
b21fdGVzdF9jYWxsYmFja19mdW5jdGlvbl9jYWxsYmFja193aXRoX3N0cmluZ19saXN0KFdlYktp
dERPTVRlCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19ET01fU1RSSU5H
X0xJU1QobGlzdFBhcmFtKSwgRkFMU0UpOwogICAgIFdlYkNvcmU6OlRlc3RDYWxsYmFja0Z1bmN0
aW9uKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6OkRPTVN0cmluZ0xp
c3QqIGNvbnZlcnRlZExpc3RQYXJhbSA9IFdlYktpdDo6Y29yZShsaXN0UGFyYW0pOwotICAgIGdi
b29sZWFuIHJlc3VsdCA9IGl0ZW0tPmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoY29udmVydGVkTGlz
dFBhcmFtKTsKKyAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5jYWxsYmFja1dpdGhTdHJpbmdM
aXN0KCpjb252ZXJ0ZWRMaXN0UGFyYW0pOwogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShzZWxmKTsKQEAgLTIyNSw3ICsyMjUsNyBAQCBnYm9vbGVhbiB3ZWJraXRf
ZG9tX3Rlc3RfY2FsbGJhY2tfZnVuY3Rpb25fY2FsbGJhY2tfcmVxdWlyZXNfdGhpc190b19wYXNz
KFdlYktpdAogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9OT0RF
KHRlc3ROb2RlUGFyYW0pLCBGQUxTRSk7CiAgICAgV2ViQ29yZTo6VGVzdENhbGxiYWNrRnVuY3Rp
b24qIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV2ViQ29yZTo6VGVzdE5vZGUqIGNv
bnZlcnRlZFRlc3ROb2RlUGFyYW0gPSBXZWJLaXQ6OmNvcmUodGVzdE5vZGVQYXJhbSk7Ci0gICAg
Z2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+Y2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3MobG9uZ1Bh
cmFtLCBjb252ZXJ0ZWRUZXN0Tm9kZVBhcmFtKTsKKyAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVt
LT5jYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyhsb25nUGFyYW0sICpjb252ZXJ0ZWRUZXN0Tm9k
ZVBhcmFtKTsKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc2Vs
Zik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDVi
NDU1NzQwODgyNWNiMjZhN2U3OWQ1NGFiN2RlZTVlMjAxMTRjODguLmI2MzE3ZTEzNzA2NWEyNzQ4
NmU3YjYyMmY5MTI3NDllZjM3MTY5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RJbnRlcmZhY2UuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgV2ViS2l0RE9NVGVzdE9iaiogd2Vi
a2l0X2RvbV90ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRzX21ldGhvZDIoV2ViS2l0RE9NVGVzdElu
dGUKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTdHJBcmcgPSBXVEY6OlN0cmluZzo6ZnJvbVVU
Rjgoc3RyQXJnKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRPYmpBcmcgPSBXZWJL
aXQ6OmNvcmUob2JqQXJnKTsKICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0
ZW0tPmltcGxlbWVudHNNZXRob2QyKGNvbnZlcnRlZFN0ckFyZywgY29udmVydGVkT2JqQXJnLCBl
YykpOworICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpn
ZXRQdHIoaXRlbS0+aW1wbGVtZW50c01ldGhvZDIoY29udmVydGVkU3RyQXJnLCAqY29udmVydGVk
T2JqQXJnLCBlYykpOwogICAgIGlmIChlYykgewogICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKICAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChl
cnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNk
ZXNjLm5hbWUpOwpAQCAtMzIyLDcgKzMyMiw3IEBAIFdlYktpdERPTVRlc3RPYmoqIHdlYmtpdF9k
b21fdGVzdF9pbnRlcmZhY2Vfc3VwcGxlbWVudGFsX21ldGhvZDIoV2ViS2l0RE9NVGVzdEluCiAg
ICAgV1RGOjpTdHJpbmcgY29udmVydGVkU3RyQXJnID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0
ckFyZyk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkT2JqQXJnID0gV2ViS2l0Ojpj
b3JlKG9iakFyZyk7CiAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlRlc3RPYmo+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihXZWJDb3Jl
OjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2QyKCppdGVtLCBjb252ZXJ0ZWRT
dHJBcmcsIGNvbnZlcnRlZE9iakFyZywgZWMpKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdE9i
aj4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6
OnN1cHBsZW1lbnRhbE1ldGhvZDIoKml0ZW0sIGNvbnZlcnRlZFN0ckFyZywgKmNvbnZlcnRlZE9i
akFyZywgZWMpKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJy
b3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVz
Yy5uYW1lKTsKQEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZh
Y2Vfc2V0X2ltcGxlbWVudHNfbm9kZShXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzZWxmLAogICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19OT0RFKHZhbHVlKSk7CiAgICAgV2ViQ29y
ZTo6VGVzdEludGVyZmFjZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXZWJDb3Jl
OjpOb2RlKiBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7Ci0gICAgaXRlbS0+
c2V0SW1wbGVtZW50c05vZGUoY29udmVydGVkVmFsdWUpOworICAgIGl0ZW0tPnNldEltcGxlbWVu
dHNOb2RlKCpjb252ZXJ0ZWRWYWx1ZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzZWxmKTsK
ICAgICBVTlVTRURfUEFSQU0odmFsdWUpOwpAQCAtNTY3LDcgKzU2Nyw3IEBAIHZvaWQgd2Via2l0
X2RvbV90ZXN0X2ludGVyZmFjZV9zZXRfc3VwcGxlbWVudGFsX25vZGUoV2ViS2l0RE9NVGVzdElu
dGVyZmFjZSogc2VsCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX05PREUodmFs
dWUpKTsKICAgICBXZWJDb3JlOjpUZXN0SW50ZXJmYWNlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwogICAgIFdlYkNvcmU6Ok5vZGUqIGNvbnZlcnRlZFZhbHVlID0gV2ViS2l0Ojpjb3JlKHZh
bHVlKTsKLSAgICBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxOb2Rl
KCppdGVtLCBjb252ZXJ0ZWRWYWx1ZSk7CisgICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6
c2V0U3VwcGxlbWVudGFsTm9kZSgqaXRlbSwgKmNvbnZlcnRlZFZhbHVlKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKHNlbGYpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RPYmouY3BwCmluZGV4IDM4MDk3ZTUwOGJlODJmODQyZjQ4MWNlNjBmNmYy
ZmJjMWVkOWZiZTIuLmZhZTNiYTYxYzVmNDhiZjE3ZjhmMjIyMGFkYmE0YjczMTFkM2M5MWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCkBAIC0xMjE2LDcgKzEyMTYsNyBAQCB2
b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfdm9pZF9tZXRob2Rfd2l0aF9hcmdzKFdlYktpdERPTVRl
c3RPYmoqIHNlbGYsIGdsb25nIGxvbgogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVkU3RyQXJnID0gV1RGOjpT
dHJpbmc6OmZyb21VVEY4KHN0ckFyZyk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVk
T2JqQXJnID0gV2ViS2l0Ojpjb3JlKG9iakFyZyk7Ci0gICAgaXRlbS0+dm9pZE1ldGhvZFdpdGhB
cmdzKGxvbmdBcmcsIGNvbnZlcnRlZFN0ckFyZywgY29udmVydGVkT2JqQXJnKTsKKyAgICBpdGVt
LT52b2lkTWV0aG9kV2l0aEFyZ3MobG9uZ0FyZywgY29udmVydGVkU3RyQXJnLCAqY29udmVydGVk
T2JqQXJnKTsKIH0KIAogZ2ludDggd2Via2l0X2RvbV90ZXN0X29ial9ieXRlX21ldGhvZChXZWJL
aXRET01UZXN0T2JqKiBzZWxmKQpAQCAtMTIzNyw3ICsxMjM3LDcgQEAgZ2ludDggd2Via2l0X2Rv
bV90ZXN0X29ial9ieXRlX21ldGhvZF93aXRoX2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwg
Z2ludDggYnkKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFN0ckFyZyA9IFdURjo6U3RyaW5nOjpmcm9tVVRG
OChzdHJBcmcpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNvbnZlcnRlZE9iakFyZyA9IFdlYktp
dDo6Y29yZShvYmpBcmcpOwotICAgIGdpbnQ4IHJlc3VsdCA9IGl0ZW0tPmJ5dGVNZXRob2RXaXRo
QXJncyhieXRlQXJnLCBjb252ZXJ0ZWRTdHJBcmcsIGNvbnZlcnRlZE9iakFyZyk7CisgICAgZ2lu
dDggcmVzdWx0ID0gaXRlbS0+Ynl0ZU1ldGhvZFdpdGhBcmdzKGJ5dGVBcmcsIGNvbnZlcnRlZFN0
ckFyZywgKmNvbnZlcnRlZE9iakFyZyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTI1
OSw3ICsxMjU5LDcgQEAgZ3VpbnQ4IHdlYmtpdF9kb21fdGVzdF9vYmpfb2N0ZXRfbWV0aG9kX3dp
dGhfYXJncyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBndWludDgKICAgICBXZWJDb3JlOjpUZXN0
T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRl
ZFN0ckFyZyA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHJBcmcpOwogICAgIFdlYkNvcmU6OlRl
c3RPYmoqIGNvbnZlcnRlZE9iakFyZyA9IFdlYktpdDo6Y29yZShvYmpBcmcpOwotICAgIGd1aW50
OCByZXN1bHQgPSBpdGVtLT5vY3RldE1ldGhvZFdpdGhBcmdzKG9jdGV0QXJnLCBjb252ZXJ0ZWRT
dHJBcmcsIGNvbnZlcnRlZE9iakFyZyk7CisgICAgZ3VpbnQ4IHJlc3VsdCA9IGl0ZW0tPm9jdGV0
TWV0aG9kV2l0aEFyZ3Mob2N0ZXRBcmcsIGNvbnZlcnRlZFN0ckFyZywgKmNvbnZlcnRlZE9iakFy
Zyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTI4MSw3ICsxMjgxLDcgQEAgZ2xvbmcg
d2Via2l0X2RvbV90ZXN0X29ial9sb25nX21ldGhvZF93aXRoX2FyZ3MoV2ViS2l0RE9NVGVzdE9i
aiogc2VsZiwgZ2xvbmcgbG8KICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFN0ckFyZyA9IFdURjo6U3RyaW5n
Ojpmcm9tVVRGOChzdHJBcmcpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNvbnZlcnRlZE9iakFy
ZyA9IFdlYktpdDo6Y29yZShvYmpBcmcpOwotICAgIGdsb25nIHJlc3VsdCA9IGl0ZW0tPmxvbmdN
ZXRob2RXaXRoQXJncyhsb25nQXJnLCBjb252ZXJ0ZWRTdHJBcmcsIGNvbnZlcnRlZE9iakFyZyk7
CisgICAgZ2xvbmcgcmVzdWx0ID0gaXRlbS0+bG9uZ01ldGhvZFdpdGhBcmdzKGxvbmdBcmcsIGNv
bnZlcnRlZFN0ckFyZywgKmNvbnZlcnRlZE9iakFyZyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IApAQCAtMTMwMyw3ICsxMzAzLDcgQEAgV2ViS2l0RE9NVGVzdE9iaiogd2Via2l0X2RvbV90ZXN0
X29ial9vYmpfbWV0aG9kX3dpdGhfYXJncyhXZWJLaXRET01UZXN0T2JqKiBzZWwKICAgICBXZWJD
b3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5n
IGNvbnZlcnRlZFN0ckFyZyA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHJBcmcpOwogICAgIFdl
YkNvcmU6OlRlc3RPYmoqIGNvbnZlcnRlZE9iakFyZyA9IFdlYktpdDo6Y29yZShvYmpBcmcpOwot
ICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIo
aXRlbS0+b2JqTWV0aG9kV2l0aEFyZ3MobG9uZ0FyZywgY29udmVydGVkU3RyQXJnLCBjb252ZXJ0
ZWRPYmpBcmcpKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ29iamVjdFJlc3VsdCA9
IFdURjo6Z2V0UHRyKGl0ZW0tPm9iak1ldGhvZFdpdGhBcmdzKGxvbmdBcmcsIGNvbnZlcnRlZFN0
ckFyZywgKmNvbnZlcnRlZE9iakFyZykpOwogICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0
UmVzdWx0LmdldCgpKTsKIH0KIApAQCAtMTM3NSw3ICsxMzc1LDcgQEAgV2ViS2l0RE9NVGVzdE9i
aiogd2Via2l0X2RvbV90ZXN0X29ial9tZXRob2RfdGhhdF9yZXF1aXJlc19hbGxfYXJnc19hbmRf
dGhyb3dzKFcKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTdHJBcmcgPSBXVEY6OlN0cmluZzo6
ZnJvbVVURjgoc3RyQXJnKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRPYmpBcmcg
PSBXZWJLaXQ6OmNvcmUob2JqQXJnKTsKICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0
UHRyKGl0ZW0tPm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoY29udmVydGVkU3Ry
QXJnLCBjb252ZXJ0ZWRPYmpBcmcsIGVjKSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+
IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5tZXRob2RUaGF0UmVxdWlyZXNBbGxB
cmdzQW5kVGhyb3dzKGNvbnZlcnRlZFN0ckFyZywgKmNvbnZlcnRlZE9iakFyZywgZWMpKTsKICAg
ICBpZiAoZWMpIHsKICAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVj
ZGVzYyhlYyk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJv
bV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKQEAgLTE2
NDYsNyArMTY0Niw3IEBAIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9jb252ZXJ0MShXZWJLaXRE
T01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01UZXN0Tm9kZSogdmFsCiAgICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfTk9ERSh2YWx1ZSkpOwogICAgIFdlYkNvcmU6OlRlc3RP
YmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV2ViQ29yZTo6VGVzdE5vZGUqIGNv
bnZlcnRlZFZhbHVlID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsKLSAgICBpdGVtLT5jb252ZXJ0MShj
b252ZXJ0ZWRWYWx1ZSk7CisgICAgaXRlbS0+Y29udmVydDEoKmNvbnZlcnRlZFZhbHVlKTsKIH0K
IAogdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2NvbnZlcnQyKFdlYktpdERPTVRlc3RPYmoqIHNl
bGYsIFdlYktpdERPTVRlc3ROb2RlKiB2YWx1ZSkKQEAgLTE3MzMsNyArMTczMyw3IEBAIFdlYktp
dERPTWJvb2wqIHdlYmtpdF9kb21fdGVzdF9vYmpfc3RyaWN0X2Z1bmN0aW9uX3dpdGhfYXJyYXko
V2ViS2l0RE9NVGVzdE9iaioKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRPYmpBcmcg
PSBXZWJLaXQ6OmNvcmUob2JqQXJnKTsKICAgICBXZWJDb3JlOjpsb25nW10qIGNvbnZlcnRlZEFy
cmF5ID0gV2ViS2l0Ojpjb3JlKGFycmF5KTsKICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Ym9vbD4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0
UHRyKGl0ZW0tPnN0cmljdEZ1bmN0aW9uV2l0aEFycmF5KGNvbnZlcnRlZE9iakFyZywgYXJyYXks
IGVjKSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OmJvb2w+IGdvYmplY3RSZXN1bHQgPSBXVEY6Omdl
dFB0cihpdGVtLT5zdHJpY3RGdW5jdGlvbldpdGhBcnJheSgqY29udmVydGVkT2JqQXJnLCBhcnJh
eSwgZWMpKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURl
c2NyaXB0aW9uIGVjZGVzYyhlYyk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3Is
IGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5u
YW1lKTsKQEAgLTE3NzAsNyArMTc3MCw3IEBAIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial92YXJp
YWRpY19ub2RlX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01OCiAgICAg
V2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXZWJDb3Jl
OjpOb2RlKiBjb252ZXJ0ZWRIZWFkID0gV2ViS2l0Ojpjb3JlKGhlYWQpOwogICAgIFdlYkNvcmU6
Ok5vZGUqIGNvbnZlcnRlZFRhaWwgPSBXZWJLaXQ6OmNvcmUodGFpbCk7Ci0gICAgaXRlbS0+dmFy
aWFkaWNOb2RlTWV0aG9kKGNvbnZlcnRlZEhlYWQsIGNvbnZlcnRlZFRhaWwpOworICAgIGl0ZW0t
PnZhcmlhZGljTm9kZU1ldGhvZCgqY29udmVydGVkSGVhZCwgY29udmVydGVkVGFpbCk7CiB9CiAK
IHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9hbnkoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2Zs
b2F0IGEsIGdsb25nIGIpCkBAIC0xOTYyLDcgKzE5NjIsNyBAQCB2b2lkIHdlYmtpdF9kb21fdGVz
dF9vYmpfc2V0X3Rlc3Rfb2JqX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9N
VGVzdAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSih2YWx1ZSkp
OwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAg
V2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkVmFsdWUgPSBXZWJLaXQ6OmNvcmUodmFsdWUpOwot
ICAgIGl0ZW0tPnNldFRlc3RPYmpBdHRyKGNvbnZlcnRlZFZhbHVlKTsKKyAgICBpdGVtLT5zZXRU
ZXN0T2JqQXR0cigqY29udmVydGVkVmFsdWUpOwogfQogCiBXZWJLaXRET01UZXN0T2JqKiB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX2dldF9sZW5pZW50X3Rlc3Rfb2JqX2F0dHIoV2ViS2l0RE9NVGVzdE9i
aiogc2VsZikKQEAgLTE5ODEsNyArMTk4MSw3IEBAIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9z
ZXRfbGVuaWVudF90ZXN0X29ial9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpCiAg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHZhbHVlKSk7CiAgICAg
V2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXZWJDb3Jl
OjpUZXN0T2JqKiBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7Ci0gICAgaXRl
bS0+c2V0TGVuaWVudFRlc3RPYmpBdHRyKGNvbnZlcnRlZFZhbHVlKTsKKyAgICBpdGVtLT5zZXRM
ZW5pZW50VGVzdE9iakF0dHIoKmNvbnZlcnRlZFZhbHVlKTsKIH0KIAogZ2NoYXIqIHdlYmtpdF9k
b21fdGVzdF9vYmpfZ2V0X3VuZm9yZ2VhYmxlX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikK
QEAgLTIwMjgsNyArMjAyOCw3IEBAIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfeG1sX29i
al9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTVRlc3RPCiAgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHZhbHVlKSk7CiAgICAgV2ViQ29yZTo6
VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXZWJDb3JlOjpUZXN0T2Jq
KiBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0WE1M
T2JqQXR0cihjb252ZXJ0ZWRWYWx1ZSk7CisgICAgaXRlbS0+c2V0WE1MT2JqQXR0cigqY29udmVy
dGVkVmFsdWUpOwogfQogCiBnYm9vbGVhbiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9jcmVhdGUo
V2ViS2l0RE9NVGVzdE9iaiogc2VsZikKQEAgLTIzODIsNyArMjM4Miw3IEBAIHZvaWQgd2Via2l0
X2RvbV90ZXN0X29ial9zZXRfc3RyaWN0X3R5cGVfY2hlY2tpbmdfYXR0cmlidXRlKFdlYktpdERP
TVRlc3RPYmoqIHNlCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JK
KHZhbHVlKSk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2
YWx1ZSk7Ci0gICAgaXRlbS0+c2V0U3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKGNvbnZlcnRl
ZFZhbHVlKTsKKyAgICBpdGVtLT5zZXRTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoKmNvbnZl
cnRlZFZhbHVlKTsKIH0KIAogZ2xvbmcgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfd2l0aF9zY3Jp
cHRfc3RhdGVfYXR0cmlidXRlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCkBAIC0yNjE4LDcgKzI2
MTgsNyBAQCB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X211dGFibGVfcG9pbnQoV2ViS2l0
RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NU1ZHUAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0RPTV9JU19TVkdfUE9JTlQodmFsdWUpKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6OlNWR1BvaW50KiBjb252ZXJ0ZWRW
YWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0TXV0YWJsZVBvaW50KGNv
bnZlcnRlZFZhbHVlKTsKKyAgICBpdGVtLT5zZXRNdXRhYmxlUG9pbnQoKmNvbnZlcnRlZFZhbHVl
KTsKIH0KIAogV2ViS2l0RE9NU1ZHUG9pbnQqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2ltbXV0
YWJsZV9wb2ludChXZWJLaXRET01UZXN0T2JqKiBzZWxmKQpAQCAtMjYzNyw3ICsyNjM3LDcgQEAg
dm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9pbW11dGFibGVfcG9pbnQoV2ViS2l0RE9NVGVz
dE9iaiogc2VsZiwgV2ViS2l0RE9NU1YKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01f
SVNfU1ZHX1BPSU5UKHZhbHVlKSk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKICAgICBXZWJDb3JlOjpTVkdQb2ludCogY29udmVydGVkVmFsdWUgPSBX
ZWJLaXQ6OmNvcmUodmFsdWUpOwotICAgIGl0ZW0tPnNldEltbXV0YWJsZVBvaW50KGNvbnZlcnRl
ZFZhbHVlKTsKKyAgICBpdGVtLT5zZXRJbW11dGFibGVQb2ludCgqY29udmVydGVkVmFsdWUpOwog
fQogCiBnbG9uZyB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9zdHJhd2JlcnJ5KFdlYktpdERPTVRl
c3RPYmoqIHNlbGYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmlu
ZGV4IDcxOTkwNjI5ZDQ1N2U4MzJjMjBiYjkyYWViM2JjNDUwYmY0MDE2YzIuLjVhYzMwNzc3ZWRm
OGU2YTg0NTNhZDE3NDczNDNiOTNiNjBiNDM1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRWRpdG9yQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5o
IgorI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgpAQCAtNDYsOCArNDcs
OCBAQAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZUVs
ZW1lbnRCYXNlLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgotI2luY2x1ZGUgIkhU
TUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRN
TFNlbGVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVxdWVzdC5oIgogI2luY2x1ZGUg
IkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCmluZGV4IGJhYTQ5ZDIxM2ZlYjBjNjNhNDA0
NGI1OTA1YTc3YjZiZTM2ZmE1ZGYuLjg5YzMwZmQyZTYwOTM0ODg1MTE0MmE1NjVhMjc1ODgyNjAz
NmEyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCkBAIC0y
MTMsNyArMjEzLDcgQEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6c2V0U2VsZWN0ZWQoYm9vbCBz
ZWxlY3RlZCkKICAgICBzZXRTZWxlY3RlZFN0YXRlKHNlbGVjdGVkKTsKIAogICAgIGlmIChIVE1M
U2VsZWN0RWxlbWVudCogc2VsZWN0ID0gb3duZXJTZWxlY3RFbGVtZW50KCkpCi0gICAgICAgIHNl
bGVjdC0+b3B0aW9uU2VsZWN0aW9uU3RhdGVDaGFuZ2VkKHRoaXMsIHNlbGVjdGVkKTsKKyAgICAg
ICAgc2VsZWN0LT5vcHRpb25TZWxlY3Rpb25TdGF0ZUNoYW5nZWQoKnRoaXMsIHNlbGVjdGVkKTsK
IH0KIAogdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6c2V0U2VsZWN0ZWRTdGF0ZShib29sIHNlbGVj
dGVkKQpAQCAtMzE0LDcgKzMxNCw3IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVl
c3QgSFRNTE9wdGlvbkVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlCiAgICAgICAg
IC8vIEZJWE1FOiBNaWdodCBiZSBiZXR0ZXIgdG8gY2FsbCB0aGlzIHVuY29uZGl0aW9uYWxseSwg
YWx3YXlzIHBhc3NpbmcgbV9pc1NlbGVjdGVkLAogICAgICAgICAvLyByYXRoZXIgdGhhbiBvbmx5
IGNhbGxpbmcgaXQgaWYgd2UgYXJlIHNlbGVjdGVkLgogICAgICAgICBpZiAobV9pc1NlbGVjdGVk
KQotICAgICAgICAgICAgc2VsZWN0LT5vcHRpb25TZWxlY3Rpb25TdGF0ZUNoYW5nZWQodGhpcywg
dHJ1ZSk7CisgICAgICAgICAgICBzZWxlY3QtPm9wdGlvblNlbGVjdGlvblN0YXRlQ2hhbmdlZCgq
dGhpcywgdHJ1ZSk7CiAgICAgICAgIHNlbGVjdC0+c2Nyb2xsVG9TZWxlY3Rpb24oKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcAppbmRl
eCBiMzZjM2Y0ODBjY2U1YzQ2NWIwZmVjZGZjOTE3ZWQxNDkxMzA5ZGJhLi45ZjUzYmE2MWU5MDli
NjhjZTJkODk3NWEyOWYzM2RjZjM3MWRhODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCkBAIC0zOCw3ICszOCw5IEBAIFJlZjxIVE1MT3B0aW9u
c0NvbGxlY3Rpb24+IEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6Y3JlYXRlKEhUTUxTZWxlY3RFbGVt
ZW50JiBzZWxlCiAKIHZvaWQgSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjphZGQoSFRNTEVsZW1lbnQq
IGVsZW1lbnQsIEhUTUxFbGVtZW50KiBiZWZvcmVFbGVtZW50LCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKLSAgICBzZWxlY3RFbGVtZW50KCkuYWRkKGVsZW1lbnQsIGJlZm9yZUVsZW1lbnQsIGVjKTsK
KyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICBzZWxlY3RFbGVtZW50KCku
YWRkKCplbGVtZW50LCBiZWZvcmVFbGVtZW50LCBlYyk7CiB9CiAKIHZvaWQgSFRNTE9wdGlvbnND
b2xsZWN0aW9uOjphZGQoSFRNTEVsZW1lbnQqIGVsZW1lbnQsIGludCBiZWZvcmVJbmRleCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCkBAIC01Myw3ICs1NSw5IEBAIHZvaWQgSFRNTE9wdGlvbnNDb2xsZWN0
aW9uOjpyZW1vdmUoaW50IGluZGV4KQogCiB2b2lkIEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVt
b3ZlKEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb24pCiB7Ci0gICAgc2VsZWN0RWxlbWVudCgpLnJl
bW92ZShvcHRpb24pOworICAgIGlmICghb3B0aW9uKQorICAgICAgICByZXR1cm47CisgICAgc2Vs
ZWN0RWxlbWVudCgpLnJlbW92ZSgqb3B0aW9uKTsKIH0KIAogaW50IEhUTUxPcHRpb25zQ29sbGVj
dGlvbjo6c2VsZWN0ZWRJbmRleCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
aW9uc0NvbGxlY3Rpb24uaAppbmRleCA0OGYzNWVlY2VjOGM4YWRmOGViMmU2Y2MxZTNhZjdhMDYz
ZjU2MzU0Li40ZmFlNzU5NjI3OThlODQ2M2ZkYTM4ZTMzN2UzNjM5MWRmZjA3NzlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgKQEAgLTI1LDYgKzI1LDcg
QEAKICNkZWZpbmUgSFRNTE9wdGlvbnNDb2xsZWN0aW9uX2gKIAogI2luY2x1ZGUgIkNhY2hlZEhU
TUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MU2VsZWN0RWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IGE5NTgxZjYzZTE2MTE3ZjQ1YzZm
YmZmMGM0NDA4ZDhhNzU5MjFhYmUuLjU5ZWU0YWE1ZWNjZWIxYjRjMjQxYTgzNDAxNTE5NjNkOWFl
NzM3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC0y
MjAsMTkgKzIyMCwxNCBAQCBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6OmFjdGl2ZVNlbGVjdGlvbkVu
ZExpc3RJbmRleCgpIGNvbnN0CiAgICAgcmV0dXJuIGxhc3RTZWxlY3RlZExpc3RJbmRleCgpOwog
fQogCi12b2lkIEhUTUxTZWxlY3RFbGVtZW50OjphZGQoSFRNTEVsZW1lbnQqIGVsZW1lbnQsIEhU
TUxFbGVtZW50KiBiZWZvcmVFbGVtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSFRNTFNl
bGVjdEVsZW1lbnQ6OmFkZChIVE1MRWxlbWVudCYgZWxlbWVudCwgSFRNTEVsZW1lbnQqIGJlZm9y
ZUVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghZWxlbWVudCB8fCAhKGlz
PEhUTUxPcHRpb25FbGVtZW50PigqZWxlbWVudCkgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShoclRh
ZykgfHwgaXM8SFRNTE9wdEdyb3VwRWxlbWVudD4oKmVsZW1lbnQpKSkKKyAgICBpZiAoIShpczxI
VE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGhyVGFnKSB8
fCBpczxIVE1MT3B0R3JvdXBFbGVtZW50PihlbGVtZW50KSkpCiAgICAgICAgIHJldHVybjsKLQot
ICAgIC8vIE1ha2Ugc3VyZSB0aGUgZWxlbWVudCBpcyByZWYnZCBhbmQgZGVyZWYnZCBzbyB3ZSBk
b24ndCBsZWFrIGl0LgotICAgIFJlZjxIVE1MRWxlbWVudD4gcHJvdGVjdE5ld0NoaWxkKCplbGVt
ZW50KTsKLQotICAgIGluc2VydEJlZm9yZSgqZWxlbWVudCwgYmVmb3JlRWxlbWVudCwgZWMpOwot
ICAgIHVwZGF0ZVZhbGlkaXR5KCk7CisgICAgaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIGJlZm9yZUVs
ZW1lbnQsIGVjKTsKIH0KIAotdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6YWRkKEhUTUxFbGVtZW50
KiBlbGVtZW50LCBpbnQgYmVmb3JlSW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1M
U2VsZWN0RWxlbWVudDo6YWRkKEhUTUxFbGVtZW50JiBlbGVtZW50LCBpbnQgYmVmb3JlSW5kZXgs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGFkZChlbGVtZW50LCBpdGVtKGJlZm9yZUluZGV4
KSwgZWMpOwogfQpAQCAtMjQ2LDEyICsyNDEsMTIgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6
cmVtb3ZlQnlJbmRleChpbnQgb3B0aW9uSW5kZXgpCiAgICAgbGlzdEl0ZW1zKClbbGlzdEluZGV4
XS0+cmVtb3ZlKElHTk9SRV9FWENFUFRJT04pOwogfQogCi12b2lkIEhUTUxTZWxlY3RFbGVtZW50
OjpyZW1vdmUoSFRNTE9wdGlvbkVsZW1lbnQqIG9wdGlvbikKK3ZvaWQgSFRNTFNlbGVjdEVsZW1l
bnQ6OnJlbW92ZShIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uKQogewotICAgIGlmIChvcHRpb24t
Pm93bmVyU2VsZWN0RWxlbWVudCgpICE9IHRoaXMpCisgICAgaWYgKG9wdGlvbi5vd25lclNlbGVj
dEVsZW1lbnQoKSAhPSB0aGlzKQogICAgICAgICByZXR1cm47CiAKLSAgICBvcHRpb24tPnJlbW92
ZShJR05PUkVfRVhDRVBUSU9OKTsKKyAgICBvcHRpb24ucmVtb3ZlKElHTk9SRV9FWENFUFRJT04p
OwogfQogCiBTdHJpbmcgSFRNTFNlbGVjdEVsZW1lbnQ6OnZhbHVlKCkgY29uc3QKQEAgLTQzNSw3
ICs0MzAsNyBAQCBIVE1MT3B0aW9uRWxlbWVudCogSFRNTFNlbGVjdEVsZW1lbnQ6Oml0ZW0odW5z
aWduZWQgaW5kZXgpCiAgICAgcmV0dXJuIG9wdGlvbnMoKS0+aXRlbShpbmRleCk7CiB9CiAKLXZv
aWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldE9wdGlvbih1bnNpZ25lZCBpbmRleCwgSFRNTE9wdGlv
bkVsZW1lbnQqIG9wdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIEhUTUxTZWxlY3RFbGVt
ZW50OjpzZXRPcHRpb24odW5zaWduZWQgaW5kZXgsIEhUTUxPcHRpb25FbGVtZW50JiBvcHRpb24s
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gMDsKICAgICBpZiAoaW5kZXggPiBtYXhT
ZWxlY3RJdGVtcyAtIDEpCkBAIC00NTMsMjIgKzQ0OCwyMSBAQCB2b2lkIEhUTUxTZWxlY3RFbGVt
ZW50OjpzZXRPcHRpb24odW5zaWduZWQgaW5kZXgsIEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb24s
IEV4YwogICAgIC8vIEZpbmFsbHkgYWRkIHRoZSBuZXcgZWxlbWVudC4KICAgICBpZiAoIWVjKSB7
CiAgICAgICAgIGFkZChvcHRpb24sIGJlZm9yZS5nZXQoKSwgZWMpOwotICAgICAgICBpZiAoZGlm
ZiA+PSAwICYmIG9wdGlvbi0+c2VsZWN0ZWQoKSkKKyAgICAgICAgaWYgKGRpZmYgPj0gMCAmJiBv
cHRpb24uc2VsZWN0ZWQoKSkKICAgICAgICAgICAgIG9wdGlvblNlbGVjdGlvblN0YXRlQ2hhbmdl
ZChvcHRpb24sIHRydWUpOwogICAgIH0KIH0KIAotdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0
TGVuZ3RoKHVuc2lnbmVkIG5ld0xlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIEhUTUxTZWxl
Y3RFbGVtZW50OjpzZXRMZW5ndGgodW5zaWduZWQgbmV3TGVuZ3RoLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBlYyA9IDA7Ci0gICAgaWYgKG5ld0xlbiA+IG1heFNlbGVjdEl0ZW1zKQotICAg
ICAgICBuZXdMZW4gPSBtYXhTZWxlY3RJdGVtczsKLSAgICBpbnQgZGlmZiA9IGxlbmd0aCgpIC0g
bmV3TGVuOworICAgIGlmIChuZXdMZW5ndGggPiBtYXhTZWxlY3RJdGVtcykKKyAgICAgICAgbmV3
TGVuZ3RoID0gbWF4U2VsZWN0SXRlbXM7CisgICAgaW50IGRpZmYgPSBsZW5ndGgoKSAtIG5ld0xl
bmd0aDsKIAogICAgIGlmIChkaWZmIDwgMCkgeyAvLyBBZGQgZHVtbXkgZWxlbWVudHMuCiAgICAg
ICAgIGRvIHsKLSAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBvcHRpb24gPSBkb2N1bWVudCgp
LmNyZWF0ZUVsZW1lbnQob3B0aW9uVGFnLCBmYWxzZSk7Ci0gICAgICAgICAgICBBU1NFUlQob3B0
aW9uKTsKKyAgICAgICAgICAgIGF1dG8gb3B0aW9uID0gZG9jdW1lbnQoKS5jcmVhdGVFbGVtZW50
KG9wdGlvblRhZywgZmFsc2UpOwogICAgICAgICAgICAgYWRkKGRvd25jYXN0PEhUTUxFbGVtZW50
PihvcHRpb24uZ2V0KCkpLCBudWxscHRyLCBlYyk7CiAgICAgICAgICAgICBpZiAoZWMpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC00ODEsNyArNDc1LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxl
bWVudDo6c2V0TGVuZ3RoKHVuc2lnbmVkIG5ld0xlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAg
ICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IGl0ZW1zVG9SZW1vdmU7CiAgICAgICAgIHNpemVfdCBv
cHRpb25JbmRleCA9IDA7CiAgICAgICAgIGZvciAoYXV0byYgaXRlbSA6IGl0ZW1zKSB7Ci0gICAg
ICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KCppdGVtKSAmJiBvcHRpb25JbmRleCsr
ID49IG5ld0xlbikgeworICAgICAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PigqaXRl
bSkgJiYgb3B0aW9uSW5kZXgrKyA+PSBuZXdMZW5ndGgpIHsKICAgICAgICAgICAgICAgICBBU1NF
UlQoaXRlbS0+cGFyZW50Tm9kZSgpKTsKICAgICAgICAgICAgICAgICBpdGVtc1RvUmVtb3ZlLmFw
cGVuZCgqaXRlbSk7CiAgICAgICAgICAgICB9CkBAIC01MDAsMTIgKzQ5NCwxNCBAQCBib29sIEhU
TUxTZWxlY3RFbGVtZW50Ojppc1JlcXVpcmVkRm9ybUNvbnRyb2woKSBjb25zdAogICAgIHJldHVy
biBpc1JlcXVpcmVkKCk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCiBib29sIEhUTUxTZWxlY3RF
bGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiB7CisjaWYgUExBVEZPUk0o
SU9TKQogICAgIHJldHVybiAhaXNEaXNhYmxlZEZvcm1Db250cm9sKCk7Ci19CisjZWxzZQorICAg
IHJldHVybiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjp3aWxsUmVzcG9uZFRvTW91
c2VDbGlja0V2ZW50cygpOwogI2VuZGlmCit9CiAKIC8vIFJldHVybnMgdGhlIDFzdCB2YWxpZCBp
dGVtIHxza2lwfCBpdGVtcyBmcm9tIHxsaXN0SW5kZXh8IGluIGRpcmVjdGlvbiB8ZGlyZWN0aW9u
fCBpZiB0aGVyZSBpcyBvbmUuCiAvLyBPdGhlcndpc2UsIGl0IHJldHVybnMgdGhlIHZhbGlkIGl0
ZW0gY2xvc2VzdCB0byB0aGF0IGJvdW5kYXJ5IHdoaWNoIGlzIHBhc3QgfGxpc3RJbmRleHwgaWYg
dGhlcmUgaXMgb25lLgpAQCAtODQ1LDExICs4NDEsMTEgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVu
dDo6c2V0U2VsZWN0ZWRJbmRleChpbnQgaW5kZXgpCiAgICAgc2VsZWN0T3B0aW9uKGluZGV4LCBE
ZXNlbGVjdE90aGVyT3B0aW9ucyk7CiB9CiAKLXZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Om9wdGlv
blNlbGVjdGlvblN0YXRlQ2hhbmdlZChIVE1MT3B0aW9uRWxlbWVudCogb3B0aW9uLCBib29sIG9w
dGlvbklzU2VsZWN0ZWQpCit2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpvcHRpb25TZWxlY3Rpb25T
dGF0ZUNoYW5nZWQoSFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlvbiwgYm9vbCBvcHRpb25Jc1NlbGVj
dGVkKQogewotICAgIEFTU0VSVChvcHRpb24tPm93bmVyU2VsZWN0RWxlbWVudCgpID09IHRoaXMp
OworICAgIEFTU0VSVChvcHRpb24ub3duZXJTZWxlY3RFbGVtZW50KCkgPT0gdGhpcyk7CiAgICAg
aWYgKG9wdGlvbklzU2VsZWN0ZWQpCi0gICAgICAgIHNlbGVjdE9wdGlvbihvcHRpb24tPmluZGV4
KCkpOworICAgICAgICBzZWxlY3RPcHRpb24ob3B0aW9uLmluZGV4KCkpOwogICAgIGVsc2UgaWYg
KCF1c2VzTWVudUxpc3QoKSkKICAgICAgICAgc2VsZWN0T3B0aW9uKC0xKTsKICAgICBlbHNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKaW5kZXggNzhkM2Q4YmI0ZjVmMWYz
YTI0MDc4MjQ0MWJmMjc5ZjAwN2FiNzhhYS4uOWUzN2YxNTQ4MzVmNjQ4ZDFhYWE5MDg5MDY4MDNm
M2UzMGVkNmMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaApAQCAt
MjYsMTcgKzI2LDE0IEBACiAjaWZuZGVmIEhUTUxTZWxlY3RFbGVtZW50X2gKICNkZWZpbmUgSFRN
TFNlbGVjdEVsZW1lbnRfaAogCi0jaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJIVE1MRm9y
bUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmgiCi0jaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQu
aCIKICNpbmNsdWRlICJUeXBlQWhlYWQuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTE9wdGlvbnNDb2xsZWN0aW9uOwogCi1jbGFz
cyBIVE1MU2VsZWN0RWxlbWVudCA6IHB1YmxpYyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0
YXRlLCBwdWJsaWMgVHlwZUFoZWFkRGF0YVNvdXJjZSB7CitjbGFzcyBIVE1MU2VsZWN0RWxlbWVu
dCA6IHB1YmxpYyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLCBwcml2YXRlIFR5cGVB
aGVhZERhdGFTb3VyY2UgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTFNlbGVjdEVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1l
bnQqKTsKIApAQCAtNDUsOSArNDIsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIG9wdGlvblNlbGVjdGVkQnlVc2VyKGludCBpbmRleCwgYm9vbCBkaXNwYXRjaENoYW5nZUV2
ZW50LCBib29sIGFsbG93TXVsdGlwbGVTZWxlY3Rpb24gPSBmYWxzZSk7CiAKLSAgICAvLyBGb3Ig
VmFsaWRpdHlTdGF0ZQotICAgIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIGJvb2wgdmFsdWVNaXNzaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5n
IHZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB2YWx1ZU1pc3Npbmco
KSBjb25zdCBmaW5hbDsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwogCkBAIC01Niwx
NCArNTIsMTQgQEAgcHVibGljOgogCiAgICAgYm9vbCB1c2VzTWVudUxpc3QoKSBjb25zdDsKIAot
ICAgIHZvaWQgYWRkKEhUTUxFbGVtZW50KiwgSFRNTEVsZW1lbnQqIGJlZm9yZUVsZW1lbnQsIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGFkZChIVE1MRWxlbWVudCosIGludCBiZWZvcmVJbmRl
eCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgYWRkKEhUTUxFbGVtZW50JiwgSFRNTEVsZW1l
bnQqIGJlZm9yZUVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGFkZChIVE1MRWxl
bWVudCYsIGludCBiZWZvcmVJbmRleCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdXNpbmcgTm9k
ZTo6cmVtb3ZlOwotICAgIC8vIFNob3VsZCBiZSByZW1vdmUoaW50KSBidXQgaXQgY29uZmxpY3Rz
IHdpdGggTm9kZTo6cmVtb3ZlKEV4Y2VwdGlvbkNvZGUmKS4KLSAgICB2b2lkIHJlbW92ZUJ5SW5k
ZXgoaW50KTsKLSAgICB2b2lkIHJlbW92ZShIVE1MT3B0aW9uRWxlbWVudCopOworICAgIHZvaWQg
cmVtb3ZlKEhUTUxPcHRpb25FbGVtZW50Jik7CisgICAgdm9pZCByZW1vdmVCeUluZGV4KGludCk7
IC8vIFNob3VsZCBiZSByZW1vdmUoaW50KSBidXQgdGhhdCBjb25mbGljdHMgd2l0aCBOb2RlOjpy
ZW1vdmUoRXhjZXB0aW9uQ29kZSYpLgogCitwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIHZhbHVlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKTsKIApA
QCAtNzgsMTQgKzc0LDE0IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFZl
Y3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMoKSBjb25zdDsKIAotICAgIHZvaWQgYWNjZXNz
S2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBvdmVycmlkZTsKKyAgICB2b2lkIGFjY2Vz
c0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykgZmluYWw7CiAgICAgdm9pZCBhY2Nlc3NL
ZXlTZXRTZWxlY3RlZEluZGV4KGludCk7CiAKICAgICB2b2lkIHNldE11bHRpcGxlKGJvb2wpOwog
CiAgICAgdm9pZCBzZXRTaXplKHVuc2lnbmVkKTsKIAotICAgIHZvaWQgc2V0T3B0aW9uKHVuc2ln
bmVkIGluZGV4LCBIVE1MT3B0aW9uRWxlbWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lk
IHNldE9wdGlvbih1bnNpZ25lZCBpbmRleCwgSFRNTE9wdGlvbkVsZW1lbnQmLCBFeGNlcHRpb25D
b2RlJik7CiAgICAgdm9pZCBzZXRMZW5ndGgodW5zaWduZWQsIEV4Y2VwdGlvbkNvZGUmKTsKIAog
ICAgIEhUTUxPcHRpb25FbGVtZW50KiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KTsKQEAgLTk1LDEwICs5MSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbGlzdEJveFNlbGVjdEl0
ZW0oaW50IGxpc3RJbmRleCwgYm9vbCBhbGxvd011bHRpcGx5U2VsZWN0aW9ucywgYm9vbCBzaGlm
dCwgYm9vbCBmaXJlT25DaGFuZ2VOb3cgPSB0cnVlKTsKIAotI2lmIFBMQVRGT1JNKElPUykKLSAg
ICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3ZlcnJpZGU7Ci0jZW5kaWYK
LQogICAgIGJvb2wgY2FuU2VsZWN0QWxsKCkgY29uc3Q7CiAgICAgdm9pZCBzZWxlY3RBbGwoKTsK
ICAgICBpbnQgbGlzdFRvT3B0aW9uSW5kZXgoaW50IGxpc3RJbmRleCkgY29uc3Q7CkBAIC0xMDks
NDMgKzEwMSw0NCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBY3RpdmVTZWxlY3Rpb25BbmNob3JJ
bmRleChpbnQpOwogICAgIHZvaWQgc2V0QWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoaW50KTsKICAg
ICB2b2lkIHVwZGF0ZUxpc3RCb3hTZWxlY3Rpb24oYm9vbCBkZXNlbGVjdE90aGVyT3B0aW9ucyk7
Ci0gICAgCisKICAgICAvLyBGb3IgdXNlIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBIVE1MT3B0
aW9uRWxlbWVudC4KLSAgICB2b2lkIG9wdGlvblNlbGVjdGlvblN0YXRlQ2hhbmdlZChIVE1MT3B0
aW9uRWxlbWVudCosIGJvb2wgb3B0aW9uSXNTZWxlY3RlZCk7CisgICAgdm9pZCBvcHRpb25TZWxl
Y3Rpb25TdGF0ZUNoYW5nZWQoSFRNTE9wdGlvbkVsZW1lbnQmLCBib29sIG9wdGlvbklzU2VsZWN0
ZWQpOwogICAgIGJvb2wgYWxsb3dzTm9uQ29udGlndW91c1NlbGVjdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fYWxsb3dzTm9uQ29udGlndW91c1NlbGVjdGlvbjsgfTsKIAogcHJvdGVjdGVkOgogICAg
IEhUTUxTZWxlY3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxG
b3JtRWxlbWVudCopOwogCiBwcml2YXRlOgotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNv
bnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmb3Jt
Q29udHJvbFR5cGUoKSBjb25zdCBmaW5hbDsKICAgICAKLSAgICBib29sIGlzS2V5Ym9hcmRGb2N1
c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNNb3VzZUZv
Y3VzYWJsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShL
ZXlib2FyZEV2ZW50KikgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkg
Y29uc3QgZmluYWw7CiAKICAgICB2b2lkIGRpc3BhdGNoRm9jdXNFdmVudChSZWZQdHI8RWxlbWVu
dD4mJiBvbGRGb2N1c2VkRWxlbWVudCwgRm9jdXNEaXJlY3Rpb24pIGZpbmFsOwogICAgIHZvaWQg
ZGlzcGF0Y2hCbHVyRXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9jdXNlZEVsZW1lbnQpIGZp
bmFsOwogICAgIAotICAgIGJvb2wgY2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdCBmaW5h
bCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hhZG93Um9v
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIGJvb2wgaXNFbnVtZXJhdGFi
bGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBzdXBwb3J0TGFi
ZWxzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNFbnVtZXJh
dGFibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBzdXBwb3J0TGFi
ZWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgRm9ybUNvbnRyb2xTdGF0
ZSBzYXZlRm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgcmVzdG9y
ZUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYpIG92ZXJyaWRlOworICAg
IEZvcm1Db250cm9sU3RhdGUgc2F2ZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdCBmaW5hbDsKKyAg
ICB2b2lkIHJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKGNvbnN0IEZvcm1Db250cm9sU3RhdGUmKSBm
aW5hbDsKIAotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZp
bmFsOworICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGNvbnN0IGZpbmFsOwogCi0gICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNv
bnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxp
c3QmLCBib29sKSBvdmVycmlkZTsKKyAgICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIo
Y29uc3QgTm9kZSYpIGNvbnN0IGZpbmFsOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKSBmaW5hbDsKKyAgICBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYs
IGJvb2wpIGZpbmFsOwogCi0gICAgdm9pZCByZXNldCgpIG92ZXJyaWRlOworICAgIHZvaWQgcmVz
ZXQoKSBmaW5hbDsKIAotICAgIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJy
aWRlOworICAgIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIGZpbmFsOworICAgIGJv
b2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBmaW5hbDsKIAogICAgIHZvaWQgZGlz
cGF0Y2hDaGFuZ2VFdmVudEZvck1lbnVMaXN0KCk7CiAKQEAgLTE1MywxNCArMTQ2LDE0IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHJlY2FsY0xpc3RJdGVtcyhib29sIHVwZGF0ZVNlbGVjdGVkU3Rh
dGVzID0gdHJ1ZSkgY29uc3Q7CiAKLSAgICB2b2lkIGRlc2VsZWN0SXRlbXMoSFRNTE9wdGlvbkVs
ZW1lbnQqIGV4Y2x1ZGVFbGVtZW50ID0gMCk7CisgICAgdm9pZCBkZXNlbGVjdEl0ZW1zKEhUTUxP
cHRpb25FbGVtZW50KiBleGNsdWRlRWxlbWVudCA9IG51bGxwdHIpOwogICAgIHZvaWQgdHlwZUFo
ZWFkRmluZChLZXlib2FyZEV2ZW50Jik7CiAgICAgdm9pZCBzYXZlTGFzdFNlbGVjdGlvbigpOwog
Ci0gICAgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVy
Tm9kZSYpIG92ZXJyaWRlOworICAgIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0
ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBmaW5hbDsKIAotICAgIGJvb2wgaXNPcHRpb25hbEZvcm1D
b250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIWlzUmVxdWlyZWRGb3JtQ29udHJvbCgp
OyB9Ci0gICAgYm9vbCBpc1JlcXVpcmVkRm9ybUNvbnRyb2woKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIGlzT3B0aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFpc1Jl
cXVpcmVkRm9ybUNvbnRyb2woKTsgfQorICAgIGJvb2wgaXNSZXF1aXJlZEZvcm1Db250cm9sKCkg
Y29uc3QgZmluYWw7CiAKICAgICBib29sIGhhc1BsYWNlaG9sZGVyTGFiZWxPcHRpb24oKSBjb25z
dDsKIApAQCAtMTcxLDcgKzE2NCw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICB0eXBlZGVmIHVu
c2lnbmVkIFNlbGVjdE9wdGlvbkZsYWdzOwogICAgIHZvaWQgc2VsZWN0T3B0aW9uKGludCBvcHRp
b25JbmRleCwgU2VsZWN0T3B0aW9uRmxhZ3MgPSAwKTsKLSAgICB2b2lkIGRlc2VsZWN0SXRlbXNX
aXRob3V0VmFsaWRhdGlvbihIVE1MRWxlbWVudCogZWxlbWVudFRvRXhjbHVkZSA9IDApOworICAg
IHZvaWQgZGVzZWxlY3RJdGVtc1dpdGhvdXRWYWxpZGF0aW9uKEhUTUxFbGVtZW50KiBlbGVtZW50
VG9FeGNsdWRlID0gbnVsbHB0cik7CiAgICAgdm9pZCBwYXJzZU11bHRpcGxlQXR0cmlidXRlKGNv
bnN0IEF0b21pY1N0cmluZyYpOwogICAgIGludCBsYXN0U2VsZWN0ZWRMaXN0SW5kZXgoKSBjb25z
dDsKICAgICB2b2lkIHVwZGF0ZVNlbGVjdGVkU3RhdGUoaW50IGxpc3RJbmRleCwgYm9vbCBtdWx0
aSwgYm9vbCBzaGlmdCk7CkBAIC0xODEsMTAgKzE3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVyZXIoKTsKICAgICBzaXplX3Qgc2VhcmNoT3B0aW9uc0Zv
clZhbHVlKGNvbnN0IFN0cmluZyYsIHNpemVfdCBsaXN0SW5kZXhTdGFydCwgc2l6ZV90IGxpc3RJ
bmRleEVuZCkgY29uc3Q7CiAKLSAgICBlbnVtIFNraXBEaXJlY3Rpb24gewotICAgICAgICBTa2lw
QmFja3dhcmRzID0gLTEsCi0gICAgICAgIFNraXBGb3J3YXJkcyA9IDEKLSAgICB9OworICAgIGVu
dW0gU2tpcERpcmVjdGlvbiB7IFNraXBCYWNrd2FyZHMgPSAtMSwgU2tpcEZvcndhcmRzID0gMSB9
OwogICAgIGludCBuZXh0VmFsaWRJbmRleChpbnQgbGlzdEluZGV4LCBTa2lwRGlyZWN0aW9uLCBp
bnQgc2tpcCkgY29uc3Q7CiAgICAgaW50IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4KGludCBzdGFy
dEluZGV4KSBjb25zdDsKICAgICBpbnQgcHJldmlvdXNTZWxlY3RhYmxlTGlzdEluZGV4KGludCBz
dGFydEluZGV4KSBjb25zdDsKQEAgLTE5MiwxMiArMTgyLDEzIEBAIHByaXZhdGU6CiAgICAgaW50
IGxhc3RTZWxlY3RhYmxlTGlzdEluZGV4KCkgY29uc3Q7CiAgICAgaW50IG5leHRTZWxlY3RhYmxl
TGlzdEluZGV4UGFnZUF3YXkoaW50IHN0YXJ0SW5kZXgsIFNraXBEaXJlY3Rpb24pIGNvbnN0Owog
Ci0gICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsK
KyAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIGZpbmFsOwogCiAg
ICAgLy8gVHlwZUFoZWFkRGF0YVNvdXJjZSBmdW5jdGlvbnMuCi0gICAgaW50IGluZGV4T2ZTZWxl
Y3RlZE9wdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIGludCBvcHRpb25Db3VudCgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIFN0cmluZyBvcHRpb25BdEluZGV4KGludCBpbmRleCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgaW50IGluZGV4T2ZTZWxlY3RlZE9wdGlvbigpIGNvbnN0IGZpbmFsOworICAg
IGludCBvcHRpb25Db3VudCgpIGNvbnN0IGZpbmFsOworICAgIFN0cmluZyBvcHRpb25BdEluZGV4
KGludCBpbmRleCkgY29uc3QgZmluYWw7CisKIAogICAgIC8vIG1fbGlzdEl0ZW1zIGNvbnRhaW5z
IEhUTUxPcHRpb25FbGVtZW50LCBIVE1MT3B0R3JvdXBFbGVtZW50LCBhbmQgSFRNTEhSRWxlbWVu
dCBvYmplY3RzLgogICAgIG11dGFibGUgVmVjdG9yPEhUTUxFbGVtZW50Kj4gbV9saXN0SXRlbXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCmluZGV4IDVhMWQ5Nzc5
YTRlMWJlOTY2YWExMzc5ZDA1OWFhMzFjODIxMjlmYzAuLmIzNTQwOTZjNTAwNDgwNDdkMDcwNTIx
NjRmNzQ4MzUxMGJiNmVhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuaWRsCkBAIC0yMCw3ICsyMCw2IEBACiAKIFsKICAgICBDdXN0b21JbmRleGVkU2V0dGVyLAot
ICAgIFVzZVBvaW50ZXJzRXZlbkZvck5vbk51bGxhYmxlT2JqZWN0QXJndW1lbnRzLAogXSBpbnRl
cmZhY2UgSFRNTFNlbGVjdEVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW1JlZmxlY3RdIGF0
dHJpYnV0ZSBib29sZWFuIGF1dG9mb2N1czsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIGJvb2xl
YW4gZGlzYWJsZWQ7CkBAIC0zOSw4ICszOCw2IEBACiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
SFRNTE9wdGlvbnNDb2xsZWN0aW9uIG9wdGlvbnM7CiAjaWYgZGVmaW5lZChMQU5HVUFHRV9PQkpF
Q1RJVkVfQykgJiYgTEFOR1VBR0VfT0JKRUNUSVZFX0MKLSAgICAvLyBET00gTGV2ZWwgMiBjaGFu
Z2VzIHR5cGUgb2YgbGVuZ3RoIGF0dHJpYnV0ZSB0byB1bnNpZ25lZCBsb25nLCAKLSAgICAvLyBm
b3IgY29tcGF0aWJpbGl0eSB3ZSBrZWVwIERPTSBMZXZlbCAxIGRlZmluaXRpb24uCiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGxvbmcgbGVuZ3RoOwogI2Vsc2UKICAgICBbU2V0dGVyUmFpc2VzRXhj
ZXB0aW9uXSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CkBAIC02Myw2ICs2MCw3IEBA
CiAjZWxzZQogICAgIFtJbXBsZW1lbnRlZEFzPXJlbW92ZUJ5SW5kZXhdIHZvaWQgcmVtb3ZlKGxv
bmcgaW5kZXgpOwogI2VuZGlmCisKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rp
b24gc2VsZWN0ZWRPcHRpb25zOwogICAgIGF0dHJpYnV0ZSBsb25nIHNlbGVjdGVkSW5kZXg7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luQW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luQW5ub3RhdGlvbi5tbQppbmRleCBkZTM5NGE5Yjg2MDQ1NzU0YmYxMGU2NzU1ODIx
OTQxYjJkYjZlMzYzLi40N2JhOWMyOTM1MTg0YTU1ODBkOWU2NzVjNzI1ZWMyN2FjYmYzYTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bkFubm90YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tCkBAIC0zNyw3ICszNyw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0NTU1ByaW1pdGl2ZVZhbHVlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NTU1Byb3BlcnR5TmFt
ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvSFRN
TEVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
SFRNTElucHV0RWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBv
cnQgPFdlYkNvcmUvSFRNTE9wdGlvbkVsZW1lbnQuaD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276117</attachid>
            <date>2016-04-10 18:50:44 -0700</date>
            <delta_ts>2016-04-10 18:51:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156458-20160410185051.patch</filename>
            <type>text/plain</type>
            <size>40182</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5Mjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTViMjJmYWY4YzVmZWYw
OGEzOGVkYjk1YzM4ZmM0MTI4YTRkMjcwNC4uN2I4MjNjYzgxMmUxZGI5MGFmMTdiZDgxMGVlM2Ri
NTc4ZGE0NTdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE2LTA0LTEwICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgVXNlUG9pbnRlcnNF
dmVuRm9yTm9uTnVsbGFibGVPYmplY3RBcmd1bWVudHMgZnJvbSBIVE1MU2VsZWN0RWxlbWVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NDU4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
SFRNTFNlbGVjdEVsZW1lbnQ6OnJlbW92ZSk6IFVwZGF0ZWQgdG8gY2FsbCByZW1vdmUgd2l0aCBh
IHJlZmVyZW5jZQorICAgICAgICByYXRoZXIgdGhhbiBhIHBvaW50ZXIuCisgICAgICAgIChXZWJD
b3JlOjpzZWxlY3RJbmRleFNldHRlcik6IFVwZGF0ZWQgdG8gY2FsbCBzZXRPcHRpb24gd2l0aCBh
IHJlZmVyZW5jZSByYXRoZXIKKyAgICAgICAgdGhhbiBhIHBvaW50ZXIuCisKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtOgorICAgICAgICAoR2VuZXJh
dGVGdW5jdGlvbik6IEFkZGVkIGJhc2ljIHN1cHBvcnQgZm9yIHBhc3Npbmcgd3JhcHBlcnMgYnkg
cmVmZXJlbmNlLgorICAgICAgICBHT2JqZWN0IGJpbmRpbmdzIGFscmVhZHkgY2hlY2sgYXJndW1l
bnRzIGZvciBudWxsLCBzbyBkaWRuJ3QgYWRkIGFueSBuZXcgY2hlY2tzLgorCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVj
dC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdENhbGxiYWNrLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHA6Cisg
ICAgICAgIFVwZGF0ZWQuCisKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDog
VXBkYXRlZCBpbmNsdWRlcy4KKworICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OnNldFNlbGVjdGVkKTogUGFz
cyByZWZlcmVuY2Ugd2hlbiBjYWxsaW5nCisgICAgICAgIEhUTUxTZWxlY3RFbGVtZW50OjpvcHRp
b25TZWxlY3Rpb25TdGF0ZUNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvKTogRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25z
Q29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uc0NvbGxlY3Rpb246
OmFkZCk6IE1vdmVkIG51bGwgY2hlY2tpbmcgYmVoYXZpb3IgaGVyZS4KKyAgICAgICAgUHJlc2Vy
dmVzIGV4aXN0aW5nICJzaWxlbnRseSBkbyBub3RoaW5nIGlmIG51bGwiLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1vdmUpOiBEaXR0by4KKworICAgICAgICAq
IGh0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmg6IFVwZGF0ZWQgaW5jbHVkZS4KKworICAgICAg
ICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNl
bGVjdEVsZW1lbnQ6OmFkZCk6IENoYW5nZWQgdG8gdGFrZSBhIHJlZmVyZW5jZSBpbnN0ZWFkIG9m
CisgICAgICAgIGEgcG9pbnRlci4gQWxzbyByZW1vdmVkIHVubmVlZGVkIHByb3RlY3QgY29kZSwg
c2luY2UgaW5zZXJ0QmVmb3JlIGFscmVhZHkKKyAgICAgICAgcHJvdGVjdHMgaXRzZWxmLCBhbmQg
dW5uZWVkZWQgY2FsbCB0byB1cGRhdGVWYWxpZGl0eSwgc2luY2UgdXBkYXRlQ2hpbGRyZW4KKyAg
ICAgICAgYWxyZWFkeSBjYWxscyB1cGRhdGVWYWxpZGl0eS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTZWxlY3RFbGVtZW50OjpyZW1vdmUpOiBDaGFuZ2VkIHRvIHRha2UgYSByZWZlcmVuY2UgaW5z
dGVhZAorICAgICAgICBvZiBhIHBvaW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6c2V0T3B0aW9uKTogQ2hhbmdlZCB0byB0YWtlIGEgcmVmZXJlbmNlCisgICAgICAg
IGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1l
bnQ6OnNldExlbmd0aCk6IFJlbmFtZWQgIm5ld0xlbiIgdG8gIm5ld0xlbmd0aCIuCisgICAgICAg
IFVzZSBSZWYgaW5zdGVhZCBvZiBSZWZQdHIgZm9yIHJlc3VsdCBvZiBjcmVhdGVFbGVtZW50LCB3
aGljaCBtYWtlcyB0aGUKKyAgICAgICAgYXJndW1lbnQgcGFzc2VkIHRvIGFkZCBiZSBhIHJlZmVy
ZW5jZSByYXRoZXIgdGhhbiBhIHBvaW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMpOiBQdXQgdGhlICNpZgorICAg
ICAgICBmb3IgdGhpcyBoZXJlIGluc3RlYWQgb2YgaW4gdGhlIGhlYWRlci4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpvcHRpb25TZWxlY3Rpb25TdGF0ZUNoYW5nZWQpOiBD
aGFuZ2VkIHRvIHRha2UKKyAgICAgICAgYSByZWZlcmVuY2UgaW5zdGVhZCBvZiBhIHBvaW50ZXIg
Zm9yIHRoZSBvcHRpb24gZWxlbWVudC4KKworICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4gRGVyaXZlIHByaXZhdGVseQorICAgICAg
ICBmcm9tIFR5cGVBaGVhZERhdGFTb3VyY2UgaW5zdGVhZCBvZiBwdWJsaWNseS4gTWFrZSBhbGwg
b3ZlcnJpZGVzIGZpbmFsCisgICAgICAgIGV4Y2VwdCBmb3IgdGhlIG9uZSB0aGF0IGlzIGFjdHVh
bGx5IG92ZXJyaWRkZW4gYnkgYSBkZXJpdmVkIGNsYXNzLgorICAgICAgICBDaGFuZ2VkIHRoZSBh
cmd1bWVudHMgb2YgdGhlIGFkZCwgcmVtb3ZlLCBzZXRPcHRpb24sIGFuZAorICAgICAgICBvcHRp
b25TZWxlY3Rpb25TdGF0ZUNoYW5nZWQgZnVuY3Rpb25zIHRvIGJlIHJlZmVyZW5jZXMgaW5zdGVh
ZCBvZiBwb2ludGVycy4KKyAgICAgICAgVHdlYWtlZCBmb3JtYXR0aW5nIGEgYml0IGFuZCB1c2Vk
IG51bGxwdHIgaW5zdGVhZCBvZiAwLiBPdmVycmlkZQorICAgICAgICB3aWxsUmVzcG9uZFRvTW91
c2VDbGlja0V2ZW50cyBvbiBhbGwgcGxhdGZvcm1zLCBub3QganVzdCBpT1MuCisKKyAgICAgICAg
KiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbDogUmVtb3ZlZCBVc2VQb2ludGVyc0V2ZW5Gb3JO
b25OdWxsYWJsZU9iamVjdEFyZ3VtZW50cy4KKyAgICAgICAgQWxzbyByZW1vdmVkIGEgY29tbWVu
dCB0aGF0IGlzIG5vIGxvbmdlciBuZWVkZWQuCisKIDIwMTYtMDQtMTAgIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggdGhlIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDg4
YmE5M2IwMDFjMTFkNDYwNzdlNDFjNjU1YmE0ZmNkZWQwNzc4Y2IuLjkzZGFjMjEzYjZjNGFlYzc2
ZWYwMjk0OGFkOWFkOThiZjAyODdjZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAx
Ni0wNC0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
IFVzZVBvaW50ZXJzRXZlbkZvck5vbk51bGxhYmxlT2JqZWN0QXJndW1lbnRzIGZyb20gSFRNTFNl
bGVjdEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NjQ1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tOiBVcGRh
dGVkIGluY2x1ZGVzLgorCiAyMDE2LTA0LTA4ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIGN1c3RvbSB0YXJnZXQgcGlja2VyIGFjdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVs
ZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0
RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggMzBlM2ViYmI4OWE0ZWYyM2E1OTY5NGMzYWJlZTU3YTgw
YTYyMzFlNy4uZjcxMDkzNDM3MDBlZDczMWQ3ODJlYjc0ZGE4MTA2M2UxOWRmMjgxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVu
dEN1c3RvbS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgSlNWYWx1ZSBKU0hUTUxTZWxlY3RFbGVtZW50
OjpyZW1vdmUoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9IGVsc2UgewogICAgICAgICAvLyBUaGUg
SFRNTFNlbGVjdEVsZW1lbnQ6OnJlbW92ZSgpIGZ1bmN0aW9uIGNhbiB0YWtlIGVpdGhlciBhbiBv
cHRpb24gb2JqZWN0IG9yIHRoZSBpbmRleCBvZiBhbiBvcHRpb24uCiAgICAgICAgIGlmIChIVE1M
T3B0aW9uRWxlbWVudCogb3B0aW9uID0gSlNIVE1MT3B0aW9uRWxlbWVudDo6dG9XcmFwcGVkKHN0
YXRlLmFyZ3VtZW50KDApKSkKLSAgICAgICAgICAgIHNlbGVjdC5yZW1vdmUob3B0aW9uKTsKKyAg
ICAgICAgICAgIHNlbGVjdC5yZW1vdmUoKm9wdGlvbik7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHNlbGVjdC5yZW1vdmVCeUluZGV4KHN0YXRlLmFyZ3VtZW50KDApLnRvSW50MzIoJnN0YXRl
KSk7CiAgICAgfQpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIHNlbGVjdEluZGV4U2V0dGVyKEhUTUxT
ZWxlY3RFbGVtZW50KiBzZWxlY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZAogICAg
ICAgICBpZiAoIW9wdGlvbikKICAgICAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNlbGVjdC0+c2V0T3B0aW9uKGluZGV4LCBvcHRpb24s
IGVjKTsKKyAgICAgICAgICAgIHNlbGVjdC0+c2V0T3B0aW9uKGluZGV4LCAqb3B0aW9uLCBlYyk7
CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5w
bSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3Qu
cG0KaW5kZXggZmUyZjhlNzUyMjMwNjIzNTIwNzA0ODBlYzM3YzA5YmVmZDk2OGU3NS4uOWNkNWFk
NzkxZGVlMzE1YWZjNzRjYjJjMjA2OTU0OTY5MmUyMDUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCkBAIC0x
MTA5LDYgKzExMDksOSBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbiB7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKCRwYXJhbUlzR0RPTVR5cGUgfHwgKCRwYXJhbUlETFR5cGUgZXEgIkRPTVN0cmluZyIp
KSB7CiAgICAgICAgICAgICAkcGFyYW1OYW1lID0gImNvbnZlcnRlZCIgLiAkY29kZUdlbmVyYXRv
ci0+V0tfdWNmaXJzdCgkcGFyYW1OYW1lKTsKKyAgICAgICAgICAgIGlmICgkcHJlZml4IG5lICJz
ZXRfIiAmJiAkY29kZUdlbmVyYXRvci0+U2hvdWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZSgkcGFy
YW0sICRwYXJlbnROb2RlKSkgeworICAgICAgICAgICAgICAgICRwYXJhbU5hbWUgPSAiKiRwYXJh
bU5hbWUiOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmICgkcGFyYW1JRExU
eXBlIGVxICJOb2RlRmlsdGVyIiB8fCAkcGFyYW1JRExUeXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIi
KSB7CiAgICAgICAgICAgICAkcGFyYW1OYW1lID0gIldURjo6Z2V0UHRyKCIgLiAkcGFyYW1OYW1l
IC4gIikiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0QWN0aXZlRE9NT2Jq
ZWN0LmNwcAppbmRleCA3YTZhNTk3YjVlNWRmODdhYTk5YjI3MmZkYzU4NjI0ZjIwOTRkZGNkLi42
OWY4ODYzMzZlNjYxMGI2Mjc4ZjQ0MWFmMGE2M2ZiOTE1MzE2ZTUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0QWN0
aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMTQxLDcgKzE0
MSw3IEBAIHZvaWQgd2Via2l0X2RvbV90ZXN0X2FjdGl2ZV9kb21fb2JqZWN0X2V4Y2l0aW5nX2Z1
bmN0aW9uKFdlYktpdERPTVRlc3RBY3RpdmVET01PCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfRE9NX0lTX05PREUobmV4dENoaWxkKSk7CiAgICAgV2ViQ29yZTo6VGVzdEFjdGl2ZURPTU9i
amVjdCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXZWJDb3JlOjpOb2RlKiBjb252
ZXJ0ZWROZXh0Q2hpbGQgPSBXZWJLaXQ6OmNvcmUobmV4dENoaWxkKTsKLSAgICBpdGVtLT5leGNp
dGluZ0Z1bmN0aW9uKGNvbnZlcnRlZE5leHRDaGlsZCk7CisgICAgaXRlbS0+ZXhjaXRpbmdGdW5j
dGlvbigqY29udmVydGVkTmV4dENoaWxkKTsKIH0KIAogdm9pZCB3ZWJraXRfZG9tX3Rlc3RfYWN0
aXZlX2RvbV9vYmplY3RfcG9zdF9tZXNzYWdlKFdlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3Qq
IHNlbGYsIGNvbnN0IGdjaGFyKiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RDYWxsYmFjay5jcHAKaW5kZXggOGNlY2NjZTQ4YTc5MzNhYzFiYjY2OWI2NmQ4ZmI4NTZlNTc5
OGE3Mi4uYzdlYjM4ZDRhNWJiZTA2ODRlNzViMTJmZDQxNTdmMmUyM2ZkODdhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdENhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2suY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAg
Z2Jvb2xlYW4gd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2NhbGxiYWNrX3dpdGhfYXJyYXlfcGFy
YW0oV2ViS2l0RE9NVGVzdENhbGxiYWMKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
RE9NX0lTX0ZMT0FUMzJBUlJBWShhcnJheVBhcmFtKSwgRkFMU0UpOwogICAgIFdlYkNvcmU6OlRl
c3RDYWxsYmFjayogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXZWJDb3JlOjpGbG9h
dDMyQXJyYXkqIGNvbnZlcnRlZEFycmF5UGFyYW0gPSBXZWJLaXQ6OmNvcmUoYXJyYXlQYXJhbSk7
Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+Y2FsbGJhY2tXaXRoQXJyYXlQYXJhbShjb252
ZXJ0ZWRBcnJheVBhcmFtKTsKKyAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5jYWxsYmFja1dp
dGhBcnJheVBhcmFtKCpjb252ZXJ0ZWRBcnJheVBhcmFtKTsKICAgICByZXR1cm4gcmVzdWx0Owog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc2VsZik7CkBAIC0xOTEsNyArMTkxLDcgQEAgZ2Jvb2xl
YW4gd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2NhbGxiYWNrX3dpdGhfc3RyaW5nX2xpc3QoV2Vi
S2l0RE9NVGVzdENhbGxiYWMKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lT
X0RPTV9TVFJJTkdfTElTVChsaXN0UGFyYW0pLCBGQUxTRSk7CiAgICAgV2ViQ29yZTo6VGVzdENh
bGxiYWNrKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6OkRPTVN0cmlu
Z0xpc3QqIGNvbnZlcnRlZExpc3RQYXJhbSA9IFdlYktpdDo6Y29yZShsaXN0UGFyYW0pOwotICAg
IGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoY29udmVydGVk
TGlzdFBhcmFtKTsKKyAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5jYWxsYmFja1dpdGhTdHJp
bmdMaXN0KCpjb252ZXJ0ZWRMaXN0UGFyYW0pOwogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKQEAgLTIyNSw3ICsyMjUsNyBAQCBnYm9vbGVhbiB3ZWJr
aXRfZG9tX3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tfcmVxdWlyZXNfdGhpc190b19wYXNzKFdlYktp
dERPTVRlc3RDYQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9O
T0RFKHRlc3ROb2RlUGFyYW0pLCBGQUxTRSk7CiAgICAgV2ViQ29yZTo6VGVzdENhbGxiYWNrKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6OlRlc3ROb2RlKiBjb252ZXJ0
ZWRUZXN0Tm9kZVBhcmFtID0gV2ViS2l0Ojpjb3JlKHRlc3ROb2RlUGFyYW0pOwotICAgIGdib29s
ZWFuIHJlc3VsdCA9IGl0ZW0tPmNhbGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNzKGxvbmdQYXJhbSwg
Y29udmVydGVkVGVzdE5vZGVQYXJhbSk7CisgICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+Y2Fs
bGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3MobG9uZ1BhcmFtLCAqY29udmVydGVkVGVzdE5vZGVQYXJh
bSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNlbGYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24uY3Bw
CmluZGV4IDM1OGM0ZTZhNWRiMmUwZWE3Njg5YzU2MjdiYzc0YzA2YzgyYWY2NDMuLmU0NWU1MjQz
YWEyMWQ5ZTlhYTFmODZlZDEzOWQzYTZhMWU5MTllNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFja0Z1
bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbi5jcHAKQEAgLTEzNSw3ICsxMzUsNyBA
QCBnYm9vbGVhbiB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfZnVuY3Rpb25fY2FsbGJhY2tfd2l0
aF9hcnJheV9wYXJhbShXZWJLaXRET01UZQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9ET01fSVNfRkxPQVQzMkFSUkFZKGFycmF5UGFyYW0pLCBGQUxTRSk7CiAgICAgV2ViQ29yZTo6
VGVzdENhbGxiYWNrRnVuY3Rpb24qIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV2Vi
Q29yZTo6RmxvYXQzMkFycmF5KiBjb252ZXJ0ZWRBcnJheVBhcmFtID0gV2ViS2l0Ojpjb3JlKGFy
cmF5UGFyYW0pOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmNhbGxiYWNrV2l0aEFycmF5
UGFyYW0oY29udmVydGVkQXJyYXlQYXJhbSk7CisgICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+
Y2FsbGJhY2tXaXRoQXJyYXlQYXJhbSgqY29udmVydGVkQXJyYXlQYXJhbSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNlbGYpOwpAQCAtMTkxLDcgKzE5MSw3
IEBAIGdib29sZWFuIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19mdW5jdGlvbl9jYWxsYmFja193
aXRoX3N0cmluZ19saXN0KFdlYktpdERPTVRlCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0RPTV9JU19ET01fU1RSSU5HX0xJU1QobGlzdFBhcmFtKSwgRkFMU0UpOwogICAgIFdlYkNv
cmU6OlRlc3RDYWxsYmFja0Z1bmN0aW9uKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAg
IFdlYkNvcmU6OkRPTVN0cmluZ0xpc3QqIGNvbnZlcnRlZExpc3RQYXJhbSA9IFdlYktpdDo6Y29y
ZShsaXN0UGFyYW0pOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmNhbGxiYWNrV2l0aFN0
cmluZ0xpc3QoY29udmVydGVkTGlzdFBhcmFtKTsKKyAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVt
LT5jYWxsYmFja1dpdGhTdHJpbmdMaXN0KCpjb252ZXJ0ZWRMaXN0UGFyYW0pOwogICAgIHJldHVy
biByZXN1bHQ7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKQEAgLTIyNSw3ICsyMjUs
NyBAQCBnYm9vbGVhbiB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfZnVuY3Rpb25fY2FsbGJhY2tf
cmVxdWlyZXNfdGhpc190b19wYXNzKFdlYktpdAogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9ET01fSVNfVEVTVF9OT0RFKHRlc3ROb2RlUGFyYW0pLCBGQUxTRSk7CiAgICAgV2ViQ29y
ZTo6VGVzdENhbGxiYWNrRnVuY3Rpb24qIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAg
V2ViQ29yZTo6VGVzdE5vZGUqIGNvbnZlcnRlZFRlc3ROb2RlUGFyYW0gPSBXZWJLaXQ6OmNvcmUo
dGVzdE5vZGVQYXJhbSk7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+Y2FsbGJhY2tSZXF1
aXJlc1RoaXNUb1Bhc3MobG9uZ1BhcmFtLCBjb252ZXJ0ZWRUZXN0Tm9kZVBhcmFtKTsKKyAgICBn
Ym9vbGVhbiByZXN1bHQgPSBpdGVtLT5jYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyhsb25nUGFy
YW0sICpjb252ZXJ0ZWRUZXN0Tm9kZVBhcmFtKTsKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0oc2VsZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJ
bnRlcmZhY2UuY3BwCmluZGV4IDViNDU1NzQwODgyNWNiMjZhN2U3OWQ1NGFiN2RlZTVlMjAxMTRj
ODguLmI2MzE3ZTEzNzA2NWEyNzQ4NmU3YjYyMmY5MTI3NDllZjM3MTY5YmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAg
V2ViS2l0RE9NVGVzdE9iaiogd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRzX21l
dGhvZDIoV2ViS2l0RE9NVGVzdEludGUKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTdHJBcmcg
PSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyQXJnKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBj
b252ZXJ0ZWRPYmpBcmcgPSBXZWJLaXQ6OmNvcmUob2JqQXJnKTsKICAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ29iamVjdFJl
c3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPmltcGxlbWVudHNNZXRob2QyKGNvbnZlcnRlZFN0ckFy
ZywgY29udmVydGVkT2JqQXJnLCBlYykpOworICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBn
b2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+aW1wbGVtZW50c01ldGhvZDIoY29udmVy
dGVkU3RyQXJnLCAqY29udmVydGVkT2JqQXJnLCBlYykpOwogICAgIGlmIChlYykgewogICAgICAg
ICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKICAgICAgICAg
Z19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RP
TSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOwpAQCAtMzIyLDcgKzMyMiw3IEBAIFdlYktp
dERPTVRlc3RPYmoqIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc3VwcGxlbWVudGFsX21ldGhv
ZDIoV2ViS2l0RE9NVGVzdEluCiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVkU3RyQXJnID0gV1RG
OjpTdHJpbmc6OmZyb21VVEY4KHN0ckFyZyk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVy
dGVkT2JqQXJnID0gV2ViS2l0Ojpjb3JlKG9iakFyZyk7CiAgICAgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IGdvYmplY3RSZXN1bHQg
PSBXVEY6OmdldFB0cihXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRo
b2QyKCppdGVtLCBjb252ZXJ0ZWRTdHJBcmcsIGNvbnZlcnRlZE9iakFyZywgZWMpKTsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKFdlYkNv
cmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDIoKml0ZW0sIGNvbnZlcnRl
ZFN0ckFyZywgKmNvbnZlcnRlZE9iakFyZywgZWMpKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7CiAgICAgICAgIGdf
c2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00i
KSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKQEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lkIHdl
YmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc2V0X2ltcGxlbWVudHNfbm9kZShXZWJLaXRET01UZXN0
SW50ZXJmYWNlKiBzZWxmLAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19OT0RF
KHZhbHVlKSk7CiAgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKICAgICBXZWJDb3JlOjpOb2RlKiBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29y
ZSh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0SW1wbGVtZW50c05vZGUoY29udmVydGVkVmFsdWUpOwor
ICAgIGl0ZW0tPnNldEltcGxlbWVudHNOb2RlKCpjb252ZXJ0ZWRWYWx1ZSk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShzZWxmKTsKICAgICBVTlVTRURfUEFSQU0odmFsdWUpOwpAQCAtNTY3LDcg
KzU2Nyw3IEBAIHZvaWQgd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zZXRfc3VwcGxlbWVudGFs
X25vZGUoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsCiAgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfRE9NX0lTX05PREUodmFsdWUpKTsKICAgICBXZWJDb3JlOjpUZXN0SW50ZXJmYWNlKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6Ok5vZGUqIGNvbnZlcnRlZFZh
bHVlID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsKLSAgICBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFs
OjpzZXRTdXBwbGVtZW50YWxOb2RlKCppdGVtLCBjb252ZXJ0ZWRWYWx1ZSk7CisgICAgV2ViQ29y
ZTo6VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsTm9kZSgqaXRlbSwgKmNvbnZlcnRl
ZFZhbHVlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNlbGYpOwogICAgIFVOVVNFRF9QQVJB
TSh2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCmluZGV4IDM4MDk3ZTUw
OGJlODJmODQyZjQ4MWNlNjBmNmYyZmJjMWVkOWZiZTIuLmZhZTNiYTYxYzVmNDhiZjE3ZjhmMjIy
MGFkYmE0YjczMTFkM2M5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCkBA
IC0xMjE2LDcgKzEyMTYsNyBAQCB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfdm9pZF9tZXRob2Rf
d2l0aF9hcmdzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIGxvbgogICAgIFdlYkNvcmU6
OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpTdHJpbmcgY29u
dmVydGVkU3RyQXJnID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0ckFyZyk7CiAgICAgV2ViQ29y
ZTo6VGVzdE9iaiogY29udmVydGVkT2JqQXJnID0gV2ViS2l0Ojpjb3JlKG9iakFyZyk7Ci0gICAg
aXRlbS0+dm9pZE1ldGhvZFdpdGhBcmdzKGxvbmdBcmcsIGNvbnZlcnRlZFN0ckFyZywgY29udmVy
dGVkT2JqQXJnKTsKKyAgICBpdGVtLT52b2lkTWV0aG9kV2l0aEFyZ3MobG9uZ0FyZywgY29udmVy
dGVkU3RyQXJnLCAqY29udmVydGVkT2JqQXJnKTsKIH0KIAogZ2ludDggd2Via2l0X2RvbV90ZXN0
X29ial9ieXRlX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmKQpAQCAtMTIzNyw3ICsxMjM3
LDcgQEAgZ2ludDggd2Via2l0X2RvbV90ZXN0X29ial9ieXRlX21ldGhvZF93aXRoX2FyZ3MoV2Vi
S2l0RE9NVGVzdE9iaiogc2VsZiwgZ2ludDggYnkKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFN0ckFyZyA9
IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHJBcmcpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNv
bnZlcnRlZE9iakFyZyA9IFdlYktpdDo6Y29yZShvYmpBcmcpOwotICAgIGdpbnQ4IHJlc3VsdCA9
IGl0ZW0tPmJ5dGVNZXRob2RXaXRoQXJncyhieXRlQXJnLCBjb252ZXJ0ZWRTdHJBcmcsIGNvbnZl
cnRlZE9iakFyZyk7CisgICAgZ2ludDggcmVzdWx0ID0gaXRlbS0+Ynl0ZU1ldGhvZFdpdGhBcmdz
KGJ5dGVBcmcsIGNvbnZlcnRlZFN0ckFyZywgKmNvbnZlcnRlZE9iakFyZyk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIApAQCAtMTI1OSw3ICsxMjU5LDcgQEAgZ3VpbnQ4IHdlYmtpdF9kb21fdGVz
dF9vYmpfb2N0ZXRfbWV0aG9kX3dpdGhfYXJncyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBndWlu
dDgKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAg
IFdURjo6U3RyaW5nIGNvbnZlcnRlZFN0ckFyZyA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHJB
cmcpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNvbnZlcnRlZE9iakFyZyA9IFdlYktpdDo6Y29y
ZShvYmpBcmcpOwotICAgIGd1aW50OCByZXN1bHQgPSBpdGVtLT5vY3RldE1ldGhvZFdpdGhBcmdz
KG9jdGV0QXJnLCBjb252ZXJ0ZWRTdHJBcmcsIGNvbnZlcnRlZE9iakFyZyk7CisgICAgZ3VpbnQ4
IHJlc3VsdCA9IGl0ZW0tPm9jdGV0TWV0aG9kV2l0aEFyZ3Mob2N0ZXRBcmcsIGNvbnZlcnRlZFN0
ckFyZywgKmNvbnZlcnRlZE9iakFyZyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTI4
MSw3ICsxMjgxLDcgQEAgZ2xvbmcgd2Via2l0X2RvbV90ZXN0X29ial9sb25nX21ldGhvZF93aXRo
X2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgbG8KICAgICBXZWJDb3JlOjpUZXN0
T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRl
ZFN0ckFyZyA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHJBcmcpOwogICAgIFdlYkNvcmU6OlRl
c3RPYmoqIGNvbnZlcnRlZE9iakFyZyA9IFdlYktpdDo6Y29yZShvYmpBcmcpOwotICAgIGdsb25n
IHJlc3VsdCA9IGl0ZW0tPmxvbmdNZXRob2RXaXRoQXJncyhsb25nQXJnLCBjb252ZXJ0ZWRTdHJB
cmcsIGNvbnZlcnRlZE9iakFyZyk7CisgICAgZ2xvbmcgcmVzdWx0ID0gaXRlbS0+bG9uZ01ldGhv
ZFdpdGhBcmdzKGxvbmdBcmcsIGNvbnZlcnRlZFN0ckFyZywgKmNvbnZlcnRlZE9iakFyZyk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTMwMyw3ICsxMzAzLDcgQEAgV2ViS2l0RE9NVGVz
dE9iaiogd2Via2l0X2RvbV90ZXN0X29ial9vYmpfbWV0aG9kX3dpdGhfYXJncyhXZWJLaXRET01U
ZXN0T2JqKiBzZWwKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFN0ckFyZyA9IFdURjo6U3RyaW5nOjpmcm9t
VVRGOChzdHJBcmcpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNvbnZlcnRlZE9iakFyZyA9IFdl
YktpdDo6Y29yZShvYmpBcmcpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBnb2JqZWN0
UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+b2JqTWV0aG9kV2l0aEFyZ3MobG9uZ0FyZywgY29u
dmVydGVkU3RyQXJnLCBjb252ZXJ0ZWRPYmpBcmcpKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGVz
dE9iaj4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPm9iak1ldGhvZFdpdGhBcmdz
KGxvbmdBcmcsIGNvbnZlcnRlZFN0ckFyZywgKmNvbnZlcnRlZE9iakFyZykpOwogICAgIHJldHVy
biBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKIH0KIApAQCAtMTM3NSw3ICsxMzc1
LDcgQEAgV2ViS2l0RE9NVGVzdE9iaiogd2Via2l0X2RvbV90ZXN0X29ial9tZXRob2RfdGhhdF9y
ZXF1aXJlc19hbGxfYXJnc19hbmRfdGhyb3dzKFcKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRT
dHJBcmcgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyQXJnKTsKICAgICBXZWJDb3JlOjpUZXN0
T2JqKiBjb252ZXJ0ZWRPYmpBcmcgPSBXZWJLaXQ6OmNvcmUob2JqQXJnKTsKICAgICBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ29i
amVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NB
bmRUaHJvd3MoY29udmVydGVkU3RyQXJnLCBjb252ZXJ0ZWRPYmpBcmcsIGVjKSk7CisgICAgUmVm
UHRyPFdlYkNvcmU6OlRlc3RPYmo+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5t
ZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKGNvbnZlcnRlZFN0ckFyZywgKmNvbnZl
cnRlZE9iakFyZywgZWMpKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVy
YWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUs
IGVjZGVzYy5uYW1lKTsKQEAgLTE2NDYsNyArMTY0Niw3IEBAIHZvaWQgd2Via2l0X2RvbV90ZXN0
X29ial9jb252ZXJ0MShXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01UZXN0Tm9kZSog
dmFsCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfTk9ERSh2YWx1ZSkp
OwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAg
V2ViQ29yZTo6VGVzdE5vZGUqIGNvbnZlcnRlZFZhbHVlID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsK
LSAgICBpdGVtLT5jb252ZXJ0MShjb252ZXJ0ZWRWYWx1ZSk7CisgICAgaXRlbS0+Y29udmVydDEo
KmNvbnZlcnRlZFZhbHVlKTsKIH0KIAogdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2NvbnZlcnQy
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTVRlc3ROb2RlKiB2YWx1ZSkKQEAgLTE3
MzMsNyArMTczMyw3IEBAIFdlYktpdERPTWJvb2wqIHdlYmtpdF9kb21fdGVzdF9vYmpfc3RyaWN0
X2Z1bmN0aW9uX3dpdGhfYXJyYXkoV2ViS2l0RE9NVGVzdE9iaioKICAgICBXZWJDb3JlOjpUZXN0
T2JqKiBjb252ZXJ0ZWRPYmpBcmcgPSBXZWJLaXQ6OmNvcmUob2JqQXJnKTsKICAgICBXZWJDb3Jl
Ojpsb25nW10qIGNvbnZlcnRlZEFycmF5ID0gV2ViS2l0Ojpjb3JlKGFycmF5KTsKICAgICBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Ym9vbD4gZ29i
amVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPnN0cmljdEZ1bmN0aW9uV2l0aEFycmF5KGNv
bnZlcnRlZE9iakFyZywgYXJyYXksIGVjKSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OmJvb2w+IGdv
YmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5zdHJpY3RGdW5jdGlvbldpdGhBcnJheSgq
Y29udmVydGVkT2JqQXJnLCBhcnJheSwgZWMpKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgV2Vi
Q29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7CiAgICAgICAgIGdfc2V0
X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwg
ZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKQEAgLTE3NzAsNyArMTc3MCw3IEBAIHZvaWQgd2Vi
a2l0X2RvbV90ZXN0X29ial92YXJpYWRpY19ub2RlX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBz
ZWxmLCBXZWJLaXRET01OCiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKICAgICBXZWJDb3JlOjpOb2RlKiBjb252ZXJ0ZWRIZWFkID0gV2ViS2l0Ojpjb3Jl
KGhlYWQpOwogICAgIFdlYkNvcmU6Ok5vZGUqIGNvbnZlcnRlZFRhaWwgPSBXZWJLaXQ6OmNvcmUo
dGFpbCk7Ci0gICAgaXRlbS0+dmFyaWFkaWNOb2RlTWV0aG9kKGNvbnZlcnRlZEhlYWQsIGNvbnZl
cnRlZFRhaWwpOworICAgIGl0ZW0tPnZhcmlhZGljTm9kZU1ldGhvZCgqY29udmVydGVkSGVhZCwg
Y29udmVydGVkVGFpbCk7CiB9CiAKIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9hbnkoV2ViS2l0
RE9NVGVzdE9iaiogc2VsZiwgZ2Zsb2F0IGEsIGdsb25nIGIpCkBAIC0xOTYyLDcgKzE5NjIsNyBA
QCB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3Rlc3Rfb2JqX2F0dHIoV2ViS2l0RE9NVGVz
dE9iaiogc2VsZiwgV2ViS2l0RE9NVGVzdAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RP
TV9JU19URVNUX09CSih2YWx1ZSkpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkVmFsdWUgPSBX
ZWJLaXQ6OmNvcmUodmFsdWUpOwotICAgIGl0ZW0tPnNldFRlc3RPYmpBdHRyKGNvbnZlcnRlZFZh
bHVlKTsKKyAgICBpdGVtLT5zZXRUZXN0T2JqQXR0cigqY29udmVydGVkVmFsdWUpOwogfQogCiBX
ZWJLaXRET01UZXN0T2JqKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9sZW5pZW50X3Rlc3Rfb2Jq
X2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKQEAgLTE5ODEsNyArMTk4MSw3IEBAIHZvaWQg
d2Via2l0X2RvbV90ZXN0X29ial9zZXRfbGVuaWVudF90ZXN0X29ial9hdHRyKFdlYktpdERPTVRl
c3RPYmoqIHNlbGYsIFdlYktpCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RF
U1RfT0JKKHZhbHVlKSk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6
Y29yZSh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0TGVuaWVudFRlc3RPYmpBdHRyKGNvbnZlcnRlZFZh
bHVlKTsKKyAgICBpdGVtLT5zZXRMZW5pZW50VGVzdE9iakF0dHIoKmNvbnZlcnRlZFZhbHVlKTsK
IH0KIAogZ2NoYXIqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3VuZm9yZ2VhYmxlX2F0dHIoV2Vi
S2l0RE9NVGVzdE9iaiogc2VsZikKQEAgLTIwMjgsNyArMjAyOCw3IEBAIHZvaWQgd2Via2l0X2Rv
bV90ZXN0X29ial9zZXRfeG1sX29ial9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktp
dERPTVRlc3RPCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHZh
bHVlKSk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
ICAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1
ZSk7Ci0gICAgaXRlbS0+c2V0WE1MT2JqQXR0cihjb252ZXJ0ZWRWYWx1ZSk7CisgICAgaXRlbS0+
c2V0WE1MT2JqQXR0cigqY29udmVydGVkVmFsdWUpOwogfQogCiBnYm9vbGVhbiB3ZWJraXRfZG9t
X3Rlc3Rfb2JqX2dldF9jcmVhdGUoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKQEAgLTIzODIsNyAr
MjM4Miw3IEBAIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfc3RyaWN0X3R5cGVfY2hlY2tp
bmdfYXR0cmlidXRlKFdlYktpdERPTVRlc3RPYmoqIHNlCiAgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfRE9NX0lTX1RFU1RfT0JKKHZhbHVlKSk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRW
YWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0U3RyaWN0VHlwZUNoZWNr
aW5nQXR0cmlidXRlKGNvbnZlcnRlZFZhbHVlKTsKKyAgICBpdGVtLT5zZXRTdHJpY3RUeXBlQ2hl
Y2tpbmdBdHRyaWJ1dGUoKmNvbnZlcnRlZFZhbHVlKTsKIH0KIAogZ2xvbmcgd2Via2l0X2RvbV90
ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlKFdlYktpdERPTVRlc3RPYmoq
IHNlbGYpCkBAIC0yNjE4LDcgKzI2MTgsNyBAQCB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0
X211dGFibGVfcG9pbnQoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NU1ZHUAogICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19TVkdfUE9JTlQodmFsdWUpKTsKICAgICBX
ZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6
OlNWR1BvaW50KiBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7Ci0gICAgaXRl
bS0+c2V0TXV0YWJsZVBvaW50KGNvbnZlcnRlZFZhbHVlKTsKKyAgICBpdGVtLT5zZXRNdXRhYmxl
UG9pbnQoKmNvbnZlcnRlZFZhbHVlKTsKIH0KIAogV2ViS2l0RE9NU1ZHUG9pbnQqIHdlYmtpdF9k
b21fdGVzdF9vYmpfZ2V0X2ltbXV0YWJsZV9wb2ludChXZWJLaXRET01UZXN0T2JqKiBzZWxmKQpA
QCAtMjYzNyw3ICsyNjM3LDcgQEAgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9pbW11dGFi
bGVfcG9pbnQoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NU1YKICAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9ET01fSVNfU1ZHX1BPSU5UKHZhbHVlKSk7CiAgICAgV2ViQ29yZTo6
VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXZWJDb3JlOjpTVkdQb2lu
dCogY29udmVydGVkVmFsdWUgPSBXZWJLaXQ6OmNvcmUodmFsdWUpOwotICAgIGl0ZW0tPnNldElt
bXV0YWJsZVBvaW50KGNvbnZlcnRlZFZhbHVlKTsKKyAgICBpdGVtLT5zZXRJbW11dGFibGVQb2lu
dCgqY29udmVydGVkVmFsdWUpOwogfQogCiBnbG9uZyB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9z
dHJhd2JlcnJ5KFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4IDcxOTkwNjI5ZDQ1N2U4MzJjMjBiYjkyYWViM2JjNDUw
YmY0MDE2YzIuLjVhYzMwNzc3ZWRmOGU2YTg0NTNhZDE3NDczNDNiOTNiNjBiNDM1N2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1
ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZl
bnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZsb2F0
UXVhZC5oIgpAQCAtNDYsOCArNDcsOCBAQAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxGcmFtZUVsZW1lbnRCYXNlLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxl
bWVudC5oIgotI2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCisjaW5jbHVkZSAiSFRNTFNlbGVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXRUZXN0
UmVxdWVzdC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbmxpbmVU
ZXh0Qm94LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCmluZGV4
IGJhYTQ5ZDIxM2ZlYjBjNjNhNDA0NGI1OTA1YTc3YjZiZTM2ZmE1ZGYuLjg5YzMwZmQyZTYwOTM0
ODg1MTE0MmE1NjVhMjc1ODgyNjAzNmEyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dGlvbkVsZW1lbnQuY3BwCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVu
dDo6c2V0U2VsZWN0ZWQoYm9vbCBzZWxlY3RlZCkKICAgICBzZXRTZWxlY3RlZFN0YXRlKHNlbGVj
dGVkKTsKIAogICAgIGlmIChIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0ID0gb3duZXJTZWxlY3RF
bGVtZW50KCkpCi0gICAgICAgIHNlbGVjdC0+b3B0aW9uU2VsZWN0aW9uU3RhdGVDaGFuZ2VkKHRo
aXMsIHNlbGVjdGVkKTsKKyAgICAgICAgc2VsZWN0LT5vcHRpb25TZWxlY3Rpb25TdGF0ZUNoYW5n
ZWQoKnRoaXMsIHNlbGVjdGVkKTsKIH0KIAogdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6c2V0U2Vs
ZWN0ZWRTdGF0ZShib29sIHNlbGVjdGVkKQpAQCAtMzE0LDcgKzMxNCw3IEBAIE5vZGU6Okluc2Vy
dGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTE9wdGlvbkVsZW1lbnQ6Omluc2VydGVkSW50byhD
b250YWluZXJOb2RlCiAgICAgICAgIC8vIEZJWE1FOiBNaWdodCBiZSBiZXR0ZXIgdG8gY2FsbCB0
aGlzIHVuY29uZGl0aW9uYWxseSwgYWx3YXlzIHBhc3NpbmcgbV9pc1NlbGVjdGVkLAogICAgICAg
ICAvLyByYXRoZXIgdGhhbiBvbmx5IGNhbGxpbmcgaXQgaWYgd2UgYXJlIHNlbGVjdGVkLgogICAg
ICAgICBpZiAobV9pc1NlbGVjdGVkKQotICAgICAgICAgICAgc2VsZWN0LT5vcHRpb25TZWxlY3Rp
b25TdGF0ZUNoYW5nZWQodGhpcywgdHJ1ZSk7CisgICAgICAgICAgICBzZWxlY3QtPm9wdGlvblNl
bGVjdGlvblN0YXRlQ2hhbmdlZCgqdGhpcywgdHJ1ZSk7CiAgICAgICAgIHNlbGVjdC0+c2Nyb2xs
VG9TZWxlY3Rpb24oKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bnNDb2xsZWN0aW9uLmNwcAppbmRleCBiMzZjM2Y0ODBjY2U1YzQ2NWIwZmVjZGZjOTE3ZWQxNDkx
MzA5ZGJhLi45ZjUzYmE2MWU5MDliNjhjZTJkODk3NWEyOWYzM2RjZjM3MWRhODJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCkBAIC0zOCw3ICsz
OCw5IEBAIFJlZjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+IEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6
Y3JlYXRlKEhUTUxTZWxlY3RFbGVtZW50JiBzZWxlCiAKIHZvaWQgSFRNTE9wdGlvbnNDb2xsZWN0
aW9uOjphZGQoSFRNTEVsZW1lbnQqIGVsZW1lbnQsIEhUTUxFbGVtZW50KiBiZWZvcmVFbGVtZW50
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBzZWxlY3RFbGVtZW50KCkuYWRkKGVsZW1lbnQs
IGJlZm9yZUVsZW1lbnQsIGVjKTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybjsK
KyAgICBzZWxlY3RFbGVtZW50KCkuYWRkKCplbGVtZW50LCBiZWZvcmVFbGVtZW50LCBlYyk7CiB9
CiAKIHZvaWQgSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjphZGQoSFRNTEVsZW1lbnQqIGVsZW1lbnQs
IGludCBiZWZvcmVJbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC01Myw3ICs1NSw5IEBAIHZv
aWQgSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1vdmUoaW50IGluZGV4KQogCiB2b2lkIEhUTUxP
cHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlKEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb24pCiB7Ci0g
ICAgc2VsZWN0RWxlbWVudCgpLnJlbW92ZShvcHRpb24pOworICAgIGlmICghb3B0aW9uKQorICAg
ICAgICByZXR1cm47CisgICAgc2VsZWN0RWxlbWVudCgpLnJlbW92ZSgqb3B0aW9uKTsKIH0KIAog
aW50IEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6c2VsZWN0ZWRJbmRleCgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaAppbmRleCA0OGYzNWVlY2VjOGM4
YWRmOGViMmU2Y2MxZTNhZjdhMDYzZjU2MzU0Li40ZmFlNzU5NjI3OThlODQ2M2ZkYTM4ZTMzN2Uz
NjM5MWRmZjA3NzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25z
Q29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0
aW9uLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNkZWZpbmUgSFRNTE9wdGlvbnNDb2xsZWN0aW9uX2gK
IAogI2luY2x1ZGUgIkNhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTE9wdGlv
bkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MU2VsZWN0RWxlbWVudC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4
IGE5NTgxZjYzZTE2MTE3ZjQ1YzZmYmZmMGM0NDA4ZDhhNzU5MjFhYmUuLjU5ZWU0YWE1ZWNjZWIx
YjRjMjQxYTgzNDAxNTE5NjNkOWFlNzM3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuY3BwCkBAIC0yMjAsMTkgKzIyMCwxNCBAQCBpbnQgSFRNTFNlbGVjdEVsZW1l
bnQ6OmFjdGl2ZVNlbGVjdGlvbkVuZExpc3RJbmRleCgpIGNvbnN0CiAgICAgcmV0dXJuIGxhc3RT
ZWxlY3RlZExpc3RJbmRleCgpOwogfQogCi12b2lkIEhUTUxTZWxlY3RFbGVtZW50OjphZGQoSFRN
TEVsZW1lbnQqIGVsZW1lbnQsIEhUTUxFbGVtZW50KiBiZWZvcmVFbGVtZW50LCBFeGNlcHRpb25D
b2RlJiBlYykKK3ZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmFkZChIVE1MRWxlbWVudCYgZWxlbWVu
dCwgSFRNTEVsZW1lbnQqIGJlZm9yZUVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAg
IGlmICghZWxlbWVudCB8fCAhKGlzPEhUTUxPcHRpb25FbGVtZW50PigqZWxlbWVudCkgfHwgZWxl
bWVudC0+aGFzVGFnTmFtZShoclRhZykgfHwgaXM8SFRNTE9wdEdyb3VwRWxlbWVudD4oKmVsZW1l
bnQpKSkKKyAgICBpZiAoIShpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkgfHwgZWxlbWVu
dC5oYXNUYWdOYW1lKGhyVGFnKSB8fCBpczxIVE1MT3B0R3JvdXBFbGVtZW50PihlbGVtZW50KSkp
CiAgICAgICAgIHJldHVybjsKLQotICAgIC8vIE1ha2Ugc3VyZSB0aGUgZWxlbWVudCBpcyByZWYn
ZCBhbmQgZGVyZWYnZCBzbyB3ZSBkb24ndCBsZWFrIGl0LgotICAgIFJlZjxIVE1MRWxlbWVudD4g
cHJvdGVjdE5ld0NoaWxkKCplbGVtZW50KTsKLQotICAgIGluc2VydEJlZm9yZSgqZWxlbWVudCwg
YmVmb3JlRWxlbWVudCwgZWMpOwotICAgIHVwZGF0ZVZhbGlkaXR5KCk7CisgICAgaW5zZXJ0QmVm
b3JlKGVsZW1lbnQsIGJlZm9yZUVsZW1lbnQsIGVjKTsKIH0KIAotdm9pZCBIVE1MU2VsZWN0RWxl
bWVudDo6YWRkKEhUTUxFbGVtZW50KiBlbGVtZW50LCBpbnQgYmVmb3JlSW5kZXgsIEV4Y2VwdGlv
bkNvZGUmIGVjKQordm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6YWRkKEhUTUxFbGVtZW50JiBlbGVt
ZW50LCBpbnQgYmVmb3JlSW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGFkZChlbGVt
ZW50LCBpdGVtKGJlZm9yZUluZGV4KSwgZWMpOwogfQpAQCAtMjQ2LDEyICsyNDEsMTIgQEAgdm9p
ZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVtb3ZlQnlJbmRleChpbnQgb3B0aW9uSW5kZXgpCiAgICAg
bGlzdEl0ZW1zKClbbGlzdEluZGV4XS0+cmVtb3ZlKElHTk9SRV9FWENFUFRJT04pOwogfQogCi12
b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpyZW1vdmUoSFRNTE9wdGlvbkVsZW1lbnQqIG9wdGlvbikK
K3ZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlbW92ZShIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9u
KQogewotICAgIGlmIChvcHRpb24tPm93bmVyU2VsZWN0RWxlbWVudCgpICE9IHRoaXMpCisgICAg
aWYgKG9wdGlvbi5vd25lclNlbGVjdEVsZW1lbnQoKSAhPSB0aGlzKQogICAgICAgICByZXR1cm47
CiAKLSAgICBvcHRpb24tPnJlbW92ZShJR05PUkVfRVhDRVBUSU9OKTsKKyAgICBvcHRpb24ucmVt
b3ZlKElHTk9SRV9FWENFUFRJT04pOwogfQogCiBTdHJpbmcgSFRNTFNlbGVjdEVsZW1lbnQ6OnZh
bHVlKCkgY29uc3QKQEAgLTQzNSw3ICs0MzAsNyBAQCBIVE1MT3B0aW9uRWxlbWVudCogSFRNTFNl
bGVjdEVsZW1lbnQ6Oml0ZW0odW5zaWduZWQgaW5kZXgpCiAgICAgcmV0dXJuIG9wdGlvbnMoKS0+
aXRlbShpbmRleCk7CiB9CiAKLXZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldE9wdGlvbih1bnNp
Z25lZCBpbmRleCwgSFRNTE9wdGlvbkVsZW1lbnQqIG9wdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRPcHRpb24odW5zaWduZWQgaW5kZXgsIEhUTUxP
cHRpb25FbGVtZW50JiBvcHRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gMDsK
ICAgICBpZiAoaW5kZXggPiBtYXhTZWxlY3RJdGVtcyAtIDEpCkBAIC00NTMsMjIgKzQ0OCwyMSBA
QCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRPcHRpb24odW5zaWduZWQgaW5kZXgsIEhUTUxP
cHRpb25FbGVtZW50KiBvcHRpb24sIEV4YwogICAgIC8vIEZpbmFsbHkgYWRkIHRoZSBuZXcgZWxl
bWVudC4KICAgICBpZiAoIWVjKSB7CiAgICAgICAgIGFkZChvcHRpb24sIGJlZm9yZS5nZXQoKSwg
ZWMpOwotICAgICAgICBpZiAoZGlmZiA+PSAwICYmIG9wdGlvbi0+c2VsZWN0ZWQoKSkKKyAgICAg
ICAgaWYgKGRpZmYgPj0gMCAmJiBvcHRpb24uc2VsZWN0ZWQoKSkKICAgICAgICAgICAgIG9wdGlv
blNlbGVjdGlvblN0YXRlQ2hhbmdlZChvcHRpb24sIHRydWUpOwogICAgIH0KIH0KIAotdm9pZCBI
VE1MU2VsZWN0RWxlbWVudDo6c2V0TGVuZ3RoKHVuc2lnbmVkIG5ld0xlbiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRMZW5ndGgodW5zaWduZWQgbmV3TGVu
Z3RoLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBlYyA9IDA7Ci0gICAgaWYgKG5ld0xlbiA+
IG1heFNlbGVjdEl0ZW1zKQotICAgICAgICBuZXdMZW4gPSBtYXhTZWxlY3RJdGVtczsKLSAgICBp
bnQgZGlmZiA9IGxlbmd0aCgpIC0gbmV3TGVuOworICAgIGlmIChuZXdMZW5ndGggPiBtYXhTZWxl
Y3RJdGVtcykKKyAgICAgICAgbmV3TGVuZ3RoID0gbWF4U2VsZWN0SXRlbXM7CisgICAgaW50IGRp
ZmYgPSBsZW5ndGgoKSAtIG5ld0xlbmd0aDsKIAogICAgIGlmIChkaWZmIDwgMCkgeyAvLyBBZGQg
ZHVtbXkgZWxlbWVudHMuCiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50
PiBvcHRpb24gPSBkb2N1bWVudCgpLmNyZWF0ZUVsZW1lbnQob3B0aW9uVGFnLCBmYWxzZSk7Ci0g
ICAgICAgICAgICBBU1NFUlQob3B0aW9uKTsKKyAgICAgICAgICAgIGF1dG8gb3B0aW9uID0gZG9j
dW1lbnQoKS5jcmVhdGVFbGVtZW50KG9wdGlvblRhZywgZmFsc2UpOwogICAgICAgICAgICAgYWRk
KGRvd25jYXN0PEhUTUxFbGVtZW50PihvcHRpb24uZ2V0KCkpLCBudWxscHRyLCBlYyk7CiAgICAg
ICAgICAgICBpZiAoZWMpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC00ODEsNyArNDc1LDcg
QEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0TGVuZ3RoKHVuc2lnbmVkIG5ld0xlbiwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IGl0ZW1zVG9SZW1v
dmU7CiAgICAgICAgIHNpemVfdCBvcHRpb25JbmRleCA9IDA7CiAgICAgICAgIGZvciAoYXV0byYg
aXRlbSA6IGl0ZW1zKSB7Ci0gICAgICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KCpp
dGVtKSAmJiBvcHRpb25JbmRleCsrID49IG5ld0xlbikgeworICAgICAgICAgICAgaWYgKGlzPEhU
TUxPcHRpb25FbGVtZW50PigqaXRlbSkgJiYgb3B0aW9uSW5kZXgrKyA+PSBuZXdMZW5ndGgpIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoaXRlbS0+cGFyZW50Tm9kZSgpKTsKICAgICAgICAgICAg
ICAgICBpdGVtc1RvUmVtb3ZlLmFwcGVuZCgqaXRlbSk7CiAgICAgICAgICAgICB9CkBAIC01MDAs
MTIgKzQ5NCwxNCBAQCBib29sIEhUTUxTZWxlY3RFbGVtZW50Ojppc1JlcXVpcmVkRm9ybUNvbnRy
b2woKSBjb25zdAogICAgIHJldHVybiBpc1JlcXVpcmVkKCk7CiB9CiAKLSNpZiBQTEFURk9STShJ
T1MpCiBib29sIEhUTUxTZWxlY3RFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50
cygpCiB7CisjaWYgUExBVEZPUk0oSU9TKQogICAgIHJldHVybiAhaXNEaXNhYmxlZEZvcm1Db250
cm9sKCk7Ci19CisjZWxzZQorICAgIHJldHVybiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0
YXRlOjp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpOwogI2VuZGlmCit9CiAKIC8vIFJl
dHVybnMgdGhlIDFzdCB2YWxpZCBpdGVtIHxza2lwfCBpdGVtcyBmcm9tIHxsaXN0SW5kZXh8IGlu
IGRpcmVjdGlvbiB8ZGlyZWN0aW9ufCBpZiB0aGVyZSBpcyBvbmUuCiAvLyBPdGhlcndpc2UsIGl0
IHJldHVybnMgdGhlIHZhbGlkIGl0ZW0gY2xvc2VzdCB0byB0aGF0IGJvdW5kYXJ5IHdoaWNoIGlz
IHBhc3QgfGxpc3RJbmRleHwgaWYgdGhlcmUgaXMgb25lLgpAQCAtODQ1LDExICs4NDEsMTEgQEAg
dm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0U2VsZWN0ZWRJbmRleChpbnQgaW5kZXgpCiAgICAg
c2VsZWN0T3B0aW9uKGluZGV4LCBEZXNlbGVjdE90aGVyT3B0aW9ucyk7CiB9CiAKLXZvaWQgSFRN
TFNlbGVjdEVsZW1lbnQ6Om9wdGlvblNlbGVjdGlvblN0YXRlQ2hhbmdlZChIVE1MT3B0aW9uRWxl
bWVudCogb3B0aW9uLCBib29sIG9wdGlvbklzU2VsZWN0ZWQpCit2b2lkIEhUTUxTZWxlY3RFbGVt
ZW50OjpvcHRpb25TZWxlY3Rpb25TdGF0ZUNoYW5nZWQoSFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlv
biwgYm9vbCBvcHRpb25Jc1NlbGVjdGVkKQogewotICAgIEFTU0VSVChvcHRpb24tPm93bmVyU2Vs
ZWN0RWxlbWVudCgpID09IHRoaXMpOworICAgIEFTU0VSVChvcHRpb24ub3duZXJTZWxlY3RFbGVt
ZW50KCkgPT0gdGhpcyk7CiAgICAgaWYgKG9wdGlvbklzU2VsZWN0ZWQpCi0gICAgICAgIHNlbGVj
dE9wdGlvbihvcHRpb24tPmluZGV4KCkpOworICAgICAgICBzZWxlY3RPcHRpb24ob3B0aW9uLmlu
ZGV4KCkpOwogICAgIGVsc2UgaWYgKCF1c2VzTWVudUxpc3QoKSkKICAgICAgICAgc2VsZWN0T3B0
aW9uKC0xKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
ZWxlY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgK
aW5kZXggNzhkM2Q4YmI0ZjVmMWYzYTI0MDc4MjQ0MWJmMjc5ZjAwN2FiNzhhYS4uOWUzN2YxNTQ4
MzVmNjQ4ZDFhYWE5MDg5MDY4MDNmM2UzMGVkNmMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFNlbGVjdEVsZW1lbnQuaApAQCAtMjYsMTcgKzI2LDE0IEBACiAjaWZuZGVmIEhUTUxTZWxlY3RF
bGVtZW50X2gKICNkZWZpbmUgSFRNTFNlbGVjdEVsZW1lbnRfaAogCi0jaW5jbHVkZSAiRXZlbnQu
aCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmgiCi0jaW5jbHVk
ZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJUeXBlQWhlYWQuaCIKLSNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTE9wdGlv
bnNDb2xsZWN0aW9uOwogCi1jbGFzcyBIVE1MU2VsZWN0RWxlbWVudCA6IHB1YmxpYyBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLCBwdWJsaWMgVHlwZUFoZWFkRGF0YVNvdXJjZSB7Citj
bGFzcyBIVE1MU2VsZWN0RWxlbWVudCA6IHB1YmxpYyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0
aFN0YXRlLCBwcml2YXRlIFR5cGVBaGVhZERhdGFTb3VyY2UgewogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8SFRNTFNlbGVjdEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqKTsKIApAQCAtNDUsOSArNDIsOCBAQCBwdWJsaWM6CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9wdGlvblNlbGVjdGVkQnlVc2VyKGludCBpbmRleCwg
Ym9vbCBkaXNwYXRjaENoYW5nZUV2ZW50LCBib29sIGFsbG93TXVsdGlwbGVTZWxlY3Rpb24gPSBm
YWxzZSk7CiAKLSAgICAvLyBGb3IgVmFsaWRpdHlTdGF0ZQotICAgIFN0cmluZyB2YWxpZGF0aW9u
TWVzc2FnZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgdmFsdWVNaXNzaW5nKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QgZmluYWw7Cisg
ICAgYm9vbCB2YWx1ZU1pc3NpbmcoKSBjb25zdCBmaW5hbDsKIAogICAgIHVuc2lnbmVkIGxlbmd0
aCgpIGNvbnN0OwogCkBAIC01NiwxNCArNTIsMTQgQEAgcHVibGljOgogCiAgICAgYm9vbCB1c2Vz
TWVudUxpc3QoKSBjb25zdDsKIAotICAgIHZvaWQgYWRkKEhUTUxFbGVtZW50KiwgSFRNTEVsZW1l
bnQqIGJlZm9yZUVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGFkZChIVE1MRWxl
bWVudCosIGludCBiZWZvcmVJbmRleCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgYWRkKEhU
TUxFbGVtZW50JiwgSFRNTEVsZW1lbnQqIGJlZm9yZUVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2b2lkIGFkZChIVE1MRWxlbWVudCYsIGludCBiZWZvcmVJbmRleCwgRXhjZXB0aW9uQ29k
ZSYpOwogCiAgICAgdXNpbmcgTm9kZTo6cmVtb3ZlOwotICAgIC8vIFNob3VsZCBiZSByZW1vdmUo
aW50KSBidXQgaXQgY29uZmxpY3RzIHdpdGggTm9kZTo6cmVtb3ZlKEV4Y2VwdGlvbkNvZGUmKS4K
LSAgICB2b2lkIHJlbW92ZUJ5SW5kZXgoaW50KTsKLSAgICB2b2lkIHJlbW92ZShIVE1MT3B0aW9u
RWxlbWVudCopOworICAgIHZvaWQgcmVtb3ZlKEhUTUxPcHRpb25FbGVtZW50Jik7CisgICAgdm9p
ZCByZW1vdmVCeUluZGV4KGludCk7IC8vIFNob3VsZCBiZSByZW1vdmUoaW50KSBidXQgdGhhdCBj
b25mbGljdHMgd2l0aCBOb2RlOjpyZW1vdmUoRXhjZXB0aW9uQ29kZSYpLgogCitwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHZhbHVlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRWYWx1
ZShjb25zdCBTdHJpbmcmKTsKIApAQCAtNzgsMTQgKzc0LDE0IEBAIHB1YmxpYzoKIAogICAgIFdF
QkNPUkVfRVhQT1JUIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMoKSBjb25z
dDsKIAotICAgIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykgZmlu
YWw7CiAgICAgdm9pZCBhY2Nlc3NLZXlTZXRTZWxlY3RlZEluZGV4KGludCk7CiAKICAgICB2b2lk
IHNldE11bHRpcGxlKGJvb2wpOwogCiAgICAgdm9pZCBzZXRTaXplKHVuc2lnbmVkKTsKIAotICAg
IHZvaWQgc2V0T3B0aW9uKHVuc2lnbmVkIGluZGV4LCBIVE1MT3B0aW9uRWxlbWVudCosIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldE9wdGlvbih1bnNpZ25lZCBpbmRleCwgSFRNTE9wdGlv
bkVsZW1lbnQmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRMZW5ndGgodW5zaWduZWQs
IEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIEhUTUxPcHRpb25FbGVtZW50KiBuYW1lZEl0ZW0oY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKQEAgLTk1LDEwICs5MSw2IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgbGlzdEJveFNlbGVjdEl0ZW0oaW50IGxpc3RJbmRleCwgYm9vbCBhbGxvd011bHRpcGx5
U2VsZWN0aW9ucywgYm9vbCBzaGlmdCwgYm9vbCBmaXJlT25DaGFuZ2VOb3cgPSB0cnVlKTsKIAot
I2lmIFBMQVRGT1JNKElPUykKLSAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRz
KCkgb3ZlcnJpZGU7Ci0jZW5kaWYKLQogICAgIGJvb2wgY2FuU2VsZWN0QWxsKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZWxlY3RBbGwoKTsKICAgICBpbnQgbGlzdFRvT3B0aW9uSW5kZXgoaW50IGxpc3RJ
bmRleCkgY29uc3Q7CkBAIC0xMDksNDMgKzEwMSw0NCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRB
Y3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleChpbnQpOwogICAgIHZvaWQgc2V0QWN0aXZlU2VsZWN0
aW9uRW5kSW5kZXgoaW50KTsKICAgICB2b2lkIHVwZGF0ZUxpc3RCb3hTZWxlY3Rpb24oYm9vbCBk
ZXNlbGVjdE90aGVyT3B0aW9ucyk7Ci0gICAgCisKICAgICAvLyBGb3IgdXNlIGluIHRoZSBpbXBs
ZW1lbnRhdGlvbiBvZiBIVE1MT3B0aW9uRWxlbWVudC4KLSAgICB2b2lkIG9wdGlvblNlbGVjdGlv
blN0YXRlQ2hhbmdlZChIVE1MT3B0aW9uRWxlbWVudCosIGJvb2wgb3B0aW9uSXNTZWxlY3RlZCk7
CisgICAgdm9pZCBvcHRpb25TZWxlY3Rpb25TdGF0ZUNoYW5nZWQoSFRNTE9wdGlvbkVsZW1lbnQm
LCBib29sIG9wdGlvbklzU2VsZWN0ZWQpOwogICAgIGJvb2wgYWxsb3dzTm9uQ29udGlndW91c1Nl
bGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzTm9uQ29udGlndW91c1NlbGVjdGlvbjsg
fTsKIAogcHJvdGVjdGVkOgogICAgIEhUTUxTZWxlY3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCopOwogCiBwcml2YXRlOgotICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBmaW5hbDsKICAgICAKLSAg
ICBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IG92ZXJyaWRl
OwotICAgIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
aXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3QgZmluYWw7CisgICAgYm9v
bCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIGRpc3BhdGNoRm9j
dXNFdmVudChSZWZQdHI8RWxlbWVudD4mJiBvbGRGb2N1c2VkRWxlbWVudCwgRm9jdXNEaXJlY3Rp
b24pIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYg
bmV3Rm9jdXNlZEVsZW1lbnQpIGZpbmFsOwogICAgIAotICAgIGJvb2wgY2FuU3RhcnRTZWxlY3Rp
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuU3RhcnRT
ZWxlY3Rpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgYm9vbCBjYW5I
YXZlVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAot
ICAgIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
Ci0gICAgYm9vbCBzdXBwb3J0TGFiZWxzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CisgICAgYm9vbCBzdXBwb3J0TGFiZWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQog
Ci0gICAgRm9ybUNvbnRyb2xTdGF0ZSBzYXZlRm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZvaWQgcmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xT
dGF0ZSYpIG92ZXJyaWRlOworICAgIEZvcm1Db250cm9sU3RhdGUgc2F2ZUZvcm1Db250cm9sU3Rh
dGUoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKGNvbnN0
IEZvcm1Db250cm9sU3RhdGUmKSBmaW5hbDsKIAotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwotICAgIGJv
b2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOworICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IGZpbmFsOwogCi0gICAgYm9vbCBjaGlsZFNo
b3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHls
ZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBhcHBl
bmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sKSBvdmVycmlkZTsKKyAgICBib29sIGNoaWxk
U2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IGZpbmFsOworICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxl
PiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKKyAgICBib29sIGFwcGVuZEZv
cm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpIGZpbmFsOwogCi0gICAgdm9pZCByZXNldCgpIG92
ZXJyaWRlOworICAgIHZvaWQgcmVzZXQoKSBmaW5hbDsKIAotICAgIHZvaWQgZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOworICAgIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCopIGZpbmFsOworICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBm
aW5hbDsKIAogICAgIHZvaWQgZGlzcGF0Y2hDaGFuZ2VFdmVudEZvck1lbnVMaXN0KCk7CiAKQEAg
LTE1MywxNCArMTQ2LDE0IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlY2FsY0xpc3RJdGVtcyhi
b29sIHVwZGF0ZVNlbGVjdGVkU3RhdGVzID0gdHJ1ZSkgY29uc3Q7CiAKLSAgICB2b2lkIGRlc2Vs
ZWN0SXRlbXMoSFRNTE9wdGlvbkVsZW1lbnQqIGV4Y2x1ZGVFbGVtZW50ID0gMCk7CisgICAgdm9p
ZCBkZXNlbGVjdEl0ZW1zKEhUTUxPcHRpb25FbGVtZW50KiBleGNsdWRlRWxlbWVudCA9IG51bGxw
dHIpOwogICAgIHZvaWQgdHlwZUFoZWFkRmluZChLZXlib2FyZEV2ZW50Jik7CiAgICAgdm9pZCBz
YXZlTGFzdFNlbGVjdGlvbigpOwogCi0gICAgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBp
bnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOworICAgIEluc2VydGlvbk5vdGlm
aWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBmaW5hbDsKIAotICAg
IGJvb2wgaXNPcHRpb25hbEZvcm1Db250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIWlz
UmVxdWlyZWRGb3JtQ29udHJvbCgpOyB9Ci0gICAgYm9vbCBpc1JlcXVpcmVkRm9ybUNvbnRyb2wo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzT3B0aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICFpc1JlcXVpcmVkRm9ybUNvbnRyb2woKTsgfQorICAgIGJvb2wgaXNS
ZXF1aXJlZEZvcm1Db250cm9sKCkgY29uc3QgZmluYWw7CiAKICAgICBib29sIGhhc1BsYWNlaG9s
ZGVyTGFiZWxPcHRpb24oKSBjb25zdDsKIApAQCAtMTcxLDcgKzE2NCw3IEBAIHByaXZhdGU6CiAg
ICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIFNlbGVjdE9wdGlvbkZsYWdzOwogICAgIHZvaWQg
c2VsZWN0T3B0aW9uKGludCBvcHRpb25JbmRleCwgU2VsZWN0T3B0aW9uRmxhZ3MgPSAwKTsKLSAg
ICB2b2lkIGRlc2VsZWN0SXRlbXNXaXRob3V0VmFsaWRhdGlvbihIVE1MRWxlbWVudCogZWxlbWVu
dFRvRXhjbHVkZSA9IDApOworICAgIHZvaWQgZGVzZWxlY3RJdGVtc1dpdGhvdXRWYWxpZGF0aW9u
KEhUTUxFbGVtZW50KiBlbGVtZW50VG9FeGNsdWRlID0gbnVsbHB0cik7CiAgICAgdm9pZCBwYXJz
ZU11bHRpcGxlQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIGludCBsYXN0U2Vs
ZWN0ZWRMaXN0SW5kZXgoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZVNlbGVjdGVkU3RhdGUoaW50
IGxpc3RJbmRleCwgYm9vbCBtdWx0aSwgYm9vbCBzaGlmdCk7CkBAIC0xODEsMTAgKzE3NCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVyZXIoKTsKICAgICBz
aXplX3Qgc2VhcmNoT3B0aW9uc0ZvclZhbHVlKGNvbnN0IFN0cmluZyYsIHNpemVfdCBsaXN0SW5k
ZXhTdGFydCwgc2l6ZV90IGxpc3RJbmRleEVuZCkgY29uc3Q7CiAKLSAgICBlbnVtIFNraXBEaXJl
Y3Rpb24gewotICAgICAgICBTa2lwQmFja3dhcmRzID0gLTEsCi0gICAgICAgIFNraXBGb3J3YXJk
cyA9IDEKLSAgICB9OworICAgIGVudW0gU2tpcERpcmVjdGlvbiB7IFNraXBCYWNrd2FyZHMgPSAt
MSwgU2tpcEZvcndhcmRzID0gMSB9OwogICAgIGludCBuZXh0VmFsaWRJbmRleChpbnQgbGlzdElu
ZGV4LCBTa2lwRGlyZWN0aW9uLCBpbnQgc2tpcCkgY29uc3Q7CiAgICAgaW50IG5leHRTZWxlY3Rh
YmxlTGlzdEluZGV4KGludCBzdGFydEluZGV4KSBjb25zdDsKICAgICBpbnQgcHJldmlvdXNTZWxl
Y3RhYmxlTGlzdEluZGV4KGludCBzdGFydEluZGV4KSBjb25zdDsKQEAgLTE5MiwxMiArMTgyLDEz
IEBAIHByaXZhdGU6CiAgICAgaW50IGxhc3RTZWxlY3RhYmxlTGlzdEluZGV4KCkgY29uc3Q7CiAg
ICAgaW50IG5leHRTZWxlY3RhYmxlTGlzdEluZGV4UGFnZUF3YXkoaW50IHN0YXJ0SW5kZXgsIFNr
aXBEaXJlY3Rpb24pIGNvbnN0OwogCi0gICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hp
bGRDaGFuZ2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGls
ZENoYW5nZSYpIGZpbmFsOwogCiAgICAgLy8gVHlwZUFoZWFkRGF0YVNvdXJjZSBmdW5jdGlvbnMu
Ci0gICAgaW50IGluZGV4T2ZTZWxlY3RlZE9wdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIGlu
dCBvcHRpb25Db3VudCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIFN0cmluZyBvcHRpb25BdEluZGV4
KGludCBpbmRleCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IGluZGV4T2ZTZWxlY3RlZE9wdGlv
bigpIGNvbnN0IGZpbmFsOworICAgIGludCBvcHRpb25Db3VudCgpIGNvbnN0IGZpbmFsOworICAg
IFN0cmluZyBvcHRpb25BdEluZGV4KGludCBpbmRleCkgY29uc3QgZmluYWw7CisKIAogICAgIC8v
IG1fbGlzdEl0ZW1zIGNvbnRhaW5zIEhUTUxPcHRpb25FbGVtZW50LCBIVE1MT3B0R3JvdXBFbGVt
ZW50LCBhbmQgSFRNTEhSRWxlbWVudCBvYmplY3RzLgogICAgIG11dGFibGUgVmVjdG9yPEhUTUxF
bGVtZW50Kj4gbV9saXN0SXRlbXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTZWxlY3RFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuaWRsCmluZGV4IDVhMWQ5Nzc5YTRlMWJlOTY2YWExMzc5ZDA1OWFhMzFjODIxMjlmYzAuLmIz
NTQwOTZjNTAwNDgwNDdkMDcwNTIxNjRmNzQ4MzUxMGJiNmVhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsCkBAIC0yMCw3ICsyMCw2IEBACiAKIFsKICAgICBD
dXN0b21JbmRleGVkU2V0dGVyLAotICAgIFVzZVBvaW50ZXJzRXZlbkZvck5vbk51bGxhYmxlT2Jq
ZWN0QXJndW1lbnRzLAogXSBpbnRlcmZhY2UgSFRNTFNlbGVjdEVsZW1lbnQgOiBIVE1MRWxlbWVu
dCB7CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBib29sZWFuIGF1dG9mb2N1czsKICAgICBbUmVm
bGVjdF0gYXR0cmlidXRlIGJvb2xlYW4gZGlzYWJsZWQ7CkBAIC0zOSw4ICszOCw2IEBACiAKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTE9wdGlvbnNDb2xsZWN0aW9uIG9wdGlvbnM7CiAjaWYg
ZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgJiYgTEFOR1VBR0VfT0JKRUNUSVZFX0MKLSAg
ICAvLyBET00gTGV2ZWwgMiBjaGFuZ2VzIHR5cGUgb2YgbGVuZ3RoIGF0dHJpYnV0ZSB0byB1bnNp
Z25lZCBsb25nLCAKLSAgICAvLyBmb3IgY29tcGF0aWJpbGl0eSB3ZSBrZWVwIERPTSBMZXZlbCAx
IGRlZmluaXRpb24uCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgbGVuZ3RoOwogI2Vsc2UK
ICAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5n
dGg7CkBAIC02Myw2ICs2MCw3IEBACiAjZWxzZQogICAgIFtJbXBsZW1lbnRlZEFzPXJlbW92ZUJ5
SW5kZXhdIHZvaWQgcmVtb3ZlKGxvbmcgaW5kZXgpOwogI2VuZGlmCisKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgSFRNTENvbGxlY3Rpb24gc2VsZWN0ZWRPcHRpb25zOwogICAgIGF0dHJpYnV0ZSBs
b25nIHNlbGVjdGVkSW5kZXg7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbQppbmRleCBkZTM5NGE5
Yjg2MDQ1NzU0YmYxMGU2NzU1ODIxOTQxYjJkYjZlMzYzLi40N2JhOWMyOTM1MTg0YTU1ODBkOWU2
NzVjNzI1ZWMyN2FjYmYzYTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tCkBAIC0zNyw3ICsz
Nyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NTU1ByaW1pdGl2ZVZhbHVlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0NTU1Byb3BlcnR5TmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvSFRNTEVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRXZlbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTElucHV0RWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTE9wdGlvbkVsZW1lbnQuaD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276118</attachid>
            <date>2016-04-10 18:52:03 -0700</date>
            <delta_ts>2016-04-11 20:07:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156458-20160410185210.patch</filename>
            <type>text/plain</type>
            <size>36614</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5Mjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTViMjJmYWY4YzVmZWYw
OGEzOGVkYjk1YzM4ZmM0MTI4YTRkMjcwNC4uN2I4MjNjYzgxMmUxZGI5MGFmMTdiZDgxMGVlM2Ri
NTc4ZGE0NTdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE2LTA0LTEwICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgVXNlUG9pbnRlcnNF
dmVuRm9yTm9uTnVsbGFibGVPYmplY3RBcmd1bWVudHMgZnJvbSBIVE1MU2VsZWN0RWxlbWVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NDU4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
SFRNTFNlbGVjdEVsZW1lbnQ6OnJlbW92ZSk6IFVwZGF0ZWQgdG8gY2FsbCByZW1vdmUgd2l0aCBh
IHJlZmVyZW5jZQorICAgICAgICByYXRoZXIgdGhhbiBhIHBvaW50ZXIuCisgICAgICAgIChXZWJD
b3JlOjpzZWxlY3RJbmRleFNldHRlcik6IFVwZGF0ZWQgdG8gY2FsbCBzZXRPcHRpb24gd2l0aCBh
IHJlZmVyZW5jZSByYXRoZXIKKyAgICAgICAgdGhhbiBhIHBvaW50ZXIuCisKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtOgorICAgICAgICAoR2VuZXJh
dGVGdW5jdGlvbik6IEFkZGVkIGJhc2ljIHN1cHBvcnQgZm9yIHBhc3Npbmcgd3JhcHBlcnMgYnkg
cmVmZXJlbmNlLgorICAgICAgICBHT2JqZWN0IGJpbmRpbmdzIGFscmVhZHkgY2hlY2sgYXJndW1l
bnRzIGZvciBudWxsLCBzbyBkaWRuJ3QgYWRkIGFueSBuZXcgY2hlY2tzLgorCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVj
dC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdENhbGxiYWNrLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHA6Cisg
ICAgICAgIFVwZGF0ZWQuCisKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDog
VXBkYXRlZCBpbmNsdWRlcy4KKworICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OnNldFNlbGVjdGVkKTogUGFz
cyByZWZlcmVuY2Ugd2hlbiBjYWxsaW5nCisgICAgICAgIEhUTUxTZWxlY3RFbGVtZW50OjpvcHRp
b25TZWxlY3Rpb25TdGF0ZUNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvKTogRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25z
Q29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uc0NvbGxlY3Rpb246
OmFkZCk6IE1vdmVkIG51bGwgY2hlY2tpbmcgYmVoYXZpb3IgaGVyZS4KKyAgICAgICAgUHJlc2Vy
dmVzIGV4aXN0aW5nICJzaWxlbnRseSBkbyBub3RoaW5nIGlmIG51bGwiLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1vdmUpOiBEaXR0by4KKworICAgICAgICAq
IGh0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmg6IFVwZGF0ZWQgaW5jbHVkZS4KKworICAgICAg
ICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNl
bGVjdEVsZW1lbnQ6OmFkZCk6IENoYW5nZWQgdG8gdGFrZSBhIHJlZmVyZW5jZSBpbnN0ZWFkIG9m
CisgICAgICAgIGEgcG9pbnRlci4gQWxzbyByZW1vdmVkIHVubmVlZGVkIHByb3RlY3QgY29kZSwg
c2luY2UgaW5zZXJ0QmVmb3JlIGFscmVhZHkKKyAgICAgICAgcHJvdGVjdHMgaXRzZWxmLCBhbmQg
dW5uZWVkZWQgY2FsbCB0byB1cGRhdGVWYWxpZGl0eSwgc2luY2UgdXBkYXRlQ2hpbGRyZW4KKyAg
ICAgICAgYWxyZWFkeSBjYWxscyB1cGRhdGVWYWxpZGl0eS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTZWxlY3RFbGVtZW50OjpyZW1vdmUpOiBDaGFuZ2VkIHRvIHRha2UgYSByZWZlcmVuY2UgaW5z
dGVhZAorICAgICAgICBvZiBhIHBvaW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6c2V0T3B0aW9uKTogQ2hhbmdlZCB0byB0YWtlIGEgcmVmZXJlbmNlCisgICAgICAg
IGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1l
bnQ6OnNldExlbmd0aCk6IFJlbmFtZWQgIm5ld0xlbiIgdG8gIm5ld0xlbmd0aCIuCisgICAgICAg
IFVzZSBSZWYgaW5zdGVhZCBvZiBSZWZQdHIgZm9yIHJlc3VsdCBvZiBjcmVhdGVFbGVtZW50LCB3
aGljaCBtYWtlcyB0aGUKKyAgICAgICAgYXJndW1lbnQgcGFzc2VkIHRvIGFkZCBiZSBhIHJlZmVy
ZW5jZSByYXRoZXIgdGhhbiBhIHBvaW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMpOiBQdXQgdGhlICNpZgorICAg
ICAgICBmb3IgdGhpcyBoZXJlIGluc3RlYWQgb2YgaW4gdGhlIGhlYWRlci4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpvcHRpb25TZWxlY3Rpb25TdGF0ZUNoYW5nZWQpOiBD
aGFuZ2VkIHRvIHRha2UKKyAgICAgICAgYSByZWZlcmVuY2UgaW5zdGVhZCBvZiBhIHBvaW50ZXIg
Zm9yIHRoZSBvcHRpb24gZWxlbWVudC4KKworICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4gRGVyaXZlIHByaXZhdGVseQorICAgICAg
ICBmcm9tIFR5cGVBaGVhZERhdGFTb3VyY2UgaW5zdGVhZCBvZiBwdWJsaWNseS4gTWFrZSBhbGwg
b3ZlcnJpZGVzIGZpbmFsCisgICAgICAgIGV4Y2VwdCBmb3IgdGhlIG9uZSB0aGF0IGlzIGFjdHVh
bGx5IG92ZXJyaWRkZW4gYnkgYSBkZXJpdmVkIGNsYXNzLgorICAgICAgICBDaGFuZ2VkIHRoZSBh
cmd1bWVudHMgb2YgdGhlIGFkZCwgcmVtb3ZlLCBzZXRPcHRpb24sIGFuZAorICAgICAgICBvcHRp
b25TZWxlY3Rpb25TdGF0ZUNoYW5nZWQgZnVuY3Rpb25zIHRvIGJlIHJlZmVyZW5jZXMgaW5zdGVh
ZCBvZiBwb2ludGVycy4KKyAgICAgICAgVHdlYWtlZCBmb3JtYXR0aW5nIGEgYml0IGFuZCB1c2Vk
IG51bGxwdHIgaW5zdGVhZCBvZiAwLiBPdmVycmlkZQorICAgICAgICB3aWxsUmVzcG9uZFRvTW91
c2VDbGlja0V2ZW50cyBvbiBhbGwgcGxhdGZvcm1zLCBub3QganVzdCBpT1MuCisKKyAgICAgICAg
KiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbDogUmVtb3ZlZCBVc2VQb2ludGVyc0V2ZW5Gb3JO
b25OdWxsYWJsZU9iamVjdEFyZ3VtZW50cy4KKyAgICAgICAgQWxzbyByZW1vdmVkIGEgY29tbWVu
dCB0aGF0IGlzIG5vIGxvbmdlciBuZWVkZWQuCisKIDIwMTYtMDQtMTAgIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggdGhlIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDg4
YmE5M2IwMDFjMTFkNDYwNzdlNDFjNjU1YmE0ZmNkZWQwNzc4Y2IuLjkzZGFjMjEzYjZjNGFlYzc2
ZWYwMjk0OGFkOWFkOThiZjAyODdjZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAx
Ni0wNC0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
IFVzZVBvaW50ZXJzRXZlbkZvck5vbk51bGxhYmxlT2JqZWN0QXJndW1lbnRzIGZyb20gSFRNTFNl
bGVjdEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NjQ1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tOiBVcGRh
dGVkIGluY2x1ZGVzLgorCiAyMDE2LTA0LTA4ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIGN1c3RvbSB0YXJnZXQgcGlja2VyIGFjdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVs
ZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0
RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggMzBlM2ViYmI4OWE0ZWYyM2E1OTY5NGMzYWJlZTU3YTgw
YTYyMzFlNy4uZjcxMDkzNDM3MDBlZDczMWQ3ODJlYjc0ZGE4MTA2M2UxOWRmMjgxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVu
dEN1c3RvbS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgSlNWYWx1ZSBKU0hUTUxTZWxlY3RFbGVtZW50
OjpyZW1vdmUoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9IGVsc2UgewogICAgICAgICAvLyBUaGUg
SFRNTFNlbGVjdEVsZW1lbnQ6OnJlbW92ZSgpIGZ1bmN0aW9uIGNhbiB0YWtlIGVpdGhlciBhbiBv
cHRpb24gb2JqZWN0IG9yIHRoZSBpbmRleCBvZiBhbiBvcHRpb24uCiAgICAgICAgIGlmIChIVE1M
T3B0aW9uRWxlbWVudCogb3B0aW9uID0gSlNIVE1MT3B0aW9uRWxlbWVudDo6dG9XcmFwcGVkKHN0
YXRlLmFyZ3VtZW50KDApKSkKLSAgICAgICAgICAgIHNlbGVjdC5yZW1vdmUob3B0aW9uKTsKKyAg
ICAgICAgICAgIHNlbGVjdC5yZW1vdmUoKm9wdGlvbik7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHNlbGVjdC5yZW1vdmVCeUluZGV4KHN0YXRlLmFyZ3VtZW50KDApLnRvSW50MzIoJnN0YXRl
KSk7CiAgICAgfQpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIHNlbGVjdEluZGV4U2V0dGVyKEhUTUxT
ZWxlY3RFbGVtZW50KiBzZWxlY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZAogICAg
ICAgICBpZiAoIW9wdGlvbikKICAgICAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNlbGVjdC0+c2V0T3B0aW9uKGluZGV4LCBvcHRpb24s
IGVjKTsKKyAgICAgICAgICAgIHNlbGVjdC0+c2V0T3B0aW9uKGluZGV4LCAqb3B0aW9uLCBlYyk7
CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5w
bSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3Qu
cG0KaW5kZXggZmUyZjhlNzUyMjMwNjIzNTIwNzA0ODBlYzM3YzA5YmVmZDk2OGU3NS4uOWNkNWFk
NzkxZGVlMzE1YWZjNzRjYjJjMjA2OTU0OTY5MmUyMDUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCkBAIC0x
MTA5LDYgKzExMDksOSBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbiB7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKCRwYXJhbUlzR0RPTVR5cGUgfHwgKCRwYXJhbUlETFR5cGUgZXEgIkRPTVN0cmluZyIp
KSB7CiAgICAgICAgICAgICAkcGFyYW1OYW1lID0gImNvbnZlcnRlZCIgLiAkY29kZUdlbmVyYXRv
ci0+V0tfdWNmaXJzdCgkcGFyYW1OYW1lKTsKKyAgICAgICAgICAgIGlmICgkcHJlZml4IG5lICJz
ZXRfIiAmJiAkY29kZUdlbmVyYXRvci0+U2hvdWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZSgkcGFy
YW0sICRwYXJlbnROb2RlKSkgeworICAgICAgICAgICAgICAgICRwYXJhbU5hbWUgPSAiKiRwYXJh
bU5hbWUiOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmICgkcGFyYW1JRExU
eXBlIGVxICJOb2RlRmlsdGVyIiB8fCAkcGFyYW1JRExUeXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIi
KSB7CiAgICAgICAgICAgICAkcGFyYW1OYW1lID0gIldURjo6Z2V0UHRyKCIgLiAkcGFyYW1OYW1l
IC4gIikiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0QWN0aXZlRE9NT2Jq
ZWN0LmNwcAppbmRleCA3YTZhNTk3YjVlNWRmODdhYTk5YjI3MmZkYzU4NjI0ZjIwOTRkZGNkLi42
OWY4ODYzMzZlNjYxMGI2Mjc4ZjQ0MWFmMGE2M2ZiOTE1MzE2ZTUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0QWN0
aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMTQxLDcgKzE0
MSw3IEBAIHZvaWQgd2Via2l0X2RvbV90ZXN0X2FjdGl2ZV9kb21fb2JqZWN0X2V4Y2l0aW5nX2Z1
bmN0aW9uKFdlYktpdERPTVRlc3RBY3RpdmVET01PCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfRE9NX0lTX05PREUobmV4dENoaWxkKSk7CiAgICAgV2ViQ29yZTo6VGVzdEFjdGl2ZURPTU9i
amVjdCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXZWJDb3JlOjpOb2RlKiBjb252
ZXJ0ZWROZXh0Q2hpbGQgPSBXZWJLaXQ6OmNvcmUobmV4dENoaWxkKTsKLSAgICBpdGVtLT5leGNp
dGluZ0Z1bmN0aW9uKGNvbnZlcnRlZE5leHRDaGlsZCk7CisgICAgaXRlbS0+ZXhjaXRpbmdGdW5j
dGlvbigqY29udmVydGVkTmV4dENoaWxkKTsKIH0KIAogdm9pZCB3ZWJraXRfZG9tX3Rlc3RfYWN0
aXZlX2RvbV9vYmplY3RfcG9zdF9tZXNzYWdlKFdlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3Qq
IHNlbGYsIGNvbnN0IGdjaGFyKiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RDYWxsYmFjay5jcHAKaW5kZXggOGNlY2NjZTQ4YTc5MzNhYzFiYjY2OWI2NmQ4ZmI4NTZlNTc5
OGE3Mi4uYzdlYjM4ZDRhNWJiZTA2ODRlNzViMTJmZDQxNTdmMmUyM2ZkODdhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdENhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2suY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAg
Z2Jvb2xlYW4gd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2NhbGxiYWNrX3dpdGhfYXJyYXlfcGFy
YW0oV2ViS2l0RE9NVGVzdENhbGxiYWMKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
RE9NX0lTX0ZMT0FUMzJBUlJBWShhcnJheVBhcmFtKSwgRkFMU0UpOwogICAgIFdlYkNvcmU6OlRl
c3RDYWxsYmFjayogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXZWJDb3JlOjpGbG9h
dDMyQXJyYXkqIGNvbnZlcnRlZEFycmF5UGFyYW0gPSBXZWJLaXQ6OmNvcmUoYXJyYXlQYXJhbSk7
Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+Y2FsbGJhY2tXaXRoQXJyYXlQYXJhbShjb252
ZXJ0ZWRBcnJheVBhcmFtKTsKKyAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5jYWxsYmFja1dp
dGhBcnJheVBhcmFtKCpjb252ZXJ0ZWRBcnJheVBhcmFtKTsKICAgICByZXR1cm4gcmVzdWx0Owog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc2VsZik7CkBAIC0xOTEsNyArMTkxLDcgQEAgZ2Jvb2xl
YW4gd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2NhbGxiYWNrX3dpdGhfc3RyaW5nX2xpc3QoV2Vi
S2l0RE9NVGVzdENhbGxiYWMKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lT
X0RPTV9TVFJJTkdfTElTVChsaXN0UGFyYW0pLCBGQUxTRSk7CiAgICAgV2ViQ29yZTo6VGVzdENh
bGxiYWNrKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6OkRPTVN0cmlu
Z0xpc3QqIGNvbnZlcnRlZExpc3RQYXJhbSA9IFdlYktpdDo6Y29yZShsaXN0UGFyYW0pOwotICAg
IGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoY29udmVydGVk
TGlzdFBhcmFtKTsKKyAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5jYWxsYmFja1dpdGhTdHJp
bmdMaXN0KCpjb252ZXJ0ZWRMaXN0UGFyYW0pOwogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKQEAgLTIyNSw3ICsyMjUsNyBAQCBnYm9vbGVhbiB3ZWJr
aXRfZG9tX3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tfcmVxdWlyZXNfdGhpc190b19wYXNzKFdlYktp
dERPTVRlc3RDYQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9O
T0RFKHRlc3ROb2RlUGFyYW0pLCBGQUxTRSk7CiAgICAgV2ViQ29yZTo6VGVzdENhbGxiYWNrKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6OlRlc3ROb2RlKiBjb252ZXJ0
ZWRUZXN0Tm9kZVBhcmFtID0gV2ViS2l0Ojpjb3JlKHRlc3ROb2RlUGFyYW0pOwotICAgIGdib29s
ZWFuIHJlc3VsdCA9IGl0ZW0tPmNhbGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNzKGxvbmdQYXJhbSwg
Y29udmVydGVkVGVzdE5vZGVQYXJhbSk7CisgICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+Y2Fs
bGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3MobG9uZ1BhcmFtLCAqY29udmVydGVkVGVzdE5vZGVQYXJh
bSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNlbGYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24uY3Bw
CmluZGV4IDM1OGM0ZTZhNWRiMmUwZWE3Njg5YzU2MjdiYzc0YzA2YzgyYWY2NDMuLmU0NWU1MjQz
YWEyMWQ5ZTlhYTFmODZlZDEzOWQzYTZhMWU5MTllNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFja0Z1
bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbi5jcHAKQEAgLTEzNSw3ICsxMzUsNyBA
QCBnYm9vbGVhbiB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfZnVuY3Rpb25fY2FsbGJhY2tfd2l0
aF9hcnJheV9wYXJhbShXZWJLaXRET01UZQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9ET01fSVNfRkxPQVQzMkFSUkFZKGFycmF5UGFyYW0pLCBGQUxTRSk7CiAgICAgV2ViQ29yZTo6
VGVzdENhbGxiYWNrRnVuY3Rpb24qIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV2Vi
Q29yZTo6RmxvYXQzMkFycmF5KiBjb252ZXJ0ZWRBcnJheVBhcmFtID0gV2ViS2l0Ojpjb3JlKGFy
cmF5UGFyYW0pOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmNhbGxiYWNrV2l0aEFycmF5
UGFyYW0oY29udmVydGVkQXJyYXlQYXJhbSk7CisgICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+
Y2FsbGJhY2tXaXRoQXJyYXlQYXJhbSgqY29udmVydGVkQXJyYXlQYXJhbSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNlbGYpOwpAQCAtMTkxLDcgKzE5MSw3
IEBAIGdib29sZWFuIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19mdW5jdGlvbl9jYWxsYmFja193
aXRoX3N0cmluZ19saXN0KFdlYktpdERPTVRlCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0RPTV9JU19ET01fU1RSSU5HX0xJU1QobGlzdFBhcmFtKSwgRkFMU0UpOwogICAgIFdlYkNv
cmU6OlRlc3RDYWxsYmFja0Z1bmN0aW9uKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAg
IFdlYkNvcmU6OkRPTVN0cmluZ0xpc3QqIGNvbnZlcnRlZExpc3RQYXJhbSA9IFdlYktpdDo6Y29y
ZShsaXN0UGFyYW0pOwotICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmNhbGxiYWNrV2l0aFN0
cmluZ0xpc3QoY29udmVydGVkTGlzdFBhcmFtKTsKKyAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVt
LT5jYWxsYmFja1dpdGhTdHJpbmdMaXN0KCpjb252ZXJ0ZWRMaXN0UGFyYW0pOwogICAgIHJldHVy
biByZXN1bHQ7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKQEAgLTIyNSw3ICsyMjUs
NyBAQCBnYm9vbGVhbiB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfZnVuY3Rpb25fY2FsbGJhY2tf
cmVxdWlyZXNfdGhpc190b19wYXNzKFdlYktpdAogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9ET01fSVNfVEVTVF9OT0RFKHRlc3ROb2RlUGFyYW0pLCBGQUxTRSk7CiAgICAgV2ViQ29y
ZTo6VGVzdENhbGxiYWNrRnVuY3Rpb24qIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAg
V2ViQ29yZTo6VGVzdE5vZGUqIGNvbnZlcnRlZFRlc3ROb2RlUGFyYW0gPSBXZWJLaXQ6OmNvcmUo
dGVzdE5vZGVQYXJhbSk7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+Y2FsbGJhY2tSZXF1
aXJlc1RoaXNUb1Bhc3MobG9uZ1BhcmFtLCBjb252ZXJ0ZWRUZXN0Tm9kZVBhcmFtKTsKKyAgICBn
Ym9vbGVhbiByZXN1bHQgPSBpdGVtLT5jYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyhsb25nUGFy
YW0sICpjb252ZXJ0ZWRUZXN0Tm9kZVBhcmFtKTsKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0oc2VsZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJ
bnRlcmZhY2UuY3BwCmluZGV4IDViNDU1NzQwODgyNWNiMjZhN2U3OWQ1NGFiN2RlZTVlMjAxMTRj
ODguLjg4NjdlZDYyYTQ5YTJmZjQ5NWRkNWYyY2MxZDY2OGQ2MDNiZWI2YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAg
V2ViS2l0RE9NVGVzdE9iaiogd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRzX21l
dGhvZDIoV2ViS2l0RE9NVGVzdEludGUKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTdHJBcmcg
PSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyQXJnKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBj
b252ZXJ0ZWRPYmpBcmcgPSBXZWJLaXQ6OmNvcmUob2JqQXJnKTsKICAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ29iamVjdFJl
c3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPmltcGxlbWVudHNNZXRob2QyKGNvbnZlcnRlZFN0ckFy
ZywgY29udmVydGVkT2JqQXJnLCBlYykpOworICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBn
b2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+aW1wbGVtZW50c01ldGhvZDIoY29udmVy
dGVkU3RyQXJnLCAqY29udmVydGVkT2JqQXJnLCBlYykpOwogICAgIGlmIChlYykgewogICAgICAg
ICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKICAgICAgICAg
Z19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RP
TSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOwpAQCAtMzIyLDcgKzMyMiw3IEBAIFdlYktp
dERPTVRlc3RPYmoqIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc3VwcGxlbWVudGFsX21ldGhv
ZDIoV2ViS2l0RE9NVGVzdEluCiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVkU3RyQXJnID0gV1RG
OjpTdHJpbmc6OmZyb21VVEY4KHN0ckFyZyk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVy
dGVkT2JqQXJnID0gV2ViS2l0Ojpjb3JlKG9iakFyZyk7CiAgICAgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IGdvYmplY3RSZXN1bHQg
PSBXVEY6OmdldFB0cihXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRo
b2QyKCppdGVtLCBjb252ZXJ0ZWRTdHJBcmcsIGNvbnZlcnRlZE9iakFyZywgZWMpKTsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKFdlYkNv
cmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDIoKml0ZW0sIGNvbnZlcnRl
ZFN0ckFyZywgKmNvbnZlcnRlZE9iakFyZywgZWMpKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7CiAgICAgICAgIGdf
c2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00i
KSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9i
ai5jcHAKaW5kZXggMzgwOTdlNTA4YmU4MmY4NDJmNDgxY2U2MGY2ZjJmYmMxZWQ5ZmJlMi4uODhh
MmJjY2YwZDc5NDdkZTFkZTc2YmU0YmM2YWQ3MTRkODQzZjViYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdE9iai5jcHAKQEAgLTEyMTYsNyArMTIxNiw3IEBAIHZvaWQgd2Via2l0X2RvbV90
ZXN0X29ial92b2lkX21ldGhvZF93aXRoX2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xv
bmcgbG9uCiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
ICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTdHJBcmcgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgo
c3RyQXJnKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRPYmpBcmcgPSBXZWJLaXQ6
OmNvcmUob2JqQXJnKTsKLSAgICBpdGVtLT52b2lkTWV0aG9kV2l0aEFyZ3MobG9uZ0FyZywgY29u
dmVydGVkU3RyQXJnLCBjb252ZXJ0ZWRPYmpBcmcpOworICAgIGl0ZW0tPnZvaWRNZXRob2RXaXRo
QXJncyhsb25nQXJnLCBjb252ZXJ0ZWRTdHJBcmcsICpjb252ZXJ0ZWRPYmpBcmcpOwogfQogCiBn
aW50OCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2J5dGVfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNl
bGYpCkBAIC0xMjM3LDcgKzEyMzcsNyBAQCBnaW50OCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2J5dGVf
bWV0aG9kX3dpdGhfYXJncyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnaW50OCBieQogICAgIFdl
YkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpTdHJp
bmcgY29udmVydGVkU3RyQXJnID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0ckFyZyk7CiAgICAg
V2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkT2JqQXJnID0gV2ViS2l0Ojpjb3JlKG9iakFyZyk7
Ci0gICAgZ2ludDggcmVzdWx0ID0gaXRlbS0+Ynl0ZU1ldGhvZFdpdGhBcmdzKGJ5dGVBcmcsIGNv
bnZlcnRlZFN0ckFyZywgY29udmVydGVkT2JqQXJnKTsKKyAgICBnaW50OCByZXN1bHQgPSBpdGVt
LT5ieXRlTWV0aG9kV2l0aEFyZ3MoYnl0ZUFyZywgY29udmVydGVkU3RyQXJnLCAqY29udmVydGVk
T2JqQXJnKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMjU5LDcgKzEyNTksNyBAQCBn
dWludDggd2Via2l0X2RvbV90ZXN0X29ial9vY3RldF9tZXRob2Rfd2l0aF9hcmdzKFdlYktpdERP
TVRlc3RPYmoqIHNlbGYsIGd1aW50OAogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVkU3RyQXJnID0gV1RGOjpT
dHJpbmc6OmZyb21VVEY4KHN0ckFyZyk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVk
T2JqQXJnID0gV2ViS2l0Ojpjb3JlKG9iakFyZyk7Ci0gICAgZ3VpbnQ4IHJlc3VsdCA9IGl0ZW0t
Pm9jdGV0TWV0aG9kV2l0aEFyZ3Mob2N0ZXRBcmcsIGNvbnZlcnRlZFN0ckFyZywgY29udmVydGVk
T2JqQXJnKTsKKyAgICBndWludDggcmVzdWx0ID0gaXRlbS0+b2N0ZXRNZXRob2RXaXRoQXJncyhv
Y3RldEFyZywgY29udmVydGVkU3RyQXJnLCAqY29udmVydGVkT2JqQXJnKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCkBAIC0xMjgxLDcgKzEyODEsNyBAQCBnbG9uZyB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX2xvbmdfbWV0aG9kX3dpdGhfYXJncyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBs
bwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAg
V1RGOjpTdHJpbmcgY29udmVydGVkU3RyQXJnID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0ckFy
Zyk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkT2JqQXJnID0gV2ViS2l0Ojpjb3Jl
KG9iakFyZyk7Ci0gICAgZ2xvbmcgcmVzdWx0ID0gaXRlbS0+bG9uZ01ldGhvZFdpdGhBcmdzKGxv
bmdBcmcsIGNvbnZlcnRlZFN0ckFyZywgY29udmVydGVkT2JqQXJnKTsKKyAgICBnbG9uZyByZXN1
bHQgPSBpdGVtLT5sb25nTWV0aG9kV2l0aEFyZ3MobG9uZ0FyZywgY29udmVydGVkU3RyQXJnLCAq
Y29udmVydGVkT2JqQXJnKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMzAzLDcgKzEz
MDMsNyBAQCBXZWJLaXRET01UZXN0T2JqKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX29ial9tZXRob2Rf
d2l0aF9hcmdzKFdlYktpdERPTVRlc3RPYmoqIHNlbAogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVkU3RyQXJn
ID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0ckFyZyk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiog
Y29udmVydGVkT2JqQXJnID0gV2ViS2l0Ojpjb3JlKG9iakFyZyk7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlRlc3RPYmo+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5vYmpNZXRob2RX
aXRoQXJncyhsb25nQXJnLCBjb252ZXJ0ZWRTdHJBcmcsIGNvbnZlcnRlZE9iakFyZykpOworICAg
IFJlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRl
bS0+b2JqTWV0aG9kV2l0aEFyZ3MobG9uZ0FyZywgY29udmVydGVkU3RyQXJnLCAqY29udmVydGVk
T2JqQXJnKSk7CiAgICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwog
fQogCkBAIC0xMzc1LDcgKzEzNzUsNyBAQCBXZWJLaXRET01UZXN0T2JqKiB3ZWJraXRfZG9tX3Rl
c3Rfb2JqX21ldGhvZF90aGF0X3JlcXVpcmVzX2FsbF9hcmdzX2FuZF90aHJvd3MoVwogICAgIFdU
Rjo6U3RyaW5nIGNvbnZlcnRlZFN0ckFyZyA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHJBcmcp
OwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNvbnZlcnRlZE9iakFyZyA9IFdlYktpdDo6Y29yZShv
YmpBcmcpOwogICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxX
ZWJDb3JlOjpUZXN0T2JqPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+bWV0aG9k
VGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyhjb252ZXJ0ZWRTdHJBcmcsIGNvbnZlcnRlZE9i
akFyZywgZWMpKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ29iamVjdFJlc3VsdCA9
IFdURjo6Z2V0UHRyKGl0ZW0tPm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoY29u
dmVydGVkU3RyQXJnLCAqY29udmVydGVkT2JqQXJnLCBlYykpOwogICAgIGlmIChlYykgewogICAg
ICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKICAgICAg
ICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lU
X0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOwpAQCAtMTY0Niw3ICsxNjQ2LDcgQEAg
dm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2NvbnZlcnQxKFdlYktpdERPTVRlc3RPYmoqIHNlbGYs
IFdlYktpdERPTVRlc3ROb2RlKiB2YWwKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01f
SVNfVEVTVF9OT0RFKHZhbHVlKSk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKICAgICBXZWJDb3JlOjpUZXN0Tm9kZSogY29udmVydGVkVmFsdWUgPSBX
ZWJLaXQ6OmNvcmUodmFsdWUpOwotICAgIGl0ZW0tPmNvbnZlcnQxKGNvbnZlcnRlZFZhbHVlKTsK
KyAgICBpdGVtLT5jb252ZXJ0MSgqY29udmVydGVkVmFsdWUpOwogfQogCiB2b2lkIHdlYmtpdF9k
b21fdGVzdF9vYmpfY29udmVydDIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NVGVz
dE5vZGUqIHZhbHVlKQpAQCAtMTczMyw3ICsxNzMzLDcgQEAgV2ViS2l0RE9NYm9vbCogd2Via2l0
X2RvbV90ZXN0X29ial9zdHJpY3RfZnVuY3Rpb25fd2l0aF9hcnJheShXZWJLaXRET01UZXN0T2Jq
KgogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNvbnZlcnRlZE9iakFyZyA9IFdlYktpdDo6Y29yZShv
YmpBcmcpOwogICAgIFdlYkNvcmU6OmxvbmdbXSogY29udmVydGVkQXJyYXkgPSBXZWJLaXQ6OmNv
cmUoYXJyYXkpOwogICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpib29sPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+c3RyaWN0
RnVuY3Rpb25XaXRoQXJyYXkoY29udmVydGVkT2JqQXJnLCBhcnJheSwgZWMpKTsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6Ym9vbD4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPnN0cmlj
dEZ1bmN0aW9uV2l0aEFycmF5KCpjb252ZXJ0ZWRPYmpBcmcsIGFycmF5LCBlYykpOwogICAgIGlm
IChlYykgewogICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNj
KGVjKTsKICAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0
cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOwpAQCAtMTc3MCw3
ICsxNzcwLDcgQEAgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX25vZGVfbWV0aG9k
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTU4KICAgICBXZWJDb3JlOjpUZXN0T2Jq
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6Ok5vZGUqIGNvbnZlcnRl
ZEhlYWQgPSBXZWJLaXQ6OmNvcmUoaGVhZCk7CiAgICAgV2ViQ29yZTo6Tm9kZSogY29udmVydGVk
VGFpbCA9IFdlYktpdDo6Y29yZSh0YWlsKTsKLSAgICBpdGVtLT52YXJpYWRpY05vZGVNZXRob2Qo
Y29udmVydGVkSGVhZCwgY29udmVydGVkVGFpbCk7CisgICAgaXRlbS0+dmFyaWFkaWNOb2RlTWV0
aG9kKCpjb252ZXJ0ZWRIZWFkLCBjb252ZXJ0ZWRUYWlsKTsKIH0KIAogdm9pZCB3ZWJraXRfZG9t
X3Rlc3Rfb2JqX2FueShXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnZmxvYXQgYSwgZ2xvbmcgYikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggNzE5OTA2Mjlk
NDU3ZTgzMmMyMGJiOTJhZWIzYmM0NTBiZjQwMTZjMi4uNWFjMzA3NzdlZGY4ZTZhODQ1M2FkMTc0
NzM0M2I5M2I2MGI0MzU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlv
bi5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKICNpbmNs
dWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAi
RXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCkBAIC00Niw4ICs0Nyw4IEBACiAjaW5jbHVk
ZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lRWxlbWVudEJhc2UuaCIK
ICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTFNlbGVjdEVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MU2VsZWN0RWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3Vs
dC5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3B0aW9uRWxlbWVudC5jcHAKaW5kZXggYmFhNDlkMjEzZmViMGM2M2E0MDQ0YjU5MDVhNzdiNmJl
MzZmYTVkZi4uODljMzBmZDJlNjA5MzQ4ODUxMTQyYTU2NWEyNzU4ODI2MDM2YTIyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTIxMyw3ICsyMTMsNyBA
QCB2b2lkIEhUTUxPcHRpb25FbGVtZW50OjpzZXRTZWxlY3RlZChib29sIHNlbGVjdGVkKQogICAg
IHNldFNlbGVjdGVkU3RhdGUoc2VsZWN0ZWQpOwogCiAgICAgaWYgKEhUTUxTZWxlY3RFbGVtZW50
KiBzZWxlY3QgPSBvd25lclNlbGVjdEVsZW1lbnQoKSkKLSAgICAgICAgc2VsZWN0LT5vcHRpb25T
ZWxlY3Rpb25TdGF0ZUNoYW5nZWQodGhpcywgc2VsZWN0ZWQpOworICAgICAgICBzZWxlY3QtPm9w
dGlvblNlbGVjdGlvblN0YXRlQ2hhbmdlZCgqdGhpcywgc2VsZWN0ZWQpOwogfQogCiB2b2lkIEhU
TUxPcHRpb25FbGVtZW50OjpzZXRTZWxlY3RlZFN0YXRlKGJvb2wgc2VsZWN0ZWQpCkBAIC0zMTQs
NyArMzE0LDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MT3B0aW9u
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUKICAgICAgICAgLy8gRklYTUU6IE1p
Z2h0IGJlIGJldHRlciB0byBjYWxsIHRoaXMgdW5jb25kaXRpb25hbGx5LCBhbHdheXMgcGFzc2lu
ZyBtX2lzU2VsZWN0ZWQsCiAgICAgICAgIC8vIHJhdGhlciB0aGFuIG9ubHkgY2FsbGluZyBpdCBp
ZiB3ZSBhcmUgc2VsZWN0ZWQuCiAgICAgICAgIGlmIChtX2lzU2VsZWN0ZWQpCi0gICAgICAgICAg
ICBzZWxlY3QtPm9wdGlvblNlbGVjdGlvblN0YXRlQ2hhbmdlZCh0aGlzLCB0cnVlKTsKKyAgICAg
ICAgICAgIHNlbGVjdC0+b3B0aW9uU2VsZWN0aW9uU3RhdGVDaGFuZ2VkKCp0aGlzLCB0cnVlKTsK
ICAgICAgICAgc2VsZWN0LT5zY3JvbGxUb1NlbGVjdGlvbigpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCmluZGV4IGIzNmMzZjQ4MGNj
ZTVjNDY1YjBmZWNkZmM5MTdlZDE0OTEzMDlkYmEuLjlmNTNiYTYxZTkwOWI2OGNlMmQ4OTc1YTI5
ZjMzZGNmMzcxZGE4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bnNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29s
bGVjdGlvbi5jcHAKQEAgLTM4LDcgKzM4LDkgQEAgUmVmPEhUTUxPcHRpb25zQ29sbGVjdGlvbj4g
SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpjcmVhdGUoSFRNTFNlbGVjdEVsZW1lbnQmIHNlbGUKIAog
dm9pZCBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZChIVE1MRWxlbWVudCogZWxlbWVudCwgSFRN
TEVsZW1lbnQqIGJlZm9yZUVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIHNlbGVj
dEVsZW1lbnQoKS5hZGQoZWxlbWVudCwgYmVmb3JlRWxlbWVudCwgZWMpOworICAgIGlmICghZWxl
bWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIHNlbGVjdEVsZW1lbnQoKS5hZGQoKmVsZW1lbnQs
IGJlZm9yZUVsZW1lbnQsIGVjKTsKIH0KIAogdm9pZCBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmFk
ZChIVE1MRWxlbWVudCogZWxlbWVudCwgaW50IGJlZm9yZUluZGV4LCBFeGNlcHRpb25Db2RlJiBl
YykKQEAgLTUzLDcgKzU1LDkgQEAgdm9pZCBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnJlbW92ZShp
bnQgaW5kZXgpCiAKIHZvaWQgSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1vdmUoSFRNTE9wdGlv
bkVsZW1lbnQqIG9wdGlvbikKIHsKLSAgICBzZWxlY3RFbGVtZW50KCkucmVtb3ZlKG9wdGlvbik7
CisgICAgaWYgKCFvcHRpb24pCisgICAgICAgIHJldHVybjsKKyAgICBzZWxlY3RFbGVtZW50KCku
cmVtb3ZlKCpvcHRpb24pOwogfQogCiBpbnQgSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpzZWxlY3Rl
ZEluZGV4KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bnNDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlv
bi5oCmluZGV4IDQ4ZjM1ZWVjZWM4YzhhZGY4ZWIyZTZjYzFlM2FmN2EwNjNmNTYzNTQuLjRmYWU3
NTk2Mjc5OGU4NDYzZmRhMzhlMzM3ZTM2MzkxZGZmMDc3OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaApAQCAtMjUsNiArMjUsNyBAQAogI2RlZmluZSBI
VE1MT3B0aW9uc0NvbGxlY3Rpb25faAogCiAjaW5jbHVkZSAiQ2FjaGVkSFRNTENvbGxlY3Rpb24u
aCIKKyNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTZWxlY3RF
bGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5jcHAKaW5kZXggYTk1ODFmNjNlMTYxMTdmNDVjNmZiZmYwYzQ0MDhkOGE3
NTkyMWFiZS4uNTllZTRhYTVlY2NlYjFiNGMyNDFhODM0MDE1MTk2M2Q5YWU3Mzc4NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKQEAgLTIyMCwxOSArMjIwLDE0
IEBAIGludCBIVE1MU2VsZWN0RWxlbWVudDo6YWN0aXZlU2VsZWN0aW9uRW5kTGlzdEluZGV4KCkg
Y29uc3QKICAgICByZXR1cm4gbGFzdFNlbGVjdGVkTGlzdEluZGV4KCk7CiB9CiAKLXZvaWQgSFRN
TFNlbGVjdEVsZW1lbnQ6OmFkZChIVE1MRWxlbWVudCogZWxlbWVudCwgSFRNTEVsZW1lbnQqIGJl
Zm9yZUVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6
YWRkKEhUTUxFbGVtZW50JiBlbGVtZW50LCBIVE1MRWxlbWVudCogYmVmb3JlRWxlbWVudCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKCFlbGVtZW50IHx8ICEoaXM8SFRNTE9wdGlvbkVs
ZW1lbnQ+KCplbGVtZW50KSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKGhyVGFnKSB8fCBpczxIVE1M
T3B0R3JvdXBFbGVtZW50PigqZWxlbWVudCkpKQorICAgIGlmICghKGlzPEhUTUxPcHRpb25FbGVt
ZW50PihlbGVtZW50KSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoaHJUYWcpIHx8IGlzPEhUTUxPcHRH
cm91cEVsZW1lbnQ+KGVsZW1lbnQpKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gTWFrZSBz
dXJlIHRoZSBlbGVtZW50IGlzIHJlZidkIGFuZCBkZXJlZidkIHNvIHdlIGRvbid0IGxlYWsgaXQu
Ci0gICAgUmVmPEhUTUxFbGVtZW50PiBwcm90ZWN0TmV3Q2hpbGQoKmVsZW1lbnQpOwotCi0gICAg
aW5zZXJ0QmVmb3JlKCplbGVtZW50LCBiZWZvcmVFbGVtZW50LCBlYyk7Ci0gICAgdXBkYXRlVmFs
aWRpdHkoKTsKKyAgICBpbnNlcnRCZWZvcmUoZWxlbWVudCwgYmVmb3JlRWxlbWVudCwgZWMpOwog
fQogCi12b2lkIEhUTUxTZWxlY3RFbGVtZW50OjphZGQoSFRNTEVsZW1lbnQqIGVsZW1lbnQsIGlu
dCBiZWZvcmVJbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIEhUTUxTZWxlY3RFbGVtZW50
OjphZGQoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIGludCBiZWZvcmVJbmRleCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgYWRkKGVsZW1lbnQsIGl0ZW0oYmVmb3JlSW5kZXgpLCBlYyk7CiB9CkBA
IC0yNDYsMTIgKzI0MSwxMiBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpyZW1vdmVCeUluZGV4
KGludCBvcHRpb25JbmRleCkKICAgICBsaXN0SXRlbXMoKVtsaXN0SW5kZXhdLT5yZW1vdmUoSUdO
T1JFX0VYQ0VQVElPTik7CiB9CiAKLXZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlbW92ZShIVE1M
T3B0aW9uRWxlbWVudCogb3B0aW9uKQordm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVtb3ZlKEhU
TUxPcHRpb25FbGVtZW50JiBvcHRpb24pCiB7Ci0gICAgaWYgKG9wdGlvbi0+b3duZXJTZWxlY3RF
bGVtZW50KCkgIT0gdGhpcykKKyAgICBpZiAob3B0aW9uLm93bmVyU2VsZWN0RWxlbWVudCgpICE9
IHRoaXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIG9wdGlvbi0+cmVtb3ZlKElHTk9SRV9FWENF
UFRJT04pOworICAgIG9wdGlvbi5yZW1vdmUoSUdOT1JFX0VYQ0VQVElPTik7CiB9CiAKIFN0cmlu
ZyBIVE1MU2VsZWN0RWxlbWVudDo6dmFsdWUoKSBjb25zdApAQCAtNDM1LDcgKzQzMCw3IEBAIEhU
TUxPcHRpb25FbGVtZW50KiBIVE1MU2VsZWN0RWxlbWVudDo6aXRlbSh1bnNpZ25lZCBpbmRleCkK
ICAgICByZXR1cm4gb3B0aW9ucygpLT5pdGVtKGluZGV4KTsKIH0KIAotdm9pZCBIVE1MU2VsZWN0
RWxlbWVudDo6c2V0T3B0aW9uKHVuc2lnbmVkIGluZGV4LCBIVE1MT3B0aW9uRWxlbWVudCogb3B0
aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldE9wdGlv
bih1bnNpZ25lZCBpbmRleCwgSFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlvbiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgZWMgPSAwOwogICAgIGlmIChpbmRleCA+IG1heFNlbGVjdEl0ZW1zIC0g
MSkKQEAgLTQ1MywyMiArNDQ4LDIxIEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldE9wdGlv
bih1bnNpZ25lZCBpbmRleCwgSFRNTE9wdGlvbkVsZW1lbnQqIG9wdGlvbiwgRXhjCiAgICAgLy8g
RmluYWxseSBhZGQgdGhlIG5ldyBlbGVtZW50LgogICAgIGlmICghZWMpIHsKICAgICAgICAgYWRk
KG9wdGlvbiwgYmVmb3JlLmdldCgpLCBlYyk7Ci0gICAgICAgIGlmIChkaWZmID49IDAgJiYgb3B0
aW9uLT5zZWxlY3RlZCgpKQorICAgICAgICBpZiAoZGlmZiA+PSAwICYmIG9wdGlvbi5zZWxlY3Rl
ZCgpKQogICAgICAgICAgICAgb3B0aW9uU2VsZWN0aW9uU3RhdGVDaGFuZ2VkKG9wdGlvbiwgdHJ1
ZSk7CiAgICAgfQogfQogCi12b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRMZW5ndGgodW5zaWdu
ZWQgbmV3TGVuLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNl
dExlbmd0aCh1bnNpZ25lZCBuZXdMZW5ndGgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVj
ID0gMDsKLSAgICBpZiAobmV3TGVuID4gbWF4U2VsZWN0SXRlbXMpCi0gICAgICAgIG5ld0xlbiA9
IG1heFNlbGVjdEl0ZW1zOwotICAgIGludCBkaWZmID0gbGVuZ3RoKCkgLSBuZXdMZW47CisgICAg
aWYgKG5ld0xlbmd0aCA+IG1heFNlbGVjdEl0ZW1zKQorICAgICAgICBuZXdMZW5ndGggPSBtYXhT
ZWxlY3RJdGVtczsKKyAgICBpbnQgZGlmZiA9IGxlbmd0aCgpIC0gbmV3TGVuZ3RoOwogCiAgICAg
aWYgKGRpZmYgPCAwKSB7IC8vIEFkZCBkdW1teSBlbGVtZW50cy4KICAgICAgICAgZG8gewotICAg
ICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG9wdGlvbiA9IGRvY3VtZW50KCkuY3JlYXRlRWxlbWVu
dChvcHRpb25UYWcsIGZhbHNlKTsKLSAgICAgICAgICAgIEFTU0VSVChvcHRpb24pOworICAgICAg
ICAgICAgYXV0byBvcHRpb24gPSBkb2N1bWVudCgpLmNyZWF0ZUVsZW1lbnQob3B0aW9uVGFnLCBm
YWxzZSk7CiAgICAgICAgICAgICBhZGQoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KG9wdGlvbi5nZXQo
KSksIG51bGxwdHIsIGVjKTsKICAgICAgICAgICAgIGlmIChlYykKICAgICAgICAgICAgICAgICBi
cmVhazsKQEAgLTQ4MSw3ICs0NzUsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRMZW5n
dGgodW5zaWduZWQgbmV3TGVuLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgVmVjdG9yPFJl
ZjxFbGVtZW50Pj4gaXRlbXNUb1JlbW92ZTsKICAgICAgICAgc2l6ZV90IG9wdGlvbkluZGV4ID0g
MDsKICAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogaXRlbXMpIHsKLSAgICAgICAgICAgIGlmIChp
czxIVE1MT3B0aW9uRWxlbWVudD4oKml0ZW0pICYmIG9wdGlvbkluZGV4KysgPj0gbmV3TGVuKSB7
CisgICAgICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KCppdGVtKSAmJiBvcHRpb25J
bmRleCsrID49IG5ld0xlbmd0aCkgewogICAgICAgICAgICAgICAgIEFTU0VSVChpdGVtLT5wYXJl
bnROb2RlKCkpOwogICAgICAgICAgICAgICAgIGl0ZW1zVG9SZW1vdmUuYXBwZW5kKCppdGVtKTsK
ICAgICAgICAgICAgIH0KQEAgLTUwMCwxMiArNDk0LDE0IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1l
bnQ6OmlzUmVxdWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0CiAgICAgcmV0dXJuIGlzUmVxdWlyZWQo
KTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OndpbGxS
ZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkKIHsKKyNpZiBQTEFURk9STShJT1MpCiAgICAgcmV0
dXJuICFpc0Rpc2FibGVkRm9ybUNvbnRyb2woKTsKLX0KKyNlbHNlCisgICAgcmV0dXJuIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRz
KCk7CiAjZW5kaWYKK30KIAogLy8gUmV0dXJucyB0aGUgMXN0IHZhbGlkIGl0ZW0gfHNraXB8IGl0
ZW1zIGZyb20gfGxpc3RJbmRleHwgaW4gZGlyZWN0aW9uIHxkaXJlY3Rpb258IGlmIHRoZXJlIGlz
IG9uZS4KIC8vIE90aGVyd2lzZSwgaXQgcmV0dXJucyB0aGUgdmFsaWQgaXRlbSBjbG9zZXN0IHRv
IHRoYXQgYm91bmRhcnkgd2hpY2ggaXMgcGFzdCB8bGlzdEluZGV4fCBpZiB0aGVyZSBpcyBvbmUu
CkBAIC04NDUsMTEgKzg0MSwxMSBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRTZWxlY3Rl
ZEluZGV4KGludCBpbmRleCkKICAgICBzZWxlY3RPcHRpb24oaW5kZXgsIERlc2VsZWN0T3RoZXJP
cHRpb25zKTsKIH0KIAotdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9uU2VsZWN0aW9uU3Rh
dGVDaGFuZ2VkKEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb24sIGJvb2wgb3B0aW9uSXNTZWxlY3Rl
ZCkKK3ZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Om9wdGlvblNlbGVjdGlvblN0YXRlQ2hhbmdlZChI
VE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uLCBib29sIG9wdGlvbklzU2VsZWN0ZWQpCiB7Ci0gICAg
QVNTRVJUKG9wdGlvbi0+b3duZXJTZWxlY3RFbGVtZW50KCkgPT0gdGhpcyk7CisgICAgQVNTRVJU
KG9wdGlvbi5vd25lclNlbGVjdEVsZW1lbnQoKSA9PSB0aGlzKTsKICAgICBpZiAob3B0aW9uSXNT
ZWxlY3RlZCkKLSAgICAgICAgc2VsZWN0T3B0aW9uKG9wdGlvbi0+aW5kZXgoKSk7CisgICAgICAg
IHNlbGVjdE9wdGlvbihvcHRpb24uaW5kZXgoKSk7CiAgICAgZWxzZSBpZiAoIXVzZXNNZW51TGlz
dCgpKQogICAgICAgICBzZWxlY3RPcHRpb24oLTEpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAppbmRleCA3OGQzZDhiYjRmNWYxZjNhMjQwNzgyNDQxYmYy
NzlmMDA3YWI3OGFhLi45ZTM3ZjE1NDgzNWY2NDhkMWFhYTkwODkwNjgwM2YzZTMwZWQ2YzAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCkBAIC0yNiwxNyArMjYsMTQg
QEAKICNpZm5kZWYgSFRNTFNlbGVjdEVsZW1lbnRfaAogI2RlZmluZSBIVE1MU2VsZWN0RWxlbWVu
dF9oCiAKLSNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVsZW1l
bnRXaXRoU3RhdGUuaCIKLSNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUg
IlR5cGVBaGVhZC5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBIVE1MT3B0aW9uc0NvbGxlY3Rpb247CiAKLWNsYXNzIEhUTUxTZWxlY3RF
bGVtZW50IDogcHVibGljIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUsIHB1YmxpYyBU
eXBlQWhlYWREYXRhU291cmNlIHsKK2NsYXNzIEhUTUxTZWxlY3RFbGVtZW50IDogcHVibGljIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUsIHByaXZhdGUgVHlwZUFoZWFkRGF0YVNvdXJj
ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MU2VsZWN0RWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCopOwogCkBAIC00
NSw5ICs0Miw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb3B0aW9uU2Vs
ZWN0ZWRCeVVzZXIoaW50IGluZGV4LCBib29sIGRpc3BhdGNoQ2hhbmdlRXZlbnQsIGJvb2wgYWxs
b3dNdWx0aXBsZVNlbGVjdGlvbiA9IGZhbHNlKTsKIAotICAgIC8vIEZvciBWYWxpZGl0eVN0YXRl
Ci0gICAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9v
bCB2YWx1ZU1pc3NpbmcoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgdmFsaWRhdGlvbk1l
c3NhZ2UoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHZhbHVlTWlzc2luZygpIGNvbnN0IGZpbmFs
OwogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CiAKQEAgLTU2LDE0ICs1MiwxNCBAQCBw
dWJsaWM6CiAKICAgICBib29sIHVzZXNNZW51TGlzdCgpIGNvbnN0OwogCi0gICAgdm9pZCBhZGQo
SFRNTEVsZW1lbnQqLCBIVE1MRWxlbWVudCogYmVmb3JlRWxlbWVudCwgRXhjZXB0aW9uQ29kZSYp
OwotICAgIHZvaWQgYWRkKEhUTUxFbGVtZW50KiwgaW50IGJlZm9yZUluZGV4LCBFeGNlcHRpb25D
b2RlJik7CisgICAgdm9pZCBhZGQoSFRNTEVsZW1lbnQmLCBIVE1MRWxlbWVudCogYmVmb3JlRWxl
bWVudCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgYWRkKEhUTUxFbGVtZW50JiwgaW50IGJl
Zm9yZUluZGV4LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB1c2luZyBOb2RlOjpyZW1vdmU7Ci0g
ICAgLy8gU2hvdWxkIGJlIHJlbW92ZShpbnQpIGJ1dCBpdCBjb25mbGljdHMgd2l0aCBOb2RlOjpy
ZW1vdmUoRXhjZXB0aW9uQ29kZSYpLgotICAgIHZvaWQgcmVtb3ZlQnlJbmRleChpbnQpOwotICAg
IHZvaWQgcmVtb3ZlKEhUTUxPcHRpb25FbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmUoSFRNTE9w
dGlvbkVsZW1lbnQmKTsKKyAgICB2b2lkIHJlbW92ZUJ5SW5kZXgoaW50KTsgLy8gU2hvdWxkIGJl
IHJlbW92ZShpbnQpIGJ1dCB0aGF0IGNvbmZsaWN0cyB3aXRoIE5vZGU6OnJlbW92ZShFeGNlcHRp
b25Db2RlJikuCiAKK3B1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdmFsdWUoKSBj
b25zdDsKICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpOwogCkBAIC03OCwxNCArNzQs
MTQgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgVmVjdG9yPEhUTUxFbGVt
ZW50Kj4mIGxpc3RJdGVtcygpIGNvbnN0OwogCi0gICAgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9v
bCBzZW5kTW91c2VFdmVudHMpIG92ZXJyaWRlOworICAgIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJv
b2wgc2VuZE1vdXNlRXZlbnRzKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0tleVNldFNlbGVjdGVk
SW5kZXgoaW50KTsKIAogICAgIHZvaWQgc2V0TXVsdGlwbGUoYm9vbCk7CiAKICAgICB2b2lkIHNl
dFNpemUodW5zaWduZWQpOwogCi0gICAgdm9pZCBzZXRPcHRpb24odW5zaWduZWQgaW5kZXgsIEhU
TUxPcHRpb25FbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0T3B0aW9uKHVu
c2lnbmVkIGluZGV4LCBIVE1MT3B0aW9uRWxlbWVudCYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
b2lkIHNldExlbmd0aCh1bnNpZ25lZCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgSFRNTE9wdGlv
bkVsZW1lbnQqIG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwpAQCAtOTUsMTAg
KzkxLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBsaXN0Qm94U2VsZWN0SXRlbShpbnQgbGlzdElu
ZGV4LCBib29sIGFsbG93TXVsdGlwbHlTZWxlY3Rpb25zLCBib29sIHNoaWZ0LCBib29sIGZpcmVP
bkNoYW5nZU5vdyA9IHRydWUpOwogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIGJvb2wgd2lsbFJl
c3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBvdmVycmlkZTsKLSNlbmRpZgotCiAgICAgYm9vbCBj
YW5TZWxlY3RBbGwoKSBjb25zdDsKICAgICB2b2lkIHNlbGVjdEFsbCgpOwogICAgIGludCBsaXN0
VG9PcHRpb25JbmRleChpbnQgbGlzdEluZGV4KSBjb25zdDsKQEAgLTEwOSw0MyArMTAxLDQ0IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KGludCk7CiAg
ICAgdm9pZCBzZXRBY3RpdmVTZWxlY3Rpb25FbmRJbmRleChpbnQpOwogICAgIHZvaWQgdXBkYXRl
TGlzdEJveFNlbGVjdGlvbihib29sIGRlc2VsZWN0T3RoZXJPcHRpb25zKTsKLSAgICAKKwogICAg
IC8vIEZvciB1c2UgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIEhUTUxPcHRpb25FbGVtZW50Lgot
ICAgIHZvaWQgb3B0aW9uU2VsZWN0aW9uU3RhdGVDaGFuZ2VkKEhUTUxPcHRpb25FbGVtZW50Kiwg
Ym9vbCBvcHRpb25Jc1NlbGVjdGVkKTsKKyAgICB2b2lkIG9wdGlvblNlbGVjdGlvblN0YXRlQ2hh
bmdlZChIVE1MT3B0aW9uRWxlbWVudCYsIGJvb2wgb3B0aW9uSXNTZWxlY3RlZCk7CiAgICAgYm9v
bCBhbGxvd3NOb25Db250aWd1b3VzU2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NO
b25Db250aWd1b3VzU2VsZWN0aW9uOyB9OwogCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTFNlbGVjdEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7
CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgp
IGNvbnN0IGZpbmFsOwogICAgIAotICAgIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2Fy
ZEV2ZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQq
KSBjb25zdCBmaW5hbDsKKyAgICBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBmaW5hbDsK
IAogICAgIHZvaWQgZGlzcGF0Y2hGb2N1c0V2ZW50KFJlZlB0cjxFbGVtZW50PiYmIG9sZEZvY3Vz
ZWRFbGVtZW50LCBGb2N1c0RpcmVjdGlvbikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaEJsdXJF
dmVudChSZWZQdHI8RWxlbWVudD4mJiBuZXdGb2N1c2VkRWxlbWVudCkgZmluYWw7CiAgICAgCi0g
ICAgYm9vbCBjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CiAKICAgICBib29sIGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgYm9vbCBpc0VudW1lcmF0YWJsZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBib29sIHN1cHBvcnRMYWJlbHMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0VudW1lcmF0YWJsZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIHN1cHBvcnRMYWJlbHMoKSBjb25zdCBm
aW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBGb3JtQ29udHJvbFN0YXRlIHNhdmVGb3JtQ29u
dHJvbFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXN0b3JlRm9ybUNvbnRyb2xT
dGF0ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJikgb3ZlcnJpZGU7CisgICAgRm9ybUNvbnRyb2xT
dGF0ZSBzYXZlRm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgcmVzdG9y
ZUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYpIGZpbmFsOwogCi0gICAg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CisgICAgYm9v
bCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgZmlu
YWw7CiAKLSAgICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNv
bnN0IG92ZXJyaWRlOwotICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBv
dmVycmlkZTsKLSAgICBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpIG92
ZXJyaWRlOworICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikg
Y29uc3QgZmluYWw7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZp
bmFsOworICAgIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgZmluYWw7
CiAKLSAgICB2b2lkIHJlc2V0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNldCgpIGZpbmFsOwog
Ci0gICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgZmluYWw7CisgICAgYm9vbCB3aWxsUmVzcG9u
ZFRvTW91c2VDbGlja0V2ZW50cygpIGZpbmFsOwogCiAgICAgdm9pZCBkaXNwYXRjaENoYW5nZUV2
ZW50Rm9yTWVudUxpc3QoKTsKIApAQCAtMTUzLDE0ICsxNDYsMTQgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgcmVjYWxjTGlzdEl0ZW1zKGJvb2wgdXBkYXRlU2VsZWN0ZWRTdGF0ZXMgPSB0cnVlKSBj
b25zdDsKIAotICAgIHZvaWQgZGVzZWxlY3RJdGVtcyhIVE1MT3B0aW9uRWxlbWVudCogZXhjbHVk
ZUVsZW1lbnQgPSAwKTsKKyAgICB2b2lkIGRlc2VsZWN0SXRlbXMoSFRNTE9wdGlvbkVsZW1lbnQq
IGV4Y2x1ZGVFbGVtZW50ID0gbnVsbHB0cik7CiAgICAgdm9pZCB0eXBlQWhlYWRGaW5kKEtleWJv
YXJkRXZlbnQmKTsKICAgICB2b2lkIHNhdmVMYXN0U2VsZWN0aW9uKCk7CiAKLSAgICBJbnNlcnRp
b25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJp
ZGU7CisgICAgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFp
bmVyTm9kZSYpIGZpbmFsOwogCi0gICAgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRyb2woKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAhaXNSZXF1aXJlZEZvcm1Db250cm9sKCk7IH0KLSAgICBib29s
IGlzUmVxdWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNPcHRp
b25hbEZvcm1Db250cm9sKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIWlzUmVxdWlyZWRGb3JtQ29u
dHJvbCgpOyB9CisgICAgYm9vbCBpc1JlcXVpcmVkRm9ybUNvbnRyb2woKSBjb25zdCBmaW5hbDsK
IAogICAgIGJvb2wgaGFzUGxhY2Vob2xkZXJMYWJlbE9wdGlvbigpIGNvbnN0OwogCkBAIC0xNzEs
NyArMTY0LDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIHR5cGVkZWYgdW5zaWduZWQgU2VsZWN0
T3B0aW9uRmxhZ3M7CiAgICAgdm9pZCBzZWxlY3RPcHRpb24oaW50IG9wdGlvbkluZGV4LCBTZWxl
Y3RPcHRpb25GbGFncyA9IDApOwotICAgIHZvaWQgZGVzZWxlY3RJdGVtc1dpdGhvdXRWYWxpZGF0
aW9uKEhUTUxFbGVtZW50KiBlbGVtZW50VG9FeGNsdWRlID0gMCk7CisgICAgdm9pZCBkZXNlbGVj
dEl0ZW1zV2l0aG91dFZhbGlkYXRpb24oSFRNTEVsZW1lbnQqIGVsZW1lbnRUb0V4Y2x1ZGUgPSBu
dWxscHRyKTsKICAgICB2b2lkIHBhcnNlTXVsdGlwbGVBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3Ry
aW5nJik7CiAgICAgaW50IGxhc3RTZWxlY3RlZExpc3RJbmRleCgpIGNvbnN0OwogICAgIHZvaWQg
dXBkYXRlU2VsZWN0ZWRTdGF0ZShpbnQgbGlzdEluZGV4LCBib29sIG11bHRpLCBib29sIHNoaWZ0
KTsKQEAgLTE4MSwxMCArMTc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldE9wdGlvbnNDaGFu
Z2VkT25SZW5kZXJlcigpOwogICAgIHNpemVfdCBzZWFyY2hPcHRpb25zRm9yVmFsdWUoY29uc3Qg
U3RyaW5nJiwgc2l6ZV90IGxpc3RJbmRleFN0YXJ0LCBzaXplX3QgbGlzdEluZGV4RW5kKSBjb25z
dDsKIAotICAgIGVudW0gU2tpcERpcmVjdGlvbiB7Ci0gICAgICAgIFNraXBCYWNrd2FyZHMgPSAt
MSwKLSAgICAgICAgU2tpcEZvcndhcmRzID0gMQotICAgIH07CisgICAgZW51bSBTa2lwRGlyZWN0
aW9uIHsgU2tpcEJhY2t3YXJkcyA9IC0xLCBTa2lwRm9yd2FyZHMgPSAxIH07CiAgICAgaW50IG5l
eHRWYWxpZEluZGV4KGludCBsaXN0SW5kZXgsIFNraXBEaXJlY3Rpb24sIGludCBza2lwKSBjb25z
dDsKICAgICBpbnQgbmV4dFNlbGVjdGFibGVMaXN0SW5kZXgoaW50IHN0YXJ0SW5kZXgpIGNvbnN0
OwogICAgIGludCBwcmV2aW91c1NlbGVjdGFibGVMaXN0SW5kZXgoaW50IHN0YXJ0SW5kZXgpIGNv
bnN0OwpAQCAtMTkyLDEyICsxODIsMTMgQEAgcHJpdmF0ZToKICAgICBpbnQgbGFzdFNlbGVjdGFi
bGVMaXN0SW5kZXgoKSBjb25zdDsKICAgICBpbnQgbmV4dFNlbGVjdGFibGVMaXN0SW5kZXhQYWdl
QXdheShpbnQgc3RhcnRJbmRleCwgU2tpcERpcmVjdGlvbikgY29uc3Q7CiAKLSAgICB2b2lkIGNo
aWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOworICAgIHZvaWQgY2hp
bGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgZmluYWw7CiAKICAgICAvLyBUeXBlQWhl
YWREYXRhU291cmNlIGZ1bmN0aW9ucy4KLSAgICBpbnQgaW5kZXhPZlNlbGVjdGVkT3B0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgaW50IG9wdGlvbkNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgU3RyaW5nIG9wdGlvbkF0SW5kZXgoaW50IGluZGV4KSBjb25zdCBvdmVycmlkZTsKKyAgICBp
bnQgaW5kZXhPZlNlbGVjdGVkT3B0aW9uKCkgY29uc3QgZmluYWw7CisgICAgaW50IG9wdGlvbkNv
dW50KCkgY29uc3QgZmluYWw7CisgICAgU3RyaW5nIG9wdGlvbkF0SW5kZXgoaW50IGluZGV4KSBj
b25zdCBmaW5hbDsKKwogCiAgICAgLy8gbV9saXN0SXRlbXMgY29udGFpbnMgSFRNTE9wdGlvbkVs
ZW1lbnQsIEhUTUxPcHRHcm91cEVsZW1lbnQsIGFuZCBIVE1MSFJFbGVtZW50IG9iamVjdHMuCiAg
ICAgbXV0YWJsZSBWZWN0b3I8SFRNTEVsZW1lbnQqPiBtX2xpc3RJdGVtczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGwKaW5kZXggNWExZDk3NzlhNGUxYmU5NjZhYTEz
NzlkMDU5YWEzMWM4MjEyOWZjMC4uYjM1NDA5NmM1MDA0ODA0N2QwNzA1MjE2NGY3NDgzNTEwYmI2
ZWFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGwKQEAgLTIw
LDcgKzIwLDYgQEAKIAogWwogICAgIEN1c3RvbUluZGV4ZWRTZXR0ZXIsCi0gICAgVXNlUG9pbnRl
cnNFdmVuRm9yTm9uTnVsbGFibGVPYmplY3RBcmd1bWVudHMsCiBdIGludGVyZmFjZSBIVE1MU2Vs
ZWN0RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIGJvb2xl
YW4gYXV0b2ZvY3VzOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgYm9vbGVhbiBkaXNhYmxlZDsK
QEAgLTM5LDggKzM4LDYgQEAKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MT3B0aW9uc0Nv
bGxlY3Rpb24gb3B0aW9uczsKICNpZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSAmJiBM
QU5HVUFHRV9PQkpFQ1RJVkVfQwotICAgIC8vIERPTSBMZXZlbCAyIGNoYW5nZXMgdHlwZSBvZiBs
ZW5ndGggYXR0cmlidXRlIHRvIHVuc2lnbmVkIGxvbmcsIAotICAgIC8vIGZvciBjb21wYXRpYmls
aXR5IHdlIGtlZXAgRE9NIExldmVsIDEgZGVmaW5pdGlvbi4KICAgICByZWFkb25seSBhdHRyaWJ1
dGUgbG9uZyBsZW5ndGg7CiAjZWxzZQogICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKQEAgLTYzLDYgKzYwLDcgQEAKICNlbHNlCiAgICAg
W0ltcGxlbWVudGVkQXM9cmVtb3ZlQnlJbmRleF0gdm9pZCByZW1vdmUobG9uZyBpbmRleCk7CiAj
ZW5kaWYKKwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MQ29sbGVjdGlvbiBzZWxlY3RlZE9w
dGlvbnM7CiAgICAgYXR0cmlidXRlIGxvbmcgc2VsZWN0ZWRJbmRleDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9u
Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5v
dGF0aW9uLm1tCmluZGV4IGRlMzk0YTliODYwNDU3NTRiZjEwZTY3NTU4MjE5NDFiMmRiNmUzNjMu
LjQ3YmE5YzI5MzUxODRhNTU4MGQ5ZTY3NWM3MjVlYzI3YWNiZjNhM2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFu
bm90YXRpb24ubW0KQEAgLTM3LDcgKzM3LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ1NTUHJpbWl0
aXZlVmFsdWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ1NTUHJvcGVydHlOYW1lcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9Db2xvck1hYy5oPgotI2ltcG9ydCA8V2ViQ29yZS9IVE1MRWxlbWVudC5oPgor
I2ltcG9ydCA8V2ViQ29yZS9FdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MSW5wdXRFbGVt
ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9I
VE1MT3B0aW9uRWxlbWVudC5oPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276204</attachid>
            <date>2016-04-11 20:07:19 -0700</date>
            <delta_ts>2016-04-11 20:07:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156458-20160411200728.patch</filename>
            <type>text/plain</type>
            <size>40874</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQ1YTUwYTMzZmNkNjNl
ZmE5MWY4ZjdkMTFlZGFiOGExMDFiNjllYS4uZTIyZGE3MjA3NTQ5MjNhOGU4OWM4ODllODA5YmRm
MmE0MzMzNDVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDE2LTA0LTEwICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgVXNlUG9pbnRlcnNF
dmVuRm9yTm9uTnVsbGFibGVPYmplY3RBcmd1bWVudHMgZnJvbSBIVE1MU2VsZWN0RWxlbWVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NDU4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlKTogVXBkYXRlZCB0byBjYWxsIHJlbW92
ZSB3aXRoIGEgcmVmZXJlbmNlCisgICAgICAgIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNIVE1MU2VsZWN0RWxlbWVudDo6cmVtb3ZlKTogVXBkYXRlZCB0byBjYWxs
IHJlbW92ZSB3aXRoIGEgcmVmZXJlbmNlCisgICAgICAgIHJhdGhlciB0aGFuIGEgcG9pbnRlci4K
KyAgICAgICAgKFdlYkNvcmU6OnNlbGVjdEluZGV4U2V0dGVyKTogVXBkYXRlZCB0byBjYWxsIHNl
dE9wdGlvbiB3aXRoIGEgcmVmZXJlbmNlIHJhdGhlcgorICAgICAgICB0aGFuIGEgcG9pbnRlci4K
KworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG06Cisg
ICAgICAgIChHZW5lcmF0ZUZ1bmN0aW9uKTogQWRkZWQgYmFzaWMgc3VwcG9ydCBmb3IgcGFzc2lu
ZyB3cmFwcGVycyBieSByZWZlcmVuY2UuCisgICAgICAgIEdPYmplY3QgYmluZGluZ3MgYWxyZWFk
eSBjaGVjayBhcmd1bWVudHMgZm9yIG51bGwsIHNvIGRpZG4ndCBhZGQgYW55IG5ldyBjaGVja3Mu
CisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2suY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNl
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0T2JqLmNwcDoKKyAgICAgICAgVXBkYXRlZC4KKworICAgICAgICAqIGVkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uY3BwOiBVcGRhdGVkIGluY2x1ZGVzLgorCisgICAgICAgICogaHRtbC9IVE1MT3B0
aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6c2V0
U2VsZWN0ZWQpOiBQYXNzIHJlZmVyZW5jZSB3aGVuIGNhbGxpbmcKKyAgICAgICAgSFRNTFNlbGVj
dEVsZW1lbnQ6Om9wdGlvblNlbGVjdGlvblN0YXRlQ2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxPcHRpb25FbGVtZW50OjppbnNlcnRlZEludG8pOiBEaXR0by4KKworICAgICAgICAqIGh0
bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRp
b25zQ29sbGVjdGlvbjo6YWRkKTogTW92ZWQgbnVsbCBjaGVja2luZyBiZWhhdmlvciBoZXJlLgor
ICAgICAgICBQcmVzZXJ2ZXMgZXhpc3RpbmcgInNpbGVudGx5IGRvIG5vdGhpbmcgaWYgbnVsbCIu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnJlbW92ZSk6IENoYW5n
ZWQgZnVuY3Rpb24gdG8gdGFrZSBhIHJlZmVyZW5jZQorICAgICAgICBpbnN0ZWFkIG9mIGEgcG9p
bnRlci4KKworICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmg6IFVwZGF0ZWQg
aW5jbHVkZS4gQ2hhbmdlZCByZW1vdmUgdG8gdGFrZSBhCisgICAgICAgIHJlZmVyZW5jZSBpbnN0
ZWFkIG9mIGEgcG9pbnRlci4KKworICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmFkZCk6IENoYW5nZWQgdG8g
dGFrZSBhIHJlZmVyZW5jZSBpbnN0ZWFkIG9mCisgICAgICAgIGEgcG9pbnRlci4gQWxzbyByZW1v
dmVkIHVubmVlZGVkIHByb3RlY3QgY29kZSwgc2luY2UgaW5zZXJ0QmVmb3JlIGFscmVhZHkKKyAg
ICAgICAgcHJvdGVjdHMgaXRzZWxmLCBhbmQgdW5uZWVkZWQgY2FsbCB0byB1cGRhdGVWYWxpZGl0
eSwgc2luY2UgdGhlCisgICAgICAgIEhUTUxTZWxlY3RFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQg
ZnVuY3Rpb24gYWxyZWFkeSBjYWxscyB1cGRhdGVWYWxpZGl0eS4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxTZWxlY3RFbGVtZW50OjpyZW1vdmUpOiBDaGFuZ2VkIHRvIHRha2UgYSByZWZlcmVuY2Ug
aW5zdGVhZAorICAgICAgICBvZiBhIHBvaW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2Vs
ZWN0RWxlbWVudDo6c2V0T3B0aW9uKTogQ2hhbmdlZCB0byB0YWtlIGEgcmVmZXJlbmNlCisgICAg
ICAgIGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVs
ZW1lbnQ6OnNldExlbmd0aCk6IFJlbmFtZWQgIm5ld0xlbiIgdG8gIm5ld0xlbmd0aCIuCisgICAg
ICAgIFVzZSBSZWYgaW5zdGVhZCBvZiBSZWZQdHIgZm9yIHJlc3VsdCBvZiBjcmVhdGVFbGVtZW50
LCB3aGljaCBtYWtlcyB0aGUKKyAgICAgICAgYXJndW1lbnQgcGFzc2VkIHRvIGFkZCBiZSBhIHJl
ZmVyZW5jZSByYXRoZXIgdGhhbiBhIHBvaW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2Vs
ZWN0RWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMpOiBQdXQgdGhlICNpZgor
ICAgICAgICBmb3IgdGhpcyBoZXJlIGluc3RlYWQgb2YgaW4gdGhlIGhlYWRlci4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpvcHRpb25TZWxlY3Rpb25TdGF0ZUNoYW5nZWQp
OiBDaGFuZ2VkIHRvIHRha2UKKyAgICAgICAgYSByZWZlcmVuY2UgaW5zdGVhZCBvZiBhIHBvaW50
ZXIgZm9yIHRoZSBvcHRpb24gZWxlbWVudC4KKworICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVs
ZW1lbnQuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4gRGVyaXZlIHByaXZhdGVseQorICAg
ICAgICBmcm9tIFR5cGVBaGVhZERhdGFTb3VyY2UgaW5zdGVhZCBvZiBwdWJsaWNseS4gTWFrZSBh
bGwgb3ZlcnJpZGVzIGZpbmFsCisgICAgICAgIGV4Y2VwdCBmb3IgdGhlIG9uZSB0aGF0IGlzIGFj
dHVhbGx5IG92ZXJyaWRkZW4gYnkgYSBkZXJpdmVkIGNsYXNzLgorICAgICAgICBDaGFuZ2VkIHRo
ZSBhcmd1bWVudHMgb2YgdGhlIGFkZCwgcmVtb3ZlLCBzZXRPcHRpb24sIGFuZAorICAgICAgICBv
cHRpb25TZWxlY3Rpb25TdGF0ZUNoYW5nZWQgZnVuY3Rpb25zIHRvIGJlIHJlZmVyZW5jZXMgaW5z
dGVhZCBvZiBwb2ludGVycy4KKyAgICAgICAgVHdlYWtlZCBmb3JtYXR0aW5nIGEgYml0IGFuZCB1
c2VkIG51bGxwdHIgaW5zdGVhZCBvZiAwLiBPdmVycmlkZQorICAgICAgICB3aWxsUmVzcG9uZFRv
TW91c2VDbGlja0V2ZW50cyBvbiBhbGwgcGxhdGZvcm1zLCBub3QganVzdCBpT1MuCisKKyAgICAg
ICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbDogUmVtb3ZlZCBVc2VQb2ludGVyc0V2ZW5G
b3JOb25OdWxsYWJsZU9iamVjdEFyZ3VtZW50cy4KKyAgICAgICAgUmVtb3ZlZCBhIGNvbW1lbnQg
dGhhdCBpcyBubyBsb25nZXIgbmVlZGVkLiBNYWRlIHNvbWUgdHlwZXMgbnVsbGFibGUgdG8gbWF0
Y2gKKyAgICAgICAgdGhlIHNwZWNpZmljYXRpb24sIGluIHBsYWNlcyB0aGF0IGN1cnJlbnRseSBo
YXZlIG5vIGVmZmVjdCBvbiBjb2RlIGdlbmVyYXRpb24uCisgICAgICAgIEFkZGVkIGEgRklYTUUg
Y29tbWVudCBhYm91dCB0aGUgYXJndW1lbnQgdG8gc2V0Q3VzdG9tVmFsaWRpdHkgaW5jb3JyZWN0
bHkgYmVpbmcKKyAgICAgICAgbWFya2VkIGFzIG51bGxhYmxlLgorCiAyMDE2LTA0LTExICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBwdXRJbWFnZURhdGEgbmVlZHMg
dG8gcHJlbXVsdGlwbHkgaW5wdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCBmYzNiM2VhZjk0YjRlYWU5
Y2RlMjJhMTNmZTk4NTBkNzI1YzQ5N2ExLi5mZDA0YWFkY2JkYjNlNmYzMmYzZDY0ZmMwYjFlNzQy
YzdhY2IzMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMDQtMTAg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBVc2VQb2lu
dGVyc0V2ZW5Gb3JOb25OdWxsYWJsZU9iamVjdEFyZ3VtZW50cyBmcm9tIEhUTUxTZWxlY3RFbGVt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY0
NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERP
TUNvcmVDbGFzc2VzLmNwcDogQWRkZWQgbm93LW5lZWRlZCBpbmNsdWRlLgorCiAyMDE2LTA0LTEx
ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWJLaXQgc2hvdWxkIGFkb3B0IGpvdXJuYWxfbW9kZT13YWwgZm9yIGFsbCBTUUxpdGUgZGF0YWJh
c2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDE4MjYzYjdkZWYzYmEzMzY1NzgyMDhiMGMyYWE3YTcwZmU1MDU4
NzguLjI5NTViMjVjNTRhNjg0NDM3YWU3MDAzMzUxYThjYjUyZGMzZjI5MGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAxNi0wNC0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVtb3ZlIFVzZVBvaW50ZXJzRXZlbkZvck5vbk51bGxhYmxlT2JqZWN0
QXJndW1lbnRzIGZyb20gSFRNTFNlbGVjdEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjQ1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW5Bbm5vdGF0aW9uLm1tOiBVcGRhdGVkIGluY2x1ZGVzLgorCiAyMDE2LTA0LTExICBKZXJlbXkg
Sm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KIAogICAgICAgICBXaGVuIGNsZWFyaW5nIGNhY2hl
LCBhbHNvIGNsZWFyIEFWRm91bmRhdGlvbiBjYWNoZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcApp
bmRleCA5MjM0NWU2YjU3ZmNjNTAzMzg2YTkwYzNhMTc3OTRjNGMxMzE2ODhmLi43M2RmNTY1MDUy
YTkzM2UwMGZiNDM2NGVhYWVkODJjMmZhMDExZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3Bw
CkBAIC03NSw3ICs3NSw3IEBAIEpTVmFsdWUgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnJlbW92
ZShFeGVjU3RhdGUmIHN0YXRlKQogICAgIC8vIFRoZSBhcmd1bWVudCBjYW4gYmUgYW4gSFRNTE9w
dGlvbkVsZW1lbnQgb3IgYW4gaW5kZXguCiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IHN0YXRlLmFy
Z3VtZW50KDApOwogICAgIGlmIChIVE1MT3B0aW9uRWxlbWVudCogb3B0aW9uID0gSlNIVE1MT3B0
aW9uRWxlbWVudDo6dG9XcmFwcGVkKGFyZ3VtZW50KSkKLSAgICAgICAgd3JhcHBlZCgpLnJlbW92
ZShvcHRpb24pOworICAgICAgICB3cmFwcGVkKCkucmVtb3ZlKCpvcHRpb24pOwogICAgIGVsc2UK
ICAgICAgICAgd3JhcHBlZCgpLnJlbW92ZShhcmd1bWVudC50b0ludDMyKCZzdGF0ZSkpOwogICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcAppbmRleCAzMGUzZWJiYjg5YTRl
ZjIzYTU5Njk0YzNhYmVlNTdhODBhNjIzMWU3Li5mNzEwOTM0MzcwMGVkNzMxZDc4MmViNzRkYTgx
MDYzZTE5ZGYyODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcApAQCAtNDQsNyArNDQsNyBAQCBKU1ZhbHVl
IEpTSFRNTFNlbGVjdEVsZW1lbnQ6OnJlbW92ZShFeGVjU3RhdGUmIHN0YXRlKQogICAgIH0gZWxz
ZSB7CiAgICAgICAgIC8vIFRoZSBIVE1MU2VsZWN0RWxlbWVudDo6cmVtb3ZlKCkgZnVuY3Rpb24g
Y2FuIHRha2UgZWl0aGVyIGFuIG9wdGlvbiBvYmplY3Qgb3IgdGhlIGluZGV4IG9mIGFuIG9wdGlv
bi4KICAgICAgICAgaWYgKEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb24gPSBKU0hUTUxPcHRpb25F
bGVtZW50Ojp0b1dyYXBwZWQoc3RhdGUuYXJndW1lbnQoMCkpKQotICAgICAgICAgICAgc2VsZWN0
LnJlbW92ZShvcHRpb24pOworICAgICAgICAgICAgc2VsZWN0LnJlbW92ZSgqb3B0aW9uKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgc2VsZWN0LnJlbW92ZUJ5SW5kZXgoc3RhdGUuYXJndW1l
bnQoMCkudG9JbnQzMigmc3RhdGUpKTsKICAgICB9CkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgc2Vs
ZWN0SW5kZXhTZXR0ZXIoSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCwgSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkCiAgICAgICAgIGlmICghb3B0aW9uKQogICAgICAgICAgICAgZWMgPSBU
WVBFX01JU01BVENIX0VSUjsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2VsZWN0LT5zZXRP
cHRpb24oaW5kZXgsIG9wdGlvbiwgZWMpOworICAgICAgICAgICAgc2VsZWN0LT5zZXRPcHRpb24o
aW5kZXgsICpvcHRpb24sIGVjKTsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsK
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JHT2JqZWN0LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yR09iamVjdC5wbQppbmRleCBmZTJmOGU3NTIyMzA2MjM1MjA3MDQ4MGVjMzdj
MDliZWZkOTY4ZTc1Li45Y2Q1YWQ3OTFkZWUzMTVhZmM3NGNiMmMyMDY5NTQ5NjkyZTIwNTIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JH
T2JqZWN0LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckdPYmplY3QucG0KQEAgLTExMDksNiArMTEwOSw5IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9u
IHsKICAgICAgICAgfQogICAgICAgICBpZiAoJHBhcmFtSXNHRE9NVHlwZSB8fCAoJHBhcmFtSURM
VHlwZSBlcSAiRE9NU3RyaW5nIikpIHsKICAgICAgICAgICAgICRwYXJhbU5hbWUgPSAiY29udmVy
dGVkIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRwYXJhbU5hbWUpOworICAgICAgICAg
ICAgaWYgKCRwcmVmaXggbmUgInNldF8iICYmICRjb2RlR2VuZXJhdG9yLT5TaG91bGRQYXNzV3Jh
cHBlckJ5UmVmZXJlbmNlKCRwYXJhbSwgJHBhcmVudE5vZGUpKSB7CisgICAgICAgICAgICAgICAg
JHBhcmFtTmFtZSA9ICIqJHBhcmFtTmFtZSI7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKCRwYXJhbUlETFR5cGUgZXEgIk5vZGVGaWx0ZXIiIHx8ICRwYXJhbUlETFR5cGUg
ZXEgIlhQYXRoTlNSZXNvbHZlciIpIHsKICAgICAgICAgICAgICRwYXJhbU5hbWUgPSAiV1RGOjpn
ZXRQdHIoIiAuICRwYXJhbU5hbWUgLiAiKSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTVRlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IDdhNmE1OTdiNWU1ZGY4N2FhOTliMjcy
ZmRjNTg2MjRmMjA5NGRkY2QuLjY5Zjg4NjMzNmU2NjEwYjYyNzhmNDQxYWYwYTYzZmI5MTUzMTZl
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RBY3RpdmVET01PYmpl
Y3QuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfYWN0aXZlX2Rv
bV9vYmplY3RfZXhjaXRpbmdfZnVuY3Rpb24oV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU8KICAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfTk9ERShuZXh0Q2hpbGQpKTsKICAgICBXZWJD
b3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAg
IFdlYkNvcmU6Ok5vZGUqIGNvbnZlcnRlZE5leHRDaGlsZCA9IFdlYktpdDo6Y29yZShuZXh0Q2hp
bGQpOwotICAgIGl0ZW0tPmV4Y2l0aW5nRnVuY3Rpb24oY29udmVydGVkTmV4dENoaWxkKTsKKyAg
ICBpdGVtLT5leGNpdGluZ0Z1bmN0aW9uKCpjb252ZXJ0ZWROZXh0Q2hpbGQpOwogfQogCiB2b2lk
IHdlYmtpdF9kb21fdGVzdF9hY3RpdmVfZG9tX29iamVjdF9wb3N0X21lc3NhZ2UoV2ViS2l0RE9N
VGVzdEFjdGl2ZURPTU9iamVjdCogc2VsZiwgY29uc3QgZ2NoYXIqIG1lc3NhZ2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0Q2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrLmNwcAppbmRleCA4Y2VjY2NlNDhhNzkzM2Fj
MWJiNjY5YjY2ZDhmYjg1NmU1Nzk4YTcyLi5jN2ViMzhkNGE1YmJlMDY4NGU3NWIxMmZkNDE1N2Yy
ZTIzZmQ4N2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5jcHAK
QEAgLTEzNSw3ICsxMzUsNyBAQCBnYm9vbGVhbiB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfY2Fs
bGJhY2tfd2l0aF9hcnJheV9wYXJhbShXZWJLaXRET01UZXN0Q2FsbGJhYwogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfRkxPQVQzMkFSUkFZKGFycmF5UGFyYW0pLCBGQUxT
RSk7CiAgICAgV2ViQ29yZTo6VGVzdENhbGxiYWNrKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwogICAgIFdlYkNvcmU6OkZsb2F0MzJBcnJheSogY29udmVydGVkQXJyYXlQYXJhbSA9IFdlYktp
dDo6Y29yZShhcnJheVBhcmFtKTsKLSAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5jYWxsYmFj
a1dpdGhBcnJheVBhcmFtKGNvbnZlcnRlZEFycmF5UGFyYW0pOworICAgIGdib29sZWFuIHJlc3Vs
dCA9IGl0ZW0tPmNhbGxiYWNrV2l0aEFycmF5UGFyYW0oKmNvbnZlcnRlZEFycmF5UGFyYW0pOwog
ICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKQEAgLTE5
MSw3ICsxOTEsNyBAQCBnYm9vbGVhbiB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tf
d2l0aF9zdHJpbmdfbGlzdChXZWJLaXRET01UZXN0Q2FsbGJhYwogICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9ET01fSVNfRE9NX1NUUklOR19MSVNUKGxpc3RQYXJhbSksIEZBTFNFKTsK
ICAgICBXZWJDb3JlOjpUZXN0Q2FsbGJhY2sqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAg
ICAgV2ViQ29yZTo6RE9NU3RyaW5nTGlzdCogY29udmVydGVkTGlzdFBhcmFtID0gV2ViS2l0Ojpj
b3JlKGxpc3RQYXJhbSk7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+Y2FsbGJhY2tXaXRo
U3RyaW5nTGlzdChjb252ZXJ0ZWRMaXN0UGFyYW0pOworICAgIGdib29sZWFuIHJlc3VsdCA9IGl0
ZW0tPmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoKmNvbnZlcnRlZExpc3RQYXJhbSk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNlbGYpOwpAQCAtMjI1LDcgKzIy
NSw3IEBAIGdib29sZWFuIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja19yZXF1aXJl
c190aGlzX3RvX3Bhc3MoV2ViS2l0RE9NVGVzdENhCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0RPTV9JU19URVNUX05PREUodGVzdE5vZGVQYXJhbSksIEZBTFNFKTsKICAgICBXZWJD
b3JlOjpUZXN0Q2FsbGJhY2sqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV2ViQ29y
ZTo6VGVzdE5vZGUqIGNvbnZlcnRlZFRlc3ROb2RlUGFyYW0gPSBXZWJLaXQ6OmNvcmUodGVzdE5v
ZGVQYXJhbSk7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+Y2FsbGJhY2tSZXF1aXJlc1Ro
aXNUb1Bhc3MobG9uZ1BhcmFtLCBjb252ZXJ0ZWRUZXN0Tm9kZVBhcmFtKTsKKyAgICBnYm9vbGVh
biByZXN1bHQgPSBpdGVtLT5jYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyhsb25nUGFyYW0sICpj
b252ZXJ0ZWRUZXN0Tm9kZVBhcmFtKTsKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oc2VsZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
Q2FsbGJhY2tGdW5jdGlvbi5jcHAKaW5kZXggMzU4YzRlNmE1ZGIyZTBlYTc2ODljNTYyN2JjNzRj
MDZjODJhZjY0My4uZTQ1ZTUyNDNhYTIxZDllOWFhMWY4NmVkMTM5ZDNhNmExZTkxOWU3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uLmNw
cApAQCAtMTM1LDcgKzEzNSw3IEBAIGdib29sZWFuIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19m
dW5jdGlvbl9jYWxsYmFja193aXRoX2FycmF5X3BhcmFtKFdlYktpdERPTVRlCiAgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19GTE9BVDMyQVJSQVkoYXJyYXlQYXJhbSksIEZB
TFNFKTsKICAgICBXZWJDb3JlOjpUZXN0Q2FsbGJhY2tGdW5jdGlvbiogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKICAgICBXZWJDb3JlOjpGbG9hdDMyQXJyYXkqIGNvbnZlcnRlZEFycmF5UGFy
YW0gPSBXZWJLaXQ6OmNvcmUoYXJyYXlQYXJhbSk7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRl
bS0+Y2FsbGJhY2tXaXRoQXJyYXlQYXJhbShjb252ZXJ0ZWRBcnJheVBhcmFtKTsKKyAgICBnYm9v
bGVhbiByZXN1bHQgPSBpdGVtLT5jYWxsYmFja1dpdGhBcnJheVBhcmFtKCpjb252ZXJ0ZWRBcnJh
eVBhcmFtKTsKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc2Vs
Zik7CkBAIC0xOTEsNyArMTkxLDcgQEAgZ2Jvb2xlYW4gd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNr
X2Z1bmN0aW9uX2NhbGxiYWNrX3dpdGhfc3RyaW5nX2xpc3QoV2ViS2l0RE9NVGUKICAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0RPTV9TVFJJTkdfTElTVChsaXN0UGFyYW0p
LCBGQUxTRSk7CiAgICAgV2ViQ29yZTo6VGVzdENhbGxiYWNrRnVuY3Rpb24qIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7CiAgICAgV2ViQ29yZTo6RE9NU3RyaW5nTGlzdCogY29udmVydGVkTGlz
dFBhcmFtID0gV2ViS2l0Ojpjb3JlKGxpc3RQYXJhbSk7Ci0gICAgZ2Jvb2xlYW4gcmVzdWx0ID0g
aXRlbS0+Y2FsbGJhY2tXaXRoU3RyaW5nTGlzdChjb252ZXJ0ZWRMaXN0UGFyYW0pOworICAgIGdi
b29sZWFuIHJlc3VsdCA9IGl0ZW0tPmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoKmNvbnZlcnRlZExp
c3RQYXJhbSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNl
bGYpOwpAQCAtMjI1LDcgKzIyNSw3IEBAIGdib29sZWFuIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFj
a19mdW5jdGlvbl9jYWxsYmFja19yZXF1aXJlc190aGlzX3RvX3Bhc3MoV2ViS2l0CiAgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX05PREUodGVzdE5vZGVQYXJhbSks
IEZBTFNFKTsKICAgICBXZWJDb3JlOjpUZXN0Q2FsbGJhY2tGdW5jdGlvbiogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKICAgICBXZWJDb3JlOjpUZXN0Tm9kZSogY29udmVydGVkVGVzdE5vZGVQ
YXJhbSA9IFdlYktpdDo6Y29yZSh0ZXN0Tm9kZVBhcmFtKTsKLSAgICBnYm9vbGVhbiByZXN1bHQg
PSBpdGVtLT5jYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyhsb25nUGFyYW0sIGNvbnZlcnRlZFRl
c3ROb2RlUGFyYW0pOworICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmNhbGxiYWNrUmVxdWly
ZXNUaGlzVG9QYXNzKGxvbmdQYXJhbSwgKmNvbnZlcnRlZFRlc3ROb2RlUGFyYW0pOwogICAgIHJl
dHVybiByZXN1bHQ7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHAKaW5kZXggNWI0NTU3NDA4ODI1Y2IyNmE3
ZTc5ZDU0YWI3ZGVlNWUyMDExNGM4OC4uODg2N2VkNjJhNDlhMmZmNDk1ZGQ1ZjJjYzFkNjY4ZDYw
M2JlYjZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHAK
QEAgLTI2Myw3ICsyNjMsNyBAQCBXZWJLaXRET01UZXN0T2JqKiB3ZWJraXRfZG9tX3Rlc3RfaW50
ZXJmYWNlX2ltcGxlbWVudHNfbWV0aG9kMihXZWJLaXRET01UZXN0SW50ZQogICAgIFdURjo6U3Ry
aW5nIGNvbnZlcnRlZFN0ckFyZyA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHJBcmcpOwogICAg
IFdlYkNvcmU6OlRlc3RPYmoqIGNvbnZlcnRlZE9iakFyZyA9IFdlYktpdDo6Y29yZShvYmpBcmcp
OwogICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpUZXN0T2JqPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+aW1wbGVtZW50c01l
dGhvZDIoY29udmVydGVkU3RyQXJnLCBjb252ZXJ0ZWRPYmpBcmcsIGVjKSk7CisgICAgUmVmUHRy
PFdlYkNvcmU6OlRlc3RPYmo+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5pbXBs
ZW1lbnRzTWV0aG9kMihjb252ZXJ0ZWRTdHJBcmcsICpjb252ZXJ0ZWRPYmpBcmcsIGVjKSk7CiAg
ICAgaWYgKGVjKSB7CiAgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBl
Y2Rlc2MoZWMpOwogICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zy
b21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7CkBAIC0z
MjIsNyArMzIyLDcgQEAgV2ViS2l0RE9NVGVzdE9iaiogd2Via2l0X2RvbV90ZXN0X2ludGVyZmFj
ZV9zdXBwbGVtZW50YWxfbWV0aG9kMihXZWJLaXRET01UZXN0SW4KICAgICBXVEY6OlN0cmluZyBj
b252ZXJ0ZWRTdHJBcmcgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyQXJnKTsKICAgICBXZWJD
b3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRPYmpBcmcgPSBXZWJLaXQ6OmNvcmUob2JqQXJnKTsKICAg
ICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6VGVz
dE9iaj4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50
YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDIoKml0ZW0sIGNvbnZlcnRlZFN0ckFyZywgY29udmVydGVk
T2JqQXJnLCBlYykpOworICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBnb2JqZWN0UmVzdWx0
ID0gV1RGOjpnZXRQdHIoV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0
aG9kMigqaXRlbSwgY29udmVydGVkU3RyQXJnLCAqY29udmVydGVkT2JqQXJnLCBlYykpOwogICAg
IGlmIChlYykgewogICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNk
ZXNjKGVjKTsKICAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9t
X3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0T2JqLmNwcAppbmRleCAzODA5N2U1MDhiZTgyZjg0MmY0ODFjZTYw
ZjZmMmZiYzFlZDlmYmUyLi44OGEyYmNjZjBkNzk0N2RlMWRlNzZiZTRiYzZhZDcxNGQ4NDNmNWJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01UZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcApAQCAtMTIxNiw3ICsxMjE2LDcg
QEAgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZvaWRfbWV0aG9kX3dpdGhfYXJncyhXZWJLaXRE
T01UZXN0T2JqKiBzZWxmLCBnbG9uZyBsb24KICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFN0ckFyZyA9IFdU
Rjo6U3RyaW5nOjpmcm9tVVRGOChzdHJBcmcpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNvbnZl
cnRlZE9iakFyZyA9IFdlYktpdDo6Y29yZShvYmpBcmcpOwotICAgIGl0ZW0tPnZvaWRNZXRob2RX
aXRoQXJncyhsb25nQXJnLCBjb252ZXJ0ZWRTdHJBcmcsIGNvbnZlcnRlZE9iakFyZyk7CisgICAg
aXRlbS0+dm9pZE1ldGhvZFdpdGhBcmdzKGxvbmdBcmcsIGNvbnZlcnRlZFN0ckFyZywgKmNvbnZl
cnRlZE9iakFyZyk7CiB9CiAKIGdpbnQ4IHdlYmtpdF9kb21fdGVzdF9vYmpfYnl0ZV9tZXRob2Qo
V2ViS2l0RE9NVGVzdE9iaiogc2VsZikKQEAgLTEyMzcsNyArMTIzNyw3IEBAIGdpbnQ4IHdlYmtp
dF9kb21fdGVzdF9vYmpfYnl0ZV9tZXRob2Rfd2l0aF9hcmdzKFdlYktpdERPTVRlc3RPYmoqIHNl
bGYsIGdpbnQ4IGJ5CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTdHJBcmcgPSBXVEY6OlN0cmluZzo6ZnJv
bVVURjgoc3RyQXJnKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRPYmpBcmcgPSBX
ZWJLaXQ6OmNvcmUob2JqQXJnKTsKLSAgICBnaW50OCByZXN1bHQgPSBpdGVtLT5ieXRlTWV0aG9k
V2l0aEFyZ3MoYnl0ZUFyZywgY29udmVydGVkU3RyQXJnLCBjb252ZXJ0ZWRPYmpBcmcpOworICAg
IGdpbnQ4IHJlc3VsdCA9IGl0ZW0tPmJ5dGVNZXRob2RXaXRoQXJncyhieXRlQXJnLCBjb252ZXJ0
ZWRTdHJBcmcsICpjb252ZXJ0ZWRPYmpBcmcpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAg
LTEyNTksNyArMTI1OSw3IEBAIGd1aW50OCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX29jdGV0X21ldGhv
ZF93aXRoX2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ3VpbnQ4CiAgICAgV2ViQ29yZTo6
VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmluZyBjb252
ZXJ0ZWRTdHJBcmcgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyQXJnKTsKICAgICBXZWJDb3Jl
OjpUZXN0T2JqKiBjb252ZXJ0ZWRPYmpBcmcgPSBXZWJLaXQ6OmNvcmUob2JqQXJnKTsKLSAgICBn
dWludDggcmVzdWx0ID0gaXRlbS0+b2N0ZXRNZXRob2RXaXRoQXJncyhvY3RldEFyZywgY29udmVy
dGVkU3RyQXJnLCBjb252ZXJ0ZWRPYmpBcmcpOworICAgIGd1aW50OCByZXN1bHQgPSBpdGVtLT5v
Y3RldE1ldGhvZFdpdGhBcmdzKG9jdGV0QXJnLCBjb252ZXJ0ZWRTdHJBcmcsICpjb252ZXJ0ZWRP
YmpBcmcpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTEyODEsNyArMTI4MSw3IEBAIGds
b25nIHdlYmtpdF9kb21fdGVzdF9vYmpfbG9uZ19tZXRob2Rfd2l0aF9hcmdzKFdlYktpdERPTVRl
c3RPYmoqIHNlbGYsIGdsb25nIGxvCiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTdHJBcmcgPSBXVEY6OlN0
cmluZzo6ZnJvbVVURjgoc3RyQXJnKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRP
YmpBcmcgPSBXZWJLaXQ6OmNvcmUob2JqQXJnKTsKLSAgICBnbG9uZyByZXN1bHQgPSBpdGVtLT5s
b25nTWV0aG9kV2l0aEFyZ3MobG9uZ0FyZywgY29udmVydGVkU3RyQXJnLCBjb252ZXJ0ZWRPYmpB
cmcpOworICAgIGdsb25nIHJlc3VsdCA9IGl0ZW0tPmxvbmdNZXRob2RXaXRoQXJncyhsb25nQXJn
LCBjb252ZXJ0ZWRTdHJBcmcsICpjb252ZXJ0ZWRPYmpBcmcpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKQEAgLTEzMDMsNyArMTMwMyw3IEBAIFdlYktpdERPTVRlc3RPYmoqIHdlYmtpdF9kb21f
dGVzdF9vYmpfb2JqX21ldGhvZF93aXRoX2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiogc2VsCiAgICAg
V2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0
cmluZyBjb252ZXJ0ZWRTdHJBcmcgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyQXJnKTsKICAg
ICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRPYmpBcmcgPSBXZWJLaXQ6OmNvcmUob2JqQXJn
KTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0
UHRyKGl0ZW0tPm9iak1ldGhvZFdpdGhBcmdzKGxvbmdBcmcsIGNvbnZlcnRlZFN0ckFyZywgY29u
dmVydGVkT2JqQXJnKSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IGdvYmplY3RSZXN1
bHQgPSBXVEY6OmdldFB0cihpdGVtLT5vYmpNZXRob2RXaXRoQXJncyhsb25nQXJnLCBjb252ZXJ0
ZWRTdHJBcmcsICpjb252ZXJ0ZWRPYmpBcmcpKTsKICAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29i
amVjdFJlc3VsdC5nZXQoKSk7CiB9CiAKQEAgLTEzNzUsNyArMTM3NSw3IEBAIFdlYktpdERPTVRl
c3RPYmoqIHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3RoYXRfcmVxdWlyZXNfYWxsX2FyZ3Nf
YW5kX3Rocm93cyhXCiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVkU3RyQXJnID0gV1RGOjpTdHJp
bmc6OmZyb21VVEY4KHN0ckFyZyk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkT2Jq
QXJnID0gV2ViS2l0Ojpjb3JlKG9iakFyZyk7CiAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IGdvYmplY3RSZXN1bHQgPSBXVEY6
OmdldFB0cihpdGVtLT5tZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKGNvbnZlcnRl
ZFN0ckFyZywgY29udmVydGVkT2JqQXJnLCBlYykpOworICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0
T2JqPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+bWV0aG9kVGhhdFJlcXVpcmVz
QWxsQXJnc0FuZFRocm93cyhjb252ZXJ0ZWRTdHJBcmcsICpjb252ZXJ0ZWRPYmpBcmcsIGVjKSk7
CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
biBlY2Rlc2MoZWMpOwogICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJr
X2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7CkBA
IC0xNjQ2LDcgKzE2NDYsNyBAQCB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfY29udmVydDEoV2Vi
S2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NVGVzdE5vZGUqIHZhbAogICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX05PREUodmFsdWUpKTsKICAgICBXZWJDb3JlOjpU
ZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6OlRlc3ROb2Rl
KiBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7Ci0gICAgaXRlbS0+Y29udmVy
dDEoY29udmVydGVkVmFsdWUpOworICAgIGl0ZW0tPmNvbnZlcnQxKCpjb252ZXJ0ZWRWYWx1ZSk7
CiB9CiAKIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9jb252ZXJ0MihXZWJLaXRET01UZXN0T2Jq
KiBzZWxmLCBXZWJLaXRET01UZXN0Tm9kZSogdmFsdWUpCkBAIC0xNzMzLDcgKzE3MzMsNyBAQCBX
ZWJLaXRET01ib29sKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3N0cmljdF9mdW5jdGlvbl93aXRoX2Fy
cmF5KFdlYktpdERPTVRlc3RPYmoqCiAgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkT2Jq
QXJnID0gV2ViS2l0Ojpjb3JlKG9iakFyZyk7CiAgICAgV2ViQ29yZTo6bG9uZ1tdKiBjb252ZXJ0
ZWRBcnJheSA9IFdlYktpdDo6Y29yZShhcnJheSk7CiAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OmJvb2w+IGdvYmplY3RSZXN1bHQgPSBXVEY6
OmdldFB0cihpdGVtLT5zdHJpY3RGdW5jdGlvbldpdGhBcnJheShjb252ZXJ0ZWRPYmpBcmcsIGFy
cmF5LCBlYykpOworICAgIFJlZlB0cjxXZWJDb3JlOjpib29sPiBnb2JqZWN0UmVzdWx0ID0gV1RG
OjpnZXRQdHIoaXRlbS0+c3RyaWN0RnVuY3Rpb25XaXRoQXJyYXkoKmNvbnZlcnRlZE9iakFyZywg
YXJyYXksIGVjKSk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOwogICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVy
cm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rl
c2MubmFtZSk7CkBAIC0xNzcwLDcgKzE3NzAsNyBAQCB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpf
dmFyaWFkaWNfbm9kZV9tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NTgog
ICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV2Vi
Q29yZTo6Tm9kZSogY29udmVydGVkSGVhZCA9IFdlYktpdDo6Y29yZShoZWFkKTsKICAgICBXZWJD
b3JlOjpOb2RlKiBjb252ZXJ0ZWRUYWlsID0gV2ViS2l0Ojpjb3JlKHRhaWwpOwotICAgIGl0ZW0t
PnZhcmlhZGljTm9kZU1ldGhvZChjb252ZXJ0ZWRIZWFkLCBjb252ZXJ0ZWRUYWlsKTsKKyAgICBp
dGVtLT52YXJpYWRpY05vZGVNZXRob2QoKmNvbnZlcnRlZEhlYWQsIGNvbnZlcnRlZFRhaWwpOwog
fQogCiB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfYW55KFdlYktpdERPTVRlc3RPYmoqIHNlbGYs
IGdmbG9hdCBhLCBnbG9uZyBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcAppbmRleCA3MTk5MDYyOWQ0NTdlODMyYzIwYmI5MmFlYjNiYzQ1MGJmNDAxNmMyLi41YWMz
MDc3N2VkZjhlNmE4NDUzYWQxNzQ3MzQzYjkzYjYwYjQzNTdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkVk
aXRvckNsaWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50SXRl
cmF0b3IuaCIKKyNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKQEAgLTQ2
LDggKzQ3LDggQEAKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
RnJhbWVFbGVtZW50QmFzZS5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKLSNpbmNs
dWRlICJIVE1MU2VsZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1
ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNp
bmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAppbmRleCBiYWE0OWQyMTNmZWIw
YzYzYTQwNDRiNTkwNWE3N2I2YmUzNmZhNWRmLi44OWMzMGZkMmU2MDkzNDg4NTExNDJhNTY1YTI3
NTg4MjYwMzZhMjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNw
cApAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OnNldFNlbGVjdGVk
KGJvb2wgc2VsZWN0ZWQpCiAgICAgc2V0U2VsZWN0ZWRTdGF0ZShzZWxlY3RlZCk7CiAKICAgICBp
ZiAoSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9IG93bmVyU2VsZWN0RWxlbWVudCgpKQotICAg
ICAgICBzZWxlY3QtPm9wdGlvblNlbGVjdGlvblN0YXRlQ2hhbmdlZCh0aGlzLCBzZWxlY3RlZCk7
CisgICAgICAgIHNlbGVjdC0+b3B0aW9uU2VsZWN0aW9uU3RhdGVDaGFuZ2VkKCp0aGlzLCBzZWxl
Y3RlZCk7CiB9CiAKIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OnNldFNlbGVjdGVkU3RhdGUoYm9v
bCBzZWxlY3RlZCkKQEAgLTMxNCw3ICszMTQsNyBAQCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRp
b25SZXF1ZXN0IEhUTUxPcHRpb25FbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZQog
ICAgICAgICAvLyBGSVhNRTogTWlnaHQgYmUgYmV0dGVyIHRvIGNhbGwgdGhpcyB1bmNvbmRpdGlv
bmFsbHksIGFsd2F5cyBwYXNzaW5nIG1faXNTZWxlY3RlZCwKICAgICAgICAgLy8gcmF0aGVyIHRo
YW4gb25seSBjYWxsaW5nIGl0IGlmIHdlIGFyZSBzZWxlY3RlZC4KICAgICAgICAgaWYgKG1faXNT
ZWxlY3RlZCkKLSAgICAgICAgICAgIHNlbGVjdC0+b3B0aW9uU2VsZWN0aW9uU3RhdGVDaGFuZ2Vk
KHRoaXMsIHRydWUpOworICAgICAgICAgICAgc2VsZWN0LT5vcHRpb25TZWxlY3Rpb25TdGF0ZUNo
YW5nZWQoKnRoaXMsIHRydWUpOwogICAgICAgICBzZWxlY3QtPnNjcm9sbFRvU2VsZWN0aW9uKCk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29s
bGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5j
cHAKaW5kZXggYjM2YzNmNDgwY2NlNWM0NjViMGZlY2RmYzkxN2VkMTQ5MTMwOWRiYS4uYzBkNjM4
ZGU3OTllNzg0OTU5M2MwNGQ0MzBjOWMxY2E3ODkzNWU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcApAQCAtMzgsNyArMzgsOSBAQCBSZWY8SFRN
TE9wdGlvbnNDb2xsZWN0aW9uPiBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmNyZWF0ZShIVE1MU2Vs
ZWN0RWxlbWVudCYgc2VsZQogCiB2b2lkIEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6YWRkKEhUTUxF
bGVtZW50KiBlbGVtZW50LCBIVE1MRWxlbWVudCogYmVmb3JlRWxlbWVudCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7Ci0gICAgc2VsZWN0RWxlbWVudCgpLmFkZChlbGVtZW50LCBiZWZvcmVFbGVtZW50
LCBlYyk7CisgICAgaWYgKCFlbGVtZW50KQorICAgICAgICByZXR1cm47CisgICAgc2VsZWN0RWxl
bWVudCgpLmFkZCgqZWxlbWVudCwgYmVmb3JlRWxlbWVudCwgZWMpOwogfQogCiB2b2lkIEhUTUxP
cHRpb25zQ29sbGVjdGlvbjo6YWRkKEhUTUxFbGVtZW50KiBlbGVtZW50LCBpbnQgYmVmb3JlSW5k
ZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNTEsNyArNTMsNyBAQCB2b2lkIEhUTUxPcHRpb25z
Q29sbGVjdGlvbjo6cmVtb3ZlKGludCBpbmRleCkKICAgICBzZWxlY3RFbGVtZW50KCkucmVtb3Zl
QnlJbmRleChpbmRleCk7CiB9CiAKLXZvaWQgSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1vdmUo
SFRNTE9wdGlvbkVsZW1lbnQqIG9wdGlvbikKK3ZvaWQgSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpy
ZW1vdmUoSFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlvbikKIHsKICAgICBzZWxlY3RFbGVtZW50KCku
cmVtb3ZlKG9wdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRpb25zQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxl
Y3Rpb24uaAppbmRleCA0OGYzNWVlY2VjOGM4YWRmOGViMmU2Y2MxZTNhZjdhMDYzZjU2MzU0Li4y
ZWQ2MjA2NzlhNzVkODc2YmFmYzQ2ZGM0YWIxMjFkMmYxMTBjMDQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNkZWZp
bmUgSFRNTE9wdGlvbnNDb2xsZWN0aW9uX2gKIAogI2luY2x1ZGUgIkNhY2hlZEhUTUxDb2xsZWN0
aW9uLmgiCisjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MU2Vs
ZWN0RWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw3ICs0Nyw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFkZChIVE1MRWxlbWVudCosIEhUTUxFbGVtZW50KiBiZWZvcmVFbGVt
ZW50LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBhZGQoSFRNTEVsZW1lbnQqLCBpbnQgYmVm
b3JlSW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHJlbW92ZShpbnQgaW5kZXgpOwot
ICAgIHZvaWQgcmVtb3ZlKEhUTUxPcHRpb25FbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmUoSFRN
TE9wdGlvbkVsZW1lbnQmKTsKIAogICAgIGludCBzZWxlY3RlZEluZGV4KCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRTZWxlY3RlZEluZGV4KGludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuY3BwCmluZGV4IGE5NTgxZjYzZTE2MTE3ZjQ1YzZmYmZmMGM0NDA4ZDhhNzU5MjFh
YmUuLjMzZDMzMWQ3MTI1ODQxMjQ5NmI3ZWRkZTliNjdhNzlkYzI2ZmZlMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC0yMjAsMTkgKzIyMCwxNCBAQCBp
bnQgSFRNTFNlbGVjdEVsZW1lbnQ6OmFjdGl2ZVNlbGVjdGlvbkVuZExpc3RJbmRleCgpIGNvbnN0
CiAgICAgcmV0dXJuIGxhc3RTZWxlY3RlZExpc3RJbmRleCgpOwogfQogCi12b2lkIEhUTUxTZWxl
Y3RFbGVtZW50OjphZGQoSFRNTEVsZW1lbnQqIGVsZW1lbnQsIEhUTUxFbGVtZW50KiBiZWZvcmVF
bGVtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmFkZChI
VE1MRWxlbWVudCYgZWxlbWVudCwgSFRNTEVsZW1lbnQqIGJlZm9yZUVsZW1lbnQsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewotICAgIGlmICghZWxlbWVudCB8fCAhKGlzPEhUTUxPcHRpb25FbGVtZW50
PigqZWxlbWVudCkgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShoclRhZykgfHwgaXM8SFRNTE9wdEdy
b3VwRWxlbWVudD4oKmVsZW1lbnQpKSkKKyAgICBpZiAoIShpczxIVE1MT3B0aW9uRWxlbWVudD4o
ZWxlbWVudCkgfHwgaXM8SFRNTEhSRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTE9wdEdyb3Vw
RWxlbWVudD4oZWxlbWVudCkpKQogICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBNYWtlIHN1cmUg
dGhlIGVsZW1lbnQgaXMgcmVmJ2QgYW5kIGRlcmVmJ2Qgc28gd2UgZG9uJ3QgbGVhayBpdC4KLSAg
ICBSZWY8SFRNTEVsZW1lbnQ+IHByb3RlY3ROZXdDaGlsZCgqZWxlbWVudCk7Ci0KLSAgICBpbnNl
cnRCZWZvcmUoKmVsZW1lbnQsIGJlZm9yZUVsZW1lbnQsIGVjKTsKLSAgICB1cGRhdGVWYWxpZGl0
eSgpOworICAgIGluc2VydEJlZm9yZShlbGVtZW50LCBiZWZvcmVFbGVtZW50LCBlYyk7CiB9CiAK
LXZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmFkZChIVE1MRWxlbWVudCogZWxlbWVudCwgaW50IGJl
Zm9yZUluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmFk
ZChIVE1MRWxlbWVudCYgZWxlbWVudCwgaW50IGJlZm9yZUluZGV4LCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBhZGQoZWxlbWVudCwgaXRlbShiZWZvcmVJbmRleCksIGVjKTsKIH0KQEAgLTI0
NiwxMiArMjQxLDEyIEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlbW92ZUJ5SW5kZXgoaW50
IG9wdGlvbkluZGV4KQogICAgIGxpc3RJdGVtcygpW2xpc3RJbmRleF0tPnJlbW92ZShJR05PUkVf
RVhDRVBUSU9OKTsKIH0KIAotdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVtb3ZlKEhUTUxPcHRp
b25FbGVtZW50KiBvcHRpb24pCit2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpyZW1vdmUoSFRNTE9w
dGlvbkVsZW1lbnQmIG9wdGlvbikKIHsKLSAgICBpZiAob3B0aW9uLT5vd25lclNlbGVjdEVsZW1l
bnQoKSAhPSB0aGlzKQorICAgIGlmIChvcHRpb24ub3duZXJTZWxlY3RFbGVtZW50KCkgIT0gdGhp
cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgb3B0aW9uLT5yZW1vdmUoSUdOT1JFX0VYQ0VQVElP
Tik7CisgICAgb3B0aW9uLnJlbW92ZShJR05PUkVfRVhDRVBUSU9OKTsKIH0KIAogU3RyaW5nIEhU
TUxTZWxlY3RFbGVtZW50Ojp2YWx1ZSgpIGNvbnN0CkBAIC00MzUsNyArNDMwLDcgQEAgSFRNTE9w
dGlvbkVsZW1lbnQqIEhUTUxTZWxlY3RFbGVtZW50OjppdGVtKHVuc2lnbmVkIGluZGV4KQogICAg
IHJldHVybiBvcHRpb25zKCktPml0ZW0oaW5kZXgpOwogfQogCi12b2lkIEhUTUxTZWxlY3RFbGVt
ZW50OjpzZXRPcHRpb24odW5zaWduZWQgaW5kZXgsIEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb24s
IEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0T3B0aW9uKHVu
c2lnbmVkIGluZGV4LCBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBlYyA9IDA7CiAgICAgaWYgKGluZGV4ID4gbWF4U2VsZWN0SXRlbXMgLSAxKQpA
QCAtNDUzLDIyICs0NDgsMjEgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0T3B0aW9uKHVu
c2lnbmVkIGluZGV4LCBIVE1MT3B0aW9uRWxlbWVudCogb3B0aW9uLCBFeGMKICAgICAvLyBGaW5h
bGx5IGFkZCB0aGUgbmV3IGVsZW1lbnQuCiAgICAgaWYgKCFlYykgewogICAgICAgICBhZGQob3B0
aW9uLCBiZWZvcmUuZ2V0KCksIGVjKTsKLSAgICAgICAgaWYgKGRpZmYgPj0gMCAmJiBvcHRpb24t
PnNlbGVjdGVkKCkpCisgICAgICAgIGlmIChkaWZmID49IDAgJiYgb3B0aW9uLnNlbGVjdGVkKCkp
CiAgICAgICAgICAgICBvcHRpb25TZWxlY3Rpb25TdGF0ZUNoYW5nZWQob3B0aW9uLCB0cnVlKTsK
ICAgICB9CiB9CiAKLXZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldExlbmd0aCh1bnNpZ25lZCBu
ZXdMZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0TGVu
Z3RoKHVuc2lnbmVkIG5ld0xlbmd0aCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZWMgPSAw
OwotICAgIGlmIChuZXdMZW4gPiBtYXhTZWxlY3RJdGVtcykKLSAgICAgICAgbmV3TGVuID0gbWF4
U2VsZWN0SXRlbXM7Ci0gICAgaW50IGRpZmYgPSBsZW5ndGgoKSAtIG5ld0xlbjsKKyAgICBpZiAo
bmV3TGVuZ3RoID4gbWF4U2VsZWN0SXRlbXMpCisgICAgICAgIG5ld0xlbmd0aCA9IG1heFNlbGVj
dEl0ZW1zOworICAgIGludCBkaWZmID0gbGVuZ3RoKCkgLSBuZXdMZW5ndGg7CiAKICAgICBpZiAo
ZGlmZiA8IDApIHsgLy8gQWRkIGR1bW15IGVsZW1lbnRzLgogICAgICAgICBkbyB7Ci0gICAgICAg
ICAgICBSZWZQdHI8RWxlbWVudD4gb3B0aW9uID0gZG9jdW1lbnQoKS5jcmVhdGVFbGVtZW50KG9w
dGlvblRhZywgZmFsc2UpOwotICAgICAgICAgICAgQVNTRVJUKG9wdGlvbik7CisgICAgICAgICAg
ICBhdXRvIG9wdGlvbiA9IGRvY3VtZW50KCkuY3JlYXRlRWxlbWVudChvcHRpb25UYWcsIGZhbHNl
KTsKICAgICAgICAgICAgIGFkZChkb3duY2FzdDxIVE1MRWxlbWVudD4ob3B0aW9uLmdldCgpKSwg
bnVsbHB0ciwgZWMpOwogICAgICAgICAgICAgaWYgKGVjKQogICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtNDgxLDcgKzQ3NSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldExlbmd0aCh1
bnNpZ25lZCBuZXdMZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBWZWN0b3I8UmVmPEVs
ZW1lbnQ+PiBpdGVtc1RvUmVtb3ZlOwogICAgICAgICBzaXplX3Qgb3B0aW9uSW5kZXggPSAwOwog
ICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBpdGVtcykgewotICAgICAgICAgICAgaWYgKGlzPEhU
TUxPcHRpb25FbGVtZW50PigqaXRlbSkgJiYgb3B0aW9uSW5kZXgrKyA+PSBuZXdMZW4pIHsKKyAg
ICAgICAgICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oKml0ZW0pICYmIG9wdGlvbkluZGV4
KysgPj0gbmV3TGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGl0ZW0tPnBhcmVudE5v
ZGUoKSk7CiAgICAgICAgICAgICAgICAgaXRlbXNUb1JlbW92ZS5hcHBlbmQoKml0ZW0pOwogICAg
ICAgICAgICAgfQpAQCAtNTAwLDEyICs0OTQsMTQgQEAgYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6
aXNSZXF1aXJlZEZvcm1Db250cm9sKCkgY29uc3QKICAgICByZXR1cm4gaXNSZXF1aXJlZCgpOwog
fQogCi0jaWYgUExBVEZPUk0oSU9TKQogYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6d2lsbFJlc3Bv
bmRUb01vdXNlQ2xpY2tFdmVudHMoKQogeworI2lmIFBMQVRGT1JNKElPUykKICAgICByZXR1cm4g
IWlzRGlzYWJsZWRGb3JtQ29udHJvbCgpOwotfQorI2Vsc2UKKyAgICByZXR1cm4gSFRNTEZvcm1D
b250cm9sRWxlbWVudFdpdGhTdGF0ZTo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKTsK
ICNlbmRpZgorfQogCiAvLyBSZXR1cm5zIHRoZSAxc3QgdmFsaWQgaXRlbSB8c2tpcHwgaXRlbXMg
ZnJvbSB8bGlzdEluZGV4fCBpbiBkaXJlY3Rpb24gfGRpcmVjdGlvbnwgaWYgdGhlcmUgaXMgb25l
LgogLy8gT3RoZXJ3aXNlLCBpdCByZXR1cm5zIHRoZSB2YWxpZCBpdGVtIGNsb3Nlc3QgdG8gdGhh
dCBib3VuZGFyeSB3aGljaCBpcyBwYXN0IHxsaXN0SW5kZXh8IGlmIHRoZXJlIGlzIG9uZS4KQEAg
LTg0NSwxMSArODQxLDExIEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldFNlbGVjdGVkSW5k
ZXgoaW50IGluZGV4KQogICAgIHNlbGVjdE9wdGlvbihpbmRleCwgRGVzZWxlY3RPdGhlck9wdGlv
bnMpOwogfQogCi12b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpvcHRpb25TZWxlY3Rpb25TdGF0ZUNo
YW5nZWQoSFRNTE9wdGlvbkVsZW1lbnQqIG9wdGlvbiwgYm9vbCBvcHRpb25Jc1NlbGVjdGVkKQor
dm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9uU2VsZWN0aW9uU3RhdGVDaGFuZ2VkKEhUTUxP
cHRpb25FbGVtZW50JiBvcHRpb24sIGJvb2wgb3B0aW9uSXNTZWxlY3RlZCkKIHsKLSAgICBBU1NF
UlQob3B0aW9uLT5vd25lclNlbGVjdEVsZW1lbnQoKSA9PSB0aGlzKTsKKyAgICBBU1NFUlQob3B0
aW9uLm93bmVyU2VsZWN0RWxlbWVudCgpID09IHRoaXMpOwogICAgIGlmIChvcHRpb25Jc1NlbGVj
dGVkKQotICAgICAgICBzZWxlY3RPcHRpb24ob3B0aW9uLT5pbmRleCgpKTsKKyAgICAgICAgc2Vs
ZWN0T3B0aW9uKG9wdGlvbi5pbmRleCgpKTsKICAgICBlbHNlIGlmICghdXNlc01lbnVMaXN0KCkp
CiAgICAgICAgIHNlbGVjdE9wdGlvbigtMSk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2VsZWN0RWxlbWVudC5oCmluZGV4IDc4ZDNkOGJiNGY1ZjFmM2EyNDA3ODI0NDFiZjI3OWYw
MDdhYjc4YWEuLjI0ZDk2MWQ0N2I4MjI4YzY1NmJmMGE2NDI0OWI1YjY2YWMwMjQ3Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKQEAgLTI2LDE3ICsyNiwxNCBAQAog
I2lmbmRlZiBIVE1MU2VsZWN0RWxlbWVudF9oCiAjZGVmaW5lIEhUTUxTZWxlY3RFbGVtZW50X2gK
IAotI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudFdp
dGhTdGF0ZS5oIgotI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiVHlw
ZUFoZWFkLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEhUTUxPcHRpb25zQ29sbGVjdGlvbjsKIAotY2xhc3MgSFRNTFNlbGVjdEVsZW1l
bnQgOiBwdWJsaWMgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSwgcHVibGljIFR5cGVB
aGVhZERhdGFTb3VyY2UgeworY2xhc3MgSFRNTFNlbGVjdEVsZW1lbnQgOiBwdWJsaWMgSFRNTEZv
cm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSwgcHJpdmF0ZSBUeXBlQWhlYWREYXRhU291cmNlIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxTZWxlY3RFbGVtZW50PiBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7CiAKQEAgLTQ1LDkg
KzQyLDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBvcHRpb25TZWxlY3Rl
ZEJ5VXNlcihpbnQgaW5kZXgsIGJvb2wgZGlzcGF0Y2hDaGFuZ2VFdmVudCwgYm9vbCBhbGxvd011
bHRpcGxlU2VsZWN0aW9uID0gZmFsc2UpOwogCi0gICAgLy8gRm9yIFZhbGlkaXR5U3RhdGUKLSAg
ICBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHZh
bHVlTWlzc2luZygpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyB2YWxpZGF0aW9uTWVzc2Fn
ZSgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgdmFsdWVNaXNzaW5nKCkgY29uc3QgZmluYWw7CiAK
ICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKIApAQCAtNTYsMTMgKzUyLDEyIEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgdXNlc01lbnVMaXN0KCkgY29uc3Q7CiAKLSAgICB2b2lkIGFkZChIVE1M
RWxlbWVudCosIEhUTUxFbGVtZW50KiBiZWZvcmVFbGVtZW50LCBFeGNlcHRpb25Db2RlJik7Ci0g
ICAgdm9pZCBhZGQoSFRNTEVsZW1lbnQqLCBpbnQgYmVmb3JlSW5kZXgsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICB2b2lkIGFkZChIVE1MRWxlbWVudCYsIEhUTUxFbGVtZW50KiBiZWZvcmVFbGVtZW50
LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBhZGQoSFRNTEVsZW1lbnQmLCBpbnQgYmVmb3Jl
SW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHVzaW5nIE5vZGU6OnJlbW92ZTsKLSAgICAv
LyBTaG91bGQgYmUgcmVtb3ZlKGludCkgYnV0IGl0IGNvbmZsaWN0cyB3aXRoIE5vZGU6OnJlbW92
ZShFeGNlcHRpb25Db2RlJikuCi0gICAgdm9pZCByZW1vdmVCeUluZGV4KGludCk7Ci0gICAgdm9p
ZCByZW1vdmUoSFRNTE9wdGlvbkVsZW1lbnQqKTsKKyAgICB2b2lkIHJlbW92ZShIVE1MT3B0aW9u
RWxlbWVudCYpOworICAgIHZvaWQgcmVtb3ZlQnlJbmRleChpbnQpOyAvLyBTaG91bGQgYmUgcmVt
b3ZlKGludCkgYnV0IHRoYXQgY29uZmxpY3RzIHdpdGggTm9kZTo6cmVtb3ZlKEV4Y2VwdGlvbkNv
ZGUmKS4KIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB2YWx1ZSgpIGNvbnN0OwogICAgIHZv
aWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJik7CkBAIC03OCwxNCArNzMsMTQgQEAgcHVibGljOgog
CiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVt
cygpIGNvbnN0OwogCi0gICAgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVu
dHMpIG92ZXJyaWRlOworICAgIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZl
bnRzKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0tleVNldFNlbGVjdGVkSW5kZXgoaW50KTsKIAog
ICAgIHZvaWQgc2V0TXVsdGlwbGUoYm9vbCk7CiAKICAgICB2b2lkIHNldFNpemUodW5zaWduZWQp
OwogCi0gICAgdm9pZCBzZXRPcHRpb24odW5zaWduZWQgaW5kZXgsIEhUTUxPcHRpb25FbGVtZW50
KiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0T3B0aW9uKHVuc2lnbmVkIGluZGV4LCBI
VE1MT3B0aW9uRWxlbWVudCYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldExlbmd0aCh1
bnNpZ25lZCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgSFRNTE9wdGlvbkVsZW1lbnQqIG5hbWVk
SXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwpAQCAtOTUsMTAgKzkwLDYgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBsaXN0Qm94U2VsZWN0SXRlbShpbnQgbGlzdEluZGV4LCBib29sIGFsbG93
TXVsdGlwbHlTZWxlY3Rpb25zLCBib29sIHNoaWZ0LCBib29sIGZpcmVPbkNoYW5nZU5vdyA9IHRy
dWUpOwogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xp
Y2tFdmVudHMoKSBvdmVycmlkZTsKLSNlbmRpZgotCiAgICAgYm9vbCBjYW5TZWxlY3RBbGwoKSBj
b25zdDsKICAgICB2b2lkIHNlbGVjdEFsbCgpOwogICAgIGludCBsaXN0VG9PcHRpb25JbmRleChp
bnQgbGlzdEluZGV4KSBjb25zdDsKQEAgLTEwOSw0MyArMTAwLDQ0IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KGludCk7CiAgICAgdm9pZCBzZXRBY3Rp
dmVTZWxlY3Rpb25FbmRJbmRleChpbnQpOwogICAgIHZvaWQgdXBkYXRlTGlzdEJveFNlbGVjdGlv
bihib29sIGRlc2VsZWN0T3RoZXJPcHRpb25zKTsKLSAgICAKKwogICAgIC8vIEZvciB1c2UgaW4g
dGhlIGltcGxlbWVudGF0aW9uIG9mIEhUTUxPcHRpb25FbGVtZW50LgotICAgIHZvaWQgb3B0aW9u
U2VsZWN0aW9uU3RhdGVDaGFuZ2VkKEhUTUxPcHRpb25FbGVtZW50KiwgYm9vbCBvcHRpb25Jc1Nl
bGVjdGVkKTsKKyAgICB2b2lkIG9wdGlvblNlbGVjdGlvblN0YXRlQ2hhbmdlZChIVE1MT3B0aW9u
RWxlbWVudCYsIGJvb2wgb3B0aW9uSXNTZWxlY3RlZCk7CiAgICAgYm9vbCBhbGxvd3NOb25Db250
aWd1b3VzU2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NOb25Db250aWd1b3VzU2Vs
ZWN0aW9uOyB9OwogCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7CiAKIHByaXZhdGU6Ci0g
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IGZpbmFsOwog
ICAgIAotICAgIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdCBmaW5hbDsK
KyAgICBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgZGlz
cGF0Y2hGb2N1c0V2ZW50KFJlZlB0cjxFbGVtZW50PiYmIG9sZEZvY3VzZWRFbGVtZW50LCBGb2N1
c0RpcmVjdGlvbikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaEJsdXJFdmVudChSZWZQdHI8RWxl
bWVudD4mJiBuZXdGb2N1c2VkRWxlbWVudCkgZmluYWw7CiAgICAgCi0gICAgYm9vbCBjYW5TdGFy
dFNlbGVjdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBj
YW5TdGFydFNlbGVjdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBi
b29sIGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQogCi0gICAgYm9vbCBpc0VudW1lcmF0YWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KLSAgICBib29sIHN1cHBvcnRMYWJlbHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CisgICAgYm9vbCBpc0VudW1lcmF0YWJsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBib29sIHN1cHBvcnRMYWJlbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAKLSAgICBGb3JtQ29udHJvbFN0YXRlIHNhdmVGb3JtQ29udHJvbFN0YXRlKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZShjb25zdCBGb3Jt
Q29udHJvbFN0YXRlJikgb3ZlcnJpZGU7CisgICAgRm9ybUNvbnRyb2xTdGF0ZSBzYXZlRm9ybUNv
bnRyb2xTdGF0ZSgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgcmVzdG9yZUZvcm1Db250cm9sU3Rh
dGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYpIGZpbmFsOwogCi0gICAgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7
Ci0gICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CisgICAgYm9vbCBpc1ByZXNlbnRhdGlv
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgZmluYWw7CiAKLSAgICBib29s
IGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJl
bmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICBi
b29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpIG92ZXJyaWRlOworICAgIGJv
b2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3QgZmluYWw7Cisg
ICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVu
ZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOworICAgIGJvb2wg
YXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgZmluYWw7CiAKLSAgICB2b2lkIHJl
c2V0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNldCgpIGZpbmFsOwogCi0gICAgdm9pZCBkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50KikgZmluYWw7CisgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2
ZW50cygpIGZpbmFsOwogCiAgICAgdm9pZCBkaXNwYXRjaENoYW5nZUV2ZW50Rm9yTWVudUxpc3Qo
KTsKIApAQCAtMTUzLDE0ICsxNDUsMTQgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVjYWxjTGlz
dEl0ZW1zKGJvb2wgdXBkYXRlU2VsZWN0ZWRTdGF0ZXMgPSB0cnVlKSBjb25zdDsKIAotICAgIHZv
aWQgZGVzZWxlY3RJdGVtcyhIVE1MT3B0aW9uRWxlbWVudCogZXhjbHVkZUVsZW1lbnQgPSAwKTsK
KyAgICB2b2lkIGRlc2VsZWN0SXRlbXMoSFRNTE9wdGlvbkVsZW1lbnQqIGV4Y2x1ZGVFbGVtZW50
ID0gbnVsbHB0cik7CiAgICAgdm9pZCB0eXBlQWhlYWRGaW5kKEtleWJvYXJkRXZlbnQmKTsKICAg
ICB2b2lkIHNhdmVMYXN0U2VsZWN0aW9uKCk7CiAKLSAgICBJbnNlcnRpb25Ob3RpZmljYXRpb25S
ZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgSW5zZXJ0
aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIGZpbmFs
OwogCi0gICAgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAhaXNSZXF1aXJlZEZvcm1Db250cm9sKCk7IH0KLSAgICBib29sIGlzUmVxdWlyZWRGb3Jt
Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNPcHRpb25hbEZvcm1Db250cm9s
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIWlzUmVxdWlyZWRGb3JtQ29udHJvbCgpOyB9CisgICAg
Ym9vbCBpc1JlcXVpcmVkRm9ybUNvbnRyb2woKSBjb25zdCBmaW5hbDsKIAogICAgIGJvb2wgaGFz
UGxhY2Vob2xkZXJMYWJlbE9wdGlvbigpIGNvbnN0OwogCkBAIC0xNzEsNyArMTYzLDcgQEAgcHJp
dmF0ZToKICAgICB9OwogICAgIHR5cGVkZWYgdW5zaWduZWQgU2VsZWN0T3B0aW9uRmxhZ3M7CiAg
ICAgdm9pZCBzZWxlY3RPcHRpb24oaW50IG9wdGlvbkluZGV4LCBTZWxlY3RPcHRpb25GbGFncyA9
IDApOwotICAgIHZvaWQgZGVzZWxlY3RJdGVtc1dpdGhvdXRWYWxpZGF0aW9uKEhUTUxFbGVtZW50
KiBlbGVtZW50VG9FeGNsdWRlID0gMCk7CisgICAgdm9pZCBkZXNlbGVjdEl0ZW1zV2l0aG91dFZh
bGlkYXRpb24oSFRNTEVsZW1lbnQqIGVsZW1lbnRUb0V4Y2x1ZGUgPSBudWxscHRyKTsKICAgICB2
b2lkIHBhcnNlTXVsdGlwbGVBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgaW50
IGxhc3RTZWxlY3RlZExpc3RJbmRleCgpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlU2VsZWN0ZWRT
dGF0ZShpbnQgbGlzdEluZGV4LCBib29sIG11bHRpLCBib29sIHNoaWZ0KTsKQEAgLTE4MSwxMCAr
MTczLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldE9wdGlvbnNDaGFuZ2VkT25SZW5kZXJlcigp
OwogICAgIHNpemVfdCBzZWFyY2hPcHRpb25zRm9yVmFsdWUoY29uc3QgU3RyaW5nJiwgc2l6ZV90
IGxpc3RJbmRleFN0YXJ0LCBzaXplX3QgbGlzdEluZGV4RW5kKSBjb25zdDsKIAotICAgIGVudW0g
U2tpcERpcmVjdGlvbiB7Ci0gICAgICAgIFNraXBCYWNrd2FyZHMgPSAtMSwKLSAgICAgICAgU2tp
cEZvcndhcmRzID0gMQotICAgIH07CisgICAgZW51bSBTa2lwRGlyZWN0aW9uIHsgU2tpcEJhY2t3
YXJkcyA9IC0xLCBTa2lwRm9yd2FyZHMgPSAxIH07CiAgICAgaW50IG5leHRWYWxpZEluZGV4KGlu
dCBsaXN0SW5kZXgsIFNraXBEaXJlY3Rpb24sIGludCBza2lwKSBjb25zdDsKICAgICBpbnQgbmV4
dFNlbGVjdGFibGVMaXN0SW5kZXgoaW50IHN0YXJ0SW5kZXgpIGNvbnN0OwogICAgIGludCBwcmV2
aW91c1NlbGVjdGFibGVMaXN0SW5kZXgoaW50IHN0YXJ0SW5kZXgpIGNvbnN0OwpAQCAtMTkyLDEy
ICsxODEsMTMgQEAgcHJpdmF0ZToKICAgICBpbnQgbGFzdFNlbGVjdGFibGVMaXN0SW5kZXgoKSBj
b25zdDsKICAgICBpbnQgbmV4dFNlbGVjdGFibGVMaXN0SW5kZXhQYWdlQXdheShpbnQgc3RhcnRJ
bmRleCwgU2tpcERpcmVjdGlvbikgY29uc3Q7CiAKLSAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChj
b25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOworICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNv
bnN0IENoaWxkQ2hhbmdlJikgZmluYWw7CiAKICAgICAvLyBUeXBlQWhlYWREYXRhU291cmNlIGZ1
bmN0aW9ucy4KLSAgICBpbnQgaW5kZXhPZlNlbGVjdGVkT3B0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgaW50IG9wdGlvbkNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgU3RyaW5nIG9wdGlv
bkF0SW5kZXgoaW50IGluZGV4KSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgaW5kZXhPZlNlbGVj
dGVkT3B0aW9uKCkgY29uc3QgZmluYWw7CisgICAgaW50IG9wdGlvbkNvdW50KCkgY29uc3QgZmlu
YWw7CisgICAgU3RyaW5nIG9wdGlvbkF0SW5kZXgoaW50IGluZGV4KSBjb25zdCBmaW5hbDsKKwog
CiAgICAgLy8gbV9saXN0SXRlbXMgY29udGFpbnMgSFRNTE9wdGlvbkVsZW1lbnQsIEhUTUxPcHRH
cm91cEVsZW1lbnQsIGFuZCBIVE1MSFJFbGVtZW50IG9iamVjdHMuCiAgICAgbXV0YWJsZSBWZWN0
b3I8SFRNTEVsZW1lbnQqPiBtX2xpc3RJdGVtczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2Vs
ZWN0RWxlbWVudC5pZGwKaW5kZXggNWExZDk3NzlhNGUxYmU5NjZhYTEzNzlkMDU5YWEzMWM4MjEy
OWZjMC4uMzNmYjA2MzA5YTUxOWI1MmNhMWFjNDc2YjlhNWIwMmU2ZmYzODRjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGwKQEAgLTIwLDExICsyMCwxMCBAQAog
CiBbCiAgICAgQ3VzdG9tSW5kZXhlZFNldHRlciwKLSAgICBVc2VQb2ludGVyc0V2ZW5Gb3JOb25O
dWxsYWJsZU9iamVjdEFyZ3VtZW50cywKIF0gaW50ZXJmYWNlIEhUTUxTZWxlY3RFbGVtZW50IDog
SFRNTEVsZW1lbnQgewogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgYm9vbGVhbiBhdXRvZm9jdXM7
CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBib29sZWFuIGRpc2FibGVkOwotICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBIVE1MRm9ybUVsZW1lbnQgZm9ybTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
SFRNTEZvcm1FbGVtZW50PyBmb3JtOwogICAgIGF0dHJpYnV0ZSBib29sZWFuIG11bHRpcGxlOwog
ICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7CiAgICAgW1JlZmxlY3RdIGF0
dHJpYnV0ZSBib29sZWFuIHJlcXVpcmVkOwpAQCAtMzksOCArMzgsNiBAQAogCiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIEhUTUxPcHRpb25zQ29sbGVjdGlvbiBvcHRpb25zOwogI2lmIGRlZmluZWQo
TEFOR1VBR0VfT0JKRUNUSVZFX0MpICYmIExBTkdVQUdFX09CSkVDVElWRV9DCi0gICAgLy8gRE9N
IExldmVsIDIgY2hhbmdlcyB0eXBlIG9mIGxlbmd0aCBhdHRyaWJ1dGUgdG8gdW5zaWduZWQgbG9u
ZywgCi0gICAgLy8gZm9yIGNvbXBhdGliaWxpdHkgd2Uga2VlcCBET00gTGV2ZWwgMSBkZWZpbml0
aW9uLgogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGxlbmd0aDsKICNlbHNlCiAgICAgW1Nl
dHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwpAQCAt
NTAsOCArNDcsOCBAQAogICAgIGdldHRlciBOb2RlIGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7
CiAgICAgTm9kZSBuYW1lZEl0ZW0oW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJp
bmcgbmFtZSk7CiAjZWxzZQotICAgIGdldHRlciBIVE1MT3B0aW9uRWxlbWVudCBpdGVtKHVuc2ln
bmVkIGxvbmcgaW5kZXgpOwotICAgIEhUTUxPcHRpb25FbGVtZW50IG5hbWVkSXRlbShbRGVmYXVs
dD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBuYW1lKTsKKyAgICBnZXR0ZXIgSFRNTE9w
dGlvbkVsZW1lbnQ/IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgSFRNTE9wdGlvbkVs
ZW1lbnQ/IG5hbWVkSXRlbShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBu
YW1lKTsKICNlbmRpZgogCiAgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgUmFpc2Vz
RXhjZXB0aW9uXSB2b2lkIGFkZChIVE1MRWxlbWVudCBlbGVtZW50LCBbRGVmYXVsdD1VbmRlZmlu
ZWRdIG9wdGlvbmFsIEhUTUxFbGVtZW50PyBiZWZvcmUpOwpAQCAtNjMsMTcgKzYwLDE3IEBACiAj
ZWxzZQogICAgIFtJbXBsZW1lbnRlZEFzPXJlbW92ZUJ5SW5kZXhdIHZvaWQgcmVtb3ZlKGxvbmcg
aW5kZXgpOwogI2VuZGlmCisKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rpb24g
c2VsZWN0ZWRPcHRpb25zOwogICAgIGF0dHJpYnV0ZSBsb25nIHNlbGVjdGVkSW5kZXg7CiAKLSAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IHVzZSBbVHJlYXROdWxsQXM9TGVnYWN5TnVsbFN0
cmluZ10uCi0gICAgW1RyZWF0TnVsbEFzPUxlZ2FjeU51bGxTdHJpbmddIGF0dHJpYnV0ZSBET01T
dHJpbmcgdmFsdWU7CisgICAgW1RyZWF0TnVsbEFzPUxlZ2FjeU51bGxTdHJpbmddIGF0dHJpYnV0
ZSBET01TdHJpbmcgdmFsdWU7IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgdXNlIFtUcmVhdE51
bGxBcz1MZWdhY3lOdWxsU3RyaW5nXS4KIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFu
IHdpbGxWYWxpZGF0ZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVmFsaWRpdHlTdGF0ZSB2YWxp
ZGl0eTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdl
OwogICAgIGJvb2xlYW4gY2hlY2tWYWxpZGl0eSgpOwotICAgIHZvaWQgc2V0Q3VzdG9tVmFsaWRp
dHkoRE9NU3RyaW5nPyBlcnJvcik7CisgICAgdm9pZCBzZXRDdXN0b21WYWxpZGl0eShET01TdHJp
bmc/IGVycm9yKTsgLy8gRklYTUU6IEFyZ3VtZW50IHNob3VsZCBub3QgYmUgbnVsbGFibGUuCiAK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZUxpc3QgbGFiZWxzOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9E
T01Db3JlQ2xhc3Nlcy5jcHAKaW5kZXggOWY4NTk1YTE4NGNhMDYxODBmNDE4YzYwNTk2ZTQ3NTdi
YmE0OTE4NC4uNTI2MDY3MTc3OWY3NDc4OTlmYzYwYjBiYWQwZGIxZWRmODQ2YzNhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdJbWFnZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRWxlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRDYXNjYWRlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tCmluZGV4
IGRlMzk0YTliODYwNDU3NTRiZjEwZTY3NTU4MjE5NDFiMmRiNmUzNjMuLjQ3YmE5YzI5MzUxODRh
NTU4MGQ5ZTY3NWM3MjVlYzI3YWNiZjNhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW0KQEAg
LTM3LDcgKzM3LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ1NTUHJpbWl0aXZlVmFsdWUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvQ1NTUHJvcGVydHlOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xv
ck1hYy5oPgotI2ltcG9ydCA8V2ViQ29yZS9IVE1MRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9FdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MSW5wdXRFbGVtZW50Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MT3B0aW9uRWxlbWVu
dC5oPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>