<?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>161295</bug_id>
          
          <creation_ts>2016-08-27 16:10:17 -0700</creation_ts>
          <short_desc>Streamline DOMImplementation, and move it to our new DOM exception system</short_desc>
          <delta_ts>2016-09-03 16:35:57 -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>Bindings</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>andersca</cc>
    
    <cc>cdumez</cc>
    
    <cc>kling</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1223954</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-27 16:10:17 -0700</bug_when>
    <thetext>Streamline DOMImplementation, and move it to our new DOM exception system</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223955</commentid>
    <comment_count>1</comment_count>
      <attachid>287216</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-27 16:39:23 -0700</bug_when>
    <thetext>Created attachment 287216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223956</commentid>
    <comment_count>2</comment_count>
      <attachid>287216</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-27 16:41:28 -0700</bug_when>
    <thetext>Comment on attachment 287216
Patch

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

&gt; Source/WebCore/dom/Exception.h:37
&gt; +    WEBCORE_EXPORT ExceptionCode code() const;

This is inline, so it does not need WEBCORE_EXPORT. I will fix that before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223959</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-27 16:48:46 -0700</bug_when>
    <thetext>The new way of doing exceptions turned out really simple. Might get more complicated as I make it work for more different function return value types, but I think probably not a lot more!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223963</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-08-27 16:56:23 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; The new way of doing exceptions turned out really simple. Might get more
&gt; complicated as I make it work for more different function return value
&gt; types, but I think probably not a lot more!

I love it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223964</commentid>
    <comment_count>5</comment_count>
      <attachid>287217</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-27 16:58:20 -0700</bug_when>
    <thetext>Created attachment 287217
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223965</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-27 16:59:23 -0700</bug_when>
    <thetext>New patch updates includes in MIMETypeRegistry.cpp. I made a small mistake that was wrong enough that things were building on my Mac, but not on iOS and maybe not Windows either. Should be fixed now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223966</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-27 17:00:11 -0700</bug_when>
    <thetext>(If you want me to stage this and land in separate pieces, I am definitely open to that.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223968</commentid>
    <comment_count>8</comment_count>
      <attachid>287217</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-27 17:10:34 -0700</bug_when>
    <thetext>Comment on attachment 287217
Patch

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

&gt; Source/WebCore/dom/Exception.h:35
&gt; +    explicit Exception(ExceptionCode);

Now may be a good time to provide better exception messages. So it&apos;d be good to take a message parameter. Do we ever want the generic exception message?

&gt; Source/WebCore/dom/ExceptionOr.h:41
&gt; +    ReturnType&amp;&amp; returnValue();

Maybe takeReturnValue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223973</commentid>
    <comment_count>9</comment_count>
      <attachid>287217</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-27 17:13:26 -0700</bug_when>
    <thetext>Comment on attachment 287217
Patch

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

&gt; Source/WebCore/dom/ExceptionOr.h:53
&gt; +    : m_value(WTFMove(returnValue))

Should this be std::forward() given that ReturnType is a template parameter?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223989</commentid>
    <comment_count>10</comment_count>
      <attachid>287217</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-27 17:23:29 -0700</bug_when>
    <thetext>Comment on attachment 287217
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:796
&gt; +    if (value.hasException()) {

UNLIKELY() ?

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:806
&gt; +    if (value.hasException()) {

UNLIKELY()

&gt; Source/WebCore/dom/Document.cpp:1385
&gt; +void Document::setXMLStandalone(bool standalone, ExceptionCode&amp;)

Seems like we should drop the [SetterRaisesException] for this attribute in Document.idl and drop this last parameter.

&gt;&gt; Source/WebCore/dom/Exception.h:35
&gt;&gt; +    explicit Exception(ExceptionCode);
&gt; 
&gt; Now may be a good time to provide better exception messages. So it&apos;d be good to take a message parameter. Do we ever want the generic exception message?

Also note there is a ExceptionCodeWithMessage type somewhere that was added fairly recently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223992</commentid>
    <comment_count>11</comment_count>
      <attachid>287217</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-27 17:34:59 -0700</bug_when>
    <thetext>Comment on attachment 287217
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:71
&gt; +template&lt;typename T&gt; class ExceptionOr;

Can omit &quot;T&quot; here.

&gt; Source/WebCore/dom/DOMImplementation.cpp:217
&gt; +    Document::parseQualifiedName(qualifiedName, prefix, localName, ec);

Is this going to return ExceptionOr at some point too? ExceptionOr&lt;void&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223998</commentid>
    <comment_count>12</comment_count>
      <attachid>287217</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-27 17:56:34 -0700</bug_when>
    <thetext>Comment on attachment 287217
Patch

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

Just realized that GTK build is failing because I didn’t add support for this to the GObject bindings yet. Darn it.

Windows build failure seems to be because of some kind of conflict or ambiguity between WebCore::Exception and JSC::Exception. I did not realize that JSC had a class named Exception in it, but now I do. I wonder if the Windows error is catching something that clang doesn’t catch, or if it’s a bug in the Windows compiler’s handling of namespaces.

&gt;&gt; Source/WebCore/bindings/js/JSDOMBinding.h:71
&gt;&gt; +template&lt;typename T&gt; class ExceptionOr;
&gt; 
&gt; Can omit &quot;T&quot; here.

Will do.

&gt;&gt; Source/WebCore/bindings/js/JSDOMBinding.h:796
&gt;&gt; +    if (value.hasException()) {
&gt; 
&gt; UNLIKELY() ?

We have not historically done that in our bindings, but I suppose we could. I used to be pretty conservative with that and only use it when I knew it sped something up.

&gt;&gt; Source/WebCore/dom/DOMImplementation.cpp:217
&gt;&gt; +    Document::parseQualifiedName(qualifiedName, prefix, localName, ec);
&gt; 
&gt; Is this going to return ExceptionOr at some point too? ExceptionOr&lt;void&gt;?

Yes. But we might have another name for ExceptionOr&lt;void&gt;. OptionalException is not a great name and Optional&lt;Exception&gt; is not great for template meta-programming.

&gt;&gt; Source/WebCore/dom/Document.cpp:1385
&gt;&gt; +void Document::setXMLStandalone(bool standalone, ExceptionCode&amp;)
&gt; 
&gt; Seems like we should drop the [SetterRaisesException] for this attribute in Document.idl and drop this last parameter.

Sure, I can do that now.

Note that once we finish moving to the new exception system there won’t be any RaisesException extended attributes at all any more, so this would have to get cleaned up as part of that.

&gt;&gt;&gt; Source/WebCore/dom/Exception.h:35
&gt;&gt;&gt; +    explicit Exception(ExceptionCode);
&gt;&gt; 
&gt;&gt; Now may be a good time to provide better exception messages. So it&apos;d be good to take a message parameter. Do we ever want the generic exception message?
&gt; 
&gt; Also note there is a ExceptionCodeWithMessage type somewhere that was added fairly recently.

Yes, the intention of this class is that it can hold more than just an exception code, a message parameter as needed. Specifically, I had planned to figure out exactly how to accomodate ExceptionCodeWithMessage in Exception and ExceptionOr the first time I needed to convert a DOM function that was using it. Actually changing each DOM function to provide a better exception message as I convert it from ExceptionCode to ExceptionOr, though, would change this refactoring into something that changes behavior and so changes test results. I’m not entirely sure it should be done as part of the same pass. But maybe you could convince me.

Another reason I didn’t do this now is that I’m not clear what the form and content of better exception messages should be.

&gt;&gt; Source/WebCore/dom/ExceptionOr.h:41
&gt;&gt; +    ReturnType&amp;&amp; returnValue();
&gt; 
&gt; Maybe takeReturnValue?

I like that idea.

&gt;&gt; Source/WebCore/dom/ExceptionOr.h:53
&gt;&gt; +    : m_value(WTFMove(returnValue))
&gt; 
&gt; Should this be std::forward() given that ReturnType is a template parameter?

I am not sure. For the cases I am currently using both will do the same. I guess we will find out when we use this with a type where it makes a difference? If it needs to be std::forward&lt;ReturnType&gt; here then I am not clear what it will need to be in takeReturnValue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223999</commentid>
    <comment_count>13</comment_count>
      <attachid>287217</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-27 17:58:31 -0700</bug_when>
    <thetext>Comment on attachment 287217
Patch

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

&gt;&gt;&gt; Source/WebCore/dom/DOMImplementation.cpp:217
&gt;&gt;&gt; +    Document::parseQualifiedName(qualifiedName, prefix, localName, ec);
&gt;&gt; 
&gt;&gt; Is this going to return ExceptionOr at some point too? ExceptionOr&lt;void&gt;?
&gt; 
&gt; Yes. But we might have another name for ExceptionOr&lt;void&gt;. OptionalException is not a great name and Optional&lt;Exception&gt; is not great for template meta-programming.

I’m thinking maybe:

    using PossibleException = ExceptionOr&lt;void&gt;;

But maybe we can come up with something shorter that is still clear. Maybe ExceptionOr&lt;void&gt; is the clearest?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224004</commentid>
    <comment_count>14</comment_count>
      <attachid>287217</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-27 18:08:10 -0700</bug_when>
    <thetext>Comment on attachment 287217
Patch

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

&gt;&gt;&gt; Source/WebCore/bindings/js/JSDOMBinding.h:796
&gt;&gt;&gt; +    if (value.hasException()) {
&gt;&gt; 
&gt;&gt; UNLIKELY() ?
&gt; 
&gt; We have not historically done that in our bindings, but I suppose we could. I used to be pretty conservative with that and only use it when I knew it sped something up.

This is common pattern in the bindings:
if (UNLIKELY(state-&gt;hadException()))\n&quot;);

And it seems similar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224005</commentid>
    <comment_count>15</comment_count>
      <attachid>287217</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-27 18:10:13 -0700</bug_when>
    <thetext>Comment on attachment 287217
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/dom/Exception.h:35
&gt;&gt;&gt;&gt; +    explicit Exception(ExceptionCode);
&gt;&gt;&gt; 
&gt;&gt;&gt; Now may be a good time to provide better exception messages. So it&apos;d be good to take a message parameter. Do we ever want the generic exception message?
&gt;&gt; 
&gt;&gt; Also note there is a ExceptionCodeWithMessage type somewhere that was added fairly recently.
&gt; 
&gt; Yes, the intention of this class is that it can hold more than just an exception code, a message parameter as needed. Specifically, I had planned to figure out exactly how to accomodate ExceptionCodeWithMessage in Exception and ExceptionOr the first time I needed to convert a DOM function that was using it. Actually changing each DOM function to provide a better exception message as I convert it from ExceptionCode to ExceptionOr, though, would change this refactoring into something that changes behavior and so changes test results. I’m not entirely sure it should be done as part of the same pass. But maybe you could convince me.
&gt; 
&gt; Another reason I didn’t do this now is that I’m not clear what the form and content of better exception messages should be.

Ok, I guess we can add better exception messages later on and having an Exception class will make this easier. It is true that doing it now will mean rebaselining tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224006</commentid>
    <comment_count>16</comment_count>
      <attachid>287217</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-27 18:12:42 -0700</bug_when>
    <thetext>Comment on attachment 287217
Patch

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

&gt;&gt;&gt; Source/WebCore/dom/Document.cpp:1385
&gt;&gt;&gt; +void Document::setXMLStandalone(bool standalone, ExceptionCode&amp;)
&gt;&gt; 
&gt;&gt; Seems like we should drop the [SetterRaisesException] for this attribute in Document.idl and drop this last parameter.
&gt; 
&gt; Sure, I can do that now.
&gt; 
&gt; Note that once we finish moving to the new exception system there won’t be any RaisesException extended attributes at all any more, so this would have to get cleaned up as part of that.

Oh. So how do you plan on getting rid of [SetterRaisesException]? Will setters return an Optional&lt;Exception&gt; ? And can we detect the return type from the bindings without an extended attribute?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224016</commentid>
    <comment_count>17</comment_count>
      <attachid>287217</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-27 22:03:12 -0700</bug_when>
    <thetext>Comment on attachment 287217
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/bindings/js/JSDOMBinding.h:796
&gt;&gt;&gt;&gt; +    if (value.hasException()) {
&gt;&gt;&gt; 
&gt;&gt;&gt; UNLIKELY() ?
&gt;&gt; 
&gt;&gt; We have not historically done that in our bindings, but I suppose we could. I used to be pretty conservative with that and only use it when I knew it sped something up.
&gt; 
&gt; This is common pattern in the bindings:
&gt; if (UNLIKELY(state-&gt;hadException()))\n&quot;);
&gt; 
&gt; And it seems similar.

I agree that it’s similar. It always felt a bit different to me since most of those are truly surprising places to encounter an exception, but on reflection I guess it’s not all that different.

As I alluded to above, we used to be a lot more conservative and used LIKELY and UNLIKELY only when we had real evidence they caused measurable speedups.

&gt;&gt;&gt;&gt; Source/WebCore/dom/Document.cpp:1385
&gt;&gt;&gt;&gt; +void Document::setXMLStandalone(bool standalone, ExceptionCode&amp;)
&gt;&gt;&gt; 
&gt;&gt;&gt; Seems like we should drop the [SetterRaisesException] for this attribute in Document.idl and drop this last parameter.
&gt;&gt; 
&gt;&gt; Sure, I can do that now.
&gt;&gt; 
&gt;&gt; Note that once we finish moving to the new exception system there won’t be any RaisesException extended attributes at all any more, so this would have to get cleaned up as part of that.
&gt; 
&gt; Oh. So how do you plan on getting rid of [SetterRaisesException]? Will setters return an Optional&lt;Exception&gt; ? And can we detect the return type from the bindings without an extended attribute?

(In reply to comment #16)
&gt; So how do you plan on getting rid of [SetterRaisesException]? Will
&gt; setters return an Optional&lt;Exception&gt; ?

Yes, they will return an ExceptionOr&lt;void&gt; just like non-attribute functions that can raise an exception but have no return value. As I mentioned to Anders above we might decide to come up with a different name for that, but I think maybe ExceptionOr&lt;void&gt; might be the clearest name.

&gt; And can we detect the return type
&gt; from the bindings without an extended attribute?

Yes, it is quite likely we can, although not guaranteed.

It was neat that for the simplest return value case that this patch uses, I was able to do this for JavaScript bindings without even changing the code generator. Looks like for the GObject bindings I will have to change it a bit, though. And for functions without a return value I am sure this will include some change to the code generator but probably something small; mostly template programming. It might be possible to treat &quot;no return value&quot; as the type void and make non-return-value functions like setters share patterns more with return-value functions like getters. We never had a good reason to do that before, but I think now we do.

There’s likely more adjustment needed for the various more exotic types of return value, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224018</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-27 22:04:39 -0700</bug_when>
    <thetext>Sam, maybe you can help me think through what to do for the Windows thing. I’d hate to lose the beautiful class name WebCore::Exception, but the easiest fix without deeply understanding the Windows compiler issue is presumably to rename it to something like WebCore::DOMException.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224029</commentid>
    <comment_count>19</comment_count>
      <attachid>287221</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-27 23:20:59 -0700</bug_when>
    <thetext>Created attachment 287221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224030</commentid>
    <comment_count>20</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-27 23:22:03 -0700</bug_when>
    <thetext>This new patch addresses all the review feedback I have received so far and contains an attempt at fixing the build issue on Windows.

However, it does not address the issue of making the gobject bindings compile! Sent mail to webkit-dev about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224032</commentid>
    <comment_count>21</comment_count>
      <attachid>287222</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-28 00:26:44 -0700</bug_when>
    <thetext>Created attachment 287222
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224033</commentid>
    <comment_count>22</comment_count>
      <attachid>287222</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-28 00:27:39 -0700</bug_when>
    <thetext>Comment on attachment 287222
Patch

Oops, no point in putting this up formally for review before I resolve the gobject bindings issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224046</commentid>
    <comment_count>23</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-28 02:20:46 -0700</bug_when>
    <thetext>As I hoped, ready to go except for the gobject bindings issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226137</commentid>
    <comment_count>24</comment_count>
      <attachid>287862</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-09-03 08:14:34 -0700</bug_when>
    <thetext>Created attachment 287862
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226138</commentid>
    <comment_count>25</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-09-03 08:15:22 -0700</bug_when>
    <thetext>OK, rebased and re-uploaded so I can see if this builds on GTK. Probably won&apos;t, and so then I will fix that and then put up the final version for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226141</commentid>
    <comment_count>26</comment_count>
      <attachid>287863</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-09-03 08:35:57 -0700</bug_when>
    <thetext>Created attachment 287863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226144</commentid>
    <comment_count>27</comment_count>
      <attachid>287864</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-09-03 10:41:14 -0700</bug_when>
    <thetext>Created attachment 287864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226151</commentid>
    <comment_count>28</comment_count>
      <attachid>287865</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-09-03 12:12:56 -0700</bug_when>
    <thetext>Created attachment 287865
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226160</commentid>
    <comment_count>29</comment_count>
      <attachid>287867</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-09-03 13:01:12 -0700</bug_when>
    <thetext>Created attachment 287867
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226165</commentid>
    <comment_count>30</comment_count>
      <attachid>287867</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-09-03 14:07:07 -0700</bug_when>
    <thetext>Comment on attachment 287867
Patch

OK. Ready to review. Now passes on all the EWS bots since I dealt with the GObject bindings!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226169</commentid>
    <comment_count>31</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-09-03 14:23:13 -0700</bug_when>
    <thetext>Sam, Chris, Anders, you all reviewed an earlier version. Thank you! Nothing major changed since then, although I did address your comments, but I think I need one of you to look over the final working version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226186</commentid>
    <comment_count>32</comment_count>
      <attachid>287867</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-09-03 16:21:28 -0700</bug_when>
    <thetext>Comment on attachment 287867
Patch

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

&gt; Source/WebCore/ChangeLog:4760
&gt;  
&gt; +        * xml/parser/XMLDocumentParserLibxml2.cpp:
&gt; +        (WebCore::XMLDocumentParser::startDocument): Updated since setXMLStandalone
&gt; +        no longer can raise an exception.
&gt; +

What&apos;s up with this change log change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226189</commentid>
    <comment_count>33</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-09-03 16:35:57 -0700</bug_when>
    <thetext>Committed r205411: &lt;http://trac.webkit.org/changeset/205411&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287216</attachid>
            <date>2016-08-27 16:39:23 -0700</date>
            <delta_ts>2016-08-27 16:58:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161295-20160827163717.patch</filename>
            <type>text/plain</type>
            <size>61065</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1MDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDI5ODY2NzBkMjlmMDUw
YmRhZDc0ZDEwZWM5ZWNlODFiYjU4Yzg3My4uNTYyMzhkZTZmNjc4ZWY4ZDU0MWFlOTY2NmJkZGU2
MzgzZjEzZTY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDE2LTA4LTI3ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJlYW1saW5lIERPTUltcGxl
bWVudGF0aW9uLCBhbmQgbW92ZSBpdCB0byBvdXIgbmV3IERPTSBleGNlcHRpb24gc3lzdGVtCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEyOTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgbmV3IGhlYWRlcnMgdG8gcHJvamVjdC4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6dG9KUyk6IEFkZGVkIGFuIG92ZXJsb2FkIGZvciBFeGNlcHRpb25Pcjw+OyB0aGlzIGhhbmRs
ZXMgdGhlCisgICAgICAgIGV4Y2VwdGlvbiBjYXNlIGhlcmUgc28gaXQgZG9lc24ndCBuZWVkIHRv
IGJlIGhhbmRsZWQgaW4gZ2VuZXJhdGVkIGNvZGUKKyAgICAgICAgZm9yIHRoZSBiaW5kaW5nLiBJ
bXBsZW1lbnRlZCBoZXJlIHNvIHRoYXQgRXhjZXB0aW9uT3IuaCBkb2VzIG5vdCBrbm93CisgICAg
ICAgIGFib3V0IGJpbmRpbmdzLiBCdXQgc2luY2UgdGhpcyBpcyBhIHRlbXBsYXRlLCBpdCB3aWxs
IG9ubHkgY29tcGlsZSB3aGVuCisgICAgICAgIGluc3RhbnRpYXRlZCBhbmQgdGhlcmUgaXMgbm8g
bmVlZCB0byBpbmNsdWRlIEV4Y2VwdGlvbk9yLmggYW5kIGluZGlyZWN0bHkKKyAgICAgICAgdGhl
IFZhcmlhbnQuaCBoZWFkZXIgaW4gdGhpcyBoZWFkZXIuCisgICAgICAgIChXZWJDb3JlOjp0b0pT
TmV3bHlDcmVhdGVkKTogRGl0dG8uCisKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50
VHlwZSk6IENoYW5nZWQgdG8gcmV0dXJuCisgICAgICAgIEV4Y2VwdGlvbk9yLgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlWE1MRG9jdW1lbnQpOiBBZGRlZC4gSGVscGVyIHVzZWQgaW4gY3JlYXRl
RG9jdW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Z2V0SW50ZXJm
YWNlKTogRGVsZXRlZC4gVGhpcyB3YXMgdW51c2VkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1w
bGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KTogQ2hhbmdlZCB0byByZXR1cm4KKyAgICAgICAg
RXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRl
Q1NTU3R5bGVTaGVldCk6IFJlbW92ZWQgdGhlIHVudXNlZAorICAgICAgICBFeGNlcHRpb25Db2Rl
IG91dCBhcmd1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRYTUxNSU1FVHlwZUNoYXIp
OiBEZWxldGVkLiBNb3ZlZCB0byBNSU1FVHlwZVJlZ2lzdHJ5LgorICAgICAgICAoV2ViQ29yZTo6
RE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlNRVR5cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkRPTUltcGxlbWVudGF0aW9uOjppc1RleHRNSU1FVHlwZSk6IERpdHRvLgorCisgICAgICAg
ICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmg6IENoYW5nZWQgZnVuY3Rpb25zIGFzIGRlc2NyaWJl
ZCBhYm92ZSB0bworICAgICAgICByZXR1cm4gRXhjZXB0aW9uT3IgdmFsdWVzLiBBbHNvIHJlbW92
ZWQgdW51c2VkIGdldEludGVyZmFjZSBmdW5jdGlvbiwKKyAgICAgICAgYW5kIGlzWE1MTUlNRVR5
cGUgYW5kIGlzVGV4dE1JTUVUeXBlLCB3aGljaCBib3RoIG1vdmVkIHRvIHRoZQorICAgICAgICBN
SU1FVHlwZVJlZ2lzdHJ5IGNsYXNzIGFsb25nc2lkZSBhbGwgdGhlIG90aGVyIHNpbWlsYXIgTUlN
RSB0eXBlCisgICAgICAgIGZ1bmN0aW9ucy4KKworICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRh
dGlvbi5pZGw6IFJlb3JnYW5pemVkIHRoaXMgdG8gbWF0Y2ggdGhlIElETCBmaWxlcworICAgICAg
ICBpbiB0aGUgc3BlY2lmaWNhdGlvbnMgYSBsaXR0bGUgYmV0dGVyLiBBbHNvIHJlbW92ZWQgW1Jh
aXNlc0V4Y2VwdGlvbl0KKyAgICAgICAgc2luY2UgdGhhdCBpcyBvbmx5IG5lZWRlZCBmb3IgdGhl
IG9sZCBsZWdhY3kgRXhjZXB0aW9uQ29kZSYgc3R5bGUuCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFhNTFZlcnNpb24pOiBSZW1v
dmVkIGNhbGwgdG8gdGhlCisgICAgICAgIERPTUltcGxlbWVudGF0aW9uOjpoYXNGZWF0dXJlIGZ1
bmN0aW9uIHNpbmNlIHRoZSB2YWx1ZXMgcGFzc2VkIGluCisgICAgICAgIHVuY29uZGl0aW9uYWxs
eSByZXN1bHQgaW4gdGhlIHJldHVybiB2YWx1ZSAidHJ1ZSIuIFRoaXMgaXMgbGVmdCBvdmVyCisg
ICAgICAgIGVpdGhlciBmcm9tIHNwZWNpZmljYXRpb24gbGFuZ3VhZ2UsIG9yIGZyb20gYW4gYW5j
aWVudCB2ZXJzaW9uIG9mIHRoaXMKKyAgICAgICAgY29kZSB0aGF0IHdvcmtlZCBpbiBhICJubyBY
TUwgc3VwcG9ydGVkIiBtb2RlLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFhNTFN0
YW5kYWxvbmUpOiBEaXR0by4KKworICAgICAgICAqIGRvbS9FeGNlcHRpb24uaDogQWRkZWQuCisg
ICAgICAgICogZG9tL0V4Y2VwdGlvbk9yLmg6IEFkZGVkLgorCisgICAgICAgICogaHRtbC9IVE1M
VGVtcGxhdGVFbGVtZW50LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlIG9mIERPTUltcGxl
bWVudGF0aW9uLmguCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVhIUlRleHREZWNvZGVyKTogVXNlIGlzWE1MTUlN
RVR5cGUgaW4gaXRzIG5ldyBsb2NhdGlvbiBpbgorICAgICAgICBNSU1FVHlwZVJlZ2lzdHJ5Lgor
ICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVPdGhlclJlc291cmNlVGV4dERlY29kZXIpOiBEaXR0by4KKworICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZSBvZiBE
T01JbXBsZW1lbnRhdGlvbi5oLgorCisgICAgICAgICogbG9hZGVyL1RleHRSZXNvdXJjZURlY29k
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6ZGV0ZXJtaW5l
Q29udGVudFR5cGUpOiBVc2UgaXNYTUxNSU1FVHlwZSBpbiBpdHMKKyAgICAgICAgbmV3IGxvY2F0
aW9uIGluIE1JTUVUeXBlUmVnaXN0cnkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJl
Z2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzVGV4dE1J
TUVUeXBlKTogQWRkZWQuIE1vdmVkIGhlcmUgZnJvbQorICAgICAgICBET01JbXBsZW1lbnRhdGlv
bi4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRYTUxNSU1FVHlwZUNoYXIpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5cGUpOiBEaXR0by4K
KworICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDogQWRkZWQgaXNYTUxNSU1F
VHlwZSBhbmQgaXNUZXh0TUlNRVR5cGUuCisgICAgICAgIE1hZGUgaXNVbnN1cHBvcnRlZFRleHRN
SU1FVHlwZSBwcml2YXRlLgorCisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6aXNTdXBwb3J0ZWQpOiBEZWxldGVkLiBUaGlzIGZ1bmN0
aW9uIHdhcyBuZXZlciBjYWxsZWQuCisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDogVXBkYXRl
ZCBmb3IgdGhlIGFib3ZlIGNoYW5nZS4KKworICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VJc1hNTCk6IFVz
ZSBpc1hNTE1JTUVUeXBlIGluIGl0cyBuZXcKKyAgICAgICAgbG9jYXRpb24gaW4gTUlNRVR5cGVS
ZWdpc3RyeS4KKwogMjAxNi0wOC0yNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBBZGQgYWRvcHRlZCBjYWxsYmFjayBmb3IgY3VzdG9tIGVsZW1lbnRzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKaW5kZXggYjNhYTk0MjMzODYyYTJhOTJjZTU2ZTQ4ZTA0ODFmMzVlN2NiZThhZS4u
MDM2ZGFhOGQxMWMzZmViZTI5ZjRiNTllYTJjOTg4ZDRiZDRkOWI4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMzIEBACisyMDE2LTA4LTI3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KKworICAgICAgICBTdHJlYW1saW5lIERPTUltcGxlbWVudGF0aW9uLCBhbmQgbW92ZSBp
dCB0byBvdXIgbmV3IERPTSBleGNlcHRpb24gc3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEyOTUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01ET01JbXBsZW1lbnRhdGlvbi5tbToK
KyAgICAgICAgKHVud3JhcCk6IEFkZGVkLiBVc2UgdGhpcyBpbnN0ZWFkIG9mIHRoZSBJTVBMIG1h
Y3JvLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBkZWFsbG9jXSk6IFVwZGF0ZWQgdG8g
dXNlIHVud3JhcC4KKyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24gaGFzRmVhdHVyZTp2ZXJz
aW9uOl0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24gY3JlYXRlRG9jdW1l
bnRUeXBlOnB1YmxpY0lkOnN5c3RlbUlkOl0pOiBVcGRhdGVkIHRvIHdvcmsgd2l0aAorICAgICAg
ICBFeGNlcHRpb25Pci4KKyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24gY3JlYXRlRG9jdW1l
bnQ6cXVhbGlmaWVkTmFtZTpkb2N0eXBlOl0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NSW1wbGVt
ZW50YXRpb24gY3JlYXRlQ1NTU3R5bGVTaGVldDptZWRpYTpdKTogUmVtb3ZlZCBleGNlcHRpb24g
bG9naWMgc2luY2UKKyAgICAgICAgdGhpcyBmdW5jdGlvbiBjYW4gbm8gbG9uZ2VyIHJhaXNlIGFu
IGV4Y2VwdGlvbi4KKyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24gY3JlYXRlSFRNTERvY3Vt
ZW50Ol0pOiBVcGRhdGVkIHRvIHVzZSB1bndyYXAuCisgICAgICAgICgtW0RPTUltcGxlbWVudGF0
aW9uIGhhc0ZlYXR1cmU6Ol0pOiBDaGFuZ2VkIHRvIGNhbGwgdGhlIG5vbi1kZXByZWNhdGVkIHZl
cnNpb24KKyAgICAgICAgcmF0aGVyIHRoYW4gZHVwbGljYXRpbmcgaXRzIGltcGxlbWVudGF0aW9u
LiBBbHNvIG1vdmVkIGludG8gdGhlIGNhdGVnb3J5IGFzIGRlZmluZWQKKyAgICAgICAgaW4gdGhl
IGhlYWRlci4KKyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24gY3JlYXRlRG9jdW1lbnRUeXBl
Ojo6XSk6IERpdHRvLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVEb2N1bWVu
dDo6Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24gY3JlYXRlQ1NTU3R5
bGVTaGVldDo6XSk6IERpdHRvLgorCisgICAgICAgICogRE9NL0RPTURvY3VtZW50Lm1tOiBSZW1v
dmVkIHVubmVlZGVkIGluY2x1ZGUgb2YgRE9NSW1wbGVtZW50YXRpb24uaC4KKworICAgICAgICAq
IFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9jYW5Qcm92aWRlRG9j
dW1lbnRTb3VyY2VdKTogVXBkYXRlZCB0byB1c2UgaXNUZXh0TUlNRVR5cGUgaW4gaXRzIG5ldwor
ICAgICAgICBsb2NhdGlvbiBpbiBNSU1FVHlwZVJlZ2lzdHJ5IGluc3RlYWQgb2YgaW4gRE9NSW1w
bGVtZW50YXRpb24uCisKIDIwMTYtMDgtMjYgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCAyZWVkYzg1ZTExZjVkYThlOTliMDQ1OWRiZThiOTJiMDAyYmFmYTM4Li5hNDMz
ODkwNWY1NGZjZTAyMjU1MGJiMmFiM2U5ZjliYzM4ODEzYTU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTYtMDgtMjcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFN0cmVhbWxpbmUgRE9NSW1wbGVtZW50YXRpb24sIGFuZCBtb3ZlIGl0IHRvIG91ciBu
ZXcgRE9NIGV4Y2VwdGlvbiBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MTI5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZVByb3h5Ojppc0Rpc3BsYXlpbmdNYXJrdXBEb2N1bWVudCk6IFVzZSBp
c1hNTE1JTUVUeXBlIGluIGl0cworICAgICAgICBuZXcgbG9jYXRpb24gaW4gTUlNRVR5cGVSZWdp
c3RyeSByYXRoZXIgdGhhbiBpbiBET01JbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVQcm94eTo6aXNEaXNwbGF5aW5nUERGRG9jdW1lbnQpOiBSZW1vdmVkIHVubmVlZGVk
IHJlZHVuZGFudAorICAgICAgICBjaGVjayBmb3IgZW1wdHkgc3RyaW5nLCBhbHJlYWR5IGRvbmUg
YnkgTUlNRVR5cGVSZWdpc3RyeS4KKwogMjAxNi0wOC0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bVGhyZWFkZWQgQ29tcG9zaXRv
cl0gU2V2ZXJhbCBmbGFreSB0ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ3NGRjZDUzN2JjNTgzNjI0NGVlYWI3NzIxMjk1
OWNlYmViZjk5MDYuLjQ5Mzc1NTIyYTRjZjExOTRkMTUwYTFhYjhiNGE4YWI4MzI1NDZkMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTMyNzIsNiArMzI3Miw4IEBACiAJCTkzQzRGNkVCMTEwOEY5QTUwMDk5RDBEQiAvKiBBY2Nl
c3NpYmlsaXR5U2Nyb2xsYmFyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0M0RjZFOTExMDhGOUE1MDA5OUQwREIgLyogQWNjZXNzaWJpbGl0eVNjcm9s
bGJhci5oICovOyB9OwogCQk5M0NDRjAyNzBBRjZDNTI5MDAwMThFODkgLyogTmF2aWdhdGlvbkFj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTND
Q0YwMjYwQUY2QzUyOTAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0NDRjA2MDBBRjZDQTc2MDAw
MThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0NDRjA1RjBBRjZDQTc2MDAwMThFODkgLyogTmF2aWdhdGlv
bkFjdGlvbi5jcHAgKi87IH07CisJCTkzRDE5NjMxMUQ2Q0FCNzYwMEZDN0U0NyAvKiBFeGNlcHRp
b25Pci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNE
MTk2MzAxRDZDQUI3NjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbk9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNEMTk2MzMxRDZDQUI4MjAwRkM3RTQ3
IC8qIEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNEMTk2MzIxRDZDQUI4MjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRDQzNzlGMUQ1N0IxNTMw
MEFCODVFQSAvKiBKU01haW5UaHJlYWRFeGVjU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhGOTM0RDgzMTE4OUYxRUUwMDUwOEQ1RCAvKiBKU01h
aW5UaHJlYWRFeGVjU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5M0Q0MzdBMDFENTdCMTlBMDBBQjg1RUEgLyogQ3VzdG9tRWxlbWVudFJl
YWN0aW9uUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlCNTZDOUE4MUM4OTMxMjgwMEM0NTZERiAvKiBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkz
RDQzN0ExMUQ1N0IzRjQwMEFCODVFQSAvKiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREUxMUY0QTE4RDgz
MTFCMDA3ODk4M0IgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDQwNyw2ICsxMDQwOSw4IEBA
CiAJCTkzQ0E0Q0EyMDlERjkzRkEwMERGODY3NyAvKiBzdmcuY3NzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IHN2Zy5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQ0NGMDI2MEFG
NkM1MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5hdmlnYXRpb25BY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNDQ0YwNUYwQUY2Q0E3NjAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF2aWdhdGlvbkFjdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDE5NjMwMUQ2Q0FCNzYwMEZDN0U0NyAv
KiBFeGNlcHRpb25Pci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNlcHRp
b25Pci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0QxOTYzMjFENkNBQjgyMDBG
QzdFNDcgLyogRXhjZXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4
Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Q5RDUzQjBEQTI3RTE4
MDA3NzIxNkMgLyogUmFuZ2VCb3VuZGFyeVBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJhbmdlQm91bmRhcnlQb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0UyMjdEQjBBRjU4OUFEMDBENDgzMjQgLyogRG9jdW1lbnRMb2FkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRMb2FkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0UyMjdERDBBRjU4OUFEMDBENDgzMjQgLyogTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjI5MDksMTEgKzIyOTEzLDEzIEBACiAJCQkJRTEyRURCN0EwQjMwOEE3
ODAwMjcwNEI2IC8qIEV2ZW50VGFyZ2V0LmggKi8sCiAJCQkJODVBRkE3NDIwQUFGMjk4NDAwRTg0
MzA1IC8qIEV2ZW50VGFyZ2V0LmlkbCAqLywKIAkJCQlDRENFNUNEMDE0NjMzQkM5MDBENDdDQ0Eg
LyogRXZlbnRUYXJnZXRGYWN0b3J5LmluICovLAorCQkJCTkzRDE5NjMyMUQ2Q0FCODIwMEZDN0U0
NyAvKiBFeGNlcHRpb24uaCAqLywKIAkJCQlCQzYwRDhGMDBEMkExMUUwMDBCOTkxOEYgLyogRXhj
ZXB0aW9uQmFzZS5jcHAgKi8sCiAJCQkJQkM2MEQ4RjEwRDJBMTFFMDAwQjk5MThGIC8qIEV4Y2Vw
dGlvbkJhc2UuaCAqLywKIAkJCQk5MzVGQkNGMTA5QkExNDNCMDBFMjMwQjEgLyogRXhjZXB0aW9u
Q29kZS5oICovLAogCQkJCUE3Q0FDREIwMTNDRTg3NUIwMEJCQkUzRiAvKiBFeGNlcHRpb25Db2Rl
UGxhY2Vob2xkZXIuY3BwICovLAogCQkJCUE3NEJCNzZBMTNCREE4NjMwMEZGN0JGMCAvKiBFeGNl
cHRpb25Db2RlUGxhY2Vob2xkZXIuaCAqLywKKwkJCQk5M0QxOTYzMDFENkNBQjc2MDBGQzdFNDcg
LyogRXhjZXB0aW9uT3IuaCAqLywKIAkJCQlFNDdFMjc2NzE2MDM2RURDMDBFRTJBRkIgLyogRXh0
ZW5zaW9uU3R5bGVTaGVldHMuY3BwICovLAogCQkJCUU0N0UyNzY0MTYwMzZFRDIwMEVFMkFGQiAv
KiBFeHRlbnNpb25TdHlsZVNoZWV0cy5oICovLAogCQkJCUI2RDlEMjM0MTRFQUJEMjYwMDkwRDc1
RSAvKiBGb2N1c0V2ZW50LmNwcCAqLywKQEAgLTI1NTAyLDYgKzI1NTA4LDcgQEAKIAkJCQkwNzhF
MDkzOTE3RDE2QjJDMDA0MjBBQTEgLyogTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDc4RTA5MTYxN0QxNEQxQzAwNDIwQUExIC8qIE1lZGlhU3RyZWFtRXZl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTM3MTdEMTZCMkMwMDQyMEFBMSAvKiBNZWRp
YVN0cmVhbVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDE5NjMzMUQ2Q0FCODIwMEZD
N0U0NyAvKiBFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTE3MTdEMTREMUMw
MDQyMEFBMSAvKiBNZWRpYVN0cmVhbVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhF
MDkxODE3RDE0RDFDMDA0MjBBQTEgLyogTWVkaWFTdHJlYW1UcmFjay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDc4RTA5MTkxN0QxNEQxQzAwNDIwQUExIC8qIE1lZGlhU3RyZWFtVHJhY2tFdmVudC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNjU2OSw2ICsyNjU3Niw3IEBACiAJCQkJQjIyMjdBRDcwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdB
REEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybWFibGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyMjI3QUREMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1EaXN0YW5jZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTNEMTk2MzExRDZDQUI3NjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbk9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FERjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVHJh
bnNmb3JtTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhDNzEzNkUxMjg5NTZBMzAwMUIxMDdF
IC8qIFNWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyMjI3QUUyMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUUmVmRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IGExMzk1
ODJiMTIyNWY3ZTk5YTFiZDYzMTY3ZGY3NjExM2Q0NTY1MzQuLmY4Yzk3YzRmY2Q1N2I2ZjZlMjIw
ZTJmMzczNzQ0YzE2YWM2MzZkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5oCkBAIC0yMyw5ICsyMyw5IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
RE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNs
dWRlICJKU0RPTVdyYXBwZXIuaCIKLSNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNs
dWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGVJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmgiCkBAIC02OCw3ICs2
OCw5IEBAIGNsYXNzIE5vZGU7CiAKIHN0cnVjdCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2U7CiAK
LXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBF
eGNlcHRpb25PcjsKKwordXNpbmcgRXhjZXB0aW9uQ29kZSA9IGludDsKIAogc3RydWN0IEV4Y2Vw
dGlvbkRldGFpbHMgewogICAgIFN0cmluZyBtZXNzYWdlOwpAQCAtMTg1LDYgKzE4Nyw5IEBAIEpT
Qzo6SlNWYWx1ZSBjcmVhdGVET01FeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBFeGNlcHRpb25D
b2RlLCBjb25zdCBTdHJpbmcmKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RE9NRXhjZXB0aW9u
KEpTQzo6RXhlY1N0YXRlKiwgRXhjZXB0aW9uQ29kZSk7CiB2b2lkIHNldERPTUV4Y2VwdGlvbihK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpOwogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCosIEV4Y2VwdGlvbk9yPFQ+JiYpOwordGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRl
KiwgSlNET01HbG9iYWxPYmplY3QqLCBFeGNlcHRpb25PcjxUPiYmKTsKKwogSlNDOjpKU1ZhbHVl
IGpzU3RyaW5nKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgVVJMJik7IC8vIGVtcHR5IGlmIHRoZSBV
UkwgaXMgbnVsbAogCiBKU0M6OkpTVmFsdWUganNTdHJpbmdPck51bGwoSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBTdHJpbmcmKTsgLy8gbnVsbCBpZiB0aGUgc3RyaW5nIGlzIG51bGwKQEAgLTc4Niw0
ICs3OTEsMjMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b051
bGxhYmxlSlNOdW1iZXIoT3B0aW9uYWw8VD4gb3B0aW9uYWwKICAgICByZXR1cm4gb3B0aW9uYWxO
dW1iZXIgPyBKU0M6OmpzTnVtYmVyKG9wdGlvbmFsTnVtYmVyLnZhbHVlKCkpIDogSlNDOjpqc051
bGwoKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RXhjZXB0aW9uT3I8VD4mJiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUuaGFzRXhjZXB0aW9uKCkp
IHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCB2YWx1ZS5leGNlcHRpb25Db2RlKCkp
OworICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4g
dG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB2YWx1ZS5yZXR1cm5WYWx1ZSgpKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhj
ZXB0aW9uT3I8VD4mJiB2YWx1ZSkKK3sKKyAgICAvLyBGSVhNRTogSXQncyByZWFsbHkgYW5ub3lp
bmcgdG8gaGF2ZSB0d28gb2YgdGhlc2UgZnVuY3Rpb25zLiBTaG91bGQgZmluZCBhIHdheSB0byBj
b21iaW5lIHRvSlMgYW5kIHRvSlNOZXdseUNyZWF0ZWQuCisgICAgaWYgKHZhbHVlLmhhc0V4Y2Vw
dGlvbigpKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgdmFsdWUuZXhjZXB0aW9u
Q29kZSgpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKKyAgICB9CisgICAg
cmV0dXJuIHRvSlNOZXdseUNyZWF0ZWQoc3RhdGUsIGdsb2JhbE9iamVjdCwgdmFsdWUucmV0dXJu
VmFsdWUoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RE9NSW1wbGVtZW50YXRpb24uY3BwCmluZGV4IGFmYTM2Mjg4MjRhMGZhZjMwNGQ4ZGJiY2Y1NGUy
YjNjYTg3MTg5MTIuLmVmYmU1MWZmZjU5ZDc0ZTkzZDM5NGU4YzkwNTc1NWQ0MTZiODA3MjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcApAQCAtMjUsMjUgKzI1LDI1
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIK
IAotI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgor
I2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUeXBlLmgiCiAjaW5j
bHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJG
VFBEaXJlY3RvcnlEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJh
bWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIkZU
UERpcmVjdG9yeURvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTEhlYWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRpdGxlRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEb2N1bWVudC5oIgorI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJNZWRp
YURvY3VtZW50LmgiCi0jaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJNZWRpYUxp
c3QuaCIKLSNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5
ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgogI2luY2x1
ZGUgIlBsdWdpbkRvY3VtZW50LmgiCkBAIC03Myw2ICs3Myw3IEBAIHN0YXRpYyB2b2lkIGFkZFN0
cmluZyhGZWF0dXJlU2V0JiBzZXQsIGNvbnN0IGNoYXIqIHN0cmluZykKIH0KIAogI2lmIEVOQUJM
RShWSURFTykKKwogY2xhc3MgRE9NSW1wbGVtZW50YXRpb25TdXBwb3J0c1R5cGVDbGllbnQgOiBw
dWJsaWMgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQgewogcHVibGljOgogICAgIERPTUlt
cGxlbWVudGF0aW9uU3VwcG9ydHNUeXBlQ2xpZW50KGJvb2wgbmVlZHNIYWNrcywgY29uc3QgU3Ry
aW5nJiBob3N0KQpAQCAtODgsNiArODksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9uZWVkc0hh
Y2tzOwogICAgIFN0cmluZyBtX2hvc3Q7CiB9OworCiAjZW5kaWYKIAogc3RhdGljIGJvb2wgaXNT
dXBwb3J0ZWRTVkcxMEZlYXR1cmUoY29uc3QgU3RyaW5nJiBmZWF0dXJlLCBjb25zdCBTdHJpbmcm
IHZlcnNpb24pCkBAIC0yMDcsMTAzICsyMDksNTggQEAgYm9vbCBET01JbXBsZW1lbnRhdGlvbjo6
aGFzRmVhdHVyZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPERvY3VtZW50VHlwZT4gRE9NSW1wbGVtZW50
YXRpb246OmNyZWF0ZURvY3VtZW50VHlwZShjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsCi0g
ICAgY29uc3QgU3RyaW5nJiBwdWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgRXhjZXB0
aW9uQ29kZSYgZWMpCitFeGNlcHRpb25PcjxSZWY8RG9jdW1lbnRUeXBlPj4gRE9NSW1wbGVtZW50
YXRpb246OmNyZWF0ZURvY3VtZW50VHlwZShjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIGNv
bnN0IFN0cmluZyYgcHVibGljSWQsIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQpCiB7Ci0gICAgU3Ry
aW5nIHByZWZpeCwgbG9jYWxOYW1lOwotICAgIGlmICghRG9jdW1lbnQ6OnBhcnNlUXVhbGlmaWVk
TmFtZShxdWFsaWZpZWROYW1lLCBwcmVmaXgsIGxvY2FsTmFtZSwgZWMpKQotICAgICAgICByZXR1
cm4gMDsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBTdHJpbmcgcHJlZml4OworICAg
IFN0cmluZyBsb2NhbE5hbWU7CisgICAgRG9jdW1lbnQ6OnBhcnNlUXVhbGlmaWVkTmFtZShxdWFs
aWZpZWROYW1lLCBwcmVmaXgsIGxvY2FsTmFtZSwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbihlYyk7CiAKICAgICByZXR1cm4gRG9jdW1lbnRUeXBlOjpjcmVhdGUo
bV9kb2N1bWVudCwgcXVhbGlmaWVkTmFtZSwgcHVibGljSWQsIHN5c3RlbUlkKTsKIH0KIAotRE9N
SW1wbGVtZW50YXRpb24qIERPTUltcGxlbWVudGF0aW9uOjpnZXRJbnRlcmZhY2UoY29uc3QgU3Ry
aW5nJiAvKmZlYXR1cmUqLykKK3N0YXRpYyBpbmxpbmUgUmVmPFhNTERvY3VtZW50PiBjcmVhdGVY
TUxEb2N1bWVudChjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSkKIHsKLSAgICByZXR1cm4gMDsK
KyAgICBpZiAobmFtZXNwYWNlVVJJID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpCisgICAg
ICAgIHJldHVybiBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgpKTsKKyAgICBpZiAo
bmFtZXNwYWNlVVJJID09IEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpCisgICAgICAgIHJl
dHVybiBYTUxEb2N1bWVudDo6Y3JlYXRlWEhUTUwobnVsbHB0ciwgVVJMKCkpOworICAgIHJldHVy
biBYTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgpKTsKIH0KIAotUmVmUHRyPFhNTERv
Y3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBu
YW1lc3BhY2VVUkksCi0gICAgY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBEb2N1bWVudFR5
cGUqIGRvY3R5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8UmVmPFhNTERvY3Vt
ZW50Pj4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgbmFt
ZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIERvY3VtZW50VHlwZSogZG9j
dW1lbnRUeXBlKQogewotICAgIFJlZlB0cjxYTUxEb2N1bWVudD4gZG9jOwotICAgIGlmIChuYW1l
c3BhY2VVUkkgPT0gU1ZHTmFtZXM6OnN2Z05hbWVzcGFjZVVSSSkKLSAgICAgICAgZG9jID0gU1ZH
RG9jdW1lbnQ6OmNyZWF0ZSgwLCBVUkwoKSk7Ci0gICAgZWxzZSBpZiAobmFtZXNwYWNlVVJJID09
IEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpCi0gICAgICAgIGRvYyA9IFhNTERvY3VtZW50
OjpjcmVhdGVYSFRNTCgwLCBVUkwoKSk7Ci0gICAgZWxzZQotICAgICAgICBkb2MgPSBYTUxEb2N1
bWVudDo6Y3JlYXRlKDAsIFVSTCgpKTsKKyAgICBhdXRvIGRvY3VtZW50ID0gY3JlYXRlWE1MRG9j
dW1lbnQobmFtZXNwYWNlVVJJKTsKIAotICAgIGRvYy0+c2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3ko
bV9kb2N1bWVudC5zZWN1cml0eU9yaWdpblBvbGljeSgpKTsKKyAgICBkb2N1bWVudC0+c2V0U2Vj
dXJpdHlPcmlnaW5Qb2xpY3kobV9kb2N1bWVudC5zZWN1cml0eU9yaWdpblBvbGljeSgpKTsKIAot
ICAgIFJlZlB0cjxOb2RlPiBkb2N1bWVudEVsZW1lbnQ7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGRv
Y3VtZW50RWxlbWVudDsKICAgICBpZiAoIXF1YWxpZmllZE5hbWUuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIGRvY3VtZW50RWxlbWVudCA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZVVSSSwg
cXVhbGlmaWVkTmFtZSwgZWMpOworICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAg
ICAgZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VV
UkksIHF1YWxpZmllZE5hbWUsIGVjKTsKICAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uKGVjKTsKICAgICB9CiAK
LSAgICBpZiAoZG9jdHlwZSkKLSAgICAgICAgZG9jLT5hcHBlbmRDaGlsZCgqZG9jdHlwZSk7Cisg
ICAgaWYgKGRvY3VtZW50VHlwZSkKKyAgICAgICAgZG9jdW1lbnQtPmFwcGVuZENoaWxkKCpkb2N1
bWVudFR5cGUpOwogICAgIGlmIChkb2N1bWVudEVsZW1lbnQpCi0gICAgICAgIGRvYy0+YXBwZW5k
Q2hpbGQoKmRvY3VtZW50RWxlbWVudCk7CisgICAgICAgIGRvY3VtZW50LT5hcHBlbmRDaGlsZCgq
ZG9jdW1lbnRFbGVtZW50KTsKIAotICAgIHJldHVybiBkb2M7CisgICAgcmV0dXJuIFdURk1vdmUo
ZG9jdW1lbnQpOwogfQogCi1SZWY8Q1NTU3R5bGVTaGVldD4gRE9NSW1wbGVtZW50YXRpb246OmNy
ZWF0ZUNTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBtZWRpYSwgRXhj
ZXB0aW9uQ29kZSYpCitSZWY8Q1NTU3R5bGVTaGVldD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0
ZUNTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBtZWRpYSkKIHsKICAg
ICAvLyBGSVhNRTogVGl0bGUgc2hvdWxkIGJlIHNldC4KICAgICAvLyBGSVhNRTogTWVkaWEgY291
bGQgaGF2ZSB3cm9uZyBzeW50YXgsIGluIHdoaWNoIGNhc2Ugd2Ugc2hvdWxkIGdlbmVyYXRlIGFu
IGV4Y2VwdGlvbi4KLSAgICBSZWY8Q1NTU3R5bGVTaGVldD4gc2hlZXQgPSBDU1NTdHlsZVNoZWV0
OjpjcmVhdGUoU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoKSk7CisgICAgYXV0byBzaGVldCA9
IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZSgpKTsKICAg
ICBzaGVldC0+c2V0TWVkaWFRdWVyaWVzKE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZUFsbG93aW5nRGVz
Y3JpcHRpb25TeW50YXgobWVkaWEpKTsKICAgICByZXR1cm4gc2hlZXQ7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgYm9vbCBpc1ZhbGlkWE1MTUlNRVR5cGVDaGFyKFVDaGFyIGMpCi17Ci0gICAgLy8gVmFs
aWQgY2hhcmFjdGVycyBwZXIgUkZDcyAzMDIzIGFuZCAyMDQ1OgotICAgIC8vIDAtOWEtekEtWl8t
K34hJF57fXwuJSdgIyYqCi0gICAgcmV0dXJuIGlzQVNDSUlBbHBoYW51bWVyaWMoYykgfHwgYyA9
PSAnIScgfHwgYyA9PSAnIycgfHwgYyA9PSAnJCcgfHwgYyA9PSAnJScgfHwgYyA9PSAnJicgfHwg
YyA9PSAnXCcnIHx8IGMgPT0gJyonIHx8IGMgPT0gJysnCi0gICAgICAgIHx8IGMgPT0gJy0nIHx8
IGMgPT0gJy4nIHx8IGMgPT0gJ14nIHx8IGMgPT0gJ18nIHx8IGMgPT0gJ2AnIHx8IGMgPT0gJ3sn
IHx8IGMgPT0gJ3wnIHx8IGMgPT0gJ30nIHx8IGMgPT0gJ34nOwotfQotCi1ib29sIERPTUltcGxl
bWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCi17Ci0gICAg
Ly8gRklYTUU6IENhbiB3ZSBtb3ZlIHRoaXMgbG9naWMgdG8gTUlNRVR5cGVSZWdpc3RyeSBhbmQg
aGF2ZSB0aGlzIGp1c3QgYmUgYSBzaW5nbGUgZnVuY3Rpb24gY2FsbD8KLQotICAgIGlmIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQveG1sIikgfHwgZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi94bWwiKSB8fCBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQveHNsIikpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKCFtaW1lVHlwZS5lbmRzV2l0aCgiK3htbCIsIGZh
bHNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc2l6ZV90IHNsYXNoUG9zaXRpb24g
PSBtaW1lVHlwZS5maW5kKCcvJyk7Ci0gICAgLy8gVGFrZSBpbnRvIGFjY291bnQgdGhlICcreG1s
JyBlbmRpbmcgb2YgbWltZVR5cGUuCi0gICAgaWYgKHNsYXNoUG9zaXRpb24gPT0gbm90Rm91bmQg
fHwgIXNsYXNoUG9zaXRpb24gfHwgc2xhc2hQb3NpdGlvbiA9PSBtaW1lVHlwZS5sZW5ndGgoKSAt
IDUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEFnYWluLCBtaW1lVHlwZSBlbmRz
IHdpdGggJyt4bWwnLCBubyBuZWVkIHRvIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGF0IHN1YnN0
cmluZy4KLSAgICBzaXplX3QgbWltZUxlbmd0aCA9IG1pbWVUeXBlLmxlbmd0aCgpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbWltZUxlbmd0aCAtIDQ7ICsraSkgewotICAgICAgICBpZiAo
IWlzVmFsaWRYTUxNSU1FVHlwZUNoYXIobWltZVR5cGVbaV0pICYmIGkgIT0gc2xhc2hQb3NpdGlv
bikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotYm9vbCBET01JbXBsZW1lbnRhdGlvbjo6aXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKLXsKLSAgICAvLyBGSVhNRTogQ2FuIHdlIG1vdmUgdGhpcyBsb2dpYyB0byBN
SU1FVHlwZVJlZ2lzdHJ5IGFuZCBoYXZlIHRoaXMganVzdCBiZSBhIHNpbmdsZSBmdW5jdGlvbiBj
YWxsPwotCi0gICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlw
dE1JTUVUeXBlKG1pbWVUeXBlKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL2pzb24iKSAvLyBSZW5kZXIgSlNPTiBhcyB0ZXh0
L3BsYWluLgotICAgICAgICB8fCAobWltZVR5cGUuc3RhcnRzV2l0aCgidGV4dC8iLCBmYWxzZSkK
LSAgICAgICAgICAgICYmICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwg
InRleHQvaHRtbCIpCi0gICAgICAgICAgICAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobWltZVR5cGUsICJ0ZXh0L3htbCIpCi0gICAgICAgICAgICAmJiAhZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L3hzbCIpKTsKLX0KLQogUmVmPEhUTUxEb2N1
bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcm
IHRpdGxlKQogewogICAgIGF1dG8gZG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxs
cHRyLCBVUkwoKSk7CkBAIC0zMjEsNiArMjc4LDkgQEAgUmVmPEhUTUxEb2N1bWVudD4gRE9NSW1w
bGVtZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKQogCiBS
ZWY8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJp
bmcmIHR5cGUsIEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiB7CisgICAgLy8gRklYTUU6
IENvbmZ1c2luZyB0byBoYXZlIHRoaXMgaGVyZSB3aXRoIHB1YmxpYyBET00gQVBJcyBmb3IgY3Jl
YXRpbmcgZG9jdW1lbnRzLiBUaGlzIGlzIGRpZmZlcmVudCBlbm91Z2ggdGhhdCBpdCBzaG91bGQg
cGVyaGFwcyBiZSBtb3ZlZC4KKyAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBpcyBkb2luZyBj
YXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb25zIG9uIE1JTUUgdHlwZXMuIFNob3VsZCBkbyBlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSBpbnN0ZWFkLgorCiAgICAgLy8gUGx1Z2lucyBjYW5u
b3QgdGFrZSBIVE1MIGFuZCBYSFRNTCBmcm9tIHVzLCBhbmQgd2UgZG9uJ3QgZXZlbiBuZWVkIHRv
IGluaXRpYWxpemUgdGhlIHBsdWdpbiBkYXRhYmFzZSBmb3IgdGhvc2UuCiAgICAgaWYgKHR5cGUg
PT0gInRleHQvaHRtbCIpCiAgICAgICAgIHJldHVybiBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShmcmFt
ZSwgdXJsKTsKQEAgLTMzOCw3ICsyOTgsNyBAQCBSZWY8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0
aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIHR5cGUsIEZyYW1lKiBmcmFtZQogICAg
ICAgICByZXR1cm4gSW1hZ2VEb2N1bWVudDo6Y3JlYXRlKCpmcmFtZSwgdXJsKTsKIAogICAgIFBs
dWdpbkRhdGEqIHBsdWdpbkRhdGEgPSBudWxscHRyOwotICAgIFBsdWdpbkRhdGE6OkFsbG93ZWRQ
bHVnaW5UeXBlcyBhbGxvd2VkUGx1Z2luVHlwZXMgPSBQbHVnaW5EYXRhOjpPbmx5QXBwbGljYXRp
b25QbHVnaW5zOworICAgIGF1dG8gYWxsb3dlZFBsdWdpblR5cGVzID0gUGx1Z2luRGF0YTo6T25s
eUFwcGxpY2F0aW9uUGx1Z2luczsKICAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPnBhZ2UoKSkgewog
ICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLnN1YmZyYW1lTG9hZGVyKCkuYWxsb3dQbHVnaW5z
KCkpCiAgICAgICAgICAgICBhbGxvd2VkUGx1Z2luVHlwZXMgPSBQbHVnaW5EYXRhOjpBbGxQbHVn
aW5zOwpAQCAtMzY5LDEzICszMjksMTMgQEAgUmVmPERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlv
bjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0eXBlLCBGcmFtZSogZnJhbWUKICAgICAv
LyBhbmQgYWxzbyBzZXJ2ZXMgYXMgYW4gb3B0aW1pemF0aW9uIHRvIHByZXZlbnQgbG9hZGluZyB0
aGUgcGx1Zy1pbiBkYXRhYmFzZSBpbiB0aGUgY29tbW9uIGNhc2UuCiAgICAgaWYgKHR5cGUgIT0g
InRleHQvcGxhaW4iICYmICgocGx1Z2luRGF0YSAmJiBwbHVnaW5EYXRhLT5zdXBwb3J0c1dlYlZp
c2libGVNaW1lVHlwZSh0eXBlLCBhbGxvd2VkUGx1Z2luVHlwZXMpKSB8fCAoZnJhbWUgJiYgZnJh
bWUtPmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEFsd2F5c1VzZVBsdWdpbkRvY3VtZW50KHR5cGUp
KSkpCiAgICAgICAgIHJldHVybiBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwot
ICAgIGlmIChpc1RleHRNSU1FVHlwZSh0eXBlKSkKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6
aXNUZXh0TUlNRVR5cGUodHlwZSkpCiAgICAgICAgIHJldHVybiBUZXh0RG9jdW1lbnQ6OmNyZWF0
ZShmcmFtZSwgdXJsKTsKIAogICAgIGlmICh0eXBlID09ICJpbWFnZS9zdmcreG1sIikKICAgICAg
ICAgcmV0dXJuIFNWR0RvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CiAKLSAgICBpZiAoaXNY
TUxNSU1FVHlwZSh0eXBlKSkKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlw
ZSh0eXBlKSkKICAgICAgICAgcmV0dXJuIFhNTERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7
CiAKICAgICByZXR1cm4gSFRNTERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCmluZGV4IDg4ODBjNGM1MGMxMjk2YjZhOTJjY2I4
NTBhYTdkMGU1YzdlZmM1OTQuLmQ4NmFkZjA3YmYxYTIyMGEyZDEyODZkNGZjMTVhM2IzNzlhY2Fi
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCkBAIC0yLDcgKzIsNyBA
QAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAg
ICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAg
ICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMs
NiArMjMsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAj
aW5jbHVkZSAiWE1MRG9jdW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzYsMjUg
KzM3LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlcmVmKCkgeyBtX2RvY3VtZW50LmRlcmVmKCk7
IH0KICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50OyB9CiAKLSAg
ICAvLyBET00gbWV0aG9kcyAmIGF0dHJpYnV0ZXMgZm9yIERPTUltcGxlbWVudGF0aW9uCi0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaGFzRmVhdHVyZShjb25zdCBTdHJpbmcmIGZlYXR1
cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPERv
Y3VtZW50VHlwZT4gY3JlYXRlRG9jdW1lbnRUeXBlKGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFt
ZSwgY29uc3QgU3RyaW5nJiBwdWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgRXhjZXB0
aW9uQ29kZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxYTUxEb2N1bWVudD4gY3JlYXRl
RG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlm
aWVkTmFtZSwgRG9jdW1lbnRUeXBlKiwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgRE9NSW1wbGVt
ZW50YXRpb24qIGdldEludGVyZmFjZShjb25zdCBTdHJpbmcmIGZlYXR1cmUpOwotCi0gICAgLy8g
RnJvbSB0aGUgRE9NSW1wbGVtZW50YXRpb25DU1MgaW50ZXJmYWNlCi0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGVDU1NTdHlsZVNoZWV0KGNvbnN0IFN0
cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgbWVkaWEsIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAg
IC8vIEZyb20gdGhlIEhUTUxET01JbXBsZW1lbnRhdGlvbiBpbnRlcmZhY2UKKyAgICBXRUJDT1JF
X0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8RG9jdW1lbnRUeXBlPj4gY3JlYXRlRG9jdW1lbnRUeXBl
KGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgU3RyaW5nJiBwdWJsaWNJZCwgY29u
c3QgU3RyaW5nJiBzeXN0ZW1JZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVm
PFhNTERvY3VtZW50Pj4gY3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkks
IGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgRG9jdW1lbnRUeXBlKik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgUmVmPEhUTUxEb2N1bWVudD4gY3JlYXRlSFRNTERvY3VtZW50KGNvbnN0IFN0cmlu
ZyYgdGl0bGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGhhc0ZlYXR1cmUoY29u
c3QgU3RyaW5nJiBmZWF0dXJlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlQ1NTU3R5bGVTaGVldChjb25z
dCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIG1lZGlhKTsKIAotICAgIC8vIE90aGVyIG1l
dGhvZHMgKG5vdCBwYXJ0IG9mIERPTSkKICAgICBzdGF0aWMgUmVmPERvY3VtZW50PiBjcmVhdGVE
b2N1bWVudChjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBGcmFtZSosIGNvbnN0IFVSTCYpOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNYTUxNSU1FVHlwZShjb25zdCBTdHJpbmcm
IE1JTUVUeXBlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1RleHRNSU1FVHlw
ZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKTsKLQogcHJpdmF0ZToKICAgICBEb2N1bWVudCYgbV9k
b2N1bWVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50
YXRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbAppbmRl
eCAzMzAwNWRhMTAwODRiYjM4MjczNzJmOTNiYjIwOGFlZGYyMzllNmQxLi42NGM4MzY1NjE0OTgx
ZTU5ZmFlYzlhMDAxMTk3Yjk2YmViNTM4ZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRE9NSW1wbGVtZW50YXRpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBs
ZW1lbnRhdGlvbi5pZGwKQEAgLTIzLDIxICsyMywyMSBAQAogICAgIEdlbmVyYXRlSXNSZWFjaGFi
bGU9SW1wbERvY3VtZW50LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVy
ZmFjZSBET01JbXBsZW1lbnRhdGlvbiB7Ci0gICAgLy8gRklYTUU6IFVzaW5nICJ1bmRlZmluZWQi
IGFzIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlIGlzIHdyb25nLgotICAgIGJvb2xlYW4gaGFzRmVh
dHVyZShvcHRpb25hbCBET01TdHJpbmcgZmVhdHVyZSA9ICJ1bmRlZmluZWQiLCBbVHJlYXROdWxs
QXM9RW1wdHlTdHJpbmddIG9wdGlvbmFsIERPTVN0cmluZyB2ZXJzaW9uID0gInVuZGVmaW5lZCIp
OwotCi0gICAgW1JhaXNlc0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBEb2N1bWVudFR5cGUgY3JlYXRl
RG9jdW1lbnRUeXBlKERPTVN0cmluZyBxdWFsaWZpZWROYW1lLCBET01TdHJpbmcgcHVibGljSWQs
IERPTVN0cmluZyBzeXN0ZW1JZCk7Ci0KLSAgICBbTmV3T2JqZWN0LCBSYWlzZXNFeGNlcHRpb25d
CisgICAgW05ld09iamVjdF0gRG9jdW1lbnRUeXBlIGNyZWF0ZURvY3VtZW50VHlwZShET01TdHJp
bmcgcXVhbGlmaWVkTmFtZSwgRE9NU3RyaW5nIHB1YmxpY0lkLCBET01TdHJpbmcgc3lzdGVtSWQp
OworICAgIC8vIEZJWE1FOiBTaG91bGQgaGFuZGxlIHRoaXMgTEFOR1VBR0VfR09CSkVDVCBzcGVj
aWFsIGNhc2UgaW4gYSBzaW1wbGVyIHdheSBvciBnZXQgcmlkIG9mIGl0LgorICAgIFtOZXdPYmpl
Y3RdCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9HT0JKRUNUKSAmJiBMQU5HVUFHRV9HT0JKRUNUCiAg
ICAgICAgIERvY3VtZW50CiAjZWxzZQogICAgICAgICBYTUxEb2N1bWVudAogI2VuZGlmCi0gICAg
Y3JlYXRlRG9jdW1lbnQoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIFtUcmVhdE51bGxBcz1FbXB0
eVN0cmluZ10gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIG9wdGlvbmFsIERvY3VtZW50VHlwZT8g
ZG9jdHlwZSA9IG51bGwpOworICAgICAgICBjcmVhdGVEb2N1bWVudChET01TdHJpbmc/IG5hbWVz
cGFjZVVSSSwgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgcXVhbGlmaWVkTmFt
ZSwgb3B0aW9uYWwgRG9jdW1lbnRUeXBlPyBkb2N0eXBlID0gbnVsbCk7CisgICAgW05ld09iamVj
dF0gSFRNTERvY3VtZW50IGNyZWF0ZUhUTUxEb2N1bWVudChvcHRpb25hbCBET01TdHJpbmcgdGl0
bGUpOwogCisgICAgLy8gRklYTUU6IExhdGVzdCBET00gc3BlY2lmaWNhdGlvbiBzYXlzIHRoaXMg
c2hvdWxkIGlnbm9yZSBhbGwgYXJndW1lbnRzIGFuZCBhbHdheXMgcmV0dXJuIHRydWUuCiAgICAg
Ly8gRklYTUU6IFVzaW5nICJ1bmRlZmluZWQiIGFzIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlIGlz
IHdyb25nLgotICAgIFtSYWlzZXNFeGNlcHRpb25dIENTU1N0eWxlU2hlZXQgY3JlYXRlQ1NTU3R5
bGVTaGVldChvcHRpb25hbCBET01TdHJpbmcgdGl0bGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwg
RE9NU3RyaW5nIG1lZGlhID0gInVuZGVmaW5lZCIpOworICAgIGJvb2xlYW4gaGFzRmVhdHVyZShv
cHRpb25hbCBET01TdHJpbmcgZmVhdHVyZSA9ICJ1bmRlZmluZWQiLCBbVHJlYXROdWxsQXM9RW1w
dHlTdHJpbmddIG9wdGlvbmFsIERPTVN0cmluZyB2ZXJzaW9uID0gInVuZGVmaW5lZCIpOwogCi0g
ICAgW05ld09iamVjdF0gSFRNTERvY3VtZW50IGNyZWF0ZUhUTUxEb2N1bWVudChvcHRpb25hbCBE
T01TdHJpbmcgdGl0bGUpOworICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBkZWZh
dWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KKyAgICBDU1NTdHlsZVNoZWV0IGNyZWF0ZUNT
U1N0eWxlU2hlZXQob3B0aW9uYWwgRE9NU3RyaW5nIHRpdGxlID0gInVuZGVmaW5lZCIsIG9wdGlv
bmFsIERPTVN0cmluZyBtZWRpYSA9ICJ1bmRlZmluZWQiKTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCA0ZDAzMDhkN2EzNzc4ZmQzYTRkODQyNDVjODBlZjZjZTNmOGQ2NjViLi45NTcw
ODc5MDhmYTI3OTY4OGY3Mzk0ZDVmMmExYjMxM2YyNDRiMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTEzNzQsMTEgKzEzNzQsNiBAQCB2b2lkIERvY3VtZW50OjpzZXRDb250ZW50TGFu
Z3VhZ2UoY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKIAogdm9pZCBEb2N1bWVudDo6c2V0WE1MVmVy
c2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlm
ICghaW1wbGVtZW50YXRpb24oKS5oYXNGZWF0dXJlKCJYTUwiLCBTdHJpbmcoKSkpIHsKLSAgICAg
ICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAg
IGlmICghWE1MRG9jdW1lbnRQYXJzZXI6OnN1cHBvcnRzWE1MVmVyc2lvbih2ZXJzaW9uKSkgewog
ICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm47CkBAIC0xMzg3
LDEzICsxMzgyLDggQEAgdm9pZCBEb2N1bWVudDo6c2V0WE1MVmVyc2lvbihjb25zdCBTdHJpbmcm
IHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIG1feG1sVmVyc2lvbiA9IHZlcnNpb247
CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldFhNTFN0YW5kYWxvbmUoYm9vbCBzdGFuZGFsb25lLCBF
eGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRG9jdW1lbnQ6OnNldFhNTFN0YW5kYWxvbmUoYm9vbCBz
dGFuZGFsb25lLCBFeGNlcHRpb25Db2RlJikKIHsKLSAgICBpZiAoIWltcGxlbWVudGF0aW9uKCku
aGFzRmVhdHVyZSgiWE1MIiwgU3RyaW5nKCkpKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRF
RF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBtX3htbFN0YW5kYWxvbmUgPSBz
dGFuZGFsb25lID8gU3RhbmRhbG9uZSA6IE5vdFN0YW5kYWxvbmU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNl
cHRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xYWNiZDVmMmZkN2VlYWU5NmQyNTNlY2I4YTNmNDg0M2VlOWFj
NDA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbi5oCkBA
IC0wLDAgKzEsNTMgQEAKKy8qCisKK0NvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCithcmUgbWV0OgorMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCitESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCitBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKK1NPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCit1c2luZyBFeGNlcHRpb25Db2RlID0gaW50OworCitjbGFzcyBFeGNlcHRpb24g
eworcHVibGljOgorICAgIGV4cGxpY2l0IEV4Y2VwdGlvbihFeGNlcHRpb25Db2RlKTsKKworICAg
IFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbkNvZGUgY29kZSgpIGNvbnN0OworCitwcml2YXRlOgor
ICAgIEV4Y2VwdGlvbkNvZGUgbV9jb2RlOworfTsKKworaW5saW5lIEV4Y2VwdGlvbjo6RXhjZXB0
aW9uKEV4Y2VwdGlvbkNvZGUgY29kZSkKKyAgICA6IG1fY29kZShjb2RlKQoreworfQorCitpbmxp
bmUgRXhjZXB0aW9uQ29kZSBFeGNlcHRpb246OmNvZGUoKSBjb25zdAoreworICAgIHJldHVybiBt
X2NvZGU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25P
ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUzOGRk
YmFmOGExYzFiMjBkN2IyMzhhNzBiMWMzY2FkMThkNjYzNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisKK0Nv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCithcmUgbWV0OgorMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKK1RISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQorRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCitESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCitBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKK1NPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgPHd0
Zi9WYXJpYW50Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUg
UmV0dXJuVHlwZT4gY2xhc3MgRXhjZXB0aW9uT3IgeworcHVibGljOgorICAgIEV4Y2VwdGlvbk9y
KEV4Y2VwdGlvbiYmKTsKKyAgICBFeGNlcHRpb25PcihSZXR1cm5UeXBlJiYpOworCisgICAgYm9v
bCBoYXNFeGNlcHRpb24oKSBjb25zdDsKKyAgICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNvZGUo
KSBjb25zdDsKKyAgICBSZXR1cm5UeXBlJiYgcmV0dXJuVmFsdWUoKTsKKworcHJpdmF0ZToKKyAg
ICBzdGQ6OmV4cGVyaW1lbnRhbDo6dmFyaWFudDxFeGNlcHRpb24sIFJldHVyblR5cGU+IG1fdmFs
dWU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiBpbmxpbmUgRXhjZXB0aW9u
T3I8UmV0dXJuVHlwZT46OkV4Y2VwdGlvbk9yKEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKKyAgICA6
IG1fdmFsdWUoV1RGTW92ZShleGNlcHRpb24pKQoreworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBS
ZXR1cm5UeXBlPiBpbmxpbmUgRXhjZXB0aW9uT3I8UmV0dXJuVHlwZT46OkV4Y2VwdGlvbk9yKFJl
dHVyblR5cGUmJiByZXR1cm5WYWx1ZSkKKyAgICA6IG1fdmFsdWUoV1RGTW92ZShyZXR1cm5WYWx1
ZSkpCit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGU+IGlubGluZSBib29sIEV4
Y2VwdGlvbk9yPFJldHVyblR5cGU+OjpoYXNFeGNlcHRpb24oKSBjb25zdAoreworICAgIHJldHVy
biBzdGQ6OmV4cGVyaW1lbnRhbDo6aG9sZHNfYWx0ZXJuYXRpdmU8RXhjZXB0aW9uPihtX3ZhbHVl
KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlwZT4gaW5saW5lIEV4Y2VwdGlvbkNv
ZGUgRXhjZXB0aW9uT3I8UmV0dXJuVHlwZT46OmV4Y2VwdGlvbkNvZGUoKSBjb25zdAoreworICAg
IHJldHVybiBzdGQ6OmV4cGVyaW1lbnRhbDo6Z2V0PEV4Y2VwdGlvbj4obV92YWx1ZSkuY29kZSgp
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiBpbmxpbmUgUmV0dXJuVHlwZSYm
IEV4Y2VwdGlvbk9yPFJldHVyblR5cGU+OjpyZXR1cm5WYWx1ZSgpCit7CisgICAgcmV0dXJuIHN0
ZDo6ZXhwZXJpbWVudGFsOjpnZXQ8UmV0dXJuVHlwZT4oV1RGTW92ZShtX3ZhbHVlKSk7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwCmluZGV4IDNi
NTZlNTVmMGVhYjM1NjExMmE5OWFjZmY5MDEzYjNhZjNlMDlhYWYuLjU4MWFhMzMzZWMwYjdiYzRk
OGZjOWRjNmNiZTI5ZGJjMmZkODlhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRlbXBsYXRlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVt
cGxhdGVFbGVtZW50LmNwcApAQCAtMjksMTAgKzI5LDggQEAKICAqLwogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCi0KICNpbmNsdWRlICJIVE1MVGVtcGxhdGVFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJE
T01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNs
dWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZy
YWdtZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwCmluZGV4IDczYjQ5OTkzY2IxMjk3ZWIwY2I5MzM0ODEwMTY3ZjgzMzc2MTEyMDUuLmY4
ZTY2NzhmMzI3MGJkODUzNmYwZjAzZmY4OGY1Yjg4YmMyMmE3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC00MCw3ICs0MCw2IEBA
CiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVk
ZSAiQ29va2llSmFyLmgiCi0jaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJET01QYXRjaFN1cHBvcnQuaCIKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgpAQCAtNTksNiArNTgsNyBAQAogI2luY2x1ZGUgIkluc3BlY3Rvck92
ZXJsYXkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCiAjaW5jbHVkZSAi
SW5zdHJ1bWVudGluZ0FnZW50cy5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNp
bmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgUmVmUHRyPFRleHRSZXNvdXJjZURl
Y29kZXI+IGNyZWF0ZVhIUlRleHREZWNvZGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsCiAgICAg
UmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXI7CiAgICAgaWYgKCF0ZXh0RW5jb2Rp
bmdOYW1lLmlzRW1wdHkoKSkKICAgICAgICAgZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6
OmNyZWF0ZSgidGV4dC9wbGFpbiIsIHRleHRFbmNvZGluZ05hbWUpOwotICAgIGVsc2UgaWYgKERP
TUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKG1pbWVUeXBlKSkgeworICAgIGVsc2UgaWYg
KE1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5cGUobWltZVR5cGUpKSB7CiAgICAgICAgIGRl
Y29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3htbCIpOwog
ICAgICAgICBkZWNvZGVyLT51c2VMZW5pZW50WE1MRGVjb2RpbmcoKTsKICAgICB9IGVsc2UgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC9odG1sIikpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApp
bmRleCA3YmExODA1MDBhYmVmNDhmOGRiMDM5Mzk1NTNiYzlkMjBhMmUxMzJkLi45ZmYyOGUxZGVj
MzVkYWZmYWU2YzQ2MmUyZTI5NGVkNzljMjAwNTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTMwLDI0ICszMCwxOCBAQAog
I2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZXNEYXRhLmgiCiAKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZS5oIgotI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCisjaW5jbHVkZSAiTUlNRVR5
cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAKLW5hbWVz
cGFjZSB7Ci0vLyAxMDBNQgotc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtUmVzb3VyY2VzQ29u
dGVudFNpemUgPSAxMDAgKiAxMDAwICogMTAwMDsKLQotLy8gMTBNQgotc3RhdGljIGNvbnN0IHNp
emVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDEwICogMTAwMCAqIDEwMDA7
Ci19Ci0KIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotLy8gUmVzb3VyY2VEYXRhCitzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1SZXNvdXJjZXND
b250ZW50U2l6ZSA9IDEwMCAqIDEwMDAgKiAxMDAwOyAvLyAxMDBNQgorc3RhdGljIGNvbnN0IHNp
emVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDEwICogMTAwMCAqIDEwMDA7
IC8vIDEwTUIKKwogTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VE
YXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxvYWRlcklkKQogICAg
IDogbV9yZXF1ZXN0SWQocmVxdWVzdElkKQogICAgICwgbV9sb2FkZXJJZChsb2FkZXJJZCkKQEAg
LTExNyw3ICsxMTEsNiBAQCBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiAgICAgcmV0dXJuIGNvbnRlbnRTaXplSW5CeXRlcyht
X2NvbnRlbnQpIC0gZGF0YUxlbmd0aDsKIH0KIAotLy8gTmV0d29ya1Jlc291cmNlc0RhdGEKIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpOZXR3b3JrUmVzb3VyY2VzRGF0YSgpCiAgICAgOiBtX2NvbnRl
bnRTaXplKDApCiAgICAgLCBtX21heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZShtYXhpbXVtUmVz
b3VyY2VzQ29udGVudFNpemUpCkBAIC0xNDEsNyArMTM0LDcgQEAgc3RhdGljIFJlZlB0cjxUZXh0
UmVzb3VyY2VEZWNvZGVyPiBjcmVhdGVPdGhlclJlc291cmNlVGV4dERlY29kZXIoY29uc3QgU3Ry
aW5nJgogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyOwogICAgIGlmICgh
dGV4dEVuY29kaW5nTmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIGRlY29kZXIgPSBUZXh0UmVzb3Vy
Y2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCB0ZXh0RW5jb2RpbmdOYW1lKTsKLSAgICBl
bHNlIGlmIChET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlwZShtaW1lVHlwZSkpIHsKKyAg
ICBlbHNlIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1hNTE1JTUVUeXBlKG1pbWVUeXBlKSkgewog
ICAgICAgICBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlv
bi94bWwiKTsKICAgICAgICAgZGVjb2Rlci0+dXNlTGVuaWVudFhNTERlY29kaW5nKCk7CiAgICAg
fSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQv
aHRtbCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMWQ1ODgxNDdi
Njc1ZTc0Yjk1N2MwYzI0ZmFhMGU1MjY1YmI3OTczMC4uNTAxZjYzNTJjZjNkODRlMzNkNTQyNzk0
NTIwNDE2YzIxNWU1MWQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBA
IC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29u
dGVudEZpbHRlci5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgotI2luY2x1
ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVk
ZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAppbmRl
eCA5NWQzNmUzMTVhMDViODViNzUyYWE0NDJjY2ZhNWIxNDBkYzZhZjc2Li5mZTk0YjdmODE4NzQ2
ZTNkMmU3YWIzMGI0NjdmYTA5ZTEzYjEyNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRSZXNvdXJjZURlY29kZXIuY3BwCkBAIC0yMyw5ICsyMyw5IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogCi0jaW5jbHVkZSAiRE9N
SW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJIVE1MTWV0YUNoYXJzZXRQYXJzZXIuaCIKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5j
bHVkZSAiVGV4dENvZGVjLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAi
VGV4dEVuY29kaW5nRGV0ZWN0b3IuaCIKQEAgLTMwNiw3ICszMDYsNyBAQCBUZXh0UmVzb3VyY2VE
ZWNvZGVyOjpDb250ZW50VHlwZSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpkZXRlcm1pbmVDb250ZW50
VHlwZShjb25zdAogICAgICAgICByZXR1cm4gQ1NTOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvaHRtbCIpKQogICAgICAgICByZXR1cm4gSFRN
TDsKLSAgICBpZiAoRE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlNRVR5cGUobWltZVR5cGUpKQor
ICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1hNTE1JTUVUeXBlKG1pbWVUeXBlKSkKICAgICAg
ICAgcmV0dXJuIFhNTDsKICAgICByZXR1cm4gUGxhaW5UZXh0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRleCAzYTM0Mzk2NzU3YjY1NjEyMjNj
NmUyMmRiNzFlZDAxOWEwNTE1MjFjLi41MDdhNjhlNmU3NzRhMzI0YjRkOTVjMDQ4MzFiNGY5YjU3
NzUyZWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDgsIDIwMDkg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0y
MDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93
d3cudG9yY2htb2JpbGUuY29tLykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI5LDIwICsyOSwyMSBA
QAogCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgot
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiAjaWYgVVNFKENHKQogI2lu
Y2x1ZGUgIkltYWdlU291cmNlQ0cuaCIKLSNpZiAhUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgPEFw
cGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgotI2Vsc2UKLSNpbmNsdWRl
IDxJbWFnZUlPL0NHSW1hZ2VEZXN0aW5hdGlvbi5oPgogI2VuZGlmCi0jaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgPEltYWdlSU8vQ0dJbWFn
ZURlc3RpbmF0aW9uLmg+CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5B
QkxFKE1IVE1MKQpAQCAtNTQyLDYgKzU0Myw0NyBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6Omlz
VW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICByZXR1
cm4gdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzLT5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKK2Jv
b2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKK3sKKyAgICByZXR1cm4gaXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUobWltZVR5cGUp
CisgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiYXBw
bGljYXRpb24vanNvbiIpIC8vIFJlbmRlciBKU09OIGFzIHRleHQvcGxhaW4uCisgICAgICAgIHx8
IChtaW1lVHlwZS5zdGFydHNXaXRoKCJ0ZXh0LyIsIGZhbHNlKQorICAgICAgICAgICAgJiYgIWVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC9odG1sIikKKyAgICAg
ICAgICAgICYmICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQv
eG1sIikKKyAgICAgICAgICAgICYmICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1l
VHlwZSwgInRleHQveHNsIikpOworfQorCisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkWE1M
TUlNRVR5cGVDaGFyKFVDaGFyIGMpCit7CisgICAgLy8gVmFsaWQgY2hhcmFjdGVycyBwZXIgUkZD
cyAzMDIzIGFuZCAyMDQ1OiAwLTlhLXpBLVpfLSt+ISRee318LiUnYCMmKgorICAgIHJldHVybiBp
c0FTQ0lJQWxwaGFudW1lcmljKGMpIHx8IGMgPT0gJyEnIHx8IGMgPT0gJyMnIHx8IGMgPT0gJyQn
IHx8IGMgPT0gJyUnIHx8IGMgPT0gJyYnIHx8IGMgPT0gJ1wnJyB8fCBjID09ICcqJyB8fCBjID09
ICcrJworICAgICAgICB8fCBjID09ICctJyB8fCBjID09ICcuJyB8fCBjID09ICdeJyB8fCBjID09
ICdfJyB8fCBjID09ICdgJyB8fCBjID09ICd7JyB8fCBjID09ICd8JyB8fCBjID09ICd9JyB8fCBj
ID09ICd+JzsKK30KKworYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1hNTE1JTUVUeXBlKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKG1pbWVUeXBlLCAidGV4dC94bWwiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL3htbCIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKG1pbWVUeXBlLCAidGV4dC94c2wiKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICBpZiAoIW1pbWVUeXBlLmVuZHNXaXRoKCIreG1sIiwgZmFsc2UpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBzaXplX3Qgc2xhc2hQb3NpdGlvbiA9IG1pbWVUeXBlLmZpbmQoJy8nKTsK
KyAgICAvLyBUYWtlIGludG8gYWNjb3VudCB0aGUgJyt4bWwnIGVuZGluZyBvZiBtaW1lVHlwZS4K
KyAgICBpZiAoc2xhc2hQb3NpdGlvbiA9PSBub3RGb3VuZCB8fCAhc2xhc2hQb3NpdGlvbiB8fCBz
bGFzaFBvc2l0aW9uID09IG1pbWVUeXBlLmxlbmd0aCgpIC0gNSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgLy8gQWdhaW4sIG1pbWVUeXBlIGVuZHMgd2l0aCAnK3htbCcsIG5vIG5lZWQg
dG8gY2hlY2sgdGhlIHZhbGlkaXR5IG9mIHRoYXQgc3Vic3RyaW5nLgorICAgIHNpemVfdCBtaW1l
TGVuZ3RoID0gbWltZVR5cGUubGVuZ3RoKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
aW1lTGVuZ3RoIC0gNDsgKytpKSB7CisgICAgICAgIGlmICghaXNWYWxpZFhNTE1JTUVUeXBlQ2hh
cihtaW1lVHlwZVtpXSkgJiYgaSAhPSBzbGFzaFBvc2l0aW9uKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiBib29sIE1JTUVUeXBlUmVn
aXN0cnk6OmlzSmF2YUFwcGxldE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAg
ICAgLy8gU2luY2UgdGhpcyBzZXQgaXMgdmVyeSBsaW1pdGVkIGFuZCBpcyBsaWtlbHkgdG8gcmVt
YWluIHNvIHdlIHdvbid0IGJvdGhlciB3aXRoIHRoZSBvdmVyaGVhZApAQCAtNTc3LDcgKzYxOSw3
IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6Y2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKG1pbWVUeXBlLnN0YXJ0
c1dpdGgoInRleHQvIiwgZmFsc2UpKQotICAgICAgICByZXR1cm4gIU1JTUVUeXBlUmVnaXN0cnk6
OmlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUobWltZVR5cGUpOworICAgICAgICByZXR1cm4gIWlz
VW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUobWltZVR5cGUpOwogCiAgICAgcmV0dXJuIGZhbHNlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCmluZGV4IDRkYzc0
ZTdjYjNmYTg1NDZmMTg4YzYyYjA3ZmUzMjBlMDhmYjlkODUuLjY3NDk1NDZkZWJhYjA1Mzk1ZWY4
NWFiODJhZjAxYmQyMjg1MWI3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L01JTUVUeXBlUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlw
ZVJlZ2lzdHJ5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTEzLDcgKzEzLDcgQEAKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQogICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKICAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKICAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAogICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAogICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCkBA
IC0yMywxMyArMjMsMTEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBNSU1FVHlw
ZVJlZ2lzdHJ5X2gKLSNkZWZpbmUgTUlNRVR5cGVSZWdpc3RyeV9oCisjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MCwxNiArNTgsMTIgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpOyAgICAKIAogICAgIC8vIENoZWNrIHRvIHNlZSBpZiBhIG5vbi1pbWFnZSBN
SU1FIHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGxvYWRlZCBhcyBhCi0gICAgLy8gZG9jdW1l
bnQgaW4gYSBmcmFtZS4gIEluY2x1ZGVzIHN1cHBvcnRlZCBKYXZhU2NyaXB0IE1JTUUgdHlwZXMu
CisgICAgLy8gZG9jdW1lbnQgaW4gYSBmcmFtZS4gSW5jbHVkZXMgc3VwcG9ydGVkIEphdmFTY3Jp
cHQgTUlNRSB0eXBlcy4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRl
ZE5vbkltYWdlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICAvLyBDaGVj
ayB0byBzZWUgaWYgYSBNSU1FIHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGxvYWRlZCB1c2lu
ZyA8dmlkZW8+IGFuZCA8YXVkaW8+LgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlz
U3VwcG9ydGVkTWVkaWFNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAotICAgIC8v
IENoZWNrIHRvIHNlZSBpZiB0aGUgTUlNRSB0eXBlIGlzIG5vdCBzdWl0YWJsZSBmb3IgYmVpbmcg
bG9hZGVkIGFzIGEgdGV4dAotICAgIC8vIGRvY3VtZW50IGluIGEgZnJhbWUuIE9ubHkgdmFsaWQg
Zm9yIE1JTUUgdHlwZXMgYmVnaW5pbmcgd2l0aCAidGV4dC8iLgotICAgIHN0YXRpYyBib29sIGlz
VW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7Ci0KICAgICAv
LyBDaGVjayB0byBzZWUgaWYgYSBNSU1FIHR5cGUgaXMgYSB2YWxpZCBKYXZhIGFwcGxldCBtaW1l
IHR5cGUuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNKYXZhQXBwbGV0TUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKQEAgLTg2LDYgKzgwLDE1IEBAIHB1YmxpYzoK
ICAgICAvLyAidGV4dC8iIGFuZCBpc1Vuc3VwcG9ydGVkVGV4dE1JTUVUeXBlKCkgcmV0dXJucyBm
YWxzZS4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBjYW5TaG93TUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKKyAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBNSU1FIHR5
cGUgaXMgb25lIHdoZXJlIGFuIFhNTCBkb2N1bWVudCBzaG91bGQgYmUgY3JlYXRlZAorICAgIC8v
IHJhdGhlciB0aGFuIGFuIEhUTUwgZG9jdW1lbnQuCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IGJvb2wgaXNYTUxNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKworICAgIC8vIFVz
ZWQgaW4gcGFnZSBsb2FkIGFsZ29yaXRobSB0byBkZWNpZGUgd2hldGhlciB0byBkaXNwbGF5IGFz
IGEgdGV4dAorICAgIC8vIGRvY3VtZW50IGluIGEgZnJhbWUuIE5vdCBhIGdvb2QgaWRlYSB0byB1
c2UgZWxzZXdoZXJlLCBiZWNhdXNlIHRoYXQgY29kZQorICAgIC8vIG1ha2VzIHRoaXMgdGVzdCBp
cyBhZnRlciBtYW55IG90aGVyIHRlc3RzIGFyZSBkb25lIG9uIHRoZSBNSU1FIHR5cGUuCisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSk7CisKICAgICAvLyBGSVhNRTogV2ViS2l0IGNvZGluZyBzdHlsZSBzYXlzIHdlIHNo
b3VsZCBub3QgaGF2ZSB0aGUgd29yZCAiZ2V0IiBpbiB0aGUgbmFtZXMgb2YgdGhlc2UgZnVuY3Rp
b25zLgogICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBuaWNlIHRvIGZpbmQgYSB3YXkgdG8gYXZvaWQg
ZXhwb3NpbmcgdGhlc2Ugc2V0cywgZXZlbiB3b3JzZSBleHBvc2luZyBub24tY29uc3QgcmVmZXJl
bmNlcy4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4mIGdldFN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCk7CkBAIC0xMDAs
MTAgKzEwMywxMyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFdlYktpdCBjb2Rpbmcgc3R5bGUg
c2F5cyB3ZSBzaG91bGQgbm90IGhhdmUgdGhlIHdvcmQgImdldCIgaW4gdGhlIG5hbWUgb2YgdGhp
cyBmdW5jdGlvbi4KICAgICAvLyBGSVhNRTogVW5jbGVhciB3aGF0IHRoZSBjb25jZXB0IG9mIGEg
bm9ybWFsaXplZCBNSU1FIHR5cGUgaXM7IGN1cnJlbnRseSBpdCdzIGEgcGxhdGZvcm0tc3BlY2lm
aWMgbm90aW9uLgogICAgIHN0YXRpYyBTdHJpbmcgZ2V0Tm9ybWFsaXplZE1JTUVUeXBlKGNvbnN0
IFN0cmluZyYpOworCitwcml2YXRlOgorICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgTUlNRSB0
eXBlIGlzIG5vdCBzdWl0YWJsZSBmb3IgYmVpbmcgbG9hZGVkIGFzIGEgdGV4dAorICAgIC8vIGRv
Y3VtZW50IGluIGEgZnJhbWUuIE9ubHkgdmFsaWQgZm9yIE1JTUUgdHlwZXMgYmVnaW5pbmcgd2l0
aCAidGV4dC8iLgorICAgIHN0YXRpYyBib29sIGlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSk7CiB9OwogCiBjb25zdCBTdHJpbmcmIGRlZmF1bHRNSU1FVHlw
ZSgpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBNSU1FVHlwZVJlZ2lz
dHJ5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCA3NDJmMzg1NTgxYzkwMDZjYTQ2
ZjBiMDQ3YTIwYTFhMDRkNTZkNWYyLi5jNDI3YWJkNmQ0YWY4YWQzM2RkYzY4ZDE1ZDBjYzM3YmEx
MjFhODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAj
aW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCi0jaW5jbHVk
ZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCkBAIC0zNjIsMTEgKzM2MSw2
IEBAIHZvaWQgU1ZHRWxlbWVudDo6cmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKFNWR1BhcnNp
bmdFcnJvciBlcnJvciwgY29uc3QgUXVhbGlmCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CiAKLWJvb2wgU1ZHRWxlbWVudDo6aXNTdXBwb3J0ZWQoU3RyaW5nSW1wbCogZmVhdHVyZSwgU3Ry
aW5nSW1wbCogdmVyc2lvbikgY29uc3QKLXsKLSAgICByZXR1cm4gRE9NSW1wbGVtZW50YXRpb246
Omhhc0ZlYXR1cmUoZmVhdHVyZSwgdmVyc2lvbik7Ci19Ci0KIHZvaWQgU1ZHRWxlbWVudDo6cmVt
b3ZlZEZyb20oQ29udGFpbmVyTm9kZSYgcm9vdFBhcmVudCkKIHsKICAgICBib29sIHdhc0luRG9j
dW1lbnQgPSByb290UGFyZW50LmluRG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCmlu
ZGV4IGYzZmZlODFlNjJjZmE5NDY1YjI3YzAzZTA5YTBmNjY4YTA2OWFiZWMuLjBmMWE0YzExYjNk
ZTBiYjQ1OGM3MjkxOTRkNDlhOTI2YTFhZmRiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApA
QCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENv
cHlyaWdodCAoQykgMjAwOSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yMCwxMCArMjAsOCBAQAogICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCiAgKi8KIAotI2lmbmRlZiBTVkdFbGVtZW50X2gKLSNkZWZpbmUgU1ZH
RWxlbWVudF9oCisjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIK
ICNpbmNsdWRlICJTVkdBbmltYXRlZFN0cmluZy5oIgogI2luY2x1ZGUgIlNWR0xhbmdTcGFjZS5o
IgogI2luY2x1ZGUgIlNWR0xvY2F0YWJsZS5oIgpAQCAtMzEsNyArMjksNiBAQAogI2luY2x1ZGUg
IlNWR1BhcnNpbmdFcnJvci5oIgogI2luY2x1ZGUgIlNWR1Byb3BlcnR5SW5mby5oIgogI2luY2x1
ZGUgIlN0eWxlZEVsZW1lbnQuaCIKLSNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIApAQCAtODYsNyArODMsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzdmdMb2FkRXZlbnRUaW1lckZpcmVkKCk7CiAgICAgdmlydHVhbCBU
aW1lciogc3ZnTG9hZEV2ZW50VGltZXIoKTsKIAotICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3Jt
KiBzdXBwbGVtZW50YWxUcmFuc2Zvcm0oKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBBZmZp
bmVUcmFuc2Zvcm0qIHN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpIHsgcmV0dXJuIG51bGxwdHI7IH0K
IAogICAgIHZvaWQgaW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKSB7IGVuc3VyZVVuaXF1ZUVsZW1l
bnREYXRhKCkuc2V0QW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkodHJ1ZSk7IH0KICAgICB2
b2lkIGludmFsaWRhdGVTVkdQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpCkBAIC0xODAsOCAr
MTc3LDYgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBjb25zdCBSZW5kZXJTdHlsZSogY29t
cHV0ZWRTdHlsZShQc2V1ZG9JZCA9IE5PUFNFVURPKSBmaW5hbDsKIAotICAgIHZpcnR1YWwgYm9v
bCBpc1N1cHBvcnRlZChTdHJpbmdJbXBsKiBmZWF0dXJlLCBTdHJpbmdJbXBsKiB2ZXJzaW9uKSBj
b25zdDsKLQogICAgIHZpcnR1YWwgdm9pZCBjbGVhclRhcmdldCgpIHsgfQogCiAgICAgdm9pZCBi
dWlsZFBlbmRpbmdSZXNvdXJjZXNJZk5lZWRlZCgpOwpAQCAtMjY0LDUgKzI1OSwzIEBAIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U1ZHRWxlbWVudCkKIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRU5EKCkKIAogI2luY2x1ZGUgIlNWR0VsZW1lbnRUeXBlSGVscGVycy5oIgot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGM4M2FiOGM5
YTM0NGM2ZDk4NjY4ZDE4NTQyYmMxMjY4ZTk0NmVjN2IuLmMxNzdjNDk4YTI3YmQ2ZjgwMDE0MjNk
Mzk5MzYzMDkwOTljNGI0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApA
QCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2lu
Y2x1ZGUgIkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIgogI2luY2x1ZGUgIkRPTUZvcm1EYXRh
LmgiCi0jaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJFdmVudC5oIgog
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCkBAIC0z
OSw2ICszOCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKKyNpbmNsdWRl
ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRl
ICJQYXJzZWRDb250ZW50VHlwZS5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKQEAgLTU5
LDcgKzU5LDYgQEAKICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1
ZGUgPHJ1bnRpbWUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+Ci0j
aW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIu
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgpAQCAtOTM0LDcgKzkzMyw3IEBAIFN0cmluZyBYTUxIdHRwUmVxdWVzdDo6cmVzcG9u
c2VNSU1FVHlwZSgpIGNvbnN0CiAKIGJvb2wgWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlSXNYTUwo
KSBjb25zdAogewotICAgIHJldHVybiBET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlwZShy
ZXNwb25zZU1JTUVUeXBlKCkpOworICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1hNTE1J
TUVUeXBlKHJlc3BvbnNlTUlNRVR5cGUoKSk7CiB9CiAKIGludCBYTUxIdHRwUmVxdWVzdDo6c3Rh
dHVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01ET01JbXBs
ZW1lbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01ET01JbXBsZW1lbnRhdGlv
bi5tbQppbmRleCBlMGEwYzA2NmJlMTQzYTc3MWQ0ZTM1ODgwNTkwMDE5ZTNlZDcwOGI1Li4xMDM4
ODA1MjM2ZTgzY2Y4YTIwZGVjZTNiMTAyNjVjNjJlYjAzNGUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9ET00vRE9NRE9NSW1wbGVtZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvRE9NL0RPTURPTUltcGxlbWVudGF0aW9uLm1tCkBAIC0zMCwxMDUgKzMwLDkwIEBACiAj
aW1wb3J0ICJET01Eb2N1bWVudFR5cGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NSFRNTERvY3Vt
ZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUludGVybmFsLmgiCi0jaW1wb3J0ICJET01Ob2Rl
SW50ZXJuYWwuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJD
b3JlL0NTU1N0eWxlU2hlZXQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NSW1wbGVtZW50YXRpb24u
aD4KLSNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1l
bnRUeXBlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxEb2N1bWVudC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9KU01haW5UaHJlYWRFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVP
YmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvWE1MRG9jdW1lbnQuaD4KLSNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4K
LQotI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RE9NSW1wbGVtZW50YXRp
b24qPihfaW50ZXJuYWwpCiAKIEBpbXBsZW1lbnRhdGlvbiBET01JbXBsZW1lbnRhdGlvbgogCitz
dGF0aWMgaW5saW5lIFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uJiB1bndyYXAoRE9NSW1wbGVt
ZW50YXRpb24mIHdyYXBwZXIpCit7CisgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PFdlYkNv
cmU6OkRPTUltcGxlbWVudGF0aW9uKj4od3JhcHBlci5faW50ZXJuYWwpOworfQorCiAtICh2b2lk
KWRlYWxsb2MKIHsKICAgICBpZiAoV2ViQ29yZU9iakNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5U
aHJlYWQoW0RPTUltcGxlbWVudGF0aW9uIGNsYXNzXSwgc2VsZikpCiAgICAgICAgIHJldHVybjsK
LQogICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAgIElNUEwtPmRlcmVmKCk7CisgICAgICAgIHVu
d3JhcCgqc2VsZikuZGVyZWYoKTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKIC0gKEJPT0wp
aGFzRmVhdHVyZTooTlNTdHJpbmcgKilmZWF0dXJlIHZlcnNpb246KE5TU3RyaW5nICopdmVyc2lv
bgogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1
cm4gSU1QTC0+aGFzRmVhdHVyZShmZWF0dXJlLCB2ZXJzaW9uKTsKKyAgICByZXR1cm4gdW53cmFw
KCpzZWxmKS5oYXNGZWF0dXJlKGZlYXR1cmUsIHZlcnNpb24pOwogfQogCi0tIChCT09MKWhhc0Zl
YXR1cmU6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbgorLSAoRE9NRG9j
dW1lbnRUeXBlICopY3JlYXRlRG9jdW1lbnRUeXBlOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUg
cHVibGljSWQ6KE5TU3RyaW5nICopcHVibGljSWQgc3lzdGVtSWQ6KE5TU3RyaW5nICopc3lzdGVt
SWQKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0
dXJuIElNUEwtPmhhc0ZlYXR1cmUoZmVhdHVyZSwgdmVyc2lvbik7CisgICAgYXV0byByZXN1bHQg
PSB1bndyYXAoKnNlbGYpLmNyZWF0ZURvY3VtZW50VHlwZShxdWFsaWZpZWROYW1lLCBwdWJsaWNJ
ZCwgc3lzdGVtSWQpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJh
aXNlRE9NRXhjZXB0aW9uKHJlc3VsdC5leGNlcHRpb25Db2RlKCkpOworICAgIHJldHVybiBraXQo
cmVzdWx0LnJldHVyblZhbHVlKCkucHRyKCkpOwogfQogCi0tIChET01Eb2N1bWVudFR5cGUgKilj
cmVhdGVEb2N1bWVudFR5cGU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSBwdWJsaWNJZDooTlNT
dHJpbmcgKilwdWJsaWNJZCBzeXN0ZW1JZDooTlNTdHJpbmcgKilzeXN0ZW1JZAorLSAoRE9NRG9j
dW1lbnQgKiljcmVhdGVEb2N1bWVudDooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgcXVhbGlmaWVk
TmFtZTooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIGRvY3R5cGU6KERPTURvY3VtZW50VHlwZSAq
KWRvY3R5cGUKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0g
ICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NRG9jdW1lbnRUeXBlICpy
ZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y3JlYXRlRG9jdW1lbnRUeXBlKHF1YWxpZmll
ZE5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCwgZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVj
KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIGF1dG8gcmVzdWx0ID0gdW53cmFwKCpzZWxmKS5j
cmVhdGVEb2N1bWVudChuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIGNvcmUoZG9jdHlwZSkp
OworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJhaXNlRE9NRXhjZXB0
aW9uKHJlc3VsdC5leGNlcHRpb25Db2RlKCkpOworICAgIHJldHVybiBraXQocmVzdWx0LnJldHVy
blZhbHVlKCkucHRyKCkpOwogfQogCi0tIChET01Eb2N1bWVudFR5cGUgKiljcmVhdGVEb2N1bWVu
dFR5cGU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5nICopcHVibGljSWQgOihO
U1N0cmluZyAqKXN5c3RlbUlkCistIChET01DU1NTdHlsZVNoZWV0ICopY3JlYXRlQ1NTU3R5bGVT
aGVldDooTlNTdHJpbmcgKil0aXRsZSBtZWRpYTooTlNTdHJpbmcgKiltZWRpYQogewogICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBET01Eb2N1bWVudFR5cGUgKnJlc3VsdCA9IGtpdChXVEY6Omdl
dFB0cihJTVBMLT5jcmVhdGVEb2N1bWVudFR5cGUocXVhbGlmaWVkTmFtZSwgcHVibGljSWQsIHN5
c3RlbUlkLCBlYykpKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1
bHQ7CisgICAgcmV0dXJuIGtpdCh1bndyYXAoKnNlbGYpLmNyZWF0ZUNTU1N0eWxlU2hlZXQodGl0
bGUsIG1lZGlhKS5wdHIoKSk7CiB9CiAKLS0gKERPTURvY3VtZW50ICopY3JlYXRlRG9jdW1lbnQ6
KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIHF1YWxpZmllZE5hbWU6KE5TU3RyaW5nICopcXVhbGlm
aWVkTmFtZSBkb2N0eXBlOihET01Eb2N1bWVudFR5cGUgKilkb2N0eXBlCistIChET01IVE1MRG9j
dW1lbnQgKiljcmVhdGVIVE1MRG9jdW1lbnQ6KE5TU3RyaW5nICopdGl0bGUKIHsKICAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgRE9NRG9jdW1lbnQgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJ
TVBMLT5jcmVhdGVEb2N1bWVudChuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIGNvcmUoZG9j
dHlwZSksIGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICByZXR1cm4ga2l0KHVud3JhcCgqc2VsZikuY3JlYXRlSFRNTERvY3VtZW50KHRpdGxl
KS5wdHIoKSk7CiB9CiAKLS0gKERPTURvY3VtZW50ICopY3JlYXRlRG9jdW1lbnQ6KE5TU3RyaW5n
ICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooRE9NRG9jdW1lbnRU
eXBlICopZG9jdHlwZQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gRE9NSW1wbGVtZW50YXRpb24g
KERPTUltcGxlbWVudGF0aW9uRGVwcmVjYXRlZCkKKworLSAoQk9PTCloYXNGZWF0dXJlOihOU1N0
cmluZyAqKWZlYXR1cmUgOihOU1N0cmluZyAqKXZlcnNpb24KIHsKLSAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgRE9NRG9jdW1lbnQgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5jcmVh
dGVEb2N1bWVudChuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIGNvcmUoZG9jdHlwZSksIGVj
KSkpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBy
ZXR1cm4gW3NlbGYgaGFzRmVhdHVyZTpmZWF0dXJlIHZlcnNpb246dmVyc2lvbl07CiB9CiAKLS0g
KERPTUNTU1N0eWxlU2hlZXQgKiljcmVhdGVDU1NTdHlsZVNoZWV0OihOU1N0cmluZyAqKXRpdGxl
IG1lZGlhOihOU1N0cmluZyAqKW1lZGlhCistIChET01Eb2N1bWVudFR5cGUgKiljcmVhdGVEb2N1
bWVudFR5cGU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5nICopcHVibGljSWQg
OihOU1N0cmluZyAqKXN5c3RlbUlkCiB7Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTUNT
U1N0eWxlU2hlZXQgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5jcmVhdGVDU1NTdHls
ZVNoZWV0KHRpdGxlLCBtZWRpYSwgZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAg
ICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBbc2VsZiBjcmVhdGVEb2N1bWVudFR5cGU6cXVh
bGlmaWVkTmFtZSBwdWJsaWNJZDpwdWJsaWNJZCBzeXN0ZW1JZDpzeXN0ZW1JZF07CiB9CiAKLS0g
KERPTUNTU1N0eWxlU2hlZXQgKiljcmVhdGVDU1NTdHlsZVNoZWV0OihOU1N0cmluZyAqKXRpdGxl
IDooTlNTdHJpbmcgKiltZWRpYQorLSAoRE9NRG9jdW1lbnQgKiljcmVhdGVEb2N1bWVudDooTlNT
dHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihET01Eb2N1
bWVudFR5cGUgKilkb2N0eXBlCiB7Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTUNTU1N0
eWxlU2hlZXQgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5jcmVhdGVDU1NTdHlsZVNo
ZWV0KHRpdGxlLCBtZWRpYSwgZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBbc2VsZiBjcmVhdGVEb2N1bWVudDpuYW1lc3BhY2VV
UkkgcXVhbGlmaWVkTmFtZTpxdWFsaWZpZWROYW1lIGRvY3R5cGU6ZG9jdHlwZV07CiB9CiAKLS0g
KERPTUhUTUxEb2N1bWVudCAqKWNyZWF0ZUhUTUxEb2N1bWVudDooTlNTdHJpbmcgKil0aXRsZQor
LSAoRE9NQ1NTU3R5bGVTaGVldCAqKWNyZWF0ZUNTU1N0eWxlU2hlZXQ6KE5TU3RyaW5nICopdGl0
bGUgOihOU1N0cmluZyAqKW1lZGlhCiB7Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwotICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y3JlYXRlSFRNTERv
Y3VtZW50KHRpdGxlKSkpOworICAgIHJldHVybiBbc2VsZiBjcmVhdGVDU1NTdHlsZVNoZWV0OnRp
dGxlIG1lZGlhOm1lZGlhXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvRE9NL0RPTURvY3VtZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTURvY3VtZW50
Lm1tCmluZGV4IGE5YzNjZDgzYmYyMTFiNTFjYzQ4NTk5NDMwMjg0YTAwZTc5Njg5MjguLjk0NjZi
YWZkNWRkZDJlY2U2MTc5NGU3NzdmOTYwYjg0YjU2MTI2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00v
RE9NRG9jdW1lbnQubW0KQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbXBvcnQgIkRPTUhUTUxFbGVtZW50
SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUhUTUxIZWFkRWxlbWVudEludGVybmFsLmgiCiAjaW1w
b3J0ICJET01IVE1MU2NyaXB0RWxlbWVudEludGVybmFsLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0RP
TUltcGxlbWVudGF0aW9uLmg+CiAjaW1wb3J0ICJET01JbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9N
Tm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01Ob2RlSXRlcmF0b3JJbnRlcm5hbC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggYWNhZDhkZTNkZTNiOTJhMzM5OTQy
OTgwNjYwODNmZjA1YmQ5YjBjMy4uYTRhZDY3ODE0YWVkN2E1ZmM5ZDU1MTY0NTE1YTdiMzVjNjM4
MjZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC02MSw3ICs2MSw2
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NhY2hlZFJlc291cmNlTG9hZGVyLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0Nocm9tZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgotI2ltcG9ydCA8
V2ViQ29yZS9ET01JbXBsZW1lbnRhdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZU1h
bmFnZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRGcmFnbWVudC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgpAQCAtODAsNiArNzksNyBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTTm9kZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9MZWdhY3lXZWJBcmNoaXZlLmg+CisjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBl
UmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMuaD4K
QEAgLTEwMSw5ICsxMDEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9tYXJrdXAuaD4KICNpbXBvcnQg
PFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8YmluZGluZ3MvU2NyaXB0VmFsdWUu
aD4KKyNpbXBvcnQgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2ltcG9ydCA8cnVudGltZS9KU0xv
Y2suaD4KICNpbXBvcnQgPHJ1bnRpbWUvSlNPYmplY3QuaD4KLSNpbXBvcnQgPHJ1bnRpbWUvSlND
SlNWYWx1ZS5oPgogI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKICNpZiBQTEFURk9STShJ
T1MpCkBAIC0xMTEsNyArMTExLDYgQEAKICNpbXBvcnQgIldlYlJlc291cmNlLmgiCiAjaW1wb3J0
ICJXZWJVSUtpdERlbGVnYXRlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL0VkaXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0b3JDbGllbnQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRm9jdXNDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zv
bnQuaD4KQEAgLTk4OCw3ICs5ODcsNyBAQCAtIChCT09MKV9jYW5Qcm92aWRlRG9jdW1lbnRTb3Vy
Y2UKICAgICBTdHJpbmcgbWltZVR5cGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+bG9hZGVyKCktPndy
aXRlcigpLm1pbWVUeXBlKCk7CiAgICAgUGx1Z2luRGF0YSogcGx1Z2luRGF0YSA9IGZyYW1lLT5w
YWdlKCkgPyAmZnJhbWUtPnBhZ2UoKS0+cGx1Z2luRGF0YSgpIDogMDsKIAotICAgIGlmIChXZWJD
b3JlOjpET01JbXBsZW1lbnRhdGlvbjo6aXNUZXh0TUlNRVR5cGUobWltZVR5cGUpCisgICAgaWYg
KFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzVGV4dE1JTUVUeXBlKG1pbWVUeXBlKQogICAg
ICAgICB8fCBJbWFnZTo6c3VwcG9ydHNUeXBlKG1pbWVUeXBlKQogICAgICAgICB8fCAocGx1Z2lu
RGF0YSAmJiBwbHVnaW5EYXRhLT5zdXBwb3J0c1dlYlZpc2libGVNaW1lVHlwZShtaW1lVHlwZSwg
UGx1Z2luRGF0YTo6QWxsUGx1Z2lucykgJiYgZnJhbWUtPmxvYWRlcigpLnN1YmZyYW1lTG9hZGVy
KCkuYWxsb3dQbHVnaW5zKCkpCiAgICAgICAgIHx8IChwbHVnaW5EYXRhICYmIHBsdWdpbkRhdGEt
PnN1cHBvcnRzV2ViVmlzaWJsZU1pbWVUeXBlKG1pbWVUeXBlLCBQbHVnaW5EYXRhOjpPbmx5QXBw
bGljYXRpb25QbHVnaW5zKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94
eS5jcHAKaW5kZXggMTViOGUyOGYyMzAwOTI5ZDIyMGU3MzNiZmYwMDYzMDBkMTNhYWRiZi4uY2Q3
MDY5ODU4MjY3NjcyNGRmMTA3NDk5YmM4OTMxNTc4YzNjYTAzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUg
IldlYlBhZ2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NQb29sLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9ET01JbXBsZW1lbnRhdGlvbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01JTUVUeXBl
UmVnaXN0cnkuaD4KICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtMTE3LDE1ICsxMTYsMTMgQEAgYm9v
bCBXZWJGcmFtZVByb3h5Ojppc0Rpc3BsYXlpbmdTdGFuZGFsb25lTWVkaWFEb2N1bWVudCgpIGNv
bnN0CiAKIGJvb2wgV2ViRnJhbWVQcm94eTo6aXNEaXNwbGF5aW5nTWFya3VwRG9jdW1lbnQoKSBj
b25zdAogewotICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIHNob3VsZCBiZSBtb3ZlZCB0byBzb21l
d2hlcmUgaW4gV2ViQ29yZS4KLSAgICByZXR1cm4gbV9NSU1FVHlwZSA9PSAidGV4dC9odG1sIiB8
fCBtX01JTUVUeXBlID09ICJpbWFnZS9zdmcreG1sIiB8fCBtX01JTUVUeXBlID09ICJhcHBsaWNh
dGlvbi94LXdlYmFyY2hpdmUiIHx8IERPTUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKG1f
TUlNRVR5cGUpOworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIGNhbGwgdG8gYSBzaW5n
bGUgTUlNRVR5cGVSZWdpc3RyeSBmdW5jdGlvbjsgYWRkaW5nIGEgbmV3IG9uZSBpZiBuZWVkZWQu
CisgICAgLy8gRklYTUU6IFRoaXMgaXMgZG9pbmcgY2FzZSBzZW5zaXRpdmUgY29tcGFyaXNvbnMg
b24gTUlNRSB0eXBlcywgc2hvdWxkIGJlIHVzaW5nIEFTQ0lJIGNhc2UgaW5zZW5zaXRpdmUgaW5z
dGVhZC4KKyAgICByZXR1cm4gbV9NSU1FVHlwZSA9PSAidGV4dC9odG1sIiB8fCBtX01JTUVUeXBl
ID09ICJpbWFnZS9zdmcreG1sIiB8fCBtX01JTUVUeXBlID09ICJhcHBsaWNhdGlvbi94LXdlYmFy
Y2hpdmUiIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5cGUobV9NSU1FVHlwZSk7CiB9
CiAKIGJvb2wgV2ViRnJhbWVQcm94eTo6aXNEaXNwbGF5aW5nUERGRG9jdW1lbnQoKSBjb25zdAog
ewotICAgIGlmIChtX01JTUVUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
CiAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUo
bV9NSU1FVHlwZSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287217</attachid>
            <date>2016-08-27 16:58:20 -0700</date>
            <delta_ts>2016-08-27 23:20:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161295-20160827165614.patch</filename>
            <type>text/plain</type>
            <size>61077</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1MDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDI5ODY2NzBkMjlmMDUw
YmRhZDc0ZDEwZWM5ZWNlODFiYjU4Yzg3My4uNTYyMzhkZTZmNjc4ZWY4ZDU0MWFlOTY2NmJkZGU2
MzgzZjEzZTY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDE2LTA4LTI3ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJlYW1saW5lIERPTUltcGxl
bWVudGF0aW9uLCBhbmQgbW92ZSBpdCB0byBvdXIgbmV3IERPTSBleGNlcHRpb24gc3lzdGVtCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEyOTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgbmV3IGhlYWRlcnMgdG8gcHJvamVjdC4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6dG9KUyk6IEFkZGVkIGFuIG92ZXJsb2FkIGZvciBFeGNlcHRpb25Pcjw+OyB0aGlzIGhhbmRs
ZXMgdGhlCisgICAgICAgIGV4Y2VwdGlvbiBjYXNlIGhlcmUgc28gaXQgZG9lc24ndCBuZWVkIHRv
IGJlIGhhbmRsZWQgaW4gZ2VuZXJhdGVkIGNvZGUKKyAgICAgICAgZm9yIHRoZSBiaW5kaW5nLiBJ
bXBsZW1lbnRlZCBoZXJlIHNvIHRoYXQgRXhjZXB0aW9uT3IuaCBkb2VzIG5vdCBrbm93CisgICAg
ICAgIGFib3V0IGJpbmRpbmdzLiBCdXQgc2luY2UgdGhpcyBpcyBhIHRlbXBsYXRlLCBpdCB3aWxs
IG9ubHkgY29tcGlsZSB3aGVuCisgICAgICAgIGluc3RhbnRpYXRlZCBhbmQgdGhlcmUgaXMgbm8g
bmVlZCB0byBpbmNsdWRlIEV4Y2VwdGlvbk9yLmggYW5kIGluZGlyZWN0bHkKKyAgICAgICAgdGhl
IFZhcmlhbnQuaCBoZWFkZXIgaW4gdGhpcyBoZWFkZXIuCisgICAgICAgIChXZWJDb3JlOjp0b0pT
TmV3bHlDcmVhdGVkKTogRGl0dG8uCisKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50
VHlwZSk6IENoYW5nZWQgdG8gcmV0dXJuCisgICAgICAgIEV4Y2VwdGlvbk9yLgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlWE1MRG9jdW1lbnQpOiBBZGRlZC4gSGVscGVyIHVzZWQgaW4gY3JlYXRl
RG9jdW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Z2V0SW50ZXJm
YWNlKTogRGVsZXRlZC4gVGhpcyB3YXMgdW51c2VkLgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1w
bGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KTogQ2hhbmdlZCB0byByZXR1cm4KKyAgICAgICAg
RXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRl
Q1NTU3R5bGVTaGVldCk6IFJlbW92ZWQgdGhlIHVudXNlZAorICAgICAgICBFeGNlcHRpb25Db2Rl
IG91dCBhcmd1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRYTUxNSU1FVHlwZUNoYXIp
OiBEZWxldGVkLiBNb3ZlZCB0byBNSU1FVHlwZVJlZ2lzdHJ5LgorICAgICAgICAoV2ViQ29yZTo6
RE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlNRVR5cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkRPTUltcGxlbWVudGF0aW9uOjppc1RleHRNSU1FVHlwZSk6IERpdHRvLgorCisgICAgICAg
ICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmg6IENoYW5nZWQgZnVuY3Rpb25zIGFzIGRlc2NyaWJl
ZCBhYm92ZSB0bworICAgICAgICByZXR1cm4gRXhjZXB0aW9uT3IgdmFsdWVzLiBBbHNvIHJlbW92
ZWQgdW51c2VkIGdldEludGVyZmFjZSBmdW5jdGlvbiwKKyAgICAgICAgYW5kIGlzWE1MTUlNRVR5
cGUgYW5kIGlzVGV4dE1JTUVUeXBlLCB3aGljaCBib3RoIG1vdmVkIHRvIHRoZQorICAgICAgICBN
SU1FVHlwZVJlZ2lzdHJ5IGNsYXNzIGFsb25nc2lkZSBhbGwgdGhlIG90aGVyIHNpbWlsYXIgTUlN
RSB0eXBlCisgICAgICAgIGZ1bmN0aW9ucy4KKworICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRh
dGlvbi5pZGw6IFJlb3JnYW5pemVkIHRoaXMgdG8gbWF0Y2ggdGhlIElETCBmaWxlcworICAgICAg
ICBpbiB0aGUgc3BlY2lmaWNhdGlvbnMgYSBsaXR0bGUgYmV0dGVyLiBBbHNvIHJlbW92ZWQgW1Jh
aXNlc0V4Y2VwdGlvbl0KKyAgICAgICAgc2luY2UgdGhhdCBpcyBvbmx5IG5lZWRlZCBmb3IgdGhl
IG9sZCBsZWdhY3kgRXhjZXB0aW9uQ29kZSYgc3R5bGUuCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFhNTFZlcnNpb24pOiBSZW1v
dmVkIGNhbGwgdG8gdGhlCisgICAgICAgIERPTUltcGxlbWVudGF0aW9uOjpoYXNGZWF0dXJlIGZ1
bmN0aW9uIHNpbmNlIHRoZSB2YWx1ZXMgcGFzc2VkIGluCisgICAgICAgIHVuY29uZGl0aW9uYWxs
eSByZXN1bHQgaW4gdGhlIHJldHVybiB2YWx1ZSAidHJ1ZSIuIFRoaXMgaXMgbGVmdCBvdmVyCisg
ICAgICAgIGVpdGhlciBmcm9tIHNwZWNpZmljYXRpb24gbGFuZ3VhZ2UsIG9yIGZyb20gYW4gYW5j
aWVudCB2ZXJzaW9uIG9mIHRoaXMKKyAgICAgICAgY29kZSB0aGF0IHdvcmtlZCBpbiBhICJubyBY
TUwgc3VwcG9ydGVkIiBtb2RlLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFhNTFN0
YW5kYWxvbmUpOiBEaXR0by4KKworICAgICAgICAqIGRvbS9FeGNlcHRpb24uaDogQWRkZWQuCisg
ICAgICAgICogZG9tL0V4Y2VwdGlvbk9yLmg6IEFkZGVkLgorCisgICAgICAgICogaHRtbC9IVE1M
VGVtcGxhdGVFbGVtZW50LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlIG9mIERPTUltcGxl
bWVudGF0aW9uLmguCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVhIUlRleHREZWNvZGVyKTogVXNlIGlzWE1MTUlN
RVR5cGUgaW4gaXRzIG5ldyBsb2NhdGlvbiBpbgorICAgICAgICBNSU1FVHlwZVJlZ2lzdHJ5Lgor
ICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVPdGhlclJlc291cmNlVGV4dERlY29kZXIpOiBEaXR0by4KKworICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZSBvZiBE
T01JbXBsZW1lbnRhdGlvbi5oLgorCisgICAgICAgICogbG9hZGVyL1RleHRSZXNvdXJjZURlY29k
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6ZGV0ZXJtaW5l
Q29udGVudFR5cGUpOiBVc2UgaXNYTUxNSU1FVHlwZSBpbiBpdHMKKyAgICAgICAgbmV3IGxvY2F0
aW9uIGluIE1JTUVUeXBlUmVnaXN0cnkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJl
Z2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzVGV4dE1J
TUVUeXBlKTogQWRkZWQuIE1vdmVkIGhlcmUgZnJvbQorICAgICAgICBET01JbXBsZW1lbnRhdGlv
bi4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRYTUxNSU1FVHlwZUNoYXIpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5cGUpOiBEaXR0by4K
KworICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDogQWRkZWQgaXNYTUxNSU1F
VHlwZSBhbmQgaXNUZXh0TUlNRVR5cGUuCisgICAgICAgIE1hZGUgaXNVbnN1cHBvcnRlZFRleHRN
SU1FVHlwZSBwcml2YXRlLgorCisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6aXNTdXBwb3J0ZWQpOiBEZWxldGVkLiBUaGlzIGZ1bmN0
aW9uIHdhcyBuZXZlciBjYWxsZWQuCisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDogVXBkYXRl
ZCBmb3IgdGhlIGFib3ZlIGNoYW5nZS4KKworICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VJc1hNTCk6IFVz
ZSBpc1hNTE1JTUVUeXBlIGluIGl0cyBuZXcKKyAgICAgICAgbG9jYXRpb24gaW4gTUlNRVR5cGVS
ZWdpc3RyeS4KKwogMjAxNi0wOC0yNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBBZGQgYWRvcHRlZCBjYWxsYmFjayBmb3IgY3VzdG9tIGVsZW1lbnRzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKaW5kZXggYjNhYTk0MjMzODYyYTJhOTJjZTU2ZTQ4ZTA0ODFmMzVlN2NiZThhZS4u
MDM2ZGFhOGQxMWMzZmViZTI5ZjRiNTllYTJjOTg4ZDRiZDRkOWI4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMzIEBACisyMDE2LTA4LTI3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KKworICAgICAgICBTdHJlYW1saW5lIERPTUltcGxlbWVudGF0aW9uLCBhbmQgbW92ZSBp
dCB0byBvdXIgbmV3IERPTSBleGNlcHRpb24gc3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEyOTUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01ET01JbXBsZW1lbnRhdGlvbi5tbToK
KyAgICAgICAgKHVud3JhcCk6IEFkZGVkLiBVc2UgdGhpcyBpbnN0ZWFkIG9mIHRoZSBJTVBMIG1h
Y3JvLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBkZWFsbG9jXSk6IFVwZGF0ZWQgdG8g
dXNlIHVud3JhcC4KKyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24gaGFzRmVhdHVyZTp2ZXJz
aW9uOl0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24gY3JlYXRlRG9jdW1l
bnRUeXBlOnB1YmxpY0lkOnN5c3RlbUlkOl0pOiBVcGRhdGVkIHRvIHdvcmsgd2l0aAorICAgICAg
ICBFeGNlcHRpb25Pci4KKyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24gY3JlYXRlRG9jdW1l
bnQ6cXVhbGlmaWVkTmFtZTpkb2N0eXBlOl0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NSW1wbGVt
ZW50YXRpb24gY3JlYXRlQ1NTU3R5bGVTaGVldDptZWRpYTpdKTogUmVtb3ZlZCBleGNlcHRpb24g
bG9naWMgc2luY2UKKyAgICAgICAgdGhpcyBmdW5jdGlvbiBjYW4gbm8gbG9uZ2VyIHJhaXNlIGFu
IGV4Y2VwdGlvbi4KKyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24gY3JlYXRlSFRNTERvY3Vt
ZW50Ol0pOiBVcGRhdGVkIHRvIHVzZSB1bndyYXAuCisgICAgICAgICgtW0RPTUltcGxlbWVudGF0
aW9uIGhhc0ZlYXR1cmU6Ol0pOiBDaGFuZ2VkIHRvIGNhbGwgdGhlIG5vbi1kZXByZWNhdGVkIHZl
cnNpb24KKyAgICAgICAgcmF0aGVyIHRoYW4gZHVwbGljYXRpbmcgaXRzIGltcGxlbWVudGF0aW9u
LiBBbHNvIG1vdmVkIGludG8gdGhlIGNhdGVnb3J5IGFzIGRlZmluZWQKKyAgICAgICAgaW4gdGhl
IGhlYWRlci4KKyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24gY3JlYXRlRG9jdW1lbnRUeXBl
Ojo6XSk6IERpdHRvLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVEb2N1bWVu
dDo6Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24gY3JlYXRlQ1NTU3R5
bGVTaGVldDo6XSk6IERpdHRvLgorCisgICAgICAgICogRE9NL0RPTURvY3VtZW50Lm1tOiBSZW1v
dmVkIHVubmVlZGVkIGluY2x1ZGUgb2YgRE9NSW1wbGVtZW50YXRpb24uaC4KKworICAgICAgICAq
IFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9jYW5Qcm92aWRlRG9j
dW1lbnRTb3VyY2VdKTogVXBkYXRlZCB0byB1c2UgaXNUZXh0TUlNRVR5cGUgaW4gaXRzIG5ldwor
ICAgICAgICBsb2NhdGlvbiBpbiBNSU1FVHlwZVJlZ2lzdHJ5IGluc3RlYWQgb2YgaW4gRE9NSW1w
bGVtZW50YXRpb24uCisKIDIwMTYtMDgtMjYgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCAyZWVkYzg1ZTExZjVkYThlOTliMDQ1OWRiZThiOTJiMDAyYmFmYTM4Li5hNDMz
ODkwNWY1NGZjZTAyMjU1MGJiMmFiM2U5ZjliYzM4ODEzYTU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTYtMDgtMjcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFN0cmVhbWxpbmUgRE9NSW1wbGVtZW50YXRpb24sIGFuZCBtb3ZlIGl0IHRvIG91ciBu
ZXcgRE9NIGV4Y2VwdGlvbiBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MTI5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZVByb3h5Ojppc0Rpc3BsYXlpbmdNYXJrdXBEb2N1bWVudCk6IFVzZSBp
c1hNTE1JTUVUeXBlIGluIGl0cworICAgICAgICBuZXcgbG9jYXRpb24gaW4gTUlNRVR5cGVSZWdp
c3RyeSByYXRoZXIgdGhhbiBpbiBET01JbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVQcm94eTo6aXNEaXNwbGF5aW5nUERGRG9jdW1lbnQpOiBSZW1vdmVkIHVubmVlZGVk
IHJlZHVuZGFudAorICAgICAgICBjaGVjayBmb3IgZW1wdHkgc3RyaW5nLCBhbHJlYWR5IGRvbmUg
YnkgTUlNRVR5cGVSZWdpc3RyeS4KKwogMjAxNi0wOC0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bVGhyZWFkZWQgQ29tcG9zaXRv
cl0gU2V2ZXJhbCBmbGFreSB0ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ3NGRjZDUzN2JjNTgzNjI0NGVlYWI3NzIxMjk1
OWNlYmViZjk5MDYuLjQ5Mzc1NTIyYTRjZjExOTRkMTUwYTFhYjhiNGE4YWI4MzI1NDZkMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTMyNzIsNiArMzI3Miw4IEBACiAJCTkzQzRGNkVCMTEwOEY5QTUwMDk5RDBEQiAvKiBBY2Nl
c3NpYmlsaXR5U2Nyb2xsYmFyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0M0RjZFOTExMDhGOUE1MDA5OUQwREIgLyogQWNjZXNzaWJpbGl0eVNjcm9s
bGJhci5oICovOyB9OwogCQk5M0NDRjAyNzBBRjZDNTI5MDAwMThFODkgLyogTmF2aWdhdGlvbkFj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTND
Q0YwMjYwQUY2QzUyOTAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0NDRjA2MDBBRjZDQTc2MDAw
MThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0NDRjA1RjBBRjZDQTc2MDAwMThFODkgLyogTmF2aWdhdGlv
bkFjdGlvbi5jcHAgKi87IH07CisJCTkzRDE5NjMxMUQ2Q0FCNzYwMEZDN0U0NyAvKiBFeGNlcHRp
b25Pci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNE
MTk2MzAxRDZDQUI3NjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbk9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNEMTk2MzMxRDZDQUI4MjAwRkM3RTQ3
IC8qIEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNEMTk2MzIxRDZDQUI4MjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRDQzNzlGMUQ1N0IxNTMw
MEFCODVFQSAvKiBKU01haW5UaHJlYWRFeGVjU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhGOTM0RDgzMTE4OUYxRUUwMDUwOEQ1RCAvKiBKU01h
aW5UaHJlYWRFeGVjU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5M0Q0MzdBMDFENTdCMTlBMDBBQjg1RUEgLyogQ3VzdG9tRWxlbWVudFJl
YWN0aW9uUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlCNTZDOUE4MUM4OTMxMjgwMEM0NTZERiAvKiBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkz
RDQzN0ExMUQ1N0IzRjQwMEFCODVFQSAvKiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREUxMUY0QTE4RDgz
MTFCMDA3ODk4M0IgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDQwNyw2ICsxMDQwOSw4IEBA
CiAJCTkzQ0E0Q0EyMDlERjkzRkEwMERGODY3NyAvKiBzdmcuY3NzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IHN2Zy5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQ0NGMDI2MEFG
NkM1MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5hdmlnYXRpb25BY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNDQ0YwNUYwQUY2Q0E3NjAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF2aWdhdGlvbkFjdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDE5NjMwMUQ2Q0FCNzYwMEZDN0U0NyAv
KiBFeGNlcHRpb25Pci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNlcHRp
b25Pci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0QxOTYzMjFENkNBQjgyMDBG
QzdFNDcgLyogRXhjZXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4
Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Q5RDUzQjBEQTI3RTE4
MDA3NzIxNkMgLyogUmFuZ2VCb3VuZGFyeVBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJhbmdlQm91bmRhcnlQb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0UyMjdEQjBBRjU4OUFEMDBENDgzMjQgLyogRG9jdW1lbnRMb2FkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRMb2FkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0UyMjdERDBBRjU4OUFEMDBENDgzMjQgLyogTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjI5MDksMTEgKzIyOTEzLDEzIEBACiAJCQkJRTEyRURCN0EwQjMwOEE3
ODAwMjcwNEI2IC8qIEV2ZW50VGFyZ2V0LmggKi8sCiAJCQkJODVBRkE3NDIwQUFGMjk4NDAwRTg0
MzA1IC8qIEV2ZW50VGFyZ2V0LmlkbCAqLywKIAkJCQlDRENFNUNEMDE0NjMzQkM5MDBENDdDQ0Eg
LyogRXZlbnRUYXJnZXRGYWN0b3J5LmluICovLAorCQkJCTkzRDE5NjMyMUQ2Q0FCODIwMEZDN0U0
NyAvKiBFeGNlcHRpb24uaCAqLywKIAkJCQlCQzYwRDhGMDBEMkExMUUwMDBCOTkxOEYgLyogRXhj
ZXB0aW9uQmFzZS5jcHAgKi8sCiAJCQkJQkM2MEQ4RjEwRDJBMTFFMDAwQjk5MThGIC8qIEV4Y2Vw
dGlvbkJhc2UuaCAqLywKIAkJCQk5MzVGQkNGMTA5QkExNDNCMDBFMjMwQjEgLyogRXhjZXB0aW9u
Q29kZS5oICovLAogCQkJCUE3Q0FDREIwMTNDRTg3NUIwMEJCQkUzRiAvKiBFeGNlcHRpb25Db2Rl
UGxhY2Vob2xkZXIuY3BwICovLAogCQkJCUE3NEJCNzZBMTNCREE4NjMwMEZGN0JGMCAvKiBFeGNl
cHRpb25Db2RlUGxhY2Vob2xkZXIuaCAqLywKKwkJCQk5M0QxOTYzMDFENkNBQjc2MDBGQzdFNDcg
LyogRXhjZXB0aW9uT3IuaCAqLywKIAkJCQlFNDdFMjc2NzE2MDM2RURDMDBFRTJBRkIgLyogRXh0
ZW5zaW9uU3R5bGVTaGVldHMuY3BwICovLAogCQkJCUU0N0UyNzY0MTYwMzZFRDIwMEVFMkFGQiAv
KiBFeHRlbnNpb25TdHlsZVNoZWV0cy5oICovLAogCQkJCUI2RDlEMjM0MTRFQUJEMjYwMDkwRDc1
RSAvKiBGb2N1c0V2ZW50LmNwcCAqLywKQEAgLTI1NTAyLDYgKzI1NTA4LDcgQEAKIAkJCQkwNzhF
MDkzOTE3RDE2QjJDMDA0MjBBQTEgLyogTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDc4RTA5MTYxN0QxNEQxQzAwNDIwQUExIC8qIE1lZGlhU3RyZWFtRXZl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTM3MTdEMTZCMkMwMDQyMEFBMSAvKiBNZWRp
YVN0cmVhbVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDE5NjMzMUQ2Q0FCODIwMEZD
N0U0NyAvKiBFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTE3MTdEMTREMUMw
MDQyMEFBMSAvKiBNZWRpYVN0cmVhbVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhF
MDkxODE3RDE0RDFDMDA0MjBBQTEgLyogTWVkaWFTdHJlYW1UcmFjay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDc4RTA5MTkxN0QxNEQxQzAwNDIwQUExIC8qIE1lZGlhU3RyZWFtVHJhY2tFdmVudC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNjU2OSw2ICsyNjU3Niw3IEBACiAJCQkJQjIyMjdBRDcwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdB
REEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybWFibGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyMjI3QUREMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1EaXN0YW5jZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTNEMTk2MzExRDZDQUI3NjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbk9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FERjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVHJh
bnNmb3JtTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhDNzEzNkUxMjg5NTZBMzAwMUIxMDdF
IC8qIFNWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyMjI3QUUyMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUUmVmRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IGExMzk1
ODJiMTIyNWY3ZTk5YTFiZDYzMTY3ZGY3NjExM2Q0NTY1MzQuLmY4Yzk3YzRmY2Q1N2I2ZjZlMjIw
ZTJmMzczNzQ0YzE2YWM2MzZkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5oCkBAIC0yMyw5ICsyMyw5IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
RE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNs
dWRlICJKU0RPTVdyYXBwZXIuaCIKLSNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNs
dWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGVJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmgiCkBAIC02OCw3ICs2
OCw5IEBAIGNsYXNzIE5vZGU7CiAKIHN0cnVjdCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2U7CiAK
LXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBF
eGNlcHRpb25PcjsKKwordXNpbmcgRXhjZXB0aW9uQ29kZSA9IGludDsKIAogc3RydWN0IEV4Y2Vw
dGlvbkRldGFpbHMgewogICAgIFN0cmluZyBtZXNzYWdlOwpAQCAtMTg1LDYgKzE4Nyw5IEBAIEpT
Qzo6SlNWYWx1ZSBjcmVhdGVET01FeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBFeGNlcHRpb25D
b2RlLCBjb25zdCBTdHJpbmcmKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RE9NRXhjZXB0aW9u
KEpTQzo6RXhlY1N0YXRlKiwgRXhjZXB0aW9uQ29kZSk7CiB2b2lkIHNldERPTUV4Y2VwdGlvbihK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpOwogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCosIEV4Y2VwdGlvbk9yPFQ+JiYpOwordGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRl
KiwgSlNET01HbG9iYWxPYmplY3QqLCBFeGNlcHRpb25PcjxUPiYmKTsKKwogSlNDOjpKU1ZhbHVl
IGpzU3RyaW5nKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgVVJMJik7IC8vIGVtcHR5IGlmIHRoZSBV
UkwgaXMgbnVsbAogCiBKU0M6OkpTVmFsdWUganNTdHJpbmdPck51bGwoSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBTdHJpbmcmKTsgLy8gbnVsbCBpZiB0aGUgc3RyaW5nIGlzIG51bGwKQEAgLTc4Niw0
ICs3OTEsMjMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b051
bGxhYmxlSlNOdW1iZXIoT3B0aW9uYWw8VD4gb3B0aW9uYWwKICAgICByZXR1cm4gb3B0aW9uYWxO
dW1iZXIgPyBKU0M6OmpzTnVtYmVyKG9wdGlvbmFsTnVtYmVyLnZhbHVlKCkpIDogSlNDOjpqc051
bGwoKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RXhjZXB0aW9uT3I8VD4mJiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUuaGFzRXhjZXB0aW9uKCkp
IHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCB2YWx1ZS5leGNlcHRpb25Db2RlKCkp
OworICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4g
dG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB2YWx1ZS5yZXR1cm5WYWx1ZSgpKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhj
ZXB0aW9uT3I8VD4mJiB2YWx1ZSkKK3sKKyAgICAvLyBGSVhNRTogSXQncyByZWFsbHkgYW5ub3lp
bmcgdG8gaGF2ZSB0d28gb2YgdGhlc2UgZnVuY3Rpb25zLiBTaG91bGQgZmluZCBhIHdheSB0byBj
b21iaW5lIHRvSlMgYW5kIHRvSlNOZXdseUNyZWF0ZWQuCisgICAgaWYgKHZhbHVlLmhhc0V4Y2Vw
dGlvbigpKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgdmFsdWUuZXhjZXB0aW9u
Q29kZSgpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKKyAgICB9CisgICAg
cmV0dXJuIHRvSlNOZXdseUNyZWF0ZWQoc3RhdGUsIGdsb2JhbE9iamVjdCwgdmFsdWUucmV0dXJu
VmFsdWUoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RE9NSW1wbGVtZW50YXRpb24uY3BwCmluZGV4IGFmYTM2Mjg4MjRhMGZhZjMwNGQ4ZGJiY2Y1NGUy
YjNjYTg3MTg5MTIuLmVmYmU1MWZmZjU5ZDc0ZTkzZDM5NGU4YzkwNTc1NWQ0MTZiODA3MjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcApAQCAtMjUsMjUgKzI1LDI1
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIK
IAotI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgor
I2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUeXBlLmgiCiAjaW5j
bHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJG
VFBEaXJlY3RvcnlEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJh
bWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIkZU
UERpcmVjdG9yeURvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTEhlYWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRpdGxlRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEb2N1bWVudC5oIgorI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJNZWRp
YURvY3VtZW50LmgiCi0jaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJNZWRpYUxp
c3QuaCIKLSNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5
ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgogI2luY2x1
ZGUgIlBsdWdpbkRvY3VtZW50LmgiCkBAIC03Myw2ICs3Myw3IEBAIHN0YXRpYyB2b2lkIGFkZFN0
cmluZyhGZWF0dXJlU2V0JiBzZXQsIGNvbnN0IGNoYXIqIHN0cmluZykKIH0KIAogI2lmIEVOQUJM
RShWSURFTykKKwogY2xhc3MgRE9NSW1wbGVtZW50YXRpb25TdXBwb3J0c1R5cGVDbGllbnQgOiBw
dWJsaWMgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQgewogcHVibGljOgogICAgIERPTUlt
cGxlbWVudGF0aW9uU3VwcG9ydHNUeXBlQ2xpZW50KGJvb2wgbmVlZHNIYWNrcywgY29uc3QgU3Ry
aW5nJiBob3N0KQpAQCAtODgsNiArODksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9uZWVkc0hh
Y2tzOwogICAgIFN0cmluZyBtX2hvc3Q7CiB9OworCiAjZW5kaWYKIAogc3RhdGljIGJvb2wgaXNT
dXBwb3J0ZWRTVkcxMEZlYXR1cmUoY29uc3QgU3RyaW5nJiBmZWF0dXJlLCBjb25zdCBTdHJpbmcm
IHZlcnNpb24pCkBAIC0yMDcsMTAzICsyMDksNTggQEAgYm9vbCBET01JbXBsZW1lbnRhdGlvbjo6
aGFzRmVhdHVyZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPERvY3VtZW50VHlwZT4gRE9NSW1wbGVtZW50
YXRpb246OmNyZWF0ZURvY3VtZW50VHlwZShjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsCi0g
ICAgY29uc3QgU3RyaW5nJiBwdWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgRXhjZXB0
aW9uQ29kZSYgZWMpCitFeGNlcHRpb25PcjxSZWY8RG9jdW1lbnRUeXBlPj4gRE9NSW1wbGVtZW50
YXRpb246OmNyZWF0ZURvY3VtZW50VHlwZShjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIGNv
bnN0IFN0cmluZyYgcHVibGljSWQsIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQpCiB7Ci0gICAgU3Ry
aW5nIHByZWZpeCwgbG9jYWxOYW1lOwotICAgIGlmICghRG9jdW1lbnQ6OnBhcnNlUXVhbGlmaWVk
TmFtZShxdWFsaWZpZWROYW1lLCBwcmVmaXgsIGxvY2FsTmFtZSwgZWMpKQotICAgICAgICByZXR1
cm4gMDsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBTdHJpbmcgcHJlZml4OworICAg
IFN0cmluZyBsb2NhbE5hbWU7CisgICAgRG9jdW1lbnQ6OnBhcnNlUXVhbGlmaWVkTmFtZShxdWFs
aWZpZWROYW1lLCBwcmVmaXgsIGxvY2FsTmFtZSwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbihlYyk7CiAKICAgICByZXR1cm4gRG9jdW1lbnRUeXBlOjpjcmVhdGUo
bV9kb2N1bWVudCwgcXVhbGlmaWVkTmFtZSwgcHVibGljSWQsIHN5c3RlbUlkKTsKIH0KIAotRE9N
SW1wbGVtZW50YXRpb24qIERPTUltcGxlbWVudGF0aW9uOjpnZXRJbnRlcmZhY2UoY29uc3QgU3Ry
aW5nJiAvKmZlYXR1cmUqLykKK3N0YXRpYyBpbmxpbmUgUmVmPFhNTERvY3VtZW50PiBjcmVhdGVY
TUxEb2N1bWVudChjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSkKIHsKLSAgICByZXR1cm4gMDsK
KyAgICBpZiAobmFtZXNwYWNlVVJJID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpCisgICAg
ICAgIHJldHVybiBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgpKTsKKyAgICBpZiAo
bmFtZXNwYWNlVVJJID09IEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpCisgICAgICAgIHJl
dHVybiBYTUxEb2N1bWVudDo6Y3JlYXRlWEhUTUwobnVsbHB0ciwgVVJMKCkpOworICAgIHJldHVy
biBYTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgpKTsKIH0KIAotUmVmUHRyPFhNTERv
Y3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBu
YW1lc3BhY2VVUkksCi0gICAgY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBEb2N1bWVudFR5
cGUqIGRvY3R5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8UmVmPFhNTERvY3Vt
ZW50Pj4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgbmFt
ZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIERvY3VtZW50VHlwZSogZG9j
dW1lbnRUeXBlKQogewotICAgIFJlZlB0cjxYTUxEb2N1bWVudD4gZG9jOwotICAgIGlmIChuYW1l
c3BhY2VVUkkgPT0gU1ZHTmFtZXM6OnN2Z05hbWVzcGFjZVVSSSkKLSAgICAgICAgZG9jID0gU1ZH
RG9jdW1lbnQ6OmNyZWF0ZSgwLCBVUkwoKSk7Ci0gICAgZWxzZSBpZiAobmFtZXNwYWNlVVJJID09
IEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpCi0gICAgICAgIGRvYyA9IFhNTERvY3VtZW50
OjpjcmVhdGVYSFRNTCgwLCBVUkwoKSk7Ci0gICAgZWxzZQotICAgICAgICBkb2MgPSBYTUxEb2N1
bWVudDo6Y3JlYXRlKDAsIFVSTCgpKTsKKyAgICBhdXRvIGRvY3VtZW50ID0gY3JlYXRlWE1MRG9j
dW1lbnQobmFtZXNwYWNlVVJJKTsKIAotICAgIGRvYy0+c2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3ko
bV9kb2N1bWVudC5zZWN1cml0eU9yaWdpblBvbGljeSgpKTsKKyAgICBkb2N1bWVudC0+c2V0U2Vj
dXJpdHlPcmlnaW5Qb2xpY3kobV9kb2N1bWVudC5zZWN1cml0eU9yaWdpblBvbGljeSgpKTsKIAot
ICAgIFJlZlB0cjxOb2RlPiBkb2N1bWVudEVsZW1lbnQ7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGRv
Y3VtZW50RWxlbWVudDsKICAgICBpZiAoIXF1YWxpZmllZE5hbWUuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIGRvY3VtZW50RWxlbWVudCA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZVVSSSwg
cXVhbGlmaWVkTmFtZSwgZWMpOworICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAg
ICAgZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VV
UkksIHF1YWxpZmllZE5hbWUsIGVjKTsKICAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uKGVjKTsKICAgICB9CiAK
LSAgICBpZiAoZG9jdHlwZSkKLSAgICAgICAgZG9jLT5hcHBlbmRDaGlsZCgqZG9jdHlwZSk7Cisg
ICAgaWYgKGRvY3VtZW50VHlwZSkKKyAgICAgICAgZG9jdW1lbnQtPmFwcGVuZENoaWxkKCpkb2N1
bWVudFR5cGUpOwogICAgIGlmIChkb2N1bWVudEVsZW1lbnQpCi0gICAgICAgIGRvYy0+YXBwZW5k
Q2hpbGQoKmRvY3VtZW50RWxlbWVudCk7CisgICAgICAgIGRvY3VtZW50LT5hcHBlbmRDaGlsZCgq
ZG9jdW1lbnRFbGVtZW50KTsKIAotICAgIHJldHVybiBkb2M7CisgICAgcmV0dXJuIFdURk1vdmUo
ZG9jdW1lbnQpOwogfQogCi1SZWY8Q1NTU3R5bGVTaGVldD4gRE9NSW1wbGVtZW50YXRpb246OmNy
ZWF0ZUNTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBtZWRpYSwgRXhj
ZXB0aW9uQ29kZSYpCitSZWY8Q1NTU3R5bGVTaGVldD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0
ZUNTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBtZWRpYSkKIHsKICAg
ICAvLyBGSVhNRTogVGl0bGUgc2hvdWxkIGJlIHNldC4KICAgICAvLyBGSVhNRTogTWVkaWEgY291
bGQgaGF2ZSB3cm9uZyBzeW50YXgsIGluIHdoaWNoIGNhc2Ugd2Ugc2hvdWxkIGdlbmVyYXRlIGFu
IGV4Y2VwdGlvbi4KLSAgICBSZWY8Q1NTU3R5bGVTaGVldD4gc2hlZXQgPSBDU1NTdHlsZVNoZWV0
OjpjcmVhdGUoU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoKSk7CisgICAgYXV0byBzaGVldCA9
IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZSgpKTsKICAg
ICBzaGVldC0+c2V0TWVkaWFRdWVyaWVzKE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZUFsbG93aW5nRGVz
Y3JpcHRpb25TeW50YXgobWVkaWEpKTsKICAgICByZXR1cm4gc2hlZXQ7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgYm9vbCBpc1ZhbGlkWE1MTUlNRVR5cGVDaGFyKFVDaGFyIGMpCi17Ci0gICAgLy8gVmFs
aWQgY2hhcmFjdGVycyBwZXIgUkZDcyAzMDIzIGFuZCAyMDQ1OgotICAgIC8vIDAtOWEtekEtWl8t
K34hJF57fXwuJSdgIyYqCi0gICAgcmV0dXJuIGlzQVNDSUlBbHBoYW51bWVyaWMoYykgfHwgYyA9
PSAnIScgfHwgYyA9PSAnIycgfHwgYyA9PSAnJCcgfHwgYyA9PSAnJScgfHwgYyA9PSAnJicgfHwg
YyA9PSAnXCcnIHx8IGMgPT0gJyonIHx8IGMgPT0gJysnCi0gICAgICAgIHx8IGMgPT0gJy0nIHx8
IGMgPT0gJy4nIHx8IGMgPT0gJ14nIHx8IGMgPT0gJ18nIHx8IGMgPT0gJ2AnIHx8IGMgPT0gJ3sn
IHx8IGMgPT0gJ3wnIHx8IGMgPT0gJ30nIHx8IGMgPT0gJ34nOwotfQotCi1ib29sIERPTUltcGxl
bWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCi17Ci0gICAg
Ly8gRklYTUU6IENhbiB3ZSBtb3ZlIHRoaXMgbG9naWMgdG8gTUlNRVR5cGVSZWdpc3RyeSBhbmQg
aGF2ZSB0aGlzIGp1c3QgYmUgYSBzaW5nbGUgZnVuY3Rpb24gY2FsbD8KLQotICAgIGlmIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQveG1sIikgfHwgZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi94bWwiKSB8fCBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQveHNsIikpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKCFtaW1lVHlwZS5lbmRzV2l0aCgiK3htbCIsIGZh
bHNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc2l6ZV90IHNsYXNoUG9zaXRpb24g
PSBtaW1lVHlwZS5maW5kKCcvJyk7Ci0gICAgLy8gVGFrZSBpbnRvIGFjY291bnQgdGhlICcreG1s
JyBlbmRpbmcgb2YgbWltZVR5cGUuCi0gICAgaWYgKHNsYXNoUG9zaXRpb24gPT0gbm90Rm91bmQg
fHwgIXNsYXNoUG9zaXRpb24gfHwgc2xhc2hQb3NpdGlvbiA9PSBtaW1lVHlwZS5sZW5ndGgoKSAt
IDUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEFnYWluLCBtaW1lVHlwZSBlbmRz
IHdpdGggJyt4bWwnLCBubyBuZWVkIHRvIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGF0IHN1YnN0
cmluZy4KLSAgICBzaXplX3QgbWltZUxlbmd0aCA9IG1pbWVUeXBlLmxlbmd0aCgpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbWltZUxlbmd0aCAtIDQ7ICsraSkgewotICAgICAgICBpZiAo
IWlzVmFsaWRYTUxNSU1FVHlwZUNoYXIobWltZVR5cGVbaV0pICYmIGkgIT0gc2xhc2hQb3NpdGlv
bikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotYm9vbCBET01JbXBsZW1lbnRhdGlvbjo6aXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKLXsKLSAgICAvLyBGSVhNRTogQ2FuIHdlIG1vdmUgdGhpcyBsb2dpYyB0byBN
SU1FVHlwZVJlZ2lzdHJ5IGFuZCBoYXZlIHRoaXMganVzdCBiZSBhIHNpbmdsZSBmdW5jdGlvbiBj
YWxsPwotCi0gICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlw
dE1JTUVUeXBlKG1pbWVUeXBlKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL2pzb24iKSAvLyBSZW5kZXIgSlNPTiBhcyB0ZXh0
L3BsYWluLgotICAgICAgICB8fCAobWltZVR5cGUuc3RhcnRzV2l0aCgidGV4dC8iLCBmYWxzZSkK
LSAgICAgICAgICAgICYmICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwg
InRleHQvaHRtbCIpCi0gICAgICAgICAgICAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobWltZVR5cGUsICJ0ZXh0L3htbCIpCi0gICAgICAgICAgICAmJiAhZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L3hzbCIpKTsKLX0KLQogUmVmPEhUTUxEb2N1
bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcm
IHRpdGxlKQogewogICAgIGF1dG8gZG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxs
cHRyLCBVUkwoKSk7CkBAIC0zMjEsNiArMjc4LDkgQEAgUmVmPEhUTUxEb2N1bWVudD4gRE9NSW1w
bGVtZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKQogCiBS
ZWY8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJp
bmcmIHR5cGUsIEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiB7CisgICAgLy8gRklYTUU6
IENvbmZ1c2luZyB0byBoYXZlIHRoaXMgaGVyZSB3aXRoIHB1YmxpYyBET00gQVBJcyBmb3IgY3Jl
YXRpbmcgZG9jdW1lbnRzLiBUaGlzIGlzIGRpZmZlcmVudCBlbm91Z2ggdGhhdCBpdCBzaG91bGQg
cGVyaGFwcyBiZSBtb3ZlZC4KKyAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBpcyBkb2luZyBj
YXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb25zIG9uIE1JTUUgdHlwZXMuIFNob3VsZCBkbyBlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSBpbnN0ZWFkLgorCiAgICAgLy8gUGx1Z2lucyBjYW5u
b3QgdGFrZSBIVE1MIGFuZCBYSFRNTCBmcm9tIHVzLCBhbmQgd2UgZG9uJ3QgZXZlbiBuZWVkIHRv
IGluaXRpYWxpemUgdGhlIHBsdWdpbiBkYXRhYmFzZSBmb3IgdGhvc2UuCiAgICAgaWYgKHR5cGUg
PT0gInRleHQvaHRtbCIpCiAgICAgICAgIHJldHVybiBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShmcmFt
ZSwgdXJsKTsKQEAgLTMzOCw3ICsyOTgsNyBAQCBSZWY8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0
aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIHR5cGUsIEZyYW1lKiBmcmFtZQogICAg
ICAgICByZXR1cm4gSW1hZ2VEb2N1bWVudDo6Y3JlYXRlKCpmcmFtZSwgdXJsKTsKIAogICAgIFBs
dWdpbkRhdGEqIHBsdWdpbkRhdGEgPSBudWxscHRyOwotICAgIFBsdWdpbkRhdGE6OkFsbG93ZWRQ
bHVnaW5UeXBlcyBhbGxvd2VkUGx1Z2luVHlwZXMgPSBQbHVnaW5EYXRhOjpPbmx5QXBwbGljYXRp
b25QbHVnaW5zOworICAgIGF1dG8gYWxsb3dlZFBsdWdpblR5cGVzID0gUGx1Z2luRGF0YTo6T25s
eUFwcGxpY2F0aW9uUGx1Z2luczsKICAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPnBhZ2UoKSkgewog
ICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLnN1YmZyYW1lTG9hZGVyKCkuYWxsb3dQbHVnaW5z
KCkpCiAgICAgICAgICAgICBhbGxvd2VkUGx1Z2luVHlwZXMgPSBQbHVnaW5EYXRhOjpBbGxQbHVn
aW5zOwpAQCAtMzY5LDEzICszMjksMTMgQEAgUmVmPERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlv
bjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0eXBlLCBGcmFtZSogZnJhbWUKICAgICAv
LyBhbmQgYWxzbyBzZXJ2ZXMgYXMgYW4gb3B0aW1pemF0aW9uIHRvIHByZXZlbnQgbG9hZGluZyB0
aGUgcGx1Zy1pbiBkYXRhYmFzZSBpbiB0aGUgY29tbW9uIGNhc2UuCiAgICAgaWYgKHR5cGUgIT0g
InRleHQvcGxhaW4iICYmICgocGx1Z2luRGF0YSAmJiBwbHVnaW5EYXRhLT5zdXBwb3J0c1dlYlZp
c2libGVNaW1lVHlwZSh0eXBlLCBhbGxvd2VkUGx1Z2luVHlwZXMpKSB8fCAoZnJhbWUgJiYgZnJh
bWUtPmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEFsd2F5c1VzZVBsdWdpbkRvY3VtZW50KHR5cGUp
KSkpCiAgICAgICAgIHJldHVybiBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwot
ICAgIGlmIChpc1RleHRNSU1FVHlwZSh0eXBlKSkKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6
aXNUZXh0TUlNRVR5cGUodHlwZSkpCiAgICAgICAgIHJldHVybiBUZXh0RG9jdW1lbnQ6OmNyZWF0
ZShmcmFtZSwgdXJsKTsKIAogICAgIGlmICh0eXBlID09ICJpbWFnZS9zdmcreG1sIikKICAgICAg
ICAgcmV0dXJuIFNWR0RvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CiAKLSAgICBpZiAoaXNY
TUxNSU1FVHlwZSh0eXBlKSkKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlw
ZSh0eXBlKSkKICAgICAgICAgcmV0dXJuIFhNTERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7
CiAKICAgICByZXR1cm4gSFRNTERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCmluZGV4IDg4ODBjNGM1MGMxMjk2YjZhOTJjY2I4
NTBhYTdkMGU1YzdlZmM1OTQuLmQ4NmFkZjA3YmYxYTIyMGEyZDEyODZkNGZjMTVhM2IzNzlhY2Fi
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCkBAIC0yLDcgKzIsNyBA
QAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAg
ICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAg
ICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMs
NiArMjMsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAj
aW5jbHVkZSAiWE1MRG9jdW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzYsMjUg
KzM3LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlcmVmKCkgeyBtX2RvY3VtZW50LmRlcmVmKCk7
IH0KICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50OyB9CiAKLSAg
ICAvLyBET00gbWV0aG9kcyAmIGF0dHJpYnV0ZXMgZm9yIERPTUltcGxlbWVudGF0aW9uCi0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaGFzRmVhdHVyZShjb25zdCBTdHJpbmcmIGZlYXR1
cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPERv
Y3VtZW50VHlwZT4gY3JlYXRlRG9jdW1lbnRUeXBlKGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFt
ZSwgY29uc3QgU3RyaW5nJiBwdWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgRXhjZXB0
aW9uQ29kZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxYTUxEb2N1bWVudD4gY3JlYXRl
RG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlm
aWVkTmFtZSwgRG9jdW1lbnRUeXBlKiwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgRE9NSW1wbGVt
ZW50YXRpb24qIGdldEludGVyZmFjZShjb25zdCBTdHJpbmcmIGZlYXR1cmUpOwotCi0gICAgLy8g
RnJvbSB0aGUgRE9NSW1wbGVtZW50YXRpb25DU1MgaW50ZXJmYWNlCi0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGVDU1NTdHlsZVNoZWV0KGNvbnN0IFN0
cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgbWVkaWEsIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAg
IC8vIEZyb20gdGhlIEhUTUxET01JbXBsZW1lbnRhdGlvbiBpbnRlcmZhY2UKKyAgICBXRUJDT1JF
X0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8RG9jdW1lbnRUeXBlPj4gY3JlYXRlRG9jdW1lbnRUeXBl
KGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgU3RyaW5nJiBwdWJsaWNJZCwgY29u
c3QgU3RyaW5nJiBzeXN0ZW1JZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVm
PFhNTERvY3VtZW50Pj4gY3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkks
IGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgRG9jdW1lbnRUeXBlKik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgUmVmPEhUTUxEb2N1bWVudD4gY3JlYXRlSFRNTERvY3VtZW50KGNvbnN0IFN0cmlu
ZyYgdGl0bGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGhhc0ZlYXR1cmUoY29u
c3QgU3RyaW5nJiBmZWF0dXJlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlQ1NTU3R5bGVTaGVldChjb25z
dCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIG1lZGlhKTsKIAotICAgIC8vIE90aGVyIG1l
dGhvZHMgKG5vdCBwYXJ0IG9mIERPTSkKICAgICBzdGF0aWMgUmVmPERvY3VtZW50PiBjcmVhdGVE
b2N1bWVudChjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBGcmFtZSosIGNvbnN0IFVSTCYpOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNYTUxNSU1FVHlwZShjb25zdCBTdHJpbmcm
IE1JTUVUeXBlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1RleHRNSU1FVHlw
ZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKTsKLQogcHJpdmF0ZToKICAgICBEb2N1bWVudCYgbV9k
b2N1bWVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50
YXRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbAppbmRl
eCAzMzAwNWRhMTAwODRiYjM4MjczNzJmOTNiYjIwOGFlZGYyMzllNmQxLi42NGM4MzY1NjE0OTgx
ZTU5ZmFlYzlhMDAxMTk3Yjk2YmViNTM4ZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRE9NSW1wbGVtZW50YXRpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBs
ZW1lbnRhdGlvbi5pZGwKQEAgLTIzLDIxICsyMywyMSBAQAogICAgIEdlbmVyYXRlSXNSZWFjaGFi
bGU9SW1wbERvY3VtZW50LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVy
ZmFjZSBET01JbXBsZW1lbnRhdGlvbiB7Ci0gICAgLy8gRklYTUU6IFVzaW5nICJ1bmRlZmluZWQi
IGFzIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlIGlzIHdyb25nLgotICAgIGJvb2xlYW4gaGFzRmVh
dHVyZShvcHRpb25hbCBET01TdHJpbmcgZmVhdHVyZSA9ICJ1bmRlZmluZWQiLCBbVHJlYXROdWxs
QXM9RW1wdHlTdHJpbmddIG9wdGlvbmFsIERPTVN0cmluZyB2ZXJzaW9uID0gInVuZGVmaW5lZCIp
OwotCi0gICAgW1JhaXNlc0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBEb2N1bWVudFR5cGUgY3JlYXRl
RG9jdW1lbnRUeXBlKERPTVN0cmluZyBxdWFsaWZpZWROYW1lLCBET01TdHJpbmcgcHVibGljSWQs
IERPTVN0cmluZyBzeXN0ZW1JZCk7Ci0KLSAgICBbTmV3T2JqZWN0LCBSYWlzZXNFeGNlcHRpb25d
CisgICAgW05ld09iamVjdF0gRG9jdW1lbnRUeXBlIGNyZWF0ZURvY3VtZW50VHlwZShET01TdHJp
bmcgcXVhbGlmaWVkTmFtZSwgRE9NU3RyaW5nIHB1YmxpY0lkLCBET01TdHJpbmcgc3lzdGVtSWQp
OworICAgIC8vIEZJWE1FOiBTaG91bGQgaGFuZGxlIHRoaXMgTEFOR1VBR0VfR09CSkVDVCBzcGVj
aWFsIGNhc2UgaW4gYSBzaW1wbGVyIHdheSBvciBnZXQgcmlkIG9mIGl0LgorICAgIFtOZXdPYmpl
Y3RdCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9HT0JKRUNUKSAmJiBMQU5HVUFHRV9HT0JKRUNUCiAg
ICAgICAgIERvY3VtZW50CiAjZWxzZQogICAgICAgICBYTUxEb2N1bWVudAogI2VuZGlmCi0gICAg
Y3JlYXRlRG9jdW1lbnQoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIFtUcmVhdE51bGxBcz1FbXB0
eVN0cmluZ10gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIG9wdGlvbmFsIERvY3VtZW50VHlwZT8g
ZG9jdHlwZSA9IG51bGwpOworICAgICAgICBjcmVhdGVEb2N1bWVudChET01TdHJpbmc/IG5hbWVz
cGFjZVVSSSwgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgcXVhbGlmaWVkTmFt
ZSwgb3B0aW9uYWwgRG9jdW1lbnRUeXBlPyBkb2N0eXBlID0gbnVsbCk7CisgICAgW05ld09iamVj
dF0gSFRNTERvY3VtZW50IGNyZWF0ZUhUTUxEb2N1bWVudChvcHRpb25hbCBET01TdHJpbmcgdGl0
bGUpOwogCisgICAgLy8gRklYTUU6IExhdGVzdCBET00gc3BlY2lmaWNhdGlvbiBzYXlzIHRoaXMg
c2hvdWxkIGlnbm9yZSBhbGwgYXJndW1lbnRzIGFuZCBhbHdheXMgcmV0dXJuIHRydWUuCiAgICAg
Ly8gRklYTUU6IFVzaW5nICJ1bmRlZmluZWQiIGFzIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlIGlz
IHdyb25nLgotICAgIFtSYWlzZXNFeGNlcHRpb25dIENTU1N0eWxlU2hlZXQgY3JlYXRlQ1NTU3R5
bGVTaGVldChvcHRpb25hbCBET01TdHJpbmcgdGl0bGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwg
RE9NU3RyaW5nIG1lZGlhID0gInVuZGVmaW5lZCIpOworICAgIGJvb2xlYW4gaGFzRmVhdHVyZShv
cHRpb25hbCBET01TdHJpbmcgZmVhdHVyZSA9ICJ1bmRlZmluZWQiLCBbVHJlYXROdWxsQXM9RW1w
dHlTdHJpbmddIG9wdGlvbmFsIERPTVN0cmluZyB2ZXJzaW9uID0gInVuZGVmaW5lZCIpOwogCi0g
ICAgW05ld09iamVjdF0gSFRNTERvY3VtZW50IGNyZWF0ZUhUTUxEb2N1bWVudChvcHRpb25hbCBE
T01TdHJpbmcgdGl0bGUpOworICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBkZWZh
dWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KKyAgICBDU1NTdHlsZVNoZWV0IGNyZWF0ZUNT
U1N0eWxlU2hlZXQob3B0aW9uYWwgRE9NU3RyaW5nIHRpdGxlID0gInVuZGVmaW5lZCIsIG9wdGlv
bmFsIERPTVN0cmluZyBtZWRpYSA9ICJ1bmRlZmluZWQiKTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCA0ZDAzMDhkN2EzNzc4ZmQzYTRkODQyNDVjODBlZjZjZTNmOGQ2NjViLi45NTcw
ODc5MDhmYTI3OTY4OGY3Mzk0ZDVmMmExYjMxM2YyNDRiMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTEzNzQsMTEgKzEzNzQsNiBAQCB2b2lkIERvY3VtZW50OjpzZXRDb250ZW50TGFu
Z3VhZ2UoY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKIAogdm9pZCBEb2N1bWVudDo6c2V0WE1MVmVy
c2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlm
ICghaW1wbGVtZW50YXRpb24oKS5oYXNGZWF0dXJlKCJYTUwiLCBTdHJpbmcoKSkpIHsKLSAgICAg
ICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAg
IGlmICghWE1MRG9jdW1lbnRQYXJzZXI6OnN1cHBvcnRzWE1MVmVyc2lvbih2ZXJzaW9uKSkgewog
ICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm47CkBAIC0xMzg3
LDEzICsxMzgyLDggQEAgdm9pZCBEb2N1bWVudDo6c2V0WE1MVmVyc2lvbihjb25zdCBTdHJpbmcm
IHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIG1feG1sVmVyc2lvbiA9IHZlcnNpb247
CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldFhNTFN0YW5kYWxvbmUoYm9vbCBzdGFuZGFsb25lLCBF
eGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRG9jdW1lbnQ6OnNldFhNTFN0YW5kYWxvbmUoYm9vbCBz
dGFuZGFsb25lLCBFeGNlcHRpb25Db2RlJikKIHsKLSAgICBpZiAoIWltcGxlbWVudGF0aW9uKCku
aGFzRmVhdHVyZSgiWE1MIiwgU3RyaW5nKCkpKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRF
RF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBtX3htbFN0YW5kYWxvbmUgPSBz
dGFuZGFsb25lID8gU3RhbmRhbG9uZSA6IE5vdFN0YW5kYWxvbmU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNl
cHRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xYWNiZDVmMmZkN2VlYWU5NmQyNTNlY2I4YTNmNDg0M2VlOWFj
NDA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbi5oCkBA
IC0wLDAgKzEsNTMgQEAKKy8qCisKK0NvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCithcmUgbWV0OgorMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCitESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCitBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKK1NPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCit1c2luZyBFeGNlcHRpb25Db2RlID0gaW50OworCitjbGFzcyBFeGNlcHRpb24g
eworcHVibGljOgorICAgIGV4cGxpY2l0IEV4Y2VwdGlvbihFeGNlcHRpb25Db2RlKTsKKworICAg
IFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbkNvZGUgY29kZSgpIGNvbnN0OworCitwcml2YXRlOgor
ICAgIEV4Y2VwdGlvbkNvZGUgbV9jb2RlOworfTsKKworaW5saW5lIEV4Y2VwdGlvbjo6RXhjZXB0
aW9uKEV4Y2VwdGlvbkNvZGUgY29kZSkKKyAgICA6IG1fY29kZShjb2RlKQoreworfQorCitpbmxp
bmUgRXhjZXB0aW9uQ29kZSBFeGNlcHRpb246OmNvZGUoKSBjb25zdAoreworICAgIHJldHVybiBt
X2NvZGU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25P
ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUzOGRk
YmFmOGExYzFiMjBkN2IyMzhhNzBiMWMzY2FkMThkNjYzNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisKK0Nv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCithcmUgbWV0OgorMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKK1RISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQorRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCitESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCitBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKK1NPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgPHd0
Zi9WYXJpYW50Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUg
UmV0dXJuVHlwZT4gY2xhc3MgRXhjZXB0aW9uT3IgeworcHVibGljOgorICAgIEV4Y2VwdGlvbk9y
KEV4Y2VwdGlvbiYmKTsKKyAgICBFeGNlcHRpb25PcihSZXR1cm5UeXBlJiYpOworCisgICAgYm9v
bCBoYXNFeGNlcHRpb24oKSBjb25zdDsKKyAgICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNvZGUo
KSBjb25zdDsKKyAgICBSZXR1cm5UeXBlJiYgcmV0dXJuVmFsdWUoKTsKKworcHJpdmF0ZToKKyAg
ICBzdGQ6OmV4cGVyaW1lbnRhbDo6dmFyaWFudDxFeGNlcHRpb24sIFJldHVyblR5cGU+IG1fdmFs
dWU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiBpbmxpbmUgRXhjZXB0aW9u
T3I8UmV0dXJuVHlwZT46OkV4Y2VwdGlvbk9yKEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKKyAgICA6
IG1fdmFsdWUoV1RGTW92ZShleGNlcHRpb24pKQoreworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBS
ZXR1cm5UeXBlPiBpbmxpbmUgRXhjZXB0aW9uT3I8UmV0dXJuVHlwZT46OkV4Y2VwdGlvbk9yKFJl
dHVyblR5cGUmJiByZXR1cm5WYWx1ZSkKKyAgICA6IG1fdmFsdWUoV1RGTW92ZShyZXR1cm5WYWx1
ZSkpCit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGU+IGlubGluZSBib29sIEV4
Y2VwdGlvbk9yPFJldHVyblR5cGU+OjpoYXNFeGNlcHRpb24oKSBjb25zdAoreworICAgIHJldHVy
biBzdGQ6OmV4cGVyaW1lbnRhbDo6aG9sZHNfYWx0ZXJuYXRpdmU8RXhjZXB0aW9uPihtX3ZhbHVl
KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlwZT4gaW5saW5lIEV4Y2VwdGlvbkNv
ZGUgRXhjZXB0aW9uT3I8UmV0dXJuVHlwZT46OmV4Y2VwdGlvbkNvZGUoKSBjb25zdAoreworICAg
IHJldHVybiBzdGQ6OmV4cGVyaW1lbnRhbDo6Z2V0PEV4Y2VwdGlvbj4obV92YWx1ZSkuY29kZSgp
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiBpbmxpbmUgUmV0dXJuVHlwZSYm
IEV4Y2VwdGlvbk9yPFJldHVyblR5cGU+OjpyZXR1cm5WYWx1ZSgpCit7CisgICAgcmV0dXJuIHN0
ZDo6ZXhwZXJpbWVudGFsOjpnZXQ8UmV0dXJuVHlwZT4oV1RGTW92ZShtX3ZhbHVlKSk7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwCmluZGV4IDNi
NTZlNTVmMGVhYjM1NjExMmE5OWFjZmY5MDEzYjNhZjNlMDlhYWYuLjU4MWFhMzMzZWMwYjdiYzRk
OGZjOWRjNmNiZTI5ZGJjMmZkODlhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRlbXBsYXRlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVt
cGxhdGVFbGVtZW50LmNwcApAQCAtMjksMTAgKzI5LDggQEAKICAqLwogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCi0KICNpbmNsdWRlICJIVE1MVGVtcGxhdGVFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJE
T01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNs
dWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZy
YWdtZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwCmluZGV4IDczYjQ5OTkzY2IxMjk3ZWIwY2I5MzM0ODEwMTY3ZjgzMzc2MTEyMDUuLmY4
ZTY2NzhmMzI3MGJkODUzNmYwZjAzZmY4OGY1Yjg4YmMyMmE3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC00MCw3ICs0MCw2IEBA
CiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVk
ZSAiQ29va2llSmFyLmgiCi0jaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJET01QYXRjaFN1cHBvcnQuaCIKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgpAQCAtNTksNiArNTgsNyBAQAogI2luY2x1ZGUgIkluc3BlY3Rvck92
ZXJsYXkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCiAjaW5jbHVkZSAi
SW5zdHJ1bWVudGluZ0FnZW50cy5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNp
bmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgUmVmUHRyPFRleHRSZXNvdXJjZURl
Y29kZXI+IGNyZWF0ZVhIUlRleHREZWNvZGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsCiAgICAg
UmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXI7CiAgICAgaWYgKCF0ZXh0RW5jb2Rp
bmdOYW1lLmlzRW1wdHkoKSkKICAgICAgICAgZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6
OmNyZWF0ZSgidGV4dC9wbGFpbiIsIHRleHRFbmNvZGluZ05hbWUpOwotICAgIGVsc2UgaWYgKERP
TUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKG1pbWVUeXBlKSkgeworICAgIGVsc2UgaWYg
KE1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5cGUobWltZVR5cGUpKSB7CiAgICAgICAgIGRl
Y29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3htbCIpOwog
ICAgICAgICBkZWNvZGVyLT51c2VMZW5pZW50WE1MRGVjb2RpbmcoKTsKICAgICB9IGVsc2UgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC9odG1sIikpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApp
bmRleCA3YmExODA1MDBhYmVmNDhmOGRiMDM5Mzk1NTNiYzlkMjBhMmUxMzJkLi45ZmYyOGUxZGVj
MzVkYWZmYWU2YzQ2MmUyZTI5NGVkNzljMjAwNTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTMwLDI0ICszMCwxOCBAQAog
I2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZXNEYXRhLmgiCiAKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZS5oIgotI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCisjaW5jbHVkZSAiTUlNRVR5
cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAKLW5hbWVz
cGFjZSB7Ci0vLyAxMDBNQgotc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtUmVzb3VyY2VzQ29u
dGVudFNpemUgPSAxMDAgKiAxMDAwICogMTAwMDsKLQotLy8gMTBNQgotc3RhdGljIGNvbnN0IHNp
emVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDEwICogMTAwMCAqIDEwMDA7
Ci19Ci0KIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotLy8gUmVzb3VyY2VEYXRhCitzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1SZXNvdXJjZXND
b250ZW50U2l6ZSA9IDEwMCAqIDEwMDAgKiAxMDAwOyAvLyAxMDBNQgorc3RhdGljIGNvbnN0IHNp
emVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDEwICogMTAwMCAqIDEwMDA7
IC8vIDEwTUIKKwogTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VE
YXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxvYWRlcklkKQogICAg
IDogbV9yZXF1ZXN0SWQocmVxdWVzdElkKQogICAgICwgbV9sb2FkZXJJZChsb2FkZXJJZCkKQEAg
LTExNyw3ICsxMTEsNiBAQCBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiAgICAgcmV0dXJuIGNvbnRlbnRTaXplSW5CeXRlcyht
X2NvbnRlbnQpIC0gZGF0YUxlbmd0aDsKIH0KIAotLy8gTmV0d29ya1Jlc291cmNlc0RhdGEKIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpOZXR3b3JrUmVzb3VyY2VzRGF0YSgpCiAgICAgOiBtX2NvbnRl
bnRTaXplKDApCiAgICAgLCBtX21heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZShtYXhpbXVtUmVz
b3VyY2VzQ29udGVudFNpemUpCkBAIC0xNDEsNyArMTM0LDcgQEAgc3RhdGljIFJlZlB0cjxUZXh0
UmVzb3VyY2VEZWNvZGVyPiBjcmVhdGVPdGhlclJlc291cmNlVGV4dERlY29kZXIoY29uc3QgU3Ry
aW5nJgogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyOwogICAgIGlmICgh
dGV4dEVuY29kaW5nTmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIGRlY29kZXIgPSBUZXh0UmVzb3Vy
Y2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCB0ZXh0RW5jb2RpbmdOYW1lKTsKLSAgICBl
bHNlIGlmIChET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlwZShtaW1lVHlwZSkpIHsKKyAg
ICBlbHNlIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1hNTE1JTUVUeXBlKG1pbWVUeXBlKSkgewog
ICAgICAgICBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlv
bi94bWwiKTsKICAgICAgICAgZGVjb2Rlci0+dXNlTGVuaWVudFhNTERlY29kaW5nKCk7CiAgICAg
fSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQv
aHRtbCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMWQ1ODgxNDdi
Njc1ZTc0Yjk1N2MwYzI0ZmFhMGU1MjY1YmI3OTczMC4uNTAxZjYzNTJjZjNkODRlMzNkNTQyNzk0
NTIwNDE2YzIxNWU1MWQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBA
IC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29u
dGVudEZpbHRlci5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgotI2luY2x1
ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVk
ZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAppbmRl
eCA5NWQzNmUzMTVhMDViODViNzUyYWE0NDJjY2ZhNWIxNDBkYzZhZjc2Li5mZTk0YjdmODE4NzQ2
ZTNkMmU3YWIzMGI0NjdmYTA5ZTEzYjEyNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRSZXNvdXJjZURlY29kZXIuY3BwCkBAIC0yMyw5ICsyMyw5IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogCi0jaW5jbHVkZSAiRE9N
SW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJIVE1MTWV0YUNoYXJzZXRQYXJzZXIuaCIKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5j
bHVkZSAiVGV4dENvZGVjLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAi
VGV4dEVuY29kaW5nRGV0ZWN0b3IuaCIKQEAgLTMwNiw3ICszMDYsNyBAQCBUZXh0UmVzb3VyY2VE
ZWNvZGVyOjpDb250ZW50VHlwZSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpkZXRlcm1pbmVDb250ZW50
VHlwZShjb25zdAogICAgICAgICByZXR1cm4gQ1NTOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvaHRtbCIpKQogICAgICAgICByZXR1cm4gSFRN
TDsKLSAgICBpZiAoRE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlNRVR5cGUobWltZVR5cGUpKQor
ICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1hNTE1JTUVUeXBlKG1pbWVUeXBlKSkKICAgICAg
ICAgcmV0dXJuIFhNTDsKICAgICByZXR1cm4gUGxhaW5UZXh0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRleCAzYTM0Mzk2NzU3YjY1NjEyMjNj
NmUyMmRiNzFlZDAxOWEwNTE1MjFjLi5hZGQyOGZmYzYyOWVmYzNkMTk2YzJkZjZhZTQ2ZjEzMzg3
NmYyN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDgsIDIwMDkg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0y
MDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93
d3cudG9yY2htb2JpbGUuY29tLykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI5LDIwICsyOSwyMSBA
QAogCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgot
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiAjaWYgVVNFKENHKQogI2lu
Y2x1ZGUgIkltYWdlU291cmNlQ0cuaCIKLSNpZiAhUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNlbmRpZgorCisjaWYgVVNFKENHKSAmJiAhUExBVEZPUk0oSU9TKQog
I2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgotI2Vs
c2UKLSNpbmNsdWRlIDxJbWFnZUlPL0NHSW1hZ2VEZXN0aW5hdGlvbi5oPgogI2VuZGlmCi0jaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgPElt
YWdlSU8vQ0dJbWFnZURlc3RpbmF0aW9uLmg+CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVJD
SElWRSkgfHwgRU5BQkxFKE1IVE1MKQpAQCAtNTQyLDYgKzU0Myw0NyBAQCBib29sIE1JTUVUeXBl
UmVnaXN0cnk6OmlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKICAgICByZXR1cm4gdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzLT5jb250YWlucyhtaW1lVHlw
ZSk7CiB9CiAKK2Jvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNUZXh0TUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKK3sKKyAgICByZXR1cm4gaXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5
cGUobWltZVR5cGUpCisgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1p
bWVUeXBlLCAiYXBwbGljYXRpb24vanNvbiIpIC8vIFJlbmRlciBKU09OIGFzIHRleHQvcGxhaW4u
CisgICAgICAgIHx8IChtaW1lVHlwZS5zdGFydHNXaXRoKCJ0ZXh0LyIsIGZhbHNlKQorICAgICAg
ICAgICAgJiYgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC9o
dG1sIikKKyAgICAgICAgICAgICYmICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1l
VHlwZSwgInRleHQveG1sIikKKyAgICAgICAgICAgICYmICFlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShtaW1lVHlwZSwgInRleHQveHNsIikpOworfQorCisKK3N0YXRpYyBpbmxpbmUgYm9v
bCBpc1ZhbGlkWE1MTUlNRVR5cGVDaGFyKFVDaGFyIGMpCit7CisgICAgLy8gVmFsaWQgY2hhcmFj
dGVycyBwZXIgUkZDcyAzMDIzIGFuZCAyMDQ1OiAwLTlhLXpBLVpfLSt+ISRee318LiUnYCMmKgor
ICAgIHJldHVybiBpc0FTQ0lJQWxwaGFudW1lcmljKGMpIHx8IGMgPT0gJyEnIHx8IGMgPT0gJyMn
IHx8IGMgPT0gJyQnIHx8IGMgPT0gJyUnIHx8IGMgPT0gJyYnIHx8IGMgPT0gJ1wnJyB8fCBjID09
ICcqJyB8fCBjID09ICcrJworICAgICAgICB8fCBjID09ICctJyB8fCBjID09ICcuJyB8fCBjID09
ICdeJyB8fCBjID09ICdfJyB8fCBjID09ICdgJyB8fCBjID09ICd7JyB8fCBjID09ICd8JyB8fCBj
ID09ICd9JyB8fCBjID09ICd+JzsKK30KKworYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1hNTE1J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC94bWwiKSB8fCBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL3htbCIpIHx8IGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC94c2wiKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBpZiAoIW1pbWVUeXBlLmVuZHNXaXRoKCIreG1sIiwgZmFsc2UpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzaXplX3Qgc2xhc2hQb3NpdGlvbiA9IG1pbWVUeXBl
LmZpbmQoJy8nKTsKKyAgICAvLyBUYWtlIGludG8gYWNjb3VudCB0aGUgJyt4bWwnIGVuZGluZyBv
ZiBtaW1lVHlwZS4KKyAgICBpZiAoc2xhc2hQb3NpdGlvbiA9PSBub3RGb3VuZCB8fCAhc2xhc2hQ
b3NpdGlvbiB8fCBzbGFzaFBvc2l0aW9uID09IG1pbWVUeXBlLmxlbmd0aCgpIC0gNSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gQWdhaW4sIG1pbWVUeXBlIGVuZHMgd2l0aCAnK3ht
bCcsIG5vIG5lZWQgdG8gY2hlY2sgdGhlIHZhbGlkaXR5IG9mIHRoYXQgc3Vic3RyaW5nLgorICAg
IHNpemVfdCBtaW1lTGVuZ3RoID0gbWltZVR5cGUubGVuZ3RoKCk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtaW1lTGVuZ3RoIC0gNDsgKytpKSB7CisgICAgICAgIGlmICghaXNWYWxpZFhN
TE1JTUVUeXBlQ2hhcihtaW1lVHlwZVtpXSkgJiYgaSAhPSBzbGFzaFBvc2l0aW9uKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiBib29s
IE1JTUVUeXBlUmVnaXN0cnk6OmlzSmF2YUFwcGxldE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCiB7CiAgICAgLy8gU2luY2UgdGhpcyBzZXQgaXMgdmVyeSBsaW1pdGVkIGFuZCBpcyBs
aWtlbHkgdG8gcmVtYWluIHNvIHdlIHdvbid0IGJvdGhlciB3aXRoIHRoZSBvdmVyaGVhZApAQCAt
NTc3LDcgKzYxOSw3IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6Y2FuU2hvd01JTUVUeXBlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKG1p
bWVUeXBlLnN0YXJ0c1dpdGgoInRleHQvIiwgZmFsc2UpKQotICAgICAgICByZXR1cm4gIU1JTUVU
eXBlUmVnaXN0cnk6OmlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUobWltZVR5cGUpOworICAgICAg
ICByZXR1cm4gIWlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUobWltZVR5cGUpOwogCiAgICAgcmV0
dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5
cGVSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5o
CmluZGV4IDRkYzc0ZTdjYjNmYTg1NDZmMTg4YzYyYjA3ZmUzMjBlMDhmYjlkODUuLjY3NDk1NDZk
ZWJhYjA1Mzk1ZWY4NWFiODJhZjAxYmQyMjg1MWI3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzLDcgKzEzLDcgQEAKICAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQogICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
ICAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKICAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAogICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAogICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCkBAIC0yMywxMyArMjMsMTEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
bmRlZiBNSU1FVHlwZVJlZ2lzdHJ5X2gKLSNkZWZpbmUgTUlNRVR5cGVSZWdpc3RyeV9oCisjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MCwxNiArNTgsMTIg
QEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBl
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOyAgICAKIAogICAgIC8vIENoZWNrIHRvIHNlZSBpZiBh
IG5vbi1pbWFnZSBNSU1FIHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGxvYWRlZCBhcyBhCi0g
ICAgLy8gZG9jdW1lbnQgaW4gYSBmcmFtZS4gIEluY2x1ZGVzIHN1cHBvcnRlZCBKYXZhU2NyaXB0
IE1JTUUgdHlwZXMuCisgICAgLy8gZG9jdW1lbnQgaW4gYSBmcmFtZS4gSW5jbHVkZXMgc3VwcG9y
dGVkIEphdmFTY3JpcHQgTUlNRSB0eXBlcy4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9v
bCBpc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAK
ICAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBNSU1FIHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5n
IGxvYWRlZCB1c2luZyA8dmlkZW8+IGFuZCA8YXVkaW8+LgogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBib29sIGlzU3VwcG9ydGVkTWVkaWFNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KTsKIAotICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgTUlNRSB0eXBlIGlzIG5vdCBzdWl0YWJs
ZSBmb3IgYmVpbmcgbG9hZGVkIGFzIGEgdGV4dAotICAgIC8vIGRvY3VtZW50IGluIGEgZnJhbWUu
IE9ubHkgdmFsaWQgZm9yIE1JTUUgdHlwZXMgYmVnaW5pbmcgd2l0aCAidGV4dC8iLgotICAgIHN0
YXRpYyBib29sIGlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSk7Ci0KICAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBNSU1FIHR5cGUgaXMgYSB2YWxpZCBKYXZh
IGFwcGxldCBtaW1lIHR5cGUuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNKYXZh
QXBwbGV0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKQEAgLTg2LDYgKzgwLDE1
IEBAIHB1YmxpYzoKICAgICAvLyAidGV4dC8iIGFuZCBpc1Vuc3VwcG9ydGVkVGV4dE1JTUVUeXBl
KCkgcmV0dXJucyBmYWxzZS4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBjYW5TaG93
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKKyAgICAvLyBDaGVjayB0byBzZWUg
aWYgYSBNSU1FIHR5cGUgaXMgb25lIHdoZXJlIGFuIFhNTCBkb2N1bWVudCBzaG91bGQgYmUgY3Jl
YXRlZAorICAgIC8vIHJhdGhlciB0aGFuIGFuIEhUTUwgZG9jdW1lbnQuCisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIGJvb2wgaXNYTUxNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsK
KworICAgIC8vIFVzZWQgaW4gcGFnZSBsb2FkIGFsZ29yaXRobSB0byBkZWNpZGUgd2hldGhlciB0
byBkaXNwbGF5IGFzIGEgdGV4dAorICAgIC8vIGRvY3VtZW50IGluIGEgZnJhbWUuIE5vdCBhIGdv
b2QgaWRlYSB0byB1c2UgZWxzZXdoZXJlLCBiZWNhdXNlIHRoYXQgY29kZQorICAgIC8vIG1ha2Vz
IHRoaXMgdGVzdCBpcyBhZnRlciBtYW55IG90aGVyIHRlc3RzIGFyZSBkb25lIG9uIHRoZSBNSU1F
IHR5cGUuCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNUZXh0TUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSk7CisKICAgICAvLyBGSVhNRTogV2ViS2l0IGNvZGluZyBzdHls
ZSBzYXlzIHdlIHNob3VsZCBub3QgaGF2ZSB0aGUgd29yZCAiZ2V0IiBpbiB0aGUgbmFtZXMgb2Yg
dGhlc2UgZnVuY3Rpb25zLgogICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBuaWNlIHRvIGZpbmQgYSB3
YXkgdG8gYXZvaWQgZXhwb3NpbmcgdGhlc2Ugc2V0cywgZXZlbiB3b3JzZSBleHBvc2luZyBub24t
Y29uc3QgcmVmZXJlbmNlcy4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGdldFN1cHBvcnRlZEltYWdlTUlNRVR5cGVz
KCk7CkBAIC0xMDAsMTAgKzEwMywxMyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFdlYktpdCBj
b2Rpbmcgc3R5bGUgc2F5cyB3ZSBzaG91bGQgbm90IGhhdmUgdGhlIHdvcmQgImdldCIgaW4gdGhl
IG5hbWUgb2YgdGhpcyBmdW5jdGlvbi4KICAgICAvLyBGSVhNRTogVW5jbGVhciB3aGF0IHRoZSBj
b25jZXB0IG9mIGEgbm9ybWFsaXplZCBNSU1FIHR5cGUgaXM7IGN1cnJlbnRseSBpdCdzIGEgcGxh
dGZvcm0tc3BlY2lmaWMgbm90aW9uLgogICAgIHN0YXRpYyBTdHJpbmcgZ2V0Tm9ybWFsaXplZE1J
TUVUeXBlKGNvbnN0IFN0cmluZyYpOworCitwcml2YXRlOgorICAgIC8vIENoZWNrIHRvIHNlZSBp
ZiB0aGUgTUlNRSB0eXBlIGlzIG5vdCBzdWl0YWJsZSBmb3IgYmVpbmcgbG9hZGVkIGFzIGEgdGV4
dAorICAgIC8vIGRvY3VtZW50IGluIGEgZnJhbWUuIE9ubHkgdmFsaWQgZm9yIE1JTUUgdHlwZXMg
YmVnaW5pbmcgd2l0aCAidGV4dC8iLgorICAgIHN0YXRpYyBib29sIGlzVW5zdXBwb3J0ZWRUZXh0
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiB9OwogCiBjb25zdCBTdHJpbmcmIGRl
ZmF1bHRNSU1FVHlwZSgpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBN
SU1FVHlwZVJlZ2lzdHJ5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCA3NDJmMzg1
NTgxYzkwMDZjYTQ2ZjBiMDQ3YTIwYTFhMDRkNTZkNWYyLi5jNDI3YWJkNmQ0YWY4YWQzM2RkYzY4
ZDE1ZDBjYzM3YmExMjFhODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC0yNyw3
ICsyNyw2IEBACiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiQ1NTUGFyc2Vy
LmgiCi0jaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCkBAIC0z
NjIsMTEgKzM2MSw2IEBAIHZvaWQgU1ZHRWxlbWVudDo6cmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vy
cm9yKFNWR1BhcnNpbmdFcnJvciBlcnJvciwgY29uc3QgUXVhbGlmCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKLWJvb2wgU1ZHRWxlbWVudDo6aXNTdXBwb3J0ZWQoU3RyaW5nSW1wbCog
ZmVhdHVyZSwgU3RyaW5nSW1wbCogdmVyc2lvbikgY29uc3QKLXsKLSAgICByZXR1cm4gRE9NSW1w
bGVtZW50YXRpb246Omhhc0ZlYXR1cmUoZmVhdHVyZSwgdmVyc2lvbik7Ci19Ci0KIHZvaWQgU1ZH
RWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYgcm9vdFBhcmVudCkKIHsKICAgICBi
b29sIHdhc0luRG9jdW1lbnQgPSByb290UGFyZW50LmluRG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5oCmluZGV4IGYzZmZlODFlNjJjZmE5NDY1YjI3YzAzZTA5YTBmNjY4YTA2OWFiZWMu
LjBmMWE0YzExYjNkZTBiYjQ1OGM3MjkxOTRkNDlhOTI2YTFhZmRiYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2Rl
Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yMCwxMCArMjAsOCBAQAogICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAotI2lmbmRlZiBTVkdFbGVtZW50X2gK
LSNkZWZpbmUgU1ZHRWxlbWVudF9oCisjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5TmFtZXMuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFN0cmluZy5oIgogI2luY2x1ZGUgIlNW
R0xhbmdTcGFjZS5oIgogI2luY2x1ZGUgIlNWR0xvY2F0YWJsZS5oIgpAQCAtMzEsNyArMjksNiBA
QAogI2luY2x1ZGUgIlNWR1BhcnNpbmdFcnJvci5oIgogI2luY2x1ZGUgIlNWR1Byb3BlcnR5SW5m
by5oIgogI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKLSNpbmNsdWRlICJUaW1lci5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIApAQCAtODYs
NyArODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdmdMb2FkRXZlbnRUaW1lckZpcmVkKCk7CiAg
ICAgdmlydHVhbCBUaW1lciogc3ZnTG9hZEV2ZW50VGltZXIoKTsKIAotICAgIHZpcnR1YWwgQWZm
aW5lVHJhbnNmb3JtKiBzdXBwbGVtZW50YWxUcmFuc2Zvcm0oKSB7IHJldHVybiAwOyB9CisgICAg
dmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0qIHN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpIHsgcmV0dXJu
IG51bGxwdHI7IH0KIAogICAgIHZvaWQgaW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKSB7IGVuc3Vy
ZVVuaXF1ZUVsZW1lbnREYXRhKCkuc2V0QW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkodHJ1
ZSk7IH0KICAgICB2b2lkIGludmFsaWRhdGVTVkdQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgp
CkBAIC0xODAsOCArMTc3LDYgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBjb25zdCBSZW5k
ZXJTdHlsZSogY29tcHV0ZWRTdHlsZShQc2V1ZG9JZCA9IE5PUFNFVURPKSBmaW5hbDsKIAotICAg
IHZpcnR1YWwgYm9vbCBpc1N1cHBvcnRlZChTdHJpbmdJbXBsKiBmZWF0dXJlLCBTdHJpbmdJbXBs
KiB2ZXJzaW9uKSBjb25zdDsKLQogICAgIHZpcnR1YWwgdm9pZCBjbGVhclRhcmdldCgpIHsgfQog
CiAgICAgdm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZXNJZk5lZWRlZCgpOwpAQCAtMjY0LDUgKzI1
OSwzIEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U1ZHRWxlbWVudCkK
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2luY2x1ZGUgIlNWR0VsZW1lbnRUeXBl
SGVscGVycy5oIgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmlu
ZGV4IGM4M2FiOGM5YTM0NGM2ZDk4NjY4ZDE4NTQyYmMxMjY4ZTk0NmVjN2IuLmMxNzdjNDk4YTI3
YmQ2ZjgwMDE0MjNkMzk5MzYzMDkwOTljNGI0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBv
bGljeS5oIgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIgogI2luY2x1ZGUg
IkRPTUZvcm1EYXRhLmgiCi0jaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCkBAIC0zOSw2ICszOCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cu
aCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUu
aCIKICNpbmNsdWRlICJQYXJzZWRDb250ZW50VHlwZS5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJy
b3IuaCIKQEAgLTU5LDcgKzU5LDYgQEAKICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmll
dy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUv
SlNMb2NrLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
TGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtOTM0LDcgKzkzMyw3IEBAIFN0cmluZyBYTUxIdHRwUmVx
dWVzdDo6cmVzcG9uc2VNSU1FVHlwZSgpIGNvbnN0CiAKIGJvb2wgWE1MSHR0cFJlcXVlc3Q6OnJl
c3BvbnNlSXNYTUwoKSBjb25zdAogewotICAgIHJldHVybiBET01JbXBsZW1lbnRhdGlvbjo6aXNY
TUxNSU1FVHlwZShyZXNwb25zZU1JTUVUeXBlKCkpOworICAgIHJldHVybiBNSU1FVHlwZVJlZ2lz
dHJ5Ojppc1hNTE1JTUVUeXBlKHJlc3BvbnNlTUlNRVR5cGUoKSk7CiB9CiAKIGludCBYTUxIdHRw
UmVxdWVzdDo6c3RhdHVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RP
TS9ET01ET01JbXBsZW1lbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01ET01J
bXBsZW1lbnRhdGlvbi5tbQppbmRleCBlMGEwYzA2NmJlMTQzYTc3MWQ0ZTM1ODgwNTkwMDE5ZTNl
ZDcwOGI1Li4xMDM4ODA1MjM2ZTgzY2Y4YTIwZGVjZTNiMTAyNjVjNjJlYjAzNGUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRE9NSW1wbGVtZW50YXRpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvRE9NL0RPTURPTUltcGxlbWVudGF0aW9uLm1tCkBAIC0zMCwxMDUg
KzMwLDkwIEBACiAjaW1wb3J0ICJET01Eb2N1bWVudFR5cGVJbnRlcm5hbC5oIgogI2ltcG9ydCAi
RE9NSFRNTERvY3VtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUludGVybmFsLmgiCi0jaW1w
b3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAj
aW1wb3J0IDxXZWJDb3JlL0NTU1N0eWxlU2hlZXQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NSW1w
bGVtZW50YXRpb24uaD4KLSNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRG9jdW1lbnRUeXBlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxEb2N1bWVudC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9KU01haW5UaHJlYWRFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvWE1MRG9jdW1lbnQuaD4KLSNpbXBvcnQgPHd0
Zi9HZXRQdHIuaD4KLQotI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RE9N
SW1wbGVtZW50YXRpb24qPihfaW50ZXJuYWwpCiAKIEBpbXBsZW1lbnRhdGlvbiBET01JbXBsZW1l
bnRhdGlvbgogCitzdGF0aWMgaW5saW5lIFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uJiB1bndy
YXAoRE9NSW1wbGVtZW50YXRpb24mIHdyYXBwZXIpCit7CisgICAgcmV0dXJuICpyZWludGVycHJl
dF9jYXN0PFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uKj4od3JhcHBlci5faW50ZXJuYWwpOwor
fQorCiAtICh2b2lkKWRlYWxsb2MKIHsKICAgICBpZiAoV2ViQ29yZU9iakNTY2hlZHVsZURlYWxs
b2NhdGVPbk1haW5UaHJlYWQoW0RPTUltcGxlbWVudGF0aW9uIGNsYXNzXSwgc2VsZikpCiAgICAg
ICAgIHJldHVybjsKLQogICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAgIElNUEwtPmRlcmVmKCk7
CisgICAgICAgIHVud3JhcCgqc2VsZikuZGVyZWYoKTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9
CiAKIC0gKEJPT0wpaGFzRmVhdHVyZTooTlNTdHJpbmcgKilmZWF0dXJlIHZlcnNpb246KE5TU3Ry
aW5nICopdmVyc2lvbgogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICByZXR1cm4gSU1QTC0+aGFzRmVhdHVyZShmZWF0dXJlLCB2ZXJzaW9uKTsKKyAgICBy
ZXR1cm4gdW53cmFwKCpzZWxmKS5oYXNGZWF0dXJlKGZlYXR1cmUsIHZlcnNpb24pOwogfQogCi0t
IChCT09MKWhhc0ZlYXR1cmU6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lv
bgorLSAoRE9NRG9jdW1lbnRUeXBlICopY3JlYXRlRG9jdW1lbnRUeXBlOihOU1N0cmluZyAqKXF1
YWxpZmllZE5hbWUgcHVibGljSWQ6KE5TU3RyaW5nICopcHVibGljSWQgc3lzdGVtSWQ6KE5TU3Ry
aW5nICopc3lzdGVtSWQKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgcmV0dXJuIElNUEwtPmhhc0ZlYXR1cmUoZmVhdHVyZSwgdmVyc2lvbik7CisgICAg
YXV0byByZXN1bHQgPSB1bndyYXAoKnNlbGYpLmNyZWF0ZURvY3VtZW50VHlwZShxdWFsaWZpZWRO
YW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkp
CisgICAgICAgIHJhaXNlRE9NRXhjZXB0aW9uKHJlc3VsdC5leGNlcHRpb25Db2RlKCkpOworICAg
IHJldHVybiBraXQocmVzdWx0LnJldHVyblZhbHVlKCkucHRyKCkpOwogfQogCi0tIChET01Eb2N1
bWVudFR5cGUgKiljcmVhdGVEb2N1bWVudFR5cGU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSBw
dWJsaWNJZDooTlNTdHJpbmcgKilwdWJsaWNJZCBzeXN0ZW1JZDooTlNTdHJpbmcgKilzeXN0ZW1J
ZAorLSAoRE9NRG9jdW1lbnQgKiljcmVhdGVEb2N1bWVudDooTlNTdHJpbmcgKiluYW1lc3BhY2VV
UkkgcXVhbGlmaWVkTmFtZTooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIGRvY3R5cGU6KERPTURv
Y3VtZW50VHlwZSAqKWRvY3R5cGUKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NRG9j
dW1lbnRUeXBlICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y3JlYXRlRG9jdW1lbnRU
eXBlKHF1YWxpZmllZE5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCwgZWMpKSk7Ci0gICAgcmFpc2VP
bkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIGF1dG8gcmVzdWx0ID0gdW53
cmFwKCpzZWxmKS5jcmVhdGVEb2N1bWVudChuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIGNv
cmUoZG9jdHlwZSkpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJh
aXNlRE9NRXhjZXB0aW9uKHJlc3VsdC5leGNlcHRpb25Db2RlKCkpOworICAgIHJldHVybiBraXQo
cmVzdWx0LnJldHVyblZhbHVlKCkucHRyKCkpOwogfQogCi0tIChET01Eb2N1bWVudFR5cGUgKilj
cmVhdGVEb2N1bWVudFR5cGU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5nICop
cHVibGljSWQgOihOU1N0cmluZyAqKXN5c3RlbUlkCistIChET01DU1NTdHlsZVNoZWV0ICopY3Jl
YXRlQ1NTU3R5bGVTaGVldDooTlNTdHJpbmcgKil0aXRsZSBtZWRpYTooTlNTdHJpbmcgKiltZWRp
YQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Eb2N1bWVudFR5cGUgKnJlc3VsdCA9
IGtpdChXVEY6OmdldFB0cihJTVBMLT5jcmVhdGVEb2N1bWVudFR5cGUocXVhbGlmaWVkTmFtZSwg
cHVibGljSWQsIHN5c3RlbUlkLCBlYykpKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAg
IHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGtpdCh1bndyYXAoKnNlbGYpLmNyZWF0ZUNTU1N0
eWxlU2hlZXQodGl0bGUsIG1lZGlhKS5wdHIoKSk7CiB9CiAKLS0gKERPTURvY3VtZW50ICopY3Jl
YXRlRG9jdW1lbnQ6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIHF1YWxpZmllZE5hbWU6KE5TU3Ry
aW5nICopcXVhbGlmaWVkTmFtZSBkb2N0eXBlOihET01Eb2N1bWVudFR5cGUgKilkb2N0eXBlCist
IChET01IVE1MRG9jdW1lbnQgKiljcmVhdGVIVE1MRG9jdW1lbnQ6KE5TU3RyaW5nICopdGl0bGUK
IHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NRG9jdW1lbnQgKnJlc3VsdCA9IGtpdChX
VEY6OmdldFB0cihJTVBMLT5jcmVhdGVEb2N1bWVudChuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5h
bWUsIGNvcmUoZG9jdHlwZSksIGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4ga2l0KHVud3JhcCgqc2VsZikuY3JlYXRlSFRNTERv
Y3VtZW50KHRpdGxlKS5wdHIoKSk7CiB9CiAKLS0gKERPTURvY3VtZW50ICopY3JlYXRlRG9jdW1l
bnQ6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDoo
RE9NRG9jdW1lbnRUeXBlICopZG9jdHlwZQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gRE9NSW1w
bGVtZW50YXRpb24gKERPTUltcGxlbWVudGF0aW9uRGVwcmVjYXRlZCkKKworLSAoQk9PTCloYXNG
ZWF0dXJlOihOU1N0cmluZyAqKWZlYXR1cmUgOihOU1N0cmluZyAqKXZlcnNpb24KIHsKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NRG9jdW1lbnQgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0
cihJTVBMLT5jcmVhdGVEb2N1bWVudChuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIGNvcmUo
ZG9jdHlwZSksIGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICByZXR1cm4gW3NlbGYgaGFzRmVhdHVyZTpmZWF0dXJlIHZlcnNpb246dmVyc2lv
bl07CiB9CiAKLS0gKERPTUNTU1N0eWxlU2hlZXQgKiljcmVhdGVDU1NTdHlsZVNoZWV0OihOU1N0
cmluZyAqKXRpdGxlIG1lZGlhOihOU1N0cmluZyAqKW1lZGlhCistIChET01Eb2N1bWVudFR5cGUg
KiljcmVhdGVEb2N1bWVudFR5cGU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5n
ICopcHVibGljSWQgOihOU1N0cmluZyAqKXN5c3RlbUlkCiB7Ci0gICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIERPTUNTU1N0eWxlU2hlZXQgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5j
cmVhdGVDU1NTdHlsZVNoZWV0KHRpdGxlLCBtZWRpYSwgZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVy
cm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBbc2VsZiBjcmVhdGVEb2N1
bWVudFR5cGU6cXVhbGlmaWVkTmFtZSBwdWJsaWNJZDpwdWJsaWNJZCBzeXN0ZW1JZDpzeXN0ZW1J
ZF07CiB9CiAKLS0gKERPTUNTU1N0eWxlU2hlZXQgKiljcmVhdGVDU1NTdHlsZVNoZWV0OihOU1N0
cmluZyAqKXRpdGxlIDooTlNTdHJpbmcgKiltZWRpYQorLSAoRE9NRG9jdW1lbnQgKiljcmVhdGVE
b2N1bWVudDooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5h
bWUgOihET01Eb2N1bWVudFR5cGUgKilkb2N0eXBlCiB7Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIERPTUNTU1N0eWxlU2hlZXQgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5jcmVh
dGVDU1NTdHlsZVNoZWV0KHRpdGxlLCBtZWRpYSwgZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBbc2VsZiBjcmVhdGVEb2N1bWVu
dDpuYW1lc3BhY2VVUkkgcXVhbGlmaWVkTmFtZTpxdWFsaWZpZWROYW1lIGRvY3R5cGU6ZG9jdHlw
ZV07CiB9CiAKLS0gKERPTUhUTUxEb2N1bWVudCAqKWNyZWF0ZUhUTUxEb2N1bWVudDooTlNTdHJp
bmcgKil0aXRsZQorLSAoRE9NQ1NTU3R5bGVTaGVldCAqKWNyZWF0ZUNTU1N0eWxlU2hlZXQ6KE5T
U3RyaW5nICopdGl0bGUgOihOU1N0cmluZyAqKW1lZGlhCiB7Ci0gICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+
Y3JlYXRlSFRNTERvY3VtZW50KHRpdGxlKSkpOworICAgIHJldHVybiBbc2VsZiBjcmVhdGVDU1NT
dHlsZVNoZWV0OnRpdGxlIG1lZGlhOm1lZGlhXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvRE9NL0RPTURvY3VtZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvRE9N
L0RPTURvY3VtZW50Lm1tCmluZGV4IGE5YzNjZDgzYmYyMTFiNTFjYzQ4NTk5NDMwMjg0YTAwZTc5
Njg5MjguLjk0NjZiYWZkNWRkZDJlY2U2MTc5NGU3NzdmOTYwYjg0YjU2MTI2ZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9ET00vRE9NRG9jdW1lbnQubW0KQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbXBvcnQgIkRP
TUhUTUxFbGVtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUhUTUxIZWFkRWxlbWVudEludGVy
bmFsLmgiCiAjaW1wb3J0ICJET01IVE1MU2NyaXB0RWxlbWVudEludGVybmFsLmgiCi0jaW1wb3J0
IDxXZWJDb3JlL0RPTUltcGxlbWVudGF0aW9uLmg+CiAjaW1wb3J0ICJET01JbnRlcm5hbC5oIgog
I2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01Ob2RlSXRlcmF0b3JJbnRl
cm5hbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggYWNhZDhkZTNk
ZTNiOTJhMzM5OTQyOTgwNjYwODNmZjA1YmQ5YjBjMy4uYTRhZDY3ODE0YWVkN2E1ZmM5ZDU1MTY0
NTE1YTdiMzVjNjM4MjZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBA
IC02MSw3ICs2MSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NhY2hlZFJlc291cmNlTG9hZGVyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0Nocm9tZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5o
PgotI2ltcG9ydCA8V2ViQ29yZS9ET01JbXBsZW1lbnRhdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9EYXRhYmFzZU1hbmFnZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRGcmFnbWVudC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgpAQCAtODAsNiArNzksNyBAQAog
I2ltcG9ydCA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTTm9k
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9MZWdhY3lXZWJBcmNoaXZlLmg+CisjaW1wb3J0IDxXZWJD
b3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1FdmVudEZh
Y3RvcnlNYWMuaD4KQEAgLTEwMSw5ICsxMDEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9tYXJrdXAu
aD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8YmluZGluZ3Mv
U2NyaXB0VmFsdWUuaD4KKyNpbXBvcnQgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2ltcG9ydCA8
cnVudGltZS9KU0xvY2suaD4KICNpbXBvcnQgPHJ1bnRpbWUvSlNPYmplY3QuaD4KLSNpbXBvcnQg
PHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKICNp
ZiBQTEFURk9STShJT1MpCkBAIC0xMTEsNyArMTExLDYgQEAKICNpbXBvcnQgIldlYlJlc291cmNl
LmgiCiAjaW1wb3J0ICJXZWJVSUtpdERlbGVnYXRlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0RvY3Vt
ZW50Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0VkaXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0
b3JDbGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9jdXNDb250cm9sbGVyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0ZvbnQuaD4KQEAgLTk4OCw3ICs5ODcsNyBAQCAtIChCT09MKV9jYW5Qcm92aWRl
RG9jdW1lbnRTb3VyY2UKICAgICBTdHJpbmcgbWltZVR5cGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+
bG9hZGVyKCktPndyaXRlcigpLm1pbWVUeXBlKCk7CiAgICAgUGx1Z2luRGF0YSogcGx1Z2luRGF0
YSA9IGZyYW1lLT5wYWdlKCkgPyAmZnJhbWUtPnBhZ2UoKS0+cGx1Z2luRGF0YSgpIDogMDsKIAot
ICAgIGlmIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6aXNUZXh0TUlNRVR5cGUobWltZVR5
cGUpCisgICAgaWYgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzVGV4dE1JTUVUeXBlKG1p
bWVUeXBlKQogICAgICAgICB8fCBJbWFnZTo6c3VwcG9ydHNUeXBlKG1pbWVUeXBlKQogICAgICAg
ICB8fCAocGx1Z2luRGF0YSAmJiBwbHVnaW5EYXRhLT5zdXBwb3J0c1dlYlZpc2libGVNaW1lVHlw
ZShtaW1lVHlwZSwgUGx1Z2luRGF0YTo6QWxsUGx1Z2lucykgJiYgZnJhbWUtPmxvYWRlcigpLnN1
YmZyYW1lTG9hZGVyKCkuYWxsb3dQbHVnaW5zKCkpCiAgICAgICAgIHx8IChwbHVnaW5EYXRhICYm
IHBsdWdpbkRhdGEtPnN1cHBvcnRzV2ViVmlzaWJsZU1pbWVUeXBlKG1pbWVUeXBlLCBQbHVnaW5E
YXRhOjpPbmx5QXBwbGljYXRpb25QbHVnaW5zKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5jcHAKaW5kZXggMTViOGUyOGYyMzAwOTI5ZDIyMGU3MzNiZmYwMDYzMDBk
MTNhYWRiZi4uY2Q3MDY5ODU4MjY3NjcyNGRmMTA3NDk5YmM4OTMxNTc4YzNjYTAzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcApAQCAtMzIsNyArMzIsNiBA
QAogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9ET01JbXBs
ZW1lbnRhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtMTE3LDE1ICsx
MTYsMTMgQEAgYm9vbCBXZWJGcmFtZVByb3h5Ojppc0Rpc3BsYXlpbmdTdGFuZGFsb25lTWVkaWFE
b2N1bWVudCgpIGNvbnN0CiAKIGJvb2wgV2ViRnJhbWVQcm94eTo6aXNEaXNwbGF5aW5nTWFya3Vw
RG9jdW1lbnQoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIHNob3VsZCBiZSBt
b3ZlZCB0byBzb21ld2hlcmUgaW4gV2ViQ29yZS4KLSAgICByZXR1cm4gbV9NSU1FVHlwZSA9PSAi
dGV4dC9odG1sIiB8fCBtX01JTUVUeXBlID09ICJpbWFnZS9zdmcreG1sIiB8fCBtX01JTUVUeXBl
ID09ICJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiIHx8IERPTUltcGxlbWVudGF0aW9uOjppc1hN
TE1JTUVUeXBlKG1fTUlNRVR5cGUpOworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIGNh
bGwgdG8gYSBzaW5nbGUgTUlNRVR5cGVSZWdpc3RyeSBmdW5jdGlvbjsgYWRkaW5nIGEgbmV3IG9u
ZSBpZiBuZWVkZWQuCisgICAgLy8gRklYTUU6IFRoaXMgaXMgZG9pbmcgY2FzZSBzZW5zaXRpdmUg
Y29tcGFyaXNvbnMgb24gTUlNRSB0eXBlcywgc2hvdWxkIGJlIHVzaW5nIEFTQ0lJIGNhc2UgaW5z
ZW5zaXRpdmUgaW5zdGVhZC4KKyAgICByZXR1cm4gbV9NSU1FVHlwZSA9PSAidGV4dC9odG1sIiB8
fCBtX01JTUVUeXBlID09ICJpbWFnZS9zdmcreG1sIiB8fCBtX01JTUVUeXBlID09ICJhcHBsaWNh
dGlvbi94LXdlYmFyY2hpdmUiIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5cGUobV9N
SU1FVHlwZSk7CiB9CiAKIGJvb2wgV2ViRnJhbWVQcm94eTo6aXNEaXNwbGF5aW5nUERGRG9jdW1l
bnQoKSBjb25zdAogewotICAgIGlmIChtX01JTUVUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCiAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0U2Ny
aXB0TUlNRVR5cGUobV9NSU1FVHlwZSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287221</attachid>
            <date>2016-08-27 23:20:59 -0700</date>
            <delta_ts>2016-08-28 00:26:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161295-20160827231852.patch</filename>
            <type>text/plain</type>
            <size>65168</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1MDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM5ODA4MTY0ZTA2MGU2
ZmFlN2RjM2I3NzI1NGQ3YTQ5ZGExMWFkOC4uNWZmOGIxOGNiMGI2YWM5ZjE5YTk1YzNlZjUxNjU2
MzQ4MTQwMGY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDE2LTA4LTI3ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJlYW1saW5lIERPTUltcGxl
bWVudGF0aW9uLCBhbmQgbW92ZSBpdCB0byBvdXIgbmV3IERPTSBleGNlcHRpb24gc3lzdGVtCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEyOTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgbmV3IGhlYWRlcnMgdG8gcHJvamVjdC4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6dG9KUyk6IEFkZGVkIGFuIG92ZXJsb2FkIGZvciBFeGNlcHRpb25Pcjw+OyB0aGlzIGhhbmRs
ZXMgdGhlCisgICAgICAgIGV4Y2VwdGlvbiBjYXNlIGhlcmUgc28gaXQgZG9lc24ndCBuZWVkIHRv
IGJlIGhhbmRsZWQgaW4gZ2VuZXJhdGVkIGNvZGUKKyAgICAgICAgZm9yIHRoZSBiaW5kaW5nLiBJ
bXBsZW1lbnRlZCBoZXJlIHNvIHRoYXQgRXhjZXB0aW9uT3IuaCBkb2VzIG5vdCBrbm93CisgICAg
ICAgIGFib3V0IGJpbmRpbmdzLiBCdXQgc2luY2UgdGhpcyBpcyBhIHRlbXBsYXRlLCBpdCB3aWxs
IG9ubHkgY29tcGlsZSB3aGVuCisgICAgICAgIGluc3RhbnRpYXRlZCBhbmQgdGhlcmUgaXMgbm8g
bmVlZCB0byBpbmNsdWRlIEV4Y2VwdGlvbk9yLmggYW5kIGluZGlyZWN0bHkKKyAgICAgICAgdGhl
IFZhcmlhbnQuaCBoZWFkZXIgaW4gdGhpcyBoZWFkZXIuCisgICAgICAgIChXZWJDb3JlOjp0b0pT
TmV3bHlDcmVhdGVkKTogRGl0dG8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbik6
IFJlZmVyIHRvIEpTQzo6RXhjZXB0aW9uIHdpdGggZXhwbGljaXQKKyAgICAgICAgbmFtZXNwYWNl
IHRvIGF2b2lkIGFtYmlndWl0eSB3aXRoIFdlYkNvcmU6OkV4Y2VwdGlvbi4KKworICAgICAgICAq
IGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1l
bnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnRUeXBlKTogQ2hhbmdlZCB0byByZXR1cm4KKyAgICAgICAg
RXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVYTUxEb2N1bWVudCk6IEFkZGVk
LiBIZWxwZXIgdXNlZCBpbiBjcmVhdGVEb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUlt
cGxlbWVudGF0aW9uOjpnZXRJbnRlcmZhY2UpOiBEZWxldGVkLiBUaGlzIHdhcyB1bnVzZWQuCisg
ICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQpOiBDaGFu
Z2VkIHRvIHJldHVybgorICAgICAgICBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkRP
TUltcGxlbWVudGF0aW9uOjpjcmVhdGVDU1NTdHlsZVNoZWV0KTogUmVtb3ZlZCB0aGUgdW51c2Vk
CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgb3V0IGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6
aXNWYWxpZFhNTE1JTUVUeXBlQ2hhcik6IERlbGV0ZWQuIE1vdmVkIHRvIE1JTUVUeXBlUmVnaXN0
cnkuCisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlwZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmlzVGV4dE1JTUVU
eXBlKTogRGl0dG8uCisKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uaDogQ2hhbmdl
ZCBmdW5jdGlvbnMgYXMgZGVzY3JpYmVkIGFib3ZlIHRvCisgICAgICAgIHJldHVybiBFeGNlcHRp
b25PciB2YWx1ZXMuIEFsc28gcmVtb3ZlZCB1bnVzZWQgZ2V0SW50ZXJmYWNlIGZ1bmN0aW9uLAor
ICAgICAgICBhbmQgaXNYTUxNSU1FVHlwZSBhbmQgaXNUZXh0TUlNRVR5cGUsIHdoaWNoIGJvdGgg
bW92ZWQgdG8gdGhlCisgICAgICAgIE1JTUVUeXBlUmVnaXN0cnkgY2xhc3MgYWxvbmdzaWRlIGFs
bCB0aGUgb3RoZXIgc2ltaWxhciBNSU1FIHR5cGUKKyAgICAgICAgZnVuY3Rpb25zLgorCisgICAg
ICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbDogUmVvcmdhbml6ZWQgdGhpcyB0byBtYXRj
aCB0aGUgSURMIGZpbGVzCisgICAgICAgIGluIHRoZSBzcGVjaWZpY2F0aW9ucyBhIGxpdHRsZSBi
ZXR0ZXIuIEFsc28gcmVtb3ZlZCBbUmFpc2VzRXhjZXB0aW9uXQorICAgICAgICBzaW5jZSB0aGF0
IGlzIG9ubHkgbmVlZGVkIGZvciB0aGUgb2xkIGxlZ2FjeSBFeGNlcHRpb25Db2RlJiBzdHlsZS4K
KworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6c2V0WE1MVmVyc2lvbik6IFJlbW92ZWQgY2FsbCB0byB0aGUKKyAgICAgICAgRE9NSW1wbGVt
ZW50YXRpb246Omhhc0ZlYXR1cmUgZnVuY3Rpb24gc2luY2UgdGhlIHZhbHVlcyBwYXNzZWQgaW4K
KyAgICAgICAgdW5jb25kaXRpb25hbGx5IHJlc3VsdCBpbiB0aGUgcmV0dXJuIHZhbHVlICJ0cnVl
Ii4gVGhpcyBpcyBsZWZ0IG92ZXIKKyAgICAgICAgZWl0aGVyIGZyb20gc3BlY2lmaWNhdGlvbiBs
YW5ndWFnZSwgb3IgZnJvbSBhbiBhbmNpZW50IHZlcnNpb24gb2YgdGhpcworICAgICAgICBjb2Rl
IHRoYXQgd29ya2VkIGluIGEgIm5vIFhNTCBzdXBwb3J0ZWQiIG1vZGUuCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6c2V0WE1MU3RhbmRhbG9uZSk6IERpdHRvLgorCisgICAgICAgICogZG9t
L0RvY3VtZW50Lmg6IFJlbW92ZWQgdGhlIEV4Y2VwdGlvbkNvZGUmIG91dCBhcmd1bWVudCBmcm9t
IHNldFhNTFN0YW5kYWxvbmUuCisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDogUmVtb3ZlZCBb
U2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBmcm9tIHhtbFN0YW5kYWxvbmUuCisKKyAgICAgICAgKiBk
b20vRXhjZXB0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIGRvbS9FeGNlcHRpb25Pci5oOiBBZGRl
ZC4KKworICAgICAgICAqIGh0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHA6IFJlbW92ZWQgdW5u
ZWVkZWQgaW5jbHVkZSBvZiBET01JbXBsZW1lbnRhdGlvbi5oLgorCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVYSFJU
ZXh0RGVjb2Rlcik6IFVzZSBpc1hNTE1JTUVUeXBlIGluIGl0cyBuZXcgbG9jYXRpb24gaW4KKyAg
ICAgICAgTUlNRVR5cGVSZWdpc3RyeS4KKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlT3RoZXJSZXNvdXJjZVRleHRE
ZWNvZGVyKTogRGl0dG8uCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOiBSZW1v
dmVkIHVubmVlZGVkIGluY2x1ZGUgb2YgRE9NSW1wbGVtZW50YXRpb24uaC4KKworICAgICAgICAq
IGxvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRS
ZXNvdXJjZURlY29kZXI6OmRldGVybWluZUNvbnRlbnRUeXBlKTogVXNlIGlzWE1MTUlNRVR5cGUg
aW4gaXRzCisgICAgICAgIG5ldyBsb2NhdGlvbiBpbiBNSU1FVHlwZVJlZ2lzdHJ5LgorCisgICAg
ICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1RleHRNSU1FVHlwZSk6IEFkZGVkLiBNb3ZlZCBoZXJlIGZyb20K
KyAgICAgICAgRE9NSW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkWE1M
TUlNRVR5cGVDaGFyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1hNTE1JTUVUeXBlKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJl
Z2lzdHJ5Lmg6IEFkZGVkIGlzWE1MTUlNRVR5cGUgYW5kIGlzVGV4dE1JTUVUeXBlLgorICAgICAg
ICBNYWRlIGlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUgcHJpdmF0ZS4KKworICAgICAgICAqIHN2
Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmlzU3VwcG9y
dGVkKTogRGVsZXRlZC4gVGhpcyBmdW5jdGlvbiB3YXMgbmV2ZXIgY2FsbGVkLgorICAgICAgICAq
IHN2Zy9TVkdFbGVtZW50Lmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZSBjaGFuZ2UuCisKKyAgICAg
ICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OnJlc3BvbnNlSXNYTUwpOiBVc2UgaXNYTUxNSU1FVHlwZSBpbiBpdHMgbmV3CisgICAg
ICAgIGxvY2F0aW9uIGluIE1JTUVUeXBlUmVnaXN0cnkuCisKKyAgICAgICAgKiB4bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1
bWVudFBhcnNlcjo6c3RhcnREb2N1bWVudCk6IFVwZGF0ZWQgc2luY2Ugc2V0WE1MU3RhbmRhbG9u
ZQorICAgICAgICBubyBsb25nZXIgY2FuIHJhaXNlIGFuIGV4Y2VwdGlvbi4KKwogMjAxNi0wOC0y
NyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFVSTFBhcnNlciBzaG91bGQgcGFyc2UgcmVsYXRpdmUgVVJMcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4
IGIzYWE5NDIzMzg2MmEyYTkyY2U1NmU0OGUwNDgxZjM1ZTdjYmU4YWUuLjc0ZjM1MzY0MzliMTc3
M2VkMmM4NTg4YWNkODc2NzVhN2UwOTZhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
NSBAQAorMjAxNi0wOC0yNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3RyZWFtbGluZSBET01JbXBsZW1lbnRhdGlvbiwgYW5kIG1vdmUgaXQgdG8gb3VyIG5ldyBE
T00gZXhjZXB0aW9uIHN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYxMjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBET00vRE9NRE9NSW1wbGVtZW50YXRpb24ubW06CisgICAgICAgICh1bndy
YXApOiBBZGRlZC4gVXNlIHRoaXMgaW5zdGVhZCBvZiB0aGUgSU1QTCBtYWNyby4KKyAgICAgICAg
KC1bRE9NSW1wbGVtZW50YXRpb24gZGVhbGxvY10pOiBVcGRhdGVkIHRvIHVzZSB1bndyYXAuCisg
ICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGhhc0ZlYXR1cmU6dmVyc2lvbjpdKTogRGl0dG8u
CisgICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGNyZWF0ZURvY3VtZW50VHlwZTpwdWJsaWNJ
ZDpzeXN0ZW1JZDpdKTogVXBkYXRlZCB0byB3b3JrIHdpdGgKKyAgICAgICAgRXhjZXB0aW9uT3Iu
CisgICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGNyZWF0ZURvY3VtZW50OnF1YWxpZmllZE5h
bWU6ZG9jdHlwZTpdKTogRGl0dG8uCisgICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGNyZWF0
ZUNTU1N0eWxlU2hlZXQ6bWVkaWE6XSk6IFJlbW92ZWQgZXhjZXB0aW9uIGxvZ2ljIHNpbmNlCisg
ICAgICAgIHRoaXMgZnVuY3Rpb24gY2FuIG5vIGxvbmdlciByYWlzZSBhbiBleGNlcHRpb24uCisg
ICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGNyZWF0ZUhUTUxEb2N1bWVudDpdKTogVXBkYXRl
ZCB0byB1c2UgdW53cmFwLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBoYXNGZWF0dXJl
OjpdKTogQ2hhbmdlZCB0byBjYWxsIHRoZSBub24tZGVwcmVjYXRlZCB2ZXJzaW9uCisgICAgICAg
IHJhdGhlciB0aGFuIGR1cGxpY2F0aW5nIGl0cyBpbXBsZW1lbnRhdGlvbi4gQWxzbyBtb3ZlZCBp
bnRvIHRoZSBjYXRlZ29yeSBhcyBkZWZpbmVkCisgICAgICAgIGluIHRoZSBoZWFkZXIuCisgICAg
ICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGNyZWF0ZURvY3VtZW50VHlwZTo6Ol0pOiBEaXR0by4K
KyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24gY3JlYXRlRG9jdW1lbnQ6OjpdKTogRGl0dG8u
CisgICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGNyZWF0ZUNTU1N0eWxlU2hlZXQ6Ol0pOiBE
aXR0by4KKworICAgICAgICAqIERPTS9ET01Eb2N1bWVudC5tbTogUmVtb3ZlZCB1bm5lZWRlZCBp
bmNsdWRlIG9mIERPTUltcGxlbWVudGF0aW9uLmguCisgICAgICAgICgtW0RPTURvY3VtZW50IHNl
dFhtbFN0YW5kYWxvbmU6XSk6IFVwZGF0ZWQgc2luY2Ugc2V0WE1MU3RhbmRhbG9uZSBubyBsb25n
ZXIgY2FuCisgICAgICAgIHJhaXNlIGFuIGV4Y2VwdGlvbi4KKworICAgICAgICAqIFdlYlZpZXcv
V2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9jYW5Qcm92aWRlRG9jdW1lbnRTb3Vy
Y2VdKTogVXBkYXRlZCB0byB1c2UgaXNUZXh0TUlNRVR5cGUgaW4gaXRzIG5ldworICAgICAgICBs
b2NhdGlvbiBpbiBNSU1FVHlwZVJlZ2lzdHJ5IGluc3RlYWQgb2YgaW4gRE9NSW1wbGVtZW50YXRp
b24uCisKIDIwMTYtMDgtMjYgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZW1vdmUgc3VwcG9ydCBmb3IgRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCA2Y2NkNWQ1ZWNmMmVlNTA3ZDU3ZjBhNWZiMTc2NjE3M2Q5ZTI4ZDhmLi4wYWNjZDZiZjEwYWY4
OWNkMDhmYzUzZDNkNGQ3MWZmMzRjMjVlNDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTYtMDgtMjcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFN0
cmVhbWxpbmUgRE9NSW1wbGVtZW50YXRpb24sIGFuZCBtb3ZlIGl0IHRvIG91ciBuZXcgRE9NIGV4
Y2VwdGlvbiBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MTI5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZVByb3h5Ojppc0Rpc3BsYXlpbmdNYXJrdXBEb2N1bWVudCk6IFVzZSBpc1hNTE1JTUVU
eXBlIGluIGl0cworICAgICAgICBuZXcgbG9jYXRpb24gaW4gTUlNRVR5cGVSZWdpc3RyeSByYXRo
ZXIgdGhhbiBpbiBET01JbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQ
cm94eTo6aXNEaXNwbGF5aW5nUERGRG9jdW1lbnQpOiBSZW1vdmVkIHVubmVlZGVkIHJlZHVuZGFu
dAorICAgICAgICBjaGVjayBmb3IgZW1wdHkgc3RyaW5nLCBhbHJlYWR5IGRvbmUgYnkgTUlNRVR5
cGVSZWdpc3RyeS4KKwogMjAxNi0wOC0yNyAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgV1RSIG5lZWRzIGFuIGltcGxlbWVudGF0aW9uIG9mIHNldEF1dG9t
YXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTZhZDYxOGJmNmZkNGEwNDZhNjdlMjIxN2Uw
ZjNjMzM3ZTVlMWY1MS4uNjZjY2ZhMmJlNGYzOWRmYjhkOWQ5M2RiMTBjMzdhZmM5YmFkYTBhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMzI3MCw2ICszMjcwLDggQEAKIAkJOTNDNEY2RUIxMTA4RjlBNTAwOTlEMERCIC8qIEFj
Y2Vzc2liaWxpdHlTY3JvbGxiYXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzQzRGNkU5MTEwOEY5QTUwMDk5RDBEQiAvKiBBY2Nlc3NpYmlsaXR5U2Ny
b2xsYmFyLmggKi87IH07CiAJCTkzQ0NGMDI3MEFGNkM1MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9u
QWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0NDRjAyNjBBRjZDNTI5MDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzQ0NGMDYwMEFGNkNBNzYw
MDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQ0NGMDVGMEFGNkNBNzYwMDAxOEU4OSAvKiBOYXZpZ2F0
aW9uQWN0aW9uLmNwcCAqLzsgfTsKKwkJOTNEMTk2MzExRDZDQUI3NjAwRkM3RTQ3IC8qIEV4Y2Vw
dGlvbk9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0QxOTYzMDFENkNBQjc2MDBGQzdFNDcgLyogRXhjZXB0aW9uT3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5M0QxOTYzMzFENkNBQjgyMDBGQzdF
NDcgLyogRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0QxOTYzMjFENkNBQjgyMDBGQzdFNDcgLyogRXhjZXB0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNENDM3OUYxRDU3QjE1
MzAwQUI4NUVBIC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEY5MzREODMxMTg5RjFFRTAwNTA4RDVEIC8qIEpT
TWFpblRocmVhZEV4ZWNTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkzRDQzN0EwMUQ1N0IxOUEwMEFCODVFQSAvKiBDdXN0b21FbGVtZW50
UmVhY3Rpb25RdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUI1NkM5QTgxQzg5MzEyODAwQzQ1NkRGIC8qIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1
ZXVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
OTNENDM3QTExRDU3QjNGNDAwQUI4NUVBIC8qIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFERTExRjRBMThE
ODMxMUIwMDc4OTgzQiAvKiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwNDAwLDYgKzEwNDAyLDgg
QEAKIAkJOTNDQTRDQTIwOURGOTNGQTAwREY4Njc3IC8qIHN2Zy5jc3MgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gc3ZnLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNDQ0YwMjYw
QUY2QzUyOTAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTmF2aWdhdGlvbkFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5M0NDRjA1RjBBRjZDQTc2MDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXZpZ2F0aW9uQWN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNEMTk2MzAxRDZDQUI3NjAwRkM3RTQ3
IC8qIEV4Y2VwdGlvbk9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4Y2Vw
dGlvbk9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDE5NjMyMUQ2Q0FCODIw
MEZDN0U0NyAvKiBFeGNlcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RXhjZXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDlENTNCMERBMjdF
MTgwMDc3MjE2QyAvKiBSYW5nZUJvdW5kYXJ5UG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmFuZ2VCb3VuZGFyeVBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzRTIyN0RCMEFGNTg5QUQwMEQ0ODMyNCAvKiBEb2N1bWVudExvYWRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudExvYWRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRTIyN0REMEFGNTg5QUQwMEQ0ODMyNCAvKiBO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMjg5NCwxMSArMjI4OTgsMTMgQEAKIAkJCQlFMTJFREI3QTBCMzA4
QTc4MDAyNzA0QjYgLyogRXZlbnRUYXJnZXQuaCAqLywKIAkJCQk4NUFGQTc0MjBBQUYyOTg0MDBF
ODQzMDUgLyogRXZlbnRUYXJnZXQuaWRsICovLAogCQkJCUNEQ0U1Q0QwMTQ2MzNCQzkwMEQ0N0ND
QSAvKiBFdmVudFRhcmdldEZhY3RvcnkuaW4gKi8sCisJCQkJOTNEMTk2MzIxRDZDQUI4MjAwRkM3
RTQ3IC8qIEV4Y2VwdGlvbi5oICovLAogCQkJCUJDNjBEOEYwMEQyQTExRTAwMEI5OTE4RiAvKiBF
eGNlcHRpb25CYXNlLmNwcCAqLywKIAkJCQlCQzYwRDhGMTBEMkExMUUwMDBCOTkxOEYgLyogRXhj
ZXB0aW9uQmFzZS5oICovLAogCQkJCTkzNUZCQ0YxMDlCQTE0M0IwMEUyMzBCMSAvKiBFeGNlcHRp
b25Db2RlLmggKi8sCiAJCQkJQTdDQUNEQjAxM0NFODc1QjAwQkJCRTNGIC8qIEV4Y2VwdGlvbkNv
ZGVQbGFjZWhvbGRlci5jcHAgKi8sCiAJCQkJQTc0QkI3NkExM0JEQTg2MzAwRkY3QkYwIC8qIEV4
Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oICovLAorCQkJCTkzRDE5NjMwMUQ2Q0FCNzYwMEZDN0U0
NyAvKiBFeGNlcHRpb25Pci5oICovLAogCQkJCUU0N0UyNzY3MTYwMzZFREMwMEVFMkFGQiAvKiBF
eHRlbnNpb25TdHlsZVNoZWV0cy5jcHAgKi8sCiAJCQkJRTQ3RTI3NjQxNjAzNkVEMjAwRUUyQUZC
IC8qIEV4dGVuc2lvblN0eWxlU2hlZXRzLmggKi8sCiAJCQkJQjZEOUQyMzQxNEVBQkQyNjAwOTBE
NzVFIC8qIEZvY3VzRXZlbnQuY3BwICovLApAQCAtMjU0ODYsNiArMjU0OTIsNyBAQAogCQkJCTA3
OEUwOTM5MTdEMTZCMkMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwNzhFMDkxNjE3RDE0RDFDMDA0MjBBQTEgLyogTWVkaWFTdHJlYW1F
dmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MzcxN0QxNkIyQzAwNDIwQUExIC8qIE1l
ZGlhU3RyZWFtUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNEMTk2MzMxRDZDQUI4MjAw
RkM3RTQ3IC8qIEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MTcxN0QxNEQx
QzAwNDIwQUExIC8qIE1lZGlhU3RyZWFtUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3
OEUwOTE4MTdEMTREMUMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbVRyYWNrLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwNzhFMDkxOTE3RDE0RDFDMDA0MjBBQTEgLyogTWVkaWFTdHJlYW1UcmFja0V2ZW50
LmggaW4gSGVhZGVycyAqLywKQEAgLTI2NTUzLDYgKzI2NTYwLDcgQEAKIAkJCQlCMjIyN0FENzBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIy
N0FEQTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtYWJsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjIyMjdBREQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybURpc3RhbmNlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk5M0QxOTYzMTFENkNBQjc2MDBGQzdFNDcgLyogRXhjZXB0aW9u
T3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QURGMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdU
cmFuc2Zvcm1MaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwOEM3MTM2RTEyODk1NkEzMDAxQjEw
N0UgLyogU1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjIyMjdBRTIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RSZWZFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggNGYx
NWY4MmRkYzUyMzQ3Mzc0NTBjMmY3NGY3Y2QwZjJhMmU3NGIwNS4uYzMwYzZkNzk4YWFmNzgxZDUx
ODYwNTZkNzkxNDQwYzdlYzQzZjJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmgKQEAgLTIzLDkgKzIzLDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlci5oIgotI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2lu
Y2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKQEAgLTY4LDcg
KzY4LDkgQEAgY2xhc3MgTm9kZTsKIAogc3RydWN0IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZTsK
IAotdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBF
eGNlcHRpb25PcjsKKwordXNpbmcgRXhjZXB0aW9uQ29kZSA9IGludDsKIAogc3RydWN0IEV4Y2Vw
dGlvbkRldGFpbHMgewogICAgIFN0cmluZyBtZXNzYWdlOwpAQCAtMTg1LDYgKzE4Nyw5IEBAIEpT
Qzo6SlNWYWx1ZSBjcmVhdGVET01FeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBFeGNlcHRpb25D
b2RlLCBjb25zdCBTdHJpbmcmKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RE9NRXhjZXB0aW9u
KEpTQzo6RXhlY1N0YXRlKiwgRXhjZXB0aW9uQ29kZSk7CiB2b2lkIHNldERPTUV4Y2VwdGlvbihK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpOwogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCosIEV4Y2VwdGlvbk9yPFQ+JiYpOwordGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRl
KiwgSlNET01HbG9iYWxPYmplY3QqLCBFeGNlcHRpb25PcjxUPiYmKTsKKwogSlNDOjpKU1ZhbHVl
IGpzU3RyaW5nKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgVVJMJik7IC8vIGVtcHR5IGlmIHRoZSBV
UkwgaXMgbnVsbAogCiBKU0M6OkpTVmFsdWUganNTdHJpbmdPck51bGwoSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBTdHJpbmcmKTsgLy8gbnVsbCBpZiB0aGUgc3RyaW5nIGlzIG51bGwKQEAgLTc5MCw0
ICs3OTUsMjMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b051
bGxhYmxlSlNOdW1iZXIoT3B0aW9uYWw8VD4gb3B0aW9uYWwKICAgICByZXR1cm4gb3B0aW9uYWxO
dW1iZXIgPyBKU0M6OmpzTnVtYmVyKG9wdGlvbmFsTnVtYmVyLnZhbHVlKCkpIDogSlNDOjpqc051
bGwoKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RXhjZXB0aW9uT3I8VD4mJiB2YWx1ZSkKK3sKKyAgICBpZiAoVU5MSUtFTFkodmFsdWUuaGFzRXhj
ZXB0aW9uKCkpKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgdmFsdWUuZXhjZXB0
aW9uQ29kZSgpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRvSlMoc3RhdGUsIGdsb2JhbE9iamVjdCwgdmFsdWUudGFrZVJldHVyblZhbHVl
KCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNO
ZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFeGNlcHRpb25PcjxUPiYmIHZhbHVlKQoreworICAgIC8vIEZJWE1FOiBJdCdz
IHJlYWxseSBhbm5veWluZyB0byBoYXZlIHR3byBvZiB0aGVzZSBmdW5jdGlvbnMuIFNob3VsZCBm
aW5kIGEgd2F5IHRvIGNvbWJpbmUgdG9KUyBhbmQgdG9KU05ld2x5Q3JlYXRlZC4KKyAgICBpZiAo
VU5MSUtFTFkodmFsdWUuaGFzRXhjZXB0aW9uKCkpKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlv
bihzdGF0ZSwgdmFsdWUuZXhjZXB0aW9uQ29kZSgpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6anNV
bmRlZmluZWQoKTsKKyAgICB9CisgICAgcmV0dXJuIHRvSlNOZXdseUNyZWF0ZWQoc3RhdGUsIGds
b2JhbE9iamVjdCwgdmFsdWUudGFrZVJldHVyblZhbHVlKCkpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCmluZGV4IGQ3MjRjODdkOGRlYTFhNzg3ODVmZjZkYzcxMTcyMDgzNmIyNzIy
OTEuLmY2Y2QwODg1NTA1YWQ0MjIzNjE5YmNkYWFlNzFiNTEwMGQ5MDEyMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00
MzE4LDcgKzQzMTgsNyBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uCiAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXJncy5hcHBlbmQoIiAuIE5hdGl2
ZVRvSlNWYWx1ZSgkcGFyYW0sIDEsICRpbnRlcmZhY2UsICRwYXJhbU5hbWUsICJtX2RhdGEiKSAu
ICIpO1xuIik7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiXG4gICAgTmFrZWRQdHI8RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjtcbiIpOworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4gcmV0dXJuZWRFeGNlcHRpb247XG4iKTsKIAogICAgICAgICAgICAgbXkgJHByb3BlcnR5VG9M
b29rdXAgPSAiSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgXCIke2Z1bmN0aW9uTmFtZX1c
IikiOwogICAgICAgICAgICAgbXkgJGludm9rZU1ldGhvZCA9ICJKU0NhbGxiYWNrRGF0YTo6Q2Fs
bGJhY2tUeXBlOjpGdW5jdGlvbk9yT2JqZWN0IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVt
ZW50YXRpb24uY3BwCmluZGV4IGFmYTM2Mjg4MjRhMGZhZjMwNGQ4ZGJiY2Y1NGUyYjNjYTg3MTg5
MTIuLmVmYmU1MWZmZjU5ZDc0ZTkzZDM5NGU4YzkwNTc1NWQ0MTZiODA3MjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcApAQCAtMjUsMjUgKzI1LDI1IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKIAotI2luY2x1
ZGUgIkNvbnRlbnRUeXBlLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUg
IkNvbnRlbnRUeXBlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUeXBlLmgiCiAjaW5jbHVkZSAiRWxl
bWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJGVFBEaXJlY3Rv
cnlEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIu
aCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIkZUUERpcmVjdG9y
eURvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEhl
YWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRpdGxlRWxlbWVudC5oIgogI2luY2x1ZGUgIklt
YWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEb2N1bWVudC5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJNZWRpYURvY3VtZW50
LmgiCi0jaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKLSNp
bmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgogI2luY2x1ZGUgIlBsdWdp
bkRvY3VtZW50LmgiCkBAIC03Myw2ICs3Myw3IEBAIHN0YXRpYyB2b2lkIGFkZFN0cmluZyhGZWF0
dXJlU2V0JiBzZXQsIGNvbnN0IGNoYXIqIHN0cmluZykKIH0KIAogI2lmIEVOQUJMRShWSURFTykK
KwogY2xhc3MgRE9NSW1wbGVtZW50YXRpb25TdXBwb3J0c1R5cGVDbGllbnQgOiBwdWJsaWMgTWVk
aWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQgewogcHVibGljOgogICAgIERPTUltcGxlbWVudGF0
aW9uU3VwcG9ydHNUeXBlQ2xpZW50KGJvb2wgbmVlZHNIYWNrcywgY29uc3QgU3RyaW5nJiBob3N0
KQpAQCAtODgsNiArODksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9uZWVkc0hhY2tzOwogICAg
IFN0cmluZyBtX2hvc3Q7CiB9OworCiAjZW5kaWYKIAogc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRT
VkcxMEZlYXR1cmUoY29uc3QgU3RyaW5nJiBmZWF0dXJlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24p
CkBAIC0yMDcsMTAzICsyMDksNTggQEAgYm9vbCBET01JbXBsZW1lbnRhdGlvbjo6aGFzRmVhdHVy
ZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPERvY3VtZW50VHlwZT4gRE9NSW1wbGVtZW50YXRpb246OmNy
ZWF0ZURvY3VtZW50VHlwZShjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsCi0gICAgY29uc3Qg
U3RyaW5nJiBwdWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitFeGNlcHRpb25PcjxSZWY8RG9jdW1lbnRUeXBlPj4gRE9NSW1wbGVtZW50YXRpb246OmNy
ZWF0ZURvY3VtZW50VHlwZShjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIGNvbnN0IFN0cmlu
ZyYgcHVibGljSWQsIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQpCiB7Ci0gICAgU3RyaW5nIHByZWZp
eCwgbG9jYWxOYW1lOwotICAgIGlmICghRG9jdW1lbnQ6OnBhcnNlUXVhbGlmaWVkTmFtZShxdWFs
aWZpZWROYW1lLCBwcmVmaXgsIGxvY2FsTmFtZSwgZWMpKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBTdHJpbmcgcHJlZml4OworICAgIFN0cmluZyBs
b2NhbE5hbWU7CisgICAgRG9jdW1lbnQ6OnBhcnNlUXVhbGlmaWVkTmFtZShxdWFsaWZpZWROYW1l
LCBwcmVmaXgsIGxvY2FsTmFtZSwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbihlYyk7CiAKICAgICByZXR1cm4gRG9jdW1lbnRUeXBlOjpjcmVhdGUobV9kb2N1bWVu
dCwgcXVhbGlmaWVkTmFtZSwgcHVibGljSWQsIHN5c3RlbUlkKTsKIH0KIAotRE9NSW1wbGVtZW50
YXRpb24qIERPTUltcGxlbWVudGF0aW9uOjpnZXRJbnRlcmZhY2UoY29uc3QgU3RyaW5nJiAvKmZl
YXR1cmUqLykKK3N0YXRpYyBpbmxpbmUgUmVmPFhNTERvY3VtZW50PiBjcmVhdGVYTUxEb2N1bWVu
dChjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSkKIHsKLSAgICByZXR1cm4gMDsKKyAgICBpZiAo
bmFtZXNwYWNlVVJJID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpCisgICAgICAgIHJldHVy
biBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgpKTsKKyAgICBpZiAobmFtZXNwYWNl
VVJJID09IEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpCisgICAgICAgIHJldHVybiBYTUxE
b2N1bWVudDo6Y3JlYXRlWEhUTUwobnVsbHB0ciwgVVJMKCkpOworICAgIHJldHVybiBYTUxEb2N1
bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgpKTsKIH0KIAotUmVmUHRyPFhNTERvY3VtZW50PiBE
T01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VV
UkksCi0gICAgY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBEb2N1bWVudFR5cGUqIGRvY3R5
cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8UmVmPFhNTERvY3VtZW50Pj4gRE9N
SW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJ
LCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIERvY3VtZW50VHlwZSogZG9jdW1lbnRUeXBl
KQogewotICAgIFJlZlB0cjxYTUxEb2N1bWVudD4gZG9jOwotICAgIGlmIChuYW1lc3BhY2VVUkkg
PT0gU1ZHTmFtZXM6OnN2Z05hbWVzcGFjZVVSSSkKLSAgICAgICAgZG9jID0gU1ZHRG9jdW1lbnQ6
OmNyZWF0ZSgwLCBVUkwoKSk7Ci0gICAgZWxzZSBpZiAobmFtZXNwYWNlVVJJID09IEhUTUxOYW1l
czo6eGh0bWxOYW1lc3BhY2VVUkkpCi0gICAgICAgIGRvYyA9IFhNTERvY3VtZW50OjpjcmVhdGVY
SFRNTCgwLCBVUkwoKSk7Ci0gICAgZWxzZQotICAgICAgICBkb2MgPSBYTUxEb2N1bWVudDo6Y3Jl
YXRlKDAsIFVSTCgpKTsKKyAgICBhdXRvIGRvY3VtZW50ID0gY3JlYXRlWE1MRG9jdW1lbnQobmFt
ZXNwYWNlVVJJKTsKIAotICAgIGRvYy0+c2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3kobV9kb2N1bWVu
dC5zZWN1cml0eU9yaWdpblBvbGljeSgpKTsKKyAgICBkb2N1bWVudC0+c2V0U2VjdXJpdHlPcmln
aW5Qb2xpY3kobV9kb2N1bWVudC5zZWN1cml0eU9yaWdpblBvbGljeSgpKTsKIAotICAgIFJlZlB0
cjxOb2RlPiBkb2N1bWVudEVsZW1lbnQ7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGRvY3VtZW50RWxl
bWVudDsKICAgICBpZiAoIXF1YWxpZmllZE5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGRvY3Vt
ZW50RWxlbWVudCA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVk
TmFtZSwgZWMpOworICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgZG9jdW1l
bnRFbGVtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHF1YWxp
ZmllZE5hbWUsIGVjKTsKICAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uKGVjKTsKICAgICB9CiAKLSAgICBpZiAo
ZG9jdHlwZSkKLSAgICAgICAgZG9jLT5hcHBlbmRDaGlsZCgqZG9jdHlwZSk7CisgICAgaWYgKGRv
Y3VtZW50VHlwZSkKKyAgICAgICAgZG9jdW1lbnQtPmFwcGVuZENoaWxkKCpkb2N1bWVudFR5cGUp
OwogICAgIGlmIChkb2N1bWVudEVsZW1lbnQpCi0gICAgICAgIGRvYy0+YXBwZW5kQ2hpbGQoKmRv
Y3VtZW50RWxlbWVudCk7CisgICAgICAgIGRvY3VtZW50LT5hcHBlbmRDaGlsZCgqZG9jdW1lbnRF
bGVtZW50KTsKIAotICAgIHJldHVybiBkb2M7CisgICAgcmV0dXJuIFdURk1vdmUoZG9jdW1lbnQp
OwogfQogCi1SZWY8Q1NTU3R5bGVTaGVldD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUNTU1N0
eWxlU2hlZXQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBtZWRpYSwgRXhjZXB0aW9uQ29k
ZSYpCitSZWY8Q1NTU3R5bGVTaGVldD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUNTU1N0eWxl
U2hlZXQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBtZWRpYSkKIHsKICAgICAvLyBGSVhN
RTogVGl0bGUgc2hvdWxkIGJlIHNldC4KICAgICAvLyBGSVhNRTogTWVkaWEgY291bGQgaGF2ZSB3
cm9uZyBzeW50YXgsIGluIHdoaWNoIGNhc2Ugd2Ugc2hvdWxkIGdlbmVyYXRlIGFuIGV4Y2VwdGlv
bi4KLSAgICBSZWY8Q1NTU3R5bGVTaGVldD4gc2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGUo
U3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoKSk7CisgICAgYXV0byBzaGVldCA9IENTU1N0eWxl
U2hlZXQ6OmNyZWF0ZShTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZSgpKTsKICAgICBzaGVldC0+
c2V0TWVkaWFRdWVyaWVzKE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZUFsbG93aW5nRGVzY3JpcHRpb25T
eW50YXgobWVkaWEpKTsKICAgICByZXR1cm4gc2hlZXQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9v
bCBpc1ZhbGlkWE1MTUlNRVR5cGVDaGFyKFVDaGFyIGMpCi17Ci0gICAgLy8gVmFsaWQgY2hhcmFj
dGVycyBwZXIgUkZDcyAzMDIzIGFuZCAyMDQ1OgotICAgIC8vIDAtOWEtekEtWl8tK34hJF57fXwu
JSdgIyYqCi0gICAgcmV0dXJuIGlzQVNDSUlBbHBoYW51bWVyaWMoYykgfHwgYyA9PSAnIScgfHwg
YyA9PSAnIycgfHwgYyA9PSAnJCcgfHwgYyA9PSAnJScgfHwgYyA9PSAnJicgfHwgYyA9PSAnXCcn
IHx8IGMgPT0gJyonIHx8IGMgPT0gJysnCi0gICAgICAgIHx8IGMgPT0gJy0nIHx8IGMgPT0gJy4n
IHx8IGMgPT0gJ14nIHx8IGMgPT0gJ18nIHx8IGMgPT0gJ2AnIHx8IGMgPT0gJ3snIHx8IGMgPT0g
J3wnIHx8IGMgPT0gJ30nIHx8IGMgPT0gJ34nOwotfQotCi1ib29sIERPTUltcGxlbWVudGF0aW9u
Ojppc1hNTE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCi17Ci0gICAgLy8gRklYTUU6
IENhbiB3ZSBtb3ZlIHRoaXMgbG9naWMgdG8gTUlNRVR5cGVSZWdpc3RyeSBhbmQgaGF2ZSB0aGlz
IGp1c3QgYmUgYSBzaW5nbGUgZnVuY3Rpb24gY2FsbD8KLQotICAgIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQveG1sIikgfHwgZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi94bWwiKSB8fCBlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQveHNsIikpCi0gICAgICAgIHJldHVy
biB0cnVlOwotCi0gICAgaWYgKCFtaW1lVHlwZS5lbmRzV2l0aCgiK3htbCIsIGZhbHNlKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc2l6ZV90IHNsYXNoUG9zaXRpb24gPSBtaW1lVHlw
ZS5maW5kKCcvJyk7Ci0gICAgLy8gVGFrZSBpbnRvIGFjY291bnQgdGhlICcreG1sJyBlbmRpbmcg
b2YgbWltZVR5cGUuCi0gICAgaWYgKHNsYXNoUG9zaXRpb24gPT0gbm90Rm91bmQgfHwgIXNsYXNo
UG9zaXRpb24gfHwgc2xhc2hQb3NpdGlvbiA9PSBtaW1lVHlwZS5sZW5ndGgoKSAtIDUpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEFnYWluLCBtaW1lVHlwZSBlbmRzIHdpdGggJyt4
bWwnLCBubyBuZWVkIHRvIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGF0IHN1YnN0cmluZy4KLSAg
ICBzaXplX3QgbWltZUxlbmd0aCA9IG1pbWVUeXBlLmxlbmd0aCgpOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbWltZUxlbmd0aCAtIDQ7ICsraSkgewotICAgICAgICBpZiAoIWlzVmFsaWRY
TUxNSU1FVHlwZUNoYXIobWltZVR5cGVbaV0pICYmIGkgIT0gc2xhc2hQb3NpdGlvbikKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9v
bCBET01JbXBsZW1lbnRhdGlvbjo6aXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKLXsKLSAgICAvLyBGSVhNRTogQ2FuIHdlIG1vdmUgdGhpcyBsb2dpYyB0byBNSU1FVHlwZVJl
Z2lzdHJ5IGFuZCBoYXZlIHRoaXMganVzdCBiZSBhIHNpbmdsZSBmdW5jdGlvbiBjYWxsPwotCi0g
ICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBl
KG1pbWVUeXBlKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1l
VHlwZSwgImFwcGxpY2F0aW9uL2pzb24iKSAvLyBSZW5kZXIgSlNPTiBhcyB0ZXh0L3BsYWluLgot
ICAgICAgICB8fCAobWltZVR5cGUuc3RhcnRzV2l0aCgidGV4dC8iLCBmYWxzZSkKLSAgICAgICAg
ICAgICYmICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvaHRt
bCIpCi0gICAgICAgICAgICAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5
cGUsICJ0ZXh0L3htbCIpCi0gICAgICAgICAgICAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UobWltZVR5cGUsICJ0ZXh0L3hzbCIpKTsKLX0KLQogUmVmPEhUTUxEb2N1bWVudD4gRE9N
SW1wbGVtZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKQog
ewogICAgIGF1dG8gZG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBVUkwo
KSk7CkBAIC0zMjEsNiArMjc4LDkgQEAgUmVmPEhUTUxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRp
b246OmNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKQogCiBSZWY8RG9jdW1l
bnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIHR5cGUs
IEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiB7CisgICAgLy8gRklYTUU6IENvbmZ1c2lu
ZyB0byBoYXZlIHRoaXMgaGVyZSB3aXRoIHB1YmxpYyBET00gQVBJcyBmb3IgY3JlYXRpbmcgZG9j
dW1lbnRzLiBUaGlzIGlzIGRpZmZlcmVudCBlbm91Z2ggdGhhdCBpdCBzaG91bGQgcGVyaGFwcyBi
ZSBtb3ZlZC4KKyAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBpcyBkb2luZyBjYXNlIGluc2Vu
c2l0aXZlIGNvbXBhcmlzb25zIG9uIE1JTUUgdHlwZXMuIFNob3VsZCBkbyBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZSBpbnN0ZWFkLgorCiAgICAgLy8gUGx1Z2lucyBjYW5ub3QgdGFrZSBI
VE1MIGFuZCBYSFRNTCBmcm9tIHVzLCBhbmQgd2UgZG9uJ3QgZXZlbiBuZWVkIHRvIGluaXRpYWxp
emUgdGhlIHBsdWdpbiBkYXRhYmFzZSBmb3IgdGhvc2UuCiAgICAgaWYgKHR5cGUgPT0gInRleHQv
aHRtbCIpCiAgICAgICAgIHJldHVybiBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsK
QEAgLTMzOCw3ICsyOTgsNyBAQCBSZWY8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVh
dGVEb2N1bWVudChjb25zdCBTdHJpbmcmIHR5cGUsIEZyYW1lKiBmcmFtZQogICAgICAgICByZXR1
cm4gSW1hZ2VEb2N1bWVudDo6Y3JlYXRlKCpmcmFtZSwgdXJsKTsKIAogICAgIFBsdWdpbkRhdGEq
IHBsdWdpbkRhdGEgPSBudWxscHRyOwotICAgIFBsdWdpbkRhdGE6OkFsbG93ZWRQbHVnaW5UeXBl
cyBhbGxvd2VkUGx1Z2luVHlwZXMgPSBQbHVnaW5EYXRhOjpPbmx5QXBwbGljYXRpb25QbHVnaW5z
OworICAgIGF1dG8gYWxsb3dlZFBsdWdpblR5cGVzID0gUGx1Z2luRGF0YTo6T25seUFwcGxpY2F0
aW9uUGx1Z2luczsKICAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICBp
ZiAoZnJhbWUtPmxvYWRlcigpLnN1YmZyYW1lTG9hZGVyKCkuYWxsb3dQbHVnaW5zKCkpCiAgICAg
ICAgICAgICBhbGxvd2VkUGx1Z2luVHlwZXMgPSBQbHVnaW5EYXRhOjpBbGxQbHVnaW5zOwpAQCAt
MzY5LDEzICszMjksMTMgQEAgUmVmPERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRl
RG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0eXBlLCBGcmFtZSogZnJhbWUKICAgICAvLyBhbmQgYWxz
byBzZXJ2ZXMgYXMgYW4gb3B0aW1pemF0aW9uIHRvIHByZXZlbnQgbG9hZGluZyB0aGUgcGx1Zy1p
biBkYXRhYmFzZSBpbiB0aGUgY29tbW9uIGNhc2UuCiAgICAgaWYgKHR5cGUgIT0gInRleHQvcGxh
aW4iICYmICgocGx1Z2luRGF0YSAmJiBwbHVnaW5EYXRhLT5zdXBwb3J0c1dlYlZpc2libGVNaW1l
VHlwZSh0eXBlLCBhbGxvd2VkUGx1Z2luVHlwZXMpKSB8fCAoZnJhbWUgJiYgZnJhbWUtPmxvYWRl
cigpLmNsaWVudCgpLnNob3VsZEFsd2F5c1VzZVBsdWdpbkRvY3VtZW50KHR5cGUpKSkpCiAgICAg
ICAgIHJldHVybiBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwotICAgIGlmIChp
c1RleHRNSU1FVHlwZSh0eXBlKSkKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNUZXh0TUlN
RVR5cGUodHlwZSkpCiAgICAgICAgIHJldHVybiBUZXh0RG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwg
dXJsKTsKIAogICAgIGlmICh0eXBlID09ICJpbWFnZS9zdmcreG1sIikKICAgICAgICAgcmV0dXJu
IFNWR0RvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CiAKLSAgICBpZiAoaXNYTUxNSU1FVHlw
ZSh0eXBlKSkKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZSh0eXBlKSkK
ICAgICAgICAgcmV0dXJuIFhNTERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CiAKICAgICBy
ZXR1cm4gSFRNTERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
T01JbXBsZW1lbnRhdGlvbi5oCmluZGV4IDg4ODBjNGM1MGMxMjk2YjZhOTJjY2I4NTBhYTdkMGU1
YzdlZmM1OTQuLmQ4NmFkZjA3YmYxYTIyMGEyZDEyODZkNGZjMTVhM2IzNzlhY2FiODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29w
eXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAg
KEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAg
KEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsNiArMjMsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAi
WE1MRG9jdW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzYsMjUgKzM3LDE0IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRlcmVmKCkgeyBtX2RvY3VtZW50LmRlcmVmKCk7IH0KICAgICBE
b2N1bWVudCYgZG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50OyB9CiAKLSAgICAvLyBET00g
bWV0aG9kcyAmIGF0dHJpYnV0ZXMgZm9yIERPTUltcGxlbWVudGF0aW9uCi0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIGJvb2wgaGFzRmVhdHVyZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0
IFN0cmluZyYgdmVyc2lvbik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPERvY3VtZW50VHlw
ZT4gY3JlYXRlRG9jdW1lbnRUeXBlKGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3Qg
U3RyaW5nJiBwdWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgRXhjZXB0aW9uQ29kZSYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxYTUxEb2N1bWVudD4gY3JlYXRlRG9jdW1lbnQo
Y29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwg
RG9jdW1lbnRUeXBlKiwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgRE9NSW1wbGVtZW50YXRpb24q
IGdldEludGVyZmFjZShjb25zdCBTdHJpbmcmIGZlYXR1cmUpOwotCi0gICAgLy8gRnJvbSB0aGUg
RE9NSW1wbGVtZW50YXRpb25DU1MgaW50ZXJmYWNlCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGVDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IFN0cmluZyYgbWVkaWEsIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgIC8vIEZyb20g
dGhlIEhUTUxET01JbXBsZW1lbnRhdGlvbiBpbnRlcmZhY2UKKyAgICBXRUJDT1JFX0VYUE9SVCBF
eGNlcHRpb25PcjxSZWY8RG9jdW1lbnRUeXBlPj4gY3JlYXRlRG9jdW1lbnRUeXBlKGNvbnN0IFN0
cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgU3RyaW5nJiBwdWJsaWNJZCwgY29uc3QgU3RyaW5n
JiBzeXN0ZW1JZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPFhNTERvY3Vt
ZW50Pj4gY3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0
cmluZyYgcXVhbGlmaWVkTmFtZSwgRG9jdW1lbnRUeXBlKik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
UmVmPEhUTUxEb2N1bWVudD4gY3JlYXRlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgdGl0bGUp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGhhc0ZlYXR1cmUoY29uc3QgU3RyaW5n
JiBmZWF0dXJlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlQ1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHJpbmcmIG1lZGlhKTsKIAotICAgIC8vIE90aGVyIG1ldGhvZHMgKG5v
dCBwYXJ0IG9mIERPTSkKICAgICBzdGF0aWMgUmVmPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudChj
b25zdCBTdHJpbmcmIE1JTUVUeXBlLCBGcmFtZSosIGNvbnN0IFVSTCYpOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIGJvb2wgaXNYTUxNSU1FVHlwZShjb25zdCBTdHJpbmcmIE1JTUVUeXBl
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1RleHRNSU1FVHlwZShjb25zdCBT
dHJpbmcmIE1JTUVUeXBlKTsKLQogcHJpdmF0ZToKICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaWRs
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbAppbmRleCAzMzAwNWRh
MTAwODRiYjM4MjczNzJmOTNiYjIwOGFlZGYyMzllNmQxLi42NGM4MzY1NjE0OTgxZTU5ZmFlYzlh
MDAxMTk3Yjk2YmViNTM4ZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1w
bGVtZW50YXRpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlv
bi5pZGwKQEAgLTIzLDIxICsyMywyMSBAQAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbERv
Y3VtZW50LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBET01J
bXBsZW1lbnRhdGlvbiB7Ci0gICAgLy8gRklYTUU6IFVzaW5nICJ1bmRlZmluZWQiIGFzIGRlZmF1
bHQgcGFyYW1ldGVyIHZhbHVlIGlzIHdyb25nLgotICAgIGJvb2xlYW4gaGFzRmVhdHVyZShvcHRp
b25hbCBET01TdHJpbmcgZmVhdHVyZSA9ICJ1bmRlZmluZWQiLCBbVHJlYXROdWxsQXM9RW1wdHlT
dHJpbmddIG9wdGlvbmFsIERPTVN0cmluZyB2ZXJzaW9uID0gInVuZGVmaW5lZCIpOwotCi0gICAg
W1JhaXNlc0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBEb2N1bWVudFR5cGUgY3JlYXRlRG9jdW1lbnRU
eXBlKERPTVN0cmluZyBxdWFsaWZpZWROYW1lLCBET01TdHJpbmcgcHVibGljSWQsIERPTVN0cmlu
ZyBzeXN0ZW1JZCk7Ci0KLSAgICBbTmV3T2JqZWN0LCBSYWlzZXNFeGNlcHRpb25dCisgICAgW05l
d09iamVjdF0gRG9jdW1lbnRUeXBlIGNyZWF0ZURvY3VtZW50VHlwZShET01TdHJpbmcgcXVhbGlm
aWVkTmFtZSwgRE9NU3RyaW5nIHB1YmxpY0lkLCBET01TdHJpbmcgc3lzdGVtSWQpOworICAgIC8v
IEZJWE1FOiBTaG91bGQgaGFuZGxlIHRoaXMgTEFOR1VBR0VfR09CSkVDVCBzcGVjaWFsIGNhc2Ug
aW4gYSBzaW1wbGVyIHdheSBvciBnZXQgcmlkIG9mIGl0LgorICAgIFtOZXdPYmplY3RdCiAjaWYg
ZGVmaW5lZChMQU5HVUFHRV9HT0JKRUNUKSAmJiBMQU5HVUFHRV9HT0JKRUNUCiAgICAgICAgIERv
Y3VtZW50CiAjZWxzZQogICAgICAgICBYTUxEb2N1bWVudAogI2VuZGlmCi0gICAgY3JlYXRlRG9j
dW1lbnQoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10g
RE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIG9wdGlvbmFsIERvY3VtZW50VHlwZT8gZG9jdHlwZSA9
IG51bGwpOworICAgICAgICBjcmVhdGVEb2N1bWVudChET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwg
W1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSwgb3B0aW9u
YWwgRG9jdW1lbnRUeXBlPyBkb2N0eXBlID0gbnVsbCk7CisgICAgW05ld09iamVjdF0gSFRNTERv
Y3VtZW50IGNyZWF0ZUhUTUxEb2N1bWVudChvcHRpb25hbCBET01TdHJpbmcgdGl0bGUpOwogCisg
ICAgLy8gRklYTUU6IExhdGVzdCBET00gc3BlY2lmaWNhdGlvbiBzYXlzIHRoaXMgc2hvdWxkIGln
bm9yZSBhbGwgYXJndW1lbnRzIGFuZCBhbHdheXMgcmV0dXJuIHRydWUuCiAgICAgLy8gRklYTUU6
IFVzaW5nICJ1bmRlZmluZWQiIGFzIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlIGlzIHdyb25nLgot
ICAgIFtSYWlzZXNFeGNlcHRpb25dIENTU1N0eWxlU2hlZXQgY3JlYXRlQ1NTU3R5bGVTaGVldChv
cHRpb25hbCBET01TdHJpbmcgdGl0bGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgRE9NU3RyaW5n
IG1lZGlhID0gInVuZGVmaW5lZCIpOworICAgIGJvb2xlYW4gaGFzRmVhdHVyZShvcHRpb25hbCBE
T01TdHJpbmcgZmVhdHVyZSA9ICJ1bmRlZmluZWQiLCBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmdd
IG9wdGlvbmFsIERPTVN0cmluZyB2ZXJzaW9uID0gInVuZGVmaW5lZCIpOwogCi0gICAgW05ld09i
amVjdF0gSFRNTERvY3VtZW50IGNyZWF0ZUhUTUxEb2N1bWVudChvcHRpb25hbCBET01TdHJpbmcg
dGl0bGUpOworICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBkZWZhdWx0IHBhcmFt
ZXRlciB2YWx1ZSBpcyB3cm9uZy4KKyAgICBDU1NTdHlsZVNoZWV0IGNyZWF0ZUNTU1N0eWxlU2hl
ZXQob3B0aW9uYWwgRE9NU3RyaW5nIHRpdGxlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIERPTVN0
cmluZyBtZWRpYSA9ICJ1bmRlZmluZWQiKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCA0ZDAzMDhkN2EzNzc4ZmQzYTRkODQyNDVjODBlZjZjZTNmOGQ2NjViLi5kNGY0ZGRlMTc5OTBk
MjljNWIxMjZmZWNmY2FjZmE1NjYyYWViYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTEzNzQsMTEgKzEzNzQsNiBAQCB2b2lkIERvY3VtZW50OjpzZXRDb250ZW50TGFuZ3VhZ2UoY29u
c3QgU3RyaW5nJiBsYW5ndWFnZSkKIAogdm9pZCBEb2N1bWVudDo6c2V0WE1MVmVyc2lvbihjb25z
dCBTdHJpbmcmIHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghaW1wbGVt
ZW50YXRpb24oKS5oYXNGZWF0dXJlKCJYTUwiLCBTdHJpbmcoKSkpIHsKLSAgICAgICAgZWMgPSBO
T1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGlmICghWE1M
RG9jdW1lbnRQYXJzZXI6OnN1cHBvcnRzWE1MVmVyc2lvbih2ZXJzaW9uKSkgewogICAgICAgICBl
YyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm47CkBAIC0xMzg3LDEzICsxMzgy
LDggQEAgdm9pZCBEb2N1bWVudDo6c2V0WE1MVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24s
IEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIG1feG1sVmVyc2lvbiA9IHZlcnNpb247CiB9CiAKLXZv
aWQgRG9jdW1lbnQ6OnNldFhNTFN0YW5kYWxvbmUoYm9vbCBzdGFuZGFsb25lLCBFeGNlcHRpb25D
b2RlJiBlYykKK3ZvaWQgRG9jdW1lbnQ6OnNldFhNTFN0YW5kYWxvbmUoYm9vbCBzdGFuZGFsb25l
KQogewotICAgIGlmICghaW1wbGVtZW50YXRpb24oKS5oYXNGZWF0dXJlKCJYTUwiLCBTdHJpbmco
KSkpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQogICAgIG1feG1sU3RhbmRhbG9uZSA9IHN0YW5kYWxvbmUgPyBTdGFuZGFsb25lIDog
Tm90U3RhbmRhbG9uZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA3ZTM4ZDhmZGExZWFi
MGQ2NGZlNDUyZDIwOGVmNWFlMDRjNGU1MTg2Li45NDg4OTQxZDBiZjA2MDY2MzBjM2I2NGUwODJm
YWM3NTFjNDg3MTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNDQxLDcgKzQ0MSw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0WE1MRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBlbmNvZGluZykg
eyBtX3htbEVuY29kaW5nID0gZW5jb2Rpbmc7IH0gLy8gcmVhZC1vbmx5IHByb3BlcnR5LCBvbmx5
IHRvIGJlIHNldCBmcm9tIFhNTERvY3VtZW50UGFyc2VyCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRYTUxWZXJzaW9uKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFhNTFN0YW5kYWxvbmUoYm9vbCwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0WE1MU3RhbmRhbG9uZShib29sKTsKICAgICB2b2lk
IHNldEhhc1hNTERlY2xhcmF0aW9uKGJvb2wgaGFzWE1MRGVjbGFyYXRpb24pIHsgbV9oYXNYTUxE
ZWNsYXJhdGlvbiA9IGhhc1hNTERlY2xhcmF0aW9uID8gMSA6IDA7IH0KIAogICAgIFN0cmluZyBk
b2N1bWVudFVSSSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRVUkk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaWRsCmluZGV4IGUwMThmNTlkYWVlOWY4M2E5ZGNmM2QxMjI3ZTYzNWI1NDFlMDRkNTAu
LmJkODkwYTllMjFkNzUyMjg5NzRlNWNhNDA2NzY5YTMzZTYzMDZiZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmlkbApAQCAtNTMsNyArNTMsNyBAQAogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZz8geG1sRW5jb2Rpbmc7CiAgICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmli
dXRlIERPTVN0cmluZz8geG1sVmVyc2lvbjsKLSAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBh
dHRyaWJ1dGUgYm9vbGVhbiB4bWxTdGFuZGFsb25lOworICAgIGF0dHJpYnV0ZSBib29sZWFuIHht
bFN0YW5kYWxvbmU7CiAKICAgICBbUmFpc2VzRXhjZXB0aW9uXSBOb2RlIGFkb3B0Tm9kZShOb2Rl
IHNvdXJjZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYWNiZDVmMmZkN2Vl
YWU5NmQyNTNlY2I4YTNmNDg0M2VlOWFjNDA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V4Y2VwdGlvbi5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisKK0NvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCithcmUgbWV0OgorMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCitESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CitBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKK1NPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisqLworCisjcHJh
Z21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBFeGNlcHRpb25Db2RlID0g
aW50OworCitjbGFzcyBFeGNlcHRpb24geworcHVibGljOgorICAgIGV4cGxpY2l0IEV4Y2VwdGlv
bihFeGNlcHRpb25Db2RlKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbkNvZGUgY29k
ZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIEV4Y2VwdGlvbkNvZGUgbV9jb2RlOworfTsKKwor
aW5saW5lIEV4Y2VwdGlvbjo6RXhjZXB0aW9uKEV4Y2VwdGlvbkNvZGUgY29kZSkKKyAgICA6IG1f
Y29kZShjb2RlKQoreworfQorCitpbmxpbmUgRXhjZXB0aW9uQ29kZSBFeGNlcHRpb246OmNvZGUo
KSBjb25zdAoreworICAgIHJldHVybiBtX2NvZGU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlv
bk9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzljMDNmNTQyZDYwMTg4OGZhMThmMDU0MDVhZjJlYzU1OGJjNjI3
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCkBA
IC0wLDAgKzEsNzIgQEAKKy8qCisKK0NvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCithcmUgbWV0OgorMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCitESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCitBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKK1NPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkV4
Y2VwdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKwordGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlwZT4gY2xhc3MgRXhjZXB0aW9uT3Igewor
cHVibGljOgorICAgIEV4Y2VwdGlvbk9yKEV4Y2VwdGlvbiYmKTsKKyAgICBFeGNlcHRpb25PcihS
ZXR1cm5UeXBlJiYpOworCisgICAgYm9vbCBoYXNFeGNlcHRpb24oKSBjb25zdDsKKyAgICBFeGNl
cHRpb25Db2RlIGV4Y2VwdGlvbkNvZGUoKSBjb25zdDsKKyAgICBSZXR1cm5UeXBlJiYgdGFrZVJl
dHVyblZhbHVlKCk7CisKK3ByaXZhdGU6CisgICAgc3RkOjpleHBlcmltZW50YWw6OnZhcmlhbnQ8
RXhjZXB0aW9uLCBSZXR1cm5UeXBlPiBtX3ZhbHVlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
UmV0dXJuVHlwZT4gaW5saW5lIEV4Y2VwdGlvbk9yPFJldHVyblR5cGU+OjpFeGNlcHRpb25PcihF
eGNlcHRpb24mJiBleGNlcHRpb24pCisgICAgOiBtX3ZhbHVlKFdURk1vdmUoZXhjZXB0aW9uKSkK
K3sKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlwZT4gaW5saW5lIEV4Y2VwdGlvbk9y
PFJldHVyblR5cGU+OjpFeGNlcHRpb25PcihSZXR1cm5UeXBlJiYgcmV0dXJuVmFsdWUpCisgICAg
OiBtX3ZhbHVlKFdURk1vdmUocmV0dXJuVmFsdWUpKQoreworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBSZXR1cm5UeXBlPiBpbmxpbmUgYm9vbCBFeGNlcHRpb25PcjxSZXR1cm5UeXBlPjo6aGFzRXhj
ZXB0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjpleHBlcmltZW50YWw6OmhvbGRzX2Fs
dGVybmF0aXZlPEV4Y2VwdGlvbj4obV92YWx1ZSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJl
dHVyblR5cGU+IGlubGluZSBFeGNlcHRpb25Db2RlIEV4Y2VwdGlvbk9yPFJldHVyblR5cGU+Ojpl
eGNlcHRpb25Db2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjpleHBlcmltZW50YWw6Omdl
dDxFeGNlcHRpb24+KG1fdmFsdWUpLmNvZGUoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmV0
dXJuVHlwZT4gaW5saW5lIFJldHVyblR5cGUmJiBFeGNlcHRpb25PcjxSZXR1cm5UeXBlPjo6dGFr
ZVJldHVyblZhbHVlKCkKK3sKKyAgICByZXR1cm4gc3RkOjpleHBlcmltZW50YWw6OmdldDxSZXR1
cm5UeXBlPihXVEZNb3ZlKG1fdmFsdWUpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRlbXBsYXRlRWxlbWVudC5jcHAKaW5kZXggM2I1NmU1NWYwZWFiMzU2MTEyYTk5YWNmZjkw
MTNiM2FmM2UwOWFhZi4uNTgxYWEzMzNlYzBiN2JjNGQ4ZmM5ZGM2Y2JlMjlkYmMyZmQ4OWFkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwCkBAIC0yOSwx
MCArMjksOCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUgIkhUTUxU
ZW1wbGF0ZUVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIlRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggNzNiNDk5OTNjYjEy
OTdlYjBjYjkzMzQ4MTAxNjdmODMzNzYxMTIwNS4uZjhlNjY3OGYzMjcwYmQ4NTM2ZjBmMDNmZjg4
ZjViODhiYzIyYTc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlICJDYWNoZWRTY3JpcHQu
aCIKICNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJDb29raWVKYXIuaCIKLSNpbmNsdWRl
ICJET01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkRPTVBhdGNoU3VwcG9ydC5oIgogI2lu
Y2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCkBAIC01OSw2
ICs1OCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yT3ZlcmxheS5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCisj
aW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2lu
Y2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMTI4LDcgKzEyOCw3
IEBAIHN0YXRpYyBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gY3JlYXRlWEhSVGV4dERlY29k
ZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rl
cj4gZGVjb2RlcjsKICAgICBpZiAoIXRleHRFbmNvZGluZ05hbWUuaXNFbXB0eSgpKQogICAgICAg
ICBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgdGV4
dEVuY29kaW5nTmFtZSk7Ci0gICAgZWxzZSBpZiAoRE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlN
RVR5cGUobWltZVR5cGUpKSB7CisgICAgZWxzZSBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxN
SU1FVHlwZShtaW1lVHlwZSkpIHsKICAgICAgICAgZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29k
ZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIik7CiAgICAgICAgIGRlY29kZXItPnVzZUxlbmll
bnRYTUxEZWNvZGluZygpOwogICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UobWltZVR5cGUsICJ0ZXh0L2h0bWwiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDdiYTE4MDUwMGFiZWY0OGY4ZGIw
MzkzOTU1M2JjOWQyMGEyZTEzMmQuLjlmZjI4ZTFkZWMzNWRhZmZhZTZjNDYyZTJlMjk0ZWQ3OWMy
MDA1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmNwcApAQCAtMzAsMjQgKzMwLDE4IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNl
c0RhdGEuaCIKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCi0jaW5jbHVkZSAiRE9NSW1w
bGVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUg
IlRleHRSZXNvdXJjZURlY29kZXIuaCIKIAotbmFtZXNwYWNlIHsKLS8vIDEwME1CCi1zdGF0aWMg
Y29uc3Qgc2l6ZV90IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSA9IDEwMCAqIDEwMDAgKiAx
MDAwOwotCi0vLyAxME1CCi1zdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJj
ZUNvbnRlbnRTaXplID0gMTAgKiAxMDAwICogMTAwMDsKLX0KLQogdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBSZXNvdXJjZURhdGEKK3N0YXRp
YyBjb25zdCBzaXplX3QgbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplID0gMTAwICogMTAwMCAq
IDEwMDA7IC8vIDEwME1CCitzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJj
ZUNvbnRlbnRTaXplID0gMTAgKiAxMDAwICogMTAwMDsgLy8gMTBNQgorCiBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0
SWQsIGNvbnN0IFN0cmluZyYgbG9hZGVySWQpCiAgICAgOiBtX3JlcXVlc3RJZChyZXF1ZXN0SWQp
CiAgICAgLCBtX2xvYWRlcklkKGxvYWRlcklkKQpAQCAtMTE3LDcgKzExMSw2IEBAIHNpemVfdCBO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KCkK
ICAgICByZXR1cm4gY29udGVudFNpemVJbkJ5dGVzKG1fY29udGVudCkgLSBkYXRhTGVuZ3RoOwog
fQogCi0vLyBOZXR3b3JrUmVzb3VyY2VzRGF0YQogTmV0d29ya1Jlc291cmNlc0RhdGE6Ok5ldHdv
cmtSZXNvdXJjZXNEYXRhKCkKICAgICA6IG1fY29udGVudFNpemUoMCkKICAgICAsIG1fbWF4aW11
bVJlc291cmNlc0NvbnRlbnRTaXplKG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSkKQEAgLTE0
MSw3ICsxMzQsNyBAQCBzdGF0aWMgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGNyZWF0ZU90
aGVyUmVzb3VyY2VUZXh0RGVjb2Rlcihjb25zdCBTdHJpbmcmCiAgICAgUmVmUHRyPFRleHRSZXNv
dXJjZURlY29kZXI+IGRlY29kZXI7CiAgICAgaWYgKCF0ZXh0RW5jb2RpbmdOYW1lLmlzRW1wdHko
KSkKICAgICAgICAgZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9w
bGFpbiIsIHRleHRFbmNvZGluZ05hbWUpOwotICAgIGVsc2UgaWYgKERPTUltcGxlbWVudGF0aW9u
Ojppc1hNTE1JTUVUeXBlKG1pbWVUeXBlKSkgeworICAgIGVsc2UgaWYgKE1JTUVUeXBlUmVnaXN0
cnk6OmlzWE1MTUlNRVR5cGUobWltZVR5cGUpKSB7CiAgICAgICAgIGRlY29kZXIgPSBUZXh0UmVz
b3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3htbCIpOwogICAgICAgICBkZWNvZGVy
LT51c2VMZW5pZW50WE1MRGVjb2RpbmcoKTsKICAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC9odG1sIikpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAppbmRleCAxZDU4ODE0N2I2NzVlNzRiOTU3YzBjMjRmYWEwZTUyNjVi
Yjc5NzMwLi41MDFmNjM1MmNmM2Q4NGUzM2Q1NDI3OTQ1MjA0MTZjMjE1ZTUxZDhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDb250ZW50RmlsdGVyLmgiCiAjaW5jbHVkZSAi
Q29udGVudFNlY3VyaXR5UG9saWN5LmgiCi0jaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIK
ICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNp
bmNsdWRlICJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCmluZGV4IDk1ZDM2ZTMxNWEwNWI4NWI3NTJhYTQ0
MmNjZmE1YjE0MGRjNmFmNzYuLmZlOTRiN2Y4MTg3NDZlM2QyZTdhYjMwYjQ2N2ZhMDllMTNiMTI0
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAK
QEAgLTIzLDkgKzIzLDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXh0UmVz
b3VyY2VEZWNvZGVyLmgiCiAKLSNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1
ZGUgIkhUTUxNZXRhQ2hhcnNldFBhcnNlci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJUZXh0Q29kZWMuaCIKICNpbmNs
dWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmdEZXRlY3Rvci5oIgpA
QCAtMzA2LDcgKzMwNiw3IEBAIFRleHRSZXNvdXJjZURlY29kZXI6OkNvbnRlbnRUeXBlIFRleHRS
ZXNvdXJjZURlY29kZXI6OmRldGVybWluZUNvbnRlbnRUeXBlKGNvbnN0CiAgICAgICAgIHJldHVy
biBDU1M7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAi
dGV4dC9odG1sIikpCiAgICAgICAgIHJldHVybiBIVE1MOwotICAgIGlmIChET01JbXBsZW1lbnRh
dGlvbjo6aXNYTUxNSU1FVHlwZShtaW1lVHlwZSkpCisgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6
OmlzWE1MTUlNRVR5cGUobWltZVR5cGUpKQogICAgICAgICByZXR1cm4gWE1MOwogICAgIHJldHVy
biBQbGFpblRleHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1F
VHlwZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0
cnkuY3BwCmluZGV4IDNhMzQzOTY3NTdiNjU2MTIyM2M2ZTIyZGI3MWVkMDE5YTA1MTUyMWMuLmFk
ZDI4ZmZjNjI5ZWZjM2QxOTZjMmRmNmFlNDZmMTMzODc2ZjI3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCwgMjAwOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtMjksMjAgKzI5LDIxIEBACiAKICNpbmNsdWRlICJNZWRpYVBsYXll
ci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CiAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgot
I2lmICFQTEFURk9STShJT1MpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2VuZGlmCisK
KyNpZiBVU0UoQ0cpICYmICFQTEFURk9STShJT1MpCiAjaW5jbHVkZSA8QXBwbGljYXRpb25TZXJ2
aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+Ci0jZWxzZQotI2luY2x1ZGUgPEltYWdlSU8vQ0dJ
bWFnZURlc3RpbmF0aW9uLmg+CiAjZW5kaWYKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisK
KyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSA8SW1hZ2VJTy9DR0ltYWdlRGVzdGluYXRpb24u
aD4KICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCkBA
IC01NDIsNiArNTQzLDQ3IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNVbnN1cHBvcnRlZFRl
eHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiB1bnN1cHBvcnRl
ZFRleHRNSU1FVHlwZXMtPmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0KIAorYm9vbCBNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIHJl
dHVybiBpc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShtaW1lVHlwZSkKKyAgICAgICAgfHwg
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi9qc29u
IikgLy8gUmVuZGVyIEpTT04gYXMgdGV4dC9wbGFpbi4KKyAgICAgICAgfHwgKG1pbWVUeXBlLnN0
YXJ0c1dpdGgoInRleHQvIiwgZmFsc2UpCisgICAgICAgICAgICAmJiAhZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L2h0bWwiKQorICAgICAgICAgICAgJiYgIWVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC94bWwiKQorICAgICAg
ICAgICAgJiYgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC94
c2wiKSk7Cit9CisKKworc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRYTUxNSU1FVHlwZUNoYXIo
VUNoYXIgYykKK3sKKyAgICAvLyBWYWxpZCBjaGFyYWN0ZXJzIHBlciBSRkNzIDMwMjMgYW5kIDIw
NDU6IDAtOWEtekEtWl8tK34hJF57fXwuJSdgIyYqCisgICAgcmV0dXJuIGlzQVNDSUlBbHBoYW51
bWVyaWMoYykgfHwgYyA9PSAnIScgfHwgYyA9PSAnIycgfHwgYyA9PSAnJCcgfHwgYyA9PSAnJScg
fHwgYyA9PSAnJicgfHwgYyA9PSAnXCcnIHx8IGMgPT0gJyonIHx8IGMgPT0gJysnCisgICAgICAg
IHx8IGMgPT0gJy0nIHx8IGMgPT0gJy4nIHx8IGMgPT0gJ14nIHx8IGMgPT0gJ18nIHx8IGMgPT0g
J2AnIHx8IGMgPT0gJ3snIHx8IGMgPT0gJ3wnIHx8IGMgPT0gJ30nIHx8IGMgPT0gJ34nOworfQor
Citib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkKK3sKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUs
ICJ0ZXh0L3htbCIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAi
YXBwbGljYXRpb24veG1sIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5
cGUsICJ0ZXh0L3hzbCIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICghbWltZVR5
cGUuZW5kc1dpdGgoIit4bWwiLCBmYWxzZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHNpemVfdCBzbGFzaFBvc2l0aW9uID0gbWltZVR5cGUuZmluZCgnLycpOworICAgIC8vIFRha2Ug
aW50byBhY2NvdW50IHRoZSAnK3htbCcgZW5kaW5nIG9mIG1pbWVUeXBlLgorICAgIGlmIChzbGFz
aFBvc2l0aW9uID09IG5vdEZvdW5kIHx8ICFzbGFzaFBvc2l0aW9uIHx8IHNsYXNoUG9zaXRpb24g
PT0gbWltZVR5cGUubGVuZ3RoKCkgLSA1KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBBZ2FpbiwgbWltZVR5cGUgZW5kcyB3aXRoICcreG1sJywgbm8gbmVlZCB0byBjaGVjayB0aGUg
dmFsaWRpdHkgb2YgdGhhdCBzdWJzdHJpbmcuCisgICAgc2l6ZV90IG1pbWVMZW5ndGggPSBtaW1l
VHlwZS5sZW5ndGgoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1pbWVMZW5ndGggLSA0
OyArK2kpIHsKKyAgICAgICAgaWYgKCFpc1ZhbGlkWE1MTUlNRVR5cGVDaGFyKG1pbWVUeXBlW2ld
KSAmJiBpICE9IHNsYXNoUG9zaXRpb24pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNKYXZh
QXBwbGV0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICAvLyBTaW5jZSB0
aGlzIHNldCBpcyB2ZXJ5IGxpbWl0ZWQgYW5kIGlzIGxpa2VseSB0byByZW1haW4gc28gd2Ugd29u
J3QgYm90aGVyIHdpdGggdGhlIG92ZXJoZWFkCkBAIC01NzcsNyArNjE5LDcgQEAgYm9vbCBNSU1F
VHlwZVJlZ2lzdHJ5OjpjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAobWltZVR5cGUuc3RhcnRzV2l0aCgidGV4dC8i
LCBmYWxzZSkpCi0gICAgICAgIHJldHVybiAhTUlNRVR5cGVSZWdpc3RyeTo6aXNVbnN1cHBvcnRl
ZFRleHRNSU1FVHlwZShtaW1lVHlwZSk7CisgICAgICAgIHJldHVybiAhaXNVbnN1cHBvcnRlZFRl
eHRNSU1FVHlwZShtaW1lVHlwZSk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKaW5kZXggNGRjNzRlN2NiM2ZhODU0NmYx
ODhjNjJiMDdmZTMyMGUwOGZiOWQ4NS4uNjc0OTU0NmRlYmFiMDUzOTVlZjg1YWI4MmFmMDFiZDIy
ODUxYjc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTMsNyArMTMsNyBAQAogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCiAgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQogICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgogICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCiAgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCiAgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKQEAgLTIzLDEzICsyMywx
MSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIE1JTUVUeXBlUmVnaXN0cnlfaAot
I2RlZmluZSBNSU1FVHlwZVJlZ2lzdHJ5X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTYwLDE2ICs1OCwxMiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgaXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7
ICAgIAogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgbm9uLWltYWdlIE1JTUUgdHlwZSBpcyBz
dWl0YWJsZSBmb3IgYmVpbmcgbG9hZGVkIGFzIGEKLSAgICAvLyBkb2N1bWVudCBpbiBhIGZyYW1l
LiAgSW5jbHVkZXMgc3VwcG9ydGVkIEphdmFTY3JpcHQgTUlNRSB0eXBlcy4KKyAgICAvLyBkb2N1
bWVudCBpbiBhIGZyYW1lLiBJbmNsdWRlcyBzdXBwb3J0ZWQgSmF2YVNjcmlwdCBNSU1FIHR5cGVz
LgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkTm9uSW1hZ2VNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAogICAgIC8vIENoZWNrIHRvIHNlZSBpZiBh
IE1JTUUgdHlwZSBpcyBzdWl0YWJsZSBmb3IgYmVpbmcgbG9hZGVkIHVzaW5nIDx2aWRlbz4gYW5k
IDxhdWRpbz4uCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRNZWRp
YU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCi0gICAgLy8gQ2hlY2sgdG8gc2Vl
IGlmIHRoZSBNSU1FIHR5cGUgaXMgbm90IHN1aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgYXMgYSB0
ZXh0Ci0gICAgLy8gZG9jdW1lbnQgaW4gYSBmcmFtZS4gT25seSB2YWxpZCBmb3IgTUlNRSB0eXBl
cyBiZWdpbmluZyB3aXRoICJ0ZXh0LyIuCi0gICAgc3RhdGljIGJvb2wgaXNVbnN1cHBvcnRlZFRl
eHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKLQogICAgIC8vIENoZWNrIHRvIHNl
ZSBpZiBhIE1JTUUgdHlwZSBpcyBhIHZhbGlkIEphdmEgYXBwbGV0IG1pbWUgdHlwZS4KICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0phdmFBcHBsZXRNSU1FVHlwZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKTsKIApAQCAtODYsNiArODAsMTUgQEAgcHVibGljOgogICAgIC8vICJ0ZXh0
LyIgYW5kIGlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUoKSByZXR1cm5zIGZhbHNlLgogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKTsKIAorICAgIC8vIENoZWNrIHRvIHNlZSBpZiBhIE1JTUUgdHlwZSBpcyBvbmUgd2hl
cmUgYW4gWE1MIGRvY3VtZW50IHNob3VsZCBiZSBjcmVhdGVkCisgICAgLy8gcmF0aGVyIHRoYW4g
YW4gSFRNTCBkb2N1bWVudC4KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1hNTE1J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworCisgICAgLy8gVXNlZCBpbiBwYWdlIGxv
YWQgYWxnb3JpdGhtIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGRpc3BsYXkgYXMgYSB0ZXh0CisgICAg
Ly8gZG9jdW1lbnQgaW4gYSBmcmFtZS4gTm90IGEgZ29vZCBpZGVhIHRvIHVzZSBlbHNld2hlcmUs
IGJlY2F1c2UgdGhhdCBjb2RlCisgICAgLy8gbWFrZXMgdGhpcyB0ZXN0IGlzIGFmdGVyIG1hbnkg
b3RoZXIgdGVzdHMgYXJlIGRvbmUgb24gdGhlIE1JTUUgdHlwZS4KKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBpc1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKwog
ICAgIC8vIEZJWE1FOiBXZWJLaXQgY29kaW5nIHN0eWxlIHNheXMgd2Ugc2hvdWxkIG5vdCBoYXZl
IHRoZSB3b3JkICJnZXQiIGluIHRoZSBuYW1lcyBvZiB0aGVzZSBmdW5jdGlvbnMuCiAgICAgLy8g
RklYTUU6IFdvdWxkIGJlIG5pY2UgdG8gZmluZCBhIHdheSB0byBhdm9pZCBleHBvc2luZyB0aGVz
ZSBzZXRzLCBldmVuIHdvcnNlIGV4cG9zaW5nIG5vbi1jb25zdCByZWZlcmVuY2VzLgogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYgZ2V0U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKQEAgLTEwMCwxMCArMTAzLDEzIEBA
IHB1YmxpYzoKICAgICAvLyBGSVhNRTogV2ViS2l0IGNvZGluZyBzdHlsZSBzYXlzIHdlIHNob3Vs
ZCBub3QgaGF2ZSB0aGUgd29yZCAiZ2V0IiBpbiB0aGUgbmFtZSBvZiB0aGlzIGZ1bmN0aW9uLgog
ICAgIC8vIEZJWE1FOiBVbmNsZWFyIHdoYXQgdGhlIGNvbmNlcHQgb2YgYSBub3JtYWxpemVkIE1J
TUUgdHlwZSBpczsgY3VycmVudGx5IGl0J3MgYSBwbGF0Zm9ybS1zcGVjaWZpYyBub3Rpb24uCiAg
ICAgc3RhdGljIFN0cmluZyBnZXROb3JtYWxpemVkTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7CisK
K3ByaXZhdGU6CisgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBNSU1FIHR5cGUgaXMgbm90IHN1
aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgYXMgYSB0ZXh0CisgICAgLy8gZG9jdW1lbnQgaW4gYSBm
cmFtZS4gT25seSB2YWxpZCBmb3IgTUlNRSB0eXBlcyBiZWdpbmluZyB3aXRoICJ0ZXh0LyIuCisg
ICAgc3RhdGljIGJvb2wgaXNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKTsKIH07CiAKIGNvbnN0IFN0cmluZyYgZGVmYXVsdE1JTUVUeXBlKCk7CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIE1JTUVUeXBlUmVnaXN0cnlfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDc0MmYzODU1ODFjOTAwNmNhNDZmMGIwNDdhMjBhMWEw
NGQ1NmQ1ZjIuLmM0MjdhYmQ2ZDRhZjhhZDMzZGRjNjhkMTVkMGNjMzdiYTEyMWE4M2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJTVkdF
bGVtZW50LmgiCiAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKLSNpbmNsdWRlICJET01JbXBsZW1l
bnRhdGlvbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKQEAgLTM2MiwxMSArMzYxLDYgQEAgdm9pZCBTVkdF
bGVtZW50OjpyZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IoU1ZHUGFyc2luZ0Vycm9yIGVycm9y
LCBjb25zdCBRdWFsaWYKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotYm9vbCBTVkdF
bGVtZW50Ojppc1N1cHBvcnRlZChTdHJpbmdJbXBsKiBmZWF0dXJlLCBTdHJpbmdJbXBsKiB2ZXJz
aW9uKSBjb25zdAotewotICAgIHJldHVybiBET01JbXBsZW1lbnRhdGlvbjo6aGFzRmVhdHVyZShm
ZWF0dXJlLCB2ZXJzaW9uKTsKLX0KLQogdm9pZCBTVkdFbGVtZW50OjpyZW1vdmVkRnJvbShDb250
YWluZXJOb2RlJiByb290UGFyZW50KQogewogICAgIGJvb2wgd2FzSW5Eb2N1bWVudCA9IHJvb3RQ
YXJlbnQuaW5Eb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggZjNmZmU4MWU2
MmNmYTk0NjViMjdjMDNlMDlhMGY2NjhhMDY5YWJlYy4uMGYxYTRjMTFiM2RlMGJiNDU4YzcyOTE5
NGQ0OWE5MjZhMWFmZGJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC0xLDcgKzEsNyBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFpp
bW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAy
MDA5LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKQEAgLTIwLDEwICsyMCw4IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KICAqLwogCi0jaWZuZGVmIFNWR0VsZW1lbnRfaAotI2RlZmluZSBTVkdFbGVtZW50X2gKKyNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIlNW
R0FuaW1hdGVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiU1ZHTGFuZ1NwYWNlLmgiCiAjaW5jbHVkZSAi
U1ZHTG9jYXRhYmxlLmgiCkBAIC0zMSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiU1ZHUGFyc2luZ0Vy
cm9yLmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlJbmZvLmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxl
bWVudC5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCkBAIC04Niw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHN2Z0xvYWRFdmVudFRpbWVyRmlyZWQoKTsKICAgICB2aXJ0dWFsIFRpbWVyKiBzdmdMb2Fk
RXZlbnRUaW1lcigpOwogCi0gICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0qIHN1cHBsZW1lbnRh
bFRyYW5zZm9ybSgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSog
c3VwcGxlbWVudGFsVHJhbnNmb3JtKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdm9pZCBp
bnZhbGlkYXRlU1ZHQXR0cmlidXRlcygpIHsgZW5zdXJlVW5pcXVlRWxlbWVudERhdGEoKS5zZXRB
bmltYXRlZFNWR0F0dHJpYnV0ZXNBcmVEaXJ0eSh0cnVlKTsgfQogICAgIHZvaWQgaW52YWxpZGF0
ZVNWR1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKCkKQEAgLTE4MCw4ICsxNzcsNiBAQCBwcm90
ZWN0ZWQ6CiBwcml2YXRlOgogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlKFBz
ZXVkb0lkID0gTk9QU0VVRE8pIGZpbmFsOwogCi0gICAgdmlydHVhbCBib29sIGlzU3VwcG9ydGVk
KFN0cmluZ0ltcGwqIGZlYXR1cmUsIFN0cmluZ0ltcGwqIHZlcnNpb24pIGNvbnN0OwotCiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyVGFyZ2V0KCkgeyB9CiAKICAgICB2b2lkIGJ1aWxkUGVuZGluZ1Jl
c291cmNlc0lmTmVlZGVkKCk7CkBAIC0yNjQsNSArMjU5LDMgQEAgU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19CRUdJTihXZWJDb3JlOjpTVkdFbGVtZW50KQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQogCiAjaW5jbHVkZSAiU1ZHRWxlbWVudFR5cGVIZWxwZXJzLmgiCi0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggYzgzYWI4YzlhMzQ0YzZkOTg2Njhk
MTg1NDJiYzEyNjhlOTQ2ZWM3Yi4uYzE3N2M0OThhMjdiZDZmODAwMTQyM2QzOTkzNjMwOTA5OWM0
YjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0yOCw3ICsyOCw2
IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiQ3Jvc3NP
cmlnaW5BY2Nlc3NDb250cm9sLmgiCiAjaW5jbHVkZSAiRE9NRm9ybURhdGEuaCIKLSNpbmNsdWRl
ICJET01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKQEAgLTM5LDYgKzM4LDcgQEAK
ICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlBhcnNlZENvbnRl
bnRUeXBlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgpAQCAtNTksNyArNTksNiBAQAog
I2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9K
U0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KLSNpbmNsdWRlIDx3dGYv
UmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC05
MzQsNyArOTMzLDcgQEAgU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZU1JTUVUeXBlKCkg
Y29uc3QKIAogYm9vbCBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VJc1hNTCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIERPTUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKHJlc3BvbnNlTUlNRVR5
cGUoKSk7CisgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5cGUocmVzcG9u
c2VNSU1FVHlwZSgpKTsKIH0KIAogaW50IFhNTEh0dHBSZXF1ZXN0OjpzdGF0dXMoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwCmluZGV4IDFiNDZiYjFjZjhkYmQ2ZmFlZTZkYzgwZWQxM2MzYjNhNTVkMWFmYTcu
LmE5OWY5ZGU3MjczYTU2MmUxNDZkOTM1MzI5MmEwNTAwYjQ0NDhkN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAK
QEAgLTEwNjQsNyArMTA2NCw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0RG9jdW1l
bnQoY29uc3QgeG1sQ2hhciogdmVyc2lvbiwgY29uc3QgeG1sQ2hhciogZW5jCiAgICAgaWYgKHZl
cnNpb24pCiAgICAgICAgIGRvY3VtZW50KCktPnNldFhNTFZlcnNpb24odG9TdHJpbmcodmVyc2lv
biksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIGlmIChzdGFuZGFsb25lICE9IFN0YW5kYWxv
bmVVbnNwZWNpZmllZCkKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0WE1MU3RhbmRhbG9uZShzdGFu
ZGFsb25lSW5mbyA9PSBTdGFuZGFsb25lWWVzLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAg
ICAgZG9jdW1lbnQoKS0+c2V0WE1MU3RhbmRhbG9uZShzdGFuZGFsb25lSW5mbyA9PSBTdGFuZGFs
b25lWWVzKTsKICAgICBpZiAoZW5jb2RpbmcpCiAgICAgICAgIGRvY3VtZW50KCktPnNldFhNTEVu
Y29kaW5nKHRvU3RyaW5nKGVuY29kaW5nKSk7CiAgICAgZG9jdW1lbnQoKS0+c2V0SGFzWE1MRGVj
bGFyYXRpb24odHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRE9N
SW1wbGVtZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRE9NSW1wbGVtZW50
YXRpb24ubW0KaW5kZXggZTBhMGMwNjZiZTE0M2E3NzFkNGUzNTg4MDU5MDAxOWUzZWQ3MDhiNS4u
MmEzZTkyZDVlODg0OTBkNGJmOTk5NjNkZTlhNmJlNjcwM2RiYTNhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvRE9NL0RPTURPTUltcGxlbWVudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0RPTS9ET01ET01JbXBsZW1lbnRhdGlvbi5tbQpAQCAtMzAsMTA1ICszMCw5MCBA
QAogI2ltcG9ydCAiRE9NRG9jdW1lbnRUeXBlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUhUTUxE
b2N1bWVudEludGVybmFsLmgiCiAjaW1wb3J0ICJET01JbnRlcm5hbC5oIgotI2ltcG9ydCAiRE9N
Tm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8
V2ViQ29yZS9DU1NTdHlsZVNoZWV0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTUltcGxlbWVudGF0
aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Rv
Y3VtZW50VHlwZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MRG9jdW1lbnQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVh
ZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJD
b3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRl
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1hNTERvY3VtZW50Lmg+Ci0jaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+Ci0KLSNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkRPTUltcGxlbWVu
dGF0aW9uKj4oX2ludGVybmFsKQogCiBAaW1wbGVtZW50YXRpb24gRE9NSW1wbGVtZW50YXRpb24K
IAorc3RhdGljIGlubGluZSBXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbiYgdW53cmFwKERPTUlt
cGxlbWVudGF0aW9uJiB3cmFwcGVyKQoreworICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbio+KHdyYXBwZXIuX2ludGVybmFsKTsKK30KKwogLSAo
dm9pZClkZWFsbG9jCiB7CiAgICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRlT25N
YWluVGhyZWFkKFtET01JbXBsZW1lbnRhdGlvbiBjbGFzc10sIHNlbGYpKQogICAgICAgICByZXR1
cm47Ci0KICAgICBpZiAoX2ludGVybmFsKQotICAgICAgICBJTVBMLT5kZXJlZigpOworICAgICAg
ICB1bndyYXAoKnNlbGYpLmRlcmVmKCk7CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCiAtIChC
T09MKWhhc0ZlYXR1cmU6KE5TU3RyaW5nICopZmVhdHVyZSB2ZXJzaW9uOihOU1N0cmluZyAqKXZl
cnNpb24KIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
cmV0dXJuIElNUEwtPmhhc0ZlYXR1cmUoZmVhdHVyZSwgdmVyc2lvbik7CisgICAgcmV0dXJuIHVu
d3JhcCgqc2VsZikuaGFzRmVhdHVyZShmZWF0dXJlLCB2ZXJzaW9uKTsKIH0KIAotLSAoQk9PTClo
YXNGZWF0dXJlOihOU1N0cmluZyAqKWZlYXR1cmUgOihOU1N0cmluZyAqKXZlcnNpb24KKy0gKERP
TURvY3VtZW50VHlwZSAqKWNyZWF0ZURvY3VtZW50VHlwZTooTlNTdHJpbmcgKilxdWFsaWZpZWRO
YW1lIHB1YmxpY0lkOihOU1N0cmluZyAqKXB1YmxpY0lkIHN5c3RlbUlkOihOU1N0cmluZyAqKXN5
c3RlbUlkCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IHJldHVybiBJTVBMLT5oYXNGZWF0dXJlKGZlYXR1cmUsIHZlcnNpb24pOworICAgIGF1dG8gcmVz
dWx0ID0gdW53cmFwKCpzZWxmKS5jcmVhdGVEb2N1bWVudFR5cGUocXVhbGlmaWVkTmFtZSwgcHVi
bGljSWQsIHN5c3RlbUlkKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAg
ICByYWlzZURPTUV4Y2VwdGlvbihyZXN1bHQuZXhjZXB0aW9uQ29kZSgpKTsKKyAgICByZXR1cm4g
a2l0KHJlc3VsdC50YWtlUmV0dXJuVmFsdWUoKS5wdHIoKSk7CiB9CiAKLS0gKERPTURvY3VtZW50
VHlwZSAqKWNyZWF0ZURvY3VtZW50VHlwZTooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIHB1Ymxp
Y0lkOihOU1N0cmluZyAqKXB1YmxpY0lkIHN5c3RlbUlkOihOU1N0cmluZyAqKXN5c3RlbUlkCist
IChET01Eb2N1bWVudCAqKWNyZWF0ZURvY3VtZW50OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSBx
dWFsaWZpZWROYW1lOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgZG9jdHlwZTooRE9NRG9jdW1l
bnRUeXBlICopZG9jdHlwZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Eb2N1bWVu
dFR5cGUgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5jcmVhdGVEb2N1bWVudFR5cGUo
cXVhbGlmaWVkTmFtZSwgcHVibGljSWQsIHN5c3RlbUlkLCBlYykpKTsKLSAgICByYWlzZU9uRE9N
RXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgYXV0byByZXN1bHQgPSB1bndyYXAo
KnNlbGYpLmNyZWF0ZURvY3VtZW50KG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgY29yZShk
b2N0eXBlKSk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmFpc2VE
T01FeGNlcHRpb24ocmVzdWx0LmV4Y2VwdGlvbkNvZGUoKSk7CisgICAgcmV0dXJuIGtpdChyZXN1
bHQudGFrZVJldHVyblZhbHVlKCkucHRyKCkpOwogfQogCi0tIChET01Eb2N1bWVudFR5cGUgKilj
cmVhdGVEb2N1bWVudFR5cGU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5nICop
cHVibGljSWQgOihOU1N0cmluZyAqKXN5c3RlbUlkCistIChET01DU1NTdHlsZVNoZWV0ICopY3Jl
YXRlQ1NTU3R5bGVTaGVldDooTlNTdHJpbmcgKil0aXRsZSBtZWRpYTooTlNTdHJpbmcgKiltZWRp
YQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Eb2N1bWVudFR5cGUgKnJlc3VsdCA9
IGtpdChXVEY6OmdldFB0cihJTVBMLT5jcmVhdGVEb2N1bWVudFR5cGUocXVhbGlmaWVkTmFtZSwg
cHVibGljSWQsIHN5c3RlbUlkLCBlYykpKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAg
IHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGtpdCh1bndyYXAoKnNlbGYpLmNyZWF0ZUNTU1N0
eWxlU2hlZXQodGl0bGUsIG1lZGlhKS5wdHIoKSk7CiB9CiAKLS0gKERPTURvY3VtZW50ICopY3Jl
YXRlRG9jdW1lbnQ6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIHF1YWxpZmllZE5hbWU6KE5TU3Ry
aW5nICopcXVhbGlmaWVkTmFtZSBkb2N0eXBlOihET01Eb2N1bWVudFR5cGUgKilkb2N0eXBlCist
IChET01IVE1MRG9jdW1lbnQgKiljcmVhdGVIVE1MRG9jdW1lbnQ6KE5TU3RyaW5nICopdGl0bGUK
IHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NRG9jdW1lbnQgKnJlc3VsdCA9IGtpdChX
VEY6OmdldFB0cihJTVBMLT5jcmVhdGVEb2N1bWVudChuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5h
bWUsIGNvcmUoZG9jdHlwZSksIGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4ga2l0KHVud3JhcCgqc2VsZikuY3JlYXRlSFRNTERv
Y3VtZW50KHRpdGxlKS5wdHIoKSk7CiB9CiAKLS0gKERPTURvY3VtZW50ICopY3JlYXRlRG9jdW1l
bnQ6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDoo
RE9NRG9jdW1lbnRUeXBlICopZG9jdHlwZQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gRE9NSW1w
bGVtZW50YXRpb24gKERPTUltcGxlbWVudGF0aW9uRGVwcmVjYXRlZCkKKworLSAoQk9PTCloYXNG
ZWF0dXJlOihOU1N0cmluZyAqKWZlYXR1cmUgOihOU1N0cmluZyAqKXZlcnNpb24KIHsKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NRG9jdW1lbnQgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0
cihJTVBMLT5jcmVhdGVEb2N1bWVudChuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIGNvcmUo
ZG9jdHlwZSksIGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICByZXR1cm4gW3NlbGYgaGFzRmVhdHVyZTpmZWF0dXJlIHZlcnNpb246dmVyc2lv
bl07CiB9CiAKLS0gKERPTUNTU1N0eWxlU2hlZXQgKiljcmVhdGVDU1NTdHlsZVNoZWV0OihOU1N0
cmluZyAqKXRpdGxlIG1lZGlhOihOU1N0cmluZyAqKW1lZGlhCistIChET01Eb2N1bWVudFR5cGUg
KiljcmVhdGVEb2N1bWVudFR5cGU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5n
ICopcHVibGljSWQgOihOU1N0cmluZyAqKXN5c3RlbUlkCiB7Ci0gICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIERPTUNTU1N0eWxlU2hlZXQgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5j
cmVhdGVDU1NTdHlsZVNoZWV0KHRpdGxlLCBtZWRpYSwgZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVy
cm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBbc2VsZiBjcmVhdGVEb2N1
bWVudFR5cGU6cXVhbGlmaWVkTmFtZSBwdWJsaWNJZDpwdWJsaWNJZCBzeXN0ZW1JZDpzeXN0ZW1J
ZF07CiB9CiAKLS0gKERPTUNTU1N0eWxlU2hlZXQgKiljcmVhdGVDU1NTdHlsZVNoZWV0OihOU1N0
cmluZyAqKXRpdGxlIDooTlNTdHJpbmcgKiltZWRpYQorLSAoRE9NRG9jdW1lbnQgKiljcmVhdGVE
b2N1bWVudDooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5h
bWUgOihET01Eb2N1bWVudFR5cGUgKilkb2N0eXBlCiB7Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIERPTUNTU1N0eWxlU2hlZXQgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5jcmVh
dGVDU1NTdHlsZVNoZWV0KHRpdGxlLCBtZWRpYSwgZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBbc2VsZiBjcmVhdGVEb2N1bWVu
dDpuYW1lc3BhY2VVUkkgcXVhbGlmaWVkTmFtZTpxdWFsaWZpZWROYW1lIGRvY3R5cGU6ZG9jdHlw
ZV07CiB9CiAKLS0gKERPTUhUTUxEb2N1bWVudCAqKWNyZWF0ZUhUTUxEb2N1bWVudDooTlNTdHJp
bmcgKil0aXRsZQorLSAoRE9NQ1NTU3R5bGVTaGVldCAqKWNyZWF0ZUNTU1N0eWxlU2hlZXQ6KE5T
U3RyaW5nICopdGl0bGUgOihOU1N0cmluZyAqKW1lZGlhCiB7Ci0gICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+
Y3JlYXRlSFRNTERvY3VtZW50KHRpdGxlKSkpOworICAgIHJldHVybiBbc2VsZiBjcmVhdGVDU1NT
dHlsZVNoZWV0OnRpdGxlIG1lZGlhOm1lZGlhXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvRE9NL0RPTURvY3VtZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvRE9N
L0RPTURvY3VtZW50Lm1tCmluZGV4IGE5YzNjZDgzYmYyMTFiNTFjYzQ4NTk5NDMwMjg0YTAwZTc5
Njg5MjguLjBlOWEyYTJkNGMwYjExMmFhOGI0OTNlZjM1NmQ2NGVjMTNhOTcwNGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9ET00vRE9NRG9jdW1lbnQubW0KQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbXBvcnQgIkRP
TUhUTUxFbGVtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUhUTUxIZWFkRWxlbWVudEludGVy
bmFsLmgiCiAjaW1wb3J0ICJET01IVE1MU2NyaXB0RWxlbWVudEludGVybmFsLmgiCi0jaW1wb3J0
IDxXZWJDb3JlL0RPTUltcGxlbWVudGF0aW9uLmg+CiAjaW1wb3J0ICJET01JbnRlcm5hbC5oIgog
I2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01Ob2RlSXRlcmF0b3JJbnRl
cm5hbC5oIgpAQCAtMTQ3LDkgKzE0Niw3IEBAIC0gKEJPT0wpeG1sU3RhbmRhbG9uZQogLSAodm9p
ZClzZXRYbWxTdGFuZGFsb25lOihCT09MKW5ld1htbFN0YW5kYWxvbmUKIHsKICAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgSU1QTC0+c2V0WE1MU3RhbmRhbG9uZShuZXdYbWxTdGFuZGFsb25lLCBl
Yyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICBJTVBMLT5zZXRYTUxTdGFuZGFsb25l
KG5ld1htbFN0YW5kYWxvbmUpOwogfQogCiAtIChOU1N0cmluZyAqKWRvY3VtZW50VVJJCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBhY2FkOGRlM2RlM2I5MmEzMzk5NDI5
ODA2NjA4M2ZmMDViZDliMGMzLi5hNGFkNjc4MTRhZWQ3YTVmYzlkNTUxNjQ1MTVhN2IzNWM2Mzgy
NmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTYxLDcgKzYxLDYg
QEAKICNpbXBvcnQgPFdlYkNvcmUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaD4KICNpbXBvcnQgPFdl
YkNvcmUvQ2hyb21lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL0RPTUltcGxlbWVudGF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlTWFu
YWdlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CkBAIC04MCw2ICs3OSw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNOb2RlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVS
ZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NYWluRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5oPgpA
QCAtMTAxLDkgKzEwMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL21hcmt1cC5oPgogI2ltcG9ydCA8
V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5o
PgorI2ltcG9ydCA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW1wb3J0IDxydW50aW1lL0pTTG9j
ay5oPgogI2ltcG9ydCA8cnVudGltZS9KU09iamVjdC5oPgotI2ltcG9ydCA8cnVudGltZS9KU0NK
U1ZhbHVlLmg+CiAjaW1wb3J0IDx3dGYvQ3VycmVudFRpbWUuaD4KIAogI2lmIFBMQVRGT1JNKElP
UykKQEAgLTExMSw3ICsxMTEsNiBAQAogI2ltcG9ydCAiV2ViUmVzb3VyY2UuaCIKICNpbXBvcnQg
IldlYlVJS2l0RGVsZWdhdGUuaCIKICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbXBv
cnQgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvckNsaWVudC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9u
dC5oPgpAQCAtOTg4LDcgKzk4Nyw3IEBAIC0gKEJPT0wpX2NhblByb3ZpZGVEb2N1bWVudFNvdXJj
ZQogICAgIFN0cmluZyBtaW1lVHlwZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5sb2FkZXIoKS0+d3Jp
dGVyKCkubWltZVR5cGUoKTsKICAgICBQbHVnaW5EYXRhKiBwbHVnaW5EYXRhID0gZnJhbWUtPnBh
Z2UoKSA/ICZmcmFtZS0+cGFnZSgpLT5wbHVnaW5EYXRhKCkgOiAwOwogCi0gICAgaWYgKFdlYkNv
cmU6OkRPTUltcGxlbWVudGF0aW9uOjppc1RleHRNSU1FVHlwZShtaW1lVHlwZSkKKyAgICBpZiAo
V2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNUZXh0TUlNRVR5cGUobWltZVR5cGUpCiAgICAg
ICAgIHx8IEltYWdlOjpzdXBwb3J0c1R5cGUobWltZVR5cGUpCiAgICAgICAgIHx8IChwbHVnaW5E
YXRhICYmIHBsdWdpbkRhdGEtPnN1cHBvcnRzV2ViVmlzaWJsZU1pbWVUeXBlKG1pbWVUeXBlLCBQ
bHVnaW5EYXRhOjpBbGxQbHVnaW5zKSAmJiBmcmFtZS0+bG9hZGVyKCkuc3ViZnJhbWVMb2FkZXIo
KS5hbGxvd1BsdWdpbnMoKSkKICAgICAgICAgfHwgKHBsdWdpbkRhdGEgJiYgcGx1Z2luRGF0YS0+
c3VwcG9ydHNXZWJWaXNpYmxlTWltZVR5cGUobWltZVR5cGUsIFBsdWdpbkRhdGE6Ok9ubHlBcHBs
aWNhdGlvblBsdWdpbnMpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJGcmFtZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5
LmNwcAppbmRleCAxNWI4ZTI4ZjIzMDA5MjlkMjIwZTczM2JmZjAwNjMwMGQxM2FhZGJmLi5jZDcw
Njk4NTgyNjc2NzI0ZGYxMDc0OTliYzg5MzE1NzhjM2NhMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAi
V2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RPTUltcGxlbWVudGF0aW9uLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVS
ZWdpc3RyeS5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0xMTcsMTUgKzExNiwxMyBAQCBib29s
IFdlYkZyYW1lUHJveHk6OmlzRGlzcGxheWluZ1N0YW5kYWxvbmVNZWRpYURvY3VtZW50KCkgY29u
c3QKIAogYm9vbCBXZWJGcmFtZVByb3h5Ojppc0Rpc3BsYXlpbmdNYXJrdXBEb2N1bWVudCgpIGNv
bnN0CiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgc2hvdWxkIGJlIG1vdmVkIHRvIHNvbWV3
aGVyZSBpbiBXZWJDb3JlLgotICAgIHJldHVybiBtX01JTUVUeXBlID09ICJ0ZXh0L2h0bWwiIHx8
IG1fTUlNRVR5cGUgPT0gImltYWdlL3N2Zyt4bWwiIHx8IG1fTUlNRVR5cGUgPT0gImFwcGxpY2F0
aW9uL3gtd2ViYXJjaGl2ZSIgfHwgRE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlNRVR5cGUobV9N
SU1FVHlwZSk7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgY2FsbCB0byBhIHNpbmds
ZSBNSU1FVHlwZVJlZ2lzdHJ5IGZ1bmN0aW9uOyBhZGRpbmcgYSBuZXcgb25lIGlmIG5lZWRlZC4K
KyAgICAvLyBGSVhNRTogVGhpcyBpcyBkb2luZyBjYXNlIHNlbnNpdGl2ZSBjb21wYXJpc29ucyBv
biBNSU1FIHR5cGVzLCBzaG91bGQgYmUgdXNpbmcgQVNDSUkgY2FzZSBpbnNlbnNpdGl2ZSBpbnN0
ZWFkLgorICAgIHJldHVybiBtX01JTUVUeXBlID09ICJ0ZXh0L2h0bWwiIHx8IG1fTUlNRVR5cGUg
PT0gImltYWdlL3N2Zyt4bWwiIHx8IG1fTUlNRVR5cGUgPT0gImFwcGxpY2F0aW9uL3gtd2ViYXJj
aGl2ZSIgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZShtX01JTUVUeXBlKTsKIH0K
IAogYm9vbCBXZWJGcmFtZVByb3h5Ojppc0Rpc3BsYXlpbmdQREZEb2N1bWVudCgpIGNvbnN0CiB7
Ci0gICAgaWYgKG1fTUlNRVR5cGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
ICAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZSht
X01JTUVUeXBlKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287222</attachid>
            <date>2016-08-28 00:26:44 -0700</date>
            <delta_ts>2016-09-03 08:14:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161295-20160828002437.patch</filename>
            <type>text/plain</type>
            <size>67225</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1MDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM5ODA4MTY0ZTA2MGU2
ZmFlN2RjM2I3NzI1NGQ3YTQ5ZGExMWFkOC4uNDc4MGQyMTdhYmZhNjk5N2NmYmZkMzcxNDQwODQz
MzU2Nzk3NDlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDE2LTA4LTI4ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJlYW1saW5lIERPTUltcGxl
bWVudGF0aW9uLCBhbmQgbW92ZSBpdCB0byBvdXIgbmV3IERPTSBleGNlcHRpb24gc3lzdGVtCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEyOTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgbmV3IGhlYWRlcnMgdG8gcHJvamVjdC4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6dG9KUyk6IEFkZGVkIGFuIG92ZXJsb2FkIGZvciBFeGNlcHRpb25Pcjw+OyB0aGlzIGhhbmRs
ZXMgdGhlCisgICAgICAgIGV4Y2VwdGlvbiBjYXNlIGhlcmUgc28gaXQgZG9lc24ndCBuZWVkIHRv
IGJlIGhhbmRsZWQgaW4gZ2VuZXJhdGVkIGNvZGUKKyAgICAgICAgZm9yIHRoZSBiaW5kaW5nLiBJ
bXBsZW1lbnRlZCBoZXJlIHNvIHRoYXQgRXhjZXB0aW9uT3IuaCBkb2VzIG5vdCBrbm93CisgICAg
ICAgIGFib3V0IGJpbmRpbmdzLiBCdXQgc2luY2UgdGhpcyBpcyBhIHRlbXBsYXRlLCBpdCB3aWxs
IG9ubHkgY29tcGlsZSB3aGVuCisgICAgICAgIGluc3RhbnRpYXRlZCBhbmQgdGhlcmUgaXMgbm8g
bmVlZCB0byBpbmNsdWRlIEV4Y2VwdGlvbk9yLmggYW5kIGluZGlyZWN0bHkKKyAgICAgICAgdGhl
IFZhcmlhbnQuaCBoZWFkZXIgaW4gdGhpcyBoZWFkZXIuCisgICAgICAgIChXZWJDb3JlOjp0b0pT
TmV3bHlDcmVhdGVkKTogRGl0dG8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbik6
IFJlZmVyIHRvIEpTQzo6RXhjZXB0aW9uIHdpdGggZXhwbGljaXQKKyAgICAgICAgbmFtZXNwYWNl
IHRvIGF2b2lkIGFtYmlndWl0eSB3aXRoIFdlYkNvcmU6OkV4Y2VwdGlvbi4KKworICAgICAgICAq
IGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1l
bnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnRUeXBlKTogQ2hhbmdlZCB0byByZXR1cm4KKyAgICAgICAg
RXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVYTUxEb2N1bWVudCk6IEFkZGVk
LiBIZWxwZXIgdXNlZCBpbiBjcmVhdGVEb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUlt
cGxlbWVudGF0aW9uOjpnZXRJbnRlcmZhY2UpOiBEZWxldGVkLiBUaGlzIHdhcyB1bnVzZWQuCisg
ICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQpOiBDaGFu
Z2VkIHRvIHJldHVybgorICAgICAgICBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkRP
TUltcGxlbWVudGF0aW9uOjpjcmVhdGVDU1NTdHlsZVNoZWV0KTogUmVtb3ZlZCB0aGUgdW51c2Vk
CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgb3V0IGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6
aXNWYWxpZFhNTE1JTUVUeXBlQ2hhcik6IERlbGV0ZWQuIE1vdmVkIHRvIE1JTUVUeXBlUmVnaXN0
cnkuCisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlwZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmlzVGV4dE1JTUVU
eXBlKTogRGl0dG8uCisKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uaDogQ2hhbmdl
ZCBmdW5jdGlvbnMgYXMgZGVzY3JpYmVkIGFib3ZlIHRvCisgICAgICAgIHJldHVybiBFeGNlcHRp
b25PciB2YWx1ZXMuIEFsc28gcmVtb3ZlZCB1bnVzZWQgZ2V0SW50ZXJmYWNlIGZ1bmN0aW9uLAor
ICAgICAgICBhbmQgaXNYTUxNSU1FVHlwZSBhbmQgaXNUZXh0TUlNRVR5cGUsIHdoaWNoIGJvdGgg
bW92ZWQgdG8gdGhlCisgICAgICAgIE1JTUVUeXBlUmVnaXN0cnkgY2xhc3MgYWxvbmdzaWRlIGFs
bCB0aGUgb3RoZXIgc2ltaWxhciBNSU1FIHR5cGUKKyAgICAgICAgZnVuY3Rpb25zLgorCisgICAg
ICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbDogUmVvcmdhbml6ZWQgdGhpcyB0byBtYXRj
aCB0aGUgSURMIGZpbGVzCisgICAgICAgIGluIHRoZSBzcGVjaWZpY2F0aW9ucyBhIGxpdHRsZSBi
ZXR0ZXIuIEFsc28gcmVtb3ZlZCBbUmFpc2VzRXhjZXB0aW9uXQorICAgICAgICBzaW5jZSB0aGF0
IGlzIG9ubHkgbmVlZGVkIGZvciB0aGUgb2xkIGxlZ2FjeSBFeGNlcHRpb25Db2RlJiBzdHlsZS4K
KworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6c2V0WE1MVmVyc2lvbik6IFJlbW92ZWQgY2FsbCB0byB0aGUKKyAgICAgICAgRE9NSW1wbGVt
ZW50YXRpb246Omhhc0ZlYXR1cmUgZnVuY3Rpb24gc2luY2UgdGhlIHZhbHVlcyBwYXNzZWQgaW4K
KyAgICAgICAgdW5jb25kaXRpb25hbGx5IHJlc3VsdCBpbiB0aGUgcmV0dXJuIHZhbHVlICJ0cnVl
Ii4gVGhpcyBpcyBsZWZ0IG92ZXIKKyAgICAgICAgZWl0aGVyIGZyb20gc3BlY2lmaWNhdGlvbiBs
YW5ndWFnZSwgb3IgZnJvbSBhbiBhbmNpZW50IHZlcnNpb24gb2YgdGhpcworICAgICAgICBjb2Rl
IHRoYXQgd29ya2VkIGluIGEgIm5vIFhNTCBzdXBwb3J0ZWQiIG1vZGUuCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6c2V0WE1MU3RhbmRhbG9uZSk6IERpdHRvLgorCisgICAgICAgICogZG9t
L0RvY3VtZW50Lmg6IFJlbW92ZWQgdGhlIEV4Y2VwdGlvbkNvZGUmIG91dCBhcmd1bWVudCBmcm9t
IHNldFhNTFN0YW5kYWxvbmUuCisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDogUmVtb3ZlZCBb
U2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBmcm9tIHhtbFN0YW5kYWxvbmUuCisKKyAgICAgICAgKiBk
b20vRXhjZXB0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIGRvbS9FeGNlcHRpb25Pci5oOiBBZGRl
ZC4KKworICAgICAgICAqIGh0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHA6IFJlbW92ZWQgdW5u
ZWVkZWQgaW5jbHVkZSBvZiBET01JbXBsZW1lbnRhdGlvbi5oLgorCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVYSFJU
ZXh0RGVjb2Rlcik6IFVzZSBpc1hNTE1JTUVUeXBlIGluIGl0cyBuZXcgbG9jYXRpb24gaW4KKyAg
ICAgICAgTUlNRVR5cGVSZWdpc3RyeS4KKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlT3RoZXJSZXNvdXJjZVRleHRE
ZWNvZGVyKTogRGl0dG8uCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOiBSZW1v
dmVkIHVubmVlZGVkIGluY2x1ZGUgb2YgRE9NSW1wbGVtZW50YXRpb24uaC4KKworICAgICAgICAq
IGxvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRS
ZXNvdXJjZURlY29kZXI6OmRldGVybWluZUNvbnRlbnRUeXBlKTogVXNlIGlzWE1MTUlNRVR5cGUg
aW4gaXRzCisgICAgICAgIG5ldyBsb2NhdGlvbiBpbiBNSU1FVHlwZVJlZ2lzdHJ5LgorCisgICAg
ICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1RleHRNSU1FVHlwZSk6IEFkZGVkLiBNb3ZlZCBoZXJlIGZyb20K
KyAgICAgICAgRE9NSW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkWE1M
TUlNRVR5cGVDaGFyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1hNTE1JTUVUeXBlKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJl
Z2lzdHJ5Lmg6IEFkZGVkIGlzWE1MTUlNRVR5cGUgYW5kIGlzVGV4dE1JTUVUeXBlLgorICAgICAg
ICBNYWRlIGlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUgcHJpdmF0ZS4KKworICAgICAgICAqIHN2
Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmlzU3VwcG9y
dGVkKTogRGVsZXRlZC4gVGhpcyBmdW5jdGlvbiB3YXMgbmV2ZXIgY2FsbGVkLgorICAgICAgICAq
IHN2Zy9TVkdFbGVtZW50Lmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZSBjaGFuZ2UuCisKKyAgICAg
ICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OnJlc3BvbnNlSXNYTUwpOiBVc2UgaXNYTUxNSU1FVHlwZSBpbiBpdHMgbmV3CisgICAg
ICAgIGxvY2F0aW9uIGluIE1JTUVUeXBlUmVnaXN0cnkuCisKKyAgICAgICAgKiB4bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1
bWVudFBhcnNlcjo6c3RhcnREb2N1bWVudCk6IFVwZGF0ZWQgc2luY2Ugc2V0WE1MU3RhbmRhbG9u
ZQorICAgICAgICBubyBsb25nZXIgY2FuIHJhaXNlIGFuIGV4Y2VwdGlvbi4KKwogMjAxNi0wOC0y
NyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFVSTFBhcnNlciBzaG91bGQgcGFyc2UgcmVsYXRpdmUgVVJMcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4
IGIzYWE5NDIzMzg2MmEyYTkyY2U1NmU0OGUwNDgxZjM1ZTdjYmU4YWUuLmQxMzYwYjI2MGM1NmUx
ZWMzMTRiMGRmYmI3NjUyYTBlMjkwZTliNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
NSBAQAorMjAxNi0wOC0yOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3RyZWFtbGluZSBET01JbXBsZW1lbnRhdGlvbiwgYW5kIG1vdmUgaXQgdG8gb3VyIG5ldyBE
T00gZXhjZXB0aW9uIHN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYxMjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBET00vRE9NRE9NSW1wbGVtZW50YXRpb24ubW06CisgICAgICAgICh1bndy
YXApOiBBZGRlZC4gVXNlIHRoaXMgaW5zdGVhZCBvZiB0aGUgSU1QTCBtYWNyby4KKyAgICAgICAg
KC1bRE9NSW1wbGVtZW50YXRpb24gZGVhbGxvY10pOiBVcGRhdGVkIHRvIHVzZSB1bndyYXAuCisg
ICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGhhc0ZlYXR1cmU6dmVyc2lvbjpdKTogRGl0dG8u
CisgICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGNyZWF0ZURvY3VtZW50VHlwZTpwdWJsaWNJ
ZDpzeXN0ZW1JZDpdKTogVXBkYXRlZCB0byB3b3JrIHdpdGgKKyAgICAgICAgRXhjZXB0aW9uT3Iu
CisgICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGNyZWF0ZURvY3VtZW50OnF1YWxpZmllZE5h
bWU6ZG9jdHlwZTpdKTogRGl0dG8uCisgICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGNyZWF0
ZUNTU1N0eWxlU2hlZXQ6bWVkaWE6XSk6IFJlbW92ZWQgZXhjZXB0aW9uIGxvZ2ljIHNpbmNlCisg
ICAgICAgIHRoaXMgZnVuY3Rpb24gY2FuIG5vIGxvbmdlciByYWlzZSBhbiBleGNlcHRpb24uCisg
ICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGNyZWF0ZUhUTUxEb2N1bWVudDpdKTogVXBkYXRl
ZCB0byB1c2UgdW53cmFwLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBoYXNGZWF0dXJl
OjpdKTogQ2hhbmdlZCB0byBjYWxsIHRoZSBub24tZGVwcmVjYXRlZCB2ZXJzaW9uCisgICAgICAg
IHJhdGhlciB0aGFuIGR1cGxpY2F0aW5nIGl0cyBpbXBsZW1lbnRhdGlvbi4gQWxzbyBtb3ZlZCBp
bnRvIHRoZSBjYXRlZ29yeSBhcyBkZWZpbmVkCisgICAgICAgIGluIHRoZSBoZWFkZXIuCisgICAg
ICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGNyZWF0ZURvY3VtZW50VHlwZTo6Ol0pOiBEaXR0by4K
KyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24gY3JlYXRlRG9jdW1lbnQ6OjpdKTogRGl0dG8u
CisgICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGNyZWF0ZUNTU1N0eWxlU2hlZXQ6Ol0pOiBE
aXR0by4KKworICAgICAgICAqIERPTS9ET01Eb2N1bWVudC5tbTogUmVtb3ZlZCB1bm5lZWRlZCBp
bmNsdWRlIG9mIERPTUltcGxlbWVudGF0aW9uLmguCisgICAgICAgICgtW0RPTURvY3VtZW50IHNl
dFhtbFN0YW5kYWxvbmU6XSk6IFVwZGF0ZWQgc2luY2Ugc2V0WE1MU3RhbmRhbG9uZSBubyBsb25n
ZXIgY2FuCisgICAgICAgIHJhaXNlIGFuIGV4Y2VwdGlvbi4KKworICAgICAgICAqIFdlYlZpZXcv
V2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9jYW5Qcm92aWRlRG9jdW1lbnRTb3Vy
Y2VdKTogVXBkYXRlZCB0byB1c2UgaXNUZXh0TUlNRVR5cGUgaW4gaXRzIG5ldworICAgICAgICBs
b2NhdGlvbiBpbiBNSU1FVHlwZVJlZ2lzdHJ5IGluc3RlYWQgb2YgaW4gRE9NSW1wbGVtZW50YXRp
b24uCisKIDIwMTYtMDgtMjYgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZW1vdmUgc3VwcG9ydCBmb3IgRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZwppbmRleCA0YjFjZjZiNTYxMmE5NzkyNmM4NTA1MmZhZDgzODM5NTRkMDNlMGJmLi4wOTkxYjQ2
YWY1YzQ0NDVmYTNmOWU5ZDU2ZjY2ZmIxNDQ4MDI3YWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTYtMDgtMjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIFN0cmVhbWxpbmUgRE9NSW1wbGVtZW50YXRpb24sIGFuZCBtb3ZlIGl0IHRvIG91
ciBuZXcgRE9NIGV4Y2VwdGlvbiBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MTI5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OmNh
blByb3ZpZGVEb2N1bWVudFNvdXJjZSk6IFVwZGF0ZWQgdG8gdXNlIGlzWE1MTUlNRVR5cGUgaW4g
aXRzIG5ldworICAgICAgICBsb2NhdGlvbiBpbiBNSU1FVHlwZVJlZ2lzdHJ5IGluc3RlYWQgb2Yg
aW4gRE9NSW1wbGVtZW50YXRpb24uCisKIDIwMTYtMDgtMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgRG9jdW1lbnQmIGluc3RlYWQg
b2YgRG9jdW1lbnQqIHdoZW4gZ2V0dGluZyBjb29raWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNmNjZDVkNWVj
ZjJlZTUwN2Q1N2YwYTVmYjE3NjYxNzNkOWUyOGQ4Zi4uYmUzY2M3MjdmNWVmYjVkYTEwMjllY2Mx
NzBiOWZlNmY4MGMzYmI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE2LTA4LTI4
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJlYW1saW5lIERP
TUltcGxlbWVudGF0aW9uLCBhbmQgbW92ZSBpdCB0byBvdXIgbmV3IERPTSBleGNlcHRpb24gc3lz
dGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEy
OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94
eTo6aXNEaXNwbGF5aW5nTWFya3VwRG9jdW1lbnQpOiBVc2UgaXNYTUxNSU1FVHlwZSBpbiBpdHMK
KyAgICAgICAgbmV3IGxvY2F0aW9uIGluIE1JTUVUeXBlUmVnaXN0cnkgcmF0aGVyIHRoYW4gaW4g
RE9NSW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUHJveHk6OmlzRGlz
cGxheWluZ1BERkRvY3VtZW50KTogUmVtb3ZlZCB1bm5lZWRlZCByZWR1bmRhbnQKKyAgICAgICAg
Y2hlY2sgZm9yIGVtcHR5IHN0cmluZywgYWxyZWFkeSBkb25lIGJ5IE1JTUVUeXBlUmVnaXN0cnku
CisKIDIwMTYtMDgtMjcgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFdUUiBuZWVkcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBzZXRBdXRvbWF0aWNMaW5rRGV0
ZWN0aW9uRW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDE2YWQ2MThiZjZmZDRhMDQ2YTY3ZTIyMTdlMGYzYzMzN2U1ZTFm
NTEuLjY2Y2NmYTJiZTRmMzlkZmI4ZDlkOTNkYjEwYzM3YWZjOWJhZGEwYWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMyNzAs
NiArMzI3MCw4IEBACiAJCTkzQzRGNkVCMTEwOEY5QTUwMDk5RDBEQiAvKiBBY2Nlc3NpYmlsaXR5
U2Nyb2xsYmFyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0M0RjZFOTExMDhGOUE1MDA5OUQwREIgLyogQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oICov
OyB9OwogCQk5M0NDRjAyNzBBRjZDNTI5MDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDQ0YwMjYwQUY2
QzUyOTAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0NDRjA2MDBBRjZDQTc2MDAwMThFODkgLyog
TmF2aWdhdGlvbkFjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0NDRjA1RjBBRjZDQTc2MDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5j
cHAgKi87IH07CisJCTkzRDE5NjMxMUQ2Q0FCNzYwMEZDN0U0NyAvKiBFeGNlcHRpb25Pci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNEMTk2MzAxRDZD
QUI3NjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbk9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNEMTk2MzMxRDZDQUI4MjAwRkM3RTQ3IC8qIEV4Y2Vw
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNE
MTk2MzIxRDZDQUI4MjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRDQzNzlGMUQ1N0IxNTMwMEFCODVFQSAv
KiBKU01haW5UaHJlYWRFeGVjU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDhGOTM0RDgzMTE4OUYxRUUwMDUwOEQ1RCAvKiBKU01haW5UaHJlYWRF
eGVjU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5M0Q0MzdBMDFENTdCMTlBMDBBQjg1RUEgLyogQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVl
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNTZD
OUE4MUM4OTMxMjgwMEM0NTZERiAvKiBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRDQzN0ExMUQ1
N0IzRjQwMEFCODVFQSAvKiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREUxMUY0QTE4RDgzMTFCMDA3ODk4
M0IgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDQwMCw2ICsxMDQwMiw4IEBACiAJCTkzQ0E0
Q0EyMDlERjkzRkEwMERGODY3NyAvKiBzdmcuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IHN2
Zy5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQ0NGMDI2MEFGNkM1MjkwMDAx
OEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5hdmlnYXRpb25BY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTND
Q0YwNUYwQUY2Q0E3NjAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF2aWdhdGlvbkFjdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDE5NjMwMUQ2Q0FCNzYwMEZDN0U0NyAvKiBFeGNlcHRp
b25Pci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNlcHRpb25Pci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0QxOTYzMjFENkNBQjgyMDBGQzdFNDcgLyog
RXhjZXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4Y2VwdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Q5RDUzQjBEQTI3RTE4MDA3NzIxNkMg
LyogUmFuZ2VCb3VuZGFyeVBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJhbmdlQm91bmRhcnlQb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Uy
MjdEQjBBRjU4OUFEMDBENDgzMjQgLyogRG9jdW1lbnRMb2FkZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0UyMjdERDBBRjU4OUFEMDBENDgzMjQgLyogTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjI4OTQsMTEgKzIyODk4LDEzIEBACiAJCQkJRTEyRURCN0EwQjMwOEE3ODAwMjcwNEI2
IC8qIEV2ZW50VGFyZ2V0LmggKi8sCiAJCQkJODVBRkE3NDIwQUFGMjk4NDAwRTg0MzA1IC8qIEV2
ZW50VGFyZ2V0LmlkbCAqLywKIAkJCQlDRENFNUNEMDE0NjMzQkM5MDBENDdDQ0EgLyogRXZlbnRU
YXJnZXRGYWN0b3J5LmluICovLAorCQkJCTkzRDE5NjMyMUQ2Q0FCODIwMEZDN0U0NyAvKiBFeGNl
cHRpb24uaCAqLywKIAkJCQlCQzYwRDhGMDBEMkExMUUwMDBCOTkxOEYgLyogRXhjZXB0aW9uQmFz
ZS5jcHAgKi8sCiAJCQkJQkM2MEQ4RjEwRDJBMTFFMDAwQjk5MThGIC8qIEV4Y2VwdGlvbkJhc2Uu
aCAqLywKIAkJCQk5MzVGQkNGMTA5QkExNDNCMDBFMjMwQjEgLyogRXhjZXB0aW9uQ29kZS5oICov
LAogCQkJCUE3Q0FDREIwMTNDRTg3NUIwMEJCQkUzRiAvKiBFeGNlcHRpb25Db2RlUGxhY2Vob2xk
ZXIuY3BwICovLAogCQkJCUE3NEJCNzZBMTNCREE4NjMwMEZGN0JGMCAvKiBFeGNlcHRpb25Db2Rl
UGxhY2Vob2xkZXIuaCAqLywKKwkJCQk5M0QxOTYzMDFENkNBQjc2MDBGQzdFNDcgLyogRXhjZXB0
aW9uT3IuaCAqLywKIAkJCQlFNDdFMjc2NzE2MDM2RURDMDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5
bGVTaGVldHMuY3BwICovLAogCQkJCUU0N0UyNzY0MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNp
b25TdHlsZVNoZWV0cy5oICovLAogCQkJCUI2RDlEMjM0MTRFQUJEMjYwMDkwRDc1RSAvKiBGb2N1
c0V2ZW50LmNwcCAqLywKQEAgLTI1NDg2LDYgKzI1NDkyLDcgQEAKIAkJCQkwNzhFMDkzOTE3RDE2
QjJDMDA0MjBBQTEgLyogTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDc4RTA5MTYxN0QxNEQxQzAwNDIwQUExIC8qIE1lZGlhU3RyZWFtRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA3OEUwOTM3MTdEMTZCMkMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbVBy
aXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDE5NjMzMUQ2Q0FCODIwMEZDN0U0NyAvKiBF
eGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTE3MTdEMTREMUMwMDQyMEFBMSAv
KiBNZWRpYVN0cmVhbVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkxODE3RDE0
RDFDMDA0MjBBQTEgLyogTWVkaWFTdHJlYW1UcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4
RTA5MTkxN0QxNEQxQzAwNDIwQUExIC8qIE1lZGlhU3RyZWFtVHJhY2tFdmVudC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNjU1Myw2ICsyNjU2MCw3IEBACiAJCQkJQjIyMjdBRDcwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1RyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBREEwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybWFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3
QUREMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1EaXN0YW5jZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJOTNEMTk2MzExRDZDQUI3NjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbk9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMjIyN0FERjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtTGlz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhDNzEzNkUxMjg5NTZBMzAwMUIxMDdFIC8qIFNWR1Ry
YW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUUy
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUUmVmRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IDRmMTVmODJkZGM1MjM0
NzM3NDUwYzJmNzRmN2NkMGYyYTJlNzRiMDUuLmMzMGM2ZDc5OGFhZjc4MWQ1MTg2MDU2ZDc5MTQ0
MGM3ZWM0M2YyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5o
CkBAIC0yMyw5ICsyMyw5IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRE9NV3JhcHBl
cldvcmxkLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0RP
TVdyYXBwZXIuaCIKLSNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJTY3Jp
cHRXcmFwcGFibGUuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmgiCkBAIC02OCw3ICs2OCw5IEBAIGNs
YXNzIE5vZGU7CiAKIHN0cnVjdCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2U7CiAKLXR5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRXhjZXB0aW9uT3I7
CisKK3VzaW5nIEV4Y2VwdGlvbkNvZGUgPSBpbnQ7CiAKIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxz
IHsKICAgICBTdHJpbmcgbWVzc2FnZTsKQEAgLTE4NSw2ICsxODcsOSBAQCBKU0M6OkpTVmFsdWUg
Y3JlYXRlRE9NRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgRXhjZXB0aW9uQ29kZSwgY29uc3Qg
U3RyaW5nJik7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERPTUV4Y2VwdGlvbihKU0M6OkV4ZWNT
dGF0ZSosIEV4Y2VwdGlvbkNvZGUpOwogdm9pZCBzZXRET01FeGNlcHRpb24oSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKTsKIAordGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9i
YWxPYmplY3QqLCBFeGNlcHRpb25PcjxUPiYmKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGlu
ZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xv
YmFsT2JqZWN0KiwgRXhjZXB0aW9uT3I8VD4mJik7CisKIEpTQzo6SlNWYWx1ZSBqc1N0cmluZyhK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFVSTCYpOyAvLyBlbXB0eSBpZiB0aGUgVVJMIGlzIG51bGwK
IAogSlNDOjpKU1ZhbHVlIGpzU3RyaW5nT3JOdWxsKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3Ry
aW5nJik7IC8vIG51bGwgaWYgdGhlIHN0cmluZyBpcyBudWxsCkBAIC03OTAsNCArNzk1LDIzIEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9OdWxsYWJsZUpTTnVt
YmVyKE9wdGlvbmFsPFQ+IG9wdGlvbmFsCiAgICAgcmV0dXJuIG9wdGlvbmFsTnVtYmVyID8gSlND
Ojpqc051bWJlcihvcHRpb25hbE51bWJlci52YWx1ZSgpKSA6IEpTQzo6anNOdWxsKCk7CiB9CiAK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbk9y
PFQ+JiYgdmFsdWUpCit7CisgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhhc0V4Y2VwdGlvbigpKSkg
eworICAgICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIHZhbHVlLmV4Y2VwdGlvbkNvZGUoKSk7
CisgICAgICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7CisgICAgfQorICAgIHJldHVybiB0
b0pTKHN0YXRlLCBnbG9iYWxPYmplY3QsIHZhbHVlLnRha2VSZXR1cm5WYWx1ZSgpKTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVk
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RXhjZXB0aW9uT3I8VD4mJiB2YWx1ZSkKK3sKKyAgICAvLyBGSVhNRTogSXQncyByZWFsbHkgYW5u
b3lpbmcgdG8gaGF2ZSB0d28gb2YgdGhlc2UgZnVuY3Rpb25zLiBTaG91bGQgZmluZCBhIHdheSB0
byBjb21iaW5lIHRvSlMgYW5kIHRvSlNOZXdseUNyZWF0ZWQuCisgICAgaWYgKFVOTElLRUxZKHZh
bHVlLmhhc0V4Y2VwdGlvbigpKSkgeworICAgICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIHZh
bHVlLmV4Y2VwdGlvbkNvZGUoKSk7CisgICAgICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7
CisgICAgfQorICAgIHJldHVybiB0b0pTTmV3bHlDcmVhdGVkKHN0YXRlLCBnbG9iYWxPYmplY3Qs
IHZhbHVlLnRha2VSZXR1cm5WYWx1ZSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQppbmRleCBkNzI0Yzg3ZDhkZWExYTc4Nzg1ZmY2ZGM3MTE3MjA4MzZiMjcyMjkxLi5mNmNkMDg4
NTUwNWFkNDIyMzYxOWJjZGFhZTcxYjUxMDBkOTAxMjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDMxOCw3ICs0MzE4
LDcgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGFyZ3MuYXBwZW5kKCIgLiBOYXRpdmVUb0pTVmFsdWUo
JHBhcmFtLCAxLCAkaW50ZXJmYWNlLCAkcGFyYW1OYW1lLCAibV9kYXRhIikgLiAiKTtcbiIpOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuICAgIE5h
a2VkUHRyPEV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiXG4gICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVk
RXhjZXB0aW9uO1xuIik7CiAKICAgICAgICAgICAgIG15ICRwcm9wZXJ0eVRvTG9va3VwID0gIklk
ZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsIFwiJHtmdW5jdGlvbk5hbWV9XCIpIjsKICAgICAg
ICAgICAgIG15ICRpbnZva2VNZXRob2QgPSAiSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6
RnVuY3Rpb25Pck9iamVjdCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1w
bGVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNw
cAppbmRleCBhZmEzNjI4ODI0YTBmYWYzMDRkOGRiYmNmNTRlMmIzY2E4NzE4OTEyLi5lZmJlNTFm
ZmY1OWQ3NGU5M2QzOTRlOGM5MDU3NTVkNDE2YjgwNzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
T01JbXBsZW1lbnRhdGlvbi5jcHAKQEAgLTI1LDI1ICsyNSwyNSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAKLSNpbmNsdWRlICJDb250ZW50
VHlwZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKKyNpbmNsdWRlICJDb250ZW50VHlw
ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50VHlwZS5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiRlRQRGlyZWN0b3J5RG9jdW1lbnQu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRlICJGVFBEaXJlY3RvcnlEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxIZWFkRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxUaXRsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2lu
Y2x1ZGUgIkltYWdlRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTWVkaWFEb2N1bWVudC5oIgotI2luY2x1
ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCi0jaW5jbHVkZSAiTUlN
RVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJQbHVnaW5Eb2N1bWVudC5o
IgpAQCAtNzMsNiArNzMsNyBAQCBzdGF0aWMgdm9pZCBhZGRTdHJpbmcoRmVhdHVyZVNldCYgc2V0
LCBjb25zdCBjaGFyKiBzdHJpbmcpCiB9CiAKICNpZiBFTkFCTEUoVklERU8pCisKIGNsYXNzIERP
TUltcGxlbWVudGF0aW9uU3VwcG9ydHNUeXBlQ2xpZW50IDogcHVibGljIE1lZGlhUGxheWVyU3Vw
cG9ydHNUeXBlQ2xpZW50IHsKIHB1YmxpYzoKICAgICBET01JbXBsZW1lbnRhdGlvblN1cHBvcnRz
VHlwZUNsaWVudChib29sIG5lZWRzSGFja3MsIGNvbnN0IFN0cmluZyYgaG9zdCkKQEAgLTg4LDYg
Kzg5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbmVlZHNIYWNrczsKICAgICBTdHJpbmcgbV9o
b3N0OwogfTsKKwogI2VuZGlmCiAKIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkU1ZHMTBGZWF0dXJl
KGNvbnN0IFN0cmluZyYgZmVhdHVyZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQpAQCAtMjA3LDEw
MyArMjA5LDU4IEBAIGJvb2wgRE9NSW1wbGVtZW50YXRpb246Omhhc0ZlYXR1cmUoY29uc3QgU3Ry
aW5nJiBmZWF0dXJlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLVJlZlB0cjxEb2N1bWVudFR5cGU+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVu
dFR5cGUoY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLAotICAgIGNvbnN0IFN0cmluZyYgcHVi
bGljSWQsIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0
aW9uT3I8UmVmPERvY3VtZW50VHlwZT4+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVu
dFR5cGUoY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBjb25zdCBTdHJpbmcmIHB1YmxpY0lk
LCBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKQogewotICAgIFN0cmluZyBwcmVmaXgsIGxvY2FsTmFt
ZTsKLSAgICBpZiAoIURvY3VtZW50OjpwYXJzZVF1YWxpZmllZE5hbWUocXVhbGlmaWVkTmFtZSwg
cHJlZml4LCBsb2NhbE5hbWUsIGVjKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgU3RyaW5nIHByZWZpeDsKKyAgICBTdHJpbmcgbG9jYWxOYW1lOwor
ICAgIERvY3VtZW50OjpwYXJzZVF1YWxpZmllZE5hbWUocXVhbGlmaWVkTmFtZSwgcHJlZml4LCBs
b2NhbE5hbWUsIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24oZWMp
OwogCiAgICAgcmV0dXJuIERvY3VtZW50VHlwZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHF1YWxpZmll
ZE5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCk7CiB9CiAKLURPTUltcGxlbWVudGF0aW9uKiBET01J
bXBsZW1lbnRhdGlvbjo6Z2V0SW50ZXJmYWNlKGNvbnN0IFN0cmluZyYgLypmZWF0dXJlKi8pCitz
dGF0aWMgaW5saW5lIFJlZjxYTUxEb2N1bWVudD4gY3JlYXRlWE1MRG9jdW1lbnQoY29uc3QgU3Ry
aW5nJiBuYW1lc3BhY2VVUkkpCiB7Ci0gICAgcmV0dXJuIDA7CisgICAgaWYgKG5hbWVzcGFjZVVS
SSA9PSBTVkdOYW1lczo6c3ZnTmFtZXNwYWNlVVJJKQorICAgICAgICByZXR1cm4gU1ZHRG9jdW1l
bnQ6OmNyZWF0ZShudWxscHRyLCBVUkwoKSk7CisgICAgaWYgKG5hbWVzcGFjZVVSSSA9PSBIVE1M
TmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKQorICAgICAgICByZXR1cm4gWE1MRG9jdW1lbnQ6OmNy
ZWF0ZVhIVE1MKG51bGxwdHIsIFVSTCgpKTsKKyAgICByZXR1cm4gWE1MRG9jdW1lbnQ6OmNyZWF0
ZShudWxscHRyLCBVUkwoKSk7CiB9CiAKLVJlZlB0cjxYTUxEb2N1bWVudD4gRE9NSW1wbGVtZW50
YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLAotICAgIGNv
bnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgRG9jdW1lbnRUeXBlKiBkb2N0eXBlLCBFeGNlcHRp
b25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPFJlZjxYTUxEb2N1bWVudD4+IERPTUltcGxlbWVudGF0
aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3Ry
aW5nJiBxdWFsaWZpZWROYW1lLCBEb2N1bWVudFR5cGUqIGRvY3VtZW50VHlwZSkKIHsKLSAgICBS
ZWZQdHI8WE1MRG9jdW1lbnQ+IGRvYzsKLSAgICBpZiAobmFtZXNwYWNlVVJJID09IFNWR05hbWVz
OjpzdmdOYW1lc3BhY2VVUkkpCi0gICAgICAgIGRvYyA9IFNWR0RvY3VtZW50OjpjcmVhdGUoMCwg
VVJMKCkpOwotICAgIGVsc2UgaWYgKG5hbWVzcGFjZVVSSSA9PSBIVE1MTmFtZXM6OnhodG1sTmFt
ZXNwYWNlVVJJKQotICAgICAgICBkb2MgPSBYTUxEb2N1bWVudDo6Y3JlYXRlWEhUTUwoMCwgVVJM
KCkpOwotICAgIGVsc2UKLSAgICAgICAgZG9jID0gWE1MRG9jdW1lbnQ6OmNyZWF0ZSgwLCBVUkwo
KSk7CisgICAgYXV0byBkb2N1bWVudCA9IGNyZWF0ZVhNTERvY3VtZW50KG5hbWVzcGFjZVVSSSk7
CiAKLSAgICBkb2MtPnNldFNlY3VyaXR5T3JpZ2luUG9saWN5KG1fZG9jdW1lbnQuc2VjdXJpdHlP
cmlnaW5Qb2xpY3koKSk7CisgICAgZG9jdW1lbnQtPnNldFNlY3VyaXR5T3JpZ2luUG9saWN5KG1f
ZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW5Qb2xpY3koKSk7CiAKLSAgICBSZWZQdHI8Tm9kZT4gZG9j
dW1lbnRFbGVtZW50OworICAgIFJlZlB0cjxFbGVtZW50PiBkb2N1bWVudEVsZW1lbnQ7CiAgICAg
aWYgKCFxdWFsaWZpZWROYW1lLmlzRW1wdHkoKSkgewotICAgICAgICBkb2N1bWVudEVsZW1lbnQg
PSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIGVjKTsK
KyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgIGRvY3VtZW50RWxlbWVudCA9
IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCBl
Yyk7CiAgICAgICAgIGlmIChlYykKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbihlYyk7CiAgICAgfQogCi0gICAgaWYgKGRvY3R5cGUpCi0g
ICAgICAgIGRvYy0+YXBwZW5kQ2hpbGQoKmRvY3R5cGUpOworICAgIGlmIChkb2N1bWVudFR5cGUp
CisgICAgICAgIGRvY3VtZW50LT5hcHBlbmRDaGlsZCgqZG9jdW1lbnRUeXBlKTsKICAgICBpZiAo
ZG9jdW1lbnRFbGVtZW50KQotICAgICAgICBkb2MtPmFwcGVuZENoaWxkKCpkb2N1bWVudEVsZW1l
bnQpOworICAgICAgICBkb2N1bWVudC0+YXBwZW5kQ2hpbGQoKmRvY3VtZW50RWxlbWVudCk7CiAK
LSAgICByZXR1cm4gZG9jOworICAgIHJldHVybiBXVEZNb3ZlKGRvY3VtZW50KTsKIH0KIAotUmVm
PENTU1N0eWxlU2hlZXQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVDU1NTdHlsZVNoZWV0KGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgbWVkaWEsIEV4Y2VwdGlvbkNvZGUmKQorUmVmPENT
U1N0eWxlU2hlZXQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVDU1NTdHlsZVNoZWV0KGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgbWVkaWEpCiB7CiAgICAgLy8gRklYTUU6IFRpdGxlIHNo
b3VsZCBiZSBzZXQuCiAgICAgLy8gRklYTUU6IE1lZGlhIGNvdWxkIGhhdmUgd3Jvbmcgc3ludGF4
LCBpbiB3aGljaCBjYXNlIHdlIHNob3VsZCBnZW5lcmF0ZSBhbiBleGNlcHRpb24uCi0gICAgUmVm
PENTU1N0eWxlU2hlZXQ+IHNoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKFN0eWxlU2hlZXRD
b250ZW50czo6Y3JlYXRlKCkpOworICAgIGF1dG8gc2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVh
dGUoU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoKSk7CiAgICAgc2hlZXQtPnNldE1lZGlhUXVl
cmllcyhNZWRpYVF1ZXJ5U2V0OjpjcmVhdGVBbGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KG1lZGlh
KSk7CiAgICAgcmV0dXJuIHNoZWV0OwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZFhN
TE1JTUVUeXBlQ2hhcihVQ2hhciBjKQotewotICAgIC8vIFZhbGlkIGNoYXJhY3RlcnMgcGVyIFJG
Q3MgMzAyMyBhbmQgMjA0NToKLSAgICAvLyAwLTlhLXpBLVpfLSt+ISRee318LiUnYCMmKgotICAg
IHJldHVybiBpc0FTQ0lJQWxwaGFudW1lcmljKGMpIHx8IGMgPT0gJyEnIHx8IGMgPT0gJyMnIHx8
IGMgPT0gJyQnIHx8IGMgPT0gJyUnIHx8IGMgPT0gJyYnIHx8IGMgPT0gJ1wnJyB8fCBjID09ICcq
JyB8fCBjID09ICcrJwotICAgICAgICB8fCBjID09ICctJyB8fCBjID09ICcuJyB8fCBjID09ICde
JyB8fCBjID09ICdfJyB8fCBjID09ICdgJyB8fCBjID09ICd7JyB8fCBjID09ICd8JyB8fCBjID09
ICd9JyB8fCBjID09ICd+JzsKLX0KLQotYm9vbCBET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQotewotICAgIC8vIEZJWE1FOiBDYW4gd2UgbW92
ZSB0aGlzIGxvZ2ljIHRvIE1JTUVUeXBlUmVnaXN0cnkgYW5kIGhhdmUgdGhpcyBqdXN0IGJlIGEg
c2luZ2xlIGZ1bmN0aW9uIGNhbGw/Ci0KLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UobWltZVR5cGUsICJ0ZXh0L3htbCIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKG1pbWVUeXBlLCAiYXBwbGljYXRpb24veG1sIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L3hzbCIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
ICAgIGlmICghbWltZVR5cGUuZW5kc1dpdGgoIit4bWwiLCBmYWxzZSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHNpemVfdCBzbGFzaFBvc2l0aW9uID0gbWltZVR5cGUuZmluZCgnLycp
OwotICAgIC8vIFRha2UgaW50byBhY2NvdW50IHRoZSAnK3htbCcgZW5kaW5nIG9mIG1pbWVUeXBl
LgotICAgIGlmIChzbGFzaFBvc2l0aW9uID09IG5vdEZvdW5kIHx8ICFzbGFzaFBvc2l0aW9uIHx8
IHNsYXNoUG9zaXRpb24gPT0gbWltZVR5cGUubGVuZ3RoKCkgLSA1KQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAvLyBBZ2FpbiwgbWltZVR5cGUgZW5kcyB3aXRoICcreG1sJywgbm8gbmVl
ZCB0byBjaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhhdCBzdWJzdHJpbmcuCi0gICAgc2l6ZV90IG1p
bWVMZW5ndGggPSBtaW1lVHlwZS5sZW5ndGgoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1pbWVMZW5ndGggLSA0OyArK2kpIHsKLSAgICAgICAgaWYgKCFpc1ZhbGlkWE1MTUlNRVR5cGVD
aGFyKG1pbWVUeXBlW2ldKSAmJiBpICE9IHNsYXNoUG9zaXRpb24pCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRE9NSW1wbGVt
ZW50YXRpb246OmlzVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCi17Ci0gICAg
Ly8gRklYTUU6IENhbiB3ZSBtb3ZlIHRoaXMgbG9naWMgdG8gTUlNRVR5cGVSZWdpc3RyeSBhbmQg
aGF2ZSB0aGlzIGp1c3QgYmUgYSBzaW5nbGUgZnVuY3Rpb24gY2FsbD8KLQotICAgIHJldHVybiBN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShtaW1lVHlwZSkK
LSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBs
aWNhdGlvbi9qc29uIikgLy8gUmVuZGVyIEpTT04gYXMgdGV4dC9wbGFpbi4KLSAgICAgICAgfHwg
KG1pbWVUeXBlLnN0YXJ0c1dpdGgoInRleHQvIiwgZmFsc2UpCi0gICAgICAgICAgICAmJiAhZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L2h0bWwiKQotICAgICAg
ICAgICAgJiYgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC94
bWwiKQotICAgICAgICAgICAgJiYgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVU
eXBlLCAidGV4dC94c2wiKSk7Ci19Ci0KIFJlZjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVudGF0
aW9uOjpjcmVhdGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBhdXRv
IGRvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgVVJMKCkpOwpAQCAtMzIx
LDYgKzI3OCw5IEBAIFJlZjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVI
VE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0aXRsZSkKIAogUmVmPERvY3VtZW50PiBET01JbXBs
ZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0eXBlLCBGcmFtZSogZnJh
bWUsIGNvbnN0IFVSTCYgdXJsKQogeworICAgIC8vIEZJWE1FOiBDb25mdXNpbmcgdG8gaGF2ZSB0
aGlzIGhlcmUgd2l0aCBwdWJsaWMgRE9NIEFQSXMgZm9yIGNyZWF0aW5nIGRvY3VtZW50cy4gVGhp
cyBpcyBkaWZmZXJlbnQgZW5vdWdoIHRoYXQgaXQgc2hvdWxkIHBlcmhhcHMgYmUgbW92ZWQuCisg
ICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gaXMgZG9pbmcgY2FzZSBpbnNlbnNpdGl2ZSBjb21w
YXJpc29ucyBvbiBNSU1FIHR5cGVzLiBTaG91bGQgZG8gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UgaW5zdGVhZC4KKwogICAgIC8vIFBsdWdpbnMgY2Fubm90IHRha2UgSFRNTCBhbmQgWEhU
TUwgZnJvbSB1cywgYW5kIHdlIGRvbid0IGV2ZW4gbmVlZCB0byBpbml0aWFsaXplIHRoZSBwbHVn
aW4gZGF0YWJhc2UgZm9yIHRob3NlLgogICAgIGlmICh0eXBlID09ICJ0ZXh0L2h0bWwiKQogICAg
ICAgICByZXR1cm4gSFRNTERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CkBAIC0zMzgsNyAr
Mjk4LDcgQEAgUmVmPERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQo
Y29uc3QgU3RyaW5nJiB0eXBlLCBGcmFtZSogZnJhbWUKICAgICAgICAgcmV0dXJuIEltYWdlRG9j
dW1lbnQ6OmNyZWF0ZSgqZnJhbWUsIHVybCk7CiAKICAgICBQbHVnaW5EYXRhKiBwbHVnaW5EYXRh
ID0gbnVsbHB0cjsKLSAgICBQbHVnaW5EYXRhOjpBbGxvd2VkUGx1Z2luVHlwZXMgYWxsb3dlZFBs
dWdpblR5cGVzID0gUGx1Z2luRGF0YTo6T25seUFwcGxpY2F0aW9uUGx1Z2luczsKKyAgICBhdXRv
IGFsbG93ZWRQbHVnaW5UeXBlcyA9IFBsdWdpbkRhdGE6Ok9ubHlBcHBsaWNhdGlvblBsdWdpbnM7
CiAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAgaWYgKGZyYW1lLT5s
b2FkZXIoKS5zdWJmcmFtZUxvYWRlcigpLmFsbG93UGx1Z2lucygpKQogICAgICAgICAgICAgYWxs
b3dlZFBsdWdpblR5cGVzID0gUGx1Z2luRGF0YTo6QWxsUGx1Z2luczsKQEAgLTM2OSwxMyArMzI5
LDEzIEBAIFJlZjxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNv
bnN0IFN0cmluZyYgdHlwZSwgRnJhbWUqIGZyYW1lCiAgICAgLy8gYW5kIGFsc28gc2VydmVzIGFz
IGFuIG9wdGltaXphdGlvbiB0byBwcmV2ZW50IGxvYWRpbmcgdGhlIHBsdWctaW4gZGF0YWJhc2Ug
aW4gdGhlIGNvbW1vbiBjYXNlLgogICAgIGlmICh0eXBlICE9ICJ0ZXh0L3BsYWluIiAmJiAoKHBs
dWdpbkRhdGEgJiYgcGx1Z2luRGF0YS0+c3VwcG9ydHNXZWJWaXNpYmxlTWltZVR5cGUodHlwZSwg
YWxsb3dlZFBsdWdpblR5cGVzKSkgfHwgKGZyYW1lICYmIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQo
KS5zaG91bGRBbHdheXNVc2VQbHVnaW5Eb2N1bWVudCh0eXBlKSkpKQogICAgICAgICByZXR1cm4g
UGx1Z2luRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKLSAgICBpZiAoaXNUZXh0TUlNRVR5
cGUodHlwZSkpCisgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzVGV4dE1JTUVUeXBlKHR5cGUp
KQogICAgICAgICByZXR1cm4gVGV4dERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CiAKICAg
ICBpZiAodHlwZSA9PSAiaW1hZ2Uvc3ZnK3htbCIpCiAgICAgICAgIHJldHVybiBTVkdEb2N1bWVu
dDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwogCi0gICAgaWYgKGlzWE1MTUlNRVR5cGUodHlwZSkpCisg
ICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5cGUodHlwZSkpCiAgICAgICAgIHJl
dHVybiBYTUxEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwogCiAgICAgcmV0dXJuIEhUTUxE
b2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RPTUltcGxlbWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50
YXRpb24uaAppbmRleCA4ODgwYzRjNTBjMTI5NmI2YTkyY2NiODUwYWE3ZDBlNWM3ZWZjNTk0Li5k
ODZhZGYwN2JmMWEyMjBhMmQxMjg2ZDRmYzE1YTNiMzc5YWNhYjg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRE9NSW1wbGVtZW50YXRpb24uaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykg
MTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFu
dHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIERp
cmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDYgKzIzLDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlhNTERvY3VtZW50
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2LDI1ICszNywxNCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkZXJlZigpIHsgbV9kb2N1bWVudC5kZXJlZigpOyB9CiAgICAgRG9jdW1lbnQmIGRv
Y3VtZW50KCkgeyByZXR1cm4gbV9kb2N1bWVudDsgfQogCi0gICAgLy8gRE9NIG1ldGhvZHMgJiBh
dHRyaWJ1dGVzIGZvciBET01JbXBsZW1lbnRhdGlvbgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBib29sIGhhc0ZlYXR1cmUoY29uc3QgU3RyaW5nJiBmZWF0dXJlLCBjb25zdCBTdHJpbmcmIHZl
cnNpb24pOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxEb2N1bWVudFR5cGU+IGNyZWF0ZURv
Y3VtZW50VHlwZShjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIGNvbnN0IFN0cmluZyYgcHVi
bGljSWQsIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8WE1MRG9jdW1lbnQ+IGNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmlu
ZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIERvY3VtZW50VHlw
ZSosIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgIERPTUltcGxlbWVudGF0aW9uKiBnZXRJbnRlcmZh
Y2UoY29uc3QgU3RyaW5nJiBmZWF0dXJlKTsKLQotICAgIC8vIEZyb20gdGhlIERPTUltcGxlbWVu
dGF0aW9uQ1NTIGludGVyZmFjZQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Q1NTU3R5
bGVTaGVldD4gY3JlYXRlQ1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBT
dHJpbmcmIG1lZGlhLCBFeGNlcHRpb25Db2RlJik7Ci0KLSAgICAvLyBGcm9tIHRoZSBIVE1MRE9N
SW1wbGVtZW50YXRpb24gaW50ZXJmYWNlCisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8
UmVmPERvY3VtZW50VHlwZT4+IGNyZWF0ZURvY3VtZW50VHlwZShjb25zdCBTdHJpbmcmIHF1YWxp
ZmllZE5hbWUsIGNvbnN0IFN0cmluZyYgcHVibGljSWQsIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQp
OworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxYTUxEb2N1bWVudD4+IGNyZWF0
ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxp
ZmllZE5hbWUsIERvY3VtZW50VHlwZSopOwogICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxIVE1MRG9j
dW1lbnQ+IGNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBoYXNGZWF0dXJlKGNvbnN0IFN0cmluZyYgZmVhdHVyZSwg
Y29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPENT
U1N0eWxlU2hlZXQ+IGNyZWF0ZUNTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29u
c3QgU3RyaW5nJiBtZWRpYSk7CiAKLSAgICAvLyBPdGhlciBtZXRob2RzIChub3QgcGFydCBvZiBE
T00pCiAgICAgc3RhdGljIFJlZjxEb2N1bWVudD4gY3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5n
JiBNSU1FVHlwZSwgRnJhbWUqLCBjb25zdCBVUkwmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBib29sIGlzWE1MTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSk7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBNSU1F
VHlwZSk7Ci0KIHByaXZhdGU6CiAgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGwKaW5kZXggMzMwMDVkYTEwMDg0YmIzODI3
MzcyZjkzYmIyMDhhZWRmMjM5ZTZkMS4uNjRjODM2NTYxNDk4MWU1OWZhZWM5YTAwMTE5N2I5NmJl
YjUzOGZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9u
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaWRsCkBAIC0y
MywyMSArMjMsMjEgQEAKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxEb2N1bWVudCwKICAg
ICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogXSBpbnRlcmZhY2UgRE9NSW1wbGVtZW50YXRp
b24gewotICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRl
ciB2YWx1ZSBpcyB3cm9uZy4KLSAgICBib29sZWFuIGhhc0ZlYXR1cmUob3B0aW9uYWwgRE9NU3Ry
aW5nIGZlYXR1cmUgPSAidW5kZWZpbmVkIiwgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBvcHRp
b25hbCBET01TdHJpbmcgdmVyc2lvbiA9ICJ1bmRlZmluZWQiKTsKLQotICAgIFtSYWlzZXNFeGNl
cHRpb24sIE5ld09iamVjdF0gRG9jdW1lbnRUeXBlIGNyZWF0ZURvY3VtZW50VHlwZShET01TdHJp
bmcgcXVhbGlmaWVkTmFtZSwgRE9NU3RyaW5nIHB1YmxpY0lkLCBET01TdHJpbmcgc3lzdGVtSWQp
OwotCi0gICAgW05ld09iamVjdCwgUmFpc2VzRXhjZXB0aW9uXQorICAgIFtOZXdPYmplY3RdIERv
Y3VtZW50VHlwZSBjcmVhdGVEb2N1bWVudFR5cGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIERP
TVN0cmluZyBwdWJsaWNJZCwgRE9NU3RyaW5nIHN5c3RlbUlkKTsKKyAgICAvLyBGSVhNRTogU2hv
dWxkIGhhbmRsZSB0aGlzIExBTkdVQUdFX0dPQkpFQ1Qgc3BlY2lhbCBjYXNlIGluIGEgc2ltcGxl
ciB3YXkgb3IgZ2V0IHJpZCBvZiBpdC4KKyAgICBbTmV3T2JqZWN0XQogI2lmIGRlZmluZWQoTEFO
R1VBR0VfR09CSkVDVCkgJiYgTEFOR1VBR0VfR09CSkVDVAogICAgICAgICBEb2N1bWVudAogI2Vs
c2UKICAgICAgICAgWE1MRG9jdW1lbnQKICNlbmRpZgotICAgIGNyZWF0ZURvY3VtZW50KERPTVN0
cmluZz8gbmFtZXNwYWNlVVJJLCBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBx
dWFsaWZpZWROYW1lLCBvcHRpb25hbCBEb2N1bWVudFR5cGU/IGRvY3R5cGUgPSBudWxsKTsKKyAg
ICAgICAgY3JlYXRlRG9jdW1lbnQoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIFtUcmVhdE51bGxB
cz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIG9wdGlvbmFsIERvY3VtZW50
VHlwZT8gZG9jdHlwZSA9IG51bGwpOworICAgIFtOZXdPYmplY3RdIEhUTUxEb2N1bWVudCBjcmVh
dGVIVE1MRG9jdW1lbnQob3B0aW9uYWwgRE9NU3RyaW5nIHRpdGxlKTsKIAorICAgIC8vIEZJWE1F
OiBMYXRlc3QgRE9NIHNwZWNpZmljYXRpb24gc2F5cyB0aGlzIHNob3VsZCBpZ25vcmUgYWxsIGFy
Z3VtZW50cyBhbmQgYWx3YXlzIHJldHVybiB0cnVlLgogICAgIC8vIEZJWE1FOiBVc2luZyAidW5k
ZWZpbmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KLSAgICBbUmFpc2Vz
RXhjZXB0aW9uXSBDU1NTdHlsZVNoZWV0IGNyZWF0ZUNTU1N0eWxlU2hlZXQob3B0aW9uYWwgRE9N
U3RyaW5nIHRpdGxlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIERPTVN0cmluZyBtZWRpYSA9ICJ1
bmRlZmluZWQiKTsKKyAgICBib29sZWFuIGhhc0ZlYXR1cmUob3B0aW9uYWwgRE9NU3RyaW5nIGZl
YXR1cmUgPSAidW5kZWZpbmVkIiwgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBvcHRpb25hbCBE
T01TdHJpbmcgdmVyc2lvbiA9ICJ1bmRlZmluZWQiKTsKIAotICAgIFtOZXdPYmplY3RdIEhUTUxE
b2N1bWVudCBjcmVhdGVIVE1MRG9jdW1lbnQob3B0aW9uYWwgRE9NU3RyaW5nIHRpdGxlKTsKKyAg
ICAvLyBGSVhNRTogVXNpbmcgInVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUg
aXMgd3JvbmcuCisgICAgQ1NTU3R5bGVTaGVldCBjcmVhdGVDU1NTdHlsZVNoZWV0KG9wdGlvbmFs
IERPTVN0cmluZyB0aXRsZSA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBET01TdHJpbmcgbWVkaWEg
PSAidW5kZWZpbmVkIik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNGQwMzA4ZDdh
Mzc3OGZkM2E0ZDg0MjQ1YzgwZWY2Y2UzZjhkNjY1Yi4uZDRmNGRkZTE3OTkwZDI5YzViMTI2ZmVj
ZmNhY2ZhNTY2MmFlYmMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMzc0LDExICsx
Mzc0LDYgQEAgdm9pZCBEb2N1bWVudDo6c2V0Q29udGVudExhbmd1YWdlKGNvbnN0IFN0cmluZyYg
bGFuZ3VhZ2UpCiAKIHZvaWQgRG9jdW1lbnQ6OnNldFhNTFZlcnNpb24oY29uc3QgU3RyaW5nJiB2
ZXJzaW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoIWltcGxlbWVudGF0aW9uKCku
aGFzRmVhdHVyZSgiWE1MIiwgU3RyaW5nKCkpKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRF
RF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBpZiAoIVhNTERvY3VtZW50UGFy
c2VyOjpzdXBwb3J0c1hNTFZlcnNpb24odmVyc2lvbikpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQ
UE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuOwpAQCAtMTM4NywxMyArMTM4Miw4IEBAIHZvaWQg
RG9jdW1lbnQ6OnNldFhNTFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBFeGNlcHRpb25D
b2RlJiBlYykKICAgICBtX3htbFZlcnNpb24gPSB2ZXJzaW9uOwogfQogCi12b2lkIERvY3VtZW50
OjpzZXRYTUxTdGFuZGFsb25lKGJvb2wgc3RhbmRhbG9uZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2
b2lkIERvY3VtZW50OjpzZXRYTUxTdGFuZGFsb25lKGJvb2wgc3RhbmRhbG9uZSkKIHsKLSAgICBp
ZiAoIWltcGxlbWVudGF0aW9uKCkuaGFzRmVhdHVyZSgiWE1MIiwgU3RyaW5nKCkpKSB7Ci0gICAg
ICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAg
ICBtX3htbFN0YW5kYWxvbmUgPSBzdGFuZGFsb25lID8gU3RhbmRhbG9uZSA6IE5vdFN0YW5kYWxv
bmU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggN2UzOGQ4ZmRhMWVhYjBkNjRmZTQ1MmQy
MDhlZjVhZTA0YzRlNTE4Ni4uOTQ4ODk0MWQwYmYwNjA2NjMwYzNiNjRlMDgyZmFjNzUxYzQ4NzE0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQ0MSw3ICs0NDEsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHNldFhNTEVuY29kaW5nKGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpIHsgbV94bWxFbmNv
ZGluZyA9IGVuY29kaW5nOyB9IC8vIHJlYWQtb25seSBwcm9wZXJ0eSwgb25seSB0byBiZSBzZXQg
ZnJvbSBYTUxEb2N1bWVudFBhcnNlcgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0WE1MVmVy
c2lvbihjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRYTUxTdGFuZGFsb25lKGJvb2wsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFhNTFN0YW5kYWxvbmUoYm9vbCk7CiAgICAgdm9pZCBzZXRIYXNYTUxE
ZWNsYXJhdGlvbihib29sIGhhc1hNTERlY2xhcmF0aW9uKSB7IG1faGFzWE1MRGVjbGFyYXRpb24g
PSBoYXNYTUxEZWNsYXJhdGlvbiA/IDEgOiAwOyB9CiAKICAgICBTdHJpbmcgZG9jdW1lbnRVUkko
KSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50VVJJOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbApp
bmRleCBlMDE4ZjU5ZGFlZTlmODNhOWRjZjNkMTIyN2U2MzViNTQxZTA0ZDUwLi5iZDg5MGE5ZTIx
ZDc1MjI4OTc0ZTVjYTQwNjc2OWEzM2U2MzA2YmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwK
QEAgLTUzLDcgKzUzLDcgQEAKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmc/IHht
bEVuY29kaW5nOwogICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJp
bmc/IHhtbFZlcnNpb247Ci0gICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIGJv
b2xlYW4geG1sU3RhbmRhbG9uZTsKKyAgICBhdHRyaWJ1dGUgYm9vbGVhbiB4bWxTdGFuZGFsb25l
OwogCiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gTm9kZSBhZG9wdE5vZGUoTm9kZSBzb3VyY2UpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXhjZXB0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWFjYmQ1ZjJmZDdlZWFlOTZkMjUzZWNi
OGEzZjQ4NDNlZTlhYzQwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
eGNlcHRpb24uaApAQCAtMCwwICsxLDUzIEBACisvKgorCitDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKK21vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworYXJl
IG1ldDoKKzEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKzIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKK0VYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKK1dBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKK0RJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyhJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKK0xPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyhJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCitTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworKi8KKworI3ByYWdtYSBvbmNlCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgRXhjZXB0aW9uQ29kZSA9IGludDsKKworY2xh
c3MgRXhjZXB0aW9uIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBFeGNlcHRpb24oRXhjZXB0aW9u
Q29kZSk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Db2RlIGNvZGUoKSBjb25zdDsK
KworcHJpdmF0ZToKKyAgICBFeGNlcHRpb25Db2RlIG1fY29kZTsKK307CisKK2lubGluZSBFeGNl
cHRpb246OkV4Y2VwdGlvbihFeGNlcHRpb25Db2RlIGNvZGUpCisgICAgOiBtX2NvZGUoY29kZSkK
K3sKK30KKworaW5saW5lIEV4Y2VwdGlvbkNvZGUgRXhjZXB0aW9uOjpjb2RlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9jb2RlOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXhjZXB0aW9uT3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM5YzAzZjU0MmQ2MDE4ODhmYTE4ZjA1NDA1YWYyZWM1NThiYzYyNzUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaApAQCAtMCwwICsxLDcy
IEBACisvKgorCitDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworYXJlIG1ldDoKKzEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKzIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCitUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKK0VYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKK1dBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKK0RJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyhJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
K0xPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyhJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCitTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJFeGNlcHRpb24uaCIK
KyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFJldHVyblR5cGU+IGNsYXNzIEV4Y2VwdGlvbk9yIHsKK3B1YmxpYzoKKyAg
ICBFeGNlcHRpb25PcihFeGNlcHRpb24mJik7CisgICAgRXhjZXB0aW9uT3IoUmV0dXJuVHlwZSYm
KTsKKworICAgIGJvb2wgaGFzRXhjZXB0aW9uKCkgY29uc3Q7CisgICAgRXhjZXB0aW9uQ29kZSBl
eGNlcHRpb25Db2RlKCkgY29uc3Q7CisgICAgUmV0dXJuVHlwZSYmIHRha2VSZXR1cm5WYWx1ZSgp
OworCitwcml2YXRlOgorICAgIHN0ZDo6ZXhwZXJpbWVudGFsOjp2YXJpYW50PEV4Y2VwdGlvbiwg
UmV0dXJuVHlwZT4gbV92YWx1ZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGU+
IGlubGluZSBFeGNlcHRpb25PcjxSZXR1cm5UeXBlPjo6RXhjZXB0aW9uT3IoRXhjZXB0aW9uJiYg
ZXhjZXB0aW9uKQorICAgIDogbV92YWx1ZShXVEZNb3ZlKGV4Y2VwdGlvbikpCit7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGU+IGlubGluZSBFeGNlcHRpb25PcjxSZXR1cm5UeXBl
Pjo6RXhjZXB0aW9uT3IoUmV0dXJuVHlwZSYmIHJldHVyblZhbHVlKQorICAgIDogbV92YWx1ZShX
VEZNb3ZlKHJldHVyblZhbHVlKSkKK3sKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlw
ZT4gaW5saW5lIGJvb2wgRXhjZXB0aW9uT3I8UmV0dXJuVHlwZT46Omhhc0V4Y2VwdGlvbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6ZXhwZXJpbWVudGFsOjpob2xkc19hbHRlcm5hdGl2ZTxF
eGNlcHRpb24+KG1fdmFsdWUpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiBp
bmxpbmUgRXhjZXB0aW9uQ29kZSBFeGNlcHRpb25PcjxSZXR1cm5UeXBlPjo6ZXhjZXB0aW9uQ29k
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6ZXhwZXJpbWVudGFsOjpnZXQ8RXhjZXB0aW9u
PihtX3ZhbHVlKS5jb2RlKCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGU+IGlu
bGluZSBSZXR1cm5UeXBlJiYgRXhjZXB0aW9uT3I8UmV0dXJuVHlwZT46OnRha2VSZXR1cm5WYWx1
ZSgpCit7CisgICAgcmV0dXJuIHN0ZDo6ZXhwZXJpbWVudGFsOjpnZXQ8UmV0dXJuVHlwZT4oV1RG
TW92ZShtX3ZhbHVlKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRlbXBsYXRlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0
ZUVsZW1lbnQuY3BwCmluZGV4IDNiNTZlNTVmMGVhYjM1NjExMmE5OWFjZmY5MDEzYjNhZjNlMDlh
YWYuLjU4MWFhMzMzZWMwYjdiYzRkOGZjOWRjNmNiZTI5ZGJjMmZkODlhZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcApAQCAtMjksMTAgKzI5LDggQEAK
ICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNsdWRlICJIVE1MVGVtcGxhdGVFbGVt
ZW50LmgiCiAKLSNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJUZW1w
bGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDczYjQ5OTkzY2IxMjk3ZWIwY2I5MzM0
ODEwMTY3ZjgzMzc2MTEyMDUuLmY4ZTY2NzhmMzI3MGJkODUzNmYwZjAzZmY4OGY1Yjg4YmMyMmE3
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVk
ZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCi0jaW5jbHVkZSAiRE9NSW1wbGVt
ZW50YXRpb24uaCIKICNpbmNsdWRlICJET01QYXRjaFN1cHBvcnQuaCIKICNpbmNsdWRlICJET01X
cmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtNTksNiArNTgsNyBAQAog
I2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgorI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJNZW1v
cnlDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMg
UmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGNyZWF0ZVhIUlRleHREZWNvZGVyKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsCiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXI7
CiAgICAgaWYgKCF0ZXh0RW5jb2RpbmdOYW1lLmlzRW1wdHkoKSkKICAgICAgICAgZGVjb2RlciA9
IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiIsIHRleHRFbmNvZGluZ05h
bWUpOwotICAgIGVsc2UgaWYgKERPTUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKG1pbWVU
eXBlKSkgeworICAgIGVsc2UgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5cGUobWlt
ZVR5cGUpKSB7CiAgICAgICAgIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUo
ImFwcGxpY2F0aW9uL3htbCIpOwogICAgICAgICBkZWNvZGVyLT51c2VMZW5pZW50WE1MRGVjb2Rp
bmcoKTsKICAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVU
eXBlLCAidGV4dC9odG1sIikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA3YmExODA1MDBhYmVmNDhmOGRiMDM5Mzk1NTNiYzlk
MjBhMmUxMzJkLi45ZmYyOGUxZGVjMzVkYWZmYWU2YzQ2MmUyZTI5NGVkNzljMjAwNTUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAK
QEAgLTMwLDI0ICszMCwxOCBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZXNEYXRhLmgiCiAK
ICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgotI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9u
LmgiCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVz
cG9uc2UuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3Vy
Y2VEZWNvZGVyLmgiCiAKLW5hbWVzcGFjZSB7Ci0vLyAxMDBNQgotc3RhdGljIGNvbnN0IHNpemVf
dCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUgPSAxMDAgKiAxMDAwICogMTAwMDsKLQotLy8g
MTBNQgotc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6
ZSA9IDEwICogMTAwMCAqIDEwMDA7Ci19Ci0KIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gUmVzb3VyY2VEYXRhCitzdGF0aWMgY29uc3Qgc2l6
ZV90IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSA9IDEwMCAqIDEwMDAgKiAxMDAwOyAvLyAx
MDBNQgorc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6
ZSA9IDEwICogMTAwMCAqIDEwMDA7IC8vIDEwTUIKKwogTmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBT
dHJpbmcmIGxvYWRlcklkKQogICAgIDogbV9yZXF1ZXN0SWQocmVxdWVzdElkKQogICAgICwgbV9s
b2FkZXJJZChsb2FkZXJJZCkKQEAgLTExNyw3ICsxMTEsNiBAQCBzaXplX3QgTmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiAgICAgcmV0dXJu
IGNvbnRlbnRTaXplSW5CeXRlcyhtX2NvbnRlbnQpIC0gZGF0YUxlbmd0aDsKIH0KIAotLy8gTmV0
d29ya1Jlc291cmNlc0RhdGEKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpOZXR3b3JrUmVzb3VyY2Vz
RGF0YSgpCiAgICAgOiBtX2NvbnRlbnRTaXplKDApCiAgICAgLCBtX21heGltdW1SZXNvdXJjZXND
b250ZW50U2l6ZShtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUpCkBAIC0xNDEsNyArMTM0LDcg
QEAgc3RhdGljIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBjcmVhdGVPdGhlclJlc291cmNl
VGV4dERlY29kZXIoY29uc3QgU3RyaW5nJgogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVy
PiBkZWNvZGVyOwogICAgIGlmICghdGV4dEVuY29kaW5nTmFtZS5pc0VtcHR5KCkpCiAgICAgICAg
IGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCB0ZXh0
RW5jb2RpbmdOYW1lKTsKLSAgICBlbHNlIGlmIChET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1F
VHlwZShtaW1lVHlwZSkpIHsKKyAgICBlbHNlIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1hNTE1J
TUVUeXBlKG1pbWVUeXBlKSkgewogICAgICAgICBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rl
cjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi94bWwiKTsKICAgICAgICAgZGVjb2Rlci0+dXNlTGVuaWVu
dFhNTERlY29kaW5nKCk7CiAgICAgfSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShtaW1lVHlwZSwgInRleHQvaHRtbCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKaW5kZXggMWQ1ODgxNDdiNjc1ZTc0Yjk1N2MwYzI0ZmFhMGU1MjY1YmI3OTczMC4uNTAx
ZjYzNTJjZjNkODRlMzNkNTQyNzk0NTIwNDE2YzIxNWU1MWQ4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiQ29udGVudEZpbHRlci5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1
cml0eVBvbGljeS5oIgotI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVz
b3VyY2VEZWNvZGVyLmNwcAppbmRleCA5NWQzNmUzMTVhMDViODViNzUyYWE0NDJjY2ZhNWIxNDBk
YzZhZjc2Li5mZTk0YjdmODE4NzQ2ZTNkMmU3YWIzMGI0NjdmYTA5ZTEzYjEyNDkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCkBAIC0yMyw5ICsy
Myw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rl
ci5oIgogCi0jaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJIVE1MTWV0
YUNoYXJzZXRQYXJzZXIuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJNSU1F
VHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiVGV4dENvZGVjLmgiCiAjaW5jbHVkZSAiVGV4dEVu
Y29kaW5nLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nRGV0ZWN0b3IuaCIKQEAgLTMwNiw3ICsz
MDYsNyBAQCBUZXh0UmVzb3VyY2VEZWNvZGVyOjpDb250ZW50VHlwZSBUZXh0UmVzb3VyY2VEZWNv
ZGVyOjpkZXRlcm1pbmVDb250ZW50VHlwZShjb25zdAogICAgICAgICByZXR1cm4gQ1NTOwogICAg
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvaHRtbCIp
KQogICAgICAgICByZXR1cm4gSFRNTDsKLSAgICBpZiAoRE9NSW1wbGVtZW50YXRpb246OmlzWE1M
TUlNRVR5cGUobWltZVR5cGUpKQorICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1hNTE1JTUVU
eXBlKG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuIFhNTDsKICAgICByZXR1cm4gUGxhaW5UZXh0
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3Ry
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRl
eCAzYTM0Mzk2NzU3YjY1NjEyMjNjNmUyMmRiNzFlZDAxOWEwNTE1MjFjLi5hZGQyOGZmYzYyOWVm
YzNkMTk2YzJkZjZhZTQ2ZjEzMzg3NmYyN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNi0yMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTI5LDIwICsyOSwyMSBAQAogCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgIkltYWdlU291cmNlQ0cuaCIKLSNpZiAhUExBVEZP
Uk0oSU9TKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNlbmRpZgorCisjaWYgVVNFKENH
KSAmJiAhUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGlj
YXRpb25TZXJ2aWNlcy5oPgotI2Vsc2UKLSNpbmNsdWRlIDxJbWFnZUlPL0NHSW1hZ2VEZXN0aW5h
dGlvbi5oPgogI2VuZGlmCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgUExBVEZP
Uk0oSU9TKQorI2luY2x1ZGUgPEltYWdlSU8vQ0dJbWFnZURlc3RpbmF0aW9uLmg+CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQpAQCAtNTQyLDYgKzU0
Myw0NyBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICByZXR1cm4gdW5zdXBwb3J0ZWRUZXh0TUlNRVR5
cGVzLT5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKK2Jvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNU
ZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICByZXR1cm4gaXNTdXBw
b3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUobWltZVR5cGUpCisgICAgICAgIHx8IGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiYXBwbGljYXRpb24vanNvbiIpIC8vIFJlbmRl
ciBKU09OIGFzIHRleHQvcGxhaW4uCisgICAgICAgIHx8IChtaW1lVHlwZS5zdGFydHNXaXRoKCJ0
ZXh0LyIsIGZhbHNlKQorICAgICAgICAgICAgJiYgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKG1pbWVUeXBlLCAidGV4dC9odG1sIikKKyAgICAgICAgICAgICYmICFlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQveG1sIikKKyAgICAgICAgICAgICYmICFl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQveHNsIikpOworfQor
CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkWE1MTUlNRVR5cGVDaGFyKFVDaGFyIGMpCit7
CisgICAgLy8gVmFsaWQgY2hhcmFjdGVycyBwZXIgUkZDcyAzMDIzIGFuZCAyMDQ1OiAwLTlhLXpB
LVpfLSt+ISRee318LiUnYCMmKgorICAgIHJldHVybiBpc0FTQ0lJQWxwaGFudW1lcmljKGMpIHx8
IGMgPT0gJyEnIHx8IGMgPT0gJyMnIHx8IGMgPT0gJyQnIHx8IGMgPT0gJyUnIHx8IGMgPT0gJyYn
IHx8IGMgPT0gJ1wnJyB8fCBjID09ICcqJyB8fCBjID09ICcrJworICAgICAgICB8fCBjID09ICct
JyB8fCBjID09ICcuJyB8fCBjID09ICdeJyB8fCBjID09ICdfJyB8fCBjID09ICdgJyB8fCBjID09
ICd7JyB8fCBjID09ICd8JyB8fCBjID09ICd9JyB8fCBjID09ICd+JzsKK30KKworYm9vbCBNSU1F
VHlwZVJlZ2lzdHJ5Ojppc1hNTE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7Cisg
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC94bWwi
KSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9u
L3htbCIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC94
c2wiKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIW1pbWVUeXBlLmVuZHNXaXRo
KCIreG1sIiwgZmFsc2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzaXplX3Qgc2xh
c2hQb3NpdGlvbiA9IG1pbWVUeXBlLmZpbmQoJy8nKTsKKyAgICAvLyBUYWtlIGludG8gYWNjb3Vu
dCB0aGUgJyt4bWwnIGVuZGluZyBvZiBtaW1lVHlwZS4KKyAgICBpZiAoc2xhc2hQb3NpdGlvbiA9
PSBub3RGb3VuZCB8fCAhc2xhc2hQb3NpdGlvbiB8fCBzbGFzaFBvc2l0aW9uID09IG1pbWVUeXBl
Lmxlbmd0aCgpIC0gNSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gQWdhaW4sIG1p
bWVUeXBlIGVuZHMgd2l0aCAnK3htbCcsIG5vIG5lZWQgdG8gY2hlY2sgdGhlIHZhbGlkaXR5IG9m
IHRoYXQgc3Vic3RyaW5nLgorICAgIHNpemVfdCBtaW1lTGVuZ3RoID0gbWltZVR5cGUubGVuZ3Ro
KCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtaW1lTGVuZ3RoIC0gNDsgKytpKSB7Cisg
ICAgICAgIGlmICghaXNWYWxpZFhNTE1JTUVUeXBlQ2hhcihtaW1lVHlwZVtpXSkgJiYgaSAhPSBz
bGFzaFBvc2l0aW9uKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzSmF2YUFwcGxldE1JTUVU
eXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgLy8gU2luY2UgdGhpcyBzZXQgaXMg
dmVyeSBsaW1pdGVkIGFuZCBpcyBsaWtlbHkgdG8gcmVtYWluIHNvIHdlIHdvbid0IGJvdGhlciB3
aXRoIHRoZSBvdmVyaGVhZApAQCAtNTc3LDcgKzYxOSw3IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3Ry
eTo6Y2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgaWYgKG1pbWVUeXBlLnN0YXJ0c1dpdGgoInRleHQvIiwgZmFsc2UpKQot
ICAgICAgICByZXR1cm4gIU1JTUVUeXBlUmVnaXN0cnk6OmlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5
cGUobWltZVR5cGUpOworICAgICAgICByZXR1cm4gIWlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUo
bWltZVR5cGUpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTUlNRVR5cGVSZWdpc3RyeS5oCmluZGV4IDRkYzc0ZTdjYjNmYTg1NDZmMTg4YzYyYjA3ZmUz
MjBlMDhmYjlkODUuLjY3NDk1NDZkZWJhYjA1Mzk1ZWY4NWFiODJhZjAxYmQyMjg1MWI3ODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzLDcgKzEzLDcg
QEAKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQogICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKICAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKICAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAogICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAogICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCkBAIC0yMywxMyArMjMsMTEgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBNSU1FVHlwZVJlZ2lzdHJ5X2gKLSNkZWZpbmUgTUlN
RVR5cGVSZWdpc3RyeV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC02MCwxNiArNTgsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzU3VwcG9y
dGVkSmF2YVNjcmlwdE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOyAgICAKIAogICAg
IC8vIENoZWNrIHRvIHNlZSBpZiBhIG5vbi1pbWFnZSBNSU1FIHR5cGUgaXMgc3VpdGFibGUgZm9y
IGJlaW5nIGxvYWRlZCBhcyBhCi0gICAgLy8gZG9jdW1lbnQgaW4gYSBmcmFtZS4gIEluY2x1ZGVz
IHN1cHBvcnRlZCBKYXZhU2NyaXB0IE1JTUUgdHlwZXMuCisgICAgLy8gZG9jdW1lbnQgaW4gYSBm
cmFtZS4gSW5jbHVkZXMgc3VwcG9ydGVkIEphdmFTY3JpcHQgTUlNRSB0eXBlcy4KICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBNSU1FIHR5cGUg
aXMgc3VpdGFibGUgZm9yIGJlaW5nIGxvYWRlZCB1c2luZyA8dmlkZW8+IGFuZCA8YXVkaW8+Lgog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkTWVkaWFNSU1FVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAotICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgTUlN
RSB0eXBlIGlzIG5vdCBzdWl0YWJsZSBmb3IgYmVpbmcgbG9hZGVkIGFzIGEgdGV4dAotICAgIC8v
IGRvY3VtZW50IGluIGEgZnJhbWUuIE9ubHkgdmFsaWQgZm9yIE1JTUUgdHlwZXMgYmVnaW5pbmcg
d2l0aCAidGV4dC8iLgotICAgIHN0YXRpYyBib29sIGlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7Ci0KICAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBNSU1F
IHR5cGUgaXMgYSB2YWxpZCBKYXZhIGFwcGxldCBtaW1lIHR5cGUuCiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIGJvb2wgaXNKYXZhQXBwbGV0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSk7CiAKQEAgLTg2LDYgKzgwLDE1IEBAIHB1YmxpYzoKICAgICAvLyAidGV4dC8iIGFuZCBpc1Vu
c3VwcG9ydGVkVGV4dE1JTUVUeXBlKCkgcmV0dXJucyBmYWxzZS4KICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAK
KyAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBNSU1FIHR5cGUgaXMgb25lIHdoZXJlIGFuIFhNTCBk
b2N1bWVudCBzaG91bGQgYmUgY3JlYXRlZAorICAgIC8vIHJhdGhlciB0aGFuIGFuIEhUTUwgZG9j
dW1lbnQuCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNYTUxNSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKTsKKworICAgIC8vIFVzZWQgaW4gcGFnZSBsb2FkIGFsZ29yaXRo
bSB0byBkZWNpZGUgd2hldGhlciB0byBkaXNwbGF5IGFzIGEgdGV4dAorICAgIC8vIGRvY3VtZW50
IGluIGEgZnJhbWUuIE5vdCBhIGdvb2QgaWRlYSB0byB1c2UgZWxzZXdoZXJlLCBiZWNhdXNlIHRo
YXQgY29kZQorICAgIC8vIG1ha2VzIHRoaXMgdGVzdCBpcyBhZnRlciBtYW55IG90aGVyIHRlc3Rz
IGFyZSBkb25lIG9uIHRoZSBNSU1FIHR5cGUuCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJv
b2wgaXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisKICAgICAvLyBGSVhN
RTogV2ViS2l0IGNvZGluZyBzdHlsZSBzYXlzIHdlIHNob3VsZCBub3QgaGF2ZSB0aGUgd29yZCAi
Z2V0IiBpbiB0aGUgbmFtZXMgb2YgdGhlc2UgZnVuY3Rpb25zLgogICAgIC8vIEZJWE1FOiBXb3Vs
ZCBiZSBuaWNlIHRvIGZpbmQgYSB3YXkgdG8gYXZvaWQgZXhwb3NpbmcgdGhlc2Ugc2V0cywgZXZl
biB3b3JzZSBleHBvc2luZyBub24tY29uc3QgcmVmZXJlbmNlcy4KICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGdldFN1
cHBvcnRlZEltYWdlTUlNRVR5cGVzKCk7CkBAIC0xMDAsMTAgKzEwMywxMyBAQCBwdWJsaWM6CiAg
ICAgLy8gRklYTUU6IFdlYktpdCBjb2Rpbmcgc3R5bGUgc2F5cyB3ZSBzaG91bGQgbm90IGhhdmUg
dGhlIHdvcmQgImdldCIgaW4gdGhlIG5hbWUgb2YgdGhpcyBmdW5jdGlvbi4KICAgICAvLyBGSVhN
RTogVW5jbGVhciB3aGF0IHRoZSBjb25jZXB0IG9mIGEgbm9ybWFsaXplZCBNSU1FIHR5cGUgaXM7
IGN1cnJlbnRseSBpdCdzIGEgcGxhdGZvcm0tc3BlY2lmaWMgbm90aW9uLgogICAgIHN0YXRpYyBT
dHJpbmcgZ2V0Tm9ybWFsaXplZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYpOworCitwcml2YXRlOgor
ICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgTUlNRSB0eXBlIGlzIG5vdCBzdWl0YWJsZSBmb3Ig
YmVpbmcgbG9hZGVkIGFzIGEgdGV4dAorICAgIC8vIGRvY3VtZW50IGluIGEgZnJhbWUuIE9ubHkg
dmFsaWQgZm9yIE1JTUUgdHlwZXMgYmVnaW5pbmcgd2l0aCAidGV4dC8iLgorICAgIHN0YXRpYyBi
b29sIGlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiB9
OwogCiBjb25zdCBTdHJpbmcmIGRlZmF1bHRNSU1FVHlwZSgpOwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBNSU1FVHlwZVJlZ2lzdHJ5X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmNwcAppbmRleCA3NDJmMzg1NTgxYzkwMDZjYTQ2ZjBiMDQ3YTIwYTFhMDRkNTZkNWYyLi5j
NDI3YWJkNmQ0YWY4YWQzM2RkYzY4ZDE1ZDBjYzM3YmExMjFhODNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgog
CiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCi0jaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIkV2ZW50LmgiCkBAIC0zNjIsMTEgKzM2MSw2IEBAIHZvaWQgU1ZHRWxlbWVudDo6cmVw
b3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKFNWR1BhcnNpbmdFcnJvciBlcnJvciwgY29uc3QgUXVh
bGlmCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLWJvb2wgU1ZHRWxlbWVudDo6aXNT
dXBwb3J0ZWQoU3RyaW5nSW1wbCogZmVhdHVyZSwgU3RyaW5nSW1wbCogdmVyc2lvbikgY29uc3QK
LXsKLSAgICByZXR1cm4gRE9NSW1wbGVtZW50YXRpb246Omhhc0ZlYXR1cmUoZmVhdHVyZSwgdmVy
c2lvbik7Ci19Ci0KIHZvaWQgU1ZHRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYg
cm9vdFBhcmVudCkKIHsKICAgICBib29sIHdhc0luRG9jdW1lbnQgPSByb290UGFyZW50LmluRG9j
dW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4IGYzZmZlODFlNjJjZmE5NDY1YjI3
YzAzZTA5YTBmNjY4YTA2OWFiZWMuLjBmMWE0YzExYjNkZTBiYjQ1OGM3MjkxOTRkNDlhOTI2YTFh
ZmRiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6
aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
U2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBA
IC0yMCwxMCArMjAsOCBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAot
I2lmbmRlZiBTVkdFbGVtZW50X2gKLSNkZWZpbmUgU1ZHRWxlbWVudF9oCisjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFN0
cmluZy5oIgogI2luY2x1ZGUgIlNWR0xhbmdTcGFjZS5oIgogI2luY2x1ZGUgIlNWR0xvY2F0YWJs
ZS5oIgpAQCAtMzEsNyArMjksNiBAQAogI2luY2x1ZGUgIlNWR1BhcnNpbmdFcnJvci5oIgogI2lu
Y2x1ZGUgIlNWR1Byb3BlcnR5SW5mby5oIgogI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKLSNp
bmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KIApAQCAtODYsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdmdMb2Fk
RXZlbnRUaW1lckZpcmVkKCk7CiAgICAgdmlydHVhbCBUaW1lciogc3ZnTG9hZEV2ZW50VGltZXIo
KTsKIAotICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtKiBzdXBwbGVtZW50YWxUcmFuc2Zvcm0o
KSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0qIHN1cHBsZW1lbnRh
bFRyYW5zZm9ybSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIHZvaWQgaW52YWxpZGF0ZVNW
R0F0dHJpYnV0ZXMoKSB7IGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRhKCkuc2V0QW5pbWF0ZWRTVkdB
dHRyaWJ1dGVzQXJlRGlydHkodHJ1ZSk7IH0KICAgICB2b2lkIGludmFsaWRhdGVTVkdQcmVzZW50
YXRpb25BdHRyaWJ1dGVTdHlsZSgpCkBAIC0xODAsOCArMTc3LDYgQEAgcHJvdGVjdGVkOgogcHJp
dmF0ZToKICAgICBjb25zdCBSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHlsZShQc2V1ZG9JZCA9IE5P
UFNFVURPKSBmaW5hbDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1N1cHBvcnRlZChTdHJpbmdJbXBs
KiBmZWF0dXJlLCBTdHJpbmdJbXBsKiB2ZXJzaW9uKSBjb25zdDsKLQogICAgIHZpcnR1YWwgdm9p
ZCBjbGVhclRhcmdldCgpIHsgfQogCiAgICAgdm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZXNJZk5l
ZWRlZCgpOwpAQCAtMjY0LDUgKzI1OSwzIEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
V2ViQ29yZTo6U1ZHRWxlbWVudCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2lu
Y2x1ZGUgIlNWR0VsZW1lbnRUeXBlSGVscGVycy5oIgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGM4M2FiOGM5YTM0NGM2ZDk4NjY4ZDE4NTQyYmMxMjY4
ZTk0NmVjN2IuLmMxNzdjNDk4YTI3YmQ2ZjgwMDE0MjNkMzk5MzYzMDkwOTljNGI0YzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1
ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbC5oIgogI2luY2x1ZGUgIkRPTUZvcm1EYXRhLmgiCi0jaW5jbHVkZSAiRE9NSW1wbGVt
ZW50YXRpb24uaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIK
ICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCkBAIC0zOSw2ICszOCw3IEBACiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAj
aW5jbHVkZSAiSlNET01XaW5kb3cuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYXJzZWRDb250ZW50VHlwZS5oIgog
I2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKQEAgLTU5LDcgKzU5LDYgQEAKICNpbmNsdWRlIDxy
dW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSW5saW5lcy5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtOTM0LDcgKzkzMyw3
IEBAIFN0cmluZyBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VNSU1FVHlwZSgpIGNvbnN0CiAKIGJv
b2wgWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlSXNYTUwoKSBjb25zdAogewotICAgIHJldHVybiBE
T01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlwZShyZXNwb25zZU1JTUVUeXBlKCkpOworICAg
IHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1hNTE1JTUVUeXBlKHJlc3BvbnNlTUlNRVR5cGUo
KSk7CiB9CiAKIGludCBYTUxIdHRwUmVxdWVzdDo6c3RhdHVzKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApp
bmRleCAxYjQ2YmIxY2Y4ZGJkNmZhZWU2ZGM4MGVkMTNjM2IzYTU1ZDFhZmE3Li5hOTlmOWRlNzI3
M2E1NjJlMTQ2ZDkzNTMyOTJhMDUwMGI0NDQ4ZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC0xMDY0LDcg
KzEwNjQsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpzdGFydERvY3VtZW50KGNvbnN0IHht
bENoYXIqIHZlcnNpb24sIGNvbnN0IHhtbENoYXIqIGVuYwogICAgIGlmICh2ZXJzaW9uKQogICAg
ICAgICBkb2N1bWVudCgpLT5zZXRYTUxWZXJzaW9uKHRvU3RyaW5nKHZlcnNpb24pLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKICAgICBpZiAoc3RhbmRhbG9uZSAhPSBTdGFuZGFsb25lVW5zcGVjaWZp
ZWQpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFhNTFN0YW5kYWxvbmUoc3RhbmRhbG9uZUluZm8g
PT0gU3RhbmRhbG9uZVllcywgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgIGRvY3VtZW50
KCktPnNldFhNTFN0YW5kYWxvbmUoc3RhbmRhbG9uZUluZm8gPT0gU3RhbmRhbG9uZVllcyk7CiAg
ICAgaWYgKGVuY29kaW5nKQogICAgICAgICBkb2N1bWVudCgpLT5zZXRYTUxFbmNvZGluZyh0b1N0
cmluZyhlbmNvZGluZykpOwogICAgIGRvY3VtZW50KCktPnNldEhhc1hNTERlY2xhcmF0aW9uKHRy
dWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTURPTUltcGxlbWVudGF0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTURPTUltcGxlbWVudGF0aW9uLm1tCmlu
ZGV4IGUwYTBjMDY2YmUxNDNhNzcxZDRlMzU4ODA1OTAwMTllM2VkNzA4YjUuLjJhM2U5MmQ1ZTg4
NDkwZDRiZjk5OTYzZGU5YTZiZTY3MDNkYmEzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL0RPTS9ET01ET01JbXBsZW1lbnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9E
T00vRE9NRE9NSW1wbGVtZW50YXRpb24ubW0KQEAgLTMwLDEwNSArMzAsOTAgQEAKICNpbXBvcnQg
IkRPTURvY3VtZW50VHlwZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01IVE1MRG9jdW1lbnRJbnRl
cm5hbC5oIgogI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTU5vZGVJbnRlcm5h
bC5oIgogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ1NT
U3R5bGVTaGVldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01JbXBsZW1lbnRhdGlvbi5oPgotI2lt
cG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudFR5cGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTERvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pT
TWFpblRocmVhZEV4ZWNTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgot
I2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRy
YXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgotI2ltcG9y
dCA8V2ViQ29yZS9YTUxEb2N1bWVudC5oPgotI2ltcG9ydCA8d3RmL0dldFB0ci5oPgotCi0jZGVm
aW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbio+KF9p
bnRlcm5hbCkKIAogQGltcGxlbWVudGF0aW9uIERPTUltcGxlbWVudGF0aW9uCiAKK3N0YXRpYyBp
bmxpbmUgV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb24mIHVud3JhcChET01JbXBsZW1lbnRhdGlv
biYgd3JhcHBlcikKK3sKKyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RE9N
SW1wbGVtZW50YXRpb24qPih3cmFwcGVyLl9pbnRlcm5hbCk7Cit9CisKIC0gKHZvaWQpZGVhbGxv
YwogewogICAgIGlmIChXZWJDb3JlT2JqQ1NjaGVkdWxlRGVhbGxvY2F0ZU9uTWFpblRocmVhZChb
RE9NSW1wbGVtZW50YXRpb24gY2xhc3NdLCBzZWxmKSkKICAgICAgICAgcmV0dXJuOwotCiAgICAg
aWYgKF9pbnRlcm5hbCkKLSAgICAgICAgSU1QTC0+ZGVyZWYoKTsKKyAgICAgICAgdW53cmFwKCpz
ZWxmKS5kZXJlZigpOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAogLSAoQk9PTCloYXNGZWF0
dXJlOihOU1N0cmluZyAqKWZlYXR1cmUgdmVyc2lvbjooTlNTdHJpbmcgKil2ZXJzaW9uCiB7CiAg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBM
LT5oYXNGZWF0dXJlKGZlYXR1cmUsIHZlcnNpb24pOworICAgIHJldHVybiB1bndyYXAoKnNlbGYp
Lmhhc0ZlYXR1cmUoZmVhdHVyZSwgdmVyc2lvbik7CiB9CiAKLS0gKEJPT0wpaGFzRmVhdHVyZToo
TlNTdHJpbmcgKilmZWF0dXJlIDooTlNTdHJpbmcgKil2ZXJzaW9uCistIChET01Eb2N1bWVudFR5
cGUgKiljcmVhdGVEb2N1bWVudFR5cGU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSBwdWJsaWNJ
ZDooTlNTdHJpbmcgKilwdWJsaWNJZCBzeXN0ZW1JZDooTlNTdHJpbmcgKilzeXN0ZW1JZAogewog
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gSU1Q
TC0+aGFzRmVhdHVyZShmZWF0dXJlLCB2ZXJzaW9uKTsKKyAgICBhdXRvIHJlc3VsdCA9IHVud3Jh
cCgqc2VsZikuY3JlYXRlRG9jdW1lbnRUeXBlKHF1YWxpZmllZE5hbWUsIHB1YmxpY0lkLCBzeXN0
ZW1JZCk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmFpc2VET01F
eGNlcHRpb24ocmVzdWx0LmV4Y2VwdGlvbkNvZGUoKSk7CisgICAgcmV0dXJuIGtpdChyZXN1bHQu
dGFrZVJldHVyblZhbHVlKCkucHRyKCkpOwogfQogCi0tIChET01Eb2N1bWVudFR5cGUgKiljcmVh
dGVEb2N1bWVudFR5cGU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSBwdWJsaWNJZDooTlNTdHJp
bmcgKilwdWJsaWNJZCBzeXN0ZW1JZDooTlNTdHJpbmcgKilzeXN0ZW1JZAorLSAoRE9NRG9jdW1l
bnQgKiljcmVhdGVEb2N1bWVudDooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgcXVhbGlmaWVkTmFt
ZTooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIGRvY3R5cGU6KERPTURvY3VtZW50VHlwZSAqKWRv
Y3R5cGUKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NRG9jdW1lbnRUeXBlICpyZXN1
bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y3JlYXRlRG9jdW1lbnRUeXBlKHF1YWxpZmllZE5h
bWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCwgZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsK
LSAgICByZXR1cm4gcmVzdWx0OworICAgIGF1dG8gcmVzdWx0ID0gdW53cmFwKCpzZWxmKS5jcmVh
dGVEb2N1bWVudChuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIGNvcmUoZG9jdHlwZSkpOwor
ICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJhaXNlRE9NRXhjZXB0aW9u
KHJlc3VsdC5leGNlcHRpb25Db2RlKCkpOworICAgIHJldHVybiBraXQocmVzdWx0LnRha2VSZXR1
cm5WYWx1ZSgpLnB0cigpKTsKIH0KIAotLSAoRE9NRG9jdW1lbnRUeXBlICopY3JlYXRlRG9jdW1l
bnRUeXBlOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihOU1N0cmluZyAqKXB1YmxpY0lkIDoo
TlNTdHJpbmcgKilzeXN0ZW1JZAorLSAoRE9NQ1NTU3R5bGVTaGVldCAqKWNyZWF0ZUNTU1N0eWxl
U2hlZXQ6KE5TU3RyaW5nICopdGl0bGUgbWVkaWE6KE5TU3RyaW5nICopbWVkaWEKIHsKICAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NRG9jdW1lbnRUeXBlICpyZXN1bHQgPSBraXQoV1RGOjpn
ZXRQdHIoSU1QTC0+Y3JlYXRlRG9jdW1lbnRUeXBlKHF1YWxpZmllZE5hbWUsIHB1YmxpY0lkLCBz
eXN0ZW1JZCwgZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVz
dWx0OworICAgIHJldHVybiBraXQodW53cmFwKCpzZWxmKS5jcmVhdGVDU1NTdHlsZVNoZWV0KHRp
dGxlLCBtZWRpYSkucHRyKCkpOwogfQogCi0tIChET01Eb2N1bWVudCAqKWNyZWF0ZURvY3VtZW50
OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSBxdWFsaWZpZWROYW1lOihOU1N0cmluZyAqKXF1YWxp
ZmllZE5hbWUgZG9jdHlwZTooRE9NRG9jdW1lbnRUeXBlICopZG9jdHlwZQorLSAoRE9NSFRNTERv
Y3VtZW50ICopY3JlYXRlSFRNTERvY3VtZW50OihOU1N0cmluZyAqKXRpdGxlCiB7CiAgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIERPTURvY3VtZW50ICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIo
SU1QTC0+Y3JlYXRlRG9jdW1lbnQobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCBjb3JlKGRv
Y3R5cGUpLCBlYykpKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1
bHQ7CisgICAgcmV0dXJuIGtpdCh1bndyYXAoKnNlbGYpLmNyZWF0ZUhUTUxEb2N1bWVudCh0aXRs
ZSkucHRyKCkpOwogfQogCi0tIChET01Eb2N1bWVudCAqKWNyZWF0ZURvY3VtZW50OihOU1N0cmlu
ZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KERPTURvY3VtZW50
VHlwZSAqKWRvY3R5cGUKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIERPTUltcGxlbWVudGF0aW9u
IChET01JbXBsZW1lbnRhdGlvbkRlcHJlY2F0ZWQpCisKKy0gKEJPT0wpaGFzRmVhdHVyZTooTlNT
dHJpbmcgKilmZWF0dXJlIDooTlNTdHJpbmcgKil2ZXJzaW9uCiB7Ci0gICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIERPTURvY3VtZW50ICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y3Jl
YXRlRG9jdW1lbnQobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCBjb3JlKGRvY3R5cGUpLCBl
YykpKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAg
cmV0dXJuIFtzZWxmIGhhc0ZlYXR1cmU6ZmVhdHVyZSB2ZXJzaW9uOnZlcnNpb25dOwogfQogCi0t
IChET01DU1NTdHlsZVNoZWV0ICopY3JlYXRlQ1NTU3R5bGVTaGVldDooTlNTdHJpbmcgKil0aXRs
ZSBtZWRpYTooTlNTdHJpbmcgKiltZWRpYQorLSAoRE9NRG9jdW1lbnRUeXBlICopY3JlYXRlRG9j
dW1lbnRUeXBlOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihOU1N0cmluZyAqKXB1YmxpY0lk
IDooTlNTdHJpbmcgKilzeXN0ZW1JZAogewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01D
U1NTdHlsZVNoZWV0ICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y3JlYXRlQ1NTU3R5
bGVTaGVldCh0aXRsZSwgbWVkaWEsIGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gW3NlbGYgY3JlYXRlRG9jdW1lbnRUeXBlOnF1
YWxpZmllZE5hbWUgcHVibGljSWQ6cHVibGljSWQgc3lzdGVtSWQ6c3lzdGVtSWRdOwogfQogCi0t
IChET01DU1NTdHlsZVNoZWV0ICopY3JlYXRlQ1NTU3R5bGVTaGVldDooTlNTdHJpbmcgKil0aXRs
ZSA6KE5TU3RyaW5nICopbWVkaWEKKy0gKERPTURvY3VtZW50ICopY3JlYXRlRG9jdW1lbnQ6KE5T
U3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooRE9NRG9j
dW1lbnRUeXBlICopZG9jdHlwZQogewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01DU1NT
dHlsZVNoZWV0ICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y3JlYXRlQ1NTU3R5bGVT
aGVldCh0aXRsZSwgbWVkaWEsIGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gW3NlbGYgY3JlYXRlRG9jdW1lbnQ6bmFtZXNwYWNl
VVJJIHF1YWxpZmllZE5hbWU6cXVhbGlmaWVkTmFtZSBkb2N0eXBlOmRvY3R5cGVdOwogfQogCi0t
IChET01IVE1MRG9jdW1lbnQgKiljcmVhdGVIVE1MRG9jdW1lbnQ6KE5TU3RyaW5nICopdGl0bGUK
Ky0gKERPTUNTU1N0eWxlU2hlZXQgKiljcmVhdGVDU1NTdHlsZVNoZWV0OihOU1N0cmluZyAqKXRp
dGxlIDooTlNTdHJpbmcgKiltZWRpYQogewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmNyZWF0ZUhUTUxE
b2N1bWVudCh0aXRsZSkpKTsKKyAgICByZXR1cm4gW3NlbGYgY3JlYXRlQ1NTU3R5bGVTaGVldDp0
aXRsZSBtZWRpYTptZWRpYV07CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0RPTS9ET01Eb2N1bWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01Eb2N1bWVu
dC5tbQppbmRleCBhOWMzY2Q4M2JmMjExYjUxY2M0ODU5OTQzMDI4NGEwMGU3OTY4OTI4Li4wZTlh
MmEyZDRjMGIxMTJhYThiNDkzZWYzNTZkNjRlYzEzYTk3MDRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9ET00vRE9NRG9jdW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvRE9N
L0RPTURvY3VtZW50Lm1tCkBAIC00Niw3ICs0Niw2IEBACiAjaW1wb3J0ICJET01IVE1MRWxlbWVu
dEludGVybmFsLmgiCiAjaW1wb3J0ICJET01IVE1MSGVhZEVsZW1lbnRJbnRlcm5hbC5oIgogI2lt
cG9ydCAiRE9NSFRNTFNjcmlwdEVsZW1lbnRJbnRlcm5hbC5oIgotI2ltcG9ydCA8V2ViQ29yZS9E
T01JbXBsZW1lbnRhdGlvbi5oPgogI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRP
TU5vZGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NTm9kZUl0ZXJhdG9ySW50ZXJuYWwuaCIKQEAg
LTE0Nyw5ICsxNDYsNyBAQCAtIChCT09MKXhtbFN0YW5kYWxvbmUKIC0gKHZvaWQpc2V0WG1sU3Rh
bmRhbG9uZTooQk9PTCluZXdYbWxTdGFuZGFsb25lCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIElNUEwtPnNldFhNTFN0YW5kYWxvbmUobmV3WG1sU3RhbmRhbG9uZSwgZWMpOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7CisgICAgSU1QTC0+c2V0WE1MU3RhbmRhbG9uZShuZXdYbWxTdGFu
ZGFsb25lKTsKIH0KIAogLSAoTlNTdHJpbmcgKilkb2N1bWVudFVSSQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KaW5kZXggYWNhZDhkZTNkZTNiOTJhMzM5OTQyOTgwNjYwODNmZjA1
YmQ5YjBjMy4uYTRhZDY3ODE0YWVkN2E1ZmM5ZDU1MTY0NTE1YTdiMzVjNjM4MjZjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC02MSw3ICs2MSw2IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0NhY2hlZFJlc291cmNlTG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Nocm9t
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgotI2ltcG9ydCA8V2ViQ29yZS9ET01J
bXBsZW1lbnRhdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRGcmFnbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1
bWVudExvYWRlci5oPgpAQCAtODAsNiArNzksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9IaXRUZXN0
UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9M
ZWdhY3lXZWJBcmNoaXZlLmg+CisjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMuaD4KQEAgLTEwMSw5ICsx
MDEsOSBAQAogI2ltcG9ydCA8V2ViQ29yZS9tYXJrdXAuaD4KICNpbXBvcnQgPFdlYktpdFN5c3Rl
bUludGVyZmFjZS5oPgogI2ltcG9ydCA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KKyNpbXBvcnQg
PHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgogI2ltcG9ydCA8cnVudGltZS9KU0xvY2suaD4KICNpbXBv
cnQgPHJ1bnRpbWUvSlNPYmplY3QuaD4KLSNpbXBvcnQgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgog
I2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0xMTEs
NyArMTExLDYgQEAKICNpbXBvcnQgIldlYlJlc291cmNlLmgiCiAjaW1wb3J0ICJXZWJVSUtpdERl
bGVnYXRlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L0VkaXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0b3JDbGllbnQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRm9jdXNDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnQuaD4KQEAgLTk4
OCw3ICs5ODcsNyBAQCAtIChCT09MKV9jYW5Qcm92aWRlRG9jdW1lbnRTb3VyY2UKICAgICBTdHJp
bmcgbWltZVR5cGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+bG9hZGVyKCktPndyaXRlcigpLm1pbWVU
eXBlKCk7CiAgICAgUGx1Z2luRGF0YSogcGx1Z2luRGF0YSA9IGZyYW1lLT5wYWdlKCkgPyAmZnJh
bWUtPnBhZ2UoKS0+cGx1Z2luRGF0YSgpIDogMDsKIAotICAgIGlmIChXZWJDb3JlOjpET01JbXBs
ZW1lbnRhdGlvbjo6aXNUZXh0TUlNRVR5cGUobWltZVR5cGUpCisgICAgaWYgKFdlYkNvcmU6Ok1J
TUVUeXBlUmVnaXN0cnk6OmlzVGV4dE1JTUVUeXBlKG1pbWVUeXBlKQogICAgICAgICB8fCBJbWFn
ZTo6c3VwcG9ydHNUeXBlKG1pbWVUeXBlKQogICAgICAgICB8fCAocGx1Z2luRGF0YSAmJiBwbHVn
aW5EYXRhLT5zdXBwb3J0c1dlYlZpc2libGVNaW1lVHlwZShtaW1lVHlwZSwgUGx1Z2luRGF0YTo6
QWxsUGx1Z2lucykgJiYgZnJhbWUtPmxvYWRlcigpLnN1YmZyYW1lTG9hZGVyKCkuYWxsb3dQbHVn
aW5zKCkpCiAgICAgICAgIHx8IChwbHVnaW5EYXRhICYmIHBsdWdpbkRhdGEtPnN1cHBvcnRzV2Vi
VmlzaWJsZU1pbWVUeXBlKG1pbWVUeXBlLCBQbHVnaW5EYXRhOjpPbmx5QXBwbGljYXRpb25QbHVn
aW5zKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggNzk5M2I5NmQ2MzIyMzA2OTE2NWE5MmM1
MDdlMzQ1ODE0NTE5OWU2MC4uZTIyNmNiMjEzYmIwYmJlZWIxMTE2MzI2ZjQxYzE5NTAwNWY2ODgw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcApAQCAtNTksNyArNTksNiBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvRG9jdW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0RPTUltcGxlbWVudGF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9ET01XaW5kb3cu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnQu
aD4KQEAgLTgxLDYgKzgwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxQbHVnSW5FbGVtZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0RPTVdpbmRvdy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
S2V5Ym9hcmRFdmVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Nb3VzZVJl
bGF0ZWRFdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTEz
ODUsNyArMTM4NSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmNhblByb3ZpZGVEb2N1bWVudFNvdXJj
ZShib29sKiByZXN1bHQpCiAgICAgICAgIEJTdHJpbmcgbWltZVR5cGVCU3RyOwogICAgICAgICBp
ZiAoU1VDQ0VFREVEKHVybFJlc3BvbnNlLT5NSU1FVHlwZSgmbWltZVR5cGVCU3RyKSkpIHsKICAg
ICAgICAgICAgIFN0cmluZyBtaW1lVHlwZShtaW1lVHlwZUJTdHIsIFN5c1N0cmluZ0xlbihtaW1l
VHlwZUJTdHIpKTsKLSAgICAgICAgICAgICpyZXN1bHQgPSBtaW1lVHlwZSA9PSAidGV4dC9odG1s
IiB8fCBXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlwZShtaW1lVHlwZSk7
CisgICAgICAgICAgICAqcmVzdWx0ID0gbWltZVR5cGUgPT0gInRleHQvaHRtbCIgfHwgV2ViQ29y
ZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZShtaW1lVHlwZSk7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgcmV0dXJuIGhyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkZyYW1lUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1l
UHJveHkuY3BwCmluZGV4IDE1YjhlMjhmMjMwMDkyOWQyMjBlNzMzYmZmMDA2MzAwZDEzYWFkYmYu
LmNkNzA2OTg1ODI2NzY3MjRkZjEwNzQ5OWJjODkzMTU3OGMzY2EwMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNs
dWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRE9NSW1wbGVtZW50YXRp
b24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1F
VHlwZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTExNywxNSArMTE2LDEzIEBA
IGJvb2wgV2ViRnJhbWVQcm94eTo6aXNEaXNwbGF5aW5nU3RhbmRhbG9uZU1lZGlhRG9jdW1lbnQo
KSBjb25zdAogCiBib29sIFdlYkZyYW1lUHJveHk6OmlzRGlzcGxheWluZ01hcmt1cERvY3VtZW50
KCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBzaG91bGQgYmUgbW92ZWQgdG8g
c29tZXdoZXJlIGluIFdlYkNvcmUuCi0gICAgcmV0dXJuIG1fTUlNRVR5cGUgPT0gInRleHQvaHRt
bCIgfHwgbV9NSU1FVHlwZSA9PSAiaW1hZ2Uvc3ZnK3htbCIgfHwgbV9NSU1FVHlwZSA9PSAiYXBw
bGljYXRpb24veC13ZWJhcmNoaXZlIiB8fCBET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlw
ZShtX01JTUVUeXBlKTsKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSBjYWxsIHRvIGEg
c2luZ2xlIE1JTUVUeXBlUmVnaXN0cnkgZnVuY3Rpb247IGFkZGluZyBhIG5ldyBvbmUgaWYgbmVl
ZGVkLgorICAgIC8vIEZJWE1FOiBUaGlzIGlzIGRvaW5nIGNhc2Ugc2Vuc2l0aXZlIGNvbXBhcmlz
b25zIG9uIE1JTUUgdHlwZXMsIHNob3VsZCBiZSB1c2luZyBBU0NJSSBjYXNlIGluc2Vuc2l0aXZl
IGluc3RlYWQuCisgICAgcmV0dXJuIG1fTUlNRVR5cGUgPT0gInRleHQvaHRtbCIgfHwgbV9NSU1F
VHlwZSA9PSAiaW1hZ2Uvc3ZnK3htbCIgfHwgbV9NSU1FVHlwZSA9PSAiYXBwbGljYXRpb24veC13
ZWJhcmNoaXZlIiB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1hNTE1JTUVUeXBlKG1fTUlNRVR5cGUp
OwogfQogCiBib29sIFdlYkZyYW1lUHJveHk6OmlzRGlzcGxheWluZ1BERkRvY3VtZW50KCkgY29u
c3QKIHsKLSAgICBpZiAobV9NSU1FVHlwZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQogICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVU
eXBlKG1fTUlNRVR5cGUpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287862</attachid>
            <date>2016-09-03 08:14:34 -0700</date>
            <delta_ts>2016-09-03 08:35:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161295-20160903081216.patch</filename>
            <type>text/plain</type>
            <size>78531</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVhZGQ2YmY1MDNkZGNk
MGUzYTFjMTVlYTg5YjI4NzU0YTM4MTQ4MC4uNjUyYTRjMzk2MDFlYzUyZTNiYmViOGNmYWRmOTVj
NTdlMmFhOWEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDE2LTA5LTAzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJlYW1saW5lIERPTUltcGxl
bWVudGF0aW9uLCBhbmQgbW92ZSBpdCB0byBvdXIgbmV3IERPTSBleGNlcHRpb24gc3lzdGVtCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEyOTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgbmV3IGhlYWRlcnMgdG8gcHJvamVjdC4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6dG9KUyk6IEFkZGVkIGFuIG92ZXJsb2FkIGZvciBFeGNlcHRpb25Pcjw+OyB0aGlzIGhhbmRs
ZXMgdGhlCisgICAgICAgIGV4Y2VwdGlvbiBjYXNlIGhlcmUgc28gaXQgZG9lc24ndCBuZWVkIHRv
IGJlIGhhbmRsZWQgaW4gZ2VuZXJhdGVkIGNvZGUKKyAgICAgICAgZm9yIHRoZSBiaW5kaW5nLiBJ
bXBsZW1lbnRlZCBoZXJlIHNvIHRoYXQgRXhjZXB0aW9uT3IuaCBkb2VzIG5vdCBrbm93CisgICAg
ICAgIGFib3V0IGJpbmRpbmdzLiBCdXQgc2luY2UgdGhpcyBpcyBhIHRlbXBsYXRlLCBpdCB3aWxs
IG9ubHkgY29tcGlsZSB3aGVuCisgICAgICAgIGluc3RhbnRpYXRlZCBhbmQgdGhlcmUgaXMgbm8g
bmVlZCB0byBpbmNsdWRlIEV4Y2VwdGlvbk9yLmggYW5kIGluZGlyZWN0bHkKKyAgICAgICAgdGhl
IFZhcmlhbnQuaCBoZWFkZXIgaW4gdGhpcyBoZWFkZXIuCisgICAgICAgIChXZWJDb3JlOjp0b0pT
TmV3bHlDcmVhdGVkKTogRGl0dG8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbik6
IFJlZmVyIHRvIEpTQzo6RXhjZXB0aW9uIHdpdGggZXhwbGljaXQKKyAgICAgICAgbmFtZXNwYWNl
IHRvIGF2b2lkIGFtYmlndWl0eSB3aXRoIFdlYkNvcmU6OkV4Y2VwdGlvbi4KKworICAgICAgICAq
IGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1l
bnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnRUeXBlKTogQ2hhbmdlZCB0byByZXR1cm4KKyAgICAgICAg
RXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVYTUxEb2N1bWVudCk6IEFkZGVk
LiBIZWxwZXIgdXNlZCBpbiBjcmVhdGVEb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUlt
cGxlbWVudGF0aW9uOjpnZXRJbnRlcmZhY2UpOiBEZWxldGVkLiBUaGlzIHdhcyB1bnVzZWQuCisg
ICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQpOiBDaGFu
Z2VkIHRvIHJldHVybgorICAgICAgICBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkRP
TUltcGxlbWVudGF0aW9uOjpjcmVhdGVDU1NTdHlsZVNoZWV0KTogUmVtb3ZlZCB0aGUgdW51c2Vk
CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgb3V0IGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6
aXNWYWxpZFhNTE1JTUVUeXBlQ2hhcik6IERlbGV0ZWQuIE1vdmVkIHRvIE1JTUVUeXBlUmVnaXN0
cnkuCisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlwZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmlzVGV4dE1JTUVU
eXBlKTogRGl0dG8uCisKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uaDogQ2hhbmdl
ZCBmdW5jdGlvbnMgYXMgZGVzY3JpYmVkIGFib3ZlIHRvCisgICAgICAgIHJldHVybiBFeGNlcHRp
b25PciB2YWx1ZXMuIEFsc28gcmVtb3ZlZCB1bnVzZWQgZ2V0SW50ZXJmYWNlIGZ1bmN0aW9uLAor
ICAgICAgICBhbmQgaXNYTUxNSU1FVHlwZSBhbmQgaXNUZXh0TUlNRVR5cGUsIHdoaWNoIGJvdGgg
bW92ZWQgdG8gdGhlCisgICAgICAgIE1JTUVUeXBlUmVnaXN0cnkgY2xhc3MgYWxvbmdzaWRlIGFs
bCB0aGUgb3RoZXIgc2ltaWxhciBNSU1FIHR5cGUKKyAgICAgICAgZnVuY3Rpb25zLgorCisgICAg
ICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbDogUmVvcmdhbml6ZWQgdGhpcyB0byBtYXRj
aCB0aGUgSURMIGZpbGVzCisgICAgICAgIGluIHRoZSBzcGVjaWZpY2F0aW9ucyBhIGxpdHRsZSBi
ZXR0ZXIuIEFsc28gcmVtb3ZlZCBbUmFpc2VzRXhjZXB0aW9uXQorICAgICAgICBzaW5jZSB0aGF0
IGlzIG9ubHkgbmVlZGVkIGZvciB0aGUgb2xkIGxlZ2FjeSBFeGNlcHRpb25Db2RlJiBzdHlsZS4K
KworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6c2V0WE1MVmVyc2lvbik6IFJlbW92ZWQgY2FsbCB0byB0aGUKKyAgICAgICAgRE9NSW1wbGVt
ZW50YXRpb246Omhhc0ZlYXR1cmUgZnVuY3Rpb24gc2luY2UgdGhlIHZhbHVlcyBwYXNzZWQgaW4K
KyAgICAgICAgdW5jb25kaXRpb25hbGx5IHJlc3VsdCBpbiB0aGUgcmV0dXJuIHZhbHVlICJ0cnVl
Ii4gVGhpcyBpcyBsZWZ0IG92ZXIKKyAgICAgICAgZWl0aGVyIGZyb20gc3BlY2lmaWNhdGlvbiBs
YW5ndWFnZSwgb3IgZnJvbSBhbiBhbmNpZW50IHZlcnNpb24gb2YgdGhpcworICAgICAgICBjb2Rl
IHRoYXQgd29ya2VkIGluIGEgIm5vIFhNTCBzdXBwb3J0ZWQiIG1vZGUuCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6c2V0WE1MU3RhbmRhbG9uZSk6IERpdHRvLgorCisgICAgICAgICogZG9t
L0RvY3VtZW50Lmg6IFJlbW92ZWQgdGhlIEV4Y2VwdGlvbkNvZGUmIG91dCBhcmd1bWVudCBmcm9t
IHNldFhNTFN0YW5kYWxvbmUuCisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDogUmVtb3ZlZCBb
U2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBmcm9tIHhtbFN0YW5kYWxvbmUuCisKKyAgICAgICAgKiBk
b20vRXhjZXB0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIGRvbS9FeGNlcHRpb25Pci5oOiBBZGRl
ZC4KKworICAgICAgICAqIGh0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHA6IFJlbW92ZWQgdW5u
ZWVkZWQgaW5jbHVkZSBvZiBET01JbXBsZW1lbnRhdGlvbi5oLgorCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVYSFJU
ZXh0RGVjb2Rlcik6IFVzZSBpc1hNTE1JTUVUeXBlIGluIGl0cyBuZXcgbG9jYXRpb24gaW4KKyAg
ICAgICAgTUlNRVR5cGVSZWdpc3RyeS4KKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlT3RoZXJSZXNvdXJjZVRleHRE
ZWNvZGVyKTogRGl0dG8uCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOiBSZW1v
dmVkIHVubmVlZGVkIGluY2x1ZGUgb2YgRE9NSW1wbGVtZW50YXRpb24uaC4KKworICAgICAgICAq
IGxvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRS
ZXNvdXJjZURlY29kZXI6OmRldGVybWluZUNvbnRlbnRUeXBlKTogVXNlIGlzWE1MTUlNRVR5cGUg
aW4gaXRzCisgICAgICAgIG5ldyBsb2NhdGlvbiBpbiBNSU1FVHlwZVJlZ2lzdHJ5LgorCisgICAg
ICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1RleHRNSU1FVHlwZSk6IEFkZGVkLiBNb3ZlZCBoZXJlIGZyb20K
KyAgICAgICAgRE9NSW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkWE1M
TUlNRVR5cGVDaGFyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1hNTE1JTUVUeXBlKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJl
Z2lzdHJ5Lmg6IEFkZGVkIGlzWE1MTUlNRVR5cGUgYW5kIGlzVGV4dE1JTUVUeXBlLgorICAgICAg
ICBNYWRlIGlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUgcHJpdmF0ZS4KKworICAgICAgICAqIHN2
Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmlzU3VwcG9y
dGVkKTogRGVsZXRlZC4gVGhpcyBmdW5jdGlvbiB3YXMgbmV2ZXIgY2FsbGVkLgorICAgICAgICAq
IHN2Zy9TVkdFbGVtZW50Lmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZSBjaGFuZ2UuCisKKyAgICAg
ICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OnJlc3BvbnNlSXNYTUwpOiBVc2UgaXNYTUxNSU1FVHlwZSBpbiBpdHMgbmV3CisgICAg
ICAgIGxvY2F0aW9uIGluIE1JTUVUeXBlUmVnaXN0cnkuCisKIDIwMTYtMDktMDMgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgQVNDSUlMaXRlcmFs
IGluIHNvbWUgbW9yZSBwbGFjZXMKQEAgLTQ2NjQsNiArNDc1NCwxMCBAQAogICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWF0aE1MUGFkZGVkOjpzdHlsZURpZENoYW5nZSk6IERlbGV0ZWQuIERpdHRv
LgogICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmg6IFVwZGF0
ZSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBhbmQgcmVtb3ZlIG1fYXNjZW50LgogCisgICAgICAgICog
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0RG9jdW1lbnQpOiBVcGRhdGVkIHNpbmNlIHNldFhN
TFN0YW5kYWxvbmUKKyAgICAgICAgbm8gbG9uZ2VyIGNhbiByYWlzZSBhbiBleGNlcHRpb24uCisK
IDIwMTYtMDgtMjcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBVUkxQYXJzZXIgc2hvdWxkIHBhcnNlIHJlbGF0aXZlIFVSTHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCA5MDlmZDhiYjZlYTA3YjE4NDZmYjcyN2FkZWQzYzBhODZlOWQ0Y2Y1Li42YmU4
ZDVlYjU1NjIxMWI0YzBkYTA0MmI0OGZjMGJkZTg5MGU3NTVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTYtMDktMDMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFN0cmVhbWxpbmUgRE9NSW1wbGVtZW50YXRpb24sIGFuZCBtb3ZlIGl0IHRv
IG91ciBuZXcgRE9NIGV4Y2VwdGlvbiBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTI5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTURPTUltcGxlbWVudGF0aW9uLm1tOgorICAg
ICAgICAodW53cmFwKTogQWRkZWQuIFVzZSB0aGlzIGluc3RlYWQgb2YgdGhlIElNUEwgbWFjcm8u
CisgICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGRlYWxsb2NdKTogVXBkYXRlZCB0byB1c2Ug
dW53cmFwLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBoYXNGZWF0dXJlOnZlcnNpb246
XSk6IERpdHRvLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVEb2N1bWVudFR5
cGU6cHVibGljSWQ6c3lzdGVtSWQ6XSk6IFVwZGF0ZWQgdG8gd29yayB3aXRoCisgICAgICAgIEV4
Y2VwdGlvbk9yLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVEb2N1bWVudDpx
dWFsaWZpZWROYW1lOmRvY3R5cGU6XSk6IERpdHRvLgorICAgICAgICAoLVtET01JbXBsZW1lbnRh
dGlvbiBjcmVhdGVDU1NTdHlsZVNoZWV0Om1lZGlhOl0pOiBSZW1vdmVkIGV4Y2VwdGlvbiBsb2dp
YyBzaW5jZQorICAgICAgICB0aGlzIGZ1bmN0aW9uIGNhbiBubyBsb25nZXIgcmFpc2UgYW4gZXhj
ZXB0aW9uLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVIVE1MRG9jdW1lbnQ6
XSk6IFVwZGF0ZWQgdG8gdXNlIHVud3JhcC4KKyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24g
aGFzRmVhdHVyZTo6XSk6IENoYW5nZWQgdG8gY2FsbCB0aGUgbm9uLWRlcHJlY2F0ZWQgdmVyc2lv
bgorICAgICAgICByYXRoZXIgdGhhbiBkdXBsaWNhdGluZyBpdHMgaW1wbGVtZW50YXRpb24uIEFs
c28gbW92ZWQgaW50byB0aGUgY2F0ZWdvcnkgYXMgZGVmaW5lZAorICAgICAgICBpbiB0aGUgaGVh
ZGVyLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVEb2N1bWVudFR5cGU6Ojpd
KTogRGl0dG8uCisgICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGNyZWF0ZURvY3VtZW50Ojo6
XSk6IERpdHRvLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVDU1NTdHlsZVNo
ZWV0OjpdKTogRGl0dG8uCisKKyAgICAgICAgKiBET00vRE9NRG9jdW1lbnQubW06IFJlbW92ZWQg
dW5uZWVkZWQgaW5jbHVkZSBvZiBET01JbXBsZW1lbnRhdGlvbi5oLgorICAgICAgICAoLVtET01E
b2N1bWVudCBzZXRYbWxTdGFuZGFsb25lOl0pOiBVcGRhdGVkIHNpbmNlIHNldFhNTFN0YW5kYWxv
bmUgbm8gbG9uZ2VyIGNhbgorICAgICAgICByYWlzZSBhbiBleGNlcHRpb24uCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfY2FuUHJvdmlkZURv
Y3VtZW50U291cmNlXSk6IFVwZGF0ZWQgdG8gdXNlIGlzVGV4dE1JTUVUeXBlIGluIGl0cyBuZXcK
KyAgICAgICAgbG9jYXRpb24gaW4gTUlNRVR5cGVSZWdpc3RyeSBpbnN0ZWFkIG9mIGluIERPTUlt
cGxlbWVudGF0aW9uLgorCiAyMDE2LTA5LTAyICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNv
bT4KIAogICAgICAgICBOZWVkIHRvIHVwZGF0ZUVkaXRvclN0YXRlIGlmIGFuIGVsZW1lbnQgY2hh
bmdlIGVkaXQtYWJpbGl0eSB3aXRob3V0IGNoYW5naW5nIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGZm
M2I1NTg3OGMyMGQyNDNhMmUwOTNhNGVjZjhkZTk4YmYzODYxZjcuLmM5NmY4NjQwODk0MTc2NmRl
YzFhODg5YTlmNzk2YjJiM2Q5ZTA2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxNi0wOS0wMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
U3RyZWFtbGluZSBET01JbXBsZW1lbnRhdGlvbiwgYW5kIG1vdmUgaXQgdG8gb3VyIG5ldyBET00g
ZXhjZXB0aW9uIHN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYxMjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6Y2FuUHJvdmlkZURv
Y3VtZW50U291cmNlKTogVXBkYXRlZCB0byB1c2UgaXNYTUxNSU1FVHlwZSBpbiBpdHMgbmV3Cisg
ICAgICAgIGxvY2F0aW9uIGluIE1JTUVUeXBlUmVnaXN0cnkgaW5zdGVhZCBvZiBpbiBET01JbXBs
ZW1lbnRhdGlvbi4KKwogMjAxNi0wOS0wMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBCdWlsZCBmaXggYXR0ZW1wdCBhZnRlciByMjA1MzgxLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDJkNTgwOGYyNjAzZmNjZGQzN2M3ZmJlMWEyZmU3NDllMTEzNjYwMWMuLmQzNjJkY2I2Y2Mw
YmJkMTM2OWIwMGFjOGMxMTEzZGJkMTcxNmNkMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAxNi0wOS0wMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
U3RyZWFtbGluZSBET01JbXBsZW1lbnRhdGlvbiwgYW5kIG1vdmUgaXQgdG8gb3VyIG5ldyBET00g
ZXhjZXB0aW9uIHN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYxMjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lUHJveHk6OmlzRGlzcGxheWluZ01hcmt1cERvY3VtZW50KTogVXNlIGlzWE1MTUlN
RVR5cGUgaW4gaXRzCisgICAgICAgIG5ldyBsb2NhdGlvbiBpbiBNSU1FVHlwZVJlZ2lzdHJ5IHJh
dGhlciB0aGFuIGluIERPTUltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZVByb3h5Ojppc0Rpc3BsYXlpbmdQREZEb2N1bWVudCk6IFJlbW92ZWQgdW5uZWVkZWQgcmVkdW5k
YW50CisgICAgICAgIGNoZWNrIGZvciBlbXB0eSBzdHJpbmcsIGFscmVhZHkgZG9uZSBieSBNSU1F
VHlwZVJlZ2lzdHJ5LgorCiAyMDE2LTA5LTAzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTW92ZSBXZWJLaXQyIFdlYkluc3Bl
Y3RvciBmaWxlcyB0byAjcHJhZ21hIG9uY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNzU2MDlmM2U5YzFiMGRmMjE2ZjQ5NmNl
NmFjZjJiMDc4MWRhZmUyLi5hZGVhZDZkMDg1NjFmMjU4YjY0ZjJkN2NiNWZlNmRjYmIxMTQzOWYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0zMjc1LDYgKzMyNzUsOCBAQAogCQk5M0M0RjZFQjExMDhGOUE1MDA5OUQwREIgLyog
QWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNDNEY2RTkxMTA4RjlBNTAwOTlEMERCIC8qIEFjY2Vzc2liaWxpdHlT
Y3JvbGxiYXIuaCAqLzsgfTsKIAkJOTNDQ0YwMjcwQUY2QzUyOTAwMDE4RTg5IC8qIE5hdmlnYXRp
b25BY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzQ0NGMDI2MEFGNkM1MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNDQ0YwNjAwQUY2Q0E3
NjAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDQ0YwNUYwQUY2Q0E3NjAwMDE4RTg5IC8qIE5hdmln
YXRpb25BY3Rpb24uY3BwICovOyB9OworCQk5M0QxOTYzMTFENkNBQjc2MDBGQzdFNDcgLyogRXhj
ZXB0aW9uT3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzRDE5NjMwMUQ2Q0FCNzYwMEZDN0U0NyAvKiBFeGNlcHRpb25Pci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRDE5NjMzMUQ2Q0FCODIwMEZD
N0U0NyAvKiBFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzRDE5NjMyMUQ2Q0FCODIwMEZDN0U0NyAvKiBFeGNlcHRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q0Mzc5RjFENTdC
MTUzMDBBQjg1RUEgLyogSlNNYWluVGhyZWFkRXhlY1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RjkzNEQ4MzExODlGMUVFMDA1MDhENUQgLyog
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTNENDM3QTAxRDU3QjE5QTAwQUI4NUVBIC8qIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QjU2QzlBODFDODkzMTI4MDBDNDU2REYgLyogQ3VzdG9tRWxlbWVudFJlYWN0aW9u
UXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5M0Q0MzdBMTFENTdCM0Y0MDBBQjg1RUEgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQURFMTFGNEEx
OEQ4MzExQjAwNzg5ODNCIC8qIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTA0MzcsNiArMTA0Mzks
OCBAQAogCQk5M0NBNENBMjA5REY5M0ZBMDBERjg2NzcgLyogc3ZnLmNzcyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBzdmcuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0NDRjAy
NjBBRjZDNTI5MDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0aW9uQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzQ0NGMDVGMEFGNkNBNzYwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmlnYXRpb25BY3Rpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0QxOTYzMDFENkNBQjc2MDBGQzdF
NDcgLyogRXhjZXB0aW9uT3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhj
ZXB0aW9uT3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNEMTk2MzIxRDZDQUI4
MjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBFeGNlcHRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNEOUQ1M0IwREEy
N0UxODAwNzcyMTZDIC8qIFJhbmdlQm91bmRhcnlQb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSYW5nZUJvdW5kYXJ5UG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTNFMjI3REIwQUY1ODlBRDAwRDQ4MzI0IC8qIERvY3VtZW50TG9hZGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50TG9hZGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFMjI3REQwQUY1ODlBRDAwRDQ4MzI0IC8q
IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIyOTk2LDExICsyMzAwMCwxMyBAQAogCQkJCUUxMkVEQjdBMEIz
MDhBNzgwMDI3MDRCNiAvKiBFdmVudFRhcmdldC5oICovLAogCQkJCTg1QUZBNzQyMEFBRjI5ODQw
MEU4NDMwNSAvKiBFdmVudFRhcmdldC5pZGwgKi8sCiAJCQkJQ0RDRTVDRDAxNDYzM0JDOTAwRDQ3
Q0NBIC8qIEV2ZW50VGFyZ2V0RmFjdG9yeS5pbiAqLywKKwkJCQk5M0QxOTYzMjFENkNBQjgyMDBG
QzdFNDcgLyogRXhjZXB0aW9uLmggKi8sCiAJCQkJQkM2MEQ4RjAwRDJBMTFFMDAwQjk5MThGIC8q
IEV4Y2VwdGlvbkJhc2UuY3BwICovLAogCQkJCUJDNjBEOEYxMEQyQTExRTAwMEI5OTE4RiAvKiBF
eGNlcHRpb25CYXNlLmggKi8sCiAJCQkJOTM1RkJDRjEwOUJBMTQzQjAwRTIzMEIxIC8qIEV4Y2Vw
dGlvbkNvZGUuaCAqLywKIAkJCQlBN0NBQ0RCMDEzQ0U4NzVCMDBCQkJFM0YgLyogRXhjZXB0aW9u
Q29kZVBsYWNlaG9sZGVyLmNwcCAqLywKIAkJCQlBNzRCQjc2QTEzQkRBODYzMDBGRjdCRjAgLyog
RXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmggKi8sCisJCQkJOTNEMTk2MzAxRDZDQUI3NjAwRkM3
RTQ3IC8qIEV4Y2VwdGlvbk9yLmggKi8sCiAJCQkJRTQ3RTI3NjcxNjAzNkVEQzAwRUUyQUZCIC8q
IEV4dGVuc2lvblN0eWxlU2hlZXRzLmNwcCAqLywKIAkJCQlFNDdFMjc2NDE2MDM2RUQyMDBFRTJB
RkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCAqLywKIAkJCQlCNkQ5RDIzNDE0RUFCRDI2MDA5
MEQ3NUUgLyogRm9jdXNFdmVudC5jcHAgKi8sCkBAIC0yNTU5OCw2ICsyNTYwNCw3IEBACiAJCQkJ
MDc4RTA5MzkxN0QxNkIyQzAwNDIwQUExIC8qIE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTA3OEUwOTE2MTdEMTREMUMwMDQyMEFBMSAvKiBNZWRpYVN0cmVh
bUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkzNzE3RDE2QjJDMDA0MjBBQTEgLyog
TWVkaWFTdHJlYW1Qcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0QxOTYzMzFENkNBQjgy
MDBGQzdFNDcgLyogRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkxNzE3RDE0
RDFDMDA0MjBBQTEgLyogTWVkaWFTdHJlYW1SZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDc4RTA5MTgxN0QxNEQxQzAwNDIwQUExIC8qIE1lZGlhU3RyZWFtVHJhY2suaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA3OEUwOTE5MTdEMTREMUMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbVRyYWNrRXZl
bnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjY2NjgsNiArMjY2NzUsNyBAQAogCQkJCUIyMjI3QUQ3
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm0uaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3QURBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1hYmxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMjIyN0FERDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtRGlzdGFuY2Uu
aCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDE5NjMxMUQ2Q0FCNzYwMEZDN0U0NyAvKiBFeGNlcHRp
b25Pci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBREYwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R1RyYW5zZm9ybUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4QzcxMzZFMTI4OTU2QTMwMDFC
MTA3RSAvKiBTVkdUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyN0FFMjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVFJlZkVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA5
YWEzMzYyODk2NGFmMDQzNTVlMjk4NTQ0YmMxZmY2OGY2NmIzYjAxLi5hNGUwYmMzZTY3MDE4NmJl
ZjI2YTZkYjRmYzlhZjY4YTllNmRjNDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuaApAQCAtMjMsOSArMjMsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCi0jaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAj
aW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIldlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5oIgpAQCAtNjks
NyArNjksOSBAQCBjbGFzcyBOb2RlOwogCiBzdHJ1Y3QgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdl
OwogCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNz
IEV4Y2VwdGlvbk9yOworCit1c2luZyBFeGNlcHRpb25Db2RlID0gaW50OwogCiBzdHJ1Y3QgRXhj
ZXB0aW9uRGV0YWlscyB7CiAgICAgU3RyaW5nIG1lc3NhZ2U7CkBAIC0xODYsNiArMTg4LDkgQEAg
SlNDOjpKU1ZhbHVlIGNyZWF0ZURPTUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEV4Y2VwdGlv
bkNvZGUsIGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRET01FeGNlcHRp
b24oSlNDOjpFeGVjU3RhdGUqLCBFeGNlcHRpb25Db2RlKTsKIHZvaWQgc2V0RE9NRXhjZXB0aW9u
KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJik7CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgRXhjZXB0aW9uT3I8VD4mJik7Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIEV4Y2VwdGlvbk9yPFQ+JiYpOworCiBKU0M6OkpTVmFs
dWUganNTdHJpbmcoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBVUkwmKTsgLy8gZW1wdHkgaWYgdGhl
IFVSTCBpcyBudWxsCiAKIEpTQzo6SlNWYWx1ZSBqc1N0cmluZ09yTnVsbChKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IFN0cmluZyYpOyAvLyBudWxsIGlmIHRoZSBzdHJpbmcgaXMgbnVsbApAQCAtODA4
LDQgKzgxMywyMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRv
TnVsbGFibGVKU051bWJlcihPcHRpb25hbDxUPiBvcHRpb25hbAogICAgIHJldHVybiBvcHRpb25h
bE51bWJlciA/IEpTQzo6anNOdW1iZXIob3B0aW9uYWxOdW1iZXIudmFsdWUoKSkgOiBKU0M6Ompz
TnVsbCgpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFeGNlcHRpb25PcjxUPiYmIHZhbHVlKQoreworICAgIGlmIChVTkxJS0VMWSh2YWx1ZS5oYXNF
eGNlcHRpb24oKSkpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCB2YWx1ZS5leGNl
cHRpb25Db2RlKCkpOworICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOworICAgIH0K
KyAgICByZXR1cm4gdG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB2YWx1ZS50YWtlUmV0dXJuVmFs
dWUoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9K
U05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEV4Y2VwdGlvbk9yPFQ+JiYgdmFsdWUpCit7CisgICAgLy8gRklYTUU6IEl0
J3MgcmVhbGx5IGFubm95aW5nIHRvIGhhdmUgdHdvIG9mIHRoZXNlIGZ1bmN0aW9ucy4gU2hvdWxk
IGZpbmQgYSB3YXkgdG8gY29tYmluZSB0b0pTIGFuZCB0b0pTTmV3bHlDcmVhdGVkLgorICAgIGlm
IChVTkxJS0VMWSh2YWx1ZS5oYXNFeGNlcHRpb24oKSkpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKHN0YXRlLCB2YWx1ZS5leGNlcHRpb25Db2RlKCkpOworICAgICAgICByZXR1cm4gSlNDOjpq
c1VuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9KU05ld2x5Q3JlYXRlZChzdGF0ZSwg
Z2xvYmFsT2JqZWN0LCB2YWx1ZS50YWtlUmV0dXJuVmFsdWUoKSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggM2IzZTMxNjRkNDNjOTI2NDRlZTkxNmRiYWE2MGVjNDRhMGZj
ZTUzZi4uNjE2YmFiMTgyYTgyZjdlNWFhNTQ5ZjBhY2RiNmMwZGJlZDIzMDhjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAg
LTQzNDEsNyArNDM0MSw3IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24KICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhcmdzLmFwcGVuZCgiIC4gTmF0
aXZlVG9KU1ZhbHVlKCRwYXJhbSwgMSwgJGludGVyZmFjZSwgJHBhcmFtTmFtZSwgIm1fZGF0YSIp
IC4gIik7XG4iKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJcbiAgICBOYWtlZFB0cjxFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uO1xuIik7Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0
aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjtcbiIpOwogCiAgICAgICAgICAgICBteSAkcHJvcGVydHlU
b0xvb2t1cCA9ICJJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCBcIiR7ZnVuY3Rpb25OYW1l
fVwiKSI7CiAgICAgICAgICAgICBteSAkaW52b2tlTWV0aG9kID0gIkpTQ2FsbGJhY2tEYXRhOjpD
YWxsYmFja1R5cGU6OkZ1bmN0aW9uT3JPYmplY3QiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5jcHAKaW5kZXgg
NmM2ZTRiZjcxMWFkMTE1ZWU4MjJkMmRjNWRlOWFjN2FhZjE3MDJmMS4uNjU4MmU2MjQ3ZWQ5Yzcx
MjE2ZjExZjU3ZGUxNWRjNDlmNGI1MDk2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suY3BwCkBAIC0xMDgs
NyArMTA4LDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoTm9QYXJhbSgpCiAg
ICAgRXhlY1N0YXRlKiBzdGF0ZSA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMo
KTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogCi0gICAgTmFrZWRQdHI8RXhjZXB0
aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0
dXJuZWRFeGNlcHRpb247CiAgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCBKU0NhbGxi
YWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3Rh
dGUsICJjYWxsYmFja1dpdGhOb1BhcmFtIiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAo
cmV0dXJuZWRFeGNlcHRpb24pCiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihzdGF0ZSwgcmV0dXJu
ZWRFeGNlcHRpb24pOwpAQCAtMTI4LDcgKzEyOCw3IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2s6OmNh
bGxiYWNrV2l0aEFycmF5UGFyYW0oUmVmUHRyPEZsb2F0MzJBcnJheT4gYXJyYXlQYXJhbSkKICAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKHRvSlMoc3RhdGUs
IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCksIGFycmF5UGFyYW0pKTsKIAotICAgIE5ha2VkUHRyPEV4
Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CisgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+
IHJldHVybmVkRXhjZXB0aW9uOwogICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlND
YWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHN0YXRlLCAiY2FsbGJhY2tXaXRoQXJyYXlQYXJhbSIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAg
ICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKQogICAgICAgICByZXBvcnRFeGNlcHRpb24oc3RhdGUs
IHJldHVybmVkRXhjZXB0aW9uKTsKQEAgLTE0OSw3ICsxNDksNyBAQCBib29sIEpTVGVzdENhbGxi
YWNrOjpjYWxsYmFja1dpdGhTZXJpYWxpemVkU2NyaXB0VmFsdWVQYXJhbShSZWZQdHI8U2VyaWFs
aXplZFNjcgogICAgIGFyZ3MuYXBwZW5kKHNyelBhcmFtID8gc3J6UGFyYW0tPmRlc2VyaWFsaXpl
KHN0YXRlLCBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLCAwKSA6IGpzTnVsbCgpKTsKICAgICBhcmdz
LmFwcGVuZChqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgc3RyQXJnKSk7CiAKLSAgICBOYWtlZFB0
cjxFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0
aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKICAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3Ms
IEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhzdGF0ZSwgImNhbGxiYWNrV2l0aFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVBhcmFtIiksIHJl
dHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pCiAgICAgICAgIHJl
cG9ydEV4Y2VwdGlvbihzdGF0ZSwgcmV0dXJuZWRFeGNlcHRpb24pOwpAQCAtMTY5LDcgKzE2OSw3
IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoRE9NU3RyaW5n
TGlzdCogbGlzdFBhcmFtKQogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJn
cy5hcHBlbmQodG9KUyhzdGF0ZSwgbV9kYXRhLT5nbG9iYWxPYmplY3QoKSwgbGlzdFBhcmFtKSk7
CiAKLSAgICBOYWtlZFB0cjxFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOworICAgIE5ha2Vk
UHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKICAgICBtX2RhdGEtPmludm9r
ZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgImNhbGxiYWNrV2l0aFN0cmluZ0xpc3QiKSwgcmV0
dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikKICAgICAgICAgcmVw
b3J0RXhjZXB0aW9uKHN0YXRlLCByZXR1cm5lZEV4Y2VwdGlvbik7CkBAIC0xODksNyArMTg5LDcg
QEAgYm9vbCBKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoQm9vbGVhbihib29sIGJvb2xQYXJh
bSkKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKGpzQm9v
bGVhbihib29sUGFyYW0pKTsKIAotICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNl
cHRpb247CisgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwog
ICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNr
VHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAiY2FsbGJhY2tXaXRo
Qm9vbGVhbiIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9u
KQogICAgICAgICByZXBvcnRFeGNlcHRpb24oc3RhdGUsIHJldHVybmVkRXhjZXB0aW9uKTsKQEAg
LTIxMCw3ICsyMTAsNyBAQCBib29sIEpTVGVzdENhbGxiYWNrOjpjYWxsYmFja1JlcXVpcmVzVGhp
c1RvUGFzcyhpbnQzMl90IGxvbmdQYXJhbSwgVGVzdE5vZGUqIHRlcwogICAgIGFyZ3MuYXBwZW5k
KGpzTnVtYmVyKGxvbmdQYXJhbSkpOwogICAgIGFyZ3MuYXBwZW5kKHRvSlMoc3RhdGUsIG1fZGF0
YS0+Z2xvYmFsT2JqZWN0KCksIHRlc3ROb2RlUGFyYW0pKTsKIAotICAgIE5ha2VkUHRyPEV4Y2Vw
dGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CisgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJl
dHVybmVkRXhjZXB0aW9uOwogICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxs
YmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0
YXRlLCAiY2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3MiKSwgcmV0dXJuZWRFeGNlcHRpb24pOwog
ICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKHN0YXRl
LCByZXR1cm5lZEV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5jcHAK
aW5kZXggNDgzNzY3MTcwODIyYWVlNjk4NmQwYTEyN2ZlZjRjY2JlM2Y3NzA2Ni4uY2FmOTg4MjZh
MjkyNTJhOTNhMDA4Yjg0NDEwNzE5MDI3MjQ3N2JmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFj
a0Z1bmN0aW9uLmNwcApAQCAtNzIsNyArNzIsNyBAQCBib29sIEpTVGVzdENhbGxiYWNrRnVuY3Rp
b246OmNhbGxiYWNrV2l0aE5vUGFyYW0oKQogICAgIEV4ZWNTdGF0ZSogc3RhdGUgPSBtX2RhdGEt
Pmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIg
YXJnczsKIAotICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CisgICAg
TmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwogICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CiAgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCBKU0NhbGxiYWNr
RGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2Vw
dGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKQpAQCAtOTMsNyArOTMsNyBAQCBib29s
IEpTVGVzdENhbGxiYWNrRnVuY3Rpb246OmNhbGxiYWNrV2l0aEFycmF5UGFyYW0oUmVmUHRyPEZs
b2F0MzJBcnJheT4gYXJyYXlQYQogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAg
YXJncy5hcHBlbmQodG9KUyhzdGF0ZSwgbV9kYXRhLT5nbG9iYWxPYmplY3QoKSwgYXJyYXlQYXJh
bSkpOwogCi0gICAgTmFrZWRQdHI8RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKKyAgICBO
YWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CiAgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKICAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tE
YXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0
aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pCkBAIC0xMTUsNyArMTE1LDcgQEAgYm9v
bCBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpjYWxsYmFja1dpdGhTZXJpYWxpemVkU2NyaXB0VmFs
dWVQYXJhbShSZWZQdHI8U2VyaWEKICAgICBhcmdzLmFwcGVuZChzcnpQYXJhbSA/IHNyelBhcmFt
LT5kZXNlcmlhbGl6ZShzdGF0ZSwgbV9kYXRhLT5nbG9iYWxPYmplY3QoKSwgMCkgOiBqc051bGwo
KSk7CiAgICAgYXJncy5hcHBlbmQoanNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIHN0ckFyZykpOwog
Ci0gICAgTmFrZWRQdHI8RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0
cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpD
YWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9uKTsK
ICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pCkBAIC0xMzYsNyArMTM2LDcgQEAgYm9vbCBKU1Rl
c3RDYWxsYmFja0Z1bmN0aW9uOjpjYWxsYmFja1dpdGhTdHJpbmdMaXN0KERPTVN0cmluZ0xpc3Qq
IGxpc3RQYXJhbSkKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBw
ZW5kKHRvSlMoc3RhdGUsIG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCksIGxpc3RQYXJhbSkpOwogCi0g
ICAgTmFrZWRQdHI8RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxK
U0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxs
YmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9uKTsKICAg
ICBpZiAocmV0dXJuZWRFeGNlcHRpb24pCkBAIC0xNTcsNyArMTU3LDcgQEAgYm9vbCBKU1Rlc3RD
YWxsYmFja0Z1bmN0aW9uOjpjYWxsYmFja1dpdGhCb29sZWFuKGJvb2wgYm9vbFBhcmFtKQogICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQoanNCb29sZWFuKGJv
b2xQYXJhbSkpOwogCi0gICAgTmFrZWRQdHI8RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsK
KyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2Fs
bGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVk
RXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pCkBAIC0xNzksNyArMTc5LDcg
QEAgYm9vbCBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpjYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFz
cyhpbnQzMl90IGxvbmdQYXJhbSwgVGVzdE4KICAgICBhcmdzLmFwcGVuZChqc051bWJlcihsb25n
UGFyYW0pKTsKICAgICBhcmdzLmFwcGVuZCh0b0pTKHN0YXRlLCBtX2RhdGEtPmdsb2JhbE9iamVj
dCgpLCB0ZXN0Tm9kZVBhcmFtKSk7CiAKLSAgICBOYWtlZFB0cjxFeGNlcHRpb24+IHJldHVybmVk
RXhjZXB0aW9uOworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlv
bjsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2so
YXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIo
KSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCmluZGV4IGFmYTM2Mjg4MjRhMGZhZjMw
NGQ4ZGJiY2Y1NGUyYjNjYTg3MTg5MTIuLmVmYmU1MWZmZjU5ZDc0ZTkzZDM5NGU4YzkwNTc1NWQ0
MTZiODA3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcApAQCAt
MjUsMjUgKzI1LDI1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE9NSW1wbGVt
ZW50YXRpb24uaCIKIAotI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCiAjaW5jbHVkZSAiQ1NTU3R5
bGVTaGVldC5oIgorI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRU
eXBlLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
KyNpbmNsdWRlICJGVFBEaXJlY3RvcnlEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgot
I2luY2x1ZGUgIkZUUERpcmVjdG9yeURvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTEhlYWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRpdGxlRWxl
bWVudC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEb2N1bWVudC5oIgor
I2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNp
bmNsdWRlICJNZWRpYURvY3VtZW50LmgiCi0jaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNs
dWRlICJNZWRpYUxpc3QuaCIKLSNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0
YS5oIgogI2luY2x1ZGUgIlBsdWdpbkRvY3VtZW50LmgiCkBAIC03Myw2ICs3Myw3IEBAIHN0YXRp
YyB2b2lkIGFkZFN0cmluZyhGZWF0dXJlU2V0JiBzZXQsIGNvbnN0IGNoYXIqIHN0cmluZykKIH0K
IAogI2lmIEVOQUJMRShWSURFTykKKwogY2xhc3MgRE9NSW1wbGVtZW50YXRpb25TdXBwb3J0c1R5
cGVDbGllbnQgOiBwdWJsaWMgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQgewogcHVibGlj
OgogICAgIERPTUltcGxlbWVudGF0aW9uU3VwcG9ydHNUeXBlQ2xpZW50KGJvb2wgbmVlZHNIYWNr
cywgY29uc3QgU3RyaW5nJiBob3N0KQpAQCAtODgsNiArODksNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9uZWVkc0hhY2tzOwogICAgIFN0cmluZyBtX2hvc3Q7CiB9OworCiAjZW5kaWYKIAogc3Rh
dGljIGJvb2wgaXNTdXBwb3J0ZWRTVkcxMEZlYXR1cmUoY29uc3QgU3RyaW5nJiBmZWF0dXJlLCBj
b25zdCBTdHJpbmcmIHZlcnNpb24pCkBAIC0yMDcsMTAzICsyMDksNTggQEAgYm9vbCBET01JbXBs
ZW1lbnRhdGlvbjo6aGFzRmVhdHVyZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmlu
ZyYgdmVyc2lvbikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPERvY3VtZW50VHlwZT4g
RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50VHlwZShjb25zdCBTdHJpbmcmIHF1YWxp
ZmllZE5hbWUsCi0gICAgY29uc3QgU3RyaW5nJiBwdWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0
ZW1JZCwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25PcjxSZWY8RG9jdW1lbnRUeXBlPj4g
RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50VHlwZShjb25zdCBTdHJpbmcmIHF1YWxp
ZmllZE5hbWUsIGNvbnN0IFN0cmluZyYgcHVibGljSWQsIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQp
CiB7Ci0gICAgU3RyaW5nIHByZWZpeCwgbG9jYWxOYW1lOwotICAgIGlmICghRG9jdW1lbnQ6OnBh
cnNlUXVhbGlmaWVkTmFtZShxdWFsaWZpZWROYW1lLCBwcmVmaXgsIGxvY2FsTmFtZSwgZWMpKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBTdHJpbmcg
cHJlZml4OworICAgIFN0cmluZyBsb2NhbE5hbWU7CisgICAgRG9jdW1lbnQ6OnBhcnNlUXVhbGlm
aWVkTmFtZShxdWFsaWZpZWROYW1lLCBwcmVmaXgsIGxvY2FsTmFtZSwgZWMpOworICAgIGlmIChl
YykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbihlYyk7CiAKICAgICByZXR1cm4gRG9jdW1lbnRU
eXBlOjpjcmVhdGUobV9kb2N1bWVudCwgcXVhbGlmaWVkTmFtZSwgcHVibGljSWQsIHN5c3RlbUlk
KTsKIH0KIAotRE9NSW1wbGVtZW50YXRpb24qIERPTUltcGxlbWVudGF0aW9uOjpnZXRJbnRlcmZh
Y2UoY29uc3QgU3RyaW5nJiAvKmZlYXR1cmUqLykKK3N0YXRpYyBpbmxpbmUgUmVmPFhNTERvY3Vt
ZW50PiBjcmVhdGVYTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSkKIHsKLSAg
ICByZXR1cm4gMDsKKyAgICBpZiAobmFtZXNwYWNlVVJJID09IFNWR05hbWVzOjpzdmdOYW1lc3Bh
Y2VVUkkpCisgICAgICAgIHJldHVybiBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgp
KTsKKyAgICBpZiAobmFtZXNwYWNlVVJJID09IEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkp
CisgICAgICAgIHJldHVybiBYTUxEb2N1bWVudDo6Y3JlYXRlWEhUTUwobnVsbHB0ciwgVVJMKCkp
OworICAgIHJldHVybiBYTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgpKTsKIH0KIAot
UmVmUHRyPFhNTERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29u
c3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksCi0gICAgY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1l
LCBEb2N1bWVudFR5cGUqIGRvY3R5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8
UmVmPFhNTERvY3VtZW50Pj4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0
IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIERvY3Vt
ZW50VHlwZSogZG9jdW1lbnRUeXBlKQogewotICAgIFJlZlB0cjxYTUxEb2N1bWVudD4gZG9jOwot
ICAgIGlmIChuYW1lc3BhY2VVUkkgPT0gU1ZHTmFtZXM6OnN2Z05hbWVzcGFjZVVSSSkKLSAgICAg
ICAgZG9jID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZSgwLCBVUkwoKSk7Ci0gICAgZWxzZSBpZiAobmFt
ZXNwYWNlVVJJID09IEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpCi0gICAgICAgIGRvYyA9
IFhNTERvY3VtZW50OjpjcmVhdGVYSFRNTCgwLCBVUkwoKSk7Ci0gICAgZWxzZQotICAgICAgICBk
b2MgPSBYTUxEb2N1bWVudDo6Y3JlYXRlKDAsIFVSTCgpKTsKKyAgICBhdXRvIGRvY3VtZW50ID0g
Y3JlYXRlWE1MRG9jdW1lbnQobmFtZXNwYWNlVVJJKTsKIAotICAgIGRvYy0+c2V0U2VjdXJpdHlP
cmlnaW5Qb2xpY3kobV9kb2N1bWVudC5zZWN1cml0eU9yaWdpblBvbGljeSgpKTsKKyAgICBkb2N1
bWVudC0+c2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3kobV9kb2N1bWVudC5zZWN1cml0eU9yaWdpblBv
bGljeSgpKTsKIAotICAgIFJlZlB0cjxOb2RlPiBkb2N1bWVudEVsZW1lbnQ7CisgICAgUmVmUHRy
PEVsZW1lbnQ+IGRvY3VtZW50RWxlbWVudDsKICAgICBpZiAoIXF1YWxpZmllZE5hbWUuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIGRvY3VtZW50RWxlbWVudCA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKG5h
bWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgZWMpOworICAgICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKKyAgICAgICAgZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnRO
UyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIGVjKTsKICAgICAgICAgaWYgKGVjKQotICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uKGVj
KTsKICAgICB9CiAKLSAgICBpZiAoZG9jdHlwZSkKLSAgICAgICAgZG9jLT5hcHBlbmRDaGlsZCgq
ZG9jdHlwZSk7CisgICAgaWYgKGRvY3VtZW50VHlwZSkKKyAgICAgICAgZG9jdW1lbnQtPmFwcGVu
ZENoaWxkKCpkb2N1bWVudFR5cGUpOwogICAgIGlmIChkb2N1bWVudEVsZW1lbnQpCi0gICAgICAg
IGRvYy0+YXBwZW5kQ2hpbGQoKmRvY3VtZW50RWxlbWVudCk7CisgICAgICAgIGRvY3VtZW50LT5h
cHBlbmRDaGlsZCgqZG9jdW1lbnRFbGVtZW50KTsKIAotICAgIHJldHVybiBkb2M7CisgICAgcmV0
dXJuIFdURk1vdmUoZG9jdW1lbnQpOwogfQogCi1SZWY8Q1NTU3R5bGVTaGVldD4gRE9NSW1wbGVt
ZW50YXRpb246OmNyZWF0ZUNTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBtZWRpYSwgRXhjZXB0aW9uQ29kZSYpCitSZWY8Q1NTU3R5bGVTaGVldD4gRE9NSW1wbGVtZW50
YXRpb246OmNyZWF0ZUNTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBt
ZWRpYSkKIHsKICAgICAvLyBGSVhNRTogVGl0bGUgc2hvdWxkIGJlIHNldC4KICAgICAvLyBGSVhN
RTogTWVkaWEgY291bGQgaGF2ZSB3cm9uZyBzeW50YXgsIGluIHdoaWNoIGNhc2Ugd2Ugc2hvdWxk
IGdlbmVyYXRlIGFuIGV4Y2VwdGlvbi4KLSAgICBSZWY8Q1NTU3R5bGVTaGVldD4gc2hlZXQgPSBD
U1NTdHlsZVNoZWV0OjpjcmVhdGUoU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoKSk7CisgICAg
YXV0byBzaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShTdHlsZVNoZWV0Q29udGVudHM6OmNy
ZWF0ZSgpKTsKICAgICBzaGVldC0+c2V0TWVkaWFRdWVyaWVzKE1lZGlhUXVlcnlTZXQ6OmNyZWF0
ZUFsbG93aW5nRGVzY3JpcHRpb25TeW50YXgobWVkaWEpKTsKICAgICByZXR1cm4gc2hlZXQ7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkWE1MTUlNRVR5cGVDaGFyKFVDaGFyIGMpCi17
Ci0gICAgLy8gVmFsaWQgY2hhcmFjdGVycyBwZXIgUkZDcyAzMDIzIGFuZCAyMDQ1OgotICAgIC8v
IDAtOWEtekEtWl8tK34hJF57fXwuJSdgIyYqCi0gICAgcmV0dXJuIGlzQVNDSUlBbHBoYW51bWVy
aWMoYykgfHwgYyA9PSAnIScgfHwgYyA9PSAnIycgfHwgYyA9PSAnJCcgfHwgYyA9PSAnJScgfHwg
YyA9PSAnJicgfHwgYyA9PSAnXCcnIHx8IGMgPT0gJyonIHx8IGMgPT0gJysnCi0gICAgICAgIHx8
IGMgPT0gJy0nIHx8IGMgPT0gJy4nIHx8IGMgPT0gJ14nIHx8IGMgPT0gJ18nIHx8IGMgPT0gJ2An
IHx8IGMgPT0gJ3snIHx8IGMgPT0gJ3wnIHx8IGMgPT0gJ30nIHx8IGMgPT0gJ34nOwotfQotCi1i
b29sIERPTUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpCi17Ci0gICAgLy8gRklYTUU6IENhbiB3ZSBtb3ZlIHRoaXMgbG9naWMgdG8gTUlNRVR5cGVS
ZWdpc3RyeSBhbmQgaGF2ZSB0aGlzIGp1c3QgYmUgYSBzaW5nbGUgZnVuY3Rpb24gY2FsbD8KLQot
ICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQveG1s
IikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlv
bi94bWwiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQv
eHNsIikpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKCFtaW1lVHlwZS5lbmRzV2l0
aCgiK3htbCIsIGZhbHNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc2l6ZV90IHNs
YXNoUG9zaXRpb24gPSBtaW1lVHlwZS5maW5kKCcvJyk7Ci0gICAgLy8gVGFrZSBpbnRvIGFjY291
bnQgdGhlICcreG1sJyBlbmRpbmcgb2YgbWltZVR5cGUuCi0gICAgaWYgKHNsYXNoUG9zaXRpb24g
PT0gbm90Rm91bmQgfHwgIXNsYXNoUG9zaXRpb24gfHwgc2xhc2hQb3NpdGlvbiA9PSBtaW1lVHlw
ZS5sZW5ndGgoKSAtIDUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEFnYWluLCBt
aW1lVHlwZSBlbmRzIHdpdGggJyt4bWwnLCBubyBuZWVkIHRvIGNoZWNrIHRoZSB2YWxpZGl0eSBv
ZiB0aGF0IHN1YnN0cmluZy4KLSAgICBzaXplX3QgbWltZUxlbmd0aCA9IG1pbWVUeXBlLmxlbmd0
aCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWltZUxlbmd0aCAtIDQ7ICsraSkgewot
ICAgICAgICBpZiAoIWlzVmFsaWRYTUxNSU1FVHlwZUNoYXIobWltZVR5cGVbaV0pICYmIGkgIT0g
c2xhc2hQb3NpdGlvbikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBET01JbXBsZW1lbnRhdGlvbjo6aXNUZXh0TUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsKLSAgICAvLyBGSVhNRTogQ2FuIHdlIG1vdmUgdGhp
cyBsb2dpYyB0byBNSU1FVHlwZVJlZ2lzdHJ5IGFuZCBoYXZlIHRoaXMganVzdCBiZSBhIHNpbmds
ZSBmdW5jdGlvbiBjYWxsPwotCi0gICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9y
dGVkSmF2YVNjcmlwdE1JTUVUeXBlKG1pbWVUeXBlKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL2pzb24iKSAvLyBSZW5kZXIg
SlNPTiBhcyB0ZXh0L3BsYWluLgotICAgICAgICB8fCAobWltZVR5cGUuc3RhcnRzV2l0aCgidGV4
dC8iLCBmYWxzZSkKLSAgICAgICAgICAgICYmICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShtaW1lVHlwZSwgInRleHQvaHRtbCIpCi0gICAgICAgICAgICAmJiAhZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L3htbCIpCi0gICAgICAgICAgICAmJiAhZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L3hzbCIpKTsKLX0KLQog
UmVmPEhUTUxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVudChj
b25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIGF1dG8gZG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6
OmNyZWF0ZShudWxscHRyLCBVUkwoKSk7CkBAIC0zMjEsNiArMjc4LDkgQEAgUmVmPEhUTUxEb2N1
bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcm
IHRpdGxlKQogCiBSZWY8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVu
dChjb25zdCBTdHJpbmcmIHR5cGUsIEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiB7Cisg
ICAgLy8gRklYTUU6IENvbmZ1c2luZyB0byBoYXZlIHRoaXMgaGVyZSB3aXRoIHB1YmxpYyBET00g
QVBJcyBmb3IgY3JlYXRpbmcgZG9jdW1lbnRzLiBUaGlzIGlzIGRpZmZlcmVudCBlbm91Z2ggdGhh
dCBpdCBzaG91bGQgcGVyaGFwcyBiZSBtb3ZlZC4KKyAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlv
biBpcyBkb2luZyBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb25zIG9uIE1JTUUgdHlwZXMuIFNo
b3VsZCBkbyBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSBpbnN0ZWFkLgorCiAgICAgLy8g
UGx1Z2lucyBjYW5ub3QgdGFrZSBIVE1MIGFuZCBYSFRNTCBmcm9tIHVzLCBhbmQgd2UgZG9uJ3Qg
ZXZlbiBuZWVkIHRvIGluaXRpYWxpemUgdGhlIHBsdWdpbiBkYXRhYmFzZSBmb3IgdGhvc2UuCiAg
ICAgaWYgKHR5cGUgPT0gInRleHQvaHRtbCIpCiAgICAgICAgIHJldHVybiBIVE1MRG9jdW1lbnQ6
OmNyZWF0ZShmcmFtZSwgdXJsKTsKQEAgLTMzOCw3ICsyOTgsNyBAQCBSZWY8RG9jdW1lbnQ+IERP
TUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIHR5cGUsIEZyYW1l
KiBmcmFtZQogICAgICAgICByZXR1cm4gSW1hZ2VEb2N1bWVudDo6Y3JlYXRlKCpmcmFtZSwgdXJs
KTsKIAogICAgIFBsdWdpbkRhdGEqIHBsdWdpbkRhdGEgPSBudWxscHRyOwotICAgIFBsdWdpbkRh
dGE6OkFsbG93ZWRQbHVnaW5UeXBlcyBhbGxvd2VkUGx1Z2luVHlwZXMgPSBQbHVnaW5EYXRhOjpP
bmx5QXBwbGljYXRpb25QbHVnaW5zOworICAgIGF1dG8gYWxsb3dlZFBsdWdpblR5cGVzID0gUGx1
Z2luRGF0YTo6T25seUFwcGxpY2F0aW9uUGx1Z2luczsKICAgICBpZiAoZnJhbWUgJiYgZnJhbWUt
PnBhZ2UoKSkgewogICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLnN1YmZyYW1lTG9hZGVyKCku
YWxsb3dQbHVnaW5zKCkpCiAgICAgICAgICAgICBhbGxvd2VkUGx1Z2luVHlwZXMgPSBQbHVnaW5E
YXRhOjpBbGxQbHVnaW5zOwpAQCAtMzY5LDEzICszMjksMTMgQEAgUmVmPERvY3VtZW50PiBET01J
bXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0eXBlLCBGcmFtZSog
ZnJhbWUKICAgICAvLyBhbmQgYWxzbyBzZXJ2ZXMgYXMgYW4gb3B0aW1pemF0aW9uIHRvIHByZXZl
bnQgbG9hZGluZyB0aGUgcGx1Zy1pbiBkYXRhYmFzZSBpbiB0aGUgY29tbW9uIGNhc2UuCiAgICAg
aWYgKHR5cGUgIT0gInRleHQvcGxhaW4iICYmICgocGx1Z2luRGF0YSAmJiBwbHVnaW5EYXRhLT5z
dXBwb3J0c1dlYlZpc2libGVNaW1lVHlwZSh0eXBlLCBhbGxvd2VkUGx1Z2luVHlwZXMpKSB8fCAo
ZnJhbWUgJiYgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEFsd2F5c1VzZVBsdWdpbkRv
Y3VtZW50KHR5cGUpKSkpCiAgICAgICAgIHJldHVybiBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKGZy
YW1lLCB1cmwpOwotICAgIGlmIChpc1RleHRNSU1FVHlwZSh0eXBlKSkKKyAgICBpZiAoTUlNRVR5
cGVSZWdpc3RyeTo6aXNUZXh0TUlNRVR5cGUodHlwZSkpCiAgICAgICAgIHJldHVybiBUZXh0RG9j
dW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKIAogICAgIGlmICh0eXBlID09ICJpbWFnZS9zdmcr
eG1sIikKICAgICAgICAgcmV0dXJuIFNWR0RvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CiAK
LSAgICBpZiAoaXNYTUxNSU1FVHlwZSh0eXBlKSkKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6
aXNYTUxNSU1FVHlwZSh0eXBlKSkKICAgICAgICAgcmV0dXJuIFhNTERvY3VtZW50OjpjcmVhdGUo
ZnJhbWUsIHVybCk7CiAKICAgICByZXR1cm4gSFRNTERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVy
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCmluZGV4IDg4ODBjNGM1MGMx
Mjk2YjZhOTJjY2I4NTBhYTdkMGU1YzdlZmM1OTQuLmQ4NmFkZjA3YmYxYTIyMGEyZDEyODZkNGZj
MTVhM2IzNzlhY2FiODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1l
bnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCkBA
IC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5v
cmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMjMsNiArMjMsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkV4Y2Vw
dGlvbk9yLmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzYsMjUgKzM3LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlcmVmKCkgeyBtX2RvY3Vt
ZW50LmRlcmVmKCk7IH0KICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3Vt
ZW50OyB9CiAKLSAgICAvLyBET00gbWV0aG9kcyAmIGF0dHJpYnV0ZXMgZm9yIERPTUltcGxlbWVu
dGF0aW9uCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaGFzRmVhdHVyZShjb25zdCBT
dHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgUmVmUHRyPERvY3VtZW50VHlwZT4gY3JlYXRlRG9jdW1lbnRUeXBlKGNvbnN0IFN0cmluZyYg
cXVhbGlmaWVkTmFtZSwgY29uc3QgU3RyaW5nJiBwdWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0
ZW1JZCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxYTUxEb2N1
bWVudD4gY3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0
cmluZyYgcXVhbGlmaWVkTmFtZSwgRG9jdW1lbnRUeXBlKiwgRXhjZXB0aW9uQ29kZSYpOwotCi0g
ICAgRE9NSW1wbGVtZW50YXRpb24qIGdldEludGVyZmFjZShjb25zdCBTdHJpbmcmIGZlYXR1cmUp
OwotCi0gICAgLy8gRnJvbSB0aGUgRE9NSW1wbGVtZW50YXRpb25DU1MgaW50ZXJmYWNlCi0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGVDU1NTdHlsZVNo
ZWV0KGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgbWVkaWEsIEV4Y2VwdGlvbkNv
ZGUmKTsKLQotICAgIC8vIEZyb20gdGhlIEhUTUxET01JbXBsZW1lbnRhdGlvbiBpbnRlcmZhY2UK
KyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8RG9jdW1lbnRUeXBlPj4gY3JlYXRl
RG9jdW1lbnRUeXBlKGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgU3RyaW5nJiBw
dWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhj
ZXB0aW9uT3I8UmVmPFhNTERvY3VtZW50Pj4gY3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBu
YW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgRG9jdW1lbnRUeXBlKik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEhUTUxEb2N1bWVudD4gY3JlYXRlSFRNTERvY3VtZW50
KGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGhh
c0ZlYXR1cmUoY29uc3QgU3RyaW5nJiBmZWF0dXJlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlQ1NTU3R5
bGVTaGVldChjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIG1lZGlhKTsKIAotICAg
IC8vIE90aGVyIG1ldGhvZHMgKG5vdCBwYXJ0IG9mIERPTSkKICAgICBzdGF0aWMgUmVmPERvY3Vt
ZW50PiBjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBGcmFtZSosIGNvbnN0
IFVSTCYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNYTUxNSU1FVHlwZShj
b25zdCBTdHJpbmcmIE1JTUVUeXBlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBp
c1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKTsKLQogcHJpdmF0ZToKICAgICBE
b2N1bWVudCYgbV9kb2N1bWVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RE9NSW1wbGVtZW50YXRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0
aW9uLmlkbAppbmRleCBkYTI2Y2QwZGE2NzVmZGY2YTE1ODFiMWM5MjkwODU3MmViM2YwYjdjLi43
NDM1NjEzMzVkMjM4OTc4OWVhZGJiYmM2NWQ5NDliZDAwZjllMzUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGwKQEAgLTIzLDE1ICsyMywxNCBAQAogICAgIEdlbmVy
YXRlSXNSZWFjaGFibGU9SW1wbERvY3VtZW50LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUsCiBdIGludGVyZmFjZSBET01JbXBsZW1lbnRhdGlvbiB7CisgICAgW05ld09iamVjdF0gRG9j
dW1lbnRUeXBlIGNyZWF0ZURvY3VtZW50VHlwZShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSwgRE9N
U3RyaW5nIHB1YmxpY0lkLCBET01TdHJpbmcgc3lzdGVtSWQpOworICAgIFtOZXdPYmplY3RdIFhN
TERvY3VtZW50IGNyZWF0ZURvY3VtZW50KERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBbVHJlYXRO
dWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBxdWFsaWZpZWROYW1lLCBvcHRpb25hbCBEb2N1
bWVudFR5cGU/IGRvY3R5cGUgPSBudWxsKTsKKyAgICBbTmV3T2JqZWN0XSBIVE1MRG9jdW1lbnQg
Y3JlYXRlSFRNTERvY3VtZW50KG9wdGlvbmFsIERPTVN0cmluZyB0aXRsZSk7CisKKyAgICAvLyBG
SVhNRTogTGF0ZXN0IERPTSBzcGVjaWZpY2F0aW9uIHNheXMgdGhpcyBzaG91bGQgaWdub3JlIGFs
bCBhcmd1bWVudHMgYW5kIGFsd2F5cyByZXR1cm4gdHJ1ZS4KICAgICAvLyBGSVhNRTogVXNpbmcg
InVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3JvbmcuCiAgICAgYm9v
bGVhbiBoYXNGZWF0dXJlKG9wdGlvbmFsIERPTVN0cmluZyBmZWF0dXJlID0gInVuZGVmaW5lZCIs
IFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gb3B0aW9uYWwgRE9NU3RyaW5nIHZlcnNpb24gPSAi
dW5kZWZpbmVkIik7CiAKLSAgICBbUmFpc2VzRXhjZXB0aW9uLCBOZXdPYmplY3RdIERvY3VtZW50
VHlwZSBjcmVhdGVEb2N1bWVudFR5cGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIERPTVN0cmlu
ZyBwdWJsaWNJZCwgRE9NU3RyaW5nIHN5c3RlbUlkKTsKLQotICAgIFtOZXdPYmplY3QsIFJhaXNl
c0V4Y2VwdGlvbl0gWE1MRG9jdW1lbnQgY3JlYXRlRG9jdW1lbnQoRE9NU3RyaW5nPyBuYW1lc3Bh
Y2VVUkksIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUs
IG9wdGlvbmFsIERvY3VtZW50VHlwZT8gZG9jdHlwZSA9IG51bGwpOwotCiAgICAgLy8gRklYTUU6
IFVzaW5nICJ1bmRlZmluZWQiIGFzIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlIGlzIHdyb25nLgot
ICAgIFtSYWlzZXNFeGNlcHRpb25dIENTU1N0eWxlU2hlZXQgY3JlYXRlQ1NTU3R5bGVTaGVldChv
cHRpb25hbCBET01TdHJpbmcgdGl0bGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgRE9NU3RyaW5n
IG1lZGlhID0gInVuZGVmaW5lZCIpOwotCi0gICAgW05ld09iamVjdF0gSFRNTERvY3VtZW50IGNy
ZWF0ZUhUTUxEb2N1bWVudChvcHRpb25hbCBET01TdHJpbmcgdGl0bGUpOworICAgIENTU1N0eWxl
U2hlZXQgY3JlYXRlQ1NTU3R5bGVTaGVldChvcHRpb25hbCBET01TdHJpbmcgdGl0bGUgPSAidW5k
ZWZpbmVkIiwgb3B0aW9uYWwgRE9NU3RyaW5nIG1lZGlhID0gInVuZGVmaW5lZCIpOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDdhOGZiZDhlZWUwNGY5OWEwZDU3ZDJmODFhNTk2MDll
MTcwNTdkNDUuLmI2Y2U5NWVkN2RiOGVkYmZhZWQ0NjVjNTNkZTE4ZGMyNzg1M2IzMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTM3MywxMSArMTM3Myw2IEBAIHZvaWQgRG9jdW1lbnQ6
OnNldENvbnRlbnRMYW5ndWFnZShjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQogCiB2b2lkIERvY3Vt
ZW50OjpzZXRYTUxWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7Ci0gICAgaWYgKCFpbXBsZW1lbnRhdGlvbigpLmhhc0ZlYXR1cmUoIlhNTCIsIFN0cmlu
ZygpKSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCiAgICAgaWYgKCFYTUxEb2N1bWVudFBhcnNlcjo6c3VwcG9ydHNYTUxWZXJzaW9u
KHZlcnNpb24pKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJl
dHVybjsKQEAgLTEzODYsMTMgKzEzODEsOCBAQCB2b2lkIERvY3VtZW50OjpzZXRYTUxWZXJzaW9u
KGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgbV94bWxWZXJz
aW9uID0gdmVyc2lvbjsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2V0WE1MU3RhbmRhbG9uZShib29s
IHN0YW5kYWxvbmUsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBEb2N1bWVudDo6c2V0WE1MU3Rh
bmRhbG9uZShib29sIHN0YW5kYWxvbmUpCiB7Ci0gICAgaWYgKCFpbXBsZW1lbnRhdGlvbigpLmhh
c0ZlYXR1cmUoIlhNTCIsIFN0cmluZygpKSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURf
RVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgbV94bWxTdGFuZGFsb25lID0gc3Rh
bmRhbG9uZSA/IFN0YW5kYWxvbmUgOiBOb3RTdGFuZGFsb25lOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCmluZGV4IDBkOWY5YmNiNTUwZjcxMDg1Y2RmODNkZmEzZjE2YTkyOTY2MjVhODkuLjJlZjVk
NTU4ODk4MzlhZDZhY2E0ZjU5ZGIyZjI1NjgwYmI5Yjc3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC00NDIsNyArNDQyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRYTUxFbmNvZGluZyhj
b25zdCBTdHJpbmcmIGVuY29kaW5nKSB7IG1feG1sRW5jb2RpbmcgPSBlbmNvZGluZzsgfSAvLyBy
ZWFkLW9ubHkgcHJvcGVydHksIG9ubHkgdG8gYmUgc2V0IGZyb20gWE1MRG9jdW1lbnRQYXJzZXIK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFhNTFZlcnNpb24oY29uc3QgU3RyaW5nJiwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0WE1MU3RhbmRhbG9uZShi
b29sLCBFeGNlcHRpb25Db2RlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRYTUxTdGFu
ZGFsb25lKGJvb2wpOwogICAgIHZvaWQgc2V0SGFzWE1MRGVjbGFyYXRpb24oYm9vbCBoYXNYTUxE
ZWNsYXJhdGlvbikgeyBtX2hhc1hNTERlY2xhcmF0aW9uID0gaGFzWE1MRGVjbGFyYXRpb24gPyAx
IDogMDsgfQogCiAgICAgU3RyaW5nIGRvY3VtZW50VVJJKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1
bWVudFVSSTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5kZXggYzhlMDYxNDllNzViNzE0ZDNj
NmEwOWM3YjQ1MGU0MjJkMjdkZmMzYy4uZTlmZjhiMTkxZjhlNTE5M2QxYmZmZGZkYWU0MmM2ODRm
NDEwNmU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC01Myw3ICs1Myw3IEBACiAKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyB4bWxFbmNvZGluZzsKICAgICBbU2V0dGVy
UmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyB4bWxWZXJzaW9uOwotICAgIFtT
ZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBib29sZWFuIHhtbFN0YW5kYWxvbmU7Cisg
ICAgYXR0cmlidXRlIGJvb2xlYW4geG1sU3RhbmRhbG9uZTsKIAogICAgIFtSYWlzZXNFeGNlcHRp
b25dIE5vZGUgYWRvcHROb2RlKE5vZGUgc291cmNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V4Y2VwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFhY2JkNWYyZmQ3ZWVhZTk2ZDI1M2VjYjhhM2Y0ODQzZWU5YWM0MDcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uLmgKQEAgLTAsMCArMSw1
MyBAQAorLyoKKworQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKK2FyZSBtZXQ6CisxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCitFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECitXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCitESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKK0RJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CitMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KK0FOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKyovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3VzaW5nIEV4Y2VwdGlvbkNvZGUgPSBpbnQ7CisKK2NsYXNzIEV4Y2VwdGlvbiB7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgRXhjZXB0aW9uKEV4Y2VwdGlvbkNvZGUpOworCisgICAgV0VCQ09SRV9F
WFBPUlQgRXhjZXB0aW9uQ29kZSBjb2RlKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgRXhjZXB0
aW9uQ29kZSBtX2NvZGU7Cit9OworCitpbmxpbmUgRXhjZXB0aW9uOjpFeGNlcHRpb24oRXhjZXB0
aW9uQ29kZSBjb2RlKQorICAgIDogbV9jb2RlKGNvZGUpCit7Cit9CisKK2lubGluZSBFeGNlcHRp
b25Db2RlIEV4Y2VwdGlvbjo6Y29kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29kZTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOWMwM2Y1NDJkNjAxODg4
ZmExOGYwNTQwNWFmMmVjNTU4YmM2Mjc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V4Y2VwdGlvbk9yLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKworQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKK2FyZSBtZXQ6CisxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCitFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECitXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCitESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKK0RJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CitMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
K0FOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBl
PiBjbGFzcyBFeGNlcHRpb25PciB7CitwdWJsaWM6CisgICAgRXhjZXB0aW9uT3IoRXhjZXB0aW9u
JiYpOworICAgIEV4Y2VwdGlvbk9yKFJldHVyblR5cGUmJik7CisKKyAgICBib29sIGhhc0V4Y2Vw
dGlvbigpIGNvbnN0OworICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZSgpIGNvbnN0Owor
ICAgIFJldHVyblR5cGUmJiB0YWtlUmV0dXJuVmFsdWUoKTsKKworcHJpdmF0ZToKKyAgICBzdGQ6
OmV4cGVyaW1lbnRhbDo6dmFyaWFudDxFeGNlcHRpb24sIFJldHVyblR5cGU+IG1fdmFsdWU7Cit9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiBpbmxpbmUgRXhjZXB0aW9uT3I8UmV0
dXJuVHlwZT46OkV4Y2VwdGlvbk9yKEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKKyAgICA6IG1fdmFs
dWUoV1RGTW92ZShleGNlcHRpb24pKQoreworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5U
eXBlPiBpbmxpbmUgRXhjZXB0aW9uT3I8UmV0dXJuVHlwZT46OkV4Y2VwdGlvbk9yKFJldHVyblR5
cGUmJiByZXR1cm5WYWx1ZSkKKyAgICA6IG1fdmFsdWUoV1RGTW92ZShyZXR1cm5WYWx1ZSkpCit7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGU+IGlubGluZSBib29sIEV4Y2VwdGlv
bk9yPFJldHVyblR5cGU+OjpoYXNFeGNlcHRpb24oKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6
OmV4cGVyaW1lbnRhbDo6aG9sZHNfYWx0ZXJuYXRpdmU8RXhjZXB0aW9uPihtX3ZhbHVlKTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlwZT4gaW5saW5lIEV4Y2VwdGlvbkNvZGUgRXhj
ZXB0aW9uT3I8UmV0dXJuVHlwZT46OmV4Y2VwdGlvbkNvZGUoKSBjb25zdAoreworICAgIHJldHVy
biBzdGQ6OmV4cGVyaW1lbnRhbDo6Z2V0PEV4Y2VwdGlvbj4obV92YWx1ZSkuY29kZSgpOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiBpbmxpbmUgUmV0dXJuVHlwZSYmIEV4Y2Vw
dGlvbk9yPFJldHVyblR5cGU+Ojp0YWtlUmV0dXJuVmFsdWUoKQoreworICAgIHJldHVybiBzdGQ6
OmV4cGVyaW1lbnRhbDo6Z2V0PFJldHVyblR5cGU+KFdURk1vdmUobV92YWx1ZSkpOworfQorCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcAppbmRleCAzYjU2
ZTU1ZjBlYWIzNTYxMTJhOTlhY2ZmOTAxM2IzYWYzZTA5YWFmLi41ODFhYTMzM2VjMGI3YmM0ZDhm
YzlkYzZjYmUyOWRiYzJmZDg5YWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZW1wbGF0ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBs
YXRlRWxlbWVudC5jcHAKQEAgLTI5LDEwICsyOSw4IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgotCiAjaW5jbHVkZSAiSFRNTFRlbXBsYXRlRWxlbWVudC5oIgogCi0jaW5jbHVkZSAiRE9N
SW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFn
bWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAppbmRleCA3M2I0OTk5M2NiMTI5N2ViMGNiOTMzNDgxMDE2N2Y4MzM3NjExMjA1Li5mOGU2
Njc4ZjMyNzBiZDg1MzZmMGYwM2ZmODhmNWI4OGJjMjJhNzk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNDAsNyArNDAsNiBAQAog
I2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUg
IkNvb2tpZUphci5oIgotI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
RE9NUGF0Y2hTdXBwb3J0LmgiCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKQEAgLTU5LDYgKzU4LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVy
bGF5LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgogI2luY2x1ZGUgIklu
c3RydW1lbnRpbmdBZ2VudHMuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5j
bHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCkBAIC0xMjgsNyArMTI4LDcgQEAgc3RhdGljIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNv
ZGVyPiBjcmVhdGVYSFJUZXh0RGVjb2Rlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLAogICAgIFJl
ZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyOwogICAgIGlmICghdGV4dEVuY29kaW5n
TmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpj
cmVhdGUoInRleHQvcGxhaW4iLCB0ZXh0RW5jb2RpbmdOYW1lKTsKLSAgICBlbHNlIGlmIChET01J
bXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlwZShtaW1lVHlwZSkpIHsKKyAgICBlbHNlIGlmIChN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1hNTE1JTUVUeXBlKG1pbWVUeXBlKSkgewogICAgICAgICBkZWNv
ZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi94bWwiKTsKICAg
ICAgICAgZGVjb2Rlci0+dXNlTGVuaWVudFhNTERlY29kaW5nKCk7CiAgICAgfSBlbHNlIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvaHRtbCIpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5k
ZXggN2JhMTgwNTAwYWJlZjQ4ZjhkYjAzOTM5NTUzYmM5ZDIwYTJlMTMyZC4uOWZmMjhlMWRlYzM1
ZGFmZmFlNmM0NjJlMmUyOTRlZDc5YzIwMDU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0zMCwyNCArMzAsMTggQEAKICNp
bmNsdWRlICJOZXR3b3JrUmVzb3VyY2VzRGF0YS5oIgogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2UuaCIKLSNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIk1JTUVUeXBl
UmVnaXN0cnkuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogCi1uYW1lc3Bh
Y2UgewotLy8gMTAwTUIKLXN0YXRpYyBjb25zdCBzaXplX3QgbWF4aW11bVJlc291cmNlc0NvbnRl
bnRTaXplID0gMTAwICogMTAwMCAqIDEwMDA7Ci0KLS8vIDEwTUIKLXN0YXRpYyBjb25zdCBzaXpl
X3QgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUgPSAxMCAqIDEwMDAgKiAxMDAwOwot
fQotCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LS8vIFJlc291cmNlRGF0YQorc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtUmVzb3VyY2VzQ29u
dGVudFNpemUgPSAxMDAgKiAxMDAwICogMTAwMDsgLy8gMTAwTUIKK3N0YXRpYyBjb25zdCBzaXpl
X3QgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUgPSAxMCAqIDEwMDAgKiAxMDAwOyAv
LyAxME1CCisKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0
YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6
IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQpCkBAIC0x
MTcsNyArMTExLDYgQEAgc2l6ZV90IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OmRlY29kZURhdGFUb0NvbnRlbnQoKQogICAgIHJldHVybiBjb250ZW50U2l6ZUluQnl0ZXMobV9j
b250ZW50KSAtIGRhdGFMZW5ndGg7CiB9CiAKLS8vIE5ldHdvcmtSZXNvdXJjZXNEYXRhCiBOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6TmV0d29ya1Jlc291cmNlc0RhdGEoKQogICAgIDogbV9jb250ZW50
U2l6ZSgwKQogICAgICwgbV9tYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUobWF4aW11bVJlc291
cmNlc0NvbnRlbnRTaXplKQpAQCAtMTQxLDcgKzEzNCw3IEBAIHN0YXRpYyBSZWZQdHI8VGV4dFJl
c291cmNlRGVjb2Rlcj4gY3JlYXRlT3RoZXJSZXNvdXJjZVRleHREZWNvZGVyKGNvbnN0IFN0cmlu
ZyYKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlcjsKICAgICBpZiAoIXRl
eHRFbmNvZGluZ05hbWUuaXNFbXB0eSgpKQogICAgICAgICBkZWNvZGVyID0gVGV4dFJlc291cmNl
RGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgdGV4dEVuY29kaW5nTmFtZSk7Ci0gICAgZWxz
ZSBpZiAoRE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlNRVR5cGUobWltZVR5cGUpKSB7CisgICAg
ZWxzZSBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZShtaW1lVHlwZSkpIHsKICAg
ICAgICAgZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24v
eG1sIik7CiAgICAgICAgIGRlY29kZXItPnVzZUxlbmllbnRYTUxEZWNvZGluZygpOwogICAgIH0g
ZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L2h0
bWwiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDgwNzk0NDU3ZGVl
NzgxMWFhNTgyMDJhMjlmZTBlMDg0ZDBhODQ2NjEuLmU1NDc5MzhlOGQ0MjNkOTk0ZTg0ODc1MTY5
M2VkNjY5NDNmZGRhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAt
NDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbnRl
bnRGaWx0ZXIuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKLSNpbmNsdWRl
ICJET01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUg
IkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKaW5kZXgg
OTVkMzZlMzE1YTA1Yjg1Yjc1MmFhNDQyY2NmYTViMTQwZGM2YWY3Ni4uZmU5NGI3ZjgxODc0NmUz
ZDJlN2FiMzBiNDY3ZmEwOWUxM2IxMjQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
ZXh0UmVzb3VyY2VEZWNvZGVyLmNwcApAQCAtMjMsOSArMjMsOSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKIAotI2luY2x1ZGUgIkRPTUlt
cGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1
ZGUgIlRleHRDb2RlYy5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlRl
eHRFbmNvZGluZ0RldGVjdG9yLmgiCkBAIC0zMDYsNyArMzA2LDcgQEAgVGV4dFJlc291cmNlRGVj
b2Rlcjo6Q29udGVudFR5cGUgVGV4dFJlc291cmNlRGVjb2Rlcjo6ZGV0ZXJtaW5lQ29udGVudFR5
cGUoY29uc3QKICAgICAgICAgcmV0dXJuIENTUzsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L2h0bWwiKSkKICAgICAgICAgcmV0dXJuIEhUTUw7
Ci0gICAgaWYgKERPTUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKG1pbWVUeXBlKSkKKyAg
ICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZShtaW1lVHlwZSkpCiAgICAgICAg
IHJldHVybiBYTUw7CiAgICAgcmV0dXJuIFBsYWluVGV4dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNl
bGVjdGlvbi5oCmluZGV4IGIzNTM0NzA5ZDcyMjkzMWY0NjQ2MjhlZDFkNGYxMmU1M2E5MjA3NTUu
LjUzOWIyZjQ2NTI2ZTUwYTNiMTVkOWE0MmMxNWZjNWFmMjQxMjI1NjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01TZWxlY3Rpb24uaApAQCAtMzgsNzMgKzM4LDU5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotICAgIGNsYXNzIEZyYW1lOwotICAgIGNsYXNzIE5vZGU7Ci0gICAgY2xhc3MgUG9zaXRp
b247Ci0gICAgY2xhc3MgUmFuZ2U7Ci0gICAgY2xhc3MgVHJlZVNjb3BlOwotICAgIGNsYXNzIFZp
c2libGVTZWxlY3Rpb247Ci0KLSAgICB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCi0gICAg
Y2xhc3MgRE9NU2VsZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NU2VsZWN0aW9uPiwgcHVi
bGljIERPTVdpbmRvd1Byb3BlcnR5IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8
RE9NU2VsZWN0aW9uPiBjcmVhdGUoY29uc3QgVHJlZVNjb3BlKiB0cmVlU2NvcGUpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRE9NU2VsZWN0aW9uKHRyZWVTY29wZSkpOyB9Ci0KLSAgICAgICAgdm9p
ZCBjbGVhclRyZWVTY29wZSgpOwotCi0gICAgICAgIC8vIFNhZmFyaSBTZWxlY3Rpb24gT2JqZWN0
IEFQSQotICAgICAgICAvLyBUaGVzZSBtZXRob2RzIHJldHVybiB0aGUgdmFsaWQgZXF1aXZhbGVu
dHMgb2YgaW50ZXJuYWwgZWRpdGluZyBwb3NpdGlvbnMuCi0gICAgICAgIE5vZGUqIGJhc2VOb2Rl
KCkgY29uc3Q7Ci0gICAgICAgIE5vZGUqIGV4dGVudE5vZGUoKSBjb25zdDsKLSAgICAgICAgdW5z
aWduZWQgYmFzZU9mZnNldCgpIGNvbnN0OwotICAgICAgICB1bnNpZ25lZCBleHRlbnRPZmZzZXQo
KSBjb25zdDsKLSAgICAgICAgU3RyaW5nIHR5cGUoKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRC
YXNlQW5kRXh0ZW50KE5vZGUqIGJhc2VOb2RlLCB1bnNpZ25lZCBiYXNlT2Zmc2V0LCBOb2RlKiBl
eHRlbnROb2RlLCB1bnNpZ25lZCBleHRlbnRPZmZzZXQpOwotICAgICAgICB2b2lkIHNldFBvc2l0
aW9uKE5vZGUqLCB1bnNpZ25lZCBvZmZzZXQpOwotICAgICAgICB2b2lkIG1vZGlmeShjb25zdCBT
dHJpbmcmIGFsdGVyLCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgY29uc3QgU3RyaW5nJiBncmFu
dWxhcml0eSk7Ci0KLSAgICAgICAgLy8gTW96aWxsYSBTZWxlY3Rpb24gT2JqZWN0IEFQSQotICAg
ICAgICAvLyBJbiBGaXJlZm94LCBhbmNob3IvZm9jdXMgYXJlIHRoZSBlcXVhbCB0byB0aGUgc3Rh
cnQvZW5kIG9mIHRoZSBzZWxlY3Rpb24sCi0gICAgICAgIC8vIGJ1dCByZWZsZWN0IHRoZSBkaXJl
Y3Rpb24gaW4gd2hpY2ggdGhlIHNlbGVjdGlvbiB3YXMgbWFkZSBieSB0aGUgdXNlci4gIFRoYXQg
ZG9lcwotICAgICAgICAvLyBub3QgbWVhbiB0aGF0IHRoZXkgYXJlIGJhc2UvZXh0ZW50LCBzaW5j
ZSB0aGUgYmFzZS9leHRlbnQgZG9uJ3QgcmVmbGVjdAotICAgICAgICAvLyBleHBhbnNpb24uCi0g
ICAgICAgIC8vIFRoZXNlIG1ldGhvZHMgcmV0dXJuIHRoZSB2YWxpZCBlcXVpdmFsZW50cyBvZiBp
bnRlcm5hbCBlZGl0aW5nIHBvc2l0aW9ucy4KLSAgICAgICAgTm9kZSogYW5jaG9yTm9kZSgpIGNv
bnN0OwotICAgICAgICB1bnNpZ25lZCBhbmNob3JPZmZzZXQoKSBjb25zdDsKLSAgICAgICAgTm9k
ZSogZm9jdXNOb2RlKCkgY29uc3Q7Ci0gICAgICAgIHVuc2lnbmVkIGZvY3VzT2Zmc2V0KCkgY29u
c3Q7Ci0gICAgICAgIGJvb2wgaXNDb2xsYXBzZWQoKSBjb25zdDsKLSAgICAgICAgdW5zaWduZWQg
cmFuZ2VDb3VudCgpIGNvbnN0OwotICAgICAgICB2b2lkIGNvbGxhcHNlKE5vZGUqLCB1bnNpZ25l
ZCBvZmZzZXQpOwotICAgICAgICB2b2lkIGNvbGxhcHNlVG9FbmQoRXhjZXB0aW9uQ29kZSYpOwot
ICAgICAgICB2b2lkIGNvbGxhcHNlVG9TdGFydChFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZv
aWQgZXh0ZW5kKE5vZGUmLCB1bnNpZ25lZCBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAg
ICAgUmVmUHRyPFJhbmdlPiBnZXRSYW5nZUF0KHVuc2lnbmVkLCBFeGNlcHRpb25Db2RlJik7Ci0g
ICAgICAgIHZvaWQgcmVtb3ZlQWxsUmFuZ2VzKCk7Ci0gICAgICAgIHZvaWQgYWRkUmFuZ2UoUmFu
Z2UmKTsKLSAgICAgICAgdm9pZCBkZWxldGVGcm9tRG9jdW1lbnQoKTsKLSAgICAgICAgYm9vbCBj
b250YWluc05vZGUoTm9kZSYsIGJvb2wgcGFydGx5Q29udGFpbmVkKSBjb25zdDsKLSAgICAgICAg
dm9pZCBzZWxlY3RBbGxDaGlsZHJlbihOb2RlJik7Ci0KLSAgICAgICAgU3RyaW5nIHRvU3RyaW5n
KCk7Ci0KLSAgICAgICAgLy8gTWljcm9zb2Z0IFNlbGVjdGlvbiBPYmplY3QgQVBJCi0gICAgICAg
IHZvaWQgZW1wdHkoKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGNvbnN0IFRyZWVTY29wZSog
bV90cmVlU2NvcGU7Ci0KLSAgICAgICAgZXhwbGljaXQgRE9NU2VsZWN0aW9uKGNvbnN0IFRyZWVT
Y29wZSopOwotCi0gICAgICAgIC8vIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgYWNjZXNzb3JzLCBk
b2VzIG5vdCBOVUxMIGNoZWNrIG1fZnJhbWUuCi0gICAgICAgIGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIHZpc2libGVTZWxlY3Rpb24oKSBjb25zdDsKLQotICAgICAgICBOb2RlKiBzaGFkb3dBZGp1
c3RlZE5vZGUoY29uc3QgUG9zaXRpb24mKSBjb25zdDsKLSAgICAgICAgdW5zaWduZWQgc2hhZG93
QWRqdXN0ZWRPZmZzZXQoY29uc3QgUG9zaXRpb24mKSBjb25zdDsKLQotICAgICAgICBib29sIGlz
VmFsaWRGb3JQb3NpdGlvbihOb2RlKikgY29uc3Q7Ci0gICAgfTsKK2NsYXNzIE5vZGU7CitjbGFz
cyBQb3NpdGlvbjsKK2NsYXNzIFJhbmdlOworY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKKworY2xh
c3MgRE9NU2VsZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NU2VsZWN0aW9uPiwgcHVibGlj
IERPTVdpbmRvd1Byb3BlcnR5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPERPTVNlbGVjdGlv
bj4gY3JlYXRlKEZyYW1lJiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01TZWxlY3Rp
b24oZnJhbWUpKTsgfQorCisgICAgTm9kZSogYmFzZU5vZGUoKSBjb25zdDsKKyAgICBOb2RlKiBl
eHRlbnROb2RlKCkgY29uc3Q7CisgICAgdW5zaWduZWQgYmFzZU9mZnNldCgpIGNvbnN0OworICAg
IHVuc2lnbmVkIGV4dGVudE9mZnNldCgpIGNvbnN0OworICAgIFN0cmluZyB0eXBlKCkgY29uc3Q7
CisgICAgdm9pZCBzZXRCYXNlQW5kRXh0ZW50KE5vZGUqIGJhc2VOb2RlLCB1bnNpZ25lZCBiYXNl
T2Zmc2V0LCBOb2RlKiBleHRlbnROb2RlLCB1bnNpZ25lZCBleHRlbnRPZmZzZXQpOworICAgIHZv
aWQgc2V0UG9zaXRpb24oTm9kZSosIHVuc2lnbmVkIG9mZnNldCk7CisgICAgdm9pZCBtb2RpZnko
Y29uc3QgU3RyaW5nJiBhbHRlciwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIGNvbnN0IFN0cmlu
ZyYgZ3JhbnVsYXJpdHkpOworCisgICAgLy8gVGhlIGFuY2hvciBhbmQgZm9jdXMgYXJlIHRoZSBz
dGFydCBhbmQgZW5kIG9mIHRoZSBzZWxlY3Rpb24sIGFuZAorICAgIC8vIHJlZmxlY3QgdGhlIGRp
cmVjdGlvbiBpbiB3aGljaCB0aGUgc2VsZWN0aW9uIHdhcyBtYWRlIGJ5IHRoZSB1c2VyLgorICAg
IC8vIFRoZSBiYXNlIGFuZCBleHRlbnQgYXJlIGRpZmZlcmVudCwgYmVjYXVzZSB0aGV5IGRvbid0
IHJlZmxlY3QgZXhwYW5zaW9uLgorICAgIE5vZGUqIGFuY2hvck5vZGUoKSBjb25zdDsKKyAgICB1
bnNpZ25lZCBhbmNob3JPZmZzZXQoKSBjb25zdDsKKyAgICBOb2RlKiBmb2N1c05vZGUoKSBjb25z
dDsKKyAgICB1bnNpZ25lZCBmb2N1c09mZnNldCgpIGNvbnN0OworICAgIGJvb2wgaXNDb2xsYXBz
ZWQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCByYW5nZUNvdW50KCkgY29uc3Q7CisgICAgdm9pZCBj
b2xsYXBzZShOb2RlKiwgdW5zaWduZWQgb2Zmc2V0KTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBj
b2xsYXBzZVRvRW5kKCk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gY29sbGFwc2VUb1N0YXJ0KCk7
CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gZXh0ZW5kKE5vZGUmLCB1bnNpZ25lZCBvZmZzZXQpOwor
ICAgIEV4Y2VwdGlvbk9yPFJlZjxSYW5nZT4+IGdldFJhbmdlQXQodW5zaWduZWQpOworICAgIHZv
aWQgcmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgdm9pZCBhZGRSYW5nZShSYW5nZSYpOworICAgIHZv
aWQgZGVsZXRlRnJvbURvY3VtZW50KCk7CisgICAgYm9vbCBjb250YWluc05vZGUoTm9kZSYsIGJv
b2wgcGFydGx5Q29udGFpbmVkKSBjb25zdDsKKyAgICB2b2lkIHNlbGVjdEFsbENoaWxkcmVuKE5v
ZGUmKTsKKworICAgIFN0cmluZyB0b1N0cmluZygpOworCisgICAgdm9pZCBlbXB0eSgpOworCitw
cml2YXRlOgorICAgIGV4cGxpY2l0IERPTVNlbGVjdGlvbihGcmFtZSYpOworCisgICAgLy8gQ29u
dmVuaWVuY2UgbWV0aG9kIGZvciBhY2Nlc3NvcnMsIGNhbGxlciBtdXN0IG51bGwtY2hlY2sgbV9m
cmFtZS4KKyAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiB2aXNpYmxlU2VsZWN0aW9uKCkgY29u
c3Q7CisKKyAgICBOb2RlKiBzaGFkb3dBZGp1c3RlZE5vZGUoY29uc3QgUG9zaXRpb24mKSBjb25z
dDsKKyAgICB1bnNpZ25lZCBzaGFkb3dBZGp1c3RlZE9mZnNldChjb25zdCBQb3NpdGlvbiYpIGNv
bnN0OworCisgICAgYm9vbCBpc1ZhbGlkRm9yUG9zaXRpb24oTm9kZSopIGNvbnN0OworfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVU
eXBlUmVnaXN0cnkuY3BwCmluZGV4IDNhMzQzOTY3NTdiNjU2MTIyM2M2ZTIyZGI3MWVkMDE5YTA1
MTUyMWMuLmFkZDI4ZmZjNjI5ZWZjM2QxOTZjMmRmNmFlNDZmMTMzODc2ZjI3YTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCwgMjAwOSBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBN
b2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5j
b20vKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjksMjAgKzI5LDIxIEBACiAKICNpbmNsdWRlICJN
ZWRpYVBsYXllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSAiSW1hZ2VTb3Vy
Y2VDRy5oIgotI2lmICFQTEFURk9STShJT1MpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
I2VuZGlmCisKKyNpZiBVU0UoQ0cpICYmICFQTEFURk9STShJT1MpCiAjaW5jbHVkZSA8QXBwbGlj
YXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+Ci0jZWxzZQotI2luY2x1ZGUgPElt
YWdlSU8vQ0dJbWFnZURlc3RpbmF0aW9uLmg+CiAjZW5kaWYKLSNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSA8SW1hZ2VJTy9DR0ltYWdlRGVz
dGluYXRpb24uaD4KICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUo
TUhUTUwpCkBAIC01NDIsNiArNTQzLDQ3IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNVbnN1
cHBvcnRlZFRleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiB1
bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMtPmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0KIAorYm9vbCBN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQor
eworICAgIHJldHVybiBpc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShtaW1lVHlwZSkKKyAg
ICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNh
dGlvbi9qc29uIikgLy8gUmVuZGVyIEpTT04gYXMgdGV4dC9wbGFpbi4KKyAgICAgICAgfHwgKG1p
bWVUeXBlLnN0YXJ0c1dpdGgoInRleHQvIiwgZmFsc2UpCisgICAgICAgICAgICAmJiAhZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L2h0bWwiKQorICAgICAgICAg
ICAgJiYgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC94bWwi
KQorICAgICAgICAgICAgJiYgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBl
LCAidGV4dC94c2wiKSk7Cit9CisKKworc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRYTUxNSU1F
VHlwZUNoYXIoVUNoYXIgYykKK3sKKyAgICAvLyBWYWxpZCBjaGFyYWN0ZXJzIHBlciBSRkNzIDMw
MjMgYW5kIDIwNDU6IDAtOWEtekEtWl8tK34hJF57fXwuJSdgIyYqCisgICAgcmV0dXJuIGlzQVND
SUlBbHBoYW51bWVyaWMoYykgfHwgYyA9PSAnIScgfHwgYyA9PSAnIycgfHwgYyA9PSAnJCcgfHwg
YyA9PSAnJScgfHwgYyA9PSAnJicgfHwgYyA9PSAnXCcnIHx8IGMgPT0gJyonIHx8IGMgPT0gJysn
CisgICAgICAgIHx8IGMgPT0gJy0nIHx8IGMgPT0gJy4nIHx8IGMgPT0gJ14nIHx8IGMgPT0gJ18n
IHx8IGMgPT0gJ2AnIHx8IGMgPT0gJ3snIHx8IGMgPT0gJ3wnIHx8IGMgPT0gJ30nIHx8IGMgPT0g
J34nOworfQorCitib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKK3sKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
bWltZVR5cGUsICJ0ZXh0L3htbCIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1p
bWVUeXBlLCAiYXBwbGljYXRpb24veG1sIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobWltZVR5cGUsICJ0ZXh0L3hzbCIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlm
ICghbWltZVR5cGUuZW5kc1dpdGgoIit4bWwiLCBmYWxzZSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHNpemVfdCBzbGFzaFBvc2l0aW9uID0gbWltZVR5cGUuZmluZCgnLycpOworICAg
IC8vIFRha2UgaW50byBhY2NvdW50IHRoZSAnK3htbCcgZW5kaW5nIG9mIG1pbWVUeXBlLgorICAg
IGlmIChzbGFzaFBvc2l0aW9uID09IG5vdEZvdW5kIHx8ICFzbGFzaFBvc2l0aW9uIHx8IHNsYXNo
UG9zaXRpb24gPT0gbWltZVR5cGUubGVuZ3RoKCkgLSA1KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAvLyBBZ2FpbiwgbWltZVR5cGUgZW5kcyB3aXRoICcreG1sJywgbm8gbmVlZCB0byBj
aGVjayB0aGUgdmFsaWRpdHkgb2YgdGhhdCBzdWJzdHJpbmcuCisgICAgc2l6ZV90IG1pbWVMZW5n
dGggPSBtaW1lVHlwZS5sZW5ndGgoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1pbWVM
ZW5ndGggLSA0OyArK2kpIHsKKyAgICAgICAgaWYgKCFpc1ZhbGlkWE1MTUlNRVR5cGVDaGFyKG1p
bWVUeXBlW2ldKSAmJiBpICE9IHNsYXNoUG9zaXRpb24pCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgTUlNRVR5cGVSZWdpc3Ry
eTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICAv
LyBTaW5jZSB0aGlzIHNldCBpcyB2ZXJ5IGxpbWl0ZWQgYW5kIGlzIGxpa2VseSB0byByZW1haW4g
c28gd2Ugd29uJ3QgYm90aGVyIHdpdGggdGhlIG92ZXJoZWFkCkBAIC01NzcsNyArNjE5LDcgQEAg
Ym9vbCBNSU1FVHlwZVJlZ2lzdHJ5OjpjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAobWltZVR5cGUuc3RhcnRzV2l0
aCgidGV4dC8iLCBmYWxzZSkpCi0gICAgICAgIHJldHVybiAhTUlNRVR5cGVSZWdpc3RyeTo6aXNV
bnN1cHBvcnRlZFRleHRNSU1FVHlwZShtaW1lVHlwZSk7CisgICAgICAgIHJldHVybiAhaXNVbnN1
cHBvcnRlZFRleHRNSU1FVHlwZShtaW1lVHlwZSk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKaW5kZXggNGRjNzRlN2Ni
M2ZhODU0NmYxODhjNjJiMDdmZTMyMGUwOGZiOWQ4NS4uNjc0OTU0NmRlYmFiMDUzOTVlZjg1YWI4
MmFmMDFiZDIyODUxYjc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlN
RVR5cGVSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVn
aXN0cnkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTMsNyArMTMsNyBAQAogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCiAgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQogICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgogICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCiAgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCiAgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKQEAgLTIz
LDEzICsyMywxMSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIE1JTUVUeXBlUmVn
aXN0cnlfaAotI2RlZmluZSBNSU1FVHlwZVJlZ2lzdHJ5X2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYwLDE2ICs1OCwxMiBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSk7ICAgIAogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgbm9uLWltYWdlIE1JTUUg
dHlwZSBpcyBzdWl0YWJsZSBmb3IgYmVpbmcgbG9hZGVkIGFzIGEKLSAgICAvLyBkb2N1bWVudCBp
biBhIGZyYW1lLiAgSW5jbHVkZXMgc3VwcG9ydGVkIEphdmFTY3JpcHQgTUlNRSB0eXBlcy4KKyAg
ICAvLyBkb2N1bWVudCBpbiBhIGZyYW1lLiBJbmNsdWRlcyBzdXBwb3J0ZWQgSmF2YVNjcmlwdCBN
SU1FIHR5cGVzLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkTm9u
SW1hZ2VNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAogICAgIC8vIENoZWNrIHRv
IHNlZSBpZiBhIE1JTUUgdHlwZSBpcyBzdWl0YWJsZSBmb3IgYmVpbmcgbG9hZGVkIHVzaW5nIDx2
aWRlbz4gYW5kIDxhdWRpbz4uCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBw
b3J0ZWRNZWRpYU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCi0gICAgLy8gQ2hl
Y2sgdG8gc2VlIGlmIHRoZSBNSU1FIHR5cGUgaXMgbm90IHN1aXRhYmxlIGZvciBiZWluZyBsb2Fk
ZWQgYXMgYSB0ZXh0Ci0gICAgLy8gZG9jdW1lbnQgaW4gYSBmcmFtZS4gT25seSB2YWxpZCBmb3Ig
TUlNRSB0eXBlcyBiZWdpbmluZyB3aXRoICJ0ZXh0LyIuCi0gICAgc3RhdGljIGJvb2wgaXNVbnN1
cHBvcnRlZFRleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKLQogICAgIC8vIENo
ZWNrIHRvIHNlZSBpZiBhIE1JTUUgdHlwZSBpcyBhIHZhbGlkIEphdmEgYXBwbGV0IG1pbWUgdHlw
ZS4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0phdmFBcHBsZXRNSU1FVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIApAQCAtODYsNiArODAsMTUgQEAgcHVibGljOgogICAg
IC8vICJ0ZXh0LyIgYW5kIGlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUoKSByZXR1cm5zIGZhbHNl
LgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGNhblNob3dNSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKTsKIAorICAgIC8vIENoZWNrIHRvIHNlZSBpZiBhIE1JTUUgdHlwZSBp
cyBvbmUgd2hlcmUgYW4gWE1MIGRvY3VtZW50IHNob3VsZCBiZSBjcmVhdGVkCisgICAgLy8gcmF0
aGVyIHRoYW4gYW4gSFRNTCBkb2N1bWVudC4KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9v
bCBpc1hNTE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworCisgICAgLy8gVXNlZCBp
biBwYWdlIGxvYWQgYWxnb3JpdGhtIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGRpc3BsYXkgYXMgYSB0
ZXh0CisgICAgLy8gZG9jdW1lbnQgaW4gYSBmcmFtZS4gTm90IGEgZ29vZCBpZGVhIHRvIHVzZSBl
bHNld2hlcmUsIGJlY2F1c2UgdGhhdCBjb2RlCisgICAgLy8gbWFrZXMgdGhpcyB0ZXN0IGlzIGFm
dGVyIG1hbnkgb3RoZXIgdGVzdHMgYXJlIGRvbmUgb24gdGhlIE1JTUUgdHlwZS4KKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKTsKKwogICAgIC8vIEZJWE1FOiBXZWJLaXQgY29kaW5nIHN0eWxlIHNheXMgd2Ugc2hvdWxk
IG5vdCBoYXZlIHRoZSB3b3JkICJnZXQiIGluIHRoZSBuYW1lcyBvZiB0aGVzZSBmdW5jdGlvbnMu
CiAgICAgLy8gRklYTUU6IFdvdWxkIGJlIG5pY2UgdG8gZmluZCBhIHdheSB0byBhdm9pZCBleHBv
c2luZyB0aGVzZSBzZXRzLCBldmVuIHdvcnNlIGV4cG9zaW5nIG5vbi1jb25zdCByZWZlcmVuY2Vz
LgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPiYgZ2V0U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKQEAgLTEwMCwxMCAr
MTAzLDEzIEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogV2ViS2l0IGNvZGluZyBzdHlsZSBzYXlz
IHdlIHNob3VsZCBub3QgaGF2ZSB0aGUgd29yZCAiZ2V0IiBpbiB0aGUgbmFtZSBvZiB0aGlzIGZ1
bmN0aW9uLgogICAgIC8vIEZJWE1FOiBVbmNsZWFyIHdoYXQgdGhlIGNvbmNlcHQgb2YgYSBub3Jt
YWxpemVkIE1JTUUgdHlwZSBpczsgY3VycmVudGx5IGl0J3MgYSBwbGF0Zm9ybS1zcGVjaWZpYyBu
b3Rpb24uCiAgICAgc3RhdGljIFN0cmluZyBnZXROb3JtYWxpemVkTUlNRVR5cGUoY29uc3QgU3Ry
aW5nJik7CisKK3ByaXZhdGU6CisgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBNSU1FIHR5cGUg
aXMgbm90IHN1aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgYXMgYSB0ZXh0CisgICAgLy8gZG9jdW1l
bnQgaW4gYSBmcmFtZS4gT25seSB2YWxpZCBmb3IgTUlNRSB0eXBlcyBiZWdpbmluZyB3aXRoICJ0
ZXh0LyIuCisgICAgc3RhdGljIGJvb2wgaXNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKTsKIH07CiAKIGNvbnN0IFN0cmluZyYgZGVmYXVsdE1JTUVUeXBlKCk7
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIE1JTUVUeXBlUmVnaXN0cnlf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDc0MmYzODU1ODFjOTAwNmNhNDZmMGIw
NDdhMjBhMWEwNGQ1NmQ1ZjIuLmM0MjdhYmQ2ZDRhZjhhZDMzZGRjNjhkMTVkMGNjMzdiYTEyMWE4
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNs
dWRlICJTVkdFbGVtZW50LmgiCiAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKLSNpbmNsdWRlICJE
T01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxl
bWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKQEAgLTM2MiwxMSArMzYxLDYgQEAg
dm9pZCBTVkdFbGVtZW50OjpyZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IoU1ZHUGFyc2luZ0Vy
cm9yIGVycm9yLCBjb25zdCBRdWFsaWYKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAot
Ym9vbCBTVkdFbGVtZW50Ojppc1N1cHBvcnRlZChTdHJpbmdJbXBsKiBmZWF0dXJlLCBTdHJpbmdJ
bXBsKiB2ZXJzaW9uKSBjb25zdAotewotICAgIHJldHVybiBET01JbXBsZW1lbnRhdGlvbjo6aGFz
RmVhdHVyZShmZWF0dXJlLCB2ZXJzaW9uKTsKLX0KLQogdm9pZCBTVkdFbGVtZW50OjpyZW1vdmVk
RnJvbShDb250YWluZXJOb2RlJiByb290UGFyZW50KQogewogICAgIGJvb2wgd2FzSW5Eb2N1bWVu
dCA9IHJvb3RQYXJlbnQuaW5Eb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXgg
ZjNmZmU4MWU2MmNmYTk0NjViMjdjMDNlMDlhMGY2NjhhMDY5YWJlYy4uMGYxYTRjMTFiM2RlMGJi
NDU4YzcyOTE5NGQ0OWE5MjZhMWFmZGJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC0x
LDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJp
Z2h0IChDKSAyMDA5LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTIwLDEwICsyMCw4IEBACiAgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIFNWR0VsZW1lbnRfaAotI2RlZmluZSBTVkdFbGVt
ZW50X2gKKyNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiU1ZHTGFuZ1NwYWNlLmgiCiAj
aW5jbHVkZSAiU1ZHTG9jYXRhYmxlLmgiCkBAIC0zMSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiU1ZH
UGFyc2luZ0Vycm9yLmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlJbmZvLmgiCiAjaW5jbHVkZSAi
U3R5bGVkRWxlbWVudC5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCkBAIC04Niw3ICs4Myw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHN2Z0xvYWRFdmVudFRpbWVyRmlyZWQoKTsKICAgICB2aXJ0dWFsIFRpbWVy
KiBzdmdMb2FkRXZlbnRUaW1lcigpOwogCi0gICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0qIHN1
cHBsZW1lbnRhbFRyYW5zZm9ybSgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEFmZmluZVRy
YW5zZm9ybSogc3VwcGxlbWVudGFsVHJhbnNmb3JtKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAg
ICAgdm9pZCBpbnZhbGlkYXRlU1ZHQXR0cmlidXRlcygpIHsgZW5zdXJlVW5pcXVlRWxlbWVudERh
dGEoKS5zZXRBbmltYXRlZFNWR0F0dHJpYnV0ZXNBcmVEaXJ0eSh0cnVlKTsgfQogICAgIHZvaWQg
aW52YWxpZGF0ZVNWR1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKCkKQEAgLTE4MCw4ICsxNzcs
NiBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBjb21wdXRl
ZFN0eWxlKFBzZXVkb0lkID0gTk9QU0VVRE8pIGZpbmFsOwogCi0gICAgdmlydHVhbCBib29sIGlz
U3VwcG9ydGVkKFN0cmluZ0ltcGwqIGZlYXR1cmUsIFN0cmluZ0ltcGwqIHZlcnNpb24pIGNvbnN0
OwotCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyVGFyZ2V0KCkgeyB9CiAKICAgICB2b2lkIGJ1aWxk
UGVuZGluZ1Jlc291cmNlc0lmTmVlZGVkKCk7CkBAIC0yNjQsNSArMjU5LDMgQEAgU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTVkdFbGVtZW50KQogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19FTkQoKQogCiAjaW5jbHVkZSAiU1ZHRWxlbWVudFR5cGVIZWxwZXJzLmgiCi0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggYzBiNWE1ODE3ZmRh
OTc3MTQ2NmY0N2EwMWVkNmNkMDA2NjY1NzY2MC4uNWQxZjNmYTNhM2NmNjM0NjljNzM2OGM5NDk5
ZmM0NzQ4Y2UxZmUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0y
OCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVk
ZSAiQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgiCiAjaW5jbHVkZSAiRE9NRm9ybURhdGEuaCIK
LSNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKQEAgLTM5LDYg
KzM4LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgorI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlBh
cnNlZENvbnRlbnRUeXBlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgpAQCAtNTksNyAr
NTksNiBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KLSNpbmNs
dWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CkBAIC05MzUsNyArOTM0LDcgQEAgU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZU1J
TUVUeXBlKCkgY29uc3QKIAogYm9vbCBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VJc1hNTCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIERPTUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKHJlc3Bv
bnNlTUlNRVR5cGUoKSk7CisgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5
cGUocmVzcG9uc2VNSU1FVHlwZSgpKTsKIH0KIAogaW50IFhNTEh0dHBSZXF1ZXN0OjpzdGF0dXMo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IDFiNDZiYjFjZjhkYmQ2ZmFlZTZkYzgwZWQxM2MzYjNh
NTVkMWFmYTcuLmE5OWY5ZGU3MjczYTU2MmUxNDZkOTM1MzI5MmEwNTAwYjQ0NDhkN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGli
eG1sMi5jcHAKQEAgLTEwNjQsNyArMTA2NCw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OnN0
YXJ0RG9jdW1lbnQoY29uc3QgeG1sQ2hhciogdmVyc2lvbiwgY29uc3QgeG1sQ2hhciogZW5jCiAg
ICAgaWYgKHZlcnNpb24pCiAgICAgICAgIGRvY3VtZW50KCktPnNldFhNTFZlcnNpb24odG9TdHJp
bmcodmVyc2lvbiksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIGlmIChzdGFuZGFsb25lICE9
IFN0YW5kYWxvbmVVbnNwZWNpZmllZCkKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0WE1MU3RhbmRh
bG9uZShzdGFuZGFsb25lSW5mbyA9PSBTdGFuZGFsb25lWWVzLCBBU1NFUlRfTk9fRVhDRVBUSU9O
KTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0WE1MU3RhbmRhbG9uZShzdGFuZGFsb25lSW5mbyA9
PSBTdGFuZGFsb25lWWVzKTsKICAgICBpZiAoZW5jb2RpbmcpCiAgICAgICAgIGRvY3VtZW50KCkt
PnNldFhNTEVuY29kaW5nKHRvU3RyaW5nKGVuY29kaW5nKSk7CiAgICAgZG9jdW1lbnQoKS0+c2V0
SGFzWE1MRGVjbGFyYXRpb24odHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9E
T00vRE9NRE9NSW1wbGVtZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRE9N
SW1wbGVtZW50YXRpb24ubW0KaW5kZXggZTBhMGMwNjZiZTE0M2E3NzFkNGUzNTg4MDU5MDAxOWUz
ZWQ3MDhiNS4uMmEzZTkyZDVlODg0OTBkNGJmOTk5NjNkZTlhNmJlNjcwM2RiYTNhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTURPTUltcGxlbWVudGF0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01ET01JbXBsZW1lbnRhdGlvbi5tbQpAQCAtMzAsMTA1
ICszMCw5MCBAQAogI2ltcG9ydCAiRE9NRG9jdW1lbnRUeXBlSW50ZXJuYWwuaCIKICNpbXBvcnQg
IkRPTUhUTUxEb2N1bWVudEludGVybmFsLmgiCiAjaW1wb3J0ICJET01JbnRlcm5hbC5oIgotI2lt
cG9ydCAiRE9NTm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgog
I2ltcG9ydCA8V2ViQ29yZS9DU1NTdHlsZVNoZWV0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTUlt
cGxlbWVudGF0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0RvY3VtZW50VHlwZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MRG9jdW1lbnQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RocmVhZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1hNTERvY3VtZW50Lmg+Ci0jaW1wb3J0IDx3
dGYvR2V0UHRyLmg+Ci0KLSNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkRP
TUltcGxlbWVudGF0aW9uKj4oX2ludGVybmFsKQogCiBAaW1wbGVtZW50YXRpb24gRE9NSW1wbGVt
ZW50YXRpb24KIAorc3RhdGljIGlubGluZSBXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbiYgdW53
cmFwKERPTUltcGxlbWVudGF0aW9uJiB3cmFwcGVyKQoreworICAgIHJldHVybiAqcmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbio+KHdyYXBwZXIuX2ludGVybmFsKTsK
K30KKwogLSAodm9pZClkZWFsbG9jCiB7CiAgICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFs
bG9jYXRlT25NYWluVGhyZWFkKFtET01JbXBsZW1lbnRhdGlvbiBjbGFzc10sIHNlbGYpKQogICAg
ICAgICByZXR1cm47Ci0KICAgICBpZiAoX2ludGVybmFsKQotICAgICAgICBJTVBMLT5kZXJlZigp
OworICAgICAgICB1bndyYXAoKnNlbGYpLmRlcmVmKCk7CiAgICAgW3N1cGVyIGRlYWxsb2NdOwog
fQogCiAtIChCT09MKWhhc0ZlYXR1cmU6KE5TU3RyaW5nICopZmVhdHVyZSB2ZXJzaW9uOihOU1N0
cmluZyAqKXZlcnNpb24KIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgcmV0dXJuIElNUEwtPmhhc0ZlYXR1cmUoZmVhdHVyZSwgdmVyc2lvbik7CisgICAg
cmV0dXJuIHVud3JhcCgqc2VsZikuaGFzRmVhdHVyZShmZWF0dXJlLCB2ZXJzaW9uKTsKIH0KIAot
LSAoQk9PTCloYXNGZWF0dXJlOihOU1N0cmluZyAqKWZlYXR1cmUgOihOU1N0cmluZyAqKXZlcnNp
b24KKy0gKERPTURvY3VtZW50VHlwZSAqKWNyZWF0ZURvY3VtZW50VHlwZTooTlNTdHJpbmcgKilx
dWFsaWZpZWROYW1lIHB1YmxpY0lkOihOU1N0cmluZyAqKXB1YmxpY0lkIHN5c3RlbUlkOihOU1N0
cmluZyAqKXN5c3RlbUlkCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIHJldHVybiBJTVBMLT5oYXNGZWF0dXJlKGZlYXR1cmUsIHZlcnNpb24pOworICAg
IGF1dG8gcmVzdWx0ID0gdW53cmFwKCpzZWxmKS5jcmVhdGVEb2N1bWVudFR5cGUocXVhbGlmaWVk
TmFtZSwgcHVibGljSWQsIHN5c3RlbUlkKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KQorICAgICAgICByYWlzZURPTUV4Y2VwdGlvbihyZXN1bHQuZXhjZXB0aW9uQ29kZSgpKTsKKyAg
ICByZXR1cm4ga2l0KHJlc3VsdC50YWtlUmV0dXJuVmFsdWUoKS5wdHIoKSk7CiB9CiAKLS0gKERP
TURvY3VtZW50VHlwZSAqKWNyZWF0ZURvY3VtZW50VHlwZTooTlNTdHJpbmcgKilxdWFsaWZpZWRO
YW1lIHB1YmxpY0lkOihOU1N0cmluZyAqKXB1YmxpY0lkIHN5c3RlbUlkOihOU1N0cmluZyAqKXN5
c3RlbUlkCistIChET01Eb2N1bWVudCAqKWNyZWF0ZURvY3VtZW50OihOU1N0cmluZyAqKW5hbWVz
cGFjZVVSSSBxdWFsaWZpZWROYW1lOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgZG9jdHlwZToo
RE9NRG9jdW1lbnRUeXBlICopZG9jdHlwZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBE
T01Eb2N1bWVudFR5cGUgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5jcmVhdGVEb2N1
bWVudFR5cGUocXVhbGlmaWVkTmFtZSwgcHVibGljSWQsIHN5c3RlbUlkLCBlYykpKTsKLSAgICBy
YWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgYXV0byByZXN1bHQg
PSB1bndyYXAoKnNlbGYpLmNyZWF0ZURvY3VtZW50KG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFt
ZSwgY29yZShkb2N0eXBlKSk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAg
ICAgcmFpc2VET01FeGNlcHRpb24ocmVzdWx0LmV4Y2VwdGlvbkNvZGUoKSk7CisgICAgcmV0dXJu
IGtpdChyZXN1bHQudGFrZVJldHVyblZhbHVlKCkucHRyKCkpOwogfQogCi0tIChET01Eb2N1bWVu
dFR5cGUgKiljcmVhdGVEb2N1bWVudFR5cGU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5T
U3RyaW5nICopcHVibGljSWQgOihOU1N0cmluZyAqKXN5c3RlbUlkCistIChET01DU1NTdHlsZVNo
ZWV0ICopY3JlYXRlQ1NTU3R5bGVTaGVldDooTlNTdHJpbmcgKil0aXRsZSBtZWRpYTooTlNTdHJp
bmcgKiltZWRpYQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
LSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Eb2N1bWVudFR5cGUg
KnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5jcmVhdGVEb2N1bWVudFR5cGUocXVhbGlm
aWVkTmFtZSwgcHVibGljSWQsIHN5c3RlbUlkLCBlYykpKTsKLSAgICByYWlzZU9uRE9NRXJyb3Io
ZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGtpdCh1bndyYXAoKnNlbGYpLmNy
ZWF0ZUNTU1N0eWxlU2hlZXQodGl0bGUsIG1lZGlhKS5wdHIoKSk7CiB9CiAKLS0gKERPTURvY3Vt
ZW50ICopY3JlYXRlRG9jdW1lbnQ6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIHF1YWxpZmllZE5h
bWU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSBkb2N0eXBlOihET01Eb2N1bWVudFR5cGUgKilk
b2N0eXBlCistIChET01IVE1MRG9jdW1lbnQgKiljcmVhdGVIVE1MRG9jdW1lbnQ6KE5TU3RyaW5n
ICopdGl0bGUKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0g
ICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NRG9jdW1lbnQgKnJlc3Vs
dCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5jcmVhdGVEb2N1bWVudChuYW1lc3BhY2VVUkksIHF1
YWxpZmllZE5hbWUsIGNvcmUoZG9jdHlwZSksIGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJvcihl
Yyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4ga2l0KHVud3JhcCgqc2VsZikuY3Jl
YXRlSFRNTERvY3VtZW50KHRpdGxlKS5wdHIoKSk7CiB9CiAKLS0gKERPTURvY3VtZW50ICopY3Jl
YXRlRG9jdW1lbnQ6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZp
ZWROYW1lIDooRE9NRG9jdW1lbnRUeXBlICopZG9jdHlwZQorQGVuZAorCitAaW1wbGVtZW50YXRp
b24gRE9NSW1wbGVtZW50YXRpb24gKERPTUltcGxlbWVudGF0aW9uRGVwcmVjYXRlZCkKKworLSAo
Qk9PTCloYXNGZWF0dXJlOihOU1N0cmluZyAqKWZlYXR1cmUgOihOU1N0cmluZyAqKXZlcnNpb24K
IHsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NRG9jdW1lbnQgKnJlc3VsdCA9IGtpdChX
VEY6OmdldFB0cihJTVBMLT5jcmVhdGVEb2N1bWVudChuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5h
bWUsIGNvcmUoZG9jdHlwZSksIGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gW3NlbGYgaGFzRmVhdHVyZTpmZWF0dXJlIHZlcnNp
b246dmVyc2lvbl07CiB9CiAKLS0gKERPTUNTU1N0eWxlU2hlZXQgKiljcmVhdGVDU1NTdHlsZVNo
ZWV0OihOU1N0cmluZyAqKXRpdGxlIG1lZGlhOihOU1N0cmluZyAqKW1lZGlhCistIChET01Eb2N1
bWVudFR5cGUgKiljcmVhdGVEb2N1bWVudFR5cGU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6
KE5TU3RyaW5nICopcHVibGljSWQgOihOU1N0cmluZyAqKXN5c3RlbUlkCiB7Ci0gICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIERPTUNTU1N0eWxlU2hlZXQgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0
cihJTVBMLT5jcmVhdGVDU1NTdHlsZVNoZWV0KHRpdGxlLCBtZWRpYSwgZWMpKSk7Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBbc2VsZiBj
cmVhdGVEb2N1bWVudFR5cGU6cXVhbGlmaWVkTmFtZSBwdWJsaWNJZDpwdWJsaWNJZCBzeXN0ZW1J
ZDpzeXN0ZW1JZF07CiB9CiAKLS0gKERPTUNTU1N0eWxlU2hlZXQgKiljcmVhdGVDU1NTdHlsZVNo
ZWV0OihOU1N0cmluZyAqKXRpdGxlIDooTlNTdHJpbmcgKiltZWRpYQorLSAoRE9NRG9jdW1lbnQg
KiljcmVhdGVEb2N1bWVudDooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1
YWxpZmllZE5hbWUgOihET01Eb2N1bWVudFR5cGUgKilkb2N0eXBlCiB7Ci0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIERPTUNTU1N0eWxlU2hlZXQgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJ
TVBMLT5jcmVhdGVDU1NTdHlsZVNoZWV0KHRpdGxlLCBtZWRpYSwgZWMpKSk7Ci0gICAgcmFpc2VP
bkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBbc2VsZiBjcmVh
dGVEb2N1bWVudDpuYW1lc3BhY2VVUkkgcXVhbGlmaWVkTmFtZTpxdWFsaWZpZWROYW1lIGRvY3R5
cGU6ZG9jdHlwZV07CiB9CiAKLS0gKERPTUhUTUxEb2N1bWVudCAqKWNyZWF0ZUhUTUxEb2N1bWVu
dDooTlNTdHJpbmcgKil0aXRsZQorLSAoRE9NQ1NTU3R5bGVTaGVldCAqKWNyZWF0ZUNTU1N0eWxl
U2hlZXQ6KE5TU3RyaW5nICopdGl0bGUgOihOU1N0cmluZyAqKW1lZGlhCiB7Ci0gICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBraXQoV1RGOjpnZXRQ
dHIoSU1QTC0+Y3JlYXRlSFRNTERvY3VtZW50KHRpdGxlKSkpOworICAgIHJldHVybiBbc2VsZiBj
cmVhdGVDU1NTdHlsZVNoZWV0OnRpdGxlIG1lZGlhOm1lZGlhXTsKIH0KIAogQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTURvY3VtZW50Lm1tIGIvU291cmNlL1dlYktp
dC9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCmluZGV4IDRjZDliZmJmYTRlMTY2MWNjNzk1ZTY5YWFi
YzA5NjQyOGQxZTAxYmIuLjU5ZjYxZjcyNzg4ODkzNGYzYzhhMzcyYzhlMTlkNzNkMjZjNGZhZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRG9jdW1lbnQubW0KQEAgLTQ2LDcgKzQ2LDYgQEAKICNp
bXBvcnQgIkRPTUhUTUxFbGVtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUhUTUxIZWFkRWxl
bWVudEludGVybmFsLmgiCiAjaW1wb3J0ICJET01IVE1MU2NyaXB0RWxlbWVudEludGVybmFsLmgi
Ci0jaW1wb3J0IDxXZWJDb3JlL0RPTUltcGxlbWVudGF0aW9uLmg+CiAjaW1wb3J0ICJET01JbnRl
cm5hbC5oIgogI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01Ob2RlSXRl
cmF0b3JJbnRlcm5hbC5oIgpAQCAtMTQ3LDkgKzE0Niw3IEBAIC0gKEJPT0wpeG1sU3RhbmRhbG9u
ZQogLSAodm9pZClzZXRYbWxTdGFuZGFsb25lOihCT09MKW5ld1htbFN0YW5kYWxvbmUKIHsKICAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSU1QTC0+c2V0WE1MU3RhbmRhbG9uZShuZXdYbWxTdGFu
ZGFsb25lLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICBJTVBMLT5zZXRYTUxT
dGFuZGFsb25lKG5ld1htbFN0YW5kYWxvbmUpOwogfQogCiAtIChOU1N0cmluZyAqKWRvY3VtZW50
VVJJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBhY2FkOGRlM2RlM2I5
MmEzMzk5NDI5ODA2NjA4M2ZmMDViZDliMGMzLi5hNGFkNjc4MTRhZWQ3YTVmYzlkNTUxNjQ1MTVh
N2IzNWM2MzgyNmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTYx
LDcgKzYxLDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaD4KICNp
bXBvcnQgPFdlYkNvcmUvQ2hyb21lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL0RPTUltcGxlbWVudGF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Rh
dGFiYXNlTWFuYWdlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CkBAIC04MCw2ICs3OSw3IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNOb2RlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
TUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NYWluRnJhbWUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50RmFjdG9y
eU1hYy5oPgpAQCAtMTAxLDkgKzEwMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL21hcmt1cC5oPgog
I2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDxiaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5oPgorI2ltcG9ydCA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW1wb3J0IDxydW50
aW1lL0pTTG9jay5oPgogI2ltcG9ydCA8cnVudGltZS9KU09iamVjdC5oPgotI2ltcG9ydCA8cnVu
dGltZS9KU0NKU1ZhbHVlLmg+CiAjaW1wb3J0IDx3dGYvQ3VycmVudFRpbWUuaD4KIAogI2lmIFBM
QVRGT1JNKElPUykKQEAgLTExMSw3ICsxMTEsNiBAQAogI2ltcG9ydCAiV2ViUmVzb3VyY2UuaCIK
ICNpbXBvcnQgIldlYlVJS2l0RGVsZWdhdGUuaCIKICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvckNs
aWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRm9udC5oPgpAQCAtOTg4LDcgKzk4Nyw3IEBAIC0gKEJPT0wpX2NhblByb3ZpZGVEb2N1
bWVudFNvdXJjZQogICAgIFN0cmluZyBtaW1lVHlwZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5sb2Fk
ZXIoKS0+d3JpdGVyKCkubWltZVR5cGUoKTsKICAgICBQbHVnaW5EYXRhKiBwbHVnaW5EYXRhID0g
ZnJhbWUtPnBhZ2UoKSA/ICZmcmFtZS0+cGFnZSgpLT5wbHVnaW5EYXRhKCkgOiAwOwogCi0gICAg
aWYgKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjppc1RleHRNSU1FVHlwZShtaW1lVHlwZSkK
KyAgICBpZiAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNUZXh0TUlNRVR5cGUobWltZVR5
cGUpCiAgICAgICAgIHx8IEltYWdlOjpzdXBwb3J0c1R5cGUobWltZVR5cGUpCiAgICAgICAgIHx8
IChwbHVnaW5EYXRhICYmIHBsdWdpbkRhdGEtPnN1cHBvcnRzV2ViVmlzaWJsZU1pbWVUeXBlKG1p
bWVUeXBlLCBQbHVnaW5EYXRhOjpBbGxQbHVnaW5zKSAmJiBmcmFtZS0+bG9hZGVyKCkuc3ViZnJh
bWVMb2FkZXIoKS5hbGxvd1BsdWdpbnMoKSkKICAgICAgICAgfHwgKHBsdWdpbkRhdGEgJiYgcGx1
Z2luRGF0YS0+c3VwcG9ydHNXZWJWaXNpYmxlTWltZVR5cGUobWltZVR5cGUsIFBsdWdpbkRhdGE6
Ok9ubHlBcHBsaWNhdGlvblBsdWdpbnMpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAppbmRleCA3OTkz
Yjk2ZDYzMjIzMDY5MTY1YTkyYzUwN2UzNDU4MTQ1MTk5ZTYwLi5lMjI2Y2IyMTNiYjBiYmVlYjEx
MTYzMjZmNDFjMTk1MDA1ZjY4ODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJG
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCkBAIC01OSw3ICs1
OSw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RG9jdW1lbnRMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TWFya2VyQ29udHJv
bGxlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRE9NSW1wbGVtZW50YXRpb24uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0RPTVdpbmRvdy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9FdmVudC5oPgpAQCAtODEsNiArODAsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvSFRNTFBsdWdJbkVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NV2luZG93Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9N
SU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL01vdXNlUmVsYXRlZEV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgpAQCAtMTM4NSw3ICsxMzg1LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6Y2Fu
UHJvdmlkZURvY3VtZW50U291cmNlKGJvb2wqIHJlc3VsdCkKICAgICAgICAgQlN0cmluZyBtaW1l
VHlwZUJTdHI7CiAgICAgICAgIGlmIChTVUNDRUVERUQodXJsUmVzcG9uc2UtPk1JTUVUeXBlKCZt
aW1lVHlwZUJTdHIpKSkgewogICAgICAgICAgICAgU3RyaW5nIG1pbWVUeXBlKG1pbWVUeXBlQlN0
ciwgU3lzU3RyaW5nTGVuKG1pbWVUeXBlQlN0cikpOwotICAgICAgICAgICAgKnJlc3VsdCA9IG1p
bWVUeXBlID09ICJ0ZXh0L2h0bWwiIHx8IFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjppc1hN
TE1JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICAgICAgICAgICpyZXN1bHQgPSBtaW1lVHlwZSA9PSAi
dGV4dC9odG1sIiB8fCBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1hNTE1JTUVUeXBlKG1p
bWVUeXBlKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gaHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKaW5kZXggMTViOGUyOGYyMzAwOTI5ZDIyMGU3
MzNiZmYwMDYzMDBkMTNhYWRiZi4uY2Q3MDY5ODU4MjY3NjcyNGRmMTA3NDk5YmM4OTMxNTc4YzNj
YTAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcApAQCAt
MzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9ET01JbXBsZW1lbnRhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxzdGRpby5oPgpA
QCAtMTE3LDE1ICsxMTYsMTMgQEAgYm9vbCBXZWJGcmFtZVByb3h5Ojppc0Rpc3BsYXlpbmdTdGFu
ZGFsb25lTWVkaWFEb2N1bWVudCgpIGNvbnN0CiAKIGJvb2wgV2ViRnJhbWVQcm94eTo6aXNEaXNw
bGF5aW5nTWFya3VwRG9jdW1lbnQoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNr
IHNob3VsZCBiZSBtb3ZlZCB0byBzb21ld2hlcmUgaW4gV2ViQ29yZS4KLSAgICByZXR1cm4gbV9N
SU1FVHlwZSA9PSAidGV4dC9odG1sIiB8fCBtX01JTUVUeXBlID09ICJpbWFnZS9zdmcreG1sIiB8
fCBtX01JTUVUeXBlID09ICJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiIHx8IERPTUltcGxlbWVu
dGF0aW9uOjppc1hNTE1JTUVUeXBlKG1fTUlNRVR5cGUpOworICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBiZSBhIGNhbGwgdG8gYSBzaW5nbGUgTUlNRVR5cGVSZWdpc3RyeSBmdW5jdGlvbjsgYWRk
aW5nIGEgbmV3IG9uZSBpZiBuZWVkZWQuCisgICAgLy8gRklYTUU6IFRoaXMgaXMgZG9pbmcgY2Fz
ZSBzZW5zaXRpdmUgY29tcGFyaXNvbnMgb24gTUlNRSB0eXBlcywgc2hvdWxkIGJlIHVzaW5nIEFT
Q0lJIGNhc2UgaW5zZW5zaXRpdmUgaW5zdGVhZC4KKyAgICByZXR1cm4gbV9NSU1FVHlwZSA9PSAi
dGV4dC9odG1sIiB8fCBtX01JTUVUeXBlID09ICJpbWFnZS9zdmcreG1sIiB8fCBtX01JTUVUeXBl
ID09ICJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzWE1M
TUlNRVR5cGUobV9NSU1FVHlwZSk7CiB9CiAKIGJvb2wgV2ViRnJhbWVQcm94eTo6aXNEaXNwbGF5
aW5nUERGRG9jdW1lbnQoKSBjb25zdAogewotICAgIGlmIChtX01JTUVUeXBlLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6Omlz
UERGT3JQb3N0U2NyaXB0TUlNRVR5cGUobV9NSU1FVHlwZSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287863</attachid>
            <date>2016-09-03 08:35:57 -0700</date>
            <delta_ts>2016-09-03 10:41:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161295-20160903083340.patch</filename>
            <type>text/plain</type>
            <size>73700</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVhZGQ2YmY1MDNkZGNk
MGUzYTFjMTVlYTg5YjI4NzU0YTM4MTQ4MC4uNjUyYTRjMzk2MDFlYzUyZTNiYmViOGNmYWRmOTVj
NTdlMmFhOWEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDE2LTA5LTAzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJlYW1saW5lIERPTUltcGxl
bWVudGF0aW9uLCBhbmQgbW92ZSBpdCB0byBvdXIgbmV3IERPTSBleGNlcHRpb24gc3lzdGVtCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEyOTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgbmV3IGhlYWRlcnMgdG8gcHJvamVjdC4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6dG9KUyk6IEFkZGVkIGFuIG92ZXJsb2FkIGZvciBFeGNlcHRpb25Pcjw+OyB0aGlzIGhhbmRs
ZXMgdGhlCisgICAgICAgIGV4Y2VwdGlvbiBjYXNlIGhlcmUgc28gaXQgZG9lc24ndCBuZWVkIHRv
IGJlIGhhbmRsZWQgaW4gZ2VuZXJhdGVkIGNvZGUKKyAgICAgICAgZm9yIHRoZSBiaW5kaW5nLiBJ
bXBsZW1lbnRlZCBoZXJlIHNvIHRoYXQgRXhjZXB0aW9uT3IuaCBkb2VzIG5vdCBrbm93CisgICAg
ICAgIGFib3V0IGJpbmRpbmdzLiBCdXQgc2luY2UgdGhpcyBpcyBhIHRlbXBsYXRlLCBpdCB3aWxs
IG9ubHkgY29tcGlsZSB3aGVuCisgICAgICAgIGluc3RhbnRpYXRlZCBhbmQgdGhlcmUgaXMgbm8g
bmVlZCB0byBpbmNsdWRlIEV4Y2VwdGlvbk9yLmggYW5kIGluZGlyZWN0bHkKKyAgICAgICAgdGhl
IFZhcmlhbnQuaCBoZWFkZXIgaW4gdGhpcyBoZWFkZXIuCisgICAgICAgIChXZWJDb3JlOjp0b0pT
TmV3bHlDcmVhdGVkKTogRGl0dG8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbik6
IFJlZmVyIHRvIEpTQzo6RXhjZXB0aW9uIHdpdGggZXhwbGljaXQKKyAgICAgICAgbmFtZXNwYWNl
IHRvIGF2b2lkIGFtYmlndWl0eSB3aXRoIFdlYkNvcmU6OkV4Y2VwdGlvbi4KKworICAgICAgICAq
IGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1l
bnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnRUeXBlKTogQ2hhbmdlZCB0byByZXR1cm4KKyAgICAgICAg
RXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVYTUxEb2N1bWVudCk6IEFkZGVk
LiBIZWxwZXIgdXNlZCBpbiBjcmVhdGVEb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUlt
cGxlbWVudGF0aW9uOjpnZXRJbnRlcmZhY2UpOiBEZWxldGVkLiBUaGlzIHdhcyB1bnVzZWQuCisg
ICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQpOiBDaGFu
Z2VkIHRvIHJldHVybgorICAgICAgICBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkRP
TUltcGxlbWVudGF0aW9uOjpjcmVhdGVDU1NTdHlsZVNoZWV0KTogUmVtb3ZlZCB0aGUgdW51c2Vk
CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgb3V0IGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6
aXNWYWxpZFhNTE1JTUVUeXBlQ2hhcik6IERlbGV0ZWQuIE1vdmVkIHRvIE1JTUVUeXBlUmVnaXN0
cnkuCisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlwZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmlzVGV4dE1JTUVU
eXBlKTogRGl0dG8uCisKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uaDogQ2hhbmdl
ZCBmdW5jdGlvbnMgYXMgZGVzY3JpYmVkIGFib3ZlIHRvCisgICAgICAgIHJldHVybiBFeGNlcHRp
b25PciB2YWx1ZXMuIEFsc28gcmVtb3ZlZCB1bnVzZWQgZ2V0SW50ZXJmYWNlIGZ1bmN0aW9uLAor
ICAgICAgICBhbmQgaXNYTUxNSU1FVHlwZSBhbmQgaXNUZXh0TUlNRVR5cGUsIHdoaWNoIGJvdGgg
bW92ZWQgdG8gdGhlCisgICAgICAgIE1JTUVUeXBlUmVnaXN0cnkgY2xhc3MgYWxvbmdzaWRlIGFs
bCB0aGUgb3RoZXIgc2ltaWxhciBNSU1FIHR5cGUKKyAgICAgICAgZnVuY3Rpb25zLgorCisgICAg
ICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbDogUmVvcmdhbml6ZWQgdGhpcyB0byBtYXRj
aCB0aGUgSURMIGZpbGVzCisgICAgICAgIGluIHRoZSBzcGVjaWZpY2F0aW9ucyBhIGxpdHRsZSBi
ZXR0ZXIuIEFsc28gcmVtb3ZlZCBbUmFpc2VzRXhjZXB0aW9uXQorICAgICAgICBzaW5jZSB0aGF0
IGlzIG9ubHkgbmVlZGVkIGZvciB0aGUgb2xkIGxlZ2FjeSBFeGNlcHRpb25Db2RlJiBzdHlsZS4K
KworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6c2V0WE1MVmVyc2lvbik6IFJlbW92ZWQgY2FsbCB0byB0aGUKKyAgICAgICAgRE9NSW1wbGVt
ZW50YXRpb246Omhhc0ZlYXR1cmUgZnVuY3Rpb24gc2luY2UgdGhlIHZhbHVlcyBwYXNzZWQgaW4K
KyAgICAgICAgdW5jb25kaXRpb25hbGx5IHJlc3VsdCBpbiB0aGUgcmV0dXJuIHZhbHVlICJ0cnVl
Ii4gVGhpcyBpcyBsZWZ0IG92ZXIKKyAgICAgICAgZWl0aGVyIGZyb20gc3BlY2lmaWNhdGlvbiBs
YW5ndWFnZSwgb3IgZnJvbSBhbiBhbmNpZW50IHZlcnNpb24gb2YgdGhpcworICAgICAgICBjb2Rl
IHRoYXQgd29ya2VkIGluIGEgIm5vIFhNTCBzdXBwb3J0ZWQiIG1vZGUuCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6c2V0WE1MU3RhbmRhbG9uZSk6IERpdHRvLgorCisgICAgICAgICogZG9t
L0RvY3VtZW50Lmg6IFJlbW92ZWQgdGhlIEV4Y2VwdGlvbkNvZGUmIG91dCBhcmd1bWVudCBmcm9t
IHNldFhNTFN0YW5kYWxvbmUuCisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDogUmVtb3ZlZCBb
U2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBmcm9tIHhtbFN0YW5kYWxvbmUuCisKKyAgICAgICAgKiBk
b20vRXhjZXB0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIGRvbS9FeGNlcHRpb25Pci5oOiBBZGRl
ZC4KKworICAgICAgICAqIGh0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHA6IFJlbW92ZWQgdW5u
ZWVkZWQgaW5jbHVkZSBvZiBET01JbXBsZW1lbnRhdGlvbi5oLgorCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVYSFJU
ZXh0RGVjb2Rlcik6IFVzZSBpc1hNTE1JTUVUeXBlIGluIGl0cyBuZXcgbG9jYXRpb24gaW4KKyAg
ICAgICAgTUlNRVR5cGVSZWdpc3RyeS4KKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlT3RoZXJSZXNvdXJjZVRleHRE
ZWNvZGVyKTogRGl0dG8uCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOiBSZW1v
dmVkIHVubmVlZGVkIGluY2x1ZGUgb2YgRE9NSW1wbGVtZW50YXRpb24uaC4KKworICAgICAgICAq
IGxvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRS
ZXNvdXJjZURlY29kZXI6OmRldGVybWluZUNvbnRlbnRUeXBlKTogVXNlIGlzWE1MTUlNRVR5cGUg
aW4gaXRzCisgICAgICAgIG5ldyBsb2NhdGlvbiBpbiBNSU1FVHlwZVJlZ2lzdHJ5LgorCisgICAg
ICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1RleHRNSU1FVHlwZSk6IEFkZGVkLiBNb3ZlZCBoZXJlIGZyb20K
KyAgICAgICAgRE9NSW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkWE1M
TUlNRVR5cGVDaGFyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1hNTE1JTUVUeXBlKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJl
Z2lzdHJ5Lmg6IEFkZGVkIGlzWE1MTUlNRVR5cGUgYW5kIGlzVGV4dE1JTUVUeXBlLgorICAgICAg
ICBNYWRlIGlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUgcHJpdmF0ZS4KKworICAgICAgICAqIHN2
Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmlzU3VwcG9y
dGVkKTogRGVsZXRlZC4gVGhpcyBmdW5jdGlvbiB3YXMgbmV2ZXIgY2FsbGVkLgorICAgICAgICAq
IHN2Zy9TVkdFbGVtZW50Lmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZSBjaGFuZ2UuCisKKyAgICAg
ICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OnJlc3BvbnNlSXNYTUwpOiBVc2UgaXNYTUxNSU1FVHlwZSBpbiBpdHMgbmV3CisgICAg
ICAgIGxvY2F0aW9uIGluIE1JTUVUeXBlUmVnaXN0cnkuCisKIDIwMTYtMDktMDMgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgQVNDSUlMaXRlcmFs
IGluIHNvbWUgbW9yZSBwbGFjZXMKQEAgLTQ2NjQsNiArNDc1NCwxMCBAQAogICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWF0aE1MUGFkZGVkOjpzdHlsZURpZENoYW5nZSk6IERlbGV0ZWQuIERpdHRv
LgogICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmg6IFVwZGF0
ZSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBhbmQgcmVtb3ZlIG1fYXNjZW50LgogCisgICAgICAgICog
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0RG9jdW1lbnQpOiBVcGRhdGVkIHNpbmNlIHNldFhN
TFN0YW5kYWxvbmUKKyAgICAgICAgbm8gbG9uZ2VyIGNhbiByYWlzZSBhbiBleGNlcHRpb24uCisK
IDIwMTYtMDgtMjcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBVUkxQYXJzZXIgc2hvdWxkIHBhcnNlIHJlbGF0aXZlIFVSTHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCA5MDlmZDhiYjZlYTA3YjE4NDZmYjcyN2FkZWQzYzBhODZlOWQ0Y2Y1Li42YmU4
ZDVlYjU1NjIxMWI0YzBkYTA0MmI0OGZjMGJkZTg5MGU3NTVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTYtMDktMDMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFN0cmVhbWxpbmUgRE9NSW1wbGVtZW50YXRpb24sIGFuZCBtb3ZlIGl0IHRv
IG91ciBuZXcgRE9NIGV4Y2VwdGlvbiBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTI5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTURPTUltcGxlbWVudGF0aW9uLm1tOgorICAg
ICAgICAodW53cmFwKTogQWRkZWQuIFVzZSB0aGlzIGluc3RlYWQgb2YgdGhlIElNUEwgbWFjcm8u
CisgICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGRlYWxsb2NdKTogVXBkYXRlZCB0byB1c2Ug
dW53cmFwLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBoYXNGZWF0dXJlOnZlcnNpb246
XSk6IERpdHRvLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVEb2N1bWVudFR5
cGU6cHVibGljSWQ6c3lzdGVtSWQ6XSk6IFVwZGF0ZWQgdG8gd29yayB3aXRoCisgICAgICAgIEV4
Y2VwdGlvbk9yLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVEb2N1bWVudDpx
dWFsaWZpZWROYW1lOmRvY3R5cGU6XSk6IERpdHRvLgorICAgICAgICAoLVtET01JbXBsZW1lbnRh
dGlvbiBjcmVhdGVDU1NTdHlsZVNoZWV0Om1lZGlhOl0pOiBSZW1vdmVkIGV4Y2VwdGlvbiBsb2dp
YyBzaW5jZQorICAgICAgICB0aGlzIGZ1bmN0aW9uIGNhbiBubyBsb25nZXIgcmFpc2UgYW4gZXhj
ZXB0aW9uLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVIVE1MRG9jdW1lbnQ6
XSk6IFVwZGF0ZWQgdG8gdXNlIHVud3JhcC4KKyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24g
aGFzRmVhdHVyZTo6XSk6IENoYW5nZWQgdG8gY2FsbCB0aGUgbm9uLWRlcHJlY2F0ZWQgdmVyc2lv
bgorICAgICAgICByYXRoZXIgdGhhbiBkdXBsaWNhdGluZyBpdHMgaW1wbGVtZW50YXRpb24uIEFs
c28gbW92ZWQgaW50byB0aGUgY2F0ZWdvcnkgYXMgZGVmaW5lZAorICAgICAgICBpbiB0aGUgaGVh
ZGVyLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVEb2N1bWVudFR5cGU6Ojpd
KTogRGl0dG8uCisgICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGNyZWF0ZURvY3VtZW50Ojo6
XSk6IERpdHRvLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVDU1NTdHlsZVNo
ZWV0OjpdKTogRGl0dG8uCisKKyAgICAgICAgKiBET00vRE9NRG9jdW1lbnQubW06IFJlbW92ZWQg
dW5uZWVkZWQgaW5jbHVkZSBvZiBET01JbXBsZW1lbnRhdGlvbi5oLgorICAgICAgICAoLVtET01E
b2N1bWVudCBzZXRYbWxTdGFuZGFsb25lOl0pOiBVcGRhdGVkIHNpbmNlIHNldFhNTFN0YW5kYWxv
bmUgbm8gbG9uZ2VyIGNhbgorICAgICAgICByYWlzZSBhbiBleGNlcHRpb24uCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfY2FuUHJvdmlkZURv
Y3VtZW50U291cmNlXSk6IFVwZGF0ZWQgdG8gdXNlIGlzVGV4dE1JTUVUeXBlIGluIGl0cyBuZXcK
KyAgICAgICAgbG9jYXRpb24gaW4gTUlNRVR5cGVSZWdpc3RyeSBpbnN0ZWFkIG9mIGluIERPTUlt
cGxlbWVudGF0aW9uLgorCiAyMDE2LTA5LTAyICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNv
bT4KIAogICAgICAgICBOZWVkIHRvIHVwZGF0ZUVkaXRvclN0YXRlIGlmIGFuIGVsZW1lbnQgY2hh
bmdlIGVkaXQtYWJpbGl0eSB3aXRob3V0IGNoYW5naW5nIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGZm
M2I1NTg3OGMyMGQyNDNhMmUwOTNhNGVjZjhkZTk4YmYzODYxZjcuLmM5NmY4NjQwODk0MTc2NmRl
YzFhODg5YTlmNzk2YjJiM2Q5ZTA2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxNi0wOS0wMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
U3RyZWFtbGluZSBET01JbXBsZW1lbnRhdGlvbiwgYW5kIG1vdmUgaXQgdG8gb3VyIG5ldyBET00g
ZXhjZXB0aW9uIHN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYxMjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6Y2FuUHJvdmlkZURv
Y3VtZW50U291cmNlKTogVXBkYXRlZCB0byB1c2UgaXNYTUxNSU1FVHlwZSBpbiBpdHMgbmV3Cisg
ICAgICAgIGxvY2F0aW9uIGluIE1JTUVUeXBlUmVnaXN0cnkgaW5zdGVhZCBvZiBpbiBET01JbXBs
ZW1lbnRhdGlvbi4KKwogMjAxNi0wOS0wMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBCdWlsZCBmaXggYXR0ZW1wdCBhZnRlciByMjA1MzgxLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDJkNTgwOGYyNjAzZmNjZGQzN2M3ZmJlMWEyZmU3NDllMTEzNjYwMWMuLmQzNjJkY2I2Y2Mw
YmJkMTM2OWIwMGFjOGMxMTEzZGJkMTcxNmNkMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAxNi0wOS0wMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
U3RyZWFtbGluZSBET01JbXBsZW1lbnRhdGlvbiwgYW5kIG1vdmUgaXQgdG8gb3VyIG5ldyBET00g
ZXhjZXB0aW9uIHN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYxMjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lUHJveHk6OmlzRGlzcGxheWluZ01hcmt1cERvY3VtZW50KTogVXNlIGlzWE1MTUlN
RVR5cGUgaW4gaXRzCisgICAgICAgIG5ldyBsb2NhdGlvbiBpbiBNSU1FVHlwZVJlZ2lzdHJ5IHJh
dGhlciB0aGFuIGluIERPTUltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZVByb3h5Ojppc0Rpc3BsYXlpbmdQREZEb2N1bWVudCk6IFJlbW92ZWQgdW5uZWVkZWQgcmVkdW5k
YW50CisgICAgICAgIGNoZWNrIGZvciBlbXB0eSBzdHJpbmcsIGFscmVhZHkgZG9uZSBieSBNSU1F
VHlwZVJlZ2lzdHJ5LgorCiAyMDE2LTA5LTAzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTW92ZSBXZWJLaXQyIFdlYkluc3Bl
Y3RvciBmaWxlcyB0byAjcHJhZ21hIG9uY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNzU2MDlmM2U5YzFiMGRmMjE2ZjQ5NmNl
NmFjZjJiMDc4MWRhZmUyLi5hZGVhZDZkMDg1NjFmMjU4YjY0ZjJkN2NiNWZlNmRjYmIxMTQzOWYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0zMjc1LDYgKzMyNzUsOCBAQAogCQk5M0M0RjZFQjExMDhGOUE1MDA5OUQwREIgLyog
QWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNDNEY2RTkxMTA4RjlBNTAwOTlEMERCIC8qIEFjY2Vzc2liaWxpdHlT
Y3JvbGxiYXIuaCAqLzsgfTsKIAkJOTNDQ0YwMjcwQUY2QzUyOTAwMDE4RTg5IC8qIE5hdmlnYXRp
b25BY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzQ0NGMDI2MEFGNkM1MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNDQ0YwNjAwQUY2Q0E3
NjAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDQ0YwNUYwQUY2Q0E3NjAwMDE4RTg5IC8qIE5hdmln
YXRpb25BY3Rpb24uY3BwICovOyB9OworCQk5M0QxOTYzMTFENkNBQjc2MDBGQzdFNDcgLyogRXhj
ZXB0aW9uT3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzRDE5NjMwMUQ2Q0FCNzYwMEZDN0U0NyAvKiBFeGNlcHRpb25Pci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRDE5NjMzMUQ2Q0FCODIwMEZD
N0U0NyAvKiBFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzRDE5NjMyMUQ2Q0FCODIwMEZDN0U0NyAvKiBFeGNlcHRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q0Mzc5RjFENTdC
MTUzMDBBQjg1RUEgLyogSlNNYWluVGhyZWFkRXhlY1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RjkzNEQ4MzExODlGMUVFMDA1MDhENUQgLyog
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTNENDM3QTAxRDU3QjE5QTAwQUI4NUVBIC8qIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QjU2QzlBODFDODkzMTI4MDBDNDU2REYgLyogQ3VzdG9tRWxlbWVudFJlYWN0aW9u
UXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5M0Q0MzdBMTFENTdCM0Y0MDBBQjg1RUEgLyogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQURFMTFGNEEx
OEQ4MzExQjAwNzg5ODNCIC8qIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTA0MzcsNiArMTA0Mzks
OCBAQAogCQk5M0NBNENBMjA5REY5M0ZBMDBERjg2NzcgLyogc3ZnLmNzcyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBzdmcuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0NDRjAy
NjBBRjZDNTI5MDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0aW9uQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzQ0NGMDVGMEFGNkNBNzYwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmlnYXRpb25BY3Rpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0QxOTYzMDFENkNBQjc2MDBGQzdF
NDcgLyogRXhjZXB0aW9uT3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhj
ZXB0aW9uT3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNEMTk2MzIxRDZDQUI4
MjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBFeGNlcHRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNEOUQ1M0IwREEy
N0UxODAwNzcyMTZDIC8qIFJhbmdlQm91bmRhcnlQb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSYW5nZUJvdW5kYXJ5UG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTNFMjI3REIwQUY1ODlBRDAwRDQ4MzI0IC8qIERvY3VtZW50TG9hZGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50TG9hZGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFMjI3REQwQUY1ODlBRDAwRDQ4MzI0IC8q
IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIyOTk2LDExICsyMzAwMCwxMyBAQAogCQkJCUUxMkVEQjdBMEIz
MDhBNzgwMDI3MDRCNiAvKiBFdmVudFRhcmdldC5oICovLAogCQkJCTg1QUZBNzQyMEFBRjI5ODQw
MEU4NDMwNSAvKiBFdmVudFRhcmdldC5pZGwgKi8sCiAJCQkJQ0RDRTVDRDAxNDYzM0JDOTAwRDQ3
Q0NBIC8qIEV2ZW50VGFyZ2V0RmFjdG9yeS5pbiAqLywKKwkJCQk5M0QxOTYzMjFENkNBQjgyMDBG
QzdFNDcgLyogRXhjZXB0aW9uLmggKi8sCiAJCQkJQkM2MEQ4RjAwRDJBMTFFMDAwQjk5MThGIC8q
IEV4Y2VwdGlvbkJhc2UuY3BwICovLAogCQkJCUJDNjBEOEYxMEQyQTExRTAwMEI5OTE4RiAvKiBF
eGNlcHRpb25CYXNlLmggKi8sCiAJCQkJOTM1RkJDRjEwOUJBMTQzQjAwRTIzMEIxIC8qIEV4Y2Vw
dGlvbkNvZGUuaCAqLywKIAkJCQlBN0NBQ0RCMDEzQ0U4NzVCMDBCQkJFM0YgLyogRXhjZXB0aW9u
Q29kZVBsYWNlaG9sZGVyLmNwcCAqLywKIAkJCQlBNzRCQjc2QTEzQkRBODYzMDBGRjdCRjAgLyog
RXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmggKi8sCisJCQkJOTNEMTk2MzAxRDZDQUI3NjAwRkM3
RTQ3IC8qIEV4Y2VwdGlvbk9yLmggKi8sCiAJCQkJRTQ3RTI3NjcxNjAzNkVEQzAwRUUyQUZCIC8q
IEV4dGVuc2lvblN0eWxlU2hlZXRzLmNwcCAqLywKIAkJCQlFNDdFMjc2NDE2MDM2RUQyMDBFRTJB
RkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCAqLywKIAkJCQlCNkQ5RDIzNDE0RUFCRDI2MDA5
MEQ3NUUgLyogRm9jdXNFdmVudC5jcHAgKi8sCkBAIC0yNTU5OCw2ICsyNTYwNCw3IEBACiAJCQkJ
MDc4RTA5MzkxN0QxNkIyQzAwNDIwQUExIC8qIE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTA3OEUwOTE2MTdEMTREMUMwMDQyMEFBMSAvKiBNZWRpYVN0cmVh
bUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkzNzE3RDE2QjJDMDA0MjBBQTEgLyog
TWVkaWFTdHJlYW1Qcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0QxOTYzMzFENkNBQjgy
MDBGQzdFNDcgLyogRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkxNzE3RDE0
RDFDMDA0MjBBQTEgLyogTWVkaWFTdHJlYW1SZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDc4RTA5MTgxN0QxNEQxQzAwNDIwQUExIC8qIE1lZGlhU3RyZWFtVHJhY2suaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA3OEUwOTE5MTdEMTREMUMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbVRyYWNrRXZl
bnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjY2NjgsNiArMjY2NzUsNyBAQAogCQkJCUIyMjI3QUQ3
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm0uaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3QURBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1hYmxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMjIyN0FERDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtRGlzdGFuY2Uu
aCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDE5NjMxMUQ2Q0FCNzYwMEZDN0U0NyAvKiBFeGNlcHRp
b25Pci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBREYwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R1RyYW5zZm9ybUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4QzcxMzZFMTI4OTU2QTMwMDFC
MTA3RSAvKiBTVkdUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyN0FFMjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVFJlZkVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA5
YWEzMzYyODk2NGFmMDQzNTVlMjk4NTQ0YmMxZmY2OGY2NmIzYjAxLi5hNGUwYmMzZTY3MDE4NmJl
ZjI2YTZkYjRmYzlhZjY4YTllNmRjNDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuaApAQCAtMjMsOSArMjMsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCi0jaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAj
aW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIldlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5oIgpAQCAtNjks
NyArNjksOSBAQCBjbGFzcyBOb2RlOwogCiBzdHJ1Y3QgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdl
OwogCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNz
IEV4Y2VwdGlvbk9yOworCit1c2luZyBFeGNlcHRpb25Db2RlID0gaW50OwogCiBzdHJ1Y3QgRXhj
ZXB0aW9uRGV0YWlscyB7CiAgICAgU3RyaW5nIG1lc3NhZ2U7CkBAIC0xODYsNiArMTg4LDkgQEAg
SlNDOjpKU1ZhbHVlIGNyZWF0ZURPTUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEV4Y2VwdGlv
bkNvZGUsIGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRET01FeGNlcHRp
b24oSlNDOjpFeGVjU3RhdGUqLCBFeGNlcHRpb25Db2RlKTsKIHZvaWQgc2V0RE9NRXhjZXB0aW9u
KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJik7CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgRXhjZXB0aW9uT3I8VD4mJik7Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIEV4Y2VwdGlvbk9yPFQ+JiYpOworCiBKU0M6OkpTVmFs
dWUganNTdHJpbmcoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBVUkwmKTsgLy8gZW1wdHkgaWYgdGhl
IFVSTCBpcyBudWxsCiAKIEpTQzo6SlNWYWx1ZSBqc1N0cmluZ09yTnVsbChKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IFN0cmluZyYpOyAvLyBudWxsIGlmIHRoZSBzdHJpbmcgaXMgbnVsbApAQCAtODA4
LDQgKzgxMywyMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRv
TnVsbGFibGVKU051bWJlcihPcHRpb25hbDxUPiBvcHRpb25hbAogICAgIHJldHVybiBvcHRpb25h
bE51bWJlciA/IEpTQzo6anNOdW1iZXIob3B0aW9uYWxOdW1iZXIudmFsdWUoKSkgOiBKU0M6Ompz
TnVsbCgpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFeGNlcHRpb25PcjxUPiYmIHZhbHVlKQoreworICAgIGlmIChVTkxJS0VMWSh2YWx1ZS5oYXNF
eGNlcHRpb24oKSkpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCB2YWx1ZS5leGNl
cHRpb25Db2RlKCkpOworICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOworICAgIH0K
KyAgICByZXR1cm4gdG9KUyhzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB2YWx1ZS50YWtlUmV0dXJuVmFs
dWUoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9K
U05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEV4Y2VwdGlvbk9yPFQ+JiYgdmFsdWUpCit7CisgICAgLy8gRklYTUU6IEl0
J3MgcmVhbGx5IGFubm95aW5nIHRvIGhhdmUgdHdvIG9mIHRoZXNlIGZ1bmN0aW9ucy4gU2hvdWxk
IGZpbmQgYSB3YXkgdG8gY29tYmluZSB0b0pTIGFuZCB0b0pTTmV3bHlDcmVhdGVkLgorICAgIGlm
IChVTkxJS0VMWSh2YWx1ZS5oYXNFeGNlcHRpb24oKSkpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKHN0YXRlLCB2YWx1ZS5leGNlcHRpb25Db2RlKCkpOworICAgICAgICByZXR1cm4gSlNDOjpq
c1VuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9KU05ld2x5Q3JlYXRlZChzdGF0ZSwg
Z2xvYmFsT2JqZWN0LCB2YWx1ZS50YWtlUmV0dXJuVmFsdWUoKSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggM2IzZTMxNjRkNDNjOTI2NDRlZTkxNmRiYWE2MGVjNDRhMGZj
ZTUzZi4uNjE2YmFiMTgyYTgyZjdlNWFhNTQ5ZjBhY2RiNmMwZGJlZDIzMDhjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAg
LTQzNDEsNyArNDM0MSw3IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24KICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhcmdzLmFwcGVuZCgiIC4gTmF0
aXZlVG9KU1ZhbHVlKCRwYXJhbSwgMSwgJGludGVyZmFjZSwgJHBhcmFtTmFtZSwgIm1fZGF0YSIp
IC4gIik7XG4iKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJcbiAgICBOYWtlZFB0cjxFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uO1xuIik7Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0
aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjtcbiIpOwogCiAgICAgICAgICAgICBteSAkcHJvcGVydHlU
b0xvb2t1cCA9ICJJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCBcIiR7ZnVuY3Rpb25OYW1l
fVwiKSI7CiAgICAgICAgICAgICBteSAkaW52b2tlTWV0aG9kID0gIkpTQ2FsbGJhY2tEYXRhOjpD
YWxsYmFja1R5cGU6OkZ1bmN0aW9uT3JPYmplY3QiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5jcHAKaW5kZXgg
NmM2ZTRiZjcxMWFkMTE1ZWU4MjJkMmRjNWRlOWFjN2FhZjE3MDJmMS4uNjU4MmU2MjQ3ZWQ5Yzcx
MjE2ZjExZjU3ZGUxNWRjNDlmNGI1MDk2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suY3BwCkBAIC0xMDgs
NyArMTA4LDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoTm9QYXJhbSgpCiAg
ICAgRXhlY1N0YXRlKiBzdGF0ZSA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMo
KTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogCi0gICAgTmFrZWRQdHI8RXhjZXB0
aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0
dXJuZWRFeGNlcHRpb247CiAgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCBKU0NhbGxi
YWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3Rh
dGUsICJjYWxsYmFja1dpdGhOb1BhcmFtIiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAo
cmV0dXJuZWRFeGNlcHRpb24pCiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihzdGF0ZSwgcmV0dXJu
ZWRFeGNlcHRpb24pOwpAQCAtMTI4LDcgKzEyOCw3IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2s6OmNh
bGxiYWNrV2l0aEFycmF5UGFyYW0oUmVmUHRyPEZsb2F0MzJBcnJheT4gYXJyYXlQYXJhbSkKICAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKHRvSlMoc3RhdGUs
IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCksIGFycmF5UGFyYW0pKTsKIAotICAgIE5ha2VkUHRyPEV4
Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CisgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+
IHJldHVybmVkRXhjZXB0aW9uOwogICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlND
YWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHN0YXRlLCAiY2FsbGJhY2tXaXRoQXJyYXlQYXJhbSIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAg
ICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKQogICAgICAgICByZXBvcnRFeGNlcHRpb24oc3RhdGUs
IHJldHVybmVkRXhjZXB0aW9uKTsKQEAgLTE0OSw3ICsxNDksNyBAQCBib29sIEpTVGVzdENhbGxi
YWNrOjpjYWxsYmFja1dpdGhTZXJpYWxpemVkU2NyaXB0VmFsdWVQYXJhbShSZWZQdHI8U2VyaWFs
aXplZFNjcgogICAgIGFyZ3MuYXBwZW5kKHNyelBhcmFtID8gc3J6UGFyYW0tPmRlc2VyaWFsaXpl
KHN0YXRlLCBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLCAwKSA6IGpzTnVsbCgpKTsKICAgICBhcmdz
LmFwcGVuZChqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgc3RyQXJnKSk7CiAKLSAgICBOYWtlZFB0
cjxFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0
aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKICAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3Ms
IEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhzdGF0ZSwgImNhbGxiYWNrV2l0aFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVBhcmFtIiksIHJl
dHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pCiAgICAgICAgIHJl
cG9ydEV4Y2VwdGlvbihzdGF0ZSwgcmV0dXJuZWRFeGNlcHRpb24pOwpAQCAtMTY5LDcgKzE2OSw3
IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoRE9NU3RyaW5n
TGlzdCogbGlzdFBhcmFtKQogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJn
cy5hcHBlbmQodG9KUyhzdGF0ZSwgbV9kYXRhLT5nbG9iYWxPYmplY3QoKSwgbGlzdFBhcmFtKSk7
CiAKLSAgICBOYWtlZFB0cjxFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOworICAgIE5ha2Vk
UHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKICAgICBtX2RhdGEtPmludm9r
ZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgImNhbGxiYWNrV2l0aFN0cmluZ0xpc3QiKSwgcmV0
dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikKICAgICAgICAgcmVw
b3J0RXhjZXB0aW9uKHN0YXRlLCByZXR1cm5lZEV4Y2VwdGlvbik7CkBAIC0xODksNyArMTg5LDcg
QEAgYm9vbCBKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoQm9vbGVhbihib29sIGJvb2xQYXJh
bSkKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKGpzQm9v
bGVhbihib29sUGFyYW0pKTsKIAotICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNl
cHRpb247CisgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwog
ICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNr
VHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAiY2FsbGJhY2tXaXRo
Qm9vbGVhbiIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9u
KQogICAgICAgICByZXBvcnRFeGNlcHRpb24oc3RhdGUsIHJldHVybmVkRXhjZXB0aW9uKTsKQEAg
LTIxMCw3ICsyMTAsNyBAQCBib29sIEpTVGVzdENhbGxiYWNrOjpjYWxsYmFja1JlcXVpcmVzVGhp
c1RvUGFzcyhpbnQzMl90IGxvbmdQYXJhbSwgVGVzdE5vZGUqIHRlcwogICAgIGFyZ3MuYXBwZW5k
KGpzTnVtYmVyKGxvbmdQYXJhbSkpOwogICAgIGFyZ3MuYXBwZW5kKHRvSlMoc3RhdGUsIG1fZGF0
YS0+Z2xvYmFsT2JqZWN0KCksIHRlc3ROb2RlUGFyYW0pKTsKIAotICAgIE5ha2VkUHRyPEV4Y2Vw
dGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CisgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJl
dHVybmVkRXhjZXB0aW9uOwogICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxs
YmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0
YXRlLCAiY2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3MiKSwgcmV0dXJuZWRFeGNlcHRpb24pOwog
ICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKHN0YXRl
LCByZXR1cm5lZEV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5jcHAK
aW5kZXggNDgzNzY3MTcwODIyYWVlNjk4NmQwYTEyN2ZlZjRjY2JlM2Y3NzA2Ni4uY2FmOTg4MjZh
MjkyNTJhOTNhMDA4Yjg0NDEwNzE5MDI3MjQ3N2JmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFj
a0Z1bmN0aW9uLmNwcApAQCAtNzIsNyArNzIsNyBAQCBib29sIEpTVGVzdENhbGxiYWNrRnVuY3Rp
b246OmNhbGxiYWNrV2l0aE5vUGFyYW0oKQogICAgIEV4ZWNTdGF0ZSogc3RhdGUgPSBtX2RhdGEt
Pmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIg
YXJnczsKIAotICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CisgICAg
TmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwogICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CiAgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCBKU0NhbGxiYWNr
RGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2Vw
dGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKQpAQCAtOTMsNyArOTMsNyBAQCBib29s
IEpTVGVzdENhbGxiYWNrRnVuY3Rpb246OmNhbGxiYWNrV2l0aEFycmF5UGFyYW0oUmVmUHRyPEZs
b2F0MzJBcnJheT4gYXJyYXlQYQogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAg
YXJncy5hcHBlbmQodG9KUyhzdGF0ZSwgbV9kYXRhLT5nbG9iYWxPYmplY3QoKSwgYXJyYXlQYXJh
bSkpOwogCi0gICAgTmFrZWRQdHI8RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKKyAgICBO
YWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CiAgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKICAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tE
YXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0
aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pCkBAIC0xMTUsNyArMTE1LDcgQEAgYm9v
bCBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpjYWxsYmFja1dpdGhTZXJpYWxpemVkU2NyaXB0VmFs
dWVQYXJhbShSZWZQdHI8U2VyaWEKICAgICBhcmdzLmFwcGVuZChzcnpQYXJhbSA/IHNyelBhcmFt
LT5kZXNlcmlhbGl6ZShzdGF0ZSwgbV9kYXRhLT5nbG9iYWxPYmplY3QoKSwgMCkgOiBqc051bGwo
KSk7CiAgICAgYXJncy5hcHBlbmQoanNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIHN0ckFyZykpOwog
Ci0gICAgTmFrZWRQdHI8RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0
cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpD
YWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9uKTsK
ICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pCkBAIC0xMzYsNyArMTM2LDcgQEAgYm9vbCBKU1Rl
c3RDYWxsYmFja0Z1bmN0aW9uOjpjYWxsYmFja1dpdGhTdHJpbmdMaXN0KERPTVN0cmluZ0xpc3Qq
IGxpc3RQYXJhbSkKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBw
ZW5kKHRvSlMoc3RhdGUsIG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCksIGxpc3RQYXJhbSkpOwogCi0g
ICAgTmFrZWRQdHI8RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxK
U0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxs
YmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9uKTsKICAg
ICBpZiAocmV0dXJuZWRFeGNlcHRpb24pCkBAIC0xNTcsNyArMTU3LDcgQEAgYm9vbCBKU1Rlc3RD
YWxsYmFja0Z1bmN0aW9uOjpjYWxsYmFja1dpdGhCb29sZWFuKGJvb2wgYm9vbFBhcmFtKQogICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQoanNCb29sZWFuKGJv
b2xQYXJhbSkpOwogCi0gICAgTmFrZWRQdHI8RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsK
KyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2Fs
bGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVk
RXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pCkBAIC0xNzksNyArMTc5LDcg
QEAgYm9vbCBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpjYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFz
cyhpbnQzMl90IGxvbmdQYXJhbSwgVGVzdE4KICAgICBhcmdzLmFwcGVuZChqc051bWJlcihsb25n
UGFyYW0pKTsKICAgICBhcmdzLmFwcGVuZCh0b0pTKHN0YXRlLCBtX2RhdGEtPmdsb2JhbE9iamVj
dCgpLCB0ZXN0Tm9kZVBhcmFtKSk7CiAKLSAgICBOYWtlZFB0cjxFeGNlcHRpb24+IHJldHVybmVk
RXhjZXB0aW9uOworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlv
bjsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2so
YXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIo
KSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCmluZGV4IGFmYTM2Mjg4MjRhMGZhZjMw
NGQ4ZGJiY2Y1NGUyYjNjYTg3MTg5MTIuLmVmYmU1MWZmZjU5ZDc0ZTkzZDM5NGU4YzkwNTc1NWQ0
MTZiODA3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcApAQCAt
MjUsMjUgKzI1LDI1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE9NSW1wbGVt
ZW50YXRpb24uaCIKIAotI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCiAjaW5jbHVkZSAiQ1NTU3R5
bGVTaGVldC5oIgorI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRU
eXBlLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
KyNpbmNsdWRlICJGVFBEaXJlY3RvcnlEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgot
I2luY2x1ZGUgIkZUUERpcmVjdG9yeURvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTEhlYWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRpdGxlRWxl
bWVudC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEb2N1bWVudC5oIgor
I2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNp
bmNsdWRlICJNZWRpYURvY3VtZW50LmgiCi0jaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNs
dWRlICJNZWRpYUxpc3QuaCIKLSNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0
YS5oIgogI2luY2x1ZGUgIlBsdWdpbkRvY3VtZW50LmgiCkBAIC03Myw2ICs3Myw3IEBAIHN0YXRp
YyB2b2lkIGFkZFN0cmluZyhGZWF0dXJlU2V0JiBzZXQsIGNvbnN0IGNoYXIqIHN0cmluZykKIH0K
IAogI2lmIEVOQUJMRShWSURFTykKKwogY2xhc3MgRE9NSW1wbGVtZW50YXRpb25TdXBwb3J0c1R5
cGVDbGllbnQgOiBwdWJsaWMgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQgewogcHVibGlj
OgogICAgIERPTUltcGxlbWVudGF0aW9uU3VwcG9ydHNUeXBlQ2xpZW50KGJvb2wgbmVlZHNIYWNr
cywgY29uc3QgU3RyaW5nJiBob3N0KQpAQCAtODgsNiArODksNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9uZWVkc0hhY2tzOwogICAgIFN0cmluZyBtX2hvc3Q7CiB9OworCiAjZW5kaWYKIAogc3Rh
dGljIGJvb2wgaXNTdXBwb3J0ZWRTVkcxMEZlYXR1cmUoY29uc3QgU3RyaW5nJiBmZWF0dXJlLCBj
b25zdCBTdHJpbmcmIHZlcnNpb24pCkBAIC0yMDcsMTAzICsyMDksNTggQEAgYm9vbCBET01JbXBs
ZW1lbnRhdGlvbjo6aGFzRmVhdHVyZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmlu
ZyYgdmVyc2lvbikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPERvY3VtZW50VHlwZT4g
RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50VHlwZShjb25zdCBTdHJpbmcmIHF1YWxp
ZmllZE5hbWUsCi0gICAgY29uc3QgU3RyaW5nJiBwdWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0
ZW1JZCwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25PcjxSZWY8RG9jdW1lbnRUeXBlPj4g
RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50VHlwZShjb25zdCBTdHJpbmcmIHF1YWxp
ZmllZE5hbWUsIGNvbnN0IFN0cmluZyYgcHVibGljSWQsIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQp
CiB7Ci0gICAgU3RyaW5nIHByZWZpeCwgbG9jYWxOYW1lOwotICAgIGlmICghRG9jdW1lbnQ6OnBh
cnNlUXVhbGlmaWVkTmFtZShxdWFsaWZpZWROYW1lLCBwcmVmaXgsIGxvY2FsTmFtZSwgZWMpKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBTdHJpbmcg
cHJlZml4OworICAgIFN0cmluZyBsb2NhbE5hbWU7CisgICAgRG9jdW1lbnQ6OnBhcnNlUXVhbGlm
aWVkTmFtZShxdWFsaWZpZWROYW1lLCBwcmVmaXgsIGxvY2FsTmFtZSwgZWMpOworICAgIGlmIChl
YykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbihlYyk7CiAKICAgICByZXR1cm4gRG9jdW1lbnRU
eXBlOjpjcmVhdGUobV9kb2N1bWVudCwgcXVhbGlmaWVkTmFtZSwgcHVibGljSWQsIHN5c3RlbUlk
KTsKIH0KIAotRE9NSW1wbGVtZW50YXRpb24qIERPTUltcGxlbWVudGF0aW9uOjpnZXRJbnRlcmZh
Y2UoY29uc3QgU3RyaW5nJiAvKmZlYXR1cmUqLykKK3N0YXRpYyBpbmxpbmUgUmVmPFhNTERvY3Vt
ZW50PiBjcmVhdGVYTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSkKIHsKLSAg
ICByZXR1cm4gMDsKKyAgICBpZiAobmFtZXNwYWNlVVJJID09IFNWR05hbWVzOjpzdmdOYW1lc3Bh
Y2VVUkkpCisgICAgICAgIHJldHVybiBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgp
KTsKKyAgICBpZiAobmFtZXNwYWNlVVJJID09IEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkp
CisgICAgICAgIHJldHVybiBYTUxEb2N1bWVudDo6Y3JlYXRlWEhUTUwobnVsbHB0ciwgVVJMKCkp
OworICAgIHJldHVybiBYTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgpKTsKIH0KIAot
UmVmUHRyPFhNTERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29u
c3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksCi0gICAgY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1l
LCBEb2N1bWVudFR5cGUqIGRvY3R5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8
UmVmPFhNTERvY3VtZW50Pj4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0
IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIERvY3Vt
ZW50VHlwZSogZG9jdW1lbnRUeXBlKQogewotICAgIFJlZlB0cjxYTUxEb2N1bWVudD4gZG9jOwot
ICAgIGlmIChuYW1lc3BhY2VVUkkgPT0gU1ZHTmFtZXM6OnN2Z05hbWVzcGFjZVVSSSkKLSAgICAg
ICAgZG9jID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZSgwLCBVUkwoKSk7Ci0gICAgZWxzZSBpZiAobmFt
ZXNwYWNlVVJJID09IEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpCi0gICAgICAgIGRvYyA9
IFhNTERvY3VtZW50OjpjcmVhdGVYSFRNTCgwLCBVUkwoKSk7Ci0gICAgZWxzZQotICAgICAgICBk
b2MgPSBYTUxEb2N1bWVudDo6Y3JlYXRlKDAsIFVSTCgpKTsKKyAgICBhdXRvIGRvY3VtZW50ID0g
Y3JlYXRlWE1MRG9jdW1lbnQobmFtZXNwYWNlVVJJKTsKIAotICAgIGRvYy0+c2V0U2VjdXJpdHlP
cmlnaW5Qb2xpY3kobV9kb2N1bWVudC5zZWN1cml0eU9yaWdpblBvbGljeSgpKTsKKyAgICBkb2N1
bWVudC0+c2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3kobV9kb2N1bWVudC5zZWN1cml0eU9yaWdpblBv
bGljeSgpKTsKIAotICAgIFJlZlB0cjxOb2RlPiBkb2N1bWVudEVsZW1lbnQ7CisgICAgUmVmUHRy
PEVsZW1lbnQ+IGRvY3VtZW50RWxlbWVudDsKICAgICBpZiAoIXF1YWxpZmllZE5hbWUuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIGRvY3VtZW50RWxlbWVudCA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKG5h
bWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgZWMpOworICAgICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKKyAgICAgICAgZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnRO
UyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIGVjKTsKICAgICAgICAgaWYgKGVjKQotICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uKGVj
KTsKICAgICB9CiAKLSAgICBpZiAoZG9jdHlwZSkKLSAgICAgICAgZG9jLT5hcHBlbmRDaGlsZCgq
ZG9jdHlwZSk7CisgICAgaWYgKGRvY3VtZW50VHlwZSkKKyAgICAgICAgZG9jdW1lbnQtPmFwcGVu
ZENoaWxkKCpkb2N1bWVudFR5cGUpOwogICAgIGlmIChkb2N1bWVudEVsZW1lbnQpCi0gICAgICAg
IGRvYy0+YXBwZW5kQ2hpbGQoKmRvY3VtZW50RWxlbWVudCk7CisgICAgICAgIGRvY3VtZW50LT5h
cHBlbmRDaGlsZCgqZG9jdW1lbnRFbGVtZW50KTsKIAotICAgIHJldHVybiBkb2M7CisgICAgcmV0
dXJuIFdURk1vdmUoZG9jdW1lbnQpOwogfQogCi1SZWY8Q1NTU3R5bGVTaGVldD4gRE9NSW1wbGVt
ZW50YXRpb246OmNyZWF0ZUNTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBtZWRpYSwgRXhjZXB0aW9uQ29kZSYpCitSZWY8Q1NTU3R5bGVTaGVldD4gRE9NSW1wbGVtZW50
YXRpb246OmNyZWF0ZUNTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBt
ZWRpYSkKIHsKICAgICAvLyBGSVhNRTogVGl0bGUgc2hvdWxkIGJlIHNldC4KICAgICAvLyBGSVhN
RTogTWVkaWEgY291bGQgaGF2ZSB3cm9uZyBzeW50YXgsIGluIHdoaWNoIGNhc2Ugd2Ugc2hvdWxk
IGdlbmVyYXRlIGFuIGV4Y2VwdGlvbi4KLSAgICBSZWY8Q1NTU3R5bGVTaGVldD4gc2hlZXQgPSBD
U1NTdHlsZVNoZWV0OjpjcmVhdGUoU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoKSk7CisgICAg
YXV0byBzaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShTdHlsZVNoZWV0Q29udGVudHM6OmNy
ZWF0ZSgpKTsKICAgICBzaGVldC0+c2V0TWVkaWFRdWVyaWVzKE1lZGlhUXVlcnlTZXQ6OmNyZWF0
ZUFsbG93aW5nRGVzY3JpcHRpb25TeW50YXgobWVkaWEpKTsKICAgICByZXR1cm4gc2hlZXQ7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkWE1MTUlNRVR5cGVDaGFyKFVDaGFyIGMpCi17
Ci0gICAgLy8gVmFsaWQgY2hhcmFjdGVycyBwZXIgUkZDcyAzMDIzIGFuZCAyMDQ1OgotICAgIC8v
IDAtOWEtekEtWl8tK34hJF57fXwuJSdgIyYqCi0gICAgcmV0dXJuIGlzQVNDSUlBbHBoYW51bWVy
aWMoYykgfHwgYyA9PSAnIScgfHwgYyA9PSAnIycgfHwgYyA9PSAnJCcgfHwgYyA9PSAnJScgfHwg
YyA9PSAnJicgfHwgYyA9PSAnXCcnIHx8IGMgPT0gJyonIHx8IGMgPT0gJysnCi0gICAgICAgIHx8
IGMgPT0gJy0nIHx8IGMgPT0gJy4nIHx8IGMgPT0gJ14nIHx8IGMgPT0gJ18nIHx8IGMgPT0gJ2An
IHx8IGMgPT0gJ3snIHx8IGMgPT0gJ3wnIHx8IGMgPT0gJ30nIHx8IGMgPT0gJ34nOwotfQotCi1i
b29sIERPTUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpCi17Ci0gICAgLy8gRklYTUU6IENhbiB3ZSBtb3ZlIHRoaXMgbG9naWMgdG8gTUlNRVR5cGVS
ZWdpc3RyeSBhbmQgaGF2ZSB0aGlzIGp1c3QgYmUgYSBzaW5nbGUgZnVuY3Rpb24gY2FsbD8KLQot
ICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQveG1s
IikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlv
bi94bWwiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQv
eHNsIikpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKCFtaW1lVHlwZS5lbmRzV2l0
aCgiK3htbCIsIGZhbHNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc2l6ZV90IHNs
YXNoUG9zaXRpb24gPSBtaW1lVHlwZS5maW5kKCcvJyk7Ci0gICAgLy8gVGFrZSBpbnRvIGFjY291
bnQgdGhlICcreG1sJyBlbmRpbmcgb2YgbWltZVR5cGUuCi0gICAgaWYgKHNsYXNoUG9zaXRpb24g
PT0gbm90Rm91bmQgfHwgIXNsYXNoUG9zaXRpb24gfHwgc2xhc2hQb3NpdGlvbiA9PSBtaW1lVHlw
ZS5sZW5ndGgoKSAtIDUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEFnYWluLCBt
aW1lVHlwZSBlbmRzIHdpdGggJyt4bWwnLCBubyBuZWVkIHRvIGNoZWNrIHRoZSB2YWxpZGl0eSBv
ZiB0aGF0IHN1YnN0cmluZy4KLSAgICBzaXplX3QgbWltZUxlbmd0aCA9IG1pbWVUeXBlLmxlbmd0
aCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWltZUxlbmd0aCAtIDQ7ICsraSkgewot
ICAgICAgICBpZiAoIWlzVmFsaWRYTUxNSU1FVHlwZUNoYXIobWltZVR5cGVbaV0pICYmIGkgIT0g
c2xhc2hQb3NpdGlvbikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBET01JbXBsZW1lbnRhdGlvbjo6aXNUZXh0TUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsKLSAgICAvLyBGSVhNRTogQ2FuIHdlIG1vdmUgdGhp
cyBsb2dpYyB0byBNSU1FVHlwZVJlZ2lzdHJ5IGFuZCBoYXZlIHRoaXMganVzdCBiZSBhIHNpbmds
ZSBmdW5jdGlvbiBjYWxsPwotCi0gICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9y
dGVkSmF2YVNjcmlwdE1JTUVUeXBlKG1pbWVUeXBlKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL2pzb24iKSAvLyBSZW5kZXIg
SlNPTiBhcyB0ZXh0L3BsYWluLgotICAgICAgICB8fCAobWltZVR5cGUuc3RhcnRzV2l0aCgidGV4
dC8iLCBmYWxzZSkKLSAgICAgICAgICAgICYmICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShtaW1lVHlwZSwgInRleHQvaHRtbCIpCi0gICAgICAgICAgICAmJiAhZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L3htbCIpCi0gICAgICAgICAgICAmJiAhZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L3hzbCIpKTsKLX0KLQog
UmVmPEhUTUxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVudChj
b25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIGF1dG8gZG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6
OmNyZWF0ZShudWxscHRyLCBVUkwoKSk7CkBAIC0zMjEsNiArMjc4LDkgQEAgUmVmPEhUTUxEb2N1
bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcm
IHRpdGxlKQogCiBSZWY8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVu
dChjb25zdCBTdHJpbmcmIHR5cGUsIEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiB7Cisg
ICAgLy8gRklYTUU6IENvbmZ1c2luZyB0byBoYXZlIHRoaXMgaGVyZSB3aXRoIHB1YmxpYyBET00g
QVBJcyBmb3IgY3JlYXRpbmcgZG9jdW1lbnRzLiBUaGlzIGlzIGRpZmZlcmVudCBlbm91Z2ggdGhh
dCBpdCBzaG91bGQgcGVyaGFwcyBiZSBtb3ZlZC4KKyAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlv
biBpcyBkb2luZyBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb25zIG9uIE1JTUUgdHlwZXMuIFNo
b3VsZCBkbyBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSBpbnN0ZWFkLgorCiAgICAgLy8g
UGx1Z2lucyBjYW5ub3QgdGFrZSBIVE1MIGFuZCBYSFRNTCBmcm9tIHVzLCBhbmQgd2UgZG9uJ3Qg
ZXZlbiBuZWVkIHRvIGluaXRpYWxpemUgdGhlIHBsdWdpbiBkYXRhYmFzZSBmb3IgdGhvc2UuCiAg
ICAgaWYgKHR5cGUgPT0gInRleHQvaHRtbCIpCiAgICAgICAgIHJldHVybiBIVE1MRG9jdW1lbnQ6
OmNyZWF0ZShmcmFtZSwgdXJsKTsKQEAgLTMzOCw3ICsyOTgsNyBAQCBSZWY8RG9jdW1lbnQ+IERP
TUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIHR5cGUsIEZyYW1l
KiBmcmFtZQogICAgICAgICByZXR1cm4gSW1hZ2VEb2N1bWVudDo6Y3JlYXRlKCpmcmFtZSwgdXJs
KTsKIAogICAgIFBsdWdpbkRhdGEqIHBsdWdpbkRhdGEgPSBudWxscHRyOwotICAgIFBsdWdpbkRh
dGE6OkFsbG93ZWRQbHVnaW5UeXBlcyBhbGxvd2VkUGx1Z2luVHlwZXMgPSBQbHVnaW5EYXRhOjpP
bmx5QXBwbGljYXRpb25QbHVnaW5zOworICAgIGF1dG8gYWxsb3dlZFBsdWdpblR5cGVzID0gUGx1
Z2luRGF0YTo6T25seUFwcGxpY2F0aW9uUGx1Z2luczsKICAgICBpZiAoZnJhbWUgJiYgZnJhbWUt
PnBhZ2UoKSkgewogICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLnN1YmZyYW1lTG9hZGVyKCku
YWxsb3dQbHVnaW5zKCkpCiAgICAgICAgICAgICBhbGxvd2VkUGx1Z2luVHlwZXMgPSBQbHVnaW5E
YXRhOjpBbGxQbHVnaW5zOwpAQCAtMzY5LDEzICszMjksMTMgQEAgUmVmPERvY3VtZW50PiBET01J
bXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0eXBlLCBGcmFtZSog
ZnJhbWUKICAgICAvLyBhbmQgYWxzbyBzZXJ2ZXMgYXMgYW4gb3B0aW1pemF0aW9uIHRvIHByZXZl
bnQgbG9hZGluZyB0aGUgcGx1Zy1pbiBkYXRhYmFzZSBpbiB0aGUgY29tbW9uIGNhc2UuCiAgICAg
aWYgKHR5cGUgIT0gInRleHQvcGxhaW4iICYmICgocGx1Z2luRGF0YSAmJiBwbHVnaW5EYXRhLT5z
dXBwb3J0c1dlYlZpc2libGVNaW1lVHlwZSh0eXBlLCBhbGxvd2VkUGx1Z2luVHlwZXMpKSB8fCAo
ZnJhbWUgJiYgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEFsd2F5c1VzZVBsdWdpbkRv
Y3VtZW50KHR5cGUpKSkpCiAgICAgICAgIHJldHVybiBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKGZy
YW1lLCB1cmwpOwotICAgIGlmIChpc1RleHRNSU1FVHlwZSh0eXBlKSkKKyAgICBpZiAoTUlNRVR5
cGVSZWdpc3RyeTo6aXNUZXh0TUlNRVR5cGUodHlwZSkpCiAgICAgICAgIHJldHVybiBUZXh0RG9j
dW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKIAogICAgIGlmICh0eXBlID09ICJpbWFnZS9zdmcr
eG1sIikKICAgICAgICAgcmV0dXJuIFNWR0RvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CiAK
LSAgICBpZiAoaXNYTUxNSU1FVHlwZSh0eXBlKSkKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6
aXNYTUxNSU1FVHlwZSh0eXBlKSkKICAgICAgICAgcmV0dXJuIFhNTERvY3VtZW50OjpjcmVhdGUo
ZnJhbWUsIHVybCk7CiAKICAgICByZXR1cm4gSFRNTERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVy
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCmluZGV4IDg4ODBjNGM1MGMx
Mjk2YjZhOTJjY2I4NTBhYTdkMGU1YzdlZmM1OTQuLmQ4NmFkZjA3YmYxYTIyMGEyZDEyODZkNGZj
MTVhM2IzNzlhY2FiODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1l
bnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCkBA
IC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5v
cmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMjMsNiArMjMsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkV4Y2Vw
dGlvbk9yLmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzYsMjUgKzM3LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlcmVmKCkgeyBtX2RvY3Vt
ZW50LmRlcmVmKCk7IH0KICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3Vt
ZW50OyB9CiAKLSAgICAvLyBET00gbWV0aG9kcyAmIGF0dHJpYnV0ZXMgZm9yIERPTUltcGxlbWVu
dGF0aW9uCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaGFzRmVhdHVyZShjb25zdCBT
dHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgUmVmUHRyPERvY3VtZW50VHlwZT4gY3JlYXRlRG9jdW1lbnRUeXBlKGNvbnN0IFN0cmluZyYg
cXVhbGlmaWVkTmFtZSwgY29uc3QgU3RyaW5nJiBwdWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0
ZW1JZCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxYTUxEb2N1
bWVudD4gY3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0
cmluZyYgcXVhbGlmaWVkTmFtZSwgRG9jdW1lbnRUeXBlKiwgRXhjZXB0aW9uQ29kZSYpOwotCi0g
ICAgRE9NSW1wbGVtZW50YXRpb24qIGdldEludGVyZmFjZShjb25zdCBTdHJpbmcmIGZlYXR1cmUp
OwotCi0gICAgLy8gRnJvbSB0aGUgRE9NSW1wbGVtZW50YXRpb25DU1MgaW50ZXJmYWNlCi0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGVDU1NTdHlsZVNo
ZWV0KGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgbWVkaWEsIEV4Y2VwdGlvbkNv
ZGUmKTsKLQotICAgIC8vIEZyb20gdGhlIEhUTUxET01JbXBsZW1lbnRhdGlvbiBpbnRlcmZhY2UK
KyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWY8RG9jdW1lbnRUeXBlPj4gY3JlYXRl
RG9jdW1lbnRUeXBlKGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgU3RyaW5nJiBw
dWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhj
ZXB0aW9uT3I8UmVmPFhNTERvY3VtZW50Pj4gY3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBu
YW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgRG9jdW1lbnRUeXBlKik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEhUTUxEb2N1bWVudD4gY3JlYXRlSFRNTERvY3VtZW50
KGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGhh
c0ZlYXR1cmUoY29uc3QgU3RyaW5nJiBmZWF0dXJlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlQ1NTU3R5
bGVTaGVldChjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIG1lZGlhKTsKIAotICAg
IC8vIE90aGVyIG1ldGhvZHMgKG5vdCBwYXJ0IG9mIERPTSkKICAgICBzdGF0aWMgUmVmPERvY3Vt
ZW50PiBjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBGcmFtZSosIGNvbnN0
IFVSTCYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNYTUxNSU1FVHlwZShj
b25zdCBTdHJpbmcmIE1JTUVUeXBlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBp
c1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKTsKLQogcHJpdmF0ZToKICAgICBE
b2N1bWVudCYgbV9kb2N1bWVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RE9NSW1wbGVtZW50YXRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0
aW9uLmlkbAppbmRleCBkYTI2Y2QwZGE2NzVmZGY2YTE1ODFiMWM5MjkwODU3MmViM2YwYjdjLi43
NDM1NjEzMzVkMjM4OTc4OWVhZGJiYmM2NWQ5NDliZDAwZjllMzUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGwKQEAgLTIzLDE1ICsyMywxNCBAQAogICAgIEdlbmVy
YXRlSXNSZWFjaGFibGU9SW1wbERvY3VtZW50LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUsCiBdIGludGVyZmFjZSBET01JbXBsZW1lbnRhdGlvbiB7CisgICAgW05ld09iamVjdF0gRG9j
dW1lbnRUeXBlIGNyZWF0ZURvY3VtZW50VHlwZShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSwgRE9N
U3RyaW5nIHB1YmxpY0lkLCBET01TdHJpbmcgc3lzdGVtSWQpOworICAgIFtOZXdPYmplY3RdIFhN
TERvY3VtZW50IGNyZWF0ZURvY3VtZW50KERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBbVHJlYXRO
dWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBxdWFsaWZpZWROYW1lLCBvcHRpb25hbCBEb2N1
bWVudFR5cGU/IGRvY3R5cGUgPSBudWxsKTsKKyAgICBbTmV3T2JqZWN0XSBIVE1MRG9jdW1lbnQg
Y3JlYXRlSFRNTERvY3VtZW50KG9wdGlvbmFsIERPTVN0cmluZyB0aXRsZSk7CisKKyAgICAvLyBG
SVhNRTogTGF0ZXN0IERPTSBzcGVjaWZpY2F0aW9uIHNheXMgdGhpcyBzaG91bGQgaWdub3JlIGFs
bCBhcmd1bWVudHMgYW5kIGFsd2F5cyByZXR1cm4gdHJ1ZS4KICAgICAvLyBGSVhNRTogVXNpbmcg
InVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3JvbmcuCiAgICAgYm9v
bGVhbiBoYXNGZWF0dXJlKG9wdGlvbmFsIERPTVN0cmluZyBmZWF0dXJlID0gInVuZGVmaW5lZCIs
IFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gb3B0aW9uYWwgRE9NU3RyaW5nIHZlcnNpb24gPSAi
dW5kZWZpbmVkIik7CiAKLSAgICBbUmFpc2VzRXhjZXB0aW9uLCBOZXdPYmplY3RdIERvY3VtZW50
VHlwZSBjcmVhdGVEb2N1bWVudFR5cGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIERPTVN0cmlu
ZyBwdWJsaWNJZCwgRE9NU3RyaW5nIHN5c3RlbUlkKTsKLQotICAgIFtOZXdPYmplY3QsIFJhaXNl
c0V4Y2VwdGlvbl0gWE1MRG9jdW1lbnQgY3JlYXRlRG9jdW1lbnQoRE9NU3RyaW5nPyBuYW1lc3Bh
Y2VVUkksIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUs
IG9wdGlvbmFsIERvY3VtZW50VHlwZT8gZG9jdHlwZSA9IG51bGwpOwotCiAgICAgLy8gRklYTUU6
IFVzaW5nICJ1bmRlZmluZWQiIGFzIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlIGlzIHdyb25nLgot
ICAgIFtSYWlzZXNFeGNlcHRpb25dIENTU1N0eWxlU2hlZXQgY3JlYXRlQ1NTU3R5bGVTaGVldChv
cHRpb25hbCBET01TdHJpbmcgdGl0bGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgRE9NU3RyaW5n
IG1lZGlhID0gInVuZGVmaW5lZCIpOwotCi0gICAgW05ld09iamVjdF0gSFRNTERvY3VtZW50IGNy
ZWF0ZUhUTUxEb2N1bWVudChvcHRpb25hbCBET01TdHJpbmcgdGl0bGUpOworICAgIENTU1N0eWxl
U2hlZXQgY3JlYXRlQ1NTU3R5bGVTaGVldChvcHRpb25hbCBET01TdHJpbmcgdGl0bGUgPSAidW5k
ZWZpbmVkIiwgb3B0aW9uYWwgRE9NU3RyaW5nIG1lZGlhID0gInVuZGVmaW5lZCIpOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDdhOGZiZDhlZWUwNGY5OWEwZDU3ZDJmODFhNTk2MDll
MTcwNTdkNDUuLmI2Y2U5NWVkN2RiOGVkYmZhZWQ0NjVjNTNkZTE4ZGMyNzg1M2IzMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTM3MywxMSArMTM3Myw2IEBAIHZvaWQgRG9jdW1lbnQ6
OnNldENvbnRlbnRMYW5ndWFnZShjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQogCiB2b2lkIERvY3Vt
ZW50OjpzZXRYTUxWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7Ci0gICAgaWYgKCFpbXBsZW1lbnRhdGlvbigpLmhhc0ZlYXR1cmUoIlhNTCIsIFN0cmlu
ZygpKSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCiAgICAgaWYgKCFYTUxEb2N1bWVudFBhcnNlcjo6c3VwcG9ydHNYTUxWZXJzaW9u
KHZlcnNpb24pKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJl
dHVybjsKQEAgLTEzODYsMTMgKzEzODEsOCBAQCB2b2lkIERvY3VtZW50OjpzZXRYTUxWZXJzaW9u
KGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgbV94bWxWZXJz
aW9uID0gdmVyc2lvbjsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2V0WE1MU3RhbmRhbG9uZShib29s
IHN0YW5kYWxvbmUsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBEb2N1bWVudDo6c2V0WE1MU3Rh
bmRhbG9uZShib29sIHN0YW5kYWxvbmUpCiB7Ci0gICAgaWYgKCFpbXBsZW1lbnRhdGlvbigpLmhh
c0ZlYXR1cmUoIlhNTCIsIFN0cmluZygpKSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURf
RVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgbV94bWxTdGFuZGFsb25lID0gc3Rh
bmRhbG9uZSA/IFN0YW5kYWxvbmUgOiBOb3RTdGFuZGFsb25lOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCmluZGV4IDBkOWY5YmNiNTUwZjcxMDg1Y2RmODNkZmEzZjE2YTkyOTY2MjVhODkuLjJlZjVk
NTU4ODk4MzlhZDZhY2E0ZjU5ZGIyZjI1NjgwYmI5Yjc3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC00NDIsNyArNDQyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRYTUxFbmNvZGluZyhj
b25zdCBTdHJpbmcmIGVuY29kaW5nKSB7IG1feG1sRW5jb2RpbmcgPSBlbmNvZGluZzsgfSAvLyBy
ZWFkLW9ubHkgcHJvcGVydHksIG9ubHkgdG8gYmUgc2V0IGZyb20gWE1MRG9jdW1lbnRQYXJzZXIK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFhNTFZlcnNpb24oY29uc3QgU3RyaW5nJiwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0WE1MU3RhbmRhbG9uZShi
b29sLCBFeGNlcHRpb25Db2RlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRYTUxTdGFu
ZGFsb25lKGJvb2wpOwogICAgIHZvaWQgc2V0SGFzWE1MRGVjbGFyYXRpb24oYm9vbCBoYXNYTUxE
ZWNsYXJhdGlvbikgeyBtX2hhc1hNTERlY2xhcmF0aW9uID0gaGFzWE1MRGVjbGFyYXRpb24gPyAx
IDogMDsgfQogCiAgICAgU3RyaW5nIGRvY3VtZW50VVJJKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1
bWVudFVSSTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5kZXggYzhlMDYxNDllNzViNzE0ZDNj
NmEwOWM3YjQ1MGU0MjJkMjdkZmMzYy4uZTlmZjhiMTkxZjhlNTE5M2QxYmZmZGZkYWU0MmM2ODRm
NDEwNmU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC01Myw3ICs1Myw3IEBACiAKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyB4bWxFbmNvZGluZzsKICAgICBbU2V0dGVy
UmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyB4bWxWZXJzaW9uOwotICAgIFtT
ZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBib29sZWFuIHhtbFN0YW5kYWxvbmU7Cisg
ICAgYXR0cmlidXRlIGJvb2xlYW4geG1sU3RhbmRhbG9uZTsKIAogICAgIFtSYWlzZXNFeGNlcHRp
b25dIE5vZGUgYWRvcHROb2RlKE5vZGUgc291cmNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V4Y2VwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFhY2JkNWYyZmQ3ZWVhZTk2ZDI1M2VjYjhhM2Y0ODQzZWU5YWM0MDcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uLmgKQEAgLTAsMCArMSw1
MyBAQAorLyoKKworQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKK2FyZSBtZXQ6CisxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCitFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECitXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCitESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKK0RJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CitMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KK0FOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKyovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3VzaW5nIEV4Y2VwdGlvbkNvZGUgPSBpbnQ7CisKK2NsYXNzIEV4Y2VwdGlvbiB7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgRXhjZXB0aW9uKEV4Y2VwdGlvbkNvZGUpOworCisgICAgV0VCQ09SRV9F
WFBPUlQgRXhjZXB0aW9uQ29kZSBjb2RlKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgRXhjZXB0
aW9uQ29kZSBtX2NvZGU7Cit9OworCitpbmxpbmUgRXhjZXB0aW9uOjpFeGNlcHRpb24oRXhjZXB0
aW9uQ29kZSBjb2RlKQorICAgIDogbV9jb2RlKGNvZGUpCit7Cit9CisKK2lubGluZSBFeGNlcHRp
b25Db2RlIEV4Y2VwdGlvbjo6Y29kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29kZTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOWMwM2Y1NDJkNjAxODg4
ZmExOGYwNTQwNWFmMmVjNTU4YmM2Mjc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V4Y2VwdGlvbk9yLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKworQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKK2FyZSBtZXQ6CisxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCitFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECitXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCitESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKK0RJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CitMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
K0FOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBl
PiBjbGFzcyBFeGNlcHRpb25PciB7CitwdWJsaWM6CisgICAgRXhjZXB0aW9uT3IoRXhjZXB0aW9u
JiYpOworICAgIEV4Y2VwdGlvbk9yKFJldHVyblR5cGUmJik7CisKKyAgICBib29sIGhhc0V4Y2Vw
dGlvbigpIGNvbnN0OworICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZSgpIGNvbnN0Owor
ICAgIFJldHVyblR5cGUmJiB0YWtlUmV0dXJuVmFsdWUoKTsKKworcHJpdmF0ZToKKyAgICBzdGQ6
OmV4cGVyaW1lbnRhbDo6dmFyaWFudDxFeGNlcHRpb24sIFJldHVyblR5cGU+IG1fdmFsdWU7Cit9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiBpbmxpbmUgRXhjZXB0aW9uT3I8UmV0
dXJuVHlwZT46OkV4Y2VwdGlvbk9yKEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKKyAgICA6IG1fdmFs
dWUoV1RGTW92ZShleGNlcHRpb24pKQoreworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5U
eXBlPiBpbmxpbmUgRXhjZXB0aW9uT3I8UmV0dXJuVHlwZT46OkV4Y2VwdGlvbk9yKFJldHVyblR5
cGUmJiByZXR1cm5WYWx1ZSkKKyAgICA6IG1fdmFsdWUoV1RGTW92ZShyZXR1cm5WYWx1ZSkpCit7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGU+IGlubGluZSBib29sIEV4Y2VwdGlv
bk9yPFJldHVyblR5cGU+OjpoYXNFeGNlcHRpb24oKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6
OmV4cGVyaW1lbnRhbDo6aG9sZHNfYWx0ZXJuYXRpdmU8RXhjZXB0aW9uPihtX3ZhbHVlKTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlwZT4gaW5saW5lIEV4Y2VwdGlvbkNvZGUgRXhj
ZXB0aW9uT3I8UmV0dXJuVHlwZT46OmV4Y2VwdGlvbkNvZGUoKSBjb25zdAoreworICAgIHJldHVy
biBzdGQ6OmV4cGVyaW1lbnRhbDo6Z2V0PEV4Y2VwdGlvbj4obV92YWx1ZSkuY29kZSgpOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiBpbmxpbmUgUmV0dXJuVHlwZSYmIEV4Y2Vw
dGlvbk9yPFJldHVyblR5cGU+Ojp0YWtlUmV0dXJuVmFsdWUoKQoreworICAgIHJldHVybiBzdGQ6
OmV4cGVyaW1lbnRhbDo6Z2V0PFJldHVyblR5cGU+KFdURk1vdmUobV92YWx1ZSkpOworfQorCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcAppbmRleCAzYjU2
ZTU1ZjBlYWIzNTYxMTJhOTlhY2ZmOTAxM2IzYWYzZTA5YWFmLi41ODFhYTMzM2VjMGI3YmM0ZDhm
YzlkYzZjYmUyOWRiYzJmZDg5YWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZW1wbGF0ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBs
YXRlRWxlbWVudC5jcHAKQEAgLTI5LDEwICsyOSw4IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgotCiAjaW5jbHVkZSAiSFRNTFRlbXBsYXRlRWxlbWVudC5oIgogCi0jaW5jbHVkZSAiRE9N
SW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFn
bWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAppbmRleCA3M2I0OTk5M2NiMTI5N2ViMGNiOTMzNDgxMDE2N2Y4MzM3NjExMjA1Li5mOGU2
Njc4ZjMyNzBiZDg1MzZmMGYwM2ZmODhmNWI4OGJjMjJhNzk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNDAsNyArNDAsNiBAQAog
I2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUg
IkNvb2tpZUphci5oIgotI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
RE9NUGF0Y2hTdXBwb3J0LmgiCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKQEAgLTU5LDYgKzU4LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVy
bGF5LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgogI2luY2x1ZGUgIklu
c3RydW1lbnRpbmdBZ2VudHMuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5j
bHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCkBAIC0xMjgsNyArMTI4LDcgQEAgc3RhdGljIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNv
ZGVyPiBjcmVhdGVYSFJUZXh0RGVjb2Rlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLAogICAgIFJl
ZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyOwogICAgIGlmICghdGV4dEVuY29kaW5n
TmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpj
cmVhdGUoInRleHQvcGxhaW4iLCB0ZXh0RW5jb2RpbmdOYW1lKTsKLSAgICBlbHNlIGlmIChET01J
bXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlwZShtaW1lVHlwZSkpIHsKKyAgICBlbHNlIGlmIChN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1hNTE1JTUVUeXBlKG1pbWVUeXBlKSkgewogICAgICAgICBkZWNv
ZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi94bWwiKTsKICAg
ICAgICAgZGVjb2Rlci0+dXNlTGVuaWVudFhNTERlY29kaW5nKCk7CiAgICAgfSBlbHNlIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvaHRtbCIpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5k
ZXggN2JhMTgwNTAwYWJlZjQ4ZjhkYjAzOTM5NTUzYmM5ZDIwYTJlMTMyZC4uOWZmMjhlMWRlYzM1
ZGFmZmFlNmM0NjJlMmUyOTRlZDc5YzIwMDU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0zMCwyNCArMzAsMTggQEAKICNp
bmNsdWRlICJOZXR3b3JrUmVzb3VyY2VzRGF0YS5oIgogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2UuaCIKLSNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIk1JTUVUeXBl
UmVnaXN0cnkuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogCi1uYW1lc3Bh
Y2UgewotLy8gMTAwTUIKLXN0YXRpYyBjb25zdCBzaXplX3QgbWF4aW11bVJlc291cmNlc0NvbnRl
bnRTaXplID0gMTAwICogMTAwMCAqIDEwMDA7Ci0KLS8vIDEwTUIKLXN0YXRpYyBjb25zdCBzaXpl
X3QgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUgPSAxMCAqIDEwMDAgKiAxMDAwOwot
fQotCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LS8vIFJlc291cmNlRGF0YQorc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtUmVzb3VyY2VzQ29u
dGVudFNpemUgPSAxMDAgKiAxMDAwICogMTAwMDsgLy8gMTAwTUIKK3N0YXRpYyBjb25zdCBzaXpl
X3QgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUgPSAxMCAqIDEwMDAgKiAxMDAwOyAv
LyAxME1CCisKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0
YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6
IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQpCkBAIC0x
MTcsNyArMTExLDYgQEAgc2l6ZV90IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OmRlY29kZURhdGFUb0NvbnRlbnQoKQogICAgIHJldHVybiBjb250ZW50U2l6ZUluQnl0ZXMobV9j
b250ZW50KSAtIGRhdGFMZW5ndGg7CiB9CiAKLS8vIE5ldHdvcmtSZXNvdXJjZXNEYXRhCiBOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6TmV0d29ya1Jlc291cmNlc0RhdGEoKQogICAgIDogbV9jb250ZW50
U2l6ZSgwKQogICAgICwgbV9tYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUobWF4aW11bVJlc291
cmNlc0NvbnRlbnRTaXplKQpAQCAtMTQxLDcgKzEzNCw3IEBAIHN0YXRpYyBSZWZQdHI8VGV4dFJl
c291cmNlRGVjb2Rlcj4gY3JlYXRlT3RoZXJSZXNvdXJjZVRleHREZWNvZGVyKGNvbnN0IFN0cmlu
ZyYKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlcjsKICAgICBpZiAoIXRl
eHRFbmNvZGluZ05hbWUuaXNFbXB0eSgpKQogICAgICAgICBkZWNvZGVyID0gVGV4dFJlc291cmNl
RGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgdGV4dEVuY29kaW5nTmFtZSk7Ci0gICAgZWxz
ZSBpZiAoRE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlNRVR5cGUobWltZVR5cGUpKSB7CisgICAg
ZWxzZSBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZShtaW1lVHlwZSkpIHsKICAg
ICAgICAgZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24v
eG1sIik7CiAgICAgICAgIGRlY29kZXItPnVzZUxlbmllbnRYTUxEZWNvZGluZygpOwogICAgIH0g
ZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L2h0
bWwiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDgwNzk0NDU3ZGVl
NzgxMWFhNTgyMDJhMjlmZTBlMDg0ZDBhODQ2NjEuLmU1NDc5MzhlOGQ0MjNkOTk0ZTg0ODc1MTY5
M2VkNjY5NDNmZGRhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAt
NDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbnRl
bnRGaWx0ZXIuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKLSNpbmNsdWRl
ICJET01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUg
IkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKaW5kZXgg
OTVkMzZlMzE1YTA1Yjg1Yjc1MmFhNDQyY2NmYTViMTQwZGM2YWY3Ni4uZmU5NGI3ZjgxODc0NmUz
ZDJlN2FiMzBiNDY3ZmEwOWUxM2IxMjQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
ZXh0UmVzb3VyY2VEZWNvZGVyLmNwcApAQCAtMjMsOSArMjMsOSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKIAotI2luY2x1ZGUgIkRPTUlt
cGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1
ZGUgIlRleHRDb2RlYy5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlRl
eHRFbmNvZGluZ0RldGVjdG9yLmgiCkBAIC0zMDYsNyArMzA2LDcgQEAgVGV4dFJlc291cmNlRGVj
b2Rlcjo6Q29udGVudFR5cGUgVGV4dFJlc291cmNlRGVjb2Rlcjo6ZGV0ZXJtaW5lQ29udGVudFR5
cGUoY29uc3QKICAgICAgICAgcmV0dXJuIENTUzsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L2h0bWwiKSkKICAgICAgICAgcmV0dXJuIEhUTUw7
Ci0gICAgaWYgKERPTUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKG1pbWVUeXBlKSkKKyAg
ICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZShtaW1lVHlwZSkpCiAgICAgICAg
IHJldHVybiBYTUw7CiAgICAgcmV0dXJuIFBsYWluVGV4dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggM2EzNDM5Njc1N2I2NTYxMjIzYzZl
MjJkYjcxZWQwMTlhMDUxNTIxYy4uYWRkMjhmZmM2MjllZmMzZDE5NmMyZGY2YWU0NmYxMzM4NzZm
MjdhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3Ry
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4LCAyMDA5IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAx
NiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3
LnRvcmNobW9iaWxlLmNvbS8pCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yOSwyMCArMjksMjEgQEAK
IAogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogI2lmIFVTRShDRykKICNpbmNs
dWRlICJJbWFnZVNvdXJjZUNHLmgiCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisjZW5kaWYKKworI2lmIFVTRShDRykgJiYgIVBMQVRGT1JNKElPUykKICNp
bmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KLSNlbHNl
Ci0jaW5jbHVkZSA8SW1hZ2VJTy9DR0ltYWdlRGVzdGluYXRpb24uaD4KICNlbmRpZgotI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlIDxJbWFn
ZUlPL0NHSW1hZ2VEZXN0aW5hdGlvbi5oPgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FSQ0hJ
VkUpIHx8IEVOQUJMRShNSFRNTCkKQEAgLTU0Miw2ICs1NDMsNDcgQEAgYm9vbCBNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1Vuc3VwcG9ydGVkVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
CiAgICAgcmV0dXJuIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcy0+Y29udGFpbnMobWltZVR5cGUp
OwogfQogCitib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCit7CisgICAgcmV0dXJuIGlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBl
KG1pbWVUeXBlKQorICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1l
VHlwZSwgImFwcGxpY2F0aW9uL2pzb24iKSAvLyBSZW5kZXIgSlNPTiBhcyB0ZXh0L3BsYWluLgor
ICAgICAgICB8fCAobWltZVR5cGUuc3RhcnRzV2l0aCgidGV4dC8iLCBmYWxzZSkKKyAgICAgICAg
ICAgICYmICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvaHRt
bCIpCisgICAgICAgICAgICAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5
cGUsICJ0ZXh0L3htbCIpCisgICAgICAgICAgICAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UobWltZVR5cGUsICJ0ZXh0L3hzbCIpKTsKK30KKworCitzdGF0aWMgaW5saW5lIGJvb2wg
aXNWYWxpZFhNTE1JTUVUeXBlQ2hhcihVQ2hhciBjKQoreworICAgIC8vIFZhbGlkIGNoYXJhY3Rl
cnMgcGVyIFJGQ3MgMzAyMyBhbmQgMjA0NTogMC05YS16QS1aXy0rfiEkXnt9fC4lJ2AjJioKKyAg
ICByZXR1cm4gaXNBU0NJSUFscGhhbnVtZXJpYyhjKSB8fCBjID09ICchJyB8fCBjID09ICcjJyB8
fCBjID09ICckJyB8fCBjID09ICclJyB8fCBjID09ICcmJyB8fCBjID09ICdcJycgfHwgYyA9PSAn
KicgfHwgYyA9PSAnKycKKyAgICAgICAgfHwgYyA9PSAnLScgfHwgYyA9PSAnLicgfHwgYyA9PSAn
XicgfHwgYyA9PSAnXycgfHwgYyA9PSAnYCcgfHwgYyA9PSAneycgfHwgYyA9PSAnfCcgfHwgYyA9
PSAnfScgfHwgYyA9PSAnfic7Cit9CisKK2Jvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQveG1sIikgfHwgZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi94bWwiKSB8fCBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQveHNsIikpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgaWYgKCFtaW1lVHlwZS5lbmRzV2l0aCgiK3htbCIsIGZhbHNlKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgc2l6ZV90IHNsYXNoUG9zaXRpb24gPSBtaW1lVHlwZS5m
aW5kKCcvJyk7CisgICAgLy8gVGFrZSBpbnRvIGFjY291bnQgdGhlICcreG1sJyBlbmRpbmcgb2Yg
bWltZVR5cGUuCisgICAgaWYgKHNsYXNoUG9zaXRpb24gPT0gbm90Rm91bmQgfHwgIXNsYXNoUG9z
aXRpb24gfHwgc2xhc2hQb3NpdGlvbiA9PSBtaW1lVHlwZS5sZW5ndGgoKSAtIDUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIC8vIEFnYWluLCBtaW1lVHlwZSBlbmRzIHdpdGggJyt4bWwn
LCBubyBuZWVkIHRvIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGF0IHN1YnN0cmluZy4KKyAgICBz
aXplX3QgbWltZUxlbmd0aCA9IG1pbWVUeXBlLmxlbmd0aCgpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbWltZUxlbmd0aCAtIDQ7ICsraSkgeworICAgICAgICBpZiAoIWlzVmFsaWRYTUxN
SU1FVHlwZUNoYXIobWltZVR5cGVbaV0pICYmIGkgIT0gc2xhc2hQb3NpdGlvbikKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBN
SU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQogewogICAgIC8vIFNpbmNlIHRoaXMgc2V0IGlzIHZlcnkgbGltaXRlZCBhbmQgaXMgbGlr
ZWx5IHRvIHJlbWFpbiBzbyB3ZSB3b24ndCBib3RoZXIgd2l0aCB0aGUgb3ZlcmhlYWQKQEAgLTU3
Nyw3ICs2MTksNyBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmNhblNob3dNSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChtaW1l
VHlwZS5zdGFydHNXaXRoKCJ0ZXh0LyIsIGZhbHNlKSkKLSAgICAgICAgcmV0dXJuICFNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc1Vuc3VwcG9ydGVkVGV4dE1JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICAgICAg
cmV0dXJuICFpc1Vuc3VwcG9ydGVkVGV4dE1JTUVUeXBlKG1pbWVUeXBlKTsKIAogICAgIHJldHVy
biBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaApp
bmRleCA0ZGM3NGU3Y2IzZmE4NTQ2ZjE4OGM2MmIwN2ZlMzIwZTA4ZmI5ZDg1Li42NzQ5NTQ2ZGVi
YWIwNTM5NWVmODVhYjgyYWYwMWJkMjI4NTFiNzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTUlNRVR5cGVSZWdpc3RyeS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA2LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0xMyw3ICsxMyw3IEBACiAgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKICAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCiAg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCiAgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKICAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKICAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgpAQCAtMjMsMTMgKzIzLDExIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgTUlNRVR5cGVSZWdpc3RyeV9oCi0jZGVmaW5lIE1JTUVUeXBlUmVnaXN0cnlfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjAsMTYgKzU4LDEyIEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKTsgICAgCiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBu
b24taW1hZ2UgTUlNRSB0eXBlIGlzIHN1aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgYXMgYQotICAg
IC8vIGRvY3VtZW50IGluIGEgZnJhbWUuICBJbmNsdWRlcyBzdXBwb3J0ZWQgSmF2YVNjcmlwdCBN
SU1FIHR5cGVzLgorICAgIC8vIGRvY3VtZW50IGluIGEgZnJhbWUuIEluY2x1ZGVzIHN1cHBvcnRl
ZCBKYXZhU2NyaXB0IE1JTUUgdHlwZXMuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wg
aXNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAg
ICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIHN1aXRhYmxlIGZvciBiZWluZyBs
b2FkZWQgdXNpbmcgPHZpZGVvPiBhbmQgPGF1ZGlvPi4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgYm9vbCBpc1N1cHBvcnRlZE1lZGlhTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7
CiAKLSAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIE1JTUUgdHlwZSBpcyBub3Qgc3VpdGFibGUg
Zm9yIGJlaW5nIGxvYWRlZCBhcyBhIHRleHQKLSAgICAvLyBkb2N1bWVudCBpbiBhIGZyYW1lLiBP
bmx5IHZhbGlkIGZvciBNSU1FIHR5cGVzIGJlZ2luaW5nIHdpdGggInRleHQvIi4KLSAgICBzdGF0
aWMgYm9vbCBpc1Vuc3VwcG9ydGVkVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
OwotCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIGEgdmFsaWQgSmF2YSBh
cHBsZXQgbWltZSB0eXBlLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzSmF2YUFw
cGxldE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCkBAIC04Niw2ICs4MCwxNSBA
QCBwdWJsaWM6CiAgICAgLy8gInRleHQvIiBhbmQgaXNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZSgp
IHJldHVybnMgZmFsc2UuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgY2FuU2hvd01J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCisgICAgLy8gQ2hlY2sgdG8gc2VlIGlm
IGEgTUlNRSB0eXBlIGlzIG9uZSB3aGVyZSBhbiBYTUwgZG9jdW1lbnQgc2hvdWxkIGJlIGNyZWF0
ZWQKKyAgICAvLyByYXRoZXIgdGhhbiBhbiBIVE1MIGRvY3VtZW50LgorICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBib29sIGlzWE1MTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisK
KyAgICAvLyBVc2VkIGluIHBhZ2UgbG9hZCBhbGdvcml0aG0gdG8gZGVjaWRlIHdoZXRoZXIgdG8g
ZGlzcGxheSBhcyBhIHRleHQKKyAgICAvLyBkb2N1bWVudCBpbiBhIGZyYW1lLiBOb3QgYSBnb29k
IGlkZWEgdG8gdXNlIGVsc2V3aGVyZSwgYmVjYXVzZSB0aGF0IGNvZGUKKyAgICAvLyBtYWtlcyB0
aGlzIHRlc3QgaXMgYWZ0ZXIgbWFueSBvdGhlciB0ZXN0cyBhcmUgZG9uZSBvbiB0aGUgTUlNRSB0
eXBlLgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzVGV4dE1JTUVUeXBlKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpOworCiAgICAgLy8gRklYTUU6IFdlYktpdCBjb2Rpbmcgc3R5bGUg
c2F5cyB3ZSBzaG91bGQgbm90IGhhdmUgdGhlIHdvcmQgImdldCIgaW4gdGhlIG5hbWVzIG9mIHRo
ZXNlIGZ1bmN0aW9ucy4KICAgICAvLyBGSVhNRTogV291bGQgYmUgbmljZSB0byBmaW5kIGEgd2F5
IHRvIGF2b2lkIGV4cG9zaW5nIHRoZXNlIHNldHMsIGV2ZW4gd29yc2UgZXhwb3Npbmcgbm9uLWNv
bnN0IHJlZmVyZW5jZXMuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBnZXRTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygp
OwpAQCAtMTAwLDEwICsxMDMsMTMgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBXZWJLaXQgY29k
aW5nIHN0eWxlIHNheXMgd2Ugc2hvdWxkIG5vdCBoYXZlIHRoZSB3b3JkICJnZXQiIGluIHRoZSBu
YW1lIG9mIHRoaXMgZnVuY3Rpb24uCiAgICAgLy8gRklYTUU6IFVuY2xlYXIgd2hhdCB0aGUgY29u
Y2VwdCBvZiBhIG5vcm1hbGl6ZWQgTUlNRSB0eXBlIGlzOyBjdXJyZW50bHkgaXQncyBhIHBsYXRm
b3JtLXNwZWNpZmljIG5vdGlvbi4KICAgICBzdGF0aWMgU3RyaW5nIGdldE5vcm1hbGl6ZWRNSU1F
VHlwZShjb25zdCBTdHJpbmcmKTsKKworcHJpdmF0ZToKKyAgICAvLyBDaGVjayB0byBzZWUgaWYg
dGhlIE1JTUUgdHlwZSBpcyBub3Qgc3VpdGFibGUgZm9yIGJlaW5nIGxvYWRlZCBhcyBhIHRleHQK
KyAgICAvLyBkb2N1bWVudCBpbiBhIGZyYW1lLiBPbmx5IHZhbGlkIGZvciBNSU1FIHR5cGVzIGJl
Z2luaW5nIHdpdGggInRleHQvIi4KKyAgICBzdGF0aWMgYm9vbCBpc1Vuc3VwcG9ydGVkVGV4dE1J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogfTsKIAogY29uc3QgU3RyaW5nJiBkZWZh
dWx0TUlNRVR5cGUoKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gTUlN
RVR5cGVSZWdpc3RyeV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggNzQyZjM4NTU4
MWM5MDA2Y2E0NmYwYjA0N2EyMGExYTA0ZDU2ZDVmMi4uYzQyN2FiZDZkNGFmOGFkMzNkZGM2OGQx
NWQwY2MzN2JhMTIxYTgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMjcsNyAr
MjcsNiBAQAogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkNTU1BhcnNlci5o
IgotI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVudC5oIgpAQCAtMzYy
LDExICszNjEsNiBAQCB2b2lkIFNWR0VsZW1lbnQ6OnJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJv
cihTVkdQYXJzaW5nRXJyb3IgZXJyb3IsIGNvbnN0IFF1YWxpZgogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogfQogCi1ib29sIFNWR0VsZW1lbnQ6OmlzU3VwcG9ydGVkKFN0cmluZ0ltcGwqIGZl
YXR1cmUsIFN0cmluZ0ltcGwqIHZlcnNpb24pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIERPTUltcGxl
bWVudGF0aW9uOjpoYXNGZWF0dXJlKGZlYXR1cmUsIHZlcnNpb24pOwotfQotCiB2b2lkIFNWR0Vs
ZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmIHJvb3RQYXJlbnQpCiB7CiAgICAgYm9v
bCB3YXNJbkRvY3VtZW50ID0gcm9vdFBhcmVudC5pbkRvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuaAppbmRleCBmM2ZmZTgxZTYyY2ZhOTQ2NWIyN2MwM2UwOWEwZjY2OGEwNjlhYmVjLi4w
ZjFhNGMxMWIzZGUwYmI0NThjNzI5MTk0ZDQ5YTkyNmExYWZkYmMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjAsMTAgKzIwLDggQEAKICAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKLSNpZm5kZWYgU1ZHRWxlbWVudF9oCi0j
ZGVmaW5lIFNWR0VsZW1lbnRfaAorI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDU1NQcm9wZXJ0
eU5hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJTVkdM
YW5nU3BhY2UuaCIKICNpbmNsdWRlICJTVkdMb2NhdGFibGUuaCIKQEAgLTMxLDcgKzI5LDYgQEAK
ICNpbmNsdWRlICJTVkdQYXJzaW5nRXJyb3IuaCIKICNpbmNsdWRlICJTVkdQcm9wZXJ0eUluZm8u
aCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKQEAgLTg2LDcg
KzgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3ZnTG9hZEV2ZW50VGltZXJGaXJlZCgpOwogICAg
IHZpcnR1YWwgVGltZXIqIHN2Z0xvYWRFdmVudFRpbWVyKCk7CiAKLSAgICB2aXJ0dWFsIEFmZmlu
ZVRyYW5zZm9ybSogc3VwcGxlbWVudGFsVHJhbnNmb3JtKCkgeyByZXR1cm4gMDsgfQorICAgIHZp
cnR1YWwgQWZmaW5lVHJhbnNmb3JtKiBzdXBwbGVtZW50YWxUcmFuc2Zvcm0oKSB7IHJldHVybiBu
dWxscHRyOyB9CiAKICAgICB2b2lkIGludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCkgeyBlbnN1cmVV
bmlxdWVFbGVtZW50RGF0YSgpLnNldEFuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5KHRydWUp
OyB9CiAgICAgdm9pZCBpbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKQpA
QCAtMTgwLDggKzE3Nyw2IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgY29uc3QgUmVuZGVy
U3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRvSWQgPSBOT1BTRVVETykgZmluYWw7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgaXNTdXBwb3J0ZWQoU3RyaW5nSW1wbCogZmVhdHVyZSwgU3RyaW5nSW1wbCog
dmVyc2lvbikgY29uc3Q7Ci0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJUYXJnZXQoKSB7IH0KIAog
ICAgIHZvaWQgYnVpbGRQZW5kaW5nUmVzb3VyY2VzSWZOZWVkZWQoKTsKQEAgLTI2NCw1ICsyNTks
MyBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNWR0VsZW1lbnQpCiBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNpbmNsdWRlICJTVkdFbGVtZW50VHlwZUhl
bHBlcnMuaCIKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRl
eCBjMGI1YTU4MTdmZGE5NzcxNDY2ZjQ3YTAxZWQ2Y2QwMDY2NjU3NjYwLi41ZDFmM2ZhM2EzY2Y2
MzQ2OWM3MzY4Yzk0OTlmYzQ3NDhjZTFmZTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xp
Y3kuaCIKICNpbmNsdWRlICJDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCIKICNpbmNsdWRlICJE
T01Gb3JtRGF0YS5oIgotI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
RXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgpAQCAtMzksNiArMzgsNyBAQAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93Lmgi
CisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgi
CiAjaW5jbHVkZSAiUGFyc2VkQ29udGVudFR5cGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9y
LmgiCkBAIC01OSw3ICs1OSw2IEBACiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlclZpZXcu
aD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL0pT
TG9jay5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExl
YWtDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTkzNSw3ICs5MzQsNyBAQCBTdHJpbmcgWE1MSHR0cFJlcXVl
c3Q6OnJlc3BvbnNlTUlNRVR5cGUoKSBjb25zdAogCiBib29sIFhNTEh0dHBSZXF1ZXN0OjpyZXNw
b25zZUlzWE1MKCkgY29uc3QKIHsKLSAgICByZXR1cm4gRE9NSW1wbGVtZW50YXRpb246OmlzWE1M
TUlNRVR5cGUocmVzcG9uc2VNSU1FVHlwZSgpKTsKKyAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3Ry
eTo6aXNYTUxNSU1FVHlwZShyZXNwb25zZU1JTUVUeXBlKCkpOwogfQogCiBpbnQgWE1MSHR0cFJl
cXVlc3Q6OnN0YXR1cygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggMWI0NmJiMWNmOGRiZDZmYWVl
NmRjODBlZDEzYzNiM2E1NWQxYWZhNy4uYTk5ZjlkZTcyNzNhNTYyZTE0NmQ5MzUzMjkyYTA1MDBi
NDQ0OGQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtMTA2NCw3ICsxMDY0LDcgQEAgdm9pZCBYTUxEb2N1
bWVudFBhcnNlcjo6c3RhcnREb2N1bWVudChjb25zdCB4bWxDaGFyKiB2ZXJzaW9uLCBjb25zdCB4
bWxDaGFyKiBlbmMKICAgICBpZiAodmVyc2lvbikKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0WE1M
VmVyc2lvbih0b1N0cmluZyh2ZXJzaW9uKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgaWYg
KHN0YW5kYWxvbmUgIT0gU3RhbmRhbG9uZVVuc3BlY2lmaWVkKQotICAgICAgICBkb2N1bWVudCgp
LT5zZXRYTUxTdGFuZGFsb25lKHN0YW5kYWxvbmVJbmZvID09IFN0YW5kYWxvbmVZZXMsIEFTU0VS
VF9OT19FWENFUFRJT04pOworICAgICAgICBkb2N1bWVudCgpLT5zZXRYTUxTdGFuZGFsb25lKHN0
YW5kYWxvbmVJbmZvID09IFN0YW5kYWxvbmVZZXMpOwogICAgIGlmIChlbmNvZGluZykKICAgICAg
ICAgZG9jdW1lbnQoKS0+c2V0WE1MRW5jb2RpbmcodG9TdHJpbmcoZW5jb2RpbmcpKTsKICAgICBk
b2N1bWVudCgpLT5zZXRIYXNYTUxEZWNsYXJhdGlvbih0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0RPTS9ET01ET01JbXBsZW1lbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL0RPTS9ET01ET01JbXBsZW1lbnRhdGlvbi5tbQppbmRleCBlMGEwYzA2NmJlMTQzYTc3MWQ0
ZTM1ODgwNTkwMDE5ZTNlZDcwOGI1Li4yYTNlOTJkNWU4ODQ5MGQ0YmY5OTk2M2RlOWE2YmU2NzAz
ZGJhM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRE9NSW1wbGVtZW50
YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTURPTUltcGxlbWVudGF0aW9u
Lm1tCkBAIC0zMCwxMDUgKzMwLDkwIEBACiAjaW1wb3J0ICJET01Eb2N1bWVudFR5cGVJbnRlcm5h
bC5oIgogI2ltcG9ydCAiRE9NSFRNTERvY3VtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUlu
dGVybmFsLmgiCi0jaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkV4Y2VwdGlv
bkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NTU1N0eWxlU2hlZXQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRE9NSW1wbGVtZW50YXRpb24uaD4KLSNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRUeXBlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hU
TUxEb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU01haW5UaHJlYWRFeGVjU3RhdGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvWE1MRG9jdW1lbnQu
aD4KLSNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KLQotI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb24qPihfaW50ZXJuYWwpCiAKIEBpbXBsZW1lbnRh
dGlvbiBET01JbXBsZW1lbnRhdGlvbgogCitzdGF0aWMgaW5saW5lIFdlYkNvcmU6OkRPTUltcGxl
bWVudGF0aW9uJiB1bndyYXAoRE9NSW1wbGVtZW50YXRpb24mIHdyYXBwZXIpCit7CisgICAgcmV0
dXJuICpyZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uKj4od3JhcHBl
ci5faW50ZXJuYWwpOworfQorCiAtICh2b2lkKWRlYWxsb2MKIHsKICAgICBpZiAoV2ViQ29yZU9i
akNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5UaHJlYWQoW0RPTUltcGxlbWVudGF0aW9uIGNsYXNz
XSwgc2VsZikpCiAgICAgICAgIHJldHVybjsKLQogICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAg
IElNUEwtPmRlcmVmKCk7CisgICAgICAgIHVud3JhcCgqc2VsZikuZGVyZWYoKTsKICAgICBbc3Vw
ZXIgZGVhbGxvY107CiB9CiAKIC0gKEJPT0wpaGFzRmVhdHVyZTooTlNTdHJpbmcgKilmZWF0dXJl
IHZlcnNpb246KE5TU3RyaW5nICopdmVyc2lvbgogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gSU1QTC0+aGFzRmVhdHVyZShmZWF0dXJlLCB2
ZXJzaW9uKTsKKyAgICByZXR1cm4gdW53cmFwKCpzZWxmKS5oYXNGZWF0dXJlKGZlYXR1cmUsIHZl
cnNpb24pOwogfQogCi0tIChCT09MKWhhc0ZlYXR1cmU6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5T
U3RyaW5nICopdmVyc2lvbgorLSAoRE9NRG9jdW1lbnRUeXBlICopY3JlYXRlRG9jdW1lbnRUeXBl
OihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgcHVibGljSWQ6KE5TU3RyaW5nICopcHVibGljSWQg
c3lzdGVtSWQ6KE5TU3RyaW5nICopc3lzdGVtSWQKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPmhhc0ZlYXR1cmUoZmVhdHVyZSwg
dmVyc2lvbik7CisgICAgYXV0byByZXN1bHQgPSB1bndyYXAoKnNlbGYpLmNyZWF0ZURvY3VtZW50
VHlwZShxdWFsaWZpZWROYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpOworICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJhaXNlRE9NRXhjZXB0aW9uKHJlc3VsdC5leGNlcHRp
b25Db2RlKCkpOworICAgIHJldHVybiBraXQocmVzdWx0LnRha2VSZXR1cm5WYWx1ZSgpLnB0cigp
KTsKIH0KIAotLSAoRE9NRG9jdW1lbnRUeXBlICopY3JlYXRlRG9jdW1lbnRUeXBlOihOU1N0cmlu
ZyAqKXF1YWxpZmllZE5hbWUgcHVibGljSWQ6KE5TU3RyaW5nICopcHVibGljSWQgc3lzdGVtSWQ6
KE5TU3RyaW5nICopc3lzdGVtSWQKKy0gKERPTURvY3VtZW50ICopY3JlYXRlRG9jdW1lbnQ6KE5T
U3RyaW5nICopbmFtZXNwYWNlVVJJIHF1YWxpZmllZE5hbWU6KE5TU3RyaW5nICopcXVhbGlmaWVk
TmFtZSBkb2N0eXBlOihET01Eb2N1bWVudFR5cGUgKilkb2N0eXBlCiB7CiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIERPTURvY3VtZW50VHlwZSAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElN
UEwtPmNyZWF0ZURvY3VtZW50VHlwZShxdWFsaWZpZWROYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQs
IGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICBhdXRvIHJlc3VsdCA9IHVud3JhcCgqc2VsZikuY3JlYXRlRG9jdW1lbnQobmFtZXNwYWNlVVJJ
LCBxdWFsaWZpZWROYW1lLCBjb3JlKGRvY3R5cGUpKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKQorICAgICAgICByYWlzZURPTUV4Y2VwdGlvbihyZXN1bHQuZXhjZXB0aW9uQ29kZSgp
KTsKKyAgICByZXR1cm4ga2l0KHJlc3VsdC50YWtlUmV0dXJuVmFsdWUoKS5wdHIoKSk7CiB9CiAK
LS0gKERPTURvY3VtZW50VHlwZSAqKWNyZWF0ZURvY3VtZW50VHlwZTooTlNTdHJpbmcgKilxdWFs
aWZpZWROYW1lIDooTlNTdHJpbmcgKilwdWJsaWNJZCA6KE5TU3RyaW5nICopc3lzdGVtSWQKKy0g
KERPTUNTU1N0eWxlU2hlZXQgKiljcmVhdGVDU1NTdHlsZVNoZWV0OihOU1N0cmluZyAqKXRpdGxl
IG1lZGlhOihOU1N0cmluZyAqKW1lZGlhCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERP
TURvY3VtZW50VHlwZSAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmNyZWF0ZURvY3Vt
ZW50VHlwZShxdWFsaWZpZWROYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQsIGVjKSkpOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4ga2l0KHVu
d3JhcCgqc2VsZikuY3JlYXRlQ1NTU3R5bGVTaGVldCh0aXRsZSwgbWVkaWEpLnB0cigpKTsKIH0K
IAotLSAoRE9NRG9jdW1lbnQgKiljcmVhdGVEb2N1bWVudDooTlNTdHJpbmcgKiluYW1lc3BhY2VV
UkkgcXVhbGlmaWVkTmFtZTooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIGRvY3R5cGU6KERPTURv
Y3VtZW50VHlwZSAqKWRvY3R5cGUKKy0gKERPTUhUTUxEb2N1bWVudCAqKWNyZWF0ZUhUTUxEb2N1
bWVudDooTlNTdHJpbmcgKil0aXRsZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01E
b2N1bWVudCAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmNyZWF0ZURvY3VtZW50KG5h
bWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgY29yZShkb2N0eXBlKSwgZWMpKSk7Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBraXQodW53
cmFwKCpzZWxmKS5jcmVhdGVIVE1MRG9jdW1lbnQodGl0bGUpLnB0cigpKTsKIH0KIAotLSAoRE9N
RG9jdW1lbnQgKiljcmVhdGVEb2N1bWVudDooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0
cmluZyAqKXF1YWxpZmllZE5hbWUgOihET01Eb2N1bWVudFR5cGUgKilkb2N0eXBlCitAZW5kCisK
K0BpbXBsZW1lbnRhdGlvbiBET01JbXBsZW1lbnRhdGlvbiAoRE9NSW1wbGVtZW50YXRpb25EZXBy
ZWNhdGVkKQorCistIChCT09MKWhhc0ZlYXR1cmU6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3Ry
aW5nICopdmVyc2lvbgogewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Eb2N1bWVudCAq
cmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmNyZWF0ZURvY3VtZW50KG5hbWVzcGFjZVVS
SSwgcXVhbGlmaWVkTmFtZSwgY29yZShkb2N0eXBlKSwgZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVy
cm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBbc2VsZiBoYXNGZWF0dXJl
OmZlYXR1cmUgdmVyc2lvbjp2ZXJzaW9uXTsKIH0KIAotLSAoRE9NQ1NTU3R5bGVTaGVldCAqKWNy
ZWF0ZUNTU1N0eWxlU2hlZXQ6KE5TU3RyaW5nICopdGl0bGUgbWVkaWE6KE5TU3RyaW5nICopbWVk
aWEKKy0gKERPTURvY3VtZW50VHlwZSAqKWNyZWF0ZURvY3VtZW50VHlwZTooTlNTdHJpbmcgKilx
dWFsaWZpZWROYW1lIDooTlNTdHJpbmcgKilwdWJsaWNJZCA6KE5TU3RyaW5nICopc3lzdGVtSWQK
IHsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NQ1NTU3R5bGVTaGVldCAqcmVzdWx0ID0g
a2l0KFdURjo6Z2V0UHRyKElNUEwtPmNyZWF0ZUNTU1N0eWxlU2hlZXQodGl0bGUsIG1lZGlhLCBl
YykpKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAg
cmV0dXJuIFtzZWxmIGNyZWF0ZURvY3VtZW50VHlwZTpxdWFsaWZpZWROYW1lIHB1YmxpY0lkOnB1
YmxpY0lkIHN5c3RlbUlkOnN5c3RlbUlkXTsKIH0KIAotLSAoRE9NQ1NTU3R5bGVTaGVldCAqKWNy
ZWF0ZUNTU1N0eWxlU2hlZXQ6KE5TU3RyaW5nICopdGl0bGUgOihOU1N0cmluZyAqKW1lZGlhCist
IChET01Eb2N1bWVudCAqKWNyZWF0ZURvY3VtZW50OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6
KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KERPTURvY3VtZW50VHlwZSAqKWRvY3R5cGUKIHsK
LSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NQ1NTU3R5bGVTaGVldCAqcmVzdWx0ID0ga2l0
KFdURjo6Z2V0UHRyKElNUEwtPmNyZWF0ZUNTU1N0eWxlU2hlZXQodGl0bGUsIG1lZGlhLCBlYykp
KTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0
dXJuIFtzZWxmIGNyZWF0ZURvY3VtZW50Om5hbWVzcGFjZVVSSSBxdWFsaWZpZWROYW1lOnF1YWxp
ZmllZE5hbWUgZG9jdHlwZTpkb2N0eXBlXTsKIH0KIAotLSAoRE9NSFRNTERvY3VtZW50ICopY3Jl
YXRlSFRNTERvY3VtZW50OihOU1N0cmluZyAqKXRpdGxlCistIChET01DU1NTdHlsZVNoZWV0ICop
Y3JlYXRlQ1NTU3R5bGVTaGVldDooTlNTdHJpbmcgKil0aXRsZSA6KE5TU3RyaW5nICopbWVkaWEK
IHsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJu
IGtpdChXVEY6OmdldFB0cihJTVBMLT5jcmVhdGVIVE1MRG9jdW1lbnQodGl0bGUpKSk7CisgICAg
cmV0dXJuIFtzZWxmIGNyZWF0ZUNTU1N0eWxlU2hlZXQ6dGl0bGUgbWVkaWE6bWVkaWFdOwogfQog
CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRG9jdW1lbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRG9jdW1lbnQubW0KaW5kZXggNGNkOWJmYmZhNGUx
NjYxY2M3OTVlNjlhYWJjMDk2NDI4ZDFlMDFiYi4uNTlmNjFmNzI3ODg4OTM0ZjNjOGEzNzJjOGUx
OWQ3M2QyNmM0ZmFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTURvY3Vt
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQpAQCAtNDYs
NyArNDYsNiBAQAogI2ltcG9ydCAiRE9NSFRNTEVsZW1lbnRJbnRlcm5hbC5oIgogI2ltcG9ydCAi
RE9NSFRNTEhlYWRFbGVtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUhUTUxTY3JpcHRFbGVt
ZW50SW50ZXJuYWwuaCIKLSNpbXBvcnQgPFdlYkNvcmUvRE9NSW1wbGVtZW50YXRpb24uaD4KICNp
bXBvcnQgIkRPTUludGVybmFsLmgiCiAjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKICNpbXBv
cnQgIkRPTU5vZGVJdGVyYXRvckludGVybmFsLmgiCkBAIC0xNDcsOSArMTQ2LDcgQEAgLSAoQk9P
TCl4bWxTdGFuZGFsb25lCiAtICh2b2lkKXNldFhtbFN0YW5kYWxvbmU6KEJPT0wpbmV3WG1sU3Rh
bmRhbG9uZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBJTVBMLT5zZXRYTUxTdGFuZGFs
b25lKG5ld1htbFN0YW5kYWxvbmUsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAg
IElNUEwtPnNldFhNTFN0YW5kYWxvbmUobmV3WG1sU3RhbmRhbG9uZSk7CiB9CiAKIC0gKE5TU3Ry
aW5nICopZG9jdW1lbnRVUkkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4
IGFjYWQ4ZGUzZGUzYjkyYTMzOTk0Mjk4MDY2MDgzZmYwNWJkOWIwYzMuLmE0YWQ2NzgxNGFlZDdh
NWZjOWQ1NTE2NDUxNWE3YjM1YzYzODI2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQpAQCAtNjEsNyArNjEsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9DaHJvbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
Q29sb3JNYWMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRE9NSW1wbGVtZW50YXRpb24uaD4KICNpbXBv
cnQgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50
RnJhZ21lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KQEAgLTgwLDYg
Kzc5LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9KU05vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTGVnYWN5V2ViQXJjaGl2ZS5oPgorI2lt
cG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL01haW5G
cmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRm
b3JtRXZlbnRGYWN0b3J5TWFjLmg+CkBAIC0xMDEsOSArMTAxLDkgQEAKICNpbXBvcnQgPFdlYkNv
cmUvbWFya3VwLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQg
PGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CisjaW1wb3J0IDxydW50aW1lL0pTQ0pTVmFsdWUuaD4K
ICNpbXBvcnQgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW1wb3J0IDxydW50aW1lL0pTT2JqZWN0Lmg+
Ci0jaW1wb3J0IDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbXBvcnQgPHd0Zi9DdXJyZW50VGlt
ZS5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTExLDcgKzExMSw2IEBACiAjaW1wb3J0ICJX
ZWJSZXNvdXJjZS5oIgogI2ltcG9ydCAiV2ViVUlLaXREZWxlZ2F0ZS5oIgogI2ltcG9ydCA8V2Vi
Q29yZS9Eb2N1bWVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRWRpdG9yQ2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Gb250Lmg+CkBAIC05ODgsNyArOTg3LDcgQEAgLSAoQk9PTClf
Y2FuUHJvdmlkZURvY3VtZW50U291cmNlCiAgICAgU3RyaW5nIG1pbWVUeXBlID0gZnJhbWUtPmRv
Y3VtZW50KCktPmxvYWRlcigpLT53cml0ZXIoKS5taW1lVHlwZSgpOwogICAgIFBsdWdpbkRhdGEq
IHBsdWdpbkRhdGEgPSBmcmFtZS0+cGFnZSgpID8gJmZyYW1lLT5wYWdlKCktPnBsdWdpbkRhdGEo
KSA6IDA7CiAKLSAgICBpZiAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmlzVGV4dE1JTUVU
eXBlKG1pbWVUeXBlKQorICAgIGlmIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1RleHRN
SU1FVHlwZShtaW1lVHlwZSkKICAgICAgICAgfHwgSW1hZ2U6OnN1cHBvcnRzVHlwZShtaW1lVHlw
ZSkKICAgICAgICAgfHwgKHBsdWdpbkRhdGEgJiYgcGx1Z2luRGF0YS0+c3VwcG9ydHNXZWJWaXNp
YmxlTWltZVR5cGUobWltZVR5cGUsIFBsdWdpbkRhdGE6OkFsbFBsdWdpbnMpICYmIGZyYW1lLT5s
b2FkZXIoKS5zdWJmcmFtZUxvYWRlcigpLmFsbG93UGx1Z2lucygpKQogICAgICAgICB8fCAocGx1
Z2luRGF0YSAmJiBwbHVnaW5EYXRhLT5zdXBwb3J0c1dlYlZpc2libGVNaW1lVHlwZShtaW1lVHlw
ZSwgUGx1Z2luRGF0YTo6T25seUFwcGxpY2F0aW9uUGx1Z2lucykpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUu
Y3BwCmluZGV4IDc5OTNiOTZkNjMyMjMwNjkxNjVhOTJjNTA3ZTM0NTgxNDUxOTllNjAuLmUyMjZj
YjIxM2JiMGJiZWViMTExNjMyNmY0MWMxOTUwMDVmNjg4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5j
cHAKQEAgLTU5LDcgKzU5LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9ET01JbXBsZW1lbnRhdGlv
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRE9NV2luZG93Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9F
ZGl0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50Lmg+CkBAIC04MSw2ICs4MCw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9IVE1MUGx1Z0luRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SlNET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01haW5G
cmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTW91c2VSZWxhdGVkRXZlbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC0xMzg1LDcgKzEzODUsNyBAQCBIUkVTVUxU
IFdlYkZyYW1lOjpjYW5Qcm92aWRlRG9jdW1lbnRTb3VyY2UoYm9vbCogcmVzdWx0KQogICAgICAg
ICBCU3RyaW5nIG1pbWVUeXBlQlN0cjsKICAgICAgICAgaWYgKFNVQ0NFRURFRCh1cmxSZXNwb25z
ZS0+TUlNRVR5cGUoJm1pbWVUeXBlQlN0cikpKSB7CiAgICAgICAgICAgICBTdHJpbmcgbWltZVR5
cGUobWltZVR5cGVCU3RyLCBTeXNTdHJpbmdMZW4obWltZVR5cGVCU3RyKSk7Ci0gICAgICAgICAg
ICAqcmVzdWx0ID0gbWltZVR5cGUgPT0gInRleHQvaHRtbCIgfHwgV2ViQ29yZTo6RE9NSW1wbGVt
ZW50YXRpb246OmlzWE1MTUlNRVR5cGUobWltZVR5cGUpOworICAgICAgICAgICAgKnJlc3VsdCA9
IG1pbWVUeXBlID09ICJ0ZXh0L2h0bWwiIHx8IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6Omlz
WE1MTUlNRVR5cGUobWltZVR5cGUpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBocjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAppbmRleCAxNWI4ZTI4
ZjIzMDA5MjlkMjIwZTczM2JmZjAwNjMwMGQxM2FhZGJmLi5jZDcwNjk4NTgyNjc2NzI0ZGYxMDc0
OTliYzg5MzE1NzhjM2NhMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1l
UHJveHkuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0RPTUltcGxlbWVudGF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2luY2x1
ZGUgPHN0ZGlvLmg+CkBAIC0xMTcsMTUgKzExNiwxMyBAQCBib29sIFdlYkZyYW1lUHJveHk6Omlz
RGlzcGxheWluZ1N0YW5kYWxvbmVNZWRpYURvY3VtZW50KCkgY29uc3QKIAogYm9vbCBXZWJGcmFt
ZVByb3h5Ojppc0Rpc3BsYXlpbmdNYXJrdXBEb2N1bWVudCgpIGNvbnN0CiB7Ci0gICAgLy8gRklY
TUU6IFRoaXMgY2hlY2sgc2hvdWxkIGJlIG1vdmVkIHRvIHNvbWV3aGVyZSBpbiBXZWJDb3JlLgot
ICAgIHJldHVybiBtX01JTUVUeXBlID09ICJ0ZXh0L2h0bWwiIHx8IG1fTUlNRVR5cGUgPT0gImlt
YWdlL3N2Zyt4bWwiIHx8IG1fTUlNRVR5cGUgPT0gImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSIg
fHwgRE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlNRVR5cGUobV9NSU1FVHlwZSk7CisgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgY2FsbCB0byBhIHNpbmdsZSBNSU1FVHlwZVJlZ2lzdHJ5
IGZ1bmN0aW9uOyBhZGRpbmcgYSBuZXcgb25lIGlmIG5lZWRlZC4KKyAgICAvLyBGSVhNRTogVGhp
cyBpcyBkb2luZyBjYXNlIHNlbnNpdGl2ZSBjb21wYXJpc29ucyBvbiBNSU1FIHR5cGVzLCBzaG91
bGQgYmUgdXNpbmcgQVNDSUkgY2FzZSBpbnNlbnNpdGl2ZSBpbnN0ZWFkLgorICAgIHJldHVybiBt
X01JTUVUeXBlID09ICJ0ZXh0L2h0bWwiIHx8IG1fTUlNRVR5cGUgPT0gImltYWdlL3N2Zyt4bWwi
IHx8IG1fTUlNRVR5cGUgPT0gImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSIgfHwgTUlNRVR5cGVS
ZWdpc3RyeTo6aXNYTUxNSU1FVHlwZShtX01JTUVUeXBlKTsKIH0KIAogYm9vbCBXZWJGcmFtZVBy
b3h5Ojppc0Rpc3BsYXlpbmdQREZEb2N1bWVudCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fTUlNRVR5
cGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICByZXR1cm4gTUlNRVR5
cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZShtX01JTUVUeXBlKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287864</attachid>
            <date>2016-09-03 10:41:14 -0700</date>
            <delta_ts>2016-09-03 12:12:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161295-20160903103857.patch</filename>
            <type>text/plain</type>
            <size>77927</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVhZGQ2YmY1MDNkZGNk
MGUzYTFjMTVlYTg5YjI4NzU0YTM4MTQ4MC4uNjUyYTRjMzk2MDFlYzUyZTNiYmViOGNmYWRmOTVj
NTdlMmFhOWEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDE2LTA5LTAzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJlYW1saW5lIERPTUltcGxl
bWVudGF0aW9uLCBhbmQgbW92ZSBpdCB0byBvdXIgbmV3IERPTSBleGNlcHRpb24gc3lzdGVtCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEyOTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgbmV3IGhlYWRlcnMgdG8gcHJvamVjdC4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6dG9KUyk6IEFkZGVkIGFuIG92ZXJsb2FkIGZvciBFeGNlcHRpb25Pcjw+OyB0aGlzIGhhbmRs
ZXMgdGhlCisgICAgICAgIGV4Y2VwdGlvbiBjYXNlIGhlcmUgc28gaXQgZG9lc24ndCBuZWVkIHRv
IGJlIGhhbmRsZWQgaW4gZ2VuZXJhdGVkIGNvZGUKKyAgICAgICAgZm9yIHRoZSBiaW5kaW5nLiBJ
bXBsZW1lbnRlZCBoZXJlIHNvIHRoYXQgRXhjZXB0aW9uT3IuaCBkb2VzIG5vdCBrbm93CisgICAg
ICAgIGFib3V0IGJpbmRpbmdzLiBCdXQgc2luY2UgdGhpcyBpcyBhIHRlbXBsYXRlLCBpdCB3aWxs
IG9ubHkgY29tcGlsZSB3aGVuCisgICAgICAgIGluc3RhbnRpYXRlZCBhbmQgdGhlcmUgaXMgbm8g
bmVlZCB0byBpbmNsdWRlIEV4Y2VwdGlvbk9yLmggYW5kIGluZGlyZWN0bHkKKyAgICAgICAgdGhl
IFZhcmlhbnQuaCBoZWFkZXIgaW4gdGhpcyBoZWFkZXIuCisgICAgICAgIChXZWJDb3JlOjp0b0pT
TmV3bHlDcmVhdGVkKTogRGl0dG8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbik6
IFJlZmVyIHRvIEpTQzo6RXhjZXB0aW9uIHdpdGggZXhwbGljaXQKKyAgICAgICAgbmFtZXNwYWNl
IHRvIGF2b2lkIGFtYmlndWl0eSB3aXRoIFdlYkNvcmU6OkV4Y2VwdGlvbi4KKworICAgICAgICAq
IGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1l
bnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnRUeXBlKTogQ2hhbmdlZCB0byByZXR1cm4KKyAgICAgICAg
RXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVYTUxEb2N1bWVudCk6IEFkZGVk
LiBIZWxwZXIgdXNlZCBpbiBjcmVhdGVEb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUlt
cGxlbWVudGF0aW9uOjpnZXRJbnRlcmZhY2UpOiBEZWxldGVkLiBUaGlzIHdhcyB1bnVzZWQuCisg
ICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQpOiBDaGFu
Z2VkIHRvIHJldHVybgorICAgICAgICBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkRP
TUltcGxlbWVudGF0aW9uOjpjcmVhdGVDU1NTdHlsZVNoZWV0KTogUmVtb3ZlZCB0aGUgdW51c2Vk
CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgb3V0IGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6
aXNWYWxpZFhNTE1JTUVUeXBlQ2hhcik6IERlbGV0ZWQuIE1vdmVkIHRvIE1JTUVUeXBlUmVnaXN0
cnkuCisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlwZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmlzVGV4dE1JTUVU
eXBlKTogRGl0dG8uCisKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uaDogQ2hhbmdl
ZCBmdW5jdGlvbnMgYXMgZGVzY3JpYmVkIGFib3ZlIHRvCisgICAgICAgIHJldHVybiBFeGNlcHRp
b25PciB2YWx1ZXMuIEFsc28gcmVtb3ZlZCB1bnVzZWQgZ2V0SW50ZXJmYWNlIGZ1bmN0aW9uLAor
ICAgICAgICBhbmQgaXNYTUxNSU1FVHlwZSBhbmQgaXNUZXh0TUlNRVR5cGUsIHdoaWNoIGJvdGgg
bW92ZWQgdG8gdGhlCisgICAgICAgIE1JTUVUeXBlUmVnaXN0cnkgY2xhc3MgYWxvbmdzaWRlIGFs
bCB0aGUgb3RoZXIgc2ltaWxhciBNSU1FIHR5cGUKKyAgICAgICAgZnVuY3Rpb25zLgorCisgICAg
ICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbDogUmVvcmdhbml6ZWQgdGhpcyB0byBtYXRj
aCB0aGUgSURMIGZpbGVzCisgICAgICAgIGluIHRoZSBzcGVjaWZpY2F0aW9ucyBhIGxpdHRsZSBi
ZXR0ZXIuIEFsc28gcmVtb3ZlZCBbUmFpc2VzRXhjZXB0aW9uXQorICAgICAgICBzaW5jZSB0aGF0
IGlzIG9ubHkgbmVlZGVkIGZvciB0aGUgb2xkIGxlZ2FjeSBFeGNlcHRpb25Db2RlJiBzdHlsZS4K
KworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6c2V0WE1MVmVyc2lvbik6IFJlbW92ZWQgY2FsbCB0byB0aGUKKyAgICAgICAgRE9NSW1wbGVt
ZW50YXRpb246Omhhc0ZlYXR1cmUgZnVuY3Rpb24gc2luY2UgdGhlIHZhbHVlcyBwYXNzZWQgaW4K
KyAgICAgICAgdW5jb25kaXRpb25hbGx5IHJlc3VsdCBpbiB0aGUgcmV0dXJuIHZhbHVlICJ0cnVl
Ii4gVGhpcyBpcyBsZWZ0IG92ZXIKKyAgICAgICAgZWl0aGVyIGZyb20gc3BlY2lmaWNhdGlvbiBs
YW5ndWFnZSwgb3IgZnJvbSBhbiBhbmNpZW50IHZlcnNpb24gb2YgdGhpcworICAgICAgICBjb2Rl
IHRoYXQgd29ya2VkIGluIGEgIm5vIFhNTCBzdXBwb3J0ZWQiIG1vZGUuCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6c2V0WE1MU3RhbmRhbG9uZSk6IERpdHRvLgorCisgICAgICAgICogZG9t
L0RvY3VtZW50Lmg6IFJlbW92ZWQgdGhlIEV4Y2VwdGlvbkNvZGUmIG91dCBhcmd1bWVudCBmcm9t
IHNldFhNTFN0YW5kYWxvbmUuCisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDogUmVtb3ZlZCBb
U2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBmcm9tIHhtbFN0YW5kYWxvbmUuCisKKyAgICAgICAgKiBk
b20vRXhjZXB0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIGRvbS9FeGNlcHRpb25Pci5oOiBBZGRl
ZC4KKworICAgICAgICAqIGh0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHA6IFJlbW92ZWQgdW5u
ZWVkZWQgaW5jbHVkZSBvZiBET01JbXBsZW1lbnRhdGlvbi5oLgorCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVYSFJU
ZXh0RGVjb2Rlcik6IFVzZSBpc1hNTE1JTUVUeXBlIGluIGl0cyBuZXcgbG9jYXRpb24gaW4KKyAg
ICAgICAgTUlNRVR5cGVSZWdpc3RyeS4KKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlT3RoZXJSZXNvdXJjZVRleHRE
ZWNvZGVyKTogRGl0dG8uCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOiBSZW1v
dmVkIHVubmVlZGVkIGluY2x1ZGUgb2YgRE9NSW1wbGVtZW50YXRpb24uaC4KKworICAgICAgICAq
IGxvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRS
ZXNvdXJjZURlY29kZXI6OmRldGVybWluZUNvbnRlbnRUeXBlKTogVXNlIGlzWE1MTUlNRVR5cGUg
aW4gaXRzCisgICAgICAgIG5ldyBsb2NhdGlvbiBpbiBNSU1FVHlwZVJlZ2lzdHJ5LgorCisgICAg
ICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1RleHRNSU1FVHlwZSk6IEFkZGVkLiBNb3ZlZCBoZXJlIGZyb20K
KyAgICAgICAgRE9NSW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkWE1M
TUlNRVR5cGVDaGFyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1hNTE1JTUVUeXBlKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJl
Z2lzdHJ5Lmg6IEFkZGVkIGlzWE1MTUlNRVR5cGUgYW5kIGlzVGV4dE1JTUVUeXBlLgorICAgICAg
ICBNYWRlIGlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUgcHJpdmF0ZS4KKworICAgICAgICAqIHN2
Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmlzU3VwcG9y
dGVkKTogRGVsZXRlZC4gVGhpcyBmdW5jdGlvbiB3YXMgbmV2ZXIgY2FsbGVkLgorICAgICAgICAq
IHN2Zy9TVkdFbGVtZW50Lmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZSBjaGFuZ2UuCisKKyAgICAg
ICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OnJlc3BvbnNlSXNYTUwpOiBVc2UgaXNYTUxNSU1FVHlwZSBpbiBpdHMgbmV3CisgICAg
ICAgIGxvY2F0aW9uIGluIE1JTUVUeXBlUmVnaXN0cnkuCisKIDIwMTYtMDktMDMgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgQVNDSUlMaXRlcmFs
IGluIHNvbWUgbW9yZSBwbGFjZXMKQEAgLTQ2NjQsNiArNDc1NCwxMCBAQAogICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWF0aE1MUGFkZGVkOjpzdHlsZURpZENoYW5nZSk6IERlbGV0ZWQuIERpdHRv
LgogICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmg6IFVwZGF0
ZSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBhbmQgcmVtb3ZlIG1fYXNjZW50LgogCisgICAgICAgICog
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0RG9jdW1lbnQpOiBVcGRhdGVkIHNpbmNlIHNldFhN
TFN0YW5kYWxvbmUKKyAgICAgICAgbm8gbG9uZ2VyIGNhbiByYWlzZSBhbiBleGNlcHRpb24uCisK
IDIwMTYtMDgtMjcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBVUkxQYXJzZXIgc2hvdWxkIHBhcnNlIHJlbGF0aXZlIFVSTHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCA5MDlmZDhiYjZlYTA3YjE4NDZmYjcyN2FkZWQzYzBhODZlOWQ0Y2Y1Li42YmU4
ZDVlYjU1NjIxMWI0YzBkYTA0MmI0OGZjMGJkZTg5MGU3NTVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTYtMDktMDMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFN0cmVhbWxpbmUgRE9NSW1wbGVtZW50YXRpb24sIGFuZCBtb3ZlIGl0IHRv
IG91ciBuZXcgRE9NIGV4Y2VwdGlvbiBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTI5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTURPTUltcGxlbWVudGF0aW9uLm1tOgorICAg
ICAgICAodW53cmFwKTogQWRkZWQuIFVzZSB0aGlzIGluc3RlYWQgb2YgdGhlIElNUEwgbWFjcm8u
CisgICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGRlYWxsb2NdKTogVXBkYXRlZCB0byB1c2Ug
dW53cmFwLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBoYXNGZWF0dXJlOnZlcnNpb246
XSk6IERpdHRvLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVEb2N1bWVudFR5
cGU6cHVibGljSWQ6c3lzdGVtSWQ6XSk6IFVwZGF0ZWQgdG8gd29yayB3aXRoCisgICAgICAgIEV4
Y2VwdGlvbk9yLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVEb2N1bWVudDpx
dWFsaWZpZWROYW1lOmRvY3R5cGU6XSk6IERpdHRvLgorICAgICAgICAoLVtET01JbXBsZW1lbnRh
dGlvbiBjcmVhdGVDU1NTdHlsZVNoZWV0Om1lZGlhOl0pOiBSZW1vdmVkIGV4Y2VwdGlvbiBsb2dp
YyBzaW5jZQorICAgICAgICB0aGlzIGZ1bmN0aW9uIGNhbiBubyBsb25nZXIgcmFpc2UgYW4gZXhj
ZXB0aW9uLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVIVE1MRG9jdW1lbnQ6
XSk6IFVwZGF0ZWQgdG8gdXNlIHVud3JhcC4KKyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24g
aGFzRmVhdHVyZTo6XSk6IENoYW5nZWQgdG8gY2FsbCB0aGUgbm9uLWRlcHJlY2F0ZWQgdmVyc2lv
bgorICAgICAgICByYXRoZXIgdGhhbiBkdXBsaWNhdGluZyBpdHMgaW1wbGVtZW50YXRpb24uIEFs
c28gbW92ZWQgaW50byB0aGUgY2F0ZWdvcnkgYXMgZGVmaW5lZAorICAgICAgICBpbiB0aGUgaGVh
ZGVyLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVEb2N1bWVudFR5cGU6Ojpd
KTogRGl0dG8uCisgICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGNyZWF0ZURvY3VtZW50Ojo6
XSk6IERpdHRvLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVDU1NTdHlsZVNo
ZWV0OjpdKTogRGl0dG8uCisKKyAgICAgICAgKiBET00vRE9NRG9jdW1lbnQubW06IFJlbW92ZWQg
dW5uZWVkZWQgaW5jbHVkZSBvZiBET01JbXBsZW1lbnRhdGlvbi5oLgorICAgICAgICAoLVtET01E
b2N1bWVudCBzZXRYbWxTdGFuZGFsb25lOl0pOiBVcGRhdGVkIHNpbmNlIHNldFhNTFN0YW5kYWxv
bmUgbm8gbG9uZ2VyIGNhbgorICAgICAgICByYWlzZSBhbiBleGNlcHRpb24uCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfY2FuUHJvdmlkZURv
Y3VtZW50U291cmNlXSk6IFVwZGF0ZWQgdG8gdXNlIGlzVGV4dE1JTUVUeXBlIGluIGl0cyBuZXcK
KyAgICAgICAgbG9jYXRpb24gaW4gTUlNRVR5cGVSZWdpc3RyeSBpbnN0ZWFkIG9mIGluIERPTUlt
cGxlbWVudGF0aW9uLgorCiAyMDE2LTA5LTAyICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNv
bT4KIAogICAgICAgICBOZWVkIHRvIHVwZGF0ZUVkaXRvclN0YXRlIGlmIGFuIGVsZW1lbnQgY2hh
bmdlIGVkaXQtYWJpbGl0eSB3aXRob3V0IGNoYW5naW5nIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGZm
M2I1NTg3OGMyMGQyNDNhMmUwOTNhNGVjZjhkZTk4YmYzODYxZjcuLmM5NmY4NjQwODk0MTc2NmRl
YzFhODg5YTlmNzk2YjJiM2Q5ZTA2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxNi0wOS0wMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
U3RyZWFtbGluZSBET01JbXBsZW1lbnRhdGlvbiwgYW5kIG1vdmUgaXQgdG8gb3VyIG5ldyBET00g
ZXhjZXB0aW9uIHN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYxMjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6Y2FuUHJvdmlkZURv
Y3VtZW50U291cmNlKTogVXBkYXRlZCB0byB1c2UgaXNYTUxNSU1FVHlwZSBpbiBpdHMgbmV3Cisg
ICAgICAgIGxvY2F0aW9uIGluIE1JTUVUeXBlUmVnaXN0cnkgaW5zdGVhZCBvZiBpbiBET01JbXBs
ZW1lbnRhdGlvbi4KKwogMjAxNi0wOS0wMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBCdWlsZCBmaXggYXR0ZW1wdCBhZnRlciByMjA1MzgxLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDJkNTgwOGYyNjAzZmNjZGQzN2M3ZmJlMWEyZmU3NDllMTEzNjYwMWMuLjUwYTI4OGU4YzAx
NTExOWJkZWM2YzYyZjU2MWJhMTdmMTFmODM4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBA
QAorMjAxNi0wOS0wMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
U3RyZWFtbGluZSBET01JbXBsZW1lbnRhdGlvbiwgYW5kIG1vdmUgaXQgdG8gb3VyIG5ldyBET00g
ZXhjZXB0aW9uIHN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYxMjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lUHJveHk6OmlzRGlzcGxheWluZ01hcmt1cERvY3VtZW50KTogVXNlIGlzWE1MTUlN
RVR5cGUgaW4gaXRzCisgICAgICAgIG5ldyBsb2NhdGlvbiBpbiBNSU1FVHlwZVJlZ2lzdHJ5IHJh
dGhlciB0aGFuIGluIERPTUltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZVByb3h5Ojppc0Rpc3BsYXlpbmdQREZEb2N1bWVudCk6IFJlbW92ZWQgdW5uZWVkZWQgcmVkdW5k
YW50CisgICAgICAgIGNoZWNrIGZvciBlbXB0eSBzdHJpbmcsIGFscmVhZHkgZG9uZSBieSBNSU1F
VHlwZVJlZ2lzdHJ5LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAgICh3ZWJraXRf
ZG9tX2RvbV9pbXBsZW1lbnRhdGlvbl9jcmVhdGVfZG9jdW1lbnRfdHlwZSk6CisgICAgICAgICh3
ZWJraXRfZG9tX2RvbV9pbXBsZW1lbnRhdGlvbl9jcmVhdGVfZG9jdW1lbnQpOgorICAgICAgICAo
d2Via2l0X2RvbV9kb21faW1wbGVtZW50YXRpb25fY3JlYXRlX2Nzc19zdHlsZV9zaGVldCk6Cisg
ICAgICAgIFVwZGF0ZWQgdG8gd29yayB3aXRoIEV4Y2VwdGlvbk9yLgorCiAyMDE2LTA5LTAzICBK
b3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogTW92ZSBXZWJLaXQyIFdlYkluc3BlY3RvciBmaWxlcyB0byAjcHJhZ21hIG9uY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBiNzU2MDlmM2U5YzFiMGRmMjE2ZjQ5NmNlNmFjZjJiMDc4MWRhZmUyLi5hZGVhZDZkMDg1NjFm
MjU4YjY0ZjJkN2NiNWZlNmRjYmIxMTQzOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMjc1LDYgKzMyNzUsOCBAQAogCQk5
M0M0RjZFQjExMDhGOUE1MDA5OUQwREIgLyogQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDNEY2RTkxMTA4RjlB
NTAwOTlEMERCIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCAqLzsgfTsKIAkJOTNDQ0YwMjcw
QUY2QzUyOTAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQ0NGMDI2MEFGNkM1MjkwMDAxOEU4OSAvKiBO
YXZpZ2F0aW9uQWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTNDQ0YwNjAwQUY2Q0E3NjAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDQ0Yw
NUYwQUY2Q0E3NjAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uY3BwICovOyB9OworCQk5M0Qx
OTYzMTFENkNBQjc2MDBGQzdFNDcgLyogRXhjZXB0aW9uT3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDE5NjMwMUQ2Q0FCNzYwMEZDN0U0NyAvKiBF
eGNlcHRpb25Pci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTkzRDE5NjMzMUQ2Q0FCODIwMEZDN0U0NyAvKiBFeGNlcHRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDE5NjMyMUQ2Q0FCODIwMEZD
N0U0NyAvKiBFeGNlcHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5M0Q0Mzc5RjFENTdCMTUzMDBBQjg1RUEgLyogSlNNYWluVGhyZWFkRXhl
Y1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
RjkzNEQ4MzExODlGMUVFMDA1MDhENUQgLyogSlNNYWluVGhyZWFkRXhlY1N0YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNENDM3QTAxRDU3
QjE5QTAwQUI4NUVBIC8qIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjU2QzlBODFDODkzMTI4MDBDNDU2
REYgLyogQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q0MzdBMTFENTdCM0Y0MDBBQjg1RUEgLyog
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQURFMTFGNEExOEQ4MzExQjAwNzg5ODNCIC8qIEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTA0MzcsNiArMTA0MzksOCBAQAogCQk5M0NBNENBMjA5REY5M0ZBMDBERjg2
NzcgLyogc3ZnLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBzdmcuY3NzOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5M0NDRjAyNjBBRjZDNTI5MDAwMThFODkgLyogTmF2aWdhdGlv
bkFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0aW9uQWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQ0NGMDVGMEFGNkNBNzYwMDAx
OEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE5hdmlnYXRpb25BY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5M0QxOTYzMDFENkNBQjc2MDBGQzdFNDcgLyogRXhjZXB0aW9uT3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9uT3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTNEMTk2MzIxRDZDQUI4MjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNlcHRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTNEOUQ1M0IwREEyN0UxODAwNzcyMTZDIC8qIFJhbmdlQm91bmRhcnlQ
b2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYW5nZUJvdW5kYXJ5UG9p
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFMjI3REIwQUY1ODlBRDAwRDQ4
MzI0IC8qIERvY3VtZW50TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERvY3VtZW50TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTNFMjI3REQwQUY1ODlBRDAwRDQ4MzI0IC8qIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyOTk2LDExICsy
MzAwMCwxMyBAQAogCQkJCUUxMkVEQjdBMEIzMDhBNzgwMDI3MDRCNiAvKiBFdmVudFRhcmdldC5o
ICovLAogCQkJCTg1QUZBNzQyMEFBRjI5ODQwMEU4NDMwNSAvKiBFdmVudFRhcmdldC5pZGwgKi8s
CiAJCQkJQ0RDRTVDRDAxNDYzM0JDOTAwRDQ3Q0NBIC8qIEV2ZW50VGFyZ2V0RmFjdG9yeS5pbiAq
LywKKwkJCQk5M0QxOTYzMjFENkNBQjgyMDBGQzdFNDcgLyogRXhjZXB0aW9uLmggKi8sCiAJCQkJ
QkM2MEQ4RjAwRDJBMTFFMDAwQjk5MThGIC8qIEV4Y2VwdGlvbkJhc2UuY3BwICovLAogCQkJCUJD
NjBEOEYxMEQyQTExRTAwMEI5OTE4RiAvKiBFeGNlcHRpb25CYXNlLmggKi8sCiAJCQkJOTM1RkJD
RjEwOUJBMTQzQjAwRTIzMEIxIC8qIEV4Y2VwdGlvbkNvZGUuaCAqLywKIAkJCQlBN0NBQ0RCMDEz
Q0U4NzVCMDBCQkJFM0YgLyogRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmNwcCAqLywKIAkJCQlB
NzRCQjc2QTEzQkRBODYzMDBGRjdCRjAgLyogRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmggKi8s
CisJCQkJOTNEMTk2MzAxRDZDQUI3NjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbk9yLmggKi8sCiAJCQkJ
RTQ3RTI3NjcxNjAzNkVEQzAwRUUyQUZCIC8qIEV4dGVuc2lvblN0eWxlU2hlZXRzLmNwcCAqLywK
IAkJCQlFNDdFMjc2NDE2MDM2RUQyMDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCAq
LywKIAkJCQlCNkQ5RDIzNDE0RUFCRDI2MDA5MEQ3NUUgLyogRm9jdXNFdmVudC5jcHAgKi8sCkBA
IC0yNTU5OCw2ICsyNTYwNCw3IEBACiAJCQkJMDc4RTA5MzkxN0QxNkIyQzAwNDIwQUExIC8qIE1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTE2MTdE
MTREMUMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
NzhFMDkzNzE3RDE2QjJDMDA0MjBBQTEgLyogTWVkaWFTdHJlYW1Qcml2YXRlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5M0QxOTYzMzFENkNBQjgyMDBGQzdFNDcgLyogRXhjZXB0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwNzhFMDkxNzE3RDE0RDFDMDA0MjBBQTEgLyogTWVkaWFTdHJlYW1SZWdp
c3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MTgxN0QxNEQxQzAwNDIwQUExIC8qIE1l
ZGlhU3RyZWFtVHJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTE5MTdEMTREMUMwMDQy
MEFBMSAvKiBNZWRpYVN0cmVhbVRyYWNrRXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjY2Njgs
NiArMjY2NzUsNyBAQAogCQkJCUIyMjI3QUQ3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zv
cm0uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QURBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdU
cmFuc2Zvcm1hYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FERDBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHVHJhbnNmb3JtRGlzdGFuY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDE5NjMx
MUQ2Q0FCNzYwMEZDN0U0NyAvKiBFeGNlcHRpb25Pci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIy
MjdBREYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybUxpc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTA4QzcxMzZFMTI4OTU2QTMwMDFCMTA3RSAvKiBTVkdUcmFuc2Zvcm1MaXN0UHJvcGVy
dHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FFMjBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHVFJlZkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA5YWEzMzYyODk2NGFmMDQzNTVlMjk4NTQ0YmMxZmY2
OGY2NmIzYjAxLi5hNGUwYmMzZTY3MDE4NmJlZjI2YTZkYjRmYzlhZjY4YTllNmRjNDEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMjMsOSArMjMsOSBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1
ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCi0jaW5j
bHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oIgogI2luY2x1ZGUgIldlYkNvcmVUeXBl
ZEFycmF5Q29udHJvbGxlci5oIgpAQCAtNjksNyArNjksOSBAQCBjbGFzcyBOb2RlOwogCiBzdHJ1
Y3QgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlOwogCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2Rl
OwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEV4Y2VwdGlvbk9yOworCit1c2luZyBFeGNlcHRp
b25Db2RlID0gaW50OwogCiBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlscyB7CiAgICAgU3RyaW5nIG1l
c3NhZ2U7CkBAIC0xODYsNiArMTg4LDkgQEAgSlNDOjpKU1ZhbHVlIGNyZWF0ZURPTUV4Y2VwdGlv
bihKU0M6OkV4ZWNTdGF0ZSosIEV4Y2VwdGlvbkNvZGUsIGNvbnN0IFN0cmluZyYpOwogV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRET01FeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBFeGNlcHRpb25D
b2RlKTsKIHZvaWQgc2V0RE9NRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgRXhjZXB0
aW9uQ29kZVdpdGhNZXNzYWdlJik7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgRXhjZXB0
aW9uT3I8VD4mJik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRv
SlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIEV4Y2Vw
dGlvbk9yPFQ+JiYpOworCiBKU0M6OkpTVmFsdWUganNTdHJpbmcoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBVUkwmKTsgLy8gZW1wdHkgaWYgdGhlIFVSTCBpcyBudWxsCiAKIEpTQzo6SlNWYWx1ZSBq
c1N0cmluZ09yTnVsbChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOyAvLyBudWxsIGlm
IHRoZSBzdHJpbmcgaXMgbnVsbApAQCAtODA4LDQgKzgxMywyMyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvTnVsbGFibGVKU051bWJlcihPcHRpb25hbDxUPiBv
cHRpb25hbAogICAgIHJldHVybiBvcHRpb25hbE51bWJlciA/IEpTQzo6anNOdW1iZXIob3B0aW9u
YWxOdW1iZXIudmFsdWUoKSkgOiBKU0M6OmpzTnVsbCgpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb25PcjxUPiYmIHZhbHVlKQorewor
ICAgIGlmIChVTkxJS0VMWSh2YWx1ZS5oYXNFeGNlcHRpb24oKSkpIHsKKyAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKHN0YXRlLCB2YWx1ZS5leGNlcHRpb25Db2RlKCkpOworICAgICAgICByZXR1cm4g
SlNDOjpqc1VuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9KUyhzdGF0ZSwgZ2xvYmFs
T2JqZWN0LCB2YWx1ZS50YWtlUmV0dXJuVmFsdWUoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbk9yPFQ+JiYg
dmFsdWUpCit7CisgICAgLy8gRklYTUU6IEl0J3MgcmVhbGx5IGFubm95aW5nIHRvIGhhdmUgdHdv
IG9mIHRoZXNlIGZ1bmN0aW9ucy4gU2hvdWxkIGZpbmQgYSB3YXkgdG8gY29tYmluZSB0b0pTIGFu
ZCB0b0pTTmV3bHlDcmVhdGVkLgorICAgIGlmIChVTkxJS0VMWSh2YWx1ZS5oYXNFeGNlcHRpb24o
KSkpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCB2YWx1ZS5leGNlcHRpb25Db2Rl
KCkpOworICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1
cm4gdG9KU05ld2x5Q3JlYXRlZChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB2YWx1ZS50YWtlUmV0dXJu
VmFsdWUoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggM2IzZTMxNjRk
NDNjOTI2NDRlZTkxNmRiYWE2MGVjNDRhMGZjZTUzZi4uNjE2YmFiMTgyYTgyZjdlNWFhNTQ5ZjBh
Y2RiNmMwZGJlZDIzMDhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQzNDEsNyArNDM0MSw3IEBAIHN1YiBHZW5lcmF0
ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBhcmdzLmFwcGVuZCgiIC4gTmF0aXZlVG9KU1ZhbHVlKCRwYXJhbSwgMSwgJGludGVy
ZmFjZSwgJHBhcmFtTmFtZSwgIm1fZGF0YSIpIC4gIik7XG4iKTsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiAgICBOYWtlZFB0cjxFeGNlcHRpb24+
IHJldHVybmVkRXhjZXB0aW9uO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IlxuICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjtcbiIpOwog
CiAgICAgICAgICAgICBteSAkcHJvcGVydHlUb0xvb2t1cCA9ICJJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHN0YXRlLCBcIiR7ZnVuY3Rpb25OYW1lfVwiKSI7CiAgICAgICAgICAgICBteSAkaW52b2tl
TWV0aG9kID0gIkpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uT3JPYmplY3Qi
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDYWxsYmFjay5jcHAKaW5kZXggNmM2ZTRiZjcxMWFkMTE1ZWU4MjJkMmRjNWRlOWFj
N2FhZjE3MDJmMS4uNjU4MmU2MjQ3ZWQ5YzcxMjE2ZjExZjU3ZGUxNWRjNDlmNGI1MDk2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q2FsbGJhY2suY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFj
azo6Y2FsbGJhY2tXaXRoTm9QYXJhbSgpCiAgICAgRXhlY1N0YXRlKiBzdGF0ZSA9IG1fZGF0YS0+
Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdzOwogCi0gICAgTmFrZWRQdHI8RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKKyAgICBO
YWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CiAgICAgbV9kYXRhLT5p
bnZva2VDYWxsYmFjayhhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJjYWxsYmFja1dpdGhOb1BhcmFtIiksIHJl
dHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pCiAgICAgICAgIHJl
cG9ydEV4Y2VwdGlvbihzdGF0ZSwgcmV0dXJuZWRFeGNlcHRpb24pOwpAQCAtMTI4LDcgKzEyOCw3
IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aEFycmF5UGFyYW0oUmVmUHRyPEZs
b2F0MzJBcnJheT4gYXJyYXlQYXJhbSkKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwog
ICAgIGFyZ3MuYXBwZW5kKHRvSlMoc3RhdGUsIG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCksIGFycmF5
UGFyYW0pKTsKIAotICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Cisg
ICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwogICAgIG1fZGF0
YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAiY2FsbGJhY2tXaXRoQXJyYXlQYXJh
bSIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKQogICAg
ICAgICByZXBvcnRFeGNlcHRpb24oc3RhdGUsIHJldHVybmVkRXhjZXB0aW9uKTsKQEAgLTE0OSw3
ICsxNDksNyBAQCBib29sIEpTVGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhTZXJpYWxpemVkU2Ny
aXB0VmFsdWVQYXJhbShSZWZQdHI8U2VyaWFsaXplZFNjcgogICAgIGFyZ3MuYXBwZW5kKHNyelBh
cmFtID8gc3J6UGFyYW0tPmRlc2VyaWFsaXplKHN0YXRlLCBtX2RhdGEtPmdsb2JhbE9iamVjdCgp
LCAwKSA6IGpzTnVsbCgpKTsKICAgICBhcmdzLmFwcGVuZChqc1N0cmluZ1dpdGhDYWNoZShzdGF0
ZSwgc3RyQXJnKSk7CiAKLSAgICBOYWtlZFB0cjxFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9u
OworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKICAgICBt
X2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6
Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgImNhbGxiYWNrV2l0aFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZVBhcmFtIiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0
dXJuZWRFeGNlcHRpb24pCiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihzdGF0ZSwgcmV0dXJuZWRF
eGNlcHRpb24pOwpAQCAtMTY5LDcgKzE2OSw3IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxi
YWNrV2l0aFN0cmluZ0xpc3QoRE9NU3RyaW5nTGlzdCogbGlzdFBhcmFtKQogICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQodG9KUyhzdGF0ZSwgbV9kYXRhLT5n
bG9iYWxPYmplY3QoKSwgbGlzdFBhcmFtKSk7CiAKLSAgICBOYWtlZFB0cjxFeGNlcHRpb24+IHJl
dHVybmVkRXhjZXB0aW9uOworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4
Y2VwdGlvbjsKICAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRh
OjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgImNh
bGxiYWNrV2l0aFN0cmluZ0xpc3QiKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1
cm5lZEV4Y2VwdGlvbikKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKHN0YXRlLCByZXR1cm5lZEV4
Y2VwdGlvbik7CkBAIC0xODksNyArMTg5LDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFjazo6Y2FsbGJh
Y2tXaXRoQm9vbGVhbihib29sIGJvb2xQYXJhbSkKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdzOwogICAgIGFyZ3MuYXBwZW5kKGpzQm9vbGVhbihib29sUGFyYW0pKTsKIAotICAgIE5ha2Vk
UHRyPEV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CisgICAgTmFrZWRQdHI8SlNDOjpFeGNl
cHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwogICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJn
cywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHN0YXRlLCAiY2FsbGJhY2tXaXRoQm9vbGVhbiIpLCByZXR1cm5lZEV4Y2VwdGlvbik7
CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKQogICAgICAgICByZXBvcnRFeGNlcHRpb24oc3Rh
dGUsIHJldHVybmVkRXhjZXB0aW9uKTsKQEAgLTIxMCw3ICsyMTAsNyBAQCBib29sIEpTVGVzdENh
bGxiYWNrOjpjYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyhpbnQzMl90IGxvbmdQYXJhbSwgVGVz
dE5vZGUqIHRlcwogICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKGxvbmdQYXJhbSkpOwogICAgIGFy
Z3MuYXBwZW5kKHRvSlMoc3RhdGUsIG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCksIHRlc3ROb2RlUGFy
YW0pKTsKIAotICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CisgICAg
TmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwogICAgIG1fZGF0YS0+
aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAiY2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bh
c3MiKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikKICAg
ICAgICAgcmVwb3J0RXhjZXB0aW9uKHN0YXRlLCByZXR1cm5lZEV4Y2VwdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5jcHAKaW5kZXggNDgzNzY3MTcwODIyYWVlNjk4NmQwYTEy
N2ZlZjRjY2JlM2Y3NzA2Ni4uY2FmOTg4MjZhMjkyNTJhOTNhMDA4Yjg0NDEwNzE5MDI3MjQ3N2Jm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmNwcApAQCAtNzIsNyArNzIsNyBA
QCBib29sIEpTVGVzdENhbGxiYWNrRnVuY3Rpb246OmNhbGxiYWNrV2l0aE5vUGFyYW0oKQogICAg
IEV4ZWNTdGF0ZSogc3RhdGUgPSBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7
CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKIAotICAgIE5ha2VkUHRyPEV4Y2VwdGlv
bj4gcmV0dXJuZWRFeGNlcHRpb247CisgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVy
bmVkRXhjZXB0aW9uOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgbV9kYXRhLT5pbnZv
a2VDYWxsYmFjayhhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwg
SWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0
aW9uKQpAQCAtOTMsNyArOTMsNyBAQCBib29sIEpTVGVzdENhbGxiYWNrRnVuY3Rpb246OmNhbGxi
YWNrV2l0aEFycmF5UGFyYW0oUmVmUHRyPEZsb2F0MzJBcnJheT4gYXJyYXlQYQogICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQodG9KUyhzdGF0ZSwgbV9kYXRh
LT5nbG9iYWxPYmplY3QoKSwgYXJyYXlQYXJhbSkpOwogCi0gICAgTmFrZWRQdHI8RXhjZXB0aW9u
PiByZXR1cm5lZEV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJu
ZWRFeGNlcHRpb247CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBtX2RhdGEtPmludm9r
ZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJ
ZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRp
b24pCkBAIC0xMTUsNyArMTE1LDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpjYWxs
YmFja1dpdGhTZXJpYWxpemVkU2NyaXB0VmFsdWVQYXJhbShSZWZQdHI8U2VyaWEKICAgICBhcmdz
LmFwcGVuZChzcnpQYXJhbSA/IHNyelBhcmFtLT5kZXNlcmlhbGl6ZShzdGF0ZSwgbV9kYXRhLT5n
bG9iYWxPYmplY3QoKSwgMCkgOiBqc051bGwoKSk7CiAgICAgYXJncy5hcHBlbmQoanNTdHJpbmdX
aXRoQ2FjaGUoc3RhdGUsIHN0ckFyZykpOwogCi0gICAgTmFrZWRQdHI8RXhjZXB0aW9uPiByZXR1
cm5lZEV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNl
cHRpb247CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBtX2RhdGEtPmludm9rZUNhbGxi
YWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlm
aWVyKCksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pCkBA
IC0xMzYsNyArMTM2LDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpjYWxsYmFja1dp
dGhTdHJpbmdMaXN0KERPTVN0cmluZ0xpc3QqIGxpc3RQYXJhbSkKICAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKHRvSlMoc3RhdGUsIG1fZGF0YS0+Z2xvYmFs
T2JqZWN0KCksIGxpc3RQYXJhbSkpOwogCi0gICAgTmFrZWRQdHI8RXhjZXB0aW9uPiByZXR1cm5l
ZEV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRp
b247CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNr
KGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVy
KCksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pCkBAIC0x
NTcsNyArMTU3LDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpjYWxsYmFja1dpdGhC
b29sZWFuKGJvb2wgYm9vbFBhcmFtKQogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAg
ICAgYXJncy5hcHBlbmQoanNCb29sZWFuKGJvb2xQYXJhbSkpOwogCi0gICAgTmFrZWRQdHI8RXhj
ZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4g
cmV0dXJuZWRFeGNlcHRpb247CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBtX2RhdGEt
Pmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0
aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRF
eGNlcHRpb24pCkBAIC0xNzksNyArMTc5LDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9u
OjpjYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyhpbnQzMl90IGxvbmdQYXJhbSwgVGVzdE4KICAg
ICBhcmdzLmFwcGVuZChqc051bWJlcihsb25nUGFyYW0pKTsKICAgICBhcmdzLmFwcGVuZCh0b0pT
KHN0YXRlLCBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLCB0ZXN0Tm9kZVBhcmFtKSk7CiAKLSAgICBO
YWtlZFB0cjxFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOworICAgIE5ha2VkUHRyPEpTQzo6
RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNr
VHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlm
IChyZXR1cm5lZEV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01J
bXBsZW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24u
Y3BwCmluZGV4IGFmYTM2Mjg4MjRhMGZhZjMwNGQ4ZGJiY2Y1NGUyYjNjYTg3MTg5MTIuLmVmYmU1
MWZmZjU5ZDc0ZTkzZDM5NGU4YzkwNTc1NWQ0MTZiODA3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RPTUltcGxlbWVudGF0aW9uLmNwcApAQCAtMjUsMjUgKzI1LDI1IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKIAotI2luY2x1ZGUgIkNvbnRl
bnRUeXBlLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkNvbnRlbnRU
eXBlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUeXBlLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJGVFBEaXJlY3RvcnlEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNs
dWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIkZUUERpcmVjdG9yeURvY3VtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEhlYWRFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTFRpdGxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAj
aW5jbHVkZSAiSW1hZ2VEb2N1bWVudC5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIK
ICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJNZWRpYURvY3VtZW50LmgiCi0jaW5j
bHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKLSNpbmNsdWRlICJN
SU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgogI2luY2x1ZGUgIlBsdWdpbkRvY3VtZW50
LmgiCkBAIC03Myw2ICs3Myw3IEBAIHN0YXRpYyB2b2lkIGFkZFN0cmluZyhGZWF0dXJlU2V0JiBz
ZXQsIGNvbnN0IGNoYXIqIHN0cmluZykKIH0KIAogI2lmIEVOQUJMRShWSURFTykKKwogY2xhc3Mg
RE9NSW1wbGVtZW50YXRpb25TdXBwb3J0c1R5cGVDbGllbnQgOiBwdWJsaWMgTWVkaWFQbGF5ZXJT
dXBwb3J0c1R5cGVDbGllbnQgewogcHVibGljOgogICAgIERPTUltcGxlbWVudGF0aW9uU3VwcG9y
dHNUeXBlQ2xpZW50KGJvb2wgbmVlZHNIYWNrcywgY29uc3QgU3RyaW5nJiBob3N0KQpAQCAtODgs
NiArODksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9uZWVkc0hhY2tzOwogICAgIFN0cmluZyBt
X2hvc3Q7CiB9OworCiAjZW5kaWYKIAogc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRTVkcxMEZlYXR1
cmUoY29uc3QgU3RyaW5nJiBmZWF0dXJlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pCkBAIC0yMDcs
MTAzICsyMDksNTggQEAgYm9vbCBET01JbXBsZW1lbnRhdGlvbjo6aGFzRmVhdHVyZShjb25zdCBT
dHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotUmVmUHRyPERvY3VtZW50VHlwZT4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3Vt
ZW50VHlwZShjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsCi0gICAgY29uc3QgU3RyaW5nJiBw
dWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNl
cHRpb25PcjxSZWY8RG9jdW1lbnRUeXBlPj4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3Vt
ZW50VHlwZShjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIGNvbnN0IFN0cmluZyYgcHVibGlj
SWQsIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQpCiB7Ci0gICAgU3RyaW5nIHByZWZpeCwgbG9jYWxO
YW1lOwotICAgIGlmICghRG9jdW1lbnQ6OnBhcnNlUXVhbGlmaWVkTmFtZShxdWFsaWZpZWROYW1l
LCBwcmVmaXgsIGxvY2FsTmFtZSwgZWMpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKKyAgICBTdHJpbmcgcHJlZml4OworICAgIFN0cmluZyBsb2NhbE5hbWU7
CisgICAgRG9jdW1lbnQ6OnBhcnNlUXVhbGlmaWVkTmFtZShxdWFsaWZpZWROYW1lLCBwcmVmaXgs
IGxvY2FsTmFtZSwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbihl
Yyk7CiAKICAgICByZXR1cm4gRG9jdW1lbnRUeXBlOjpjcmVhdGUobV9kb2N1bWVudCwgcXVhbGlm
aWVkTmFtZSwgcHVibGljSWQsIHN5c3RlbUlkKTsKIH0KIAotRE9NSW1wbGVtZW50YXRpb24qIERP
TUltcGxlbWVudGF0aW9uOjpnZXRJbnRlcmZhY2UoY29uc3QgU3RyaW5nJiAvKmZlYXR1cmUqLykK
K3N0YXRpYyBpbmxpbmUgUmVmPFhNTERvY3VtZW50PiBjcmVhdGVYTUxEb2N1bWVudChjb25zdCBT
dHJpbmcmIG5hbWVzcGFjZVVSSSkKIHsKLSAgICByZXR1cm4gMDsKKyAgICBpZiAobmFtZXNwYWNl
VVJJID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpCisgICAgICAgIHJldHVybiBTVkdEb2N1
bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgpKTsKKyAgICBpZiAobmFtZXNwYWNlVVJJID09IEhU
TUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpCisgICAgICAgIHJldHVybiBYTUxEb2N1bWVudDo6
Y3JlYXRlWEhUTUwobnVsbHB0ciwgVVJMKCkpOworICAgIHJldHVybiBYTUxEb2N1bWVudDo6Y3Jl
YXRlKG51bGxwdHIsIFVSTCgpKTsKIH0KIAotUmVmUHRyPFhNTERvY3VtZW50PiBET01JbXBsZW1l
bnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksCi0gICAg
Y29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBEb2N1bWVudFR5cGUqIGRvY3R5cGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8UmVmPFhNTERvY3VtZW50Pj4gRE9NSW1wbGVtZW50
YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBT
dHJpbmcmIHF1YWxpZmllZE5hbWUsIERvY3VtZW50VHlwZSogZG9jdW1lbnRUeXBlKQogewotICAg
IFJlZlB0cjxYTUxEb2N1bWVudD4gZG9jOwotICAgIGlmIChuYW1lc3BhY2VVUkkgPT0gU1ZHTmFt
ZXM6OnN2Z05hbWVzcGFjZVVSSSkKLSAgICAgICAgZG9jID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZSgw
LCBVUkwoKSk7Ci0gICAgZWxzZSBpZiAobmFtZXNwYWNlVVJJID09IEhUTUxOYW1lczo6eGh0bWxO
YW1lc3BhY2VVUkkpCi0gICAgICAgIGRvYyA9IFhNTERvY3VtZW50OjpjcmVhdGVYSFRNTCgwLCBV
UkwoKSk7Ci0gICAgZWxzZQotICAgICAgICBkb2MgPSBYTUxEb2N1bWVudDo6Y3JlYXRlKDAsIFVS
TCgpKTsKKyAgICBhdXRvIGRvY3VtZW50ID0gY3JlYXRlWE1MRG9jdW1lbnQobmFtZXNwYWNlVVJJ
KTsKIAotICAgIGRvYy0+c2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3kobV9kb2N1bWVudC5zZWN1cml0
eU9yaWdpblBvbGljeSgpKTsKKyAgICBkb2N1bWVudC0+c2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3ko
bV9kb2N1bWVudC5zZWN1cml0eU9yaWdpblBvbGljeSgpKTsKIAotICAgIFJlZlB0cjxOb2RlPiBk
b2N1bWVudEVsZW1lbnQ7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGRvY3VtZW50RWxlbWVudDsKICAg
ICBpZiAoIXF1YWxpZmllZE5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGRvY3VtZW50RWxlbWVu
dCA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgZWMp
OworICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgZG9jdW1lbnRFbGVtZW50
ID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUs
IGVjKTsKICAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uKGVjKTsKICAgICB9CiAKLSAgICBpZiAoZG9jdHlwZSkK
LSAgICAgICAgZG9jLT5hcHBlbmRDaGlsZCgqZG9jdHlwZSk7CisgICAgaWYgKGRvY3VtZW50VHlw
ZSkKKyAgICAgICAgZG9jdW1lbnQtPmFwcGVuZENoaWxkKCpkb2N1bWVudFR5cGUpOwogICAgIGlm
IChkb2N1bWVudEVsZW1lbnQpCi0gICAgICAgIGRvYy0+YXBwZW5kQ2hpbGQoKmRvY3VtZW50RWxl
bWVudCk7CisgICAgICAgIGRvY3VtZW50LT5hcHBlbmRDaGlsZCgqZG9jdW1lbnRFbGVtZW50KTsK
IAotICAgIHJldHVybiBkb2M7CisgICAgcmV0dXJuIFdURk1vdmUoZG9jdW1lbnQpOwogfQogCi1S
ZWY8Q1NTU3R5bGVTaGVldD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUNTU1N0eWxlU2hlZXQo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBtZWRpYSwgRXhjZXB0aW9uQ29kZSYpCitSZWY8
Q1NTU3R5bGVTaGVldD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUNTU1N0eWxlU2hlZXQoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBtZWRpYSkKIHsKICAgICAvLyBGSVhNRTogVGl0bGUg
c2hvdWxkIGJlIHNldC4KICAgICAvLyBGSVhNRTogTWVkaWEgY291bGQgaGF2ZSB3cm9uZyBzeW50
YXgsIGluIHdoaWNoIGNhc2Ugd2Ugc2hvdWxkIGdlbmVyYXRlIGFuIGV4Y2VwdGlvbi4KLSAgICBS
ZWY8Q1NTU3R5bGVTaGVldD4gc2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoU3R5bGVTaGVl
dENvbnRlbnRzOjpjcmVhdGUoKSk7CisgICAgYXV0byBzaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNy
ZWF0ZShTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZSgpKTsKICAgICBzaGVldC0+c2V0TWVkaWFR
dWVyaWVzKE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZUFsbG93aW5nRGVzY3JpcHRpb25TeW50YXgobWVk
aWEpKTsKICAgICByZXR1cm4gc2hlZXQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlk
WE1MTUlNRVR5cGVDaGFyKFVDaGFyIGMpCi17Ci0gICAgLy8gVmFsaWQgY2hhcmFjdGVycyBwZXIg
UkZDcyAzMDIzIGFuZCAyMDQ1OgotICAgIC8vIDAtOWEtekEtWl8tK34hJF57fXwuJSdgIyYqCi0g
ICAgcmV0dXJuIGlzQVNDSUlBbHBoYW51bWVyaWMoYykgfHwgYyA9PSAnIScgfHwgYyA9PSAnIycg
fHwgYyA9PSAnJCcgfHwgYyA9PSAnJScgfHwgYyA9PSAnJicgfHwgYyA9PSAnXCcnIHx8IGMgPT0g
JyonIHx8IGMgPT0gJysnCi0gICAgICAgIHx8IGMgPT0gJy0nIHx8IGMgPT0gJy4nIHx8IGMgPT0g
J14nIHx8IGMgPT0gJ18nIHx8IGMgPT0gJ2AnIHx8IGMgPT0gJ3snIHx8IGMgPT0gJ3wnIHx8IGMg
PT0gJ30nIHx8IGMgPT0gJ34nOwotfQotCi1ib29sIERPTUltcGxlbWVudGF0aW9uOjppc1hNTE1J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCi17Ci0gICAgLy8gRklYTUU6IENhbiB3ZSBt
b3ZlIHRoaXMgbG9naWMgdG8gTUlNRVR5cGVSZWdpc3RyeSBhbmQgaGF2ZSB0aGlzIGp1c3QgYmUg
YSBzaW5nbGUgZnVuY3Rpb24gY2FsbD8KLQotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShtaW1lVHlwZSwgInRleHQveG1sIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi94bWwiKSB8fCBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQveHNsIikpCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgaWYgKCFtaW1lVHlwZS5lbmRzV2l0aCgiK3htbCIsIGZhbHNlKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgc2l6ZV90IHNsYXNoUG9zaXRpb24gPSBtaW1lVHlwZS5maW5kKCcv
Jyk7Ci0gICAgLy8gVGFrZSBpbnRvIGFjY291bnQgdGhlICcreG1sJyBlbmRpbmcgb2YgbWltZVR5
cGUuCi0gICAgaWYgKHNsYXNoUG9zaXRpb24gPT0gbm90Rm91bmQgfHwgIXNsYXNoUG9zaXRpb24g
fHwgc2xhc2hQb3NpdGlvbiA9PSBtaW1lVHlwZS5sZW5ndGgoKSAtIDUpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIC8vIEFnYWluLCBtaW1lVHlwZSBlbmRzIHdpdGggJyt4bWwnLCBubyBu
ZWVkIHRvIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGF0IHN1YnN0cmluZy4KLSAgICBzaXplX3Qg
bWltZUxlbmd0aCA9IG1pbWVUeXBlLmxlbmd0aCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbWltZUxlbmd0aCAtIDQ7ICsraSkgewotICAgICAgICBpZiAoIWlzVmFsaWRYTUxNSU1FVHlw
ZUNoYXIobWltZVR5cGVbaV0pICYmIGkgIT0gc2xhc2hQb3NpdGlvbikKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBET01JbXBs
ZW1lbnRhdGlvbjo6aXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsKLSAg
ICAvLyBGSVhNRTogQ2FuIHdlIG1vdmUgdGhpcyBsb2dpYyB0byBNSU1FVHlwZVJlZ2lzdHJ5IGFu
ZCBoYXZlIHRoaXMganVzdCBiZSBhIHNpbmdsZSBmdW5jdGlvbiBjYWxsPwotCi0gICAgcmV0dXJu
IE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKG1pbWVUeXBl
KQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFw
cGxpY2F0aW9uL2pzb24iKSAvLyBSZW5kZXIgSlNPTiBhcyB0ZXh0L3BsYWluLgotICAgICAgICB8
fCAobWltZVR5cGUuc3RhcnRzV2l0aCgidGV4dC8iLCBmYWxzZSkKLSAgICAgICAgICAgICYmICFl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvaHRtbCIpCi0gICAg
ICAgICAgICAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0
L3htbCIpCi0gICAgICAgICAgICAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWlt
ZVR5cGUsICJ0ZXh0L3hzbCIpKTsKLX0KLQogUmVmPEhUTUxEb2N1bWVudD4gRE9NSW1wbGVtZW50
YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIGF1
dG8gZG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBVUkwoKSk7CkBAIC0z
MjEsNiArMjc4LDkgQEAgUmVmPEhUTUxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0
ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKQogCiBSZWY8RG9jdW1lbnQ+IERPTUlt
cGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIHR5cGUsIEZyYW1lKiBm
cmFtZSwgY29uc3QgVVJMJiB1cmwpCiB7CisgICAgLy8gRklYTUU6IENvbmZ1c2luZyB0byBoYXZl
IHRoaXMgaGVyZSB3aXRoIHB1YmxpYyBET00gQVBJcyBmb3IgY3JlYXRpbmcgZG9jdW1lbnRzLiBU
aGlzIGlzIGRpZmZlcmVudCBlbm91Z2ggdGhhdCBpdCBzaG91bGQgcGVyaGFwcyBiZSBtb3ZlZC4K
KyAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBpcyBkb2luZyBjYXNlIGluc2Vuc2l0aXZlIGNv
bXBhcmlzb25zIG9uIE1JTUUgdHlwZXMuIFNob3VsZCBkbyBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZSBpbnN0ZWFkLgorCiAgICAgLy8gUGx1Z2lucyBjYW5ub3QgdGFrZSBIVE1MIGFuZCBY
SFRNTCBmcm9tIHVzLCBhbmQgd2UgZG9uJ3QgZXZlbiBuZWVkIHRvIGluaXRpYWxpemUgdGhlIHBs
dWdpbiBkYXRhYmFzZSBmb3IgdGhvc2UuCiAgICAgaWYgKHR5cGUgPT0gInRleHQvaHRtbCIpCiAg
ICAgICAgIHJldHVybiBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKQEAgLTMzOCw3
ICsyOTgsNyBAQCBSZWY8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVu
dChjb25zdCBTdHJpbmcmIHR5cGUsIEZyYW1lKiBmcmFtZQogICAgICAgICByZXR1cm4gSW1hZ2VE
b2N1bWVudDo6Y3JlYXRlKCpmcmFtZSwgdXJsKTsKIAogICAgIFBsdWdpbkRhdGEqIHBsdWdpbkRh
dGEgPSBudWxscHRyOwotICAgIFBsdWdpbkRhdGE6OkFsbG93ZWRQbHVnaW5UeXBlcyBhbGxvd2Vk
UGx1Z2luVHlwZXMgPSBQbHVnaW5EYXRhOjpPbmx5QXBwbGljYXRpb25QbHVnaW5zOworICAgIGF1
dG8gYWxsb3dlZFBsdWdpblR5cGVzID0gUGx1Z2luRGF0YTo6T25seUFwcGxpY2F0aW9uUGx1Z2lu
czsKICAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICBpZiAoZnJhbWUt
PmxvYWRlcigpLnN1YmZyYW1lTG9hZGVyKCkuYWxsb3dQbHVnaW5zKCkpCiAgICAgICAgICAgICBh
bGxvd2VkUGx1Z2luVHlwZXMgPSBQbHVnaW5EYXRhOjpBbGxQbHVnaW5zOwpAQCAtMzY5LDEzICsz
MjksMTMgQEAgUmVmPERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQo
Y29uc3QgU3RyaW5nJiB0eXBlLCBGcmFtZSogZnJhbWUKICAgICAvLyBhbmQgYWxzbyBzZXJ2ZXMg
YXMgYW4gb3B0aW1pemF0aW9uIHRvIHByZXZlbnQgbG9hZGluZyB0aGUgcGx1Zy1pbiBkYXRhYmFz
ZSBpbiB0aGUgY29tbW9uIGNhc2UuCiAgICAgaWYgKHR5cGUgIT0gInRleHQvcGxhaW4iICYmICgo
cGx1Z2luRGF0YSAmJiBwbHVnaW5EYXRhLT5zdXBwb3J0c1dlYlZpc2libGVNaW1lVHlwZSh0eXBl
LCBhbGxvd2VkUGx1Z2luVHlwZXMpKSB8fCAoZnJhbWUgJiYgZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLnNob3VsZEFsd2F5c1VzZVBsdWdpbkRvY3VtZW50KHR5cGUpKSkpCiAgICAgICAgIHJldHVy
biBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwotICAgIGlmIChpc1RleHRNSU1F
VHlwZSh0eXBlKSkKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNUZXh0TUlNRVR5cGUodHlw
ZSkpCiAgICAgICAgIHJldHVybiBUZXh0RG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKIAog
ICAgIGlmICh0eXBlID09ICJpbWFnZS9zdmcreG1sIikKICAgICAgICAgcmV0dXJuIFNWR0RvY3Vt
ZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CiAKLSAgICBpZiAoaXNYTUxNSU1FVHlwZSh0eXBlKSkK
KyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZSh0eXBlKSkKICAgICAgICAg
cmV0dXJuIFhNTERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CiAKICAgICByZXR1cm4gSFRN
TERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1l
bnRhdGlvbi5oCmluZGV4IDg4ODBjNGM1MGMxMjk2YjZhOTJjY2I4NTBhYTdkMGU1YzdlZmM1OTQu
LmQ4NmFkZjA3YmYxYTIyMGEyZDEyODZkNGZjMTVhM2IzNzlhY2FiODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChD
KSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkg
QW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEg
RGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsNiArMjMsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1l
bnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzYsMjUgKzM3LDE0IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRlcmVmKCkgeyBtX2RvY3VtZW50LmRlcmVmKCk7IH0KICAgICBEb2N1bWVudCYg
ZG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50OyB9CiAKLSAgICAvLyBET00gbWV0aG9kcyAm
IGF0dHJpYnV0ZXMgZm9yIERPTUltcGxlbWVudGF0aW9uCi0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIGJvb2wgaGFzRmVhdHVyZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYg
dmVyc2lvbik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPERvY3VtZW50VHlwZT4gY3JlYXRl
RG9jdW1lbnRUeXBlKGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgU3RyaW5nJiBw
dWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxYTUxEb2N1bWVudD4gY3JlYXRlRG9jdW1lbnQoY29uc3QgU3Ry
aW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgRG9jdW1lbnRU
eXBlKiwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgRE9NSW1wbGVtZW50YXRpb24qIGdldEludGVy
ZmFjZShjb25zdCBTdHJpbmcmIGZlYXR1cmUpOwotCi0gICAgLy8gRnJvbSB0aGUgRE9NSW1wbGVt
ZW50YXRpb25DU1MgaW50ZXJmYWNlCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxDU1NT
dHlsZVNoZWV0PiBjcmVhdGVDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0
IFN0cmluZyYgbWVkaWEsIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgIC8vIEZyb20gdGhlIEhUTUxE
T01JbXBsZW1lbnRhdGlvbiBpbnRlcmZhY2UKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25P
cjxSZWY8RG9jdW1lbnRUeXBlPj4gY3JlYXRlRG9jdW1lbnRUeXBlKGNvbnN0IFN0cmluZyYgcXVh
bGlmaWVkTmFtZSwgY29uc3QgU3RyaW5nJiBwdWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1J
ZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPFhNTERvY3VtZW50Pj4gY3Jl
YXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVh
bGlmaWVkTmFtZSwgRG9jdW1lbnRUeXBlKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEhUTUxE
b2N1bWVudD4gY3JlYXRlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGhhc0ZlYXR1cmUoY29uc3QgU3RyaW5nJiBmZWF0dXJl
LCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
Q1NTU3R5bGVTaGVldD4gY3JlYXRlQ1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBTdHJpbmcmIG1lZGlhKTsKIAotICAgIC8vIE90aGVyIG1ldGhvZHMgKG5vdCBwYXJ0IG9m
IERPTSkKICAgICBzdGF0aWMgUmVmPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudChjb25zdCBTdHJp
bmcmIE1JTUVUeXBlLCBGcmFtZSosIGNvbnN0IFVSTCYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIGJvb2wgaXNYTUxNSU1FVHlwZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIE1J
TUVUeXBlKTsKLQogcHJpdmF0ZToKICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaWRsIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbAppbmRleCBkYTI2Y2QwZGE2NzVmZGY2
YTE1ODFiMWM5MjkwODU3MmViM2YwYjdjLi43NDM1NjEzMzVkMjM4OTc4OWVhZGJiYmM2NWQ5NDli
ZDAwZjllMzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRp
b24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGwKQEAg
LTIzLDE1ICsyMywxNCBAQAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbERvY3VtZW50LAog
ICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBET01JbXBsZW1lbnRh
dGlvbiB7CisgICAgW05ld09iamVjdF0gRG9jdW1lbnRUeXBlIGNyZWF0ZURvY3VtZW50VHlwZShE
T01TdHJpbmcgcXVhbGlmaWVkTmFtZSwgRE9NU3RyaW5nIHB1YmxpY0lkLCBET01TdHJpbmcgc3lz
dGVtSWQpOworICAgIFtOZXdPYmplY3RdIFhNTERvY3VtZW50IGNyZWF0ZURvY3VtZW50KERPTVN0
cmluZz8gbmFtZXNwYWNlVVJJLCBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBx
dWFsaWZpZWROYW1lLCBvcHRpb25hbCBEb2N1bWVudFR5cGU/IGRvY3R5cGUgPSBudWxsKTsKKyAg
ICBbTmV3T2JqZWN0XSBIVE1MRG9jdW1lbnQgY3JlYXRlSFRNTERvY3VtZW50KG9wdGlvbmFsIERP
TVN0cmluZyB0aXRsZSk7CisKKyAgICAvLyBGSVhNRTogTGF0ZXN0IERPTSBzcGVjaWZpY2F0aW9u
IHNheXMgdGhpcyBzaG91bGQgaWdub3JlIGFsbCBhcmd1bWVudHMgYW5kIGFsd2F5cyByZXR1cm4g
dHJ1ZS4KICAgICAvLyBGSVhNRTogVXNpbmcgInVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0
ZXIgdmFsdWUgaXMgd3JvbmcuCiAgICAgYm9vbGVhbiBoYXNGZWF0dXJlKG9wdGlvbmFsIERPTVN0
cmluZyBmZWF0dXJlID0gInVuZGVmaW5lZCIsIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gb3B0
aW9uYWwgRE9NU3RyaW5nIHZlcnNpb24gPSAidW5kZWZpbmVkIik7CiAKLSAgICBbUmFpc2VzRXhj
ZXB0aW9uLCBOZXdPYmplY3RdIERvY3VtZW50VHlwZSBjcmVhdGVEb2N1bWVudFR5cGUoRE9NU3Ry
aW5nIHF1YWxpZmllZE5hbWUsIERPTVN0cmluZyBwdWJsaWNJZCwgRE9NU3RyaW5nIHN5c3RlbUlk
KTsKLQotICAgIFtOZXdPYmplY3QsIFJhaXNlc0V4Y2VwdGlvbl0gWE1MRG9jdW1lbnQgY3JlYXRl
RG9jdW1lbnQoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIFtUcmVhdE51bGxBcz1FbXB0eVN0cmlu
Z10gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIG9wdGlvbmFsIERvY3VtZW50VHlwZT8gZG9jdHlw
ZSA9IG51bGwpOwotCiAgICAgLy8gRklYTUU6IFVzaW5nICJ1bmRlZmluZWQiIGFzIGRlZmF1bHQg
cGFyYW1ldGVyIHZhbHVlIGlzIHdyb25nLgotICAgIFtSYWlzZXNFeGNlcHRpb25dIENTU1N0eWxl
U2hlZXQgY3JlYXRlQ1NTU3R5bGVTaGVldChvcHRpb25hbCBET01TdHJpbmcgdGl0bGUgPSAidW5k
ZWZpbmVkIiwgb3B0aW9uYWwgRE9NU3RyaW5nIG1lZGlhID0gInVuZGVmaW5lZCIpOwotCi0gICAg
W05ld09iamVjdF0gSFRNTERvY3VtZW50IGNyZWF0ZUhUTUxEb2N1bWVudChvcHRpb25hbCBET01T
dHJpbmcgdGl0bGUpOworICAgIENTU1N0eWxlU2hlZXQgY3JlYXRlQ1NTU3R5bGVTaGVldChvcHRp
b25hbCBET01TdHJpbmcgdGl0bGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgRE9NU3RyaW5nIG1l
ZGlhID0gInVuZGVmaW5lZCIpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDdhOGZi
ZDhlZWUwNGY5OWEwZDU3ZDJmODFhNTk2MDllMTcwNTdkNDUuLmI2Y2U5NWVkN2RiOGVkYmZhZWQ0
NjVjNTNkZTE4ZGMyNzg1M2IzMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTM3Mywx
MSArMTM3Myw2IEBAIHZvaWQgRG9jdW1lbnQ6OnNldENvbnRlbnRMYW5ndWFnZShjb25zdCBTdHJp
bmcmIGxhbmd1YWdlKQogCiB2b2lkIERvY3VtZW50OjpzZXRYTUxWZXJzaW9uKGNvbnN0IFN0cmlu
ZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKCFpbXBsZW1lbnRhdGlv
bigpLmhhc0ZlYXR1cmUoIlhNTCIsIFN0cmluZygpKSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQ
T1JURURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYgKCFYTUxEb2N1bWVu
dFBhcnNlcjo6c3VwcG9ydHNYTUxWZXJzaW9uKHZlcnNpb24pKSB7CiAgICAgICAgIGVjID0gTk9U
X1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTEzODYsMTMgKzEzODEsOCBAQCB2
b2lkIERvY3VtZW50OjpzZXRYTUxWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAgICAgbV94bWxWZXJzaW9uID0gdmVyc2lvbjsKIH0KIAotdm9pZCBEb2N1
bWVudDo6c2V0WE1MU3RhbmRhbG9uZShib29sIHN0YW5kYWxvbmUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQordm9pZCBEb2N1bWVudDo6c2V0WE1MU3RhbmRhbG9uZShib29sIHN0YW5kYWxvbmUpCiB7Ci0g
ICAgaWYgKCFpbXBsZW1lbnRhdGlvbigpLmhhc0ZlYXR1cmUoIlhNTCIsIFN0cmluZygpKSkgewot
ICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
CiAgICAgbV94bWxTdGFuZGFsb25lID0gc3RhbmRhbG9uZSA/IFN0YW5kYWxvbmUgOiBOb3RTdGFu
ZGFsb25lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDBkOWY5YmNiNTUwZjcxMDg1Y2Rm
ODNkZmEzZjE2YTkyOTY2MjVhODkuLjJlZjVkNTU4ODk4MzlhZDZhY2E0ZjU5ZGIyZjI1NjgwYmI5
Yjc3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC00NDIsNyArNDQyLDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRYTUxFbmNvZGluZyhjb25zdCBTdHJpbmcmIGVuY29kaW5nKSB7IG1feG1s
RW5jb2RpbmcgPSBlbmNvZGluZzsgfSAvLyByZWFkLW9ubHkgcHJvcGVydHksIG9ubHkgdG8gYmUg
c2V0IGZyb20gWE1MRG9jdW1lbnRQYXJzZXIKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFhN
TFZlcnNpb24oY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0WE1MU3RhbmRhbG9uZShib29sLCBFeGNlcHRpb25Db2RlJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRYTUxTdGFuZGFsb25lKGJvb2wpOwogICAgIHZvaWQgc2V0SGFz
WE1MRGVjbGFyYXRpb24oYm9vbCBoYXNYTUxEZWNsYXJhdGlvbikgeyBtX2hhc1hNTERlY2xhcmF0
aW9uID0gaGFzWE1MRGVjbGFyYXRpb24gPyAxIDogMDsgfQogCiAgICAgU3RyaW5nIGRvY3VtZW50
VVJJKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudFVSSTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5p
ZGwKaW5kZXggYzhlMDYxNDllNzViNzE0ZDNjNmEwOWM3YjQ1MGU0MjJkMjdkZmMzYy4uZTlmZjhi
MTkxZjhlNTE5M2QxYmZmZGZkYWU0MmM2ODRmNDEwNmU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aWRsCkBAIC01Myw3ICs1Myw3IEBACiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
PyB4bWxFbmNvZGluZzsKICAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9N
U3RyaW5nPyB4bWxWZXJzaW9uOwotICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0
ZSBib29sZWFuIHhtbFN0YW5kYWxvbmU7CisgICAgYXR0cmlidXRlIGJvb2xlYW4geG1sU3RhbmRh
bG9uZTsKIAogICAgIFtSYWlzZXNFeGNlcHRpb25dIE5vZGUgYWRvcHROb2RlKE5vZGUgc291cmNl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V4Y2VwdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhY2JkNWYyZmQ3ZWVhZTk2ZDI1
M2VjYjhhM2Y0ODQzZWU5YWM0MDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXhjZXB0aW9uLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKworQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
K2FyZSBtZXQ6CisxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCitFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECitXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCitESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKK0RJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CitMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KK0FOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyovCisKKyNwcmFnbWEgb25j
ZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIEV4Y2VwdGlvbkNvZGUgPSBpbnQ7CisK
K2NsYXNzIEV4Y2VwdGlvbiB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRXhjZXB0aW9uKEV4Y2Vw
dGlvbkNvZGUpOworCisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uQ29kZSBjb2RlKCkgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgRXhjZXB0aW9uQ29kZSBtX2NvZGU7Cit9OworCitpbmxpbmUg
RXhjZXB0aW9uOjpFeGNlcHRpb24oRXhjZXB0aW9uQ29kZSBjb2RlKQorICAgIDogbV9jb2RlKGNv
ZGUpCit7Cit9CisKK2lubGluZSBFeGNlcHRpb25Db2RlIEV4Y2VwdGlvbjo6Y29kZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fY29kZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0V4Y2VwdGlvbk9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zOWMwM2Y1NDJkNjAxODg4ZmExOGYwNTQwNWFmMmVjNTU4YmM2Mjc1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgKQEAgLTAsMCAr
MSw3MiBAQAorLyoKKworQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKK2FyZSBtZXQ6CisxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKwor
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCitFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECitXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCitE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKK0RJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CitMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KK0FOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRXhjZXB0aW9u
LmgiCisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiBjbGFzcyBFeGNlcHRpb25PciB7CitwdWJsaWM6
CisgICAgRXhjZXB0aW9uT3IoRXhjZXB0aW9uJiYpOworICAgIEV4Y2VwdGlvbk9yKFJldHVyblR5
cGUmJik7CisKKyAgICBib29sIGhhc0V4Y2VwdGlvbigpIGNvbnN0OworICAgIEV4Y2VwdGlvbkNv
ZGUgZXhjZXB0aW9uQ29kZSgpIGNvbnN0OworICAgIFJldHVyblR5cGUmJiB0YWtlUmV0dXJuVmFs
dWUoKTsKKworcHJpdmF0ZToKKyAgICBzdGQ6OmV4cGVyaW1lbnRhbDo6dmFyaWFudDxFeGNlcHRp
b24sIFJldHVyblR5cGU+IG1fdmFsdWU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5U
eXBlPiBpbmxpbmUgRXhjZXB0aW9uT3I8UmV0dXJuVHlwZT46OkV4Y2VwdGlvbk9yKEV4Y2VwdGlv
biYmIGV4Y2VwdGlvbikKKyAgICA6IG1fdmFsdWUoV1RGTW92ZShleGNlcHRpb24pKQoreworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiBpbmxpbmUgRXhjZXB0aW9uT3I8UmV0dXJu
VHlwZT46OkV4Y2VwdGlvbk9yKFJldHVyblR5cGUmJiByZXR1cm5WYWx1ZSkKKyAgICA6IG1fdmFs
dWUoV1RGTW92ZShyZXR1cm5WYWx1ZSkpCit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJldHVy
blR5cGU+IGlubGluZSBib29sIEV4Y2VwdGlvbk9yPFJldHVyblR5cGU+OjpoYXNFeGNlcHRpb24o
KSBjb25zdAoreworICAgIHJldHVybiBzdGQ6OmV4cGVyaW1lbnRhbDo6aG9sZHNfYWx0ZXJuYXRp
dmU8RXhjZXB0aW9uPihtX3ZhbHVlKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlw
ZT4gaW5saW5lIEV4Y2VwdGlvbkNvZGUgRXhjZXB0aW9uT3I8UmV0dXJuVHlwZT46OmV4Y2VwdGlv
bkNvZGUoKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6OmV4cGVyaW1lbnRhbDo6Z2V0PEV4Y2Vw
dGlvbj4obV92YWx1ZSkuY29kZSgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBl
PiBpbmxpbmUgUmV0dXJuVHlwZSYmIEV4Y2VwdGlvbk9yPFJldHVyblR5cGU+Ojp0YWtlUmV0dXJu
VmFsdWUoKQoreworICAgIHJldHVybiBzdGQ6OmV4cGVyaW1lbnRhbDo6Z2V0PFJldHVyblR5cGU+
KFdURk1vdmUobV92YWx1ZSkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVt
cGxhdGVFbGVtZW50LmNwcAppbmRleCAzYjU2ZTU1ZjBlYWIzNTYxMTJhOTlhY2ZmOTAxM2IzYWYz
ZTA5YWFmLi41ODFhYTMzM2VjMGI3YmM0ZDhmYzlkYzZjYmUyOWRiYzJmZDg5YWQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHAKQEAgLTI5LDEwICsyOSw4
IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaW5jbHVkZSAiSFRNTFRlbXBsYXRl
RWxlbWVudC5oIgogCi0jaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJE
b2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAi
VGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCA3M2I0OTk5M2NiMTI5N2ViMGNi
OTMzNDgxMDE2N2Y4MzM3NjExMjA1Li5mOGU2Njc4ZjMyNzBiZDg1MzZmMGYwM2ZmODhmNWI4OGJj
MjJhNzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcApAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgogI2lu
Y2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIkNvb2tpZUphci5oIgotI2luY2x1ZGUgIkRPTUlt
cGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiRE9NUGF0Y2hTdXBwb3J0LmgiCiAjaW5jbHVkZSAi
RE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAgLTU5LDYgKzU4LDcg
QEAKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKKyNpbmNsdWRl
ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAi
TWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0xMjgsNyArMTI4LDcgQEAgc3Rh
dGljIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBjcmVhdGVYSFJUZXh0RGVjb2Rlcihjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLAogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNv
ZGVyOwogICAgIGlmICghdGV4dEVuY29kaW5nTmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIGRlY29k
ZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCB0ZXh0RW5jb2Rp
bmdOYW1lKTsKLSAgICBlbHNlIGlmIChET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlwZSht
aW1lVHlwZSkpIHsKKyAgICBlbHNlIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1hNTE1JTUVUeXBl
KG1pbWVUeXBlKSkgewogICAgICAgICBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3Jl
YXRlKCJhcHBsaWNhdGlvbi94bWwiKTsKICAgICAgICAgZGVjb2Rlci0+dXNlTGVuaWVudFhNTERl
Y29kaW5nKCk7CiAgICAgfSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSht
aW1lVHlwZSwgInRleHQvaHRtbCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggN2JhMTgwNTAwYWJlZjQ4ZjhkYjAzOTM5NTUz
YmM5ZDIwYTJlMTMyZC4uOWZmMjhlMWRlYzM1ZGFmZmFlNmM0NjJlMmUyOTRlZDc5YzIwMDU1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwCkBAIC0zMCwyNCArMzAsMTggQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VzRGF0YS5o
IgogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKLSNpbmNsdWRlICJET01JbXBsZW1lbnRh
dGlvbi5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJl
c291cmNlRGVjb2Rlci5oIgogCi1uYW1lc3BhY2UgewotLy8gMTAwTUIKLXN0YXRpYyBjb25zdCBz
aXplX3QgbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplID0gMTAwICogMTAwMCAqIDEwMDA7Ci0K
LS8vIDEwTUIKLXN0YXRpYyBjb25zdCBzaXplX3QgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVu
dFNpemUgPSAxMCAqIDEwMDAgKiAxMDAwOwotfQotCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIFJlc291cmNlRGF0YQorc3RhdGljIGNvbnN0
IHNpemVfdCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUgPSAxMDAgKiAxMDAwICogMTAwMDsg
Ly8gMTAwTUIKK3N0YXRpYyBjb25zdCBzaXplX3QgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVu
dFNpemUgPSAxMCAqIDEwMDAgKiAxMDAwOyAvLyAxME1CCisKIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29u
c3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAs
IG1fbG9hZGVySWQobG9hZGVySWQpCkBAIC0xMTcsNyArMTExLDYgQEAgc2l6ZV90IE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogICAgIHJl
dHVybiBjb250ZW50U2l6ZUluQnl0ZXMobV9jb250ZW50KSAtIGRhdGFMZW5ndGg7CiB9CiAKLS8v
IE5ldHdvcmtSZXNvdXJjZXNEYXRhCiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6TmV0d29ya1Jlc291
cmNlc0RhdGEoKQogICAgIDogbV9jb250ZW50U2l6ZSgwKQogICAgICwgbV9tYXhpbXVtUmVzb3Vy
Y2VzQ29udGVudFNpemUobWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplKQpAQCAtMTQxLDcgKzEz
NCw3IEBAIHN0YXRpYyBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gY3JlYXRlT3RoZXJSZXNv
dXJjZVRleHREZWNvZGVyKGNvbnN0IFN0cmluZyYKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVj
b2Rlcj4gZGVjb2RlcjsKICAgICBpZiAoIXRleHRFbmNvZGluZ05hbWUuaXNFbXB0eSgpKQogICAg
ICAgICBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwg
dGV4dEVuY29kaW5nTmFtZSk7Ci0gICAgZWxzZSBpZiAoRE9NSW1wbGVtZW50YXRpb246OmlzWE1M
TUlNRVR5cGUobWltZVR5cGUpKSB7CisgICAgZWxzZSBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNY
TUxNSU1FVHlwZShtaW1lVHlwZSkpIHsKICAgICAgICAgZGVjb2RlciA9IFRleHRSZXNvdXJjZURl
Y29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIik7CiAgICAgICAgIGRlY29kZXItPnVzZUxl
bmllbnRYTUxEZWNvZGluZygpOwogICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L2h0bWwiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCmluZGV4IDgwNzk0NDU3ZGVlNzgxMWFhNTgyMDJhMjlmZTBlMDg0ZDBhODQ2NjEu
LmU1NDc5MzhlOGQ0MjNkOTk0ZTg0ODc1MTY5M2VkNjY5NDNmZGRhYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkNocm9t
ZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXIuaCIKICNpbmNsdWRlICJDb250ZW50
U2VjdXJpdHlQb2xpY3kuaCIKLSNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1
ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUg
IkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4
dFJlc291cmNlRGVjb2Rlci5jcHAKaW5kZXggOTVkMzZlMzE1YTA1Yjg1Yjc1MmFhNDQyY2NmYTVi
MTQwZGM2YWY3Ni4uZmU5NGI3ZjgxODc0NmUzZDJlN2FiMzBiNDY3ZmEwOWUxM2IxMjQ5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcApAQCAtMjMs
OSArMjMsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURl
Y29kZXIuaCIKIAotI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSFRN
TE1ldGFDaGFyc2V0UGFyc2VyLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAi
TUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlRleHRDb2RlYy5oIgogI2luY2x1ZGUgIlRl
eHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZ0RldGVjdG9yLmgiCkBAIC0zMDYs
NyArMzA2LDcgQEAgVGV4dFJlc291cmNlRGVjb2Rlcjo6Q29udGVudFR5cGUgVGV4dFJlc291cmNl
RGVjb2Rlcjo6ZGV0ZXJtaW5lQ29udGVudFR5cGUoY29uc3QKICAgICAgICAgcmV0dXJuIENTUzsK
ICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L2h0
bWwiKSkKICAgICAgICAgcmV0dXJuIEhUTUw7Ci0gICAgaWYgKERPTUltcGxlbWVudGF0aW9uOjpp
c1hNTE1JTUVUeXBlKG1pbWVUeXBlKSkKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxN
SU1FVHlwZShtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybiBYTUw7CiAgICAgcmV0dXJuIFBsYWlu
VGV4dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVn
aXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAK
aW5kZXggM2EzNDM5Njc1N2I2NTYxMjIzYzZlMjJkYjcxZWQwMTlhMDUxNTIxYy4uYWRkMjhmZmM2
MjllZmMzZDE5NmMyZGY2YWU0NmYxMzM4NzZmMjdhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC0yOSwyMCArMjksMjEgQEAKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KIAogI2lmIFVTRShDRykKICNpbmNsdWRlICJJbWFnZVNvdXJjZUNHLmgiCi0jaWYgIVBM
QVRGT1JNKElPUykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjZW5kaWYKKworI2lmIFVT
RShDRykgJiYgIVBMQVRGT1JNKElPUykKICNpbmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0Fw
cGxpY2F0aW9uU2VydmljZXMuaD4KLSNlbHNlCi0jaW5jbHVkZSA8SW1hZ2VJTy9DR0ltYWdlRGVz
dGluYXRpb24uaD4KICNlbmRpZgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFBM
QVRGT1JNKElPUykKKyNpbmNsdWRlIDxJbWFnZUlPL0NHSW1hZ2VEZXN0aW5hdGlvbi5oPgogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKQEAgLTU0Miw2
ICs1NDMsNDcgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1Vuc3VwcG9ydGVkVGV4dE1JTUVU
eXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIHVuc3VwcG9ydGVkVGV4dE1J
TUVUeXBlcy0+Y29udGFpbnMobWltZVR5cGUpOwogfQogCitib29sIE1JTUVUeXBlUmVnaXN0cnk6
OmlzVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgcmV0dXJuIGlz
U3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKG1pbWVUeXBlKQorICAgICAgICB8fCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL2pzb24iKSAvLyBS
ZW5kZXIgSlNPTiBhcyB0ZXh0L3BsYWluLgorICAgICAgICB8fCAobWltZVR5cGUuc3RhcnRzV2l0
aCgidGV4dC8iLCBmYWxzZSkKKyAgICAgICAgICAgICYmICFlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShtaW1lVHlwZSwgInRleHQvaHRtbCIpCisgICAgICAgICAgICAmJiAhZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L3htbCIpCisgICAgICAgICAgICAm
JiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L3hzbCIpKTsK
K30KKworCitzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZFhNTE1JTUVUeXBlQ2hhcihVQ2hhciBj
KQoreworICAgIC8vIFZhbGlkIGNoYXJhY3RlcnMgcGVyIFJGQ3MgMzAyMyBhbmQgMjA0NTogMC05
YS16QS1aXy0rfiEkXnt9fC4lJ2AjJioKKyAgICByZXR1cm4gaXNBU0NJSUFscGhhbnVtZXJpYyhj
KSB8fCBjID09ICchJyB8fCBjID09ICcjJyB8fCBjID09ICckJyB8fCBjID09ICclJyB8fCBjID09
ICcmJyB8fCBjID09ICdcJycgfHwgYyA9PSAnKicgfHwgYyA9PSAnKycKKyAgICAgICAgfHwgYyA9
PSAnLScgfHwgYyA9PSAnLicgfHwgYyA9PSAnXicgfHwgYyA9PSAnXycgfHwgYyA9PSAnYCcgfHwg
YyA9PSAneycgfHwgYyA9PSAnfCcgfHwgYyA9PSAnfScgfHwgYyA9PSAnfic7Cit9CisKK2Jvb2wg
TUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQor
eworICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQv
eG1sIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNh
dGlvbi94bWwiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRl
eHQveHNsIikpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFtaW1lVHlwZS5lbmRz
V2l0aCgiK3htbCIsIGZhbHNlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2l6ZV90
IHNsYXNoUG9zaXRpb24gPSBtaW1lVHlwZS5maW5kKCcvJyk7CisgICAgLy8gVGFrZSBpbnRvIGFj
Y291bnQgdGhlICcreG1sJyBlbmRpbmcgb2YgbWltZVR5cGUuCisgICAgaWYgKHNsYXNoUG9zaXRp
b24gPT0gbm90Rm91bmQgfHwgIXNsYXNoUG9zaXRpb24gfHwgc2xhc2hQb3NpdGlvbiA9PSBtaW1l
VHlwZS5sZW5ndGgoKSAtIDUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEFnYWlu
LCBtaW1lVHlwZSBlbmRzIHdpdGggJyt4bWwnLCBubyBuZWVkIHRvIGNoZWNrIHRoZSB2YWxpZGl0
eSBvZiB0aGF0IHN1YnN0cmluZy4KKyAgICBzaXplX3QgbWltZUxlbmd0aCA9IG1pbWVUeXBlLmxl
bmd0aCgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWltZUxlbmd0aCAtIDQ7ICsraSkg
eworICAgICAgICBpZiAoIWlzVmFsaWRYTUxNSU1FVHlwZUNoYXIobWltZVR5cGVbaV0pICYmIGkg
IT0gc2xhc2hQb3NpdGlvbikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRN
SU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIC8vIFNpbmNlIHRoaXMgc2V0
IGlzIHZlcnkgbGltaXRlZCBhbmQgaXMgbGlrZWx5IHRvIHJlbWFpbiBzbyB3ZSB3b24ndCBib3Ro
ZXIgd2l0aCB0aGUgb3ZlcmhlYWQKQEAgLTU3Nyw3ICs2MTksNyBAQCBib29sIE1JTUVUeXBlUmVn
aXN0cnk6OmNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChtaW1lVHlwZS5zdGFydHNXaXRoKCJ0ZXh0LyIsIGZhbHNl
KSkKLSAgICAgICAgcmV0dXJuICFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1Vuc3VwcG9ydGVkVGV4dE1J
TUVUeXBlKG1pbWVUeXBlKTsKKyAgICAgICAgcmV0dXJuICFpc1Vuc3VwcG9ydGVkVGV4dE1JTUVU
eXBlKG1pbWVUeXBlKTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCA0ZGM3NGU3Y2IzZmE4NTQ2ZjE4OGM2MmIw
N2ZlMzIwZTA4ZmI5ZDg1Li42NzQ5NTQ2ZGViYWIwNTM5NWVmODVhYjgyYWYwMWJkMjI4NTFiNzgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMyw3ICsx
Myw3IEBACiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKICAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCiAgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCiAgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKICAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKICAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgpAQCAtMjMsMTMgKzIzLDExIEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTUlNRVR5cGVSZWdpc3RyeV9oCi0jZGVmaW5l
IE1JTUVUeXBlUmVnaXN0cnlfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNjAsMTYgKzU4LDEyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1N1
cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsgICAgCiAK
ICAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBub24taW1hZ2UgTUlNRSB0eXBlIGlzIHN1aXRhYmxl
IGZvciBiZWluZyBsb2FkZWQgYXMgYQotICAgIC8vIGRvY3VtZW50IGluIGEgZnJhbWUuICBJbmNs
dWRlcyBzdXBwb3J0ZWQgSmF2YVNjcmlwdCBNSU1FIHR5cGVzLgorICAgIC8vIGRvY3VtZW50IGlu
IGEgZnJhbWUuIEluY2x1ZGVzIHN1cHBvcnRlZCBKYXZhU2NyaXB0IE1JTUUgdHlwZXMuCiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0
eXBlIGlzIHN1aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgdXNpbmcgPHZpZGVvPiBhbmQgPGF1ZGlv
Pi4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZE1lZGlhTUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKLSAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhl
IE1JTUUgdHlwZSBpcyBub3Qgc3VpdGFibGUgZm9yIGJlaW5nIGxvYWRlZCBhcyBhIHRleHQKLSAg
ICAvLyBkb2N1bWVudCBpbiBhIGZyYW1lLiBPbmx5IHZhbGlkIGZvciBNSU1FIHR5cGVzIGJlZ2lu
aW5nIHdpdGggInRleHQvIi4KLSAgICBzdGF0aWMgYm9vbCBpc1Vuc3VwcG9ydGVkVGV4dE1JTUVU
eXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwotCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEg
TUlNRSB0eXBlIGlzIGEgdmFsaWQgSmF2YSBhcHBsZXQgbWltZSB0eXBlLgogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIGlzSmF2YUFwcGxldE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpOwogCkBAIC04Niw2ICs4MCwxNSBAQCBwdWJsaWM6CiAgICAgLy8gInRleHQvIiBhbmQg
aXNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZSgpIHJldHVybnMgZmFsc2UuCiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIGJvb2wgY2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
OwogCisgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIG9uZSB3aGVyZSBhbiBY
TUwgZG9jdW1lbnQgc2hvdWxkIGJlIGNyZWF0ZWQKKyAgICAvLyByYXRoZXIgdGhhbiBhbiBIVE1M
IGRvY3VtZW50LgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzWE1MTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisKKyAgICAvLyBVc2VkIGluIHBhZ2UgbG9hZCBhbGdv
cml0aG0gdG8gZGVjaWRlIHdoZXRoZXIgdG8gZGlzcGxheSBhcyBhIHRleHQKKyAgICAvLyBkb2N1
bWVudCBpbiBhIGZyYW1lLiBOb3QgYSBnb29kIGlkZWEgdG8gdXNlIGVsc2V3aGVyZSwgYmVjYXVz
ZSB0aGF0IGNvZGUKKyAgICAvLyBtYWtlcyB0aGlzIHRlc3QgaXMgYWZ0ZXIgbWFueSBvdGhlciB0
ZXN0cyBhcmUgZG9uZSBvbiB0aGUgTUlNRSB0eXBlLgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBib29sIGlzVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworCiAgICAgLy8g
RklYTUU6IFdlYktpdCBjb2Rpbmcgc3R5bGUgc2F5cyB3ZSBzaG91bGQgbm90IGhhdmUgdGhlIHdv
cmQgImdldCIgaW4gdGhlIG5hbWVzIG9mIHRoZXNlIGZ1bmN0aW9ucy4KICAgICAvLyBGSVhNRTog
V291bGQgYmUgbmljZSB0byBmaW5kIGEgd2F5IHRvIGF2b2lkIGV4cG9zaW5nIHRoZXNlIHNldHMs
IGV2ZW4gd29yc2UgZXhwb3Npbmcgbm9uLWNvbnN0IHJlZmVyZW5jZXMuCiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBn
ZXRTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpOwpAQCAtMTAwLDEwICsxMDMsMTMgQEAgcHVibGlj
OgogICAgIC8vIEZJWE1FOiBXZWJLaXQgY29kaW5nIHN0eWxlIHNheXMgd2Ugc2hvdWxkIG5vdCBo
YXZlIHRoZSB3b3JkICJnZXQiIGluIHRoZSBuYW1lIG9mIHRoaXMgZnVuY3Rpb24uCiAgICAgLy8g
RklYTUU6IFVuY2xlYXIgd2hhdCB0aGUgY29uY2VwdCBvZiBhIG5vcm1hbGl6ZWQgTUlNRSB0eXBl
IGlzOyBjdXJyZW50bHkgaXQncyBhIHBsYXRmb3JtLXNwZWNpZmljIG5vdGlvbi4KICAgICBzdGF0
aWMgU3RyaW5nIGdldE5vcm1hbGl6ZWRNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKKworcHJpdmF0
ZToKKyAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIE1JTUUgdHlwZSBpcyBub3Qgc3VpdGFibGUg
Zm9yIGJlaW5nIGxvYWRlZCBhcyBhIHRleHQKKyAgICAvLyBkb2N1bWVudCBpbiBhIGZyYW1lLiBP
bmx5IHZhbGlkIGZvciBNSU1FIHR5cGVzIGJlZ2luaW5nIHdpdGggInRleHQvIi4KKyAgICBzdGF0
aWMgYm9vbCBpc1Vuc3VwcG9ydGVkVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
OwogfTsKIAogY29uc3QgU3RyaW5nJiBkZWZhdWx0TUlNRVR5cGUoKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gTUlNRVR5cGVSZWdpc3RyeV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5jcHAKaW5kZXggNzQyZjM4NTU4MWM5MDA2Y2E0NmYwYjA0N2EyMGExYTA0ZDU2ZDVm
Mi4uYzQyN2FiZDZkNGFmOGFkMzNkZGM2OGQxNWQwY2MzN2JhMTIxYTgzYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIlNWR0VsZW1lbnQu
aCIKIAogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgotI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJFdmVudC5oIgpAQCAtMzYyLDExICszNjEsNiBAQCB2b2lkIFNWR0VsZW1lbnQ6
OnJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihTVkdQYXJzaW5nRXJyb3IgZXJyb3IsIGNvbnN0
IFF1YWxpZgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1ib29sIFNWR0VsZW1lbnQ6
OmlzU3VwcG9ydGVkKFN0cmluZ0ltcGwqIGZlYXR1cmUsIFN0cmluZ0ltcGwqIHZlcnNpb24pIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIERPTUltcGxlbWVudGF0aW9uOjpoYXNGZWF0dXJlKGZlYXR1cmUs
IHZlcnNpb24pOwotfQotCiB2b2lkIFNWR0VsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5v
ZGUmIHJvb3RQYXJlbnQpCiB7CiAgICAgYm9vbCB3YXNJbkRvY3VtZW50ID0gcm9vdFBhcmVudC5p
bkRvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAppbmRleCBmM2ZmZTgxZTYyY2ZhOTQ2
NWIyN2MwM2UwOWEwZjY2OGEwNjlhYmVjLi4wZjFhNGMxMWIzZGUwYmI0NThjNzI5MTk0ZDQ5YTky
NmExYWZkYmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKQEAgLTEsNyArMSw3IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFu
biA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgpAQCAtMjAsMTAgKzIwLDggQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICov
CiAKLSNpZm5kZWYgU1ZHRWxlbWVudF9oCi0jZGVmaW5lIFNWR0VsZW1lbnRfaAorI3ByYWdtYSBv
bmNlCiAKLSNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJTVkdMYW5nU3BhY2UuaCIKICNpbmNsdWRlICJTVkdMb2Nh
dGFibGUuaCIKQEAgLTMxLDcgKzI5LDYgQEAKICNpbmNsdWRlICJTVkdQYXJzaW5nRXJyb3IuaCIK
ICNpbmNsdWRlICJTVkdQcm9wZXJ0eUluZm8uaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAKQEAgLTg2LDcgKzgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3Zn
TG9hZEV2ZW50VGltZXJGaXJlZCgpOwogICAgIHZpcnR1YWwgVGltZXIqIHN2Z0xvYWRFdmVudFRp
bWVyKCk7CiAKLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSogc3VwcGxlbWVudGFsVHJhbnNm
b3JtKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtKiBzdXBwbGVt
ZW50YWxUcmFuc2Zvcm0oKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICB2b2lkIGludmFsaWRh
dGVTVkdBdHRyaWJ1dGVzKCkgeyBlbnN1cmVVbmlxdWVFbGVtZW50RGF0YSgpLnNldEFuaW1hdGVk
U1ZHQXR0cmlidXRlc0FyZURpcnR5KHRydWUpOyB9CiAgICAgdm9pZCBpbnZhbGlkYXRlU1ZHUHJl
c2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKQpAQCAtMTgwLDggKzE3Nyw2IEBAIHByb3RlY3RlZDoK
IHByaXZhdGU6CiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRvSWQg
PSBOT1BTRVVETykgZmluYWw7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNTdXBwb3J0ZWQoU3RyaW5n
SW1wbCogZmVhdHVyZSwgU3RyaW5nSW1wbCogdmVyc2lvbikgY29uc3Q7Ci0KICAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJUYXJnZXQoKSB7IH0KIAogICAgIHZvaWQgYnVpbGRQZW5kaW5nUmVzb3VyY2Vz
SWZOZWVkZWQoKTsKQEAgLTI2NCw1ICsyNTksMyBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JF
R0lOKFdlYkNvcmU6OlNWR0VsZW1lbnQpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAK
ICNpbmNsdWRlICJTVkdFbGVtZW50VHlwZUhlbHBlcnMuaCIKLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBjMGI1YTU4MTdmZGE5NzcxNDY2ZjQ3YTAxZWQ2
Y2QwMDY2NjU3NjYwLi41ZDFmM2ZhM2EzY2Y2MzQ2OWM3MzY4Yzk0OTlmYzQ3NDhjZTFmZTIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNp
bmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJDcm9zc09yaWdpbkFj
Y2Vzc0NvbnRyb2wuaCIKICNpbmNsdWRlICJET01Gb3JtRGF0YS5oIgotI2luY2x1ZGUgIkRPTUlt
cGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgpAQCAtMzksNiArMzgsNyBAQAogI2luY2x1
ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5o
IgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFyc2VkQ29udGVudFR5cGUu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCkBAIC01OSw3ICs1OSw2IEBACiAjaW5jbHVk
ZSA8cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGlu
ZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTkzNSw3ICs5
MzQsNyBAQCBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlTUlNRVR5cGUoKSBjb25zdAog
CiBib29sIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZUlzWE1MKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gRE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlNRVR5cGUocmVzcG9uc2VNSU1FVHlwZSgpKTsK
KyAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZShyZXNwb25zZU1JTUVU
eXBlKCkpOwogfQogCiBpbnQgWE1MSHR0cFJlcXVlc3Q6OnN0YXR1cygpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHAKaW5kZXggMWI0NmJiMWNmOGRiZDZmYWVlNmRjODBlZDEzYzNiM2E1NWQxYWZhNy4uYTk5Zjlk
ZTcyNzNhNTYyZTE0NmQ5MzUzMjkyYTA1MDBiNDQ0OGQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtMTA2
NCw3ICsxMDY0LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnREb2N1bWVudChjb25z
dCB4bWxDaGFyKiB2ZXJzaW9uLCBjb25zdCB4bWxDaGFyKiBlbmMKICAgICBpZiAodmVyc2lvbikK
ICAgICAgICAgZG9jdW1lbnQoKS0+c2V0WE1MVmVyc2lvbih0b1N0cmluZyh2ZXJzaW9uKSwgQVNT
RVJUX05PX0VYQ0VQVElPTik7CiAgICAgaWYgKHN0YW5kYWxvbmUgIT0gU3RhbmRhbG9uZVVuc3Bl
Y2lmaWVkKQotICAgICAgICBkb2N1bWVudCgpLT5zZXRYTUxTdGFuZGFsb25lKHN0YW5kYWxvbmVJ
bmZvID09IFN0YW5kYWxvbmVZZXMsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgICAgICBkb2N1
bWVudCgpLT5zZXRYTUxTdGFuZGFsb25lKHN0YW5kYWxvbmVJbmZvID09IFN0YW5kYWxvbmVZZXMp
OwogICAgIGlmIChlbmNvZGluZykKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0WE1MRW5jb2Rpbmco
dG9TdHJpbmcoZW5jb2RpbmcpKTsKICAgICBkb2N1bWVudCgpLT5zZXRIYXNYTUxEZWNsYXJhdGlv
bih0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01ET01JbXBsZW1l
bnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01ET01JbXBsZW1lbnRhdGlvbi5t
bQppbmRleCBlMGEwYzA2NmJlMTQzYTc3MWQ0ZTM1ODgwNTkwMDE5ZTNlZDcwOGI1Li4yYTNlOTJk
NWU4ODQ5MGQ0YmY5OTk2M2RlOWE2YmU2NzAzZGJhM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9ET00vRE9NRE9NSW1wbGVtZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvRE9NL0RPTURPTUltcGxlbWVudGF0aW9uLm1tCkBAIC0zMCwxMDUgKzMwLDkwIEBACiAjaW1w
b3J0ICJET01Eb2N1bWVudFR5cGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NSFRNTERvY3VtZW50
SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUludGVybmFsLmgiCi0jaW1wb3J0ICJET01Ob2RlSW50
ZXJuYWwuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3Jl
L0NTU1N0eWxlU2hlZXQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NSW1wbGVtZW50YXRpb24uaD4K
LSNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRU
eXBlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxEb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9KU01haW5UaHJlYWRFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2su
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpD
RXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvWE1MRG9jdW1lbnQuaD4KLSNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KLQot
I2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb24q
PihfaW50ZXJuYWwpCiAKIEBpbXBsZW1lbnRhdGlvbiBET01JbXBsZW1lbnRhdGlvbgogCitzdGF0
aWMgaW5saW5lIFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uJiB1bndyYXAoRE9NSW1wbGVtZW50
YXRpb24mIHdyYXBwZXIpCit7CisgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PFdlYkNvcmU6
OkRPTUltcGxlbWVudGF0aW9uKj4od3JhcHBlci5faW50ZXJuYWwpOworfQorCiAtICh2b2lkKWRl
YWxsb2MKIHsKICAgICBpZiAoV2ViQ29yZU9iakNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5UaHJl
YWQoW0RPTUltcGxlbWVudGF0aW9uIGNsYXNzXSwgc2VsZikpCiAgICAgICAgIHJldHVybjsKLQog
ICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAgIElNUEwtPmRlcmVmKCk7CisgICAgICAgIHVud3Jh
cCgqc2VsZikuZGVyZWYoKTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKIC0gKEJPT0wpaGFz
RmVhdHVyZTooTlNTdHJpbmcgKilmZWF0dXJlIHZlcnNpb246KE5TU3RyaW5nICopdmVyc2lvbgog
ewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4g
SU1QTC0+aGFzRmVhdHVyZShmZWF0dXJlLCB2ZXJzaW9uKTsKKyAgICByZXR1cm4gdW53cmFwKCpz
ZWxmKS5oYXNGZWF0dXJlKGZlYXR1cmUsIHZlcnNpb24pOwogfQogCi0tIChCT09MKWhhc0ZlYXR1
cmU6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbgorLSAoRE9NRG9jdW1l
bnRUeXBlICopY3JlYXRlRG9jdW1lbnRUeXBlOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgcHVi
bGljSWQ6KE5TU3RyaW5nICopcHVibGljSWQgc3lzdGVtSWQ6KE5TU3RyaW5nICopc3lzdGVtSWQK
IHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJu
IElNUEwtPmhhc0ZlYXR1cmUoZmVhdHVyZSwgdmVyc2lvbik7CisgICAgYXV0byByZXN1bHQgPSB1
bndyYXAoKnNlbGYpLmNyZWF0ZURvY3VtZW50VHlwZShxdWFsaWZpZWROYW1lLCBwdWJsaWNJZCwg
c3lzdGVtSWQpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJhaXNl
RE9NRXhjZXB0aW9uKHJlc3VsdC5leGNlcHRpb25Db2RlKCkpOworICAgIHJldHVybiBraXQocmVz
dWx0LnRha2VSZXR1cm5WYWx1ZSgpLnB0cigpKTsKIH0KIAotLSAoRE9NRG9jdW1lbnRUeXBlICop
Y3JlYXRlRG9jdW1lbnRUeXBlOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgcHVibGljSWQ6KE5T
U3RyaW5nICopcHVibGljSWQgc3lzdGVtSWQ6KE5TU3RyaW5nICopc3lzdGVtSWQKKy0gKERPTURv
Y3VtZW50ICopY3JlYXRlRG9jdW1lbnQ6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIHF1YWxpZmll
ZE5hbWU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSBkb2N0eXBlOihET01Eb2N1bWVudFR5cGUg
Kilkb2N0eXBlCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTURvY3VtZW50VHlwZSAq
cmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmNyZWF0ZURvY3VtZW50VHlwZShxdWFsaWZp
ZWROYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQsIGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJvcihl
Yyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBhdXRvIHJlc3VsdCA9IHVud3JhcCgqc2VsZiku
Y3JlYXRlRG9jdW1lbnQobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCBjb3JlKGRvY3R5cGUp
KTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByYWlzZURPTUV4Y2Vw
dGlvbihyZXN1bHQuZXhjZXB0aW9uQ29kZSgpKTsKKyAgICByZXR1cm4ga2l0KHJlc3VsdC50YWtl
UmV0dXJuVmFsdWUoKS5wdHIoKSk7CiB9CiAKLS0gKERPTURvY3VtZW50VHlwZSAqKWNyZWF0ZURv
Y3VtZW50VHlwZTooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooTlNTdHJpbmcgKilwdWJsaWNJ
ZCA6KE5TU3RyaW5nICopc3lzdGVtSWQKKy0gKERPTUNTU1N0eWxlU2hlZXQgKiljcmVhdGVDU1NT
dHlsZVNoZWV0OihOU1N0cmluZyAqKXRpdGxlIG1lZGlhOihOU1N0cmluZyAqKW1lZGlhCiB7CiAg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTURvY3VtZW50VHlwZSAqcmVzdWx0ID0ga2l0KFdU
Rjo6Z2V0UHRyKElNUEwtPmNyZWF0ZURvY3VtZW50VHlwZShxdWFsaWZpZWROYW1lLCBwdWJsaWNJ
ZCwgc3lzdGVtSWQsIGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKKyAgICByZXR1cm4ga2l0KHVud3JhcCgqc2VsZikuY3JlYXRlQ1NTU3R5bGVTaGVl
dCh0aXRsZSwgbWVkaWEpLnB0cigpKTsKIH0KIAotLSAoRE9NRG9jdW1lbnQgKiljcmVhdGVEb2N1
bWVudDooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgcXVhbGlmaWVkTmFtZTooTlNTdHJpbmcgKilx
dWFsaWZpZWROYW1lIGRvY3R5cGU6KERPTURvY3VtZW50VHlwZSAqKWRvY3R5cGUKKy0gKERPTUhU
TUxEb2N1bWVudCAqKWNyZWF0ZUhUTUxEb2N1bWVudDooTlNTdHJpbmcgKil0aXRsZQogewogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Eb2N1bWVudCAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0
UHRyKElNUEwtPmNyZWF0ZURvY3VtZW50KG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgY29y
ZShkb2N0eXBlKSwgZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4g
cmVzdWx0OworICAgIHJldHVybiBraXQodW53cmFwKCpzZWxmKS5jcmVhdGVIVE1MRG9jdW1lbnQo
dGl0bGUpLnB0cigpKTsKIH0KIAotLSAoRE9NRG9jdW1lbnQgKiljcmVhdGVEb2N1bWVudDooTlNT
dHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihET01Eb2N1
bWVudFR5cGUgKilkb2N0eXBlCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBET01JbXBsZW1lbnRh
dGlvbiAoRE9NSW1wbGVtZW50YXRpb25EZXByZWNhdGVkKQorCistIChCT09MKWhhc0ZlYXR1cmU6
KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbgogewotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBET01Eb2N1bWVudCAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwt
PmNyZWF0ZURvY3VtZW50KG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgY29yZShkb2N0eXBl
KSwgZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0Owor
ICAgIHJldHVybiBbc2VsZiBoYXNGZWF0dXJlOmZlYXR1cmUgdmVyc2lvbjp2ZXJzaW9uXTsKIH0K
IAotLSAoRE9NQ1NTU3R5bGVTaGVldCAqKWNyZWF0ZUNTU1N0eWxlU2hlZXQ6KE5TU3RyaW5nICop
dGl0bGUgbWVkaWE6KE5TU3RyaW5nICopbWVkaWEKKy0gKERPTURvY3VtZW50VHlwZSAqKWNyZWF0
ZURvY3VtZW50VHlwZTooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooTlNTdHJpbmcgKilwdWJs
aWNJZCA6KE5TU3RyaW5nICopc3lzdGVtSWQKIHsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
RE9NQ1NTU3R5bGVTaGVldCAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmNyZWF0ZUNT
U1N0eWxlU2hlZXQodGl0bGUsIG1lZGlhLCBlYykpKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMp
OwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFtzZWxmIGNyZWF0ZURvY3VtZW50VHlw
ZTpxdWFsaWZpZWROYW1lIHB1YmxpY0lkOnB1YmxpY0lkIHN5c3RlbUlkOnN5c3RlbUlkXTsKIH0K
IAotLSAoRE9NQ1NTU3R5bGVTaGVldCAqKWNyZWF0ZUNTU1N0eWxlU2hlZXQ6KE5TU3RyaW5nICop
dGl0bGUgOihOU1N0cmluZyAqKW1lZGlhCistIChET01Eb2N1bWVudCAqKWNyZWF0ZURvY3VtZW50
OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KERP
TURvY3VtZW50VHlwZSAqKWRvY3R5cGUKIHsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9N
Q1NTU3R5bGVTaGVldCAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmNyZWF0ZUNTU1N0
eWxlU2hlZXQodGl0bGUsIG1lZGlhLCBlYykpKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwot
ICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFtzZWxmIGNyZWF0ZURvY3VtZW50Om5hbWVz
cGFjZVVSSSBxdWFsaWZpZWROYW1lOnF1YWxpZmllZE5hbWUgZG9jdHlwZTpkb2N0eXBlXTsKIH0K
IAotLSAoRE9NSFRNTERvY3VtZW50ICopY3JlYXRlSFRNTERvY3VtZW50OihOU1N0cmluZyAqKXRp
dGxlCistIChET01DU1NTdHlsZVNoZWV0ICopY3JlYXRlQ1NTU3R5bGVTaGVldDooTlNTdHJpbmcg
Kil0aXRsZSA6KE5TU3RyaW5nICopbWVkaWEKIHsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5jcmVhdGVI
VE1MRG9jdW1lbnQodGl0bGUpKSk7CisgICAgcmV0dXJuIFtzZWxmIGNyZWF0ZUNTU1N0eWxlU2hl
ZXQ6dGl0bGUgbWVkaWE6bWVkaWFdOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9ET00vRE9NRG9jdW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRG9j
dW1lbnQubW0KaW5kZXggNGNkOWJmYmZhNGUxNjYxY2M3OTVlNjlhYWJjMDk2NDI4ZDFlMDFiYi4u
NTlmNjFmNzI3ODg4OTM0ZjNjOGEzNzJjOGUxOWQ3M2QyNmM0ZmFlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0RPTS9ET01Eb2N1bWVudC5tbQpAQCAtNDYsNyArNDYsNiBAQAogI2ltcG9ydCAiRE9NSFRNTEVs
ZW1lbnRJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NSFRNTEhlYWRFbGVtZW50SW50ZXJuYWwuaCIK
ICNpbXBvcnQgIkRPTUhUTUxTY3JpcHRFbGVtZW50SW50ZXJuYWwuaCIKLSNpbXBvcnQgPFdlYkNv
cmUvRE9NSW1wbGVtZW50YXRpb24uaD4KICNpbXBvcnQgIkRPTUludGVybmFsLmgiCiAjaW1wb3J0
ICJET01Ob2RlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTU5vZGVJdGVyYXRvckludGVybmFsLmgi
CkBAIC0xNDcsOSArMTQ2LDcgQEAgLSAoQk9PTCl4bWxTdGFuZGFsb25lCiAtICh2b2lkKXNldFht
bFN0YW5kYWxvbmU6KEJPT0wpbmV3WG1sU3RhbmRhbG9uZQogewogICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBJTVBMLT5zZXRYTUxTdGFuZGFsb25lKG5ld1htbFN0YW5kYWxvbmUsIGVjKTsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIElNUEwtPnNldFhNTFN0YW5kYWxvbmUobmV3WG1s
U3RhbmRhbG9uZSk7CiB9CiAKIC0gKE5TU3RyaW5nICopZG9jdW1lbnRVUkkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGFjYWQ4ZGUzZGUzYjkyYTMzOTk0Mjk4MDY2MDgz
ZmYwNWJkOWIwYzMuLmE0YWQ2NzgxNGFlZDdhNWZjOWQ1NTE2NDUxNWE3YjM1YzYzODI2YzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNjEsNyArNjEsNiBAQAogI2lt
cG9ydCA8V2ViQ29yZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9D
aHJvbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
RE9NSW1wbGVtZW50YXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50RnJhZ21lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RG9jdW1lbnRMb2FkZXIuaD4KQEAgLTgwLDYgKzc5LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvSGl0
VGVzdFJlc3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU05vZGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvTGVnYWN5V2ViQXJjaGl2ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLmg+CkBAIC0xMDEs
OSArMTAxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvbWFya3VwLmg+CiAjaW1wb3J0IDxXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CisjaW1w
b3J0IDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbXBvcnQgPHJ1bnRpbWUvSlNMb2NrLmg+CiAj
aW1wb3J0IDxydW50aW1lL0pTT2JqZWN0Lmg+Ci0jaW1wb3J0IDxydW50aW1lL0pTQ0pTVmFsdWUu
aD4KICNpbXBvcnQgPHd0Zi9DdXJyZW50VGltZS5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAt
MTExLDcgKzExMSw2IEBACiAjaW1wb3J0ICJXZWJSZXNvdXJjZS5oIgogI2ltcG9ydCAiV2ViVUlL
aXREZWxlZ2F0ZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9FZGl0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250Lmg+CkBA
IC05ODgsNyArOTg3LDcgQEAgLSAoQk9PTClfY2FuUHJvdmlkZURvY3VtZW50U291cmNlCiAgICAg
U3RyaW5nIG1pbWVUeXBlID0gZnJhbWUtPmRvY3VtZW50KCktPmxvYWRlcigpLT53cml0ZXIoKS5t
aW1lVHlwZSgpOwogICAgIFBsdWdpbkRhdGEqIHBsdWdpbkRhdGEgPSBmcmFtZS0+cGFnZSgpID8g
JmZyYW1lLT5wYWdlKCktPnBsdWdpbkRhdGEoKSA6IDA7CiAKLSAgICBpZiAoV2ViQ29yZTo6RE9N
SW1wbGVtZW50YXRpb246OmlzVGV4dE1JTUVUeXBlKG1pbWVUeXBlKQorICAgIGlmIChXZWJDb3Jl
OjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1RleHRNSU1FVHlwZShtaW1lVHlwZSkKICAgICAgICAgfHwg
SW1hZ2U6OnN1cHBvcnRzVHlwZShtaW1lVHlwZSkKICAgICAgICAgfHwgKHBsdWdpbkRhdGEgJiYg
cGx1Z2luRGF0YS0+c3VwcG9ydHNXZWJWaXNpYmxlTWltZVR5cGUobWltZVR5cGUsIFBsdWdpbkRh
dGE6OkFsbFBsdWdpbnMpICYmIGZyYW1lLT5sb2FkZXIoKS5zdWJmcmFtZUxvYWRlcigpLmFsbG93
UGx1Z2lucygpKQogICAgICAgICB8fCAocGx1Z2luRGF0YSAmJiBwbHVnaW5EYXRhLT5zdXBwb3J0
c1dlYlZpc2libGVNaW1lVHlwZShtaW1lVHlwZSwgUGx1Z2luRGF0YTo6T25seUFwcGxpY2F0aW9u
UGx1Z2lucykpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwIGIv
U291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDc5OTNiOTZkNjMyMjMwNjkxNjVh
OTJjNTA3ZTM0NTgxNDUxOTllNjAuLmUyMjZjYjIxM2JiMGJiZWViMTExNjMyNmY0MWMxOTUwMDVm
Njg4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU5LDcgKzU5LDYgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9ET01JbXBsZW1lbnRhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRE9NV2lu
ZG93Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0V2
ZW50Lmg+CkBAIC04MSw2ICs4MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MUGx1Z0luRWxl
bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0tleWJvYXJkRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnku
aD4KICNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTW91
c2VSZWxhdGVkRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBA
IC0xMzg1LDcgKzEzODUsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpjYW5Qcm92aWRlRG9jdW1lbnRT
b3VyY2UoYm9vbCogcmVzdWx0KQogICAgICAgICBCU3RyaW5nIG1pbWVUeXBlQlN0cjsKICAgICAg
ICAgaWYgKFNVQ0NFRURFRCh1cmxSZXNwb25zZS0+TUlNRVR5cGUoJm1pbWVUeXBlQlN0cikpKSB7
CiAgICAgICAgICAgICBTdHJpbmcgbWltZVR5cGUobWltZVR5cGVCU3RyLCBTeXNTdHJpbmdMZW4o
bWltZVR5cGVCU3RyKSk7Ci0gICAgICAgICAgICAqcmVzdWx0ID0gbWltZVR5cGUgPT0gInRleHQv
aHRtbCIgfHwgV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlNRVR5cGUobWltZVR5
cGUpOworICAgICAgICAgICAgKnJlc3VsdCA9IG1pbWVUeXBlID09ICJ0ZXh0L2h0bWwiIHx8IFdl
YkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5cGUobWltZVR5cGUpOwogICAgICAg
ICB9CiAgICAgfQogICAgIHJldHVybiBocjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5LmNwcAppbmRleCAxNWI4ZTI4ZjIzMDA5MjlkMjIwZTczM2JmZjAwNjMwMGQxM2Fh
ZGJmLi5jZDcwNjk4NTgyNjc2NzI0ZGYxMDc0OTliYzg5MzE1NzhjM2NhMDM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAj
aW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RPTUltcGxlbWVu
dGF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
TUlNRVR5cGVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0xMTcsMTUgKzExNiwx
MyBAQCBib29sIFdlYkZyYW1lUHJveHk6OmlzRGlzcGxheWluZ1N0YW5kYWxvbmVNZWRpYURvY3Vt
ZW50KCkgY29uc3QKIAogYm9vbCBXZWJGcmFtZVByb3h5Ojppc0Rpc3BsYXlpbmdNYXJrdXBEb2N1
bWVudCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgc2hvdWxkIGJlIG1vdmVk
IHRvIHNvbWV3aGVyZSBpbiBXZWJDb3JlLgotICAgIHJldHVybiBtX01JTUVUeXBlID09ICJ0ZXh0
L2h0bWwiIHx8IG1fTUlNRVR5cGUgPT0gImltYWdlL3N2Zyt4bWwiIHx8IG1fTUlNRVR5cGUgPT0g
ImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSIgfHwgRE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlN
RVR5cGUobV9NSU1FVHlwZSk7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgY2FsbCB0
byBhIHNpbmdsZSBNSU1FVHlwZVJlZ2lzdHJ5IGZ1bmN0aW9uOyBhZGRpbmcgYSBuZXcgb25lIGlm
IG5lZWRlZC4KKyAgICAvLyBGSVhNRTogVGhpcyBpcyBkb2luZyBjYXNlIHNlbnNpdGl2ZSBjb21w
YXJpc29ucyBvbiBNSU1FIHR5cGVzLCBzaG91bGQgYmUgdXNpbmcgQVNDSUkgY2FzZSBpbnNlbnNp
dGl2ZSBpbnN0ZWFkLgorICAgIHJldHVybiBtX01JTUVUeXBlID09ICJ0ZXh0L2h0bWwiIHx8IG1f
TUlNRVR5cGUgPT0gImltYWdlL3N2Zyt4bWwiIHx8IG1fTUlNRVR5cGUgPT0gImFwcGxpY2F0aW9u
L3gtd2ViYXJjaGl2ZSIgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZShtX01JTUVU
eXBlKTsKIH0KIAogYm9vbCBXZWJGcmFtZVByb3h5Ojppc0Rpc3BsYXlpbmdQREZEb2N1bWVudCgp
IGNvbnN0CiB7Ci0gICAgaWYgKG1fTUlNRVR5cGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KICAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRN
SU1FVHlwZShtX01JTUVUeXBlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01JbXBsZW1lbnRh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTURPTUltcGxlbWVudGF0aW9uLmNwcAppbmRleCAzZTA2YzFhMDc5MDFi
MTk3OTkzMTE2NzAyZTVhYzZiODNiZjYyMDI0Li5kZmM1YzIxOTc5MzViZTE1YmNiYzljZWE0NmE3
NGNhNjRkYzMwN2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTUltcGxlbWVudGF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTURPTUltcGxlbWVudGF0aW9uLmNwcApAQCAtMTMxLDEzICsxMzEsMTIgQEAgV2ViS2l0
RE9NRG9jdW1lbnRUeXBlKiB3ZWJraXRfZG9tX2RvbV9pbXBsZW1lbnRhdGlvbl9jcmVhdGVfZG9j
dW1lbnRfdHlwZShXZWJLaXQKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRRdWFsaWZpZWROYW1l
ID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHF1YWxpZmllZE5hbWUpOwogICAgIFdURjo6U3RyaW5n
IGNvbnZlcnRlZFB1YmxpY0lkID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHB1YmxpY0lkKTsKICAg
ICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTeXN0ZW1JZCA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChz
eXN0ZW1JZCk7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OkRvY3VtZW50VHlwZT4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0t
PmNyZWF0ZURvY3VtZW50VHlwZShjb252ZXJ0ZWRRdWFsaWZpZWROYW1lLCBjb252ZXJ0ZWRQdWJs
aWNJZCwgY29udmVydGVkU3lzdGVtSWQsIGVjKSk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOworICAgIGF1dG8gcmVz
dWx0ID0gaXRlbS0+Y3JlYXRlRG9jdW1lbnRUeXBlKGNvbnZlcnRlZFF1YWxpZmllZE5hbWUsIGNv
bnZlcnRlZFB1YmxpY0lkLCBjb252ZXJ0ZWRTeXN0ZW1JZCk7CisgICAgaWYgKHJlc3VsdC5oYXNF
eGNlcHRpb24oKSkgeworICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24g
ZWNkZXNjKHJlc3VsdC5leGNlcHRpb25Db2RlKCkpOwogICAgICAgICBnX3NldF9lcnJvcl9saXRl
cmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2Rl
LCBlY2Rlc2MubmFtZSk7CiAgICAgfQotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVz
dWx0LmdldCgpKTsKKyAgICByZXR1cm4gV2ViS2l0OjpraXQocmVzdWx0LnRha2VSZXR1cm5WYWx1
ZSgpLnB0cigpKTsKIH0KIAogV2ViS2l0RE9NRG9jdW1lbnQqIHdlYmtpdF9kb21fZG9tX2ltcGxl
bWVudGF0aW9uX2NyZWF0ZV9kb2N1bWVudChXZWJLaXRET01ET01JbXBsZW1lbnRhdGlvbiogc2Vs
ZiwgY29uc3QgZ2NoYXIqIG5hbWVzcGFjZVVSSSwgY29uc3QgZ2NoYXIqIHF1YWxpZmllZE5hbWUs
IFdlYktpdERPTURvY3VtZW50VHlwZSogZG9jdHlwZSwgR0Vycm9yKiogZXJyb3IpCkBAIC0xNTEs
MTMgKzE1MCwxMiBAQCBXZWJLaXRET01Eb2N1bWVudCogd2Via2l0X2RvbV9kb21faW1wbGVtZW50
YXRpb25fY3JlYXRlX2RvY3VtZW50KFdlYktpdERPTURPTUltcAogICAgIFdURjo6U3RyaW5nIGNv
bnZlcnRlZE5hbWVzcGFjZVVSSSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChuYW1lc3BhY2VVUkkp
OwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFF1YWxpZmllZE5hbWUgPSBXVEY6OlN0cmluZzo6
ZnJvbVVURjgocXVhbGlmaWVkTmFtZSk7CiAgICAgV2ViQ29yZTo6RG9jdW1lbnRUeXBlKiBjb252
ZXJ0ZWREb2N0eXBlID0gV2ViS2l0Ojpjb3JlKGRvY3R5cGUpOwotICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxXZWJDb3JlOjpEb2N1bWVudD4gZ29iamVjdFJl
c3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPmNyZWF0ZURvY3VtZW50KGNvbnZlcnRlZE5hbWVzcGFj
ZVVSSSwgY29udmVydGVkUXVhbGlmaWVkTmFtZSwgY29udmVydGVkRG9jdHlwZSwgZWMpKTsKLSAg
ICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVj
ZGVzYyhlYyk7CisgICAgYXV0byByZXN1bHQgPSBpdGVtLT5jcmVhdGVEb2N1bWVudChjb252ZXJ0
ZWROYW1lc3BhY2VVUkksIGNvbnZlcnRlZFF1YWxpZmllZE5hbWUsIGNvbnZlcnRlZERvY3R5cGUp
KTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MocmVzdWx0LmV4Y2VwdGlvbkNvZGUoKSk7CiAg
ICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldF
QktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKICAgICB9Ci0gICAgcmV0dXJu
IFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOworICAgIHJldHVybiBXZWJLaXQ6Omtp
dChyZXN1bHQudGFrZVJldHVyblZhbHVlKCkucHRyKCkpOwogfQogCiBXZWJLaXRET01DU1NTdHls
ZVNoZWV0KiB3ZWJraXRfZG9tX2RvbV9pbXBsZW1lbnRhdGlvbl9jcmVhdGVfY3NzX3N0eWxlX3No
ZWV0KFdlYktpdERPTURPTUltcGxlbWVudGF0aW9uKiBzZWxmLCBjb25zdCBnY2hhciogdGl0bGUs
IGNvbnN0IGdjaGFyKiBtZWRpYSwgR0Vycm9yKiogZXJyb3IpCkBAIC0xNzAsMTMgKzE2OCwxMiBA
QCBXZWJLaXRET01DU1NTdHlsZVNoZWV0KiB3ZWJraXRfZG9tX2RvbV9pbXBsZW1lbnRhdGlvbl9j
cmVhdGVfY3NzX3N0eWxlX3NoZWV0KFdlYgogICAgIFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9u
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFRp
dGxlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHRpdGxlKTsKICAgICBXVEY6OlN0cmluZyBjb252
ZXJ0ZWRNZWRpYSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChtZWRpYSk7Ci0gICAgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ+
IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5jcmVhdGVDU1NTdHlsZVNoZWV0KGNv
bnZlcnRlZFRpdGxlLCBjb252ZXJ0ZWRNZWRpYSwgZWMpKTsKLSAgICBpZiAoZWMpIHsKLSAgICAg
ICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7CisgICAgYXV0
byByZXN1bHQgPSBpdGVtLT5jcmVhdGVDU1NTdHlsZVNoZWV0KGNvbnZlcnRlZFRpdGxlLCBjb252
ZXJ0ZWRNZWRpYSk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKHJlc3VsdC5leGNlcHRpb25D
b2RlKCkpOwogICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21f
c3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7CiAgICAgfQot
ICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKKyAgICByZXR1cm4g
V2ViS2l0OjpraXQocmVzdWx0LnRha2VSZXR1cm5WYWx1ZSgpLnB0cigpKTsKIH0KIAogV2ViS2l0
RE9NSFRNTERvY3VtZW50KiB3ZWJraXRfZG9tX2RvbV9pbXBsZW1lbnRhdGlvbl9jcmVhdGVfaHRt
bF9kb2N1bWVudChXZWJLaXRET01ET01JbXBsZW1lbnRhdGlvbiogc2VsZiwgY29uc3QgZ2NoYXIq
IHRpdGxlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287865</attachid>
            <date>2016-09-03 12:12:56 -0700</date>
            <delta_ts>2016-09-03 13:01:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161295-20160903121038.patch</filename>
            <type>text/plain</type>
            <size>77676</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVhZGQ2YmY1MDNkZGNk
MGUzYTFjMTVlYTg5YjI4NzU0YTM4MTQ4MC4uNjUyYTRjMzk2MDFlYzUyZTNiYmViOGNmYWRmOTVj
NTdlMmFhOWEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDE2LTA5LTAzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJlYW1saW5lIERPTUltcGxl
bWVudGF0aW9uLCBhbmQgbW92ZSBpdCB0byBvdXIgbmV3IERPTSBleGNlcHRpb24gc3lzdGVtCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEyOTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgbmV3IGhlYWRlcnMgdG8gcHJvamVjdC4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6dG9KUyk6IEFkZGVkIGFuIG92ZXJsb2FkIGZvciBFeGNlcHRpb25Pcjw+OyB0aGlzIGhhbmRs
ZXMgdGhlCisgICAgICAgIGV4Y2VwdGlvbiBjYXNlIGhlcmUgc28gaXQgZG9lc24ndCBuZWVkIHRv
IGJlIGhhbmRsZWQgaW4gZ2VuZXJhdGVkIGNvZGUKKyAgICAgICAgZm9yIHRoZSBiaW5kaW5nLiBJ
bXBsZW1lbnRlZCBoZXJlIHNvIHRoYXQgRXhjZXB0aW9uT3IuaCBkb2VzIG5vdCBrbm93CisgICAg
ICAgIGFib3V0IGJpbmRpbmdzLiBCdXQgc2luY2UgdGhpcyBpcyBhIHRlbXBsYXRlLCBpdCB3aWxs
IG9ubHkgY29tcGlsZSB3aGVuCisgICAgICAgIGluc3RhbnRpYXRlZCBhbmQgdGhlcmUgaXMgbm8g
bmVlZCB0byBpbmNsdWRlIEV4Y2VwdGlvbk9yLmggYW5kIGluZGlyZWN0bHkKKyAgICAgICAgdGhl
IFZhcmlhbnQuaCBoZWFkZXIgaW4gdGhpcyBoZWFkZXIuCisgICAgICAgIChXZWJDb3JlOjp0b0pT
TmV3bHlDcmVhdGVkKTogRGl0dG8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbik6
IFJlZmVyIHRvIEpTQzo6RXhjZXB0aW9uIHdpdGggZXhwbGljaXQKKyAgICAgICAgbmFtZXNwYWNl
IHRvIGF2b2lkIGFtYmlndWl0eSB3aXRoIFdlYkNvcmU6OkV4Y2VwdGlvbi4KKworICAgICAgICAq
IGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1l
bnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnRUeXBlKTogQ2hhbmdlZCB0byByZXR1cm4KKyAgICAgICAg
RXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVYTUxEb2N1bWVudCk6IEFkZGVk
LiBIZWxwZXIgdXNlZCBpbiBjcmVhdGVEb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUlt
cGxlbWVudGF0aW9uOjpnZXRJbnRlcmZhY2UpOiBEZWxldGVkLiBUaGlzIHdhcyB1bnVzZWQuCisg
ICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQpOiBDaGFu
Z2VkIHRvIHJldHVybgorICAgICAgICBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkRP
TUltcGxlbWVudGF0aW9uOjpjcmVhdGVDU1NTdHlsZVNoZWV0KTogUmVtb3ZlZCB0aGUgdW51c2Vk
CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgb3V0IGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6
aXNWYWxpZFhNTE1JTUVUeXBlQ2hhcik6IERlbGV0ZWQuIE1vdmVkIHRvIE1JTUVUeXBlUmVnaXN0
cnkuCisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlwZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmlzVGV4dE1JTUVU
eXBlKTogRGl0dG8uCisKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uaDogQ2hhbmdl
ZCBmdW5jdGlvbnMgYXMgZGVzY3JpYmVkIGFib3ZlIHRvCisgICAgICAgIHJldHVybiBFeGNlcHRp
b25PciB2YWx1ZXMuIEFsc28gcmVtb3ZlZCB1bnVzZWQgZ2V0SW50ZXJmYWNlIGZ1bmN0aW9uLAor
ICAgICAgICBhbmQgaXNYTUxNSU1FVHlwZSBhbmQgaXNUZXh0TUlNRVR5cGUsIHdoaWNoIGJvdGgg
bW92ZWQgdG8gdGhlCisgICAgICAgIE1JTUVUeXBlUmVnaXN0cnkgY2xhc3MgYWxvbmdzaWRlIGFs
bCB0aGUgb3RoZXIgc2ltaWxhciBNSU1FIHR5cGUKKyAgICAgICAgZnVuY3Rpb25zLgorCisgICAg
ICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbDogUmVvcmdhbml6ZWQgdGhpcyB0byBtYXRj
aCB0aGUgSURMIGZpbGVzCisgICAgICAgIGluIHRoZSBzcGVjaWZpY2F0aW9ucyBhIGxpdHRsZSBi
ZXR0ZXIuIEFsc28gcmVtb3ZlZCBbUmFpc2VzRXhjZXB0aW9uXQorICAgICAgICBzaW5jZSB0aGF0
IGlzIG9ubHkgbmVlZGVkIGZvciB0aGUgb2xkIGxlZ2FjeSBFeGNlcHRpb25Db2RlJiBzdHlsZS4K
KworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6c2V0WE1MVmVyc2lvbik6IFJlbW92ZWQgY2FsbCB0byB0aGUKKyAgICAgICAgRE9NSW1wbGVt
ZW50YXRpb246Omhhc0ZlYXR1cmUgZnVuY3Rpb24gc2luY2UgdGhlIHZhbHVlcyBwYXNzZWQgaW4K
KyAgICAgICAgdW5jb25kaXRpb25hbGx5IHJlc3VsdCBpbiB0aGUgcmV0dXJuIHZhbHVlICJ0cnVl
Ii4gVGhpcyBpcyBsZWZ0IG92ZXIKKyAgICAgICAgZWl0aGVyIGZyb20gc3BlY2lmaWNhdGlvbiBs
YW5ndWFnZSwgb3IgZnJvbSBhbiBhbmNpZW50IHZlcnNpb24gb2YgdGhpcworICAgICAgICBjb2Rl
IHRoYXQgd29ya2VkIGluIGEgIm5vIFhNTCBzdXBwb3J0ZWQiIG1vZGUuCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6c2V0WE1MU3RhbmRhbG9uZSk6IERpdHRvLgorCisgICAgICAgICogZG9t
L0RvY3VtZW50Lmg6IFJlbW92ZWQgdGhlIEV4Y2VwdGlvbkNvZGUmIG91dCBhcmd1bWVudCBmcm9t
IHNldFhNTFN0YW5kYWxvbmUuCisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDogUmVtb3ZlZCBb
U2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBmcm9tIHhtbFN0YW5kYWxvbmUuCisKKyAgICAgICAgKiBk
b20vRXhjZXB0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIGRvbS9FeGNlcHRpb25Pci5oOiBBZGRl
ZC4KKworICAgICAgICAqIGh0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHA6IFJlbW92ZWQgdW5u
ZWVkZWQgaW5jbHVkZSBvZiBET01JbXBsZW1lbnRhdGlvbi5oLgorCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVYSFJU
ZXh0RGVjb2Rlcik6IFVzZSBpc1hNTE1JTUVUeXBlIGluIGl0cyBuZXcgbG9jYXRpb24gaW4KKyAg
ICAgICAgTUlNRVR5cGVSZWdpc3RyeS4KKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlT3RoZXJSZXNvdXJjZVRleHRE
ZWNvZGVyKTogRGl0dG8uCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOiBSZW1v
dmVkIHVubmVlZGVkIGluY2x1ZGUgb2YgRE9NSW1wbGVtZW50YXRpb24uaC4KKworICAgICAgICAq
IGxvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRS
ZXNvdXJjZURlY29kZXI6OmRldGVybWluZUNvbnRlbnRUeXBlKTogVXNlIGlzWE1MTUlNRVR5cGUg
aW4gaXRzCisgICAgICAgIG5ldyBsb2NhdGlvbiBpbiBNSU1FVHlwZVJlZ2lzdHJ5LgorCisgICAg
ICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1RleHRNSU1FVHlwZSk6IEFkZGVkLiBNb3ZlZCBoZXJlIGZyb20K
KyAgICAgICAgRE9NSW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkWE1M
TUlNRVR5cGVDaGFyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1hNTE1JTUVUeXBlKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJl
Z2lzdHJ5Lmg6IEFkZGVkIGlzWE1MTUlNRVR5cGUgYW5kIGlzVGV4dE1JTUVUeXBlLgorICAgICAg
ICBNYWRlIGlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUgcHJpdmF0ZS4KKworICAgICAgICAqIHN2
Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmlzU3VwcG9y
dGVkKTogRGVsZXRlZC4gVGhpcyBmdW5jdGlvbiB3YXMgbmV2ZXIgY2FsbGVkLgorICAgICAgICAq
IHN2Zy9TVkdFbGVtZW50Lmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZSBjaGFuZ2UuCisKKyAgICAg
ICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OnJlc3BvbnNlSXNYTUwpOiBVc2UgaXNYTUxNSU1FVHlwZSBpbiBpdHMgbmV3CisgICAg
ICAgIGxvY2F0aW9uIGluIE1JTUVUeXBlUmVnaXN0cnkuCisKIDIwMTYtMDktMDMgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgQVNDSUlMaXRlcmFs
IGluIHNvbWUgbW9yZSBwbGFjZXMKQEAgLTQ2NjQsNiArNDc1NCwxMCBAQAogICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWF0aE1MUGFkZGVkOjpzdHlsZURpZENoYW5nZSk6IERlbGV0ZWQuIERpdHRv
LgogICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmg6IFVwZGF0
ZSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBhbmQgcmVtb3ZlIG1fYXNjZW50LgogCisgICAgICAgICog
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0RG9jdW1lbnQpOiBVcGRhdGVkIHNpbmNlIHNldFhN
TFN0YW5kYWxvbmUKKyAgICAgICAgbm8gbG9uZ2VyIGNhbiByYWlzZSBhbiBleGNlcHRpb24uCisK
IDIwMTYtMDgtMjcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBVUkxQYXJzZXIgc2hvdWxkIHBhcnNlIHJlbGF0aXZlIFVSTHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCA5MDlmZDhiYjZlYTA3YjE4NDZmYjcyN2FkZWQzYzBhODZlOWQ0Y2Y1Li42YmU4
ZDVlYjU1NjIxMWI0YzBkYTA0MmI0OGZjMGJkZTg5MGU3NTVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTYtMDktMDMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFN0cmVhbWxpbmUgRE9NSW1wbGVtZW50YXRpb24sIGFuZCBtb3ZlIGl0IHRv
IG91ciBuZXcgRE9NIGV4Y2VwdGlvbiBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTI5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTURPTUltcGxlbWVudGF0aW9uLm1tOgorICAg
ICAgICAodW53cmFwKTogQWRkZWQuIFVzZSB0aGlzIGluc3RlYWQgb2YgdGhlIElNUEwgbWFjcm8u
CisgICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGRlYWxsb2NdKTogVXBkYXRlZCB0byB1c2Ug
dW53cmFwLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBoYXNGZWF0dXJlOnZlcnNpb246
XSk6IERpdHRvLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVEb2N1bWVudFR5
cGU6cHVibGljSWQ6c3lzdGVtSWQ6XSk6IFVwZGF0ZWQgdG8gd29yayB3aXRoCisgICAgICAgIEV4
Y2VwdGlvbk9yLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVEb2N1bWVudDpx
dWFsaWZpZWROYW1lOmRvY3R5cGU6XSk6IERpdHRvLgorICAgICAgICAoLVtET01JbXBsZW1lbnRh
dGlvbiBjcmVhdGVDU1NTdHlsZVNoZWV0Om1lZGlhOl0pOiBSZW1vdmVkIGV4Y2VwdGlvbiBsb2dp
YyBzaW5jZQorICAgICAgICB0aGlzIGZ1bmN0aW9uIGNhbiBubyBsb25nZXIgcmFpc2UgYW4gZXhj
ZXB0aW9uLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVIVE1MRG9jdW1lbnQ6
XSk6IFVwZGF0ZWQgdG8gdXNlIHVud3JhcC4KKyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24g
aGFzRmVhdHVyZTo6XSk6IENoYW5nZWQgdG8gY2FsbCB0aGUgbm9uLWRlcHJlY2F0ZWQgdmVyc2lv
bgorICAgICAgICByYXRoZXIgdGhhbiBkdXBsaWNhdGluZyBpdHMgaW1wbGVtZW50YXRpb24uIEFs
c28gbW92ZWQgaW50byB0aGUgY2F0ZWdvcnkgYXMgZGVmaW5lZAorICAgICAgICBpbiB0aGUgaGVh
ZGVyLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVEb2N1bWVudFR5cGU6Ojpd
KTogRGl0dG8uCisgICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGNyZWF0ZURvY3VtZW50Ojo6
XSk6IERpdHRvLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVDU1NTdHlsZVNo
ZWV0OjpdKTogRGl0dG8uCisKKyAgICAgICAgKiBET00vRE9NRG9jdW1lbnQubW06IFJlbW92ZWQg
dW5uZWVkZWQgaW5jbHVkZSBvZiBET01JbXBsZW1lbnRhdGlvbi5oLgorICAgICAgICAoLVtET01E
b2N1bWVudCBzZXRYbWxTdGFuZGFsb25lOl0pOiBVcGRhdGVkIHNpbmNlIHNldFhNTFN0YW5kYWxv
bmUgbm8gbG9uZ2VyIGNhbgorICAgICAgICByYWlzZSBhbiBleGNlcHRpb24uCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfY2FuUHJvdmlkZURv
Y3VtZW50U291cmNlXSk6IFVwZGF0ZWQgdG8gdXNlIGlzVGV4dE1JTUVUeXBlIGluIGl0cyBuZXcK
KyAgICAgICAgbG9jYXRpb24gaW4gTUlNRVR5cGVSZWdpc3RyeSBpbnN0ZWFkIG9mIGluIERPTUlt
cGxlbWVudGF0aW9uLgorCiAyMDE2LTA5LTAyICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNv
bT4KIAogICAgICAgICBOZWVkIHRvIHVwZGF0ZUVkaXRvclN0YXRlIGlmIGFuIGVsZW1lbnQgY2hh
bmdlIGVkaXQtYWJpbGl0eSB3aXRob3V0IGNoYW5naW5nIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGZm
M2I1NTg3OGMyMGQyNDNhMmUwOTNhNGVjZjhkZTk4YmYzODYxZjcuLmM5NmY4NjQwODk0MTc2NmRl
YzFhODg5YTlmNzk2YjJiM2Q5ZTA2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxNi0wOS0wMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
U3RyZWFtbGluZSBET01JbXBsZW1lbnRhdGlvbiwgYW5kIG1vdmUgaXQgdG8gb3VyIG5ldyBET00g
ZXhjZXB0aW9uIHN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYxMjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6Y2FuUHJvdmlkZURv
Y3VtZW50U291cmNlKTogVXBkYXRlZCB0byB1c2UgaXNYTUxNSU1FVHlwZSBpbiBpdHMgbmV3Cisg
ICAgICAgIGxvY2F0aW9uIGluIE1JTUVUeXBlUmVnaXN0cnkgaW5zdGVhZCBvZiBpbiBET01JbXBs
ZW1lbnRhdGlvbi4KKwogMjAxNi0wOS0wMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBCdWlsZCBmaXggYXR0ZW1wdCBhZnRlciByMjA1MzgxLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDJkNTgwOGYyNjAzZmNjZGQzN2M3ZmJlMWEyZmU3NDllMTEzNjYwMWMuLjUwYTI4OGU4YzAx
NTExOWJkZWM2YzYyZjU2MWJhMTdmMTFmODM4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBA
QAorMjAxNi0wOS0wMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
U3RyZWFtbGluZSBET01JbXBsZW1lbnRhdGlvbiwgYW5kIG1vdmUgaXQgdG8gb3VyIG5ldyBET00g
ZXhjZXB0aW9uIHN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYxMjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lUHJveHk6OmlzRGlzcGxheWluZ01hcmt1cERvY3VtZW50KTogVXNlIGlzWE1MTUlN
RVR5cGUgaW4gaXRzCisgICAgICAgIG5ldyBsb2NhdGlvbiBpbiBNSU1FVHlwZVJlZ2lzdHJ5IHJh
dGhlciB0aGFuIGluIERPTUltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZVByb3h5Ojppc0Rpc3BsYXlpbmdQREZEb2N1bWVudCk6IFJlbW92ZWQgdW5uZWVkZWQgcmVkdW5k
YW50CisgICAgICAgIGNoZWNrIGZvciBlbXB0eSBzdHJpbmcsIGFscmVhZHkgZG9uZSBieSBNSU1F
VHlwZVJlZ2lzdHJ5LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAgICh3ZWJraXRf
ZG9tX2RvbV9pbXBsZW1lbnRhdGlvbl9jcmVhdGVfZG9jdW1lbnRfdHlwZSk6CisgICAgICAgICh3
ZWJraXRfZG9tX2RvbV9pbXBsZW1lbnRhdGlvbl9jcmVhdGVfZG9jdW1lbnQpOgorICAgICAgICAo
d2Via2l0X2RvbV9kb21faW1wbGVtZW50YXRpb25fY3JlYXRlX2Nzc19zdHlsZV9zaGVldCk6Cisg
ICAgICAgIFVwZGF0ZWQgdG8gd29yayB3aXRoIEV4Y2VwdGlvbk9yLgorCiAyMDE2LTA5LTAzICBK
b3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogTW92ZSBXZWJLaXQyIFdlYkluc3BlY3RvciBmaWxlcyB0byAjcHJhZ21hIG9uY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBiNzU2MDlmM2U5YzFiMGRmMjE2ZjQ5NmNlNmFjZjJiMDc4MWRhZmUyLi5hZGVhZDZkMDg1NjFm
MjU4YjY0ZjJkN2NiNWZlNmRjYmIxMTQzOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMjc1LDYgKzMyNzUsOCBAQAogCQk5
M0M0RjZFQjExMDhGOUE1MDA5OUQwREIgLyogQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDNEY2RTkxMTA4RjlB
NTAwOTlEMERCIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCAqLzsgfTsKIAkJOTNDQ0YwMjcw
QUY2QzUyOTAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQ0NGMDI2MEFGNkM1MjkwMDAxOEU4OSAvKiBO
YXZpZ2F0aW9uQWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTNDQ0YwNjAwQUY2Q0E3NjAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDQ0Yw
NUYwQUY2Q0E3NjAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uY3BwICovOyB9OworCQk5M0Qx
OTYzMTFENkNBQjc2MDBGQzdFNDcgLyogRXhjZXB0aW9uT3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDE5NjMwMUQ2Q0FCNzYwMEZDN0U0NyAvKiBF
eGNlcHRpb25Pci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTkzRDE5NjMzMUQ2Q0FCODIwMEZDN0U0NyAvKiBFeGNlcHRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDE5NjMyMUQ2Q0FCODIwMEZD
N0U0NyAvKiBFeGNlcHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5M0Q0Mzc5RjFENTdCMTUzMDBBQjg1RUEgLyogSlNNYWluVGhyZWFkRXhl
Y1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
RjkzNEQ4MzExODlGMUVFMDA1MDhENUQgLyogSlNNYWluVGhyZWFkRXhlY1N0YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNENDM3QTAxRDU3
QjE5QTAwQUI4NUVBIC8qIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjU2QzlBODFDODkzMTI4MDBDNDU2
REYgLyogQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q0MzdBMTFENTdCM0Y0MDBBQjg1RUEgLyog
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQURFMTFGNEExOEQ4MzExQjAwNzg5ODNCIC8qIEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTA0MzcsNiArMTA0MzksOCBAQAogCQk5M0NBNENBMjA5REY5M0ZBMDBERjg2
NzcgLyogc3ZnLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBzdmcuY3NzOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5M0NDRjAyNjBBRjZDNTI5MDAwMThFODkgLyogTmF2aWdhdGlv
bkFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0aW9uQWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQ0NGMDVGMEFGNkNBNzYwMDAx
OEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE5hdmlnYXRpb25BY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5M0QxOTYzMDFENkNBQjc2MDBGQzdFNDcgLyogRXhjZXB0aW9uT3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9uT3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTNEMTk2MzIxRDZDQUI4MjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNlcHRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTNEOUQ1M0IwREEyN0UxODAwNzcyMTZDIC8qIFJhbmdlQm91bmRhcnlQ
b2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYW5nZUJvdW5kYXJ5UG9p
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFMjI3REIwQUY1ODlBRDAwRDQ4
MzI0IC8qIERvY3VtZW50TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERvY3VtZW50TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTNFMjI3REQwQUY1ODlBRDAwRDQ4MzI0IC8qIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyOTk2LDExICsy
MzAwMCwxMyBAQAogCQkJCUUxMkVEQjdBMEIzMDhBNzgwMDI3MDRCNiAvKiBFdmVudFRhcmdldC5o
ICovLAogCQkJCTg1QUZBNzQyMEFBRjI5ODQwMEU4NDMwNSAvKiBFdmVudFRhcmdldC5pZGwgKi8s
CiAJCQkJQ0RDRTVDRDAxNDYzM0JDOTAwRDQ3Q0NBIC8qIEV2ZW50VGFyZ2V0RmFjdG9yeS5pbiAq
LywKKwkJCQk5M0QxOTYzMjFENkNBQjgyMDBGQzdFNDcgLyogRXhjZXB0aW9uLmggKi8sCiAJCQkJ
QkM2MEQ4RjAwRDJBMTFFMDAwQjk5MThGIC8qIEV4Y2VwdGlvbkJhc2UuY3BwICovLAogCQkJCUJD
NjBEOEYxMEQyQTExRTAwMEI5OTE4RiAvKiBFeGNlcHRpb25CYXNlLmggKi8sCiAJCQkJOTM1RkJD
RjEwOUJBMTQzQjAwRTIzMEIxIC8qIEV4Y2VwdGlvbkNvZGUuaCAqLywKIAkJCQlBN0NBQ0RCMDEz
Q0U4NzVCMDBCQkJFM0YgLyogRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmNwcCAqLywKIAkJCQlB
NzRCQjc2QTEzQkRBODYzMDBGRjdCRjAgLyogRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmggKi8s
CisJCQkJOTNEMTk2MzAxRDZDQUI3NjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbk9yLmggKi8sCiAJCQkJ
RTQ3RTI3NjcxNjAzNkVEQzAwRUUyQUZCIC8qIEV4dGVuc2lvblN0eWxlU2hlZXRzLmNwcCAqLywK
IAkJCQlFNDdFMjc2NDE2MDM2RUQyMDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCAq
LywKIAkJCQlCNkQ5RDIzNDE0RUFCRDI2MDA5MEQ3NUUgLyogRm9jdXNFdmVudC5jcHAgKi8sCkBA
IC0yNTU5OCw2ICsyNTYwNCw3IEBACiAJCQkJMDc4RTA5MzkxN0QxNkIyQzAwNDIwQUExIC8qIE1l
ZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTE2MTdE
MTREMUMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
NzhFMDkzNzE3RDE2QjJDMDA0MjBBQTEgLyogTWVkaWFTdHJlYW1Qcml2YXRlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5M0QxOTYzMzFENkNBQjgyMDBGQzdFNDcgLyogRXhjZXB0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwNzhFMDkxNzE3RDE0RDFDMDA0MjBBQTEgLyogTWVkaWFTdHJlYW1SZWdp
c3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MTgxN0QxNEQxQzAwNDIwQUExIC8qIE1l
ZGlhU3RyZWFtVHJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTE5MTdEMTREMUMwMDQy
MEFBMSAvKiBNZWRpYVN0cmVhbVRyYWNrRXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjY2Njgs
NiArMjY2NzUsNyBAQAogCQkJCUIyMjI3QUQ3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zv
cm0uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QURBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdU
cmFuc2Zvcm1hYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FERDBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHVHJhbnNmb3JtRGlzdGFuY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDE5NjMx
MUQ2Q0FCNzYwMEZDN0U0NyAvKiBFeGNlcHRpb25Pci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIy
MjdBREYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybUxpc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTA4QzcxMzZFMTI4OTU2QTMwMDFCMTA3RSAvKiBTVkdUcmFuc2Zvcm1MaXN0UHJvcGVy
dHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FFMjBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHVFJlZkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA5YWEzMzYyODk2NGFmMDQzNTVlMjk4NTQ0YmMxZmY2
OGY2NmIzYjAxLi5hNGUwYmMzZTY3MDE4NmJlZjI2YTZkYjRmYzlhZjY4YTllNmRjNDEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMjMsOSArMjMsOSBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1
ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCi0jaW5j
bHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oIgogI2luY2x1ZGUgIldlYkNvcmVUeXBl
ZEFycmF5Q29udHJvbGxlci5oIgpAQCAtNjksNyArNjksOSBAQCBjbGFzcyBOb2RlOwogCiBzdHJ1
Y3QgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlOwogCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2Rl
OwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEV4Y2VwdGlvbk9yOworCit1c2luZyBFeGNlcHRp
b25Db2RlID0gaW50OwogCiBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlscyB7CiAgICAgU3RyaW5nIG1l
c3NhZ2U7CkBAIC0xODYsNiArMTg4LDkgQEAgSlNDOjpKU1ZhbHVlIGNyZWF0ZURPTUV4Y2VwdGlv
bihKU0M6OkV4ZWNTdGF0ZSosIEV4Y2VwdGlvbkNvZGUsIGNvbnN0IFN0cmluZyYpOwogV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRET01FeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBFeGNlcHRpb25D
b2RlKTsKIHZvaWQgc2V0RE9NRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgRXhjZXB0
aW9uQ29kZVdpdGhNZXNzYWdlJik7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgRXhjZXB0
aW9uT3I8VD4mJik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRv
SlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIEV4Y2Vw
dGlvbk9yPFQ+JiYpOworCiBKU0M6OkpTVmFsdWUganNTdHJpbmcoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBVUkwmKTsgLy8gZW1wdHkgaWYgdGhlIFVSTCBpcyBudWxsCiAKIEpTQzo6SlNWYWx1ZSBq
c1N0cmluZ09yTnVsbChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOyAvLyBudWxsIGlm
IHRoZSBzdHJpbmcgaXMgbnVsbApAQCAtODA4LDQgKzgxMywyMyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvTnVsbGFibGVKU051bWJlcihPcHRpb25hbDxUPiBv
cHRpb25hbAogICAgIHJldHVybiBvcHRpb25hbE51bWJlciA/IEpTQzo6anNOdW1iZXIob3B0aW9u
YWxOdW1iZXIudmFsdWUoKSkgOiBKU0M6OmpzTnVsbCgpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb25PcjxUPiYmIHZhbHVlKQorewor
ICAgIGlmIChVTkxJS0VMWSh2YWx1ZS5oYXNFeGNlcHRpb24oKSkpIHsKKyAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKHN0YXRlLCB2YWx1ZS5leGNlcHRpb25Db2RlKCkpOworICAgICAgICByZXR1cm4g
SlNDOjpqc1VuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9KUyhzdGF0ZSwgZ2xvYmFs
T2JqZWN0LCB2YWx1ZS50YWtlUmV0dXJuVmFsdWUoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbk9yPFQ+JiYg
dmFsdWUpCit7CisgICAgLy8gRklYTUU6IEl0J3MgcmVhbGx5IGFubm95aW5nIHRvIGhhdmUgdHdv
IG9mIHRoZXNlIGZ1bmN0aW9ucy4gU2hvdWxkIGZpbmQgYSB3YXkgdG8gY29tYmluZSB0b0pTIGFu
ZCB0b0pTTmV3bHlDcmVhdGVkLgorICAgIGlmIChVTkxJS0VMWSh2YWx1ZS5oYXNFeGNlcHRpb24o
KSkpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCB2YWx1ZS5leGNlcHRpb25Db2Rl
KCkpOworICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1
cm4gdG9KU05ld2x5Q3JlYXRlZChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB2YWx1ZS50YWtlUmV0dXJu
VmFsdWUoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggM2IzZTMxNjRk
NDNjOTI2NDRlZTkxNmRiYWE2MGVjNDRhMGZjZTUzZi4uNjE2YmFiMTgyYTgyZjdlNWFhNTQ5ZjBh
Y2RiNmMwZGJlZDIzMDhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQzNDEsNyArNDM0MSw3IEBAIHN1YiBHZW5lcmF0
ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBhcmdzLmFwcGVuZCgiIC4gTmF0aXZlVG9KU1ZhbHVlKCRwYXJhbSwgMSwgJGludGVy
ZmFjZSwgJHBhcmFtTmFtZSwgIm1fZGF0YSIpIC4gIik7XG4iKTsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiAgICBOYWtlZFB0cjxFeGNlcHRpb24+
IHJldHVybmVkRXhjZXB0aW9uO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IlxuICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjtcbiIpOwog
CiAgICAgICAgICAgICBteSAkcHJvcGVydHlUb0xvb2t1cCA9ICJJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHN0YXRlLCBcIiR7ZnVuY3Rpb25OYW1lfVwiKSI7CiAgICAgICAgICAgICBteSAkaW52b2tl
TWV0aG9kID0gIkpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uT3JPYmplY3Qi
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDYWxsYmFjay5jcHAKaW5kZXggNmM2ZTRiZjcxMWFkMTE1ZWU4MjJkMmRjNWRlOWFj
N2FhZjE3MDJmMS4uNjU4MmU2MjQ3ZWQ5YzcxMjE2ZjExZjU3ZGUxNWRjNDlmNGI1MDk2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q2FsbGJhY2suY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFj
azo6Y2FsbGJhY2tXaXRoTm9QYXJhbSgpCiAgICAgRXhlY1N0YXRlKiBzdGF0ZSA9IG1fZGF0YS0+
Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdzOwogCi0gICAgTmFrZWRQdHI8RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKKyAgICBO
YWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CiAgICAgbV9kYXRhLT5p
bnZva2VDYWxsYmFjayhhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJjYWxsYmFja1dpdGhOb1BhcmFtIiksIHJl
dHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pCiAgICAgICAgIHJl
cG9ydEV4Y2VwdGlvbihzdGF0ZSwgcmV0dXJuZWRFeGNlcHRpb24pOwpAQCAtMTI4LDcgKzEyOCw3
IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aEFycmF5UGFyYW0oUmVmUHRyPEZs
b2F0MzJBcnJheT4gYXJyYXlQYXJhbSkKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwog
ICAgIGFyZ3MuYXBwZW5kKHRvSlMoc3RhdGUsIG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCksIGFycmF5
UGFyYW0pKTsKIAotICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Cisg
ICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwogICAgIG1fZGF0
YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAiY2FsbGJhY2tXaXRoQXJyYXlQYXJh
bSIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKQogICAg
ICAgICByZXBvcnRFeGNlcHRpb24oc3RhdGUsIHJldHVybmVkRXhjZXB0aW9uKTsKQEAgLTE0OSw3
ICsxNDksNyBAQCBib29sIEpTVGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhTZXJpYWxpemVkU2Ny
aXB0VmFsdWVQYXJhbShSZWZQdHI8U2VyaWFsaXplZFNjcgogICAgIGFyZ3MuYXBwZW5kKHNyelBh
cmFtID8gc3J6UGFyYW0tPmRlc2VyaWFsaXplKHN0YXRlLCBtX2RhdGEtPmdsb2JhbE9iamVjdCgp
LCAwKSA6IGpzTnVsbCgpKTsKICAgICBhcmdzLmFwcGVuZChqc1N0cmluZ1dpdGhDYWNoZShzdGF0
ZSwgc3RyQXJnKSk7CiAKLSAgICBOYWtlZFB0cjxFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9u
OworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKICAgICBt
X2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6
Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgImNhbGxiYWNrV2l0aFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZVBhcmFtIiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0
dXJuZWRFeGNlcHRpb24pCiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihzdGF0ZSwgcmV0dXJuZWRF
eGNlcHRpb24pOwpAQCAtMTY5LDcgKzE2OSw3IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxi
YWNrV2l0aFN0cmluZ0xpc3QoRE9NU3RyaW5nTGlzdCogbGlzdFBhcmFtKQogICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQodG9KUyhzdGF0ZSwgbV9kYXRhLT5n
bG9iYWxPYmplY3QoKSwgbGlzdFBhcmFtKSk7CiAKLSAgICBOYWtlZFB0cjxFeGNlcHRpb24+IHJl
dHVybmVkRXhjZXB0aW9uOworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4
Y2VwdGlvbjsKICAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRh
OjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgImNh
bGxiYWNrV2l0aFN0cmluZ0xpc3QiKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1
cm5lZEV4Y2VwdGlvbikKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKHN0YXRlLCByZXR1cm5lZEV4
Y2VwdGlvbik7CkBAIC0xODksNyArMTg5LDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFjazo6Y2FsbGJh
Y2tXaXRoQm9vbGVhbihib29sIGJvb2xQYXJhbSkKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdzOwogICAgIGFyZ3MuYXBwZW5kKGpzQm9vbGVhbihib29sUGFyYW0pKTsKIAotICAgIE5ha2Vk
UHRyPEV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CisgICAgTmFrZWRQdHI8SlNDOjpFeGNl
cHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwogICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJn
cywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHN0YXRlLCAiY2FsbGJhY2tXaXRoQm9vbGVhbiIpLCByZXR1cm5lZEV4Y2VwdGlvbik7
CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKQogICAgICAgICByZXBvcnRFeGNlcHRpb24oc3Rh
dGUsIHJldHVybmVkRXhjZXB0aW9uKTsKQEAgLTIxMCw3ICsyMTAsNyBAQCBib29sIEpTVGVzdENh
bGxiYWNrOjpjYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyhpbnQzMl90IGxvbmdQYXJhbSwgVGVz
dE5vZGUqIHRlcwogICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKGxvbmdQYXJhbSkpOwogICAgIGFy
Z3MuYXBwZW5kKHRvSlMoc3RhdGUsIG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCksIHRlc3ROb2RlUGFy
YW0pKTsKIAotICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CisgICAg
TmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwogICAgIG1fZGF0YS0+
aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAiY2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bh
c3MiKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikKICAg
ICAgICAgcmVwb3J0RXhjZXB0aW9uKHN0YXRlLCByZXR1cm5lZEV4Y2VwdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5jcHAKaW5kZXggNDgzNzY3MTcwODIyYWVlNjk4NmQwYTEy
N2ZlZjRjY2JlM2Y3NzA2Ni4uY2FmOTg4MjZhMjkyNTJhOTNhMDA4Yjg0NDEwNzE5MDI3MjQ3N2Jm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmNwcApAQCAtNzIsNyArNzIsNyBA
QCBib29sIEpTVGVzdENhbGxiYWNrRnVuY3Rpb246OmNhbGxiYWNrV2l0aE5vUGFyYW0oKQogICAg
IEV4ZWNTdGF0ZSogc3RhdGUgPSBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7
CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKIAotICAgIE5ha2VkUHRyPEV4Y2VwdGlv
bj4gcmV0dXJuZWRFeGNlcHRpb247CisgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVy
bmVkRXhjZXB0aW9uOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgbV9kYXRhLT5pbnZv
a2VDYWxsYmFjayhhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwg
SWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0
aW9uKQpAQCAtOTMsNyArOTMsNyBAQCBib29sIEpTVGVzdENhbGxiYWNrRnVuY3Rpb246OmNhbGxi
YWNrV2l0aEFycmF5UGFyYW0oUmVmUHRyPEZsb2F0MzJBcnJheT4gYXJyYXlQYQogICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQodG9KUyhzdGF0ZSwgbV9kYXRh
LT5nbG9iYWxPYmplY3QoKSwgYXJyYXlQYXJhbSkpOwogCi0gICAgTmFrZWRQdHI8RXhjZXB0aW9u
PiByZXR1cm5lZEV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJu
ZWRFeGNlcHRpb247CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBtX2RhdGEtPmludm9r
ZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJ
ZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRp
b24pCkBAIC0xMTUsNyArMTE1LDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpjYWxs
YmFja1dpdGhTZXJpYWxpemVkU2NyaXB0VmFsdWVQYXJhbShSZWZQdHI8U2VyaWEKICAgICBhcmdz
LmFwcGVuZChzcnpQYXJhbSA/IHNyelBhcmFtLT5kZXNlcmlhbGl6ZShzdGF0ZSwgbV9kYXRhLT5n
bG9iYWxPYmplY3QoKSwgMCkgOiBqc051bGwoKSk7CiAgICAgYXJncy5hcHBlbmQoanNTdHJpbmdX
aXRoQ2FjaGUoc3RhdGUsIHN0ckFyZykpOwogCi0gICAgTmFrZWRQdHI8RXhjZXB0aW9uPiByZXR1
cm5lZEV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNl
cHRpb247CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBtX2RhdGEtPmludm9rZUNhbGxi
YWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlm
aWVyKCksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pCkBA
IC0xMzYsNyArMTM2LDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpjYWxsYmFja1dp
dGhTdHJpbmdMaXN0KERPTVN0cmluZ0xpc3QqIGxpc3RQYXJhbSkKICAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKHRvSlMoc3RhdGUsIG1fZGF0YS0+Z2xvYmFs
T2JqZWN0KCksIGxpc3RQYXJhbSkpOwogCi0gICAgTmFrZWRQdHI8RXhjZXB0aW9uPiByZXR1cm5l
ZEV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRp
b247CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNr
KGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVy
KCksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pCkBAIC0x
NTcsNyArMTU3LDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpjYWxsYmFja1dpdGhC
b29sZWFuKGJvb2wgYm9vbFBhcmFtKQogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAg
ICAgYXJncy5hcHBlbmQoanNCb29sZWFuKGJvb2xQYXJhbSkpOwogCi0gICAgTmFrZWRQdHI8RXhj
ZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4g
cmV0dXJuZWRFeGNlcHRpb247CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBtX2RhdGEt
Pmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0
aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRF
eGNlcHRpb24pCkBAIC0xNzksNyArMTc5LDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9u
OjpjYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyhpbnQzMl90IGxvbmdQYXJhbSwgVGVzdE4KICAg
ICBhcmdzLmFwcGVuZChqc051bWJlcihsb25nUGFyYW0pKTsKICAgICBhcmdzLmFwcGVuZCh0b0pT
KHN0YXRlLCBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLCB0ZXN0Tm9kZVBhcmFtKSk7CiAKLSAgICBO
YWtlZFB0cjxFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOworICAgIE5ha2VkUHRyPEpTQzo6
RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNr
VHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlm
IChyZXR1cm5lZEV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01J
bXBsZW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24u
Y3BwCmluZGV4IGFmYTM2Mjg4MjRhMGZhZjMwNGQ4ZGJiY2Y1NGUyYjNjYTg3MTg5MTIuLmVmYmU1
MWZmZjU5ZDc0ZTkzZDM5NGU4YzkwNTc1NWQ0MTZiODA3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RPTUltcGxlbWVudGF0aW9uLmNwcApAQCAtMjUsMjUgKzI1LDI1IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKIAotI2luY2x1ZGUgIkNvbnRl
bnRUeXBlLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkNvbnRlbnRU
eXBlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUeXBlLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJGVFBEaXJlY3RvcnlEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNs
dWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIkZUUERpcmVjdG9yeURvY3VtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEhlYWRFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTFRpdGxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAj
aW5jbHVkZSAiSW1hZ2VEb2N1bWVudC5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIK
ICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJNZWRpYURvY3VtZW50LmgiCi0jaW5j
bHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKLSNpbmNsdWRlICJN
SU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgogI2luY2x1ZGUgIlBsdWdpbkRvY3VtZW50
LmgiCkBAIC03Myw2ICs3Myw3IEBAIHN0YXRpYyB2b2lkIGFkZFN0cmluZyhGZWF0dXJlU2V0JiBz
ZXQsIGNvbnN0IGNoYXIqIHN0cmluZykKIH0KIAogI2lmIEVOQUJMRShWSURFTykKKwogY2xhc3Mg
RE9NSW1wbGVtZW50YXRpb25TdXBwb3J0c1R5cGVDbGllbnQgOiBwdWJsaWMgTWVkaWFQbGF5ZXJT
dXBwb3J0c1R5cGVDbGllbnQgewogcHVibGljOgogICAgIERPTUltcGxlbWVudGF0aW9uU3VwcG9y
dHNUeXBlQ2xpZW50KGJvb2wgbmVlZHNIYWNrcywgY29uc3QgU3RyaW5nJiBob3N0KQpAQCAtODgs
NiArODksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9uZWVkc0hhY2tzOwogICAgIFN0cmluZyBt
X2hvc3Q7CiB9OworCiAjZW5kaWYKIAogc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRTVkcxMEZlYXR1
cmUoY29uc3QgU3RyaW5nJiBmZWF0dXJlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pCkBAIC0yMDcs
MTAzICsyMDksNTggQEAgYm9vbCBET01JbXBsZW1lbnRhdGlvbjo6aGFzRmVhdHVyZShjb25zdCBT
dHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotUmVmUHRyPERvY3VtZW50VHlwZT4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3Vt
ZW50VHlwZShjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsCi0gICAgY29uc3QgU3RyaW5nJiBw
dWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNl
cHRpb25PcjxSZWY8RG9jdW1lbnRUeXBlPj4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3Vt
ZW50VHlwZShjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIGNvbnN0IFN0cmluZyYgcHVibGlj
SWQsIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQpCiB7Ci0gICAgU3RyaW5nIHByZWZpeCwgbG9jYWxO
YW1lOwotICAgIGlmICghRG9jdW1lbnQ6OnBhcnNlUXVhbGlmaWVkTmFtZShxdWFsaWZpZWROYW1l
LCBwcmVmaXgsIGxvY2FsTmFtZSwgZWMpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKKyAgICBTdHJpbmcgcHJlZml4OworICAgIFN0cmluZyBsb2NhbE5hbWU7
CisgICAgRG9jdW1lbnQ6OnBhcnNlUXVhbGlmaWVkTmFtZShxdWFsaWZpZWROYW1lLCBwcmVmaXgs
IGxvY2FsTmFtZSwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbihl
Yyk7CiAKICAgICByZXR1cm4gRG9jdW1lbnRUeXBlOjpjcmVhdGUobV9kb2N1bWVudCwgcXVhbGlm
aWVkTmFtZSwgcHVibGljSWQsIHN5c3RlbUlkKTsKIH0KIAotRE9NSW1wbGVtZW50YXRpb24qIERP
TUltcGxlbWVudGF0aW9uOjpnZXRJbnRlcmZhY2UoY29uc3QgU3RyaW5nJiAvKmZlYXR1cmUqLykK
K3N0YXRpYyBpbmxpbmUgUmVmPFhNTERvY3VtZW50PiBjcmVhdGVYTUxEb2N1bWVudChjb25zdCBT
dHJpbmcmIG5hbWVzcGFjZVVSSSkKIHsKLSAgICByZXR1cm4gMDsKKyAgICBpZiAobmFtZXNwYWNl
VVJJID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpCisgICAgICAgIHJldHVybiBTVkdEb2N1
bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgpKTsKKyAgICBpZiAobmFtZXNwYWNlVVJJID09IEhU
TUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpCisgICAgICAgIHJldHVybiBYTUxEb2N1bWVudDo6
Y3JlYXRlWEhUTUwobnVsbHB0ciwgVVJMKCkpOworICAgIHJldHVybiBYTUxEb2N1bWVudDo6Y3Jl
YXRlKG51bGxwdHIsIFVSTCgpKTsKIH0KIAotUmVmUHRyPFhNTERvY3VtZW50PiBET01JbXBsZW1l
bnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksCi0gICAg
Y29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBEb2N1bWVudFR5cGUqIGRvY3R5cGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8UmVmPFhNTERvY3VtZW50Pj4gRE9NSW1wbGVtZW50
YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBT
dHJpbmcmIHF1YWxpZmllZE5hbWUsIERvY3VtZW50VHlwZSogZG9jdW1lbnRUeXBlKQogewotICAg
IFJlZlB0cjxYTUxEb2N1bWVudD4gZG9jOwotICAgIGlmIChuYW1lc3BhY2VVUkkgPT0gU1ZHTmFt
ZXM6OnN2Z05hbWVzcGFjZVVSSSkKLSAgICAgICAgZG9jID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZSgw
LCBVUkwoKSk7Ci0gICAgZWxzZSBpZiAobmFtZXNwYWNlVVJJID09IEhUTUxOYW1lczo6eGh0bWxO
YW1lc3BhY2VVUkkpCi0gICAgICAgIGRvYyA9IFhNTERvY3VtZW50OjpjcmVhdGVYSFRNTCgwLCBV
UkwoKSk7Ci0gICAgZWxzZQotICAgICAgICBkb2MgPSBYTUxEb2N1bWVudDo6Y3JlYXRlKDAsIFVS
TCgpKTsKKyAgICBhdXRvIGRvY3VtZW50ID0gY3JlYXRlWE1MRG9jdW1lbnQobmFtZXNwYWNlVVJJ
KTsKIAotICAgIGRvYy0+c2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3kobV9kb2N1bWVudC5zZWN1cml0
eU9yaWdpblBvbGljeSgpKTsKKyAgICBkb2N1bWVudC0+c2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3ko
bV9kb2N1bWVudC5zZWN1cml0eU9yaWdpblBvbGljeSgpKTsKIAotICAgIFJlZlB0cjxOb2RlPiBk
b2N1bWVudEVsZW1lbnQ7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGRvY3VtZW50RWxlbWVudDsKICAg
ICBpZiAoIXF1YWxpZmllZE5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGRvY3VtZW50RWxlbWVu
dCA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgZWMp
OworICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgZG9jdW1lbnRFbGVtZW50
ID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUs
IGVjKTsKICAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uKGVjKTsKICAgICB9CiAKLSAgICBpZiAoZG9jdHlwZSkK
LSAgICAgICAgZG9jLT5hcHBlbmRDaGlsZCgqZG9jdHlwZSk7CisgICAgaWYgKGRvY3VtZW50VHlw
ZSkKKyAgICAgICAgZG9jdW1lbnQtPmFwcGVuZENoaWxkKCpkb2N1bWVudFR5cGUpOwogICAgIGlm
IChkb2N1bWVudEVsZW1lbnQpCi0gICAgICAgIGRvYy0+YXBwZW5kQ2hpbGQoKmRvY3VtZW50RWxl
bWVudCk7CisgICAgICAgIGRvY3VtZW50LT5hcHBlbmRDaGlsZCgqZG9jdW1lbnRFbGVtZW50KTsK
IAotICAgIHJldHVybiBkb2M7CisgICAgcmV0dXJuIFdURk1vdmUoZG9jdW1lbnQpOwogfQogCi1S
ZWY8Q1NTU3R5bGVTaGVldD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUNTU1N0eWxlU2hlZXQo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBtZWRpYSwgRXhjZXB0aW9uQ29kZSYpCitSZWY8
Q1NTU3R5bGVTaGVldD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUNTU1N0eWxlU2hlZXQoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBtZWRpYSkKIHsKICAgICAvLyBGSVhNRTogVGl0bGUg
c2hvdWxkIGJlIHNldC4KICAgICAvLyBGSVhNRTogTWVkaWEgY291bGQgaGF2ZSB3cm9uZyBzeW50
YXgsIGluIHdoaWNoIGNhc2Ugd2Ugc2hvdWxkIGdlbmVyYXRlIGFuIGV4Y2VwdGlvbi4KLSAgICBS
ZWY8Q1NTU3R5bGVTaGVldD4gc2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoU3R5bGVTaGVl
dENvbnRlbnRzOjpjcmVhdGUoKSk7CisgICAgYXV0byBzaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNy
ZWF0ZShTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZSgpKTsKICAgICBzaGVldC0+c2V0TWVkaWFR
dWVyaWVzKE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZUFsbG93aW5nRGVzY3JpcHRpb25TeW50YXgobWVk
aWEpKTsKICAgICByZXR1cm4gc2hlZXQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlk
WE1MTUlNRVR5cGVDaGFyKFVDaGFyIGMpCi17Ci0gICAgLy8gVmFsaWQgY2hhcmFjdGVycyBwZXIg
UkZDcyAzMDIzIGFuZCAyMDQ1OgotICAgIC8vIDAtOWEtekEtWl8tK34hJF57fXwuJSdgIyYqCi0g
ICAgcmV0dXJuIGlzQVNDSUlBbHBoYW51bWVyaWMoYykgfHwgYyA9PSAnIScgfHwgYyA9PSAnIycg
fHwgYyA9PSAnJCcgfHwgYyA9PSAnJScgfHwgYyA9PSAnJicgfHwgYyA9PSAnXCcnIHx8IGMgPT0g
JyonIHx8IGMgPT0gJysnCi0gICAgICAgIHx8IGMgPT0gJy0nIHx8IGMgPT0gJy4nIHx8IGMgPT0g
J14nIHx8IGMgPT0gJ18nIHx8IGMgPT0gJ2AnIHx8IGMgPT0gJ3snIHx8IGMgPT0gJ3wnIHx8IGMg
PT0gJ30nIHx8IGMgPT0gJ34nOwotfQotCi1ib29sIERPTUltcGxlbWVudGF0aW9uOjppc1hNTE1J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCi17Ci0gICAgLy8gRklYTUU6IENhbiB3ZSBt
b3ZlIHRoaXMgbG9naWMgdG8gTUlNRVR5cGVSZWdpc3RyeSBhbmQgaGF2ZSB0aGlzIGp1c3QgYmUg
YSBzaW5nbGUgZnVuY3Rpb24gY2FsbD8KLQotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShtaW1lVHlwZSwgInRleHQveG1sIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi94bWwiKSB8fCBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQveHNsIikpCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgaWYgKCFtaW1lVHlwZS5lbmRzV2l0aCgiK3htbCIsIGZhbHNlKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgc2l6ZV90IHNsYXNoUG9zaXRpb24gPSBtaW1lVHlwZS5maW5kKCcv
Jyk7Ci0gICAgLy8gVGFrZSBpbnRvIGFjY291bnQgdGhlICcreG1sJyBlbmRpbmcgb2YgbWltZVR5
cGUuCi0gICAgaWYgKHNsYXNoUG9zaXRpb24gPT0gbm90Rm91bmQgfHwgIXNsYXNoUG9zaXRpb24g
fHwgc2xhc2hQb3NpdGlvbiA9PSBtaW1lVHlwZS5sZW5ndGgoKSAtIDUpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIC8vIEFnYWluLCBtaW1lVHlwZSBlbmRzIHdpdGggJyt4bWwnLCBubyBu
ZWVkIHRvIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGF0IHN1YnN0cmluZy4KLSAgICBzaXplX3Qg
bWltZUxlbmd0aCA9IG1pbWVUeXBlLmxlbmd0aCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbWltZUxlbmd0aCAtIDQ7ICsraSkgewotICAgICAgICBpZiAoIWlzVmFsaWRYTUxNSU1FVHlw
ZUNoYXIobWltZVR5cGVbaV0pICYmIGkgIT0gc2xhc2hQb3NpdGlvbikKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBET01JbXBs
ZW1lbnRhdGlvbjo6aXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsKLSAg
ICAvLyBGSVhNRTogQ2FuIHdlIG1vdmUgdGhpcyBsb2dpYyB0byBNSU1FVHlwZVJlZ2lzdHJ5IGFu
ZCBoYXZlIHRoaXMganVzdCBiZSBhIHNpbmdsZSBmdW5jdGlvbiBjYWxsPwotCi0gICAgcmV0dXJu
IE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKG1pbWVUeXBl
KQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFw
cGxpY2F0aW9uL2pzb24iKSAvLyBSZW5kZXIgSlNPTiBhcyB0ZXh0L3BsYWluLgotICAgICAgICB8
fCAobWltZVR5cGUuc3RhcnRzV2l0aCgidGV4dC8iLCBmYWxzZSkKLSAgICAgICAgICAgICYmICFl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQvaHRtbCIpCi0gICAg
ICAgICAgICAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0
L3htbCIpCi0gICAgICAgICAgICAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWlt
ZVR5cGUsICJ0ZXh0L3hzbCIpKTsKLX0KLQogUmVmPEhUTUxEb2N1bWVudD4gRE9NSW1wbGVtZW50
YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIGF1
dG8gZG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBVUkwoKSk7CkBAIC0z
MjEsNiArMjc4LDkgQEAgUmVmPEhUTUxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0
ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKQogCiBSZWY8RG9jdW1lbnQ+IERPTUlt
cGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIHR5cGUsIEZyYW1lKiBm
cmFtZSwgY29uc3QgVVJMJiB1cmwpCiB7CisgICAgLy8gRklYTUU6IENvbmZ1c2luZyB0byBoYXZl
IHRoaXMgaGVyZSB3aXRoIHB1YmxpYyBET00gQVBJcyBmb3IgY3JlYXRpbmcgZG9jdW1lbnRzLiBU
aGlzIGlzIGRpZmZlcmVudCBlbm91Z2ggdGhhdCBpdCBzaG91bGQgcGVyaGFwcyBiZSBtb3ZlZC4K
KyAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBpcyBkb2luZyBjYXNlIGluc2Vuc2l0aXZlIGNv
bXBhcmlzb25zIG9uIE1JTUUgdHlwZXMuIFNob3VsZCBkbyBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZSBpbnN0ZWFkLgorCiAgICAgLy8gUGx1Z2lucyBjYW5ub3QgdGFrZSBIVE1MIGFuZCBY
SFRNTCBmcm9tIHVzLCBhbmQgd2UgZG9uJ3QgZXZlbiBuZWVkIHRvIGluaXRpYWxpemUgdGhlIHBs
dWdpbiBkYXRhYmFzZSBmb3IgdGhvc2UuCiAgICAgaWYgKHR5cGUgPT0gInRleHQvaHRtbCIpCiAg
ICAgICAgIHJldHVybiBIVE1MRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKQEAgLTMzOCw3
ICsyOTgsNyBAQCBSZWY8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVu
dChjb25zdCBTdHJpbmcmIHR5cGUsIEZyYW1lKiBmcmFtZQogICAgICAgICByZXR1cm4gSW1hZ2VE
b2N1bWVudDo6Y3JlYXRlKCpmcmFtZSwgdXJsKTsKIAogICAgIFBsdWdpbkRhdGEqIHBsdWdpbkRh
dGEgPSBudWxscHRyOwotICAgIFBsdWdpbkRhdGE6OkFsbG93ZWRQbHVnaW5UeXBlcyBhbGxvd2Vk
UGx1Z2luVHlwZXMgPSBQbHVnaW5EYXRhOjpPbmx5QXBwbGljYXRpb25QbHVnaW5zOworICAgIGF1
dG8gYWxsb3dlZFBsdWdpblR5cGVzID0gUGx1Z2luRGF0YTo6T25seUFwcGxpY2F0aW9uUGx1Z2lu
czsKICAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICBpZiAoZnJhbWUt
PmxvYWRlcigpLnN1YmZyYW1lTG9hZGVyKCkuYWxsb3dQbHVnaW5zKCkpCiAgICAgICAgICAgICBh
bGxvd2VkUGx1Z2luVHlwZXMgPSBQbHVnaW5EYXRhOjpBbGxQbHVnaW5zOwpAQCAtMzY5LDEzICsz
MjksMTMgQEAgUmVmPERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQo
Y29uc3QgU3RyaW5nJiB0eXBlLCBGcmFtZSogZnJhbWUKICAgICAvLyBhbmQgYWxzbyBzZXJ2ZXMg
YXMgYW4gb3B0aW1pemF0aW9uIHRvIHByZXZlbnQgbG9hZGluZyB0aGUgcGx1Zy1pbiBkYXRhYmFz
ZSBpbiB0aGUgY29tbW9uIGNhc2UuCiAgICAgaWYgKHR5cGUgIT0gInRleHQvcGxhaW4iICYmICgo
cGx1Z2luRGF0YSAmJiBwbHVnaW5EYXRhLT5zdXBwb3J0c1dlYlZpc2libGVNaW1lVHlwZSh0eXBl
LCBhbGxvd2VkUGx1Z2luVHlwZXMpKSB8fCAoZnJhbWUgJiYgZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLnNob3VsZEFsd2F5c1VzZVBsdWdpbkRvY3VtZW50KHR5cGUpKSkpCiAgICAgICAgIHJldHVy
biBQbHVnaW5Eb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwotICAgIGlmIChpc1RleHRNSU1F
VHlwZSh0eXBlKSkKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNUZXh0TUlNRVR5cGUodHlw
ZSkpCiAgICAgICAgIHJldHVybiBUZXh0RG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKIAog
ICAgIGlmICh0eXBlID09ICJpbWFnZS9zdmcreG1sIikKICAgICAgICAgcmV0dXJuIFNWR0RvY3Vt
ZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CiAKLSAgICBpZiAoaXNYTUxNSU1FVHlwZSh0eXBlKSkK
KyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZSh0eXBlKSkKICAgICAgICAg
cmV0dXJuIFhNTERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CiAKICAgICByZXR1cm4gSFRN
TERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1l
bnRhdGlvbi5oCmluZGV4IDg4ODBjNGM1MGMxMjk2YjZhOTJjY2I4NTBhYTdkMGU1YzdlZmM1OTQu
LmQ4NmFkZjA3YmYxYTIyMGEyZDEyODZkNGZjMTVhM2IzNzlhY2FiODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChD
KSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkg
QW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEg
RGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsNiArMjMsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1l
bnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzYsMjUgKzM3LDE0IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRlcmVmKCkgeyBtX2RvY3VtZW50LmRlcmVmKCk7IH0KICAgICBEb2N1bWVudCYg
ZG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50OyB9CiAKLSAgICAvLyBET00gbWV0aG9kcyAm
IGF0dHJpYnV0ZXMgZm9yIERPTUltcGxlbWVudGF0aW9uCi0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIGJvb2wgaGFzRmVhdHVyZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYg
dmVyc2lvbik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPERvY3VtZW50VHlwZT4gY3JlYXRl
RG9jdW1lbnRUeXBlKGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgU3RyaW5nJiBw
dWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxYTUxEb2N1bWVudD4gY3JlYXRlRG9jdW1lbnQoY29uc3QgU3Ry
aW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgRG9jdW1lbnRU
eXBlKiwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgRE9NSW1wbGVtZW50YXRpb24qIGdldEludGVy
ZmFjZShjb25zdCBTdHJpbmcmIGZlYXR1cmUpOwotCi0gICAgLy8gRnJvbSB0aGUgRE9NSW1wbGVt
ZW50YXRpb25DU1MgaW50ZXJmYWNlCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxDU1NT
dHlsZVNoZWV0PiBjcmVhdGVDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0
IFN0cmluZyYgbWVkaWEsIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgIC8vIEZyb20gdGhlIEhUTUxE
T01JbXBsZW1lbnRhdGlvbiBpbnRlcmZhY2UKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25P
cjxSZWY8RG9jdW1lbnRUeXBlPj4gY3JlYXRlRG9jdW1lbnRUeXBlKGNvbnN0IFN0cmluZyYgcXVh
bGlmaWVkTmFtZSwgY29uc3QgU3RyaW5nJiBwdWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1J
ZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPFhNTERvY3VtZW50Pj4gY3Jl
YXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVh
bGlmaWVkTmFtZSwgRG9jdW1lbnRUeXBlKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEhUTUxE
b2N1bWVudD4gY3JlYXRlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGhhc0ZlYXR1cmUoY29uc3QgU3RyaW5nJiBmZWF0dXJl
LCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
Q1NTU3R5bGVTaGVldD4gY3JlYXRlQ1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBTdHJpbmcmIG1lZGlhKTsKIAotICAgIC8vIE90aGVyIG1ldGhvZHMgKG5vdCBwYXJ0IG9m
IERPTSkKICAgICBzdGF0aWMgUmVmPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudChjb25zdCBTdHJp
bmcmIE1JTUVUeXBlLCBGcmFtZSosIGNvbnN0IFVSTCYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIGJvb2wgaXNYTUxNSU1FVHlwZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIE1J
TUVUeXBlKTsKLQogcHJpdmF0ZToKICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaWRsIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbAppbmRleCBkYTI2Y2QwZGE2NzVmZGY2
YTE1ODFiMWM5MjkwODU3MmViM2YwYjdjLi43NDM1NjEzMzVkMjM4OTc4OWVhZGJiYmM2NWQ5NDli
ZDAwZjllMzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRp
b24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGwKQEAg
LTIzLDE1ICsyMywxNCBAQAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbERvY3VtZW50LAog
ICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBET01JbXBsZW1lbnRh
dGlvbiB7CisgICAgW05ld09iamVjdF0gRG9jdW1lbnRUeXBlIGNyZWF0ZURvY3VtZW50VHlwZShE
T01TdHJpbmcgcXVhbGlmaWVkTmFtZSwgRE9NU3RyaW5nIHB1YmxpY0lkLCBET01TdHJpbmcgc3lz
dGVtSWQpOworICAgIFtOZXdPYmplY3RdIFhNTERvY3VtZW50IGNyZWF0ZURvY3VtZW50KERPTVN0
cmluZz8gbmFtZXNwYWNlVVJJLCBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBx
dWFsaWZpZWROYW1lLCBvcHRpb25hbCBEb2N1bWVudFR5cGU/IGRvY3R5cGUgPSBudWxsKTsKKyAg
ICBbTmV3T2JqZWN0XSBIVE1MRG9jdW1lbnQgY3JlYXRlSFRNTERvY3VtZW50KG9wdGlvbmFsIERP
TVN0cmluZyB0aXRsZSk7CisKKyAgICAvLyBGSVhNRTogTGF0ZXN0IERPTSBzcGVjaWZpY2F0aW9u
IHNheXMgdGhpcyBzaG91bGQgaWdub3JlIGFsbCBhcmd1bWVudHMgYW5kIGFsd2F5cyByZXR1cm4g
dHJ1ZS4KICAgICAvLyBGSVhNRTogVXNpbmcgInVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0
ZXIgdmFsdWUgaXMgd3JvbmcuCiAgICAgYm9vbGVhbiBoYXNGZWF0dXJlKG9wdGlvbmFsIERPTVN0
cmluZyBmZWF0dXJlID0gInVuZGVmaW5lZCIsIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gb3B0
aW9uYWwgRE9NU3RyaW5nIHZlcnNpb24gPSAidW5kZWZpbmVkIik7CiAKLSAgICBbUmFpc2VzRXhj
ZXB0aW9uLCBOZXdPYmplY3RdIERvY3VtZW50VHlwZSBjcmVhdGVEb2N1bWVudFR5cGUoRE9NU3Ry
aW5nIHF1YWxpZmllZE5hbWUsIERPTVN0cmluZyBwdWJsaWNJZCwgRE9NU3RyaW5nIHN5c3RlbUlk
KTsKLQotICAgIFtOZXdPYmplY3QsIFJhaXNlc0V4Y2VwdGlvbl0gWE1MRG9jdW1lbnQgY3JlYXRl
RG9jdW1lbnQoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIFtUcmVhdE51bGxBcz1FbXB0eVN0cmlu
Z10gRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIG9wdGlvbmFsIERvY3VtZW50VHlwZT8gZG9jdHlw
ZSA9IG51bGwpOwotCiAgICAgLy8gRklYTUU6IFVzaW5nICJ1bmRlZmluZWQiIGFzIGRlZmF1bHQg
cGFyYW1ldGVyIHZhbHVlIGlzIHdyb25nLgotICAgIFtSYWlzZXNFeGNlcHRpb25dIENTU1N0eWxl
U2hlZXQgY3JlYXRlQ1NTU3R5bGVTaGVldChvcHRpb25hbCBET01TdHJpbmcgdGl0bGUgPSAidW5k
ZWZpbmVkIiwgb3B0aW9uYWwgRE9NU3RyaW5nIG1lZGlhID0gInVuZGVmaW5lZCIpOwotCi0gICAg
W05ld09iamVjdF0gSFRNTERvY3VtZW50IGNyZWF0ZUhUTUxEb2N1bWVudChvcHRpb25hbCBET01T
dHJpbmcgdGl0bGUpOworICAgIENTU1N0eWxlU2hlZXQgY3JlYXRlQ1NTU3R5bGVTaGVldChvcHRp
b25hbCBET01TdHJpbmcgdGl0bGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgRE9NU3RyaW5nIG1l
ZGlhID0gInVuZGVmaW5lZCIpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDdhOGZi
ZDhlZWUwNGY5OWEwZDU3ZDJmODFhNTk2MDllMTcwNTdkNDUuLmI2Y2U5NWVkN2RiOGVkYmZhZWQ0
NjVjNTNkZTE4ZGMyNzg1M2IzMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTM3Mywx
MSArMTM3Myw2IEBAIHZvaWQgRG9jdW1lbnQ6OnNldENvbnRlbnRMYW5ndWFnZShjb25zdCBTdHJp
bmcmIGxhbmd1YWdlKQogCiB2b2lkIERvY3VtZW50OjpzZXRYTUxWZXJzaW9uKGNvbnN0IFN0cmlu
ZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKCFpbXBsZW1lbnRhdGlv
bigpLmhhc0ZlYXR1cmUoIlhNTCIsIFN0cmluZygpKSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQ
T1JURURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYgKCFYTUxEb2N1bWVu
dFBhcnNlcjo6c3VwcG9ydHNYTUxWZXJzaW9uKHZlcnNpb24pKSB7CiAgICAgICAgIGVjID0gTk9U
X1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTEzODYsMTMgKzEzODEsOCBAQCB2
b2lkIERvY3VtZW50OjpzZXRYTUxWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAgICAgbV94bWxWZXJzaW9uID0gdmVyc2lvbjsKIH0KIAotdm9pZCBEb2N1
bWVudDo6c2V0WE1MU3RhbmRhbG9uZShib29sIHN0YW5kYWxvbmUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQordm9pZCBEb2N1bWVudDo6c2V0WE1MU3RhbmRhbG9uZShib29sIHN0YW5kYWxvbmUpCiB7Ci0g
ICAgaWYgKCFpbXBsZW1lbnRhdGlvbigpLmhhc0ZlYXR1cmUoIlhNTCIsIFN0cmluZygpKSkgewot
ICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
CiAgICAgbV94bWxTdGFuZGFsb25lID0gc3RhbmRhbG9uZSA/IFN0YW5kYWxvbmUgOiBOb3RTdGFu
ZGFsb25lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDBkOWY5YmNiNTUwZjcxMDg1Y2Rm
ODNkZmEzZjE2YTkyOTY2MjVhODkuLjJlZjVkNTU4ODk4MzlhZDZhY2E0ZjU5ZGIyZjI1NjgwYmI5
Yjc3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC00NDIsNyArNDQyLDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRYTUxFbmNvZGluZyhjb25zdCBTdHJpbmcmIGVuY29kaW5nKSB7IG1feG1s
RW5jb2RpbmcgPSBlbmNvZGluZzsgfSAvLyByZWFkLW9ubHkgcHJvcGVydHksIG9ubHkgdG8gYmUg
c2V0IGZyb20gWE1MRG9jdW1lbnRQYXJzZXIKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFhN
TFZlcnNpb24oY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0WE1MU3RhbmRhbG9uZShib29sLCBFeGNlcHRpb25Db2RlJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRYTUxTdGFuZGFsb25lKGJvb2wpOwogICAgIHZvaWQgc2V0SGFz
WE1MRGVjbGFyYXRpb24oYm9vbCBoYXNYTUxEZWNsYXJhdGlvbikgeyBtX2hhc1hNTERlY2xhcmF0
aW9uID0gaGFzWE1MRGVjbGFyYXRpb24gPyAxIDogMDsgfQogCiAgICAgU3RyaW5nIGRvY3VtZW50
VVJJKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudFVSSTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5p
ZGwKaW5kZXggYzhlMDYxNDllNzViNzE0ZDNjNmEwOWM3YjQ1MGU0MjJkMjdkZmMzYy4uZTlmZjhi
MTkxZjhlNTE5M2QxYmZmZGZkYWU0MmM2ODRmNDEwNmU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aWRsCkBAIC01Myw3ICs1Myw3IEBACiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
PyB4bWxFbmNvZGluZzsKICAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9N
U3RyaW5nPyB4bWxWZXJzaW9uOwotICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0
ZSBib29sZWFuIHhtbFN0YW5kYWxvbmU7CisgICAgYXR0cmlidXRlIGJvb2xlYW4geG1sU3RhbmRh
bG9uZTsKIAogICAgIFtSYWlzZXNFeGNlcHRpb25dIE5vZGUgYWRvcHROb2RlKE5vZGUgc291cmNl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V4Y2VwdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhY2JkNWYyZmQ3ZWVhZTk2ZDI1
M2VjYjhhM2Y0ODQzZWU5YWM0MDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXhjZXB0aW9uLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKworQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
K2FyZSBtZXQ6CisxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCitFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECitXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCitESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKK0RJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CitMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KK0FOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyovCisKKyNwcmFnbWEgb25j
ZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIEV4Y2VwdGlvbkNvZGUgPSBpbnQ7CisK
K2NsYXNzIEV4Y2VwdGlvbiB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRXhjZXB0aW9uKEV4Y2Vw
dGlvbkNvZGUpOworCisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uQ29kZSBjb2RlKCkgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgRXhjZXB0aW9uQ29kZSBtX2NvZGU7Cit9OworCitpbmxpbmUg
RXhjZXB0aW9uOjpFeGNlcHRpb24oRXhjZXB0aW9uQ29kZSBjb2RlKQorICAgIDogbV9jb2RlKGNv
ZGUpCit7Cit9CisKK2lubGluZSBFeGNlcHRpb25Db2RlIEV4Y2VwdGlvbjo6Y29kZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fY29kZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0V4Y2VwdGlvbk9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zOWMwM2Y1NDJkNjAxODg4ZmExOGYwNTQwNWFmMmVjNTU4YmM2Mjc1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgKQEAgLTAsMCAr
MSw3MiBAQAorLyoKKworQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKK2FyZSBtZXQ6CisxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKwor
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCitFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECitXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCitE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKK0RJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CitMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KK0FOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRXhjZXB0aW9u
LmgiCisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiBjbGFzcyBFeGNlcHRpb25PciB7CitwdWJsaWM6
CisgICAgRXhjZXB0aW9uT3IoRXhjZXB0aW9uJiYpOworICAgIEV4Y2VwdGlvbk9yKFJldHVyblR5
cGUmJik7CisKKyAgICBib29sIGhhc0V4Y2VwdGlvbigpIGNvbnN0OworICAgIEV4Y2VwdGlvbkNv
ZGUgZXhjZXB0aW9uQ29kZSgpIGNvbnN0OworICAgIFJldHVyblR5cGUmJiB0YWtlUmV0dXJuVmFs
dWUoKTsKKworcHJpdmF0ZToKKyAgICBzdGQ6OmV4cGVyaW1lbnRhbDo6dmFyaWFudDxFeGNlcHRp
b24sIFJldHVyblR5cGU+IG1fdmFsdWU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5U
eXBlPiBpbmxpbmUgRXhjZXB0aW9uT3I8UmV0dXJuVHlwZT46OkV4Y2VwdGlvbk9yKEV4Y2VwdGlv
biYmIGV4Y2VwdGlvbikKKyAgICA6IG1fdmFsdWUoV1RGTW92ZShleGNlcHRpb24pKQoreworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlPiBpbmxpbmUgRXhjZXB0aW9uT3I8UmV0dXJu
VHlwZT46OkV4Y2VwdGlvbk9yKFJldHVyblR5cGUmJiByZXR1cm5WYWx1ZSkKKyAgICA6IG1fdmFs
dWUoV1RGTW92ZShyZXR1cm5WYWx1ZSkpCit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJldHVy
blR5cGU+IGlubGluZSBib29sIEV4Y2VwdGlvbk9yPFJldHVyblR5cGU+OjpoYXNFeGNlcHRpb24o
KSBjb25zdAoreworICAgIHJldHVybiBzdGQ6OmV4cGVyaW1lbnRhbDo6aG9sZHNfYWx0ZXJuYXRp
dmU8RXhjZXB0aW9uPihtX3ZhbHVlKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlw
ZT4gaW5saW5lIEV4Y2VwdGlvbkNvZGUgRXhjZXB0aW9uT3I8UmV0dXJuVHlwZT46OmV4Y2VwdGlv
bkNvZGUoKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6OmV4cGVyaW1lbnRhbDo6Z2V0PEV4Y2Vw
dGlvbj4obV92YWx1ZSkuY29kZSgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBl
PiBpbmxpbmUgUmV0dXJuVHlwZSYmIEV4Y2VwdGlvbk9yPFJldHVyblR5cGU+Ojp0YWtlUmV0dXJu
VmFsdWUoKQoreworICAgIHJldHVybiBzdGQ6OmV4cGVyaW1lbnRhbDo6Z2V0PFJldHVyblR5cGU+
KFdURk1vdmUobV92YWx1ZSkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVt
cGxhdGVFbGVtZW50LmNwcAppbmRleCAzYjU2ZTU1ZjBlYWIzNTYxMTJhOTlhY2ZmOTAxM2IzYWYz
ZTA5YWFmLi41ODFhYTMzM2VjMGI3YmM0ZDhmYzlkYzZjYmUyOWRiYzJmZDg5YWQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHAKQEAgLTI5LDEwICsyOSw4
IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaW5jbHVkZSAiSFRNTFRlbXBsYXRl
RWxlbWVudC5oIgogCi0jaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJE
b2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAi
VGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCA3M2I0OTk5M2NiMTI5N2ViMGNi
OTMzNDgxMDE2N2Y4MzM3NjExMjA1Li5mOGU2Njc4ZjMyNzBiZDg1MzZmMGYwM2ZmODhmNWI4OGJj
MjJhNzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcApAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgogI2lu
Y2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIkNvb2tpZUphci5oIgotI2luY2x1ZGUgIkRPTUlt
cGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiRE9NUGF0Y2hTdXBwb3J0LmgiCiAjaW5jbHVkZSAi
RE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAgLTU5LDYgKzU4LDcg
QEAKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKKyNpbmNsdWRl
ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAi
TWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0xMjgsNyArMTI4LDcgQEAgc3Rh
dGljIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBjcmVhdGVYSFJUZXh0RGVjb2Rlcihjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLAogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNv
ZGVyOwogICAgIGlmICghdGV4dEVuY29kaW5nTmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIGRlY29k
ZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCB0ZXh0RW5jb2Rp
bmdOYW1lKTsKLSAgICBlbHNlIGlmIChET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlwZSht
aW1lVHlwZSkpIHsKKyAgICBlbHNlIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1hNTE1JTUVUeXBl
KG1pbWVUeXBlKSkgewogICAgICAgICBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3Jl
YXRlKCJhcHBsaWNhdGlvbi94bWwiKTsKICAgICAgICAgZGVjb2Rlci0+dXNlTGVuaWVudFhNTERl
Y29kaW5nKCk7CiAgICAgfSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSht
aW1lVHlwZSwgInRleHQvaHRtbCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggN2JhMTgwNTAwYWJlZjQ4ZjhkYjAzOTM5NTUz
YmM5ZDIwYTJlMTMyZC4uOWZmMjhlMWRlYzM1ZGFmZmFlNmM0NjJlMmUyOTRlZDc5YzIwMDU1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwCkBAIC0zMCwyNCArMzAsMTggQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VzRGF0YS5o
IgogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKLSNpbmNsdWRlICJET01JbXBsZW1lbnRh
dGlvbi5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJl
c291cmNlRGVjb2Rlci5oIgogCi1uYW1lc3BhY2UgewotLy8gMTAwTUIKLXN0YXRpYyBjb25zdCBz
aXplX3QgbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplID0gMTAwICogMTAwMCAqIDEwMDA7Ci0K
LS8vIDEwTUIKLXN0YXRpYyBjb25zdCBzaXplX3QgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVu
dFNpemUgPSAxMCAqIDEwMDAgKiAxMDAwOwotfQotCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIFJlc291cmNlRGF0YQorc3RhdGljIGNvbnN0
IHNpemVfdCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUgPSAxMDAgKiAxMDAwICogMTAwMDsg
Ly8gMTAwTUIKK3N0YXRpYyBjb25zdCBzaXplX3QgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVu
dFNpemUgPSAxMCAqIDEwMDAgKiAxMDAwOyAvLyAxME1CCisKIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29u
c3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAs
IG1fbG9hZGVySWQobG9hZGVySWQpCkBAIC0xMTcsNyArMTExLDYgQEAgc2l6ZV90IE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogICAgIHJl
dHVybiBjb250ZW50U2l6ZUluQnl0ZXMobV9jb250ZW50KSAtIGRhdGFMZW5ndGg7CiB9CiAKLS8v
IE5ldHdvcmtSZXNvdXJjZXNEYXRhCiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6TmV0d29ya1Jlc291
cmNlc0RhdGEoKQogICAgIDogbV9jb250ZW50U2l6ZSgwKQogICAgICwgbV9tYXhpbXVtUmVzb3Vy
Y2VzQ29udGVudFNpemUobWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplKQpAQCAtMTQxLDcgKzEz
NCw3IEBAIHN0YXRpYyBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gY3JlYXRlT3RoZXJSZXNv
dXJjZVRleHREZWNvZGVyKGNvbnN0IFN0cmluZyYKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVj
b2Rlcj4gZGVjb2RlcjsKICAgICBpZiAoIXRleHRFbmNvZGluZ05hbWUuaXNFbXB0eSgpKQogICAg
ICAgICBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwg
dGV4dEVuY29kaW5nTmFtZSk7Ci0gICAgZWxzZSBpZiAoRE9NSW1wbGVtZW50YXRpb246OmlzWE1M
TUlNRVR5cGUobWltZVR5cGUpKSB7CisgICAgZWxzZSBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNY
TUxNSU1FVHlwZShtaW1lVHlwZSkpIHsKICAgICAgICAgZGVjb2RlciA9IFRleHRSZXNvdXJjZURl
Y29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIik7CiAgICAgICAgIGRlY29kZXItPnVzZUxl
bmllbnRYTUxEZWNvZGluZygpOwogICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L2h0bWwiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCmluZGV4IDgwNzk0NDU3ZGVlNzgxMWFhNTgyMDJhMjlmZTBlMDg0ZDBhODQ2NjEu
LmU1NDc5MzhlOGQ0MjNkOTk0ZTg0ODc1MTY5M2VkNjY5NDNmZGRhYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkNocm9t
ZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXIuaCIKICNpbmNsdWRlICJDb250ZW50
U2VjdXJpdHlQb2xpY3kuaCIKLSNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1
ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUg
IkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4
dFJlc291cmNlRGVjb2Rlci5jcHAKaW5kZXggOTVkMzZlMzE1YTA1Yjg1Yjc1MmFhNDQyY2NmYTVi
MTQwZGM2YWY3Ni4uZmU5NGI3ZjgxODc0NmUzZDJlN2FiMzBiNDY3ZmEwOWUxM2IxMjQ5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcApAQCAtMjMs
OSArMjMsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURl
Y29kZXIuaCIKIAotI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSFRN
TE1ldGFDaGFyc2V0UGFyc2VyLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAi
TUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlRleHRDb2RlYy5oIgogI2luY2x1ZGUgIlRl
eHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZ0RldGVjdG9yLmgiCkBAIC0zMDYs
NyArMzA2LDcgQEAgVGV4dFJlc291cmNlRGVjb2Rlcjo6Q29udGVudFR5cGUgVGV4dFJlc291cmNl
RGVjb2Rlcjo6ZGV0ZXJtaW5lQ29udGVudFR5cGUoY29uc3QKICAgICAgICAgcmV0dXJuIENTUzsK
ICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L2h0
bWwiKSkKICAgICAgICAgcmV0dXJuIEhUTUw7Ci0gICAgaWYgKERPTUltcGxlbWVudGF0aW9uOjpp
c1hNTE1JTUVUeXBlKG1pbWVUeXBlKSkKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxN
SU1FVHlwZShtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybiBYTUw7CiAgICAgcmV0dXJuIFBsYWlu
VGV4dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVn
aXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAK
aW5kZXggM2EzNDM5Njc1N2I2NTYxMjIzYzZlMjJkYjcxZWQwMTlhMDUxNTIxYy4uYWRkMjhmZmM2
MjllZmMzZDE5NmMyZGY2YWU0NmYxMzM4NzZmMjdhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC0yOSwyMCArMjksMjEgQEAKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KIAogI2lmIFVTRShDRykKICNpbmNsdWRlICJJbWFnZVNvdXJjZUNHLmgiCi0jaWYgIVBM
QVRGT1JNKElPUykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjZW5kaWYKKworI2lmIFVT
RShDRykgJiYgIVBMQVRGT1JNKElPUykKICNpbmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0Fw
cGxpY2F0aW9uU2VydmljZXMuaD4KLSNlbHNlCi0jaW5jbHVkZSA8SW1hZ2VJTy9DR0ltYWdlRGVz
dGluYXRpb24uaD4KICNlbmRpZgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFBM
QVRGT1JNKElPUykKKyNpbmNsdWRlIDxJbWFnZUlPL0NHSW1hZ2VEZXN0aW5hdGlvbi5oPgogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKQEAgLTU0Miw2
ICs1NDMsNDcgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1Vuc3VwcG9ydGVkVGV4dE1JTUVU
eXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIHVuc3VwcG9ydGVkVGV4dE1J
TUVUeXBlcy0+Y29udGFpbnMobWltZVR5cGUpOwogfQogCitib29sIE1JTUVUeXBlUmVnaXN0cnk6
OmlzVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgcmV0dXJuIGlz
U3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKG1pbWVUeXBlKQorICAgICAgICB8fCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL2pzb24iKSAvLyBS
ZW5kZXIgSlNPTiBhcyB0ZXh0L3BsYWluLgorICAgICAgICB8fCAobWltZVR5cGUuc3RhcnRzV2l0
aCgidGV4dC8iLCBmYWxzZSkKKyAgICAgICAgICAgICYmICFlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShtaW1lVHlwZSwgInRleHQvaHRtbCIpCisgICAgICAgICAgICAmJiAhZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L3htbCIpCisgICAgICAgICAgICAm
JiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L3hzbCIpKTsK
K30KKworCitzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZFhNTE1JTUVUeXBlQ2hhcihVQ2hhciBj
KQoreworICAgIC8vIFZhbGlkIGNoYXJhY3RlcnMgcGVyIFJGQ3MgMzAyMyBhbmQgMjA0NTogMC05
YS16QS1aXy0rfiEkXnt9fC4lJ2AjJioKKyAgICByZXR1cm4gaXNBU0NJSUFscGhhbnVtZXJpYyhj
KSB8fCBjID09ICchJyB8fCBjID09ICcjJyB8fCBjID09ICckJyB8fCBjID09ICclJyB8fCBjID09
ICcmJyB8fCBjID09ICdcJycgfHwgYyA9PSAnKicgfHwgYyA9PSAnKycKKyAgICAgICAgfHwgYyA9
PSAnLScgfHwgYyA9PSAnLicgfHwgYyA9PSAnXicgfHwgYyA9PSAnXycgfHwgYyA9PSAnYCcgfHwg
YyA9PSAneycgfHwgYyA9PSAnfCcgfHwgYyA9PSAnfScgfHwgYyA9PSAnfic7Cit9CisKK2Jvb2wg
TUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQor
eworICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRleHQv
eG1sIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNh
dGlvbi94bWwiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInRl
eHQveHNsIikpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFtaW1lVHlwZS5lbmRz
V2l0aCgiK3htbCIsIGZhbHNlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2l6ZV90
IHNsYXNoUG9zaXRpb24gPSBtaW1lVHlwZS5maW5kKCcvJyk7CisgICAgLy8gVGFrZSBpbnRvIGFj
Y291bnQgdGhlICcreG1sJyBlbmRpbmcgb2YgbWltZVR5cGUuCisgICAgaWYgKHNsYXNoUG9zaXRp
b24gPT0gbm90Rm91bmQgfHwgIXNsYXNoUG9zaXRpb24gfHwgc2xhc2hQb3NpdGlvbiA9PSBtaW1l
VHlwZS5sZW5ndGgoKSAtIDUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEFnYWlu
LCBtaW1lVHlwZSBlbmRzIHdpdGggJyt4bWwnLCBubyBuZWVkIHRvIGNoZWNrIHRoZSB2YWxpZGl0
eSBvZiB0aGF0IHN1YnN0cmluZy4KKyAgICBzaXplX3QgbWltZUxlbmd0aCA9IG1pbWVUeXBlLmxl
bmd0aCgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWltZUxlbmd0aCAtIDQ7ICsraSkg
eworICAgICAgICBpZiAoIWlzVmFsaWRYTUxNSU1FVHlwZUNoYXIobWltZVR5cGVbaV0pICYmIGkg
IT0gc2xhc2hQb3NpdGlvbikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRN
SU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIC8vIFNpbmNlIHRoaXMgc2V0
IGlzIHZlcnkgbGltaXRlZCBhbmQgaXMgbGlrZWx5IHRvIHJlbWFpbiBzbyB3ZSB3b24ndCBib3Ro
ZXIgd2l0aCB0aGUgb3ZlcmhlYWQKQEAgLTU3Nyw3ICs2MTksNyBAQCBib29sIE1JTUVUeXBlUmVn
aXN0cnk6OmNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChtaW1lVHlwZS5zdGFydHNXaXRoKCJ0ZXh0LyIsIGZhbHNl
KSkKLSAgICAgICAgcmV0dXJuICFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1Vuc3VwcG9ydGVkVGV4dE1J
TUVUeXBlKG1pbWVUeXBlKTsKKyAgICAgICAgcmV0dXJuICFpc1Vuc3VwcG9ydGVkVGV4dE1JTUVU
eXBlKG1pbWVUeXBlKTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCA0ZGM3NGU3Y2IzZmE4NTQ2ZjE4OGM2MmIw
N2ZlMzIwZTA4ZmI5ZDg1Li42NzQ5NTQ2ZGViYWIwNTM5NWVmODVhYjgyYWYwMWJkMjI4NTFiNzgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMyw3ICsx
Myw3IEBACiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKICAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCiAgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCiAgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKICAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKICAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgpAQCAtMjMsMTMgKzIzLDExIEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTUlNRVR5cGVSZWdpc3RyeV9oCi0jZGVmaW5l
IE1JTUVUeXBlUmVnaXN0cnlfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNjAsMTYgKzU4LDEyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1N1
cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsgICAgCiAK
ICAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBub24taW1hZ2UgTUlNRSB0eXBlIGlzIHN1aXRhYmxl
IGZvciBiZWluZyBsb2FkZWQgYXMgYQotICAgIC8vIGRvY3VtZW50IGluIGEgZnJhbWUuICBJbmNs
dWRlcyBzdXBwb3J0ZWQgSmF2YVNjcmlwdCBNSU1FIHR5cGVzLgorICAgIC8vIGRvY3VtZW50IGlu
IGEgZnJhbWUuIEluY2x1ZGVzIHN1cHBvcnRlZCBKYXZhU2NyaXB0IE1JTUUgdHlwZXMuCiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0
eXBlIGlzIHN1aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgdXNpbmcgPHZpZGVvPiBhbmQgPGF1ZGlv
Pi4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZE1lZGlhTUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKLSAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhl
IE1JTUUgdHlwZSBpcyBub3Qgc3VpdGFibGUgZm9yIGJlaW5nIGxvYWRlZCBhcyBhIHRleHQKLSAg
ICAvLyBkb2N1bWVudCBpbiBhIGZyYW1lLiBPbmx5IHZhbGlkIGZvciBNSU1FIHR5cGVzIGJlZ2lu
aW5nIHdpdGggInRleHQvIi4KLSAgICBzdGF0aWMgYm9vbCBpc1Vuc3VwcG9ydGVkVGV4dE1JTUVU
eXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwotCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEg
TUlNRSB0eXBlIGlzIGEgdmFsaWQgSmF2YSBhcHBsZXQgbWltZSB0eXBlLgogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIGlzSmF2YUFwcGxldE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpOwogCkBAIC04Niw2ICs4MCwxNSBAQCBwdWJsaWM6CiAgICAgLy8gInRleHQvIiBhbmQg
aXNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZSgpIHJldHVybnMgZmFsc2UuCiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIGJvb2wgY2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
OwogCisgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIG9uZSB3aGVyZSBhbiBY
TUwgZG9jdW1lbnQgc2hvdWxkIGJlIGNyZWF0ZWQKKyAgICAvLyByYXRoZXIgdGhhbiBhbiBIVE1M
IGRvY3VtZW50LgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzWE1MTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisKKyAgICAvLyBVc2VkIGluIHBhZ2UgbG9hZCBhbGdv
cml0aG0gdG8gZGVjaWRlIHdoZXRoZXIgdG8gZGlzcGxheSBhcyBhIHRleHQKKyAgICAvLyBkb2N1
bWVudCBpbiBhIGZyYW1lLiBOb3QgYSBnb29kIGlkZWEgdG8gdXNlIGVsc2V3aGVyZSwgYmVjYXVz
ZSB0aGF0IGNvZGUKKyAgICAvLyBtYWtlcyB0aGlzIHRlc3QgaXMgYWZ0ZXIgbWFueSBvdGhlciB0
ZXN0cyBhcmUgZG9uZSBvbiB0aGUgTUlNRSB0eXBlLgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBib29sIGlzVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworCiAgICAgLy8g
RklYTUU6IFdlYktpdCBjb2Rpbmcgc3R5bGUgc2F5cyB3ZSBzaG91bGQgbm90IGhhdmUgdGhlIHdv
cmQgImdldCIgaW4gdGhlIG5hbWVzIG9mIHRoZXNlIGZ1bmN0aW9ucy4KICAgICAvLyBGSVhNRTog
V291bGQgYmUgbmljZSB0byBmaW5kIGEgd2F5IHRvIGF2b2lkIGV4cG9zaW5nIHRoZXNlIHNldHMs
IGV2ZW4gd29yc2UgZXhwb3Npbmcgbm9uLWNvbnN0IHJlZmVyZW5jZXMuCiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBn
ZXRTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpOwpAQCAtMTAwLDEwICsxMDMsMTMgQEAgcHVibGlj
OgogICAgIC8vIEZJWE1FOiBXZWJLaXQgY29kaW5nIHN0eWxlIHNheXMgd2Ugc2hvdWxkIG5vdCBo
YXZlIHRoZSB3b3JkICJnZXQiIGluIHRoZSBuYW1lIG9mIHRoaXMgZnVuY3Rpb24uCiAgICAgLy8g
RklYTUU6IFVuY2xlYXIgd2hhdCB0aGUgY29uY2VwdCBvZiBhIG5vcm1hbGl6ZWQgTUlNRSB0eXBl
IGlzOyBjdXJyZW50bHkgaXQncyBhIHBsYXRmb3JtLXNwZWNpZmljIG5vdGlvbi4KICAgICBzdGF0
aWMgU3RyaW5nIGdldE5vcm1hbGl6ZWRNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKKworcHJpdmF0
ZToKKyAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIE1JTUUgdHlwZSBpcyBub3Qgc3VpdGFibGUg
Zm9yIGJlaW5nIGxvYWRlZCBhcyBhIHRleHQKKyAgICAvLyBkb2N1bWVudCBpbiBhIGZyYW1lLiBP
bmx5IHZhbGlkIGZvciBNSU1FIHR5cGVzIGJlZ2luaW5nIHdpdGggInRleHQvIi4KKyAgICBzdGF0
aWMgYm9vbCBpc1Vuc3VwcG9ydGVkVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
OwogfTsKIAogY29uc3QgU3RyaW5nJiBkZWZhdWx0TUlNRVR5cGUoKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gTUlNRVR5cGVSZWdpc3RyeV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5jcHAKaW5kZXggNzQyZjM4NTU4MWM5MDA2Y2E0NmYwYjA0N2EyMGExYTA0ZDU2ZDVm
Mi4uYzQyN2FiZDZkNGFmOGFkMzNkZGM2OGQxNWQwY2MzN2JhMTIxYTgzYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIlNWR0VsZW1lbnQu
aCIKIAogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgotI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJFdmVudC5oIgpAQCAtMzYyLDExICszNjEsNiBAQCB2b2lkIFNWR0VsZW1lbnQ6
OnJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihTVkdQYXJzaW5nRXJyb3IgZXJyb3IsIGNvbnN0
IFF1YWxpZgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1ib29sIFNWR0VsZW1lbnQ6
OmlzU3VwcG9ydGVkKFN0cmluZ0ltcGwqIGZlYXR1cmUsIFN0cmluZ0ltcGwqIHZlcnNpb24pIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIERPTUltcGxlbWVudGF0aW9uOjpoYXNGZWF0dXJlKGZlYXR1cmUs
IHZlcnNpb24pOwotfQotCiB2b2lkIFNWR0VsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5v
ZGUmIHJvb3RQYXJlbnQpCiB7CiAgICAgYm9vbCB3YXNJbkRvY3VtZW50ID0gcm9vdFBhcmVudC5p
bkRvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAppbmRleCBmM2ZmZTgxZTYyY2ZhOTQ2
NWIyN2MwM2UwOWEwZjY2OGEwNjlhYmVjLi4wZjFhNGMxMWIzZGUwYmI0NThjNzI5MTk0ZDQ5YTky
NmExYWZkYmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKQEAgLTEsNyArMSw3IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFu
biA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgpAQCAtMjAsMTAgKzIwLDggQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICov
CiAKLSNpZm5kZWYgU1ZHRWxlbWVudF9oCi0jZGVmaW5lIFNWR0VsZW1lbnRfaAorI3ByYWdtYSBv
bmNlCiAKLSNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJTVkdMYW5nU3BhY2UuaCIKICNpbmNsdWRlICJTVkdMb2Nh
dGFibGUuaCIKQEAgLTMxLDcgKzI5LDYgQEAKICNpbmNsdWRlICJTVkdQYXJzaW5nRXJyb3IuaCIK
ICNpbmNsdWRlICJTVkdQcm9wZXJ0eUluZm8uaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAKQEAgLTg2LDcgKzgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3Zn
TG9hZEV2ZW50VGltZXJGaXJlZCgpOwogICAgIHZpcnR1YWwgVGltZXIqIHN2Z0xvYWRFdmVudFRp
bWVyKCk7CiAKLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSogc3VwcGxlbWVudGFsVHJhbnNm
b3JtKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtKiBzdXBwbGVt
ZW50YWxUcmFuc2Zvcm0oKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICB2b2lkIGludmFsaWRh
dGVTVkdBdHRyaWJ1dGVzKCkgeyBlbnN1cmVVbmlxdWVFbGVtZW50RGF0YSgpLnNldEFuaW1hdGVk
U1ZHQXR0cmlidXRlc0FyZURpcnR5KHRydWUpOyB9CiAgICAgdm9pZCBpbnZhbGlkYXRlU1ZHUHJl
c2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKQpAQCAtMTgwLDggKzE3Nyw2IEBAIHByb3RlY3RlZDoK
IHByaXZhdGU6CiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRvSWQg
PSBOT1BTRVVETykgZmluYWw7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNTdXBwb3J0ZWQoU3RyaW5n
SW1wbCogZmVhdHVyZSwgU3RyaW5nSW1wbCogdmVyc2lvbikgY29uc3Q7Ci0KICAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJUYXJnZXQoKSB7IH0KIAogICAgIHZvaWQgYnVpbGRQZW5kaW5nUmVzb3VyY2Vz
SWZOZWVkZWQoKTsKQEAgLTI2NCw1ICsyNTksMyBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JF
R0lOKFdlYkNvcmU6OlNWR0VsZW1lbnQpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAK
ICNpbmNsdWRlICJTVkdFbGVtZW50VHlwZUhlbHBlcnMuaCIKLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBjMGI1YTU4MTdmZGE5NzcxNDY2ZjQ3YTAxZWQ2
Y2QwMDY2NjU3NjYwLi41ZDFmM2ZhM2EzY2Y2MzQ2OWM3MzY4Yzk0OTlmYzQ3NDhjZTFmZTIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNp
bmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJDcm9zc09yaWdpbkFj
Y2Vzc0NvbnRyb2wuaCIKICNpbmNsdWRlICJET01Gb3JtRGF0YS5oIgotI2luY2x1ZGUgIkRPTUlt
cGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgpAQCAtMzksNiArMzgsNyBAQAogI2luY2x1
ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5o
IgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFyc2VkQ29udGVudFR5cGUu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCkBAIC01OSw3ICs1OSw2IEBACiAjaW5jbHVk
ZSA8cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGlu
ZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTkzNSw3ICs5
MzQsNyBAQCBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlTUlNRVR5cGUoKSBjb25zdAog
CiBib29sIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZUlzWE1MKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gRE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlNRVR5cGUocmVzcG9uc2VNSU1FVHlwZSgpKTsK
KyAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZShyZXNwb25zZU1JTUVU
eXBlKCkpOwogfQogCiBpbnQgWE1MSHR0cFJlcXVlc3Q6OnN0YXR1cygpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHAKaW5kZXggMWI0NmJiMWNmOGRiZDZmYWVlNmRjODBlZDEzYzNiM2E1NWQxYWZhNy4uYTk5Zjlk
ZTcyNzNhNTYyZTE0NmQ5MzUzMjkyYTA1MDBiNDQ0OGQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtMTA2
NCw3ICsxMDY0LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnREb2N1bWVudChjb25z
dCB4bWxDaGFyKiB2ZXJzaW9uLCBjb25zdCB4bWxDaGFyKiBlbmMKICAgICBpZiAodmVyc2lvbikK
ICAgICAgICAgZG9jdW1lbnQoKS0+c2V0WE1MVmVyc2lvbih0b1N0cmluZyh2ZXJzaW9uKSwgQVNT
RVJUX05PX0VYQ0VQVElPTik7CiAgICAgaWYgKHN0YW5kYWxvbmUgIT0gU3RhbmRhbG9uZVVuc3Bl
Y2lmaWVkKQotICAgICAgICBkb2N1bWVudCgpLT5zZXRYTUxTdGFuZGFsb25lKHN0YW5kYWxvbmVJ
bmZvID09IFN0YW5kYWxvbmVZZXMsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgICAgICBkb2N1
bWVudCgpLT5zZXRYTUxTdGFuZGFsb25lKHN0YW5kYWxvbmVJbmZvID09IFN0YW5kYWxvbmVZZXMp
OwogICAgIGlmIChlbmNvZGluZykKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0WE1MRW5jb2Rpbmco
dG9TdHJpbmcoZW5jb2RpbmcpKTsKICAgICBkb2N1bWVudCgpLT5zZXRIYXNYTUxEZWNsYXJhdGlv
bih0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01ET01JbXBsZW1l
bnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01ET01JbXBsZW1lbnRhdGlvbi5t
bQppbmRleCBlMGEwYzA2NmJlMTQzYTc3MWQ0ZTM1ODgwNTkwMDE5ZTNlZDcwOGI1Li4yYTNlOTJk
NWU4ODQ5MGQ0YmY5OTk2M2RlOWE2YmU2NzAzZGJhM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9ET00vRE9NRE9NSW1wbGVtZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvRE9NL0RPTURPTUltcGxlbWVudGF0aW9uLm1tCkBAIC0zMCwxMDUgKzMwLDkwIEBACiAjaW1w
b3J0ICJET01Eb2N1bWVudFR5cGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NSFRNTERvY3VtZW50
SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUludGVybmFsLmgiCi0jaW1wb3J0ICJET01Ob2RlSW50
ZXJuYWwuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3Jl
L0NTU1N0eWxlU2hlZXQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NSW1wbGVtZW50YXRpb24uaD4K
LSNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRU
eXBlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxEb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9KU01haW5UaHJlYWRFeGVjU3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2su
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpD
RXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvWE1MRG9jdW1lbnQuaD4KLSNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KLQot
I2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb24q
PihfaW50ZXJuYWwpCiAKIEBpbXBsZW1lbnRhdGlvbiBET01JbXBsZW1lbnRhdGlvbgogCitzdGF0
aWMgaW5saW5lIFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uJiB1bndyYXAoRE9NSW1wbGVtZW50
YXRpb24mIHdyYXBwZXIpCit7CisgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PFdlYkNvcmU6
OkRPTUltcGxlbWVudGF0aW9uKj4od3JhcHBlci5faW50ZXJuYWwpOworfQorCiAtICh2b2lkKWRl
YWxsb2MKIHsKICAgICBpZiAoV2ViQ29yZU9iakNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5UaHJl
YWQoW0RPTUltcGxlbWVudGF0aW9uIGNsYXNzXSwgc2VsZikpCiAgICAgICAgIHJldHVybjsKLQog
ICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAgIElNUEwtPmRlcmVmKCk7CisgICAgICAgIHVud3Jh
cCgqc2VsZikuZGVyZWYoKTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKIC0gKEJPT0wpaGFz
RmVhdHVyZTooTlNTdHJpbmcgKilmZWF0dXJlIHZlcnNpb246KE5TU3RyaW5nICopdmVyc2lvbgog
ewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4g
SU1QTC0+aGFzRmVhdHVyZShmZWF0dXJlLCB2ZXJzaW9uKTsKKyAgICByZXR1cm4gdW53cmFwKCpz
ZWxmKS5oYXNGZWF0dXJlKGZlYXR1cmUsIHZlcnNpb24pOwogfQogCi0tIChCT09MKWhhc0ZlYXR1
cmU6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbgorLSAoRE9NRG9jdW1l
bnRUeXBlICopY3JlYXRlRG9jdW1lbnRUeXBlOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgcHVi
bGljSWQ6KE5TU3RyaW5nICopcHVibGljSWQgc3lzdGVtSWQ6KE5TU3RyaW5nICopc3lzdGVtSWQK
IHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJu
IElNUEwtPmhhc0ZlYXR1cmUoZmVhdHVyZSwgdmVyc2lvbik7CisgICAgYXV0byByZXN1bHQgPSB1
bndyYXAoKnNlbGYpLmNyZWF0ZURvY3VtZW50VHlwZShxdWFsaWZpZWROYW1lLCBwdWJsaWNJZCwg
c3lzdGVtSWQpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJhaXNl
RE9NRXhjZXB0aW9uKHJlc3VsdC5leGNlcHRpb25Db2RlKCkpOworICAgIHJldHVybiBraXQocmVz
dWx0LnRha2VSZXR1cm5WYWx1ZSgpLnB0cigpKTsKIH0KIAotLSAoRE9NRG9jdW1lbnRUeXBlICop
Y3JlYXRlRG9jdW1lbnRUeXBlOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgcHVibGljSWQ6KE5T
U3RyaW5nICopcHVibGljSWQgc3lzdGVtSWQ6KE5TU3RyaW5nICopc3lzdGVtSWQKKy0gKERPTURv
Y3VtZW50ICopY3JlYXRlRG9jdW1lbnQ6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIHF1YWxpZmll
ZE5hbWU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSBkb2N0eXBlOihET01Eb2N1bWVudFR5cGUg
Kilkb2N0eXBlCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTURvY3VtZW50VHlwZSAq
cmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmNyZWF0ZURvY3VtZW50VHlwZShxdWFsaWZp
ZWROYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQsIGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJvcihl
Yyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBhdXRvIHJlc3VsdCA9IHVud3JhcCgqc2VsZiku
Y3JlYXRlRG9jdW1lbnQobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCBjb3JlKGRvY3R5cGUp
KTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByYWlzZURPTUV4Y2Vw
dGlvbihyZXN1bHQuZXhjZXB0aW9uQ29kZSgpKTsKKyAgICByZXR1cm4ga2l0KHJlc3VsdC50YWtl
UmV0dXJuVmFsdWUoKS5wdHIoKSk7CiB9CiAKLS0gKERPTURvY3VtZW50VHlwZSAqKWNyZWF0ZURv
Y3VtZW50VHlwZTooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooTlNTdHJpbmcgKilwdWJsaWNJ
ZCA6KE5TU3RyaW5nICopc3lzdGVtSWQKKy0gKERPTUNTU1N0eWxlU2hlZXQgKiljcmVhdGVDU1NT
dHlsZVNoZWV0OihOU1N0cmluZyAqKXRpdGxlIG1lZGlhOihOU1N0cmluZyAqKW1lZGlhCiB7CiAg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTURvY3VtZW50VHlwZSAqcmVzdWx0ID0ga2l0KFdU
Rjo6Z2V0UHRyKElNUEwtPmNyZWF0ZURvY3VtZW50VHlwZShxdWFsaWZpZWROYW1lLCBwdWJsaWNJ
ZCwgc3lzdGVtSWQsIGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKKyAgICByZXR1cm4ga2l0KHVud3JhcCgqc2VsZikuY3JlYXRlQ1NTU3R5bGVTaGVl
dCh0aXRsZSwgbWVkaWEpLnB0cigpKTsKIH0KIAotLSAoRE9NRG9jdW1lbnQgKiljcmVhdGVEb2N1
bWVudDooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgcXVhbGlmaWVkTmFtZTooTlNTdHJpbmcgKilx
dWFsaWZpZWROYW1lIGRvY3R5cGU6KERPTURvY3VtZW50VHlwZSAqKWRvY3R5cGUKKy0gKERPTUhU
TUxEb2N1bWVudCAqKWNyZWF0ZUhUTUxEb2N1bWVudDooTlNTdHJpbmcgKil0aXRsZQogewogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Eb2N1bWVudCAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0
UHRyKElNUEwtPmNyZWF0ZURvY3VtZW50KG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgY29y
ZShkb2N0eXBlKSwgZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4g
cmVzdWx0OworICAgIHJldHVybiBraXQodW53cmFwKCpzZWxmKS5jcmVhdGVIVE1MRG9jdW1lbnQo
dGl0bGUpLnB0cigpKTsKIH0KIAotLSAoRE9NRG9jdW1lbnQgKiljcmVhdGVEb2N1bWVudDooTlNT
dHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihET01Eb2N1
bWVudFR5cGUgKilkb2N0eXBlCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBET01JbXBsZW1lbnRh
dGlvbiAoRE9NSW1wbGVtZW50YXRpb25EZXByZWNhdGVkKQorCistIChCT09MKWhhc0ZlYXR1cmU6
KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbgogewotICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBET01Eb2N1bWVudCAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwt
PmNyZWF0ZURvY3VtZW50KG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgY29yZShkb2N0eXBl
KSwgZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0Owor
ICAgIHJldHVybiBbc2VsZiBoYXNGZWF0dXJlOmZlYXR1cmUgdmVyc2lvbjp2ZXJzaW9uXTsKIH0K
IAotLSAoRE9NQ1NTU3R5bGVTaGVldCAqKWNyZWF0ZUNTU1N0eWxlU2hlZXQ6KE5TU3RyaW5nICop
dGl0bGUgbWVkaWE6KE5TU3RyaW5nICopbWVkaWEKKy0gKERPTURvY3VtZW50VHlwZSAqKWNyZWF0
ZURvY3VtZW50VHlwZTooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDooTlNTdHJpbmcgKilwdWJs
aWNJZCA6KE5TU3RyaW5nICopc3lzdGVtSWQKIHsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
RE9NQ1NTU3R5bGVTaGVldCAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmNyZWF0ZUNT
U1N0eWxlU2hlZXQodGl0bGUsIG1lZGlhLCBlYykpKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMp
OwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFtzZWxmIGNyZWF0ZURvY3VtZW50VHlw
ZTpxdWFsaWZpZWROYW1lIHB1YmxpY0lkOnB1YmxpY0lkIHN5c3RlbUlkOnN5c3RlbUlkXTsKIH0K
IAotLSAoRE9NQ1NTU3R5bGVTaGVldCAqKWNyZWF0ZUNTU1N0eWxlU2hlZXQ6KE5TU3RyaW5nICop
dGl0bGUgOihOU1N0cmluZyAqKW1lZGlhCistIChET01Eb2N1bWVudCAqKWNyZWF0ZURvY3VtZW50
OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KERP
TURvY3VtZW50VHlwZSAqKWRvY3R5cGUKIHsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9N
Q1NTU3R5bGVTaGVldCAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmNyZWF0ZUNTU1N0
eWxlU2hlZXQodGl0bGUsIG1lZGlhLCBlYykpKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwot
ICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFtzZWxmIGNyZWF0ZURvY3VtZW50Om5hbWVz
cGFjZVVSSSBxdWFsaWZpZWROYW1lOnF1YWxpZmllZE5hbWUgZG9jdHlwZTpkb2N0eXBlXTsKIH0K
IAotLSAoRE9NSFRNTERvY3VtZW50ICopY3JlYXRlSFRNTERvY3VtZW50OihOU1N0cmluZyAqKXRp
dGxlCistIChET01DU1NTdHlsZVNoZWV0ICopY3JlYXRlQ1NTU3R5bGVTaGVldDooTlNTdHJpbmcg
Kil0aXRsZSA6KE5TU3RyaW5nICopbWVkaWEKIHsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5jcmVhdGVI
VE1MRG9jdW1lbnQodGl0bGUpKSk7CisgICAgcmV0dXJuIFtzZWxmIGNyZWF0ZUNTU1N0eWxlU2hl
ZXQ6dGl0bGUgbWVkaWE6bWVkaWFdOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9ET00vRE9NRG9jdW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRG9j
dW1lbnQubW0KaW5kZXggNGNkOWJmYmZhNGUxNjYxY2M3OTVlNjlhYWJjMDk2NDI4ZDFlMDFiYi4u
NTlmNjFmNzI3ODg4OTM0ZjNjOGEzNzJjOGUxOWQ3M2QyNmM0ZmFlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvRE9NL0RPTURvY3VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0RPTS9ET01Eb2N1bWVudC5tbQpAQCAtNDYsNyArNDYsNiBAQAogI2ltcG9ydCAiRE9NSFRNTEVs
ZW1lbnRJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NSFRNTEhlYWRFbGVtZW50SW50ZXJuYWwuaCIK
ICNpbXBvcnQgIkRPTUhUTUxTY3JpcHRFbGVtZW50SW50ZXJuYWwuaCIKLSNpbXBvcnQgPFdlYkNv
cmUvRE9NSW1wbGVtZW50YXRpb24uaD4KICNpbXBvcnQgIkRPTUludGVybmFsLmgiCiAjaW1wb3J0
ICJET01Ob2RlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTU5vZGVJdGVyYXRvckludGVybmFsLmgi
CkBAIC0xNDcsOSArMTQ2LDcgQEAgLSAoQk9PTCl4bWxTdGFuZGFsb25lCiAtICh2b2lkKXNldFht
bFN0YW5kYWxvbmU6KEJPT0wpbmV3WG1sU3RhbmRhbG9uZQogewogICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBJTVBMLT5zZXRYTUxTdGFuZGFsb25lKG5ld1htbFN0YW5kYWxvbmUsIGVjKTsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIElNUEwtPnNldFhNTFN0YW5kYWxvbmUobmV3WG1s
U3RhbmRhbG9uZSk7CiB9CiAKIC0gKE5TU3RyaW5nICopZG9jdW1lbnRVUkkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGFjYWQ4ZGUzZGUzYjkyYTMzOTk0Mjk4MDY2MDgz
ZmYwNWJkOWIwYzMuLmE0YWQ2NzgxNGFlZDdhNWZjOWQ1NTE2NDUxNWE3YjM1YzYzODI2YzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNjEsNyArNjEsNiBAQAogI2lt
cG9ydCA8V2ViQ29yZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9D
aHJvbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
RE9NSW1wbGVtZW50YXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50RnJhZ21lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RG9jdW1lbnRMb2FkZXIuaD4KQEAgLTgwLDYgKzc5LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvSGl0
VGVzdFJlc3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU05vZGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvTGVnYWN5V2ViQXJjaGl2ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLmg+CkBAIC0xMDEs
OSArMTAxLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvbWFya3VwLmg+CiAjaW1wb3J0IDxXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CisjaW1w
b3J0IDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbXBvcnQgPHJ1bnRpbWUvSlNMb2NrLmg+CiAj
aW1wb3J0IDxydW50aW1lL0pTT2JqZWN0Lmg+Ci0jaW1wb3J0IDxydW50aW1lL0pTQ0pTVmFsdWUu
aD4KICNpbXBvcnQgPHd0Zi9DdXJyZW50VGltZS5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAt
MTExLDcgKzExMSw2IEBACiAjaW1wb3J0ICJXZWJSZXNvdXJjZS5oIgogI2ltcG9ydCAiV2ViVUlL
aXREZWxlZ2F0ZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9FZGl0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250Lmg+CkBA
IC05ODgsNyArOTg3LDcgQEAgLSAoQk9PTClfY2FuUHJvdmlkZURvY3VtZW50U291cmNlCiAgICAg
U3RyaW5nIG1pbWVUeXBlID0gZnJhbWUtPmRvY3VtZW50KCktPmxvYWRlcigpLT53cml0ZXIoKS5t
aW1lVHlwZSgpOwogICAgIFBsdWdpbkRhdGEqIHBsdWdpbkRhdGEgPSBmcmFtZS0+cGFnZSgpID8g
JmZyYW1lLT5wYWdlKCktPnBsdWdpbkRhdGEoKSA6IDA7CiAKLSAgICBpZiAoV2ViQ29yZTo6RE9N
SW1wbGVtZW50YXRpb246OmlzVGV4dE1JTUVUeXBlKG1pbWVUeXBlKQorICAgIGlmIChXZWJDb3Jl
OjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1RleHRNSU1FVHlwZShtaW1lVHlwZSkKICAgICAgICAgfHwg
SW1hZ2U6OnN1cHBvcnRzVHlwZShtaW1lVHlwZSkKICAgICAgICAgfHwgKHBsdWdpbkRhdGEgJiYg
cGx1Z2luRGF0YS0+c3VwcG9ydHNXZWJWaXNpYmxlTWltZVR5cGUobWltZVR5cGUsIFBsdWdpbkRh
dGE6OkFsbFBsdWdpbnMpICYmIGZyYW1lLT5sb2FkZXIoKS5zdWJmcmFtZUxvYWRlcigpLmFsbG93
UGx1Z2lucygpKQogICAgICAgICB8fCAocGx1Z2luRGF0YSAmJiBwbHVnaW5EYXRhLT5zdXBwb3J0
c1dlYlZpc2libGVNaW1lVHlwZShtaW1lVHlwZSwgUGx1Z2luRGF0YTo6T25seUFwcGxpY2F0aW9u
UGx1Z2lucykpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwIGIv
U291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDc5OTNiOTZkNjMyMjMwNjkxNjVh
OTJjNTA3ZTM0NTgxNDUxOTllNjAuLmUyMjZjYjIxM2JiMGJiZWViMTExNjMyNmY0MWMxOTUwMDVm
Njg4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU5LDcgKzU5LDYgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9ET01JbXBsZW1lbnRhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRE9NV2lu
ZG93Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0V2
ZW50Lmg+CkBAIC04MSw2ICs4MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MUGx1Z0luRWxl
bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0tleWJvYXJkRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnku
aD4KICNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTW91
c2VSZWxhdGVkRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBA
IC0xMzg1LDcgKzEzODUsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpjYW5Qcm92aWRlRG9jdW1lbnRT
b3VyY2UoYm9vbCogcmVzdWx0KQogICAgICAgICBCU3RyaW5nIG1pbWVUeXBlQlN0cjsKICAgICAg
ICAgaWYgKFNVQ0NFRURFRCh1cmxSZXNwb25zZS0+TUlNRVR5cGUoJm1pbWVUeXBlQlN0cikpKSB7
CiAgICAgICAgICAgICBTdHJpbmcgbWltZVR5cGUobWltZVR5cGVCU3RyLCBTeXNTdHJpbmdMZW4o
bWltZVR5cGVCU3RyKSk7Ci0gICAgICAgICAgICAqcmVzdWx0ID0gbWltZVR5cGUgPT0gInRleHQv
aHRtbCIgfHwgV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlNRVR5cGUobWltZVR5
cGUpOworICAgICAgICAgICAgKnJlc3VsdCA9IG1pbWVUeXBlID09ICJ0ZXh0L2h0bWwiIHx8IFdl
YkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5cGUobWltZVR5cGUpOwogICAgICAg
ICB9CiAgICAgfQogICAgIHJldHVybiBocjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5LmNwcAppbmRleCAxNWI4ZTI4ZjIzMDA5MjlkMjIwZTczM2JmZjAwNjMwMGQxM2Fh
ZGJmLi5jZDcwNjk4NTgyNjc2NzI0ZGYxMDc0OTliYzg5MzE1NzhjM2NhMDM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAj
aW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RPTUltcGxlbWVu
dGF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
TUlNRVR5cGVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0xMTcsMTUgKzExNiwx
MyBAQCBib29sIFdlYkZyYW1lUHJveHk6OmlzRGlzcGxheWluZ1N0YW5kYWxvbmVNZWRpYURvY3Vt
ZW50KCkgY29uc3QKIAogYm9vbCBXZWJGcmFtZVByb3h5Ojppc0Rpc3BsYXlpbmdNYXJrdXBEb2N1
bWVudCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgc2hvdWxkIGJlIG1vdmVk
IHRvIHNvbWV3aGVyZSBpbiBXZWJDb3JlLgotICAgIHJldHVybiBtX01JTUVUeXBlID09ICJ0ZXh0
L2h0bWwiIHx8IG1fTUlNRVR5cGUgPT0gImltYWdlL3N2Zyt4bWwiIHx8IG1fTUlNRVR5cGUgPT0g
ImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSIgfHwgRE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlN
RVR5cGUobV9NSU1FVHlwZSk7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgY2FsbCB0
byBhIHNpbmdsZSBNSU1FVHlwZVJlZ2lzdHJ5IGZ1bmN0aW9uOyBhZGRpbmcgYSBuZXcgb25lIGlm
IG5lZWRlZC4KKyAgICAvLyBGSVhNRTogVGhpcyBpcyBkb2luZyBjYXNlIHNlbnNpdGl2ZSBjb21w
YXJpc29ucyBvbiBNSU1FIHR5cGVzLCBzaG91bGQgYmUgdXNpbmcgQVNDSUkgY2FzZSBpbnNlbnNp
dGl2ZSBpbnN0ZWFkLgorICAgIHJldHVybiBtX01JTUVUeXBlID09ICJ0ZXh0L2h0bWwiIHx8IG1f
TUlNRVR5cGUgPT0gImltYWdlL3N2Zyt4bWwiIHx8IG1fTUlNRVR5cGUgPT0gImFwcGxpY2F0aW9u
L3gtd2ViYXJjaGl2ZSIgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxNSU1FVHlwZShtX01JTUVU
eXBlKTsKIH0KIAogYm9vbCBXZWJGcmFtZVByb3h5Ojppc0Rpc3BsYXlpbmdQREZEb2N1bWVudCgp
IGNvbnN0CiB7Ci0gICAgaWYgKG1fTUlNRVR5cGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KICAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRN
SU1FVHlwZShtX01JTUVUeXBlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01JbXBsZW1lbnRh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTURPTUltcGxlbWVudGF0aW9uLmNwcAppbmRleCAzZTA2YzFhMDc5MDFi
MTk3OTkzMTE2NzAyZTVhYzZiODNiZjYyMDI0Li40OWNkNWNlMDhiYjNhNWIxN2RjOTMyMTFkNmZm
YjUxZjdhNDc0ZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURPTUltcGxlbWVudGF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTURPTUltcGxlbWVudGF0aW9uLmNwcApAQCAtMTMxLDEzICsxMzEsMTIgQEAgV2ViS2l0
RE9NRG9jdW1lbnRUeXBlKiB3ZWJraXRfZG9tX2RvbV9pbXBsZW1lbnRhdGlvbl9jcmVhdGVfZG9j
dW1lbnRfdHlwZShXZWJLaXQKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRRdWFsaWZpZWROYW1l
ID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHF1YWxpZmllZE5hbWUpOwogICAgIFdURjo6U3RyaW5n
IGNvbnZlcnRlZFB1YmxpY0lkID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHB1YmxpY0lkKTsKICAg
ICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTeXN0ZW1JZCA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChz
eXN0ZW1JZCk7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OkRvY3VtZW50VHlwZT4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0t
PmNyZWF0ZURvY3VtZW50VHlwZShjb252ZXJ0ZWRRdWFsaWZpZWROYW1lLCBjb252ZXJ0ZWRQdWJs
aWNJZCwgY29udmVydGVkU3lzdGVtSWQsIGVjKSk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOworICAgIGF1dG8gcmVz
dWx0ID0gaXRlbS0+Y3JlYXRlRG9jdW1lbnRUeXBlKGNvbnZlcnRlZFF1YWxpZmllZE5hbWUsIGNv
bnZlcnRlZFB1YmxpY0lkLCBjb252ZXJ0ZWRTeXN0ZW1JZCk7CisgICAgaWYgKHJlc3VsdC5oYXNF
eGNlcHRpb24oKSkgeworICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24g
ZWNkZXNjKHJlc3VsdC5leGNlcHRpb25Db2RlKCkpOwogICAgICAgICBnX3NldF9lcnJvcl9saXRl
cmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2Rl
LCBlY2Rlc2MubmFtZSk7CiAgICAgfQotICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVz
dWx0LmdldCgpKTsKKyAgICByZXR1cm4gV2ViS2l0OjpraXQocmVzdWx0LnRha2VSZXR1cm5WYWx1
ZSgpLnB0cigpKTsKIH0KIAogV2ViS2l0RE9NRG9jdW1lbnQqIHdlYmtpdF9kb21fZG9tX2ltcGxl
bWVudGF0aW9uX2NyZWF0ZV9kb2N1bWVudChXZWJLaXRET01ET01JbXBsZW1lbnRhdGlvbiogc2Vs
ZiwgY29uc3QgZ2NoYXIqIG5hbWVzcGFjZVVSSSwgY29uc3QgZ2NoYXIqIHF1YWxpZmllZE5hbWUs
IFdlYktpdERPTURvY3VtZW50VHlwZSogZG9jdHlwZSwgR0Vycm9yKiogZXJyb3IpCkBAIC0xNTEs
MTMgKzE1MCwxMiBAQCBXZWJLaXRET01Eb2N1bWVudCogd2Via2l0X2RvbV9kb21faW1wbGVtZW50
YXRpb25fY3JlYXRlX2RvY3VtZW50KFdlYktpdERPTURPTUltcAogICAgIFdURjo6U3RyaW5nIGNv
bnZlcnRlZE5hbWVzcGFjZVVSSSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChuYW1lc3BhY2VVUkkp
OwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFF1YWxpZmllZE5hbWUgPSBXVEY6OlN0cmluZzo6
ZnJvbVVURjgocXVhbGlmaWVkTmFtZSk7CiAgICAgV2ViQ29yZTo6RG9jdW1lbnRUeXBlKiBjb252
ZXJ0ZWREb2N0eXBlID0gV2ViS2l0Ojpjb3JlKGRvY3R5cGUpOwotICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxXZWJDb3JlOjpEb2N1bWVudD4gZ29iamVjdFJl
c3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPmNyZWF0ZURvY3VtZW50KGNvbnZlcnRlZE5hbWVzcGFj
ZVVSSSwgY29udmVydGVkUXVhbGlmaWVkTmFtZSwgY29udmVydGVkRG9jdHlwZSwgZWMpKTsKLSAg
ICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVj
ZGVzYyhlYyk7CisgICAgYXV0byByZXN1bHQgPSBpdGVtLT5jcmVhdGVEb2N1bWVudChjb252ZXJ0
ZWROYW1lc3BhY2VVUkksIGNvbnZlcnRlZFF1YWxpZmllZE5hbWUsIGNvbnZlcnRlZERvY3R5cGUp
OworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgV2ViQ29yZTo6RXhj
ZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhyZXN1bHQuZXhjZXB0aW9uQ29kZSgpKTsKICAg
ICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VC
S0lUX0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOwogICAgIH0KLSAgICByZXR1cm4g
V2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6a2l0
KHJlc3VsdC50YWtlUmV0dXJuVmFsdWUoKS5wdHIoKSk7CiB9CiAKIFdlYktpdERPTUNTU1N0eWxl
U2hlZXQqIHdlYmtpdF9kb21fZG9tX2ltcGxlbWVudGF0aW9uX2NyZWF0ZV9jc3Nfc3R5bGVfc2hl
ZXQoV2ViS2l0RE9NRE9NSW1wbGVtZW50YXRpb24qIHNlbGYsIGNvbnN0IGdjaGFyKiB0aXRsZSwg
Y29uc3QgZ2NoYXIqIG1lZGlhLCBHRXJyb3IqKiBlcnJvcikKQEAgLTE3MCwxMiArMTY4LDcgQEAg
V2ViS2l0RE9NQ1NTU3R5bGVTaGVldCogd2Via2l0X2RvbV9kb21faW1wbGVtZW50YXRpb25fY3Jl
YXRlX2Nzc19zdHlsZV9zaGVldChXZWIKICAgICBXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbiog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRUaXRs
ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh0aXRsZSk7CiAgICAgV1RGOjpTdHJpbmcgY29udmVy
dGVkTWVkaWEgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgobWVkaWEpOwotICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxXZWJDb3JlOjpDU1NTdHlsZVNoZWV0PiBn
b2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+Y3JlYXRlQ1NTU3R5bGVTaGVldChjb252
ZXJ0ZWRUaXRsZSwgY29udmVydGVkTWVkaWEsIGVjKSk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOwotICAgICAgICBn
X3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9N
IiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7Ci0gICAgfQorICAgIFJlZlB0cjxXZWJDb3Jl
OjpDU1NTdHlsZVNoZWV0PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+Y3JlYXRl
Q1NTU3R5bGVTaGVldChjb252ZXJ0ZWRUaXRsZSwgY29udmVydGVkTWVkaWEpKTsKICAgICByZXR1
cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287867</attachid>
            <date>2016-09-03 13:01:12 -0700</date>
            <delta_ts>2016-09-03 16:21:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161295-20160903125855.patch</filename>
            <type>text/plain</type>
            <size>79060</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVhZGQ2YmY1MDNkZGNk
MGUzYTFjMTVlYTg5YjI4NzU0YTM4MTQ4MC4uNjUyYTRjMzk2MDFlYzUyZTNiYmViOGNmYWRmOTVj
NTdlMmFhOWEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDE2LTA5LTAzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJlYW1saW5lIERPTUltcGxl
bWVudGF0aW9uLCBhbmQgbW92ZSBpdCB0byBvdXIgbmV3IERPTSBleGNlcHRpb24gc3lzdGVtCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEyOTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgbmV3IGhlYWRlcnMgdG8gcHJvamVjdC4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6dG9KUyk6IEFkZGVkIGFuIG92ZXJsb2FkIGZvciBFeGNlcHRpb25Pcjw+OyB0aGlzIGhhbmRs
ZXMgdGhlCisgICAgICAgIGV4Y2VwdGlvbiBjYXNlIGhlcmUgc28gaXQgZG9lc24ndCBuZWVkIHRv
IGJlIGhhbmRsZWQgaW4gZ2VuZXJhdGVkIGNvZGUKKyAgICAgICAgZm9yIHRoZSBiaW5kaW5nLiBJ
bXBsZW1lbnRlZCBoZXJlIHNvIHRoYXQgRXhjZXB0aW9uT3IuaCBkb2VzIG5vdCBrbm93CisgICAg
ICAgIGFib3V0IGJpbmRpbmdzLiBCdXQgc2luY2UgdGhpcyBpcyBhIHRlbXBsYXRlLCBpdCB3aWxs
IG9ubHkgY29tcGlsZSB3aGVuCisgICAgICAgIGluc3RhbnRpYXRlZCBhbmQgdGhlcmUgaXMgbm8g
bmVlZCB0byBpbmNsdWRlIEV4Y2VwdGlvbk9yLmggYW5kIGluZGlyZWN0bHkKKyAgICAgICAgdGhl
IFZhcmlhbnQuaCBoZWFkZXIgaW4gdGhpcyBoZWFkZXIuCisgICAgICAgIChXZWJDb3JlOjp0b0pT
TmV3bHlDcmVhdGVkKTogRGl0dG8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbik6
IFJlZmVyIHRvIEpTQzo6RXhjZXB0aW9uIHdpdGggZXhwbGljaXQKKyAgICAgICAgbmFtZXNwYWNl
IHRvIGF2b2lkIGFtYmlndWl0eSB3aXRoIFdlYkNvcmU6OkV4Y2VwdGlvbi4KKworICAgICAgICAq
IGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1l
bnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnRUeXBlKTogQ2hhbmdlZCB0byByZXR1cm4KKyAgICAgICAg
RXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVYTUxEb2N1bWVudCk6IEFkZGVk
LiBIZWxwZXIgdXNlZCBpbiBjcmVhdGVEb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUlt
cGxlbWVudGF0aW9uOjpnZXRJbnRlcmZhY2UpOiBEZWxldGVkLiBUaGlzIHdhcyB1bnVzZWQuCisg
ICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQpOiBDaGFu
Z2VkIHRvIHJldHVybgorICAgICAgICBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkRP
TUltcGxlbWVudGF0aW9uOjpjcmVhdGVDU1NTdHlsZVNoZWV0KTogUmVtb3ZlZCB0aGUgdW51c2Vk
CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgb3V0IGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6
aXNWYWxpZFhNTE1JTUVUeXBlQ2hhcik6IERlbGV0ZWQuIE1vdmVkIHRvIE1JTUVUeXBlUmVnaXN0
cnkuCisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlwZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmlzVGV4dE1JTUVU
eXBlKTogRGl0dG8uCisKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uaDogQ2hhbmdl
ZCBmdW5jdGlvbnMgYXMgZGVzY3JpYmVkIGFib3ZlIHRvCisgICAgICAgIHJldHVybiBFeGNlcHRp
b25PciB2YWx1ZXMuIEFsc28gcmVtb3ZlZCB1bnVzZWQgZ2V0SW50ZXJmYWNlIGZ1bmN0aW9uLAor
ICAgICAgICBhbmQgaXNYTUxNSU1FVHlwZSBhbmQgaXNUZXh0TUlNRVR5cGUsIHdoaWNoIGJvdGgg
bW92ZWQgdG8gdGhlCisgICAgICAgIE1JTUVUeXBlUmVnaXN0cnkgY2xhc3MgYWxvbmdzaWRlIGFs
bCB0aGUgb3RoZXIgc2ltaWxhciBNSU1FIHR5cGUKKyAgICAgICAgZnVuY3Rpb25zLgorCisgICAg
ICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbDogUmVvcmdhbml6ZWQgdGhpcyB0byBtYXRj
aCB0aGUgSURMIGZpbGVzCisgICAgICAgIGluIHRoZSBzcGVjaWZpY2F0aW9ucyBhIGxpdHRsZSBi
ZXR0ZXIuIEFsc28gcmVtb3ZlZCBbUmFpc2VzRXhjZXB0aW9uXQorICAgICAgICBzaW5jZSB0aGF0
IGlzIG9ubHkgbmVlZGVkIGZvciB0aGUgb2xkIGxlZ2FjeSBFeGNlcHRpb25Db2RlJiBzdHlsZS4K
KworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6c2V0WE1MVmVyc2lvbik6IFJlbW92ZWQgY2FsbCB0byB0aGUKKyAgICAgICAgRE9NSW1wbGVt
ZW50YXRpb246Omhhc0ZlYXR1cmUgZnVuY3Rpb24gc2luY2UgdGhlIHZhbHVlcyBwYXNzZWQgaW4K
KyAgICAgICAgdW5jb25kaXRpb25hbGx5IHJlc3VsdCBpbiB0aGUgcmV0dXJuIHZhbHVlICJ0cnVl
Ii4gVGhpcyBpcyBsZWZ0IG92ZXIKKyAgICAgICAgZWl0aGVyIGZyb20gc3BlY2lmaWNhdGlvbiBs
YW5ndWFnZSwgb3IgZnJvbSBhbiBhbmNpZW50IHZlcnNpb24gb2YgdGhpcworICAgICAgICBjb2Rl
IHRoYXQgd29ya2VkIGluIGEgIm5vIFhNTCBzdXBwb3J0ZWQiIG1vZGUuCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6c2V0WE1MU3RhbmRhbG9uZSk6IERpdHRvLgorCisgICAgICAgICogZG9t
L0RvY3VtZW50Lmg6IFJlbW92ZWQgdGhlIEV4Y2VwdGlvbkNvZGUmIG91dCBhcmd1bWVudCBmcm9t
IHNldFhNTFN0YW5kYWxvbmUuCisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDogUmVtb3ZlZCBb
U2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBmcm9tIHhtbFN0YW5kYWxvbmUuCisKKyAgICAgICAgKiBk
b20vRXhjZXB0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIGRvbS9FeGNlcHRpb25Pci5oOiBBZGRl
ZC4KKworICAgICAgICAqIGh0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHA6IFJlbW92ZWQgdW5u
ZWVkZWQgaW5jbHVkZSBvZiBET01JbXBsZW1lbnRhdGlvbi5oLgorCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVYSFJU
ZXh0RGVjb2Rlcik6IFVzZSBpc1hNTE1JTUVUeXBlIGluIGl0cyBuZXcgbG9jYXRpb24gaW4KKyAg
ICAgICAgTUlNRVR5cGVSZWdpc3RyeS4KKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlT3RoZXJSZXNvdXJjZVRleHRE
ZWNvZGVyKTogRGl0dG8uCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOiBSZW1v
dmVkIHVubmVlZGVkIGluY2x1ZGUgb2YgRE9NSW1wbGVtZW50YXRpb24uaC4KKworICAgICAgICAq
IGxvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRS
ZXNvdXJjZURlY29kZXI6OmRldGVybWluZUNvbnRlbnRUeXBlKTogVXNlIGlzWE1MTUlNRVR5cGUg
aW4gaXRzCisgICAgICAgIG5ldyBsb2NhdGlvbiBpbiBNSU1FVHlwZVJlZ2lzdHJ5LgorCisgICAg
ICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1RleHRNSU1FVHlwZSk6IEFkZGVkLiBNb3ZlZCBoZXJlIGZyb20K
KyAgICAgICAgRE9NSW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkWE1M
TUlNRVR5cGVDaGFyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1hNTE1JTUVUeXBlKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJl
Z2lzdHJ5Lmg6IEFkZGVkIGlzWE1MTUlNRVR5cGUgYW5kIGlzVGV4dE1JTUVUeXBlLgorICAgICAg
ICBNYWRlIGlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUgcHJpdmF0ZS4KKworICAgICAgICAqIHN2
Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmlzU3VwcG9y
dGVkKTogRGVsZXRlZC4gVGhpcyBmdW5jdGlvbiB3YXMgbmV2ZXIgY2FsbGVkLgorICAgICAgICAq
IHN2Zy9TVkdFbGVtZW50Lmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZSBjaGFuZ2UuCisKKyAgICAg
ICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OnJlc3BvbnNlSXNYTUwpOiBVc2UgaXNYTUxNSU1FVHlwZSBpbiBpdHMgbmV3CisgICAg
ICAgIGxvY2F0aW9uIGluIE1JTUVUeXBlUmVnaXN0cnkuCisKIDIwMTYtMDktMDMgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgQVNDSUlMaXRlcmFs
IGluIHNvbWUgbW9yZSBwbGFjZXMKQEAgLTQ2NjQsNiArNDc1NCwxMCBAQAogICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWF0aE1MUGFkZGVkOjpzdHlsZURpZENoYW5nZSk6IERlbGV0ZWQuIERpdHRv
LgogICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmg6IFVwZGF0
ZSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBhbmQgcmVtb3ZlIG1fYXNjZW50LgogCisgICAgICAgICog
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0RG9jdW1lbnQpOiBVcGRhdGVkIHNpbmNlIHNldFhN
TFN0YW5kYWxvbmUKKyAgICAgICAgbm8gbG9uZ2VyIGNhbiByYWlzZSBhbiBleGNlcHRpb24uCisK
IDIwMTYtMDgtMjcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBVUkxQYXJzZXIgc2hvdWxkIHBhcnNlIHJlbGF0aXZlIFVSTHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCA5MDlmZDhiYjZlYTA3YjE4NDZmYjcyN2FkZWQzYzBhODZlOWQ0Y2Y1Li42YmU4
ZDVlYjU1NjIxMWI0YzBkYTA0MmI0OGZjMGJkZTg5MGU3NTVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTYtMDktMDMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFN0cmVhbWxpbmUgRE9NSW1wbGVtZW50YXRpb24sIGFuZCBtb3ZlIGl0IHRv
IG91ciBuZXcgRE9NIGV4Y2VwdGlvbiBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTI5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTURPTUltcGxlbWVudGF0aW9uLm1tOgorICAg
ICAgICAodW53cmFwKTogQWRkZWQuIFVzZSB0aGlzIGluc3RlYWQgb2YgdGhlIElNUEwgbWFjcm8u
CisgICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGRlYWxsb2NdKTogVXBkYXRlZCB0byB1c2Ug
dW53cmFwLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBoYXNGZWF0dXJlOnZlcnNpb246
XSk6IERpdHRvLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVEb2N1bWVudFR5
cGU6cHVibGljSWQ6c3lzdGVtSWQ6XSk6IFVwZGF0ZWQgdG8gd29yayB3aXRoCisgICAgICAgIEV4
Y2VwdGlvbk9yLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVEb2N1bWVudDpx
dWFsaWZpZWROYW1lOmRvY3R5cGU6XSk6IERpdHRvLgorICAgICAgICAoLVtET01JbXBsZW1lbnRh
dGlvbiBjcmVhdGVDU1NTdHlsZVNoZWV0Om1lZGlhOl0pOiBSZW1vdmVkIGV4Y2VwdGlvbiBsb2dp
YyBzaW5jZQorICAgICAgICB0aGlzIGZ1bmN0aW9uIGNhbiBubyBsb25nZXIgcmFpc2UgYW4gZXhj
ZXB0aW9uLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVIVE1MRG9jdW1lbnQ6
XSk6IFVwZGF0ZWQgdG8gdXNlIHVud3JhcC4KKyAgICAgICAgKC1bRE9NSW1wbGVtZW50YXRpb24g
aGFzRmVhdHVyZTo6XSk6IENoYW5nZWQgdG8gY2FsbCB0aGUgbm9uLWRlcHJlY2F0ZWQgdmVyc2lv
bgorICAgICAgICByYXRoZXIgdGhhbiBkdXBsaWNhdGluZyBpdHMgaW1wbGVtZW50YXRpb24uIEFs
c28gbW92ZWQgaW50byB0aGUgY2F0ZWdvcnkgYXMgZGVmaW5lZAorICAgICAgICBpbiB0aGUgaGVh
ZGVyLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVEb2N1bWVudFR5cGU6Ojpd
KTogRGl0dG8uCisgICAgICAgICgtW0RPTUltcGxlbWVudGF0aW9uIGNyZWF0ZURvY3VtZW50Ojo6
XSk6IERpdHRvLgorICAgICAgICAoLVtET01JbXBsZW1lbnRhdGlvbiBjcmVhdGVDU1NTdHlsZVNo
ZWV0OjpdKTogRGl0dG8uCisKKyAgICAgICAgKiBET00vRE9NRG9jdW1lbnQubW06IFJlbW92ZWQg
dW5uZWVkZWQgaW5jbHVkZSBvZiBET01JbXBsZW1lbnRhdGlvbi5oLgorICAgICAgICAoLVtET01E
b2N1bWVudCBzZXRYbWxTdGFuZGFsb25lOl0pOiBVcGRhdGVkIHNpbmNlIHNldFhNTFN0YW5kYWxv
bmUgbm8gbG9uZ2VyIGNhbgorICAgICAgICByYWlzZSBhbiBleGNlcHRpb24uCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfY2FuUHJvdmlkZURv
Y3VtZW50U291cmNlXSk6IFVwZGF0ZWQgdG8gdXNlIGlzVGV4dE1JTUVUeXBlIGluIGl0cyBuZXcK
KyAgICAgICAgbG9jYXRpb24gaW4gTUlNRVR5cGVSZWdpc3RyeSBpbnN0ZWFkIG9mIGluIERPTUlt
cGxlbWVudGF0aW9uLgorCiAyMDE2LTA5LTAyICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNv
bT4KIAogICAgICAgICBOZWVkIHRvIHVwZGF0ZUVkaXRvclN0YXRlIGlmIGFuIGVsZW1lbnQgY2hh
bmdlIGVkaXQtYWJpbGl0eSB3aXRob3V0IGNoYW5naW5nIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGZm
M2I1NTg3OGMyMGQyNDNhMmUwOTNhNGVjZjhkZTk4YmYzODYxZjcuLmM5NmY4NjQwODk0MTc2NmRl
YzFhODg5YTlmNzk2YjJiM2Q5ZTA2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxNi0wOS0wMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
U3RyZWFtbGluZSBET01JbXBsZW1lbnRhdGlvbiwgYW5kIG1vdmUgaXQgdG8gb3VyIG5ldyBET00g
ZXhjZXB0aW9uIHN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYxMjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6Y2FuUHJvdmlkZURv
Y3VtZW50U291cmNlKTogVXBkYXRlZCB0byB1c2UgaXNYTUxNSU1FVHlwZSBpbiBpdHMgbmV3Cisg
ICAgICAgIGxvY2F0aW9uIGluIE1JTUVUeXBlUmVnaXN0cnkgaW5zdGVhZCBvZiBpbiBET01JbXBs
ZW1lbnRhdGlvbi4KKwogMjAxNi0wOS0wMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBCdWlsZCBmaXggYXR0ZW1wdCBhZnRlciByMjA1MzgxLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDJkNTgwOGYyNjAzZmNjZGQzN2M3ZmJlMWEyZmU3NDllMTEzNjYwMWMuLmYyOTBlZWZmZGY1
NTRlMDMxNjlhMzk4NDk3MmZmNGMxZGFiNjA1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBA
QAorMjAxNi0wOS0wMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
U3RyZWFtbGluZSBET01JbXBsZW1lbnRhdGlvbiwgYW5kIG1vdmUgaXQgdG8gb3VyIG5ldyBET00g
ZXhjZXB0aW9uIHN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYxMjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lUHJveHk6OmlzRGlzcGxheWluZ01hcmt1cERvY3VtZW50KTogVXNlIGlzWE1MTUlN
RVR5cGUgaW4gaXRzCisgICAgICAgIG5ldyBsb2NhdGlvbiBpbiBNSU1FVHlwZVJlZ2lzdHJ5IHJh
dGhlciB0aGFuIGluIERPTUltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZVByb3h5Ojppc0Rpc3BsYXlpbmdQREZEb2N1bWVudCk6IFJlbW92ZWQgdW5uZWVkZWQgcmVkdW5k
YW50CisgICAgICAgIGNoZWNrIGZvciBlbXB0eSBzdHJpbmcsIGFscmVhZHkgZG9uZSBieSBNSU1F
VHlwZVJlZ2lzdHJ5LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAgICh3ZWJraXRf
ZG9tX2RvbV9pbXBsZW1lbnRhdGlvbl9jcmVhdGVfZG9jdW1lbnRfdHlwZSk6IFVwZGF0ZWQgdG8g
d29yayB3aXRoIEV4Y2VwdGlvbk9yLgorICAgICAgICAod2Via2l0X2RvbV9kb21faW1wbGVtZW50
YXRpb25fY3JlYXRlX2RvY3VtZW50KTogVXBkYXRlZCB0byB3b3JrIHdpdGggRXhjZXB0aW9uT3Iu
CisgICAgICAgICh3ZWJraXRfZG9tX2RvbV9pbXBsZW1lbnRhdGlvbl9jcmVhdGVfY3NzX3N0eWxl
X3NoZWV0KTogVXBkYXRlZCBzaW5jZSB0aGlzIGZ1bmN0aW9uCisgICAgICAgIGNhbiBubyBsb25n
ZXIgcmFpc2UgYW4gZXhjZXB0aW9uLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudC5jcHA6CisgICAgICAgICh3ZWJraXRf
ZG9tX2RvY3VtZW50X3NldF94bWxfc3RhbmRhbG9uZSk6IFVwZGF0ZWQgc2luY2UgdGhpcyBmdW5j
dGlvbiBjYW4gbm8gbG9uZ2VyCisgICAgICAgIHJhaXNlIGFuIGV4Y2VwdGlvbi4KKwogMjAxNi0w
OS0wMyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IE1vdmUgV2ViS2l0MiBXZWJJbnNwZWN0b3IgZmlsZXMgdG8gI3ByYWdtYSBv
bmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggYjc1NjA5ZjNlOWMxYjBkZjIxNmY0OTZjZTZhY2YyYjA3ODFkYWZlMi4uYWRlYWQ2
ZDA4NTYxZjI1OGI2NGYyZDdjYjVmZTZkY2JiMTE0MzlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzI3NSw2ICszMjc1LDgg
QEAKIAkJOTNDNEY2RUIxMTA4RjlBNTAwOTlEMERCIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzRGNkU5
MTEwOEY5QTUwMDk5RDBEQiAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmggKi87IH07CiAJCTkz
Q0NGMDI3MEFGNkM1MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0NDRjAyNjBBRjZDNTI5MDAwMThF
ODkgLyogTmF2aWdhdGlvbkFjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzQ0NGMDYwMEFGNkNBNzYwMDAxOEU4OSAvKiBOYXZpZ2F0aW9u
QWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzQ0NGMDVGMEFGNkNBNzYwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmNwcCAqLzsgfTsK
KwkJOTNEMTk2MzExRDZDQUI3NjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbk9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0QxOTYzMDFENkNBQjc2MDBGQzdF
NDcgLyogRXhjZXB0aW9uT3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk5M0QxOTYzMzFENkNBQjgyMDBGQzdFNDcgLyogRXhjZXB0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0QxOTYzMjFENkNB
QjgyMDBGQzdFNDcgLyogRXhjZXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNENDM3OUYxRDU3QjE1MzAwQUI4NUVBIC8qIEpTTWFpblRo
cmVhZEV4ZWNTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOEY5MzREODMxMTg5RjFFRTAwNTA4RDVEIC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRDQz
N0EwMUQ1N0IxOUEwMEFCODVFQSAvKiBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1NkM5QTgxQzg5MzEy
ODAwQzQ1NkRGIC8qIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNENDM3QTExRDU3QjNGNDAwQUI4
NUVBIC8qIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFERTExRjRBMThEODMxMUIwMDc4OTgzQiAvKiBFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTEwNDM3LDYgKzEwNDM5LDggQEAKIAkJOTNDQTRDQTIwOURGOTNG
QTAwREY4Njc3IC8qIHN2Zy5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gc3ZnLmNzczsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNDQ0YwMjYwQUY2QzUyOTAwMDE4RTg5IC8qIE5h
dmlnYXRpb25BY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdh
dGlvbkFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0NDRjA1RjBBRjZD
QTc2MDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBOYXZpZ2F0aW9uQWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTNEMTk2MzAxRDZDQUI3NjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbk9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4Y2VwdGlvbk9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTkzRDE5NjMyMUQ2Q0FCODIwMEZDN0U0NyAvKiBFeGNlcHRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDlENTNCMERBMjdFMTgwMDc3MjE2QyAvKiBSYW5nZUJv
dW5kYXJ5UG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFuZ2VCb3Vu
ZGFyeVBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRTIyN0RCMEFGNTg5
QUQwMEQ0ODMyNCAvKiBEb2N1bWVudExvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBEb2N1bWVudExvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzRTIyN0REMEFGNTg5QUQwMEQ0ODMyNCAvKiBOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjk5
NiwxMSArMjMwMDAsMTMgQEAKIAkJCQlFMTJFREI3QTBCMzA4QTc4MDAyNzA0QjYgLyogRXZlbnRU
YXJnZXQuaCAqLywKIAkJCQk4NUFGQTc0MjBBQUYyOTg0MDBFODQzMDUgLyogRXZlbnRUYXJnZXQu
aWRsICovLAogCQkJCUNEQ0U1Q0QwMTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVudFRhcmdldEZhY3Rv
cnkuaW4gKi8sCisJCQkJOTNEMTk2MzIxRDZDQUI4MjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbi5oICov
LAogCQkJCUJDNjBEOEYwMEQyQTExRTAwMEI5OTE4RiAvKiBFeGNlcHRpb25CYXNlLmNwcCAqLywK
IAkJCQlCQzYwRDhGMTBEMkExMUUwMDBCOTkxOEYgLyogRXhjZXB0aW9uQmFzZS5oICovLAogCQkJ
CTkzNUZCQ0YxMDlCQTE0M0IwMEUyMzBCMSAvKiBFeGNlcHRpb25Db2RlLmggKi8sCiAJCQkJQTdD
QUNEQjAxM0NFODc1QjAwQkJCRTNGIC8qIEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5jcHAgKi8s
CiAJCQkJQTc0QkI3NkExM0JEQTg2MzAwRkY3QkYwIC8qIEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRl
ci5oICovLAorCQkJCTkzRDE5NjMwMUQ2Q0FCNzYwMEZDN0U0NyAvKiBFeGNlcHRpb25Pci5oICov
LAogCQkJCUU0N0UyNzY3MTYwMzZFREMwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNoZWV0cy5j
cHAgKi8sCiAJCQkJRTQ3RTI3NjQxNjAzNkVEMjAwRUUyQUZCIC8qIEV4dGVuc2lvblN0eWxlU2hl
ZXRzLmggKi8sCiAJCQkJQjZEOUQyMzQxNEVBQkQyNjAwOTBENzVFIC8qIEZvY3VzRXZlbnQuY3Bw
ICovLApAQCAtMjU1OTgsNiArMjU2MDQsNyBAQAogCQkJCTA3OEUwOTM5MTdEMTZCMkMwMDQyMEFB
MSAvKiBNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhF
MDkxNjE3RDE0RDFDMDA0MjBBQTEgLyogTWVkaWFTdHJlYW1FdmVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDc4RTA5MzcxN0QxNkIyQzAwNDIwQUExIC8qIE1lZGlhU3RyZWFtUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTNEMTk2MzMxRDZDQUI4MjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MTcxN0QxNEQxQzAwNDIwQUExIC8qIE1lZGlhU3Ry
ZWFtUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTE4MTdEMTREMUMwMDQyMEFB
MSAvKiBNZWRpYVN0cmVhbVRyYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkxOTE3RDE0
RDFDMDA0MjBBQTEgLyogTWVkaWFTdHJlYW1UcmFja0V2ZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTI2NjY4LDYgKzI2Njc1LDcgQEAKIAkJCQlCMjIyN0FENzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
VHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FEQTBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHVHJhbnNmb3JtYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBREQwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybURpc3RhbmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5
M0QxOTYzMTFENkNBQjc2MDBGQzdFNDcgLyogRXhjZXB0aW9uT3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyMjI3QURGMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1MaXN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwOEM3MTM2RTEyODk1NkEzMDAxQjEwN0UgLyogU1ZHVHJhbnNmb3JtTGlz
dFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBRTIwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR1RSZWZFbGVtZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggOWFhMzM2Mjg5NjRhZjA0MzU1ZTI5ODU0
NGJjMWZmNjhmNjZiM2IwMS4uYTRlMGJjM2U2NzAxODZiZWYyNmE2ZGI0ZmM5YWY2OGE5ZTZkYzQx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTIzLDkg
KzIzLDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIK
ICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5o
IgotI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJs
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCIKICNpbmNsdWRlICJXZWJD
b3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKQEAgLTY5LDcgKzY5LDkgQEAgY2xhc3MgTm9kZTsK
IAogc3RydWN0IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZTsKIAotdHlwZWRlZiBpbnQgRXhjZXB0
aW9uQ29kZTsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBFeGNlcHRpb25PcjsKKwordXNpbmcg
RXhjZXB0aW9uQ29kZSA9IGludDsKIAogc3RydWN0IEV4Y2VwdGlvbkRldGFpbHMgewogICAgIFN0
cmluZyBtZXNzYWdlOwpAQCAtMTg2LDYgKzE4OCw5IEBAIEpTQzo6SlNWYWx1ZSBjcmVhdGVET01F
eGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBFeGNlcHRpb25Db2RlLCBjb25zdCBTdHJpbmcmKTsK
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RE9NRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgRXhj
ZXB0aW9uQ29kZSk7CiB2b2lkIHNldERPTUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpOwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCos
IEV4Y2VwdGlvbk9yPFQ+JiYpOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNW
YWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3Qq
LCBFeGNlcHRpb25PcjxUPiYmKTsKKwogSlNDOjpKU1ZhbHVlIGpzU3RyaW5nKEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgVVJMJik7IC8vIGVtcHR5IGlmIHRoZSBVUkwgaXMgbnVsbAogCiBKU0M6OkpT
VmFsdWUganNTdHJpbmdPck51bGwoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsgLy8g
bnVsbCBpZiB0aGUgc3RyaW5nIGlzIG51bGwKQEAgLTgwOCw0ICs4MTMsMjMgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b051bGxhYmxlSlNOdW1iZXIoT3B0aW9u
YWw8VD4gb3B0aW9uYWwKICAgICByZXR1cm4gb3B0aW9uYWxOdW1iZXIgPyBKU0M6OmpzTnVtYmVy
KG9wdGlvbmFsTnVtYmVyLnZhbHVlKCkpIDogSlNDOjpqc051bGwoKTsKIH0KIAordGVtcGxhdGU8
dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhjZXB0aW9uT3I8VD4mJiB2YWx1
ZSkKK3sKKyAgICBpZiAoVU5MSUtFTFkodmFsdWUuaGFzRXhjZXB0aW9uKCkpKSB7CisgICAgICAg
IHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgdmFsdWUuZXhjZXB0aW9uQ29kZSgpKTsKKyAgICAgICAg
cmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKKyAgICB9CisgICAgcmV0dXJuIHRvSlMoc3RhdGUs
IGdsb2JhbE9iamVjdCwgdmFsdWUudGFrZVJldHVyblZhbHVlKCkpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb25P
cjxUPiYmIHZhbHVlKQoreworICAgIC8vIEZJWE1FOiBJdCdzIHJlYWxseSBhbm5veWluZyB0byBo
YXZlIHR3byBvZiB0aGVzZSBmdW5jdGlvbnMuIFNob3VsZCBmaW5kIGEgd2F5IHRvIGNvbWJpbmUg
dG9KUyBhbmQgdG9KU05ld2x5Q3JlYXRlZC4KKyAgICBpZiAoVU5MSUtFTFkodmFsdWUuaGFzRXhj
ZXB0aW9uKCkpKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgdmFsdWUuZXhjZXB0
aW9uQ29kZSgpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRvSlNOZXdseUNyZWF0ZWQoc3RhdGUsIGdsb2JhbE9iamVjdCwgdmFsdWUudGFr
ZVJldHVyblZhbHVlKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDNi
M2UzMTY0ZDQzYzkyNjQ0ZWU5MTZkYmFhNjBlYzQ0YTBmY2U1M2YuLjYxNmJhYjE4MmE4MmY3ZTVh
YTU0OWYwYWNkYjZjMGRiZWQyMzA4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00MzQxLDcgKzQzNDEsNyBAQCBzdWIg
R2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgYXJncy5hcHBlbmQoIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkcGFyYW0sIDEs
ICRpbnRlcmZhY2UsICRwYXJhbU5hbWUsICJtX2RhdGEiKSAuICIpO1xuIik7CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4gICAgTmFrZWRQdHI8RXhj
ZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJcbiAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247
XG4iKTsKIAogICAgICAgICAgICAgbXkgJHByb3BlcnR5VG9Mb29rdXAgPSAiSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhzdGF0ZSwgXCIke2Z1bmN0aW9uTmFtZX1cIikiOwogICAgICAgICAgICAgbXkg
JGludm9rZU1ldGhvZCA9ICJKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbk9y
T2JqZWN0IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suY3BwCmluZGV4IDZjNmU0YmY3MTFhZDExNWVlODIyZDJk
YzVkZTlhYzdhYWYxNzAyZjEuLjY1ODJlNjI0N2VkOWM3MTIxNmYxMWY1N2RlMTVkYzQ5ZjRiNTA5
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIGJvb2wgSlNUZXN0
Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aE5vUGFyYW0oKQogICAgIEV4ZWNTdGF0ZSogc3RhdGUgPSBt
X2RhdGEtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CiAgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgYXJnczsKIAotICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247
CisgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwogICAgIG1f
ZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAiY2FsbGJhY2tXaXRoTm9QYXJh
bSIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKQogICAg
ICAgICByZXBvcnRFeGNlcHRpb24oc3RhdGUsIHJldHVybmVkRXhjZXB0aW9uKTsKQEAgLTEyOCw3
ICsxMjgsNyBAQCBib29sIEpTVGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhBcnJheVBhcmFtKFJl
ZlB0cjxGbG9hdDMyQXJyYXk+IGFycmF5UGFyYW0pCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIg
YXJnczsKICAgICBhcmdzLmFwcGVuZCh0b0pTKHN0YXRlLCBtX2RhdGEtPmdsb2JhbE9iamVjdCgp
LCBhcnJheVBhcmFtKSk7CiAKLSAgICBOYWtlZFB0cjxFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0
aW9uOworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKICAg
ICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5
cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgImNhbGxiYWNrV2l0aEFy
cmF5UGFyYW0iKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlv
bikKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKHN0YXRlLCByZXR1cm5lZEV4Y2VwdGlvbik7CkBA
IC0xNDksNyArMTQ5LDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoU2VyaWFs
aXplZFNjcmlwdFZhbHVlUGFyYW0oUmVmUHRyPFNlcmlhbGl6ZWRTY3IKICAgICBhcmdzLmFwcGVu
ZChzcnpQYXJhbSA/IHNyelBhcmFtLT5kZXNlcmlhbGl6ZShzdGF0ZSwgbV9kYXRhLT5nbG9iYWxP
YmplY3QoKSwgMCkgOiBqc051bGwoKSk7CiAgICAgYXJncy5hcHBlbmQoanNTdHJpbmdXaXRoQ2Fj
aGUoc3RhdGUsIHN0ckFyZykpOwogCi0gICAgTmFrZWRQdHI8RXhjZXB0aW9uPiByZXR1cm5lZEV4
Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247
CiAgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJh
Y2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJjYWxsYmFja1dp
dGhTZXJpYWxpemVkU2NyaXB0VmFsdWVQYXJhbSIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAg
aWYgKHJldHVybmVkRXhjZXB0aW9uKQogICAgICAgICByZXBvcnRFeGNlcHRpb24oc3RhdGUsIHJl
dHVybmVkRXhjZXB0aW9uKTsKQEAgLTE2OSw3ICsxNjksNyBAQCBib29sIEpTVGVzdENhbGxiYWNr
OjpjYWxsYmFja1dpdGhTdHJpbmdMaXN0KERPTVN0cmluZ0xpc3QqIGxpc3RQYXJhbSkKICAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKHRvSlMoc3RhdGUsIG1f
ZGF0YS0+Z2xvYmFsT2JqZWN0KCksIGxpc3RQYXJhbSkpOwogCi0gICAgTmFrZWRQdHI8RXhjZXB0
aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0
dXJuZWRFeGNlcHRpb247CiAgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCBKU0NhbGxi
YWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3Rh
dGUsICJjYWxsYmFja1dpdGhTdHJpbmdMaXN0IiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBp
ZiAocmV0dXJuZWRFeGNlcHRpb24pCiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihzdGF0ZSwgcmV0
dXJuZWRFeGNlcHRpb24pOwpAQCAtMTg5LDcgKzE4OSw3IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2s6
OmNhbGxiYWNrV2l0aEJvb2xlYW4oYm9vbCBib29sUGFyYW0pCiAgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgYXJnczsKICAgICBhcmdzLmFwcGVuZChqc0Jvb2xlYW4oYm9vbFBhcmFtKSk7CiAKLSAg
ICBOYWtlZFB0cjxFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOworICAgIE5ha2VkUHRyPEpT
Qzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKICAgICBtX2RhdGEtPmludm9rZUNhbGxi
YWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhzdGF0ZSwgImNhbGxiYWNrV2l0aEJvb2xlYW4iKSwgcmV0dXJuZWRFeGNl
cHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikKICAgICAgICAgcmVwb3J0RXhjZXB0
aW9uKHN0YXRlLCByZXR1cm5lZEV4Y2VwdGlvbik7CkBAIC0yMTAsNyArMjEwLDcgQEAgYm9vbCBK
U1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3MoaW50MzJfdCBsb25nUGFy
YW0sIFRlc3ROb2RlKiB0ZXMKICAgICBhcmdzLmFwcGVuZChqc051bWJlcihsb25nUGFyYW0pKTsK
ICAgICBhcmdzLmFwcGVuZCh0b0pTKHN0YXRlLCBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLCB0ZXN0
Tm9kZVBhcmFtKSk7CiAKLSAgICBOYWtlZFB0cjxFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9u
OworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKICAgICBt
X2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6
Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgImNhbGxiYWNrUmVxdWlyZXNU
aGlzVG9QYXNzIiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRp
b24pCiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihzdGF0ZSwgcmV0dXJuZWRFeGNlcHRpb24pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENhbGxiYWNrRnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwCmluZGV4IDQ4Mzc2NzE3MDgyMmFlZTY5
ODZkMGExMjdmZWY0Y2NiZTNmNzcwNjYuLmNhZjk4ODI2YTI5MjUyYTkzYTAwOGI4NDQxMDcxOTAy
NzI0NzdiZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5jcHAKQEAgLTcyLDcg
KzcyLDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpjYWxsYmFja1dpdGhOb1BhcmFt
KCkKICAgICBFeGVjU3RhdGUqIHN0YXRlID0gbV9kYXRhLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFs
RXhlYygpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAKLSAgICBOYWtlZFB0cjxF
eGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9u
PiByZXR1cm5lZEV4Y2VwdGlvbjsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIG1fZGF0
YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVu
Y3Rpb24sIElkZW50aWZpZXIoKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5l
ZEV4Y2VwdGlvbikKQEAgLTkzLDcgKzkzLDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9u
OjpjYWxsYmFja1dpdGhBcnJheVBhcmFtKFJlZlB0cjxGbG9hdDMyQXJyYXk+IGFycmF5UGEKICAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKHRvSlMoc3RhdGUs
IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCksIGFycmF5UGFyYW0pKTsKIAotICAgIE5ha2VkUHRyPEV4
Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CisgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+
IHJldHVybmVkRXhjZXB0aW9uOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgbV9kYXRh
LT5pbnZva2VDYWxsYmFjayhhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5j
dGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVk
RXhjZXB0aW9uKQpAQCAtMTE1LDcgKzExNSw3IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2tGdW5jdGlv
bjo6Y2FsbGJhY2tXaXRoU2VyaWFsaXplZFNjcmlwdFZhbHVlUGFyYW0oUmVmUHRyPFNlcmlhCiAg
ICAgYXJncy5hcHBlbmQoc3J6UGFyYW0gPyBzcnpQYXJhbS0+ZGVzZXJpYWxpemUoc3RhdGUsIG1f
ZGF0YS0+Z2xvYmFsT2JqZWN0KCksIDApIDoganNOdWxsKCkpOwogICAgIGFyZ3MuYXBwZW5kKGpz
U3RyaW5nV2l0aENhY2hlKHN0YXRlLCBzdHJBcmcpKTsKIAotICAgIE5ha2VkUHRyPEV4Y2VwdGlv
bj4gcmV0dXJuZWRFeGNlcHRpb247CisgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVy
bmVkRXhjZXB0aW9uOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgbV9kYXRhLT5pbnZv
a2VDYWxsYmFjayhhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwg
SWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0
aW9uKQpAQCAtMTM2LDcgKzEzNiw3IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6Y2Fs
bGJhY2tXaXRoU3RyaW5nTGlzdChET01TdHJpbmdMaXN0KiBsaXN0UGFyYW0pCiAgICAgTWFya2Vk
QXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBhcmdzLmFwcGVuZCh0b0pTKHN0YXRlLCBtX2RhdGEt
Pmdsb2JhbE9iamVjdCgpLCBsaXN0UGFyYW0pKTsKIAotICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4g
cmV0dXJuZWRFeGNlcHRpb247CisgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVk
RXhjZXB0aW9uOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgbV9kYXRhLT5pbnZva2VD
YWxsYmFjayhhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRl
bnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9u
KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6Y2FsbGJh
Y2tXaXRoQm9vbGVhbihib29sIGJvb2xQYXJhbSkKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdzOwogICAgIGFyZ3MuYXBwZW5kKGpzQm9vbGVhbihib29sUGFyYW0pKTsKIAotICAgIE5ha2Vk
UHRyPEV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CisgICAgTmFrZWRQdHI8SlNDOjpFeGNl
cHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAg
bV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBl
OjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJl
dHVybmVkRXhjZXB0aW9uKQpAQCAtMTc5LDcgKzE3OSw3IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2tG
dW5jdGlvbjo6Y2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3MoaW50MzJfdCBsb25nUGFyYW0sIFRl
c3ROCiAgICAgYXJncy5hcHBlbmQoanNOdW1iZXIobG9uZ1BhcmFtKSk7CiAgICAgYXJncy5hcHBl
bmQodG9KUyhzdGF0ZSwgbV9kYXRhLT5nbG9iYWxPYmplY3QoKSwgdGVzdE5vZGVQYXJhbSkpOwog
Ci0gICAgTmFrZWRQdHI8RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKKyAgICBOYWtlZFB0
cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpD
YWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9uKTsK
ICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRE9NSW1wbGVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVu
dGF0aW9uLmNwcAppbmRleCBhZmEzNjI4ODI0YTBmYWYzMDRkOGRiYmNmNTRlMmIzY2E4NzE4OTEy
Li5lZmJlNTFmZmY1OWQ3NGU5M2QzOTRlOGM5MDU3NTVkNDE2YjgwNzIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKQEAgLTI1LDI1ICsyNSwyNSBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAKLSNpbmNsdWRl
ICJDb250ZW50VHlwZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKKyNpbmNsdWRlICJD
b250ZW50VHlwZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50VHlwZS5oIgogI2luY2x1ZGUgIkVsZW1l
bnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiRlRQRGlyZWN0b3J5
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRlICJGVFBEaXJlY3RvcnlE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxIZWFk
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUaXRsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbWFn
ZS5oIgogI2luY2x1ZGUgIkltYWdlRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lz
dHJ5LmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTWVkaWFEb2N1bWVudC5o
IgotI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCi0jaW5j
bHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJQbHVnaW5E
b2N1bWVudC5oIgpAQCAtNzMsNiArNzMsNyBAQCBzdGF0aWMgdm9pZCBhZGRTdHJpbmcoRmVhdHVy
ZVNldCYgc2V0LCBjb25zdCBjaGFyKiBzdHJpbmcpCiB9CiAKICNpZiBFTkFCTEUoVklERU8pCisK
IGNsYXNzIERPTUltcGxlbWVudGF0aW9uU3VwcG9ydHNUeXBlQ2xpZW50IDogcHVibGljIE1lZGlh
UGxheWVyU3VwcG9ydHNUeXBlQ2xpZW50IHsKIHB1YmxpYzoKICAgICBET01JbXBsZW1lbnRhdGlv
blN1cHBvcnRzVHlwZUNsaWVudChib29sIG5lZWRzSGFja3MsIGNvbnN0IFN0cmluZyYgaG9zdCkK
QEAgLTg4LDYgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbmVlZHNIYWNrczsKICAgICBT
dHJpbmcgbV9ob3N0OwogfTsKKwogI2VuZGlmCiAKIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkU1ZH
MTBGZWF0dXJlKGNvbnN0IFN0cmluZyYgZmVhdHVyZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQpA
QCAtMjA3LDEwMyArMjA5LDU4IEBAIGJvb2wgRE9NSW1wbGVtZW50YXRpb246Omhhc0ZlYXR1cmUo
Y29uc3QgU3RyaW5nJiBmZWF0dXJlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLVJlZlB0cjxEb2N1bWVudFR5cGU+IERPTUltcGxlbWVudGF0aW9uOjpjcmVh
dGVEb2N1bWVudFR5cGUoY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLAotICAgIGNvbnN0IFN0
cmluZyYgcHVibGljSWQsIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQorRXhjZXB0aW9uT3I8UmVmPERvY3VtZW50VHlwZT4+IERPTUltcGxlbWVudGF0aW9uOjpjcmVh
dGVEb2N1bWVudFR5cGUoY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBjb25zdCBTdHJpbmcm
IHB1YmxpY0lkLCBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKQogewotICAgIFN0cmluZyBwcmVmaXgs
IGxvY2FsTmFtZTsKLSAgICBpZiAoIURvY3VtZW50OjpwYXJzZVF1YWxpZmllZE5hbWUocXVhbGlm
aWVkTmFtZSwgcHJlZml4LCBsb2NhbE5hbWUsIGVjKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgU3RyaW5nIHByZWZpeDsKKyAgICBTdHJpbmcgbG9j
YWxOYW1lOworICAgIERvY3VtZW50OjpwYXJzZVF1YWxpZmllZE5hbWUocXVhbGlmaWVkTmFtZSwg
cHJlZml4LCBsb2NhbE5hbWUsIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiBFeGNl
cHRpb24oZWMpOwogCiAgICAgcmV0dXJuIERvY3VtZW50VHlwZTo6Y3JlYXRlKG1fZG9jdW1lbnQs
IHF1YWxpZmllZE5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCk7CiB9CiAKLURPTUltcGxlbWVudGF0
aW9uKiBET01JbXBsZW1lbnRhdGlvbjo6Z2V0SW50ZXJmYWNlKGNvbnN0IFN0cmluZyYgLypmZWF0
dXJlKi8pCitzdGF0aWMgaW5saW5lIFJlZjxYTUxEb2N1bWVudD4gY3JlYXRlWE1MRG9jdW1lbnQo
Y29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkkpCiB7Ci0gICAgcmV0dXJuIDA7CisgICAgaWYgKG5h
bWVzcGFjZVVSSSA9PSBTVkdOYW1lczo6c3ZnTmFtZXNwYWNlVVJJKQorICAgICAgICByZXR1cm4g
U1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBVUkwoKSk7CisgICAgaWYgKG5hbWVzcGFjZVVS
SSA9PSBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKQorICAgICAgICByZXR1cm4gWE1MRG9j
dW1lbnQ6OmNyZWF0ZVhIVE1MKG51bGxwdHIsIFVSTCgpKTsKKyAgICByZXR1cm4gWE1MRG9jdW1l
bnQ6OmNyZWF0ZShudWxscHRyLCBVUkwoKSk7CiB9CiAKLVJlZlB0cjxYTUxEb2N1bWVudD4gRE9N
SW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJ
LAotICAgIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgRG9jdW1lbnRUeXBlKiBkb2N0eXBl
LCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPFJlZjxYTUxEb2N1bWVudD4+IERPTUlt
cGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwg
Y29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBEb2N1bWVudFR5cGUqIGRvY3VtZW50VHlwZSkK
IHsKLSAgICBSZWZQdHI8WE1MRG9jdW1lbnQ+IGRvYzsKLSAgICBpZiAobmFtZXNwYWNlVVJJID09
IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpCi0gICAgICAgIGRvYyA9IFNWR0RvY3VtZW50Ojpj
cmVhdGUoMCwgVVJMKCkpOwotICAgIGVsc2UgaWYgKG5hbWVzcGFjZVVSSSA9PSBIVE1MTmFtZXM6
OnhodG1sTmFtZXNwYWNlVVJJKQotICAgICAgICBkb2MgPSBYTUxEb2N1bWVudDo6Y3JlYXRlWEhU
TUwoMCwgVVJMKCkpOwotICAgIGVsc2UKLSAgICAgICAgZG9jID0gWE1MRG9jdW1lbnQ6OmNyZWF0
ZSgwLCBVUkwoKSk7CisgICAgYXV0byBkb2N1bWVudCA9IGNyZWF0ZVhNTERvY3VtZW50KG5hbWVz
cGFjZVVSSSk7CiAKLSAgICBkb2MtPnNldFNlY3VyaXR5T3JpZ2luUG9saWN5KG1fZG9jdW1lbnQu
c2VjdXJpdHlPcmlnaW5Qb2xpY3koKSk7CisgICAgZG9jdW1lbnQtPnNldFNlY3VyaXR5T3JpZ2lu
UG9saWN5KG1fZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW5Qb2xpY3koKSk7CiAKLSAgICBSZWZQdHI8
Tm9kZT4gZG9jdW1lbnRFbGVtZW50OworICAgIFJlZlB0cjxFbGVtZW50PiBkb2N1bWVudEVsZW1l
bnQ7CiAgICAgaWYgKCFxdWFsaWZpZWROYW1lLmlzRW1wdHkoKSkgewotICAgICAgICBkb2N1bWVu
dEVsZW1lbnQgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5h
bWUsIGVjKTsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgIGRvY3VtZW50
RWxlbWVudCA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlVVJJLCBxdWFsaWZp
ZWROYW1lLCBlYyk7CiAgICAgICAgIGlmIChlYykKLSAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbihlYyk7CiAgICAgfQogCi0gICAgaWYgKGRv
Y3R5cGUpCi0gICAgICAgIGRvYy0+YXBwZW5kQ2hpbGQoKmRvY3R5cGUpOworICAgIGlmIChkb2N1
bWVudFR5cGUpCisgICAgICAgIGRvY3VtZW50LT5hcHBlbmRDaGlsZCgqZG9jdW1lbnRUeXBlKTsK
ICAgICBpZiAoZG9jdW1lbnRFbGVtZW50KQotICAgICAgICBkb2MtPmFwcGVuZENoaWxkKCpkb2N1
bWVudEVsZW1lbnQpOworICAgICAgICBkb2N1bWVudC0+YXBwZW5kQ2hpbGQoKmRvY3VtZW50RWxl
bWVudCk7CiAKLSAgICByZXR1cm4gZG9jOworICAgIHJldHVybiBXVEZNb3ZlKGRvY3VtZW50KTsK
IH0KIAotUmVmPENTU1N0eWxlU2hlZXQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVDU1NTdHls
ZVNoZWV0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgbWVkaWEsIEV4Y2VwdGlvbkNvZGUm
KQorUmVmPENTU1N0eWxlU2hlZXQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVDU1NTdHlsZVNo
ZWV0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgbWVkaWEpCiB7CiAgICAgLy8gRklYTUU6
IFRpdGxlIHNob3VsZCBiZSBzZXQuCiAgICAgLy8gRklYTUU6IE1lZGlhIGNvdWxkIGhhdmUgd3Jv
bmcgc3ludGF4LCBpbiB3aGljaCBjYXNlIHdlIHNob3VsZCBnZW5lcmF0ZSBhbiBleGNlcHRpb24u
Ci0gICAgUmVmPENTU1N0eWxlU2hlZXQ+IHNoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKFN0
eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKCkpOworICAgIGF1dG8gc2hlZXQgPSBDU1NTdHlsZVNo
ZWV0OjpjcmVhdGUoU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoKSk7CiAgICAgc2hlZXQtPnNl
dE1lZGlhUXVlcmllcyhNZWRpYVF1ZXJ5U2V0OjpjcmVhdGVBbGxvd2luZ0Rlc2NyaXB0aW9uU3lu
dGF4KG1lZGlhKSk7CiAgICAgcmV0dXJuIHNoZWV0OwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wg
aXNWYWxpZFhNTE1JTUVUeXBlQ2hhcihVQ2hhciBjKQotewotICAgIC8vIFZhbGlkIGNoYXJhY3Rl
cnMgcGVyIFJGQ3MgMzAyMyBhbmQgMjA0NToKLSAgICAvLyAwLTlhLXpBLVpfLSt+ISRee318LiUn
YCMmKgotICAgIHJldHVybiBpc0FTQ0lJQWxwaGFudW1lcmljKGMpIHx8IGMgPT0gJyEnIHx8IGMg
PT0gJyMnIHx8IGMgPT0gJyQnIHx8IGMgPT0gJyUnIHx8IGMgPT0gJyYnIHx8IGMgPT0gJ1wnJyB8
fCBjID09ICcqJyB8fCBjID09ICcrJwotICAgICAgICB8fCBjID09ICctJyB8fCBjID09ICcuJyB8
fCBjID09ICdeJyB8fCBjID09ICdfJyB8fCBjID09ICdgJyB8fCBjID09ICd7JyB8fCBjID09ICd8
JyB8fCBjID09ICd9JyB8fCBjID09ICd+JzsKLX0KLQotYm9vbCBET01JbXBsZW1lbnRhdGlvbjo6
aXNYTUxNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQotewotICAgIC8vIEZJWE1FOiBD
YW4gd2UgbW92ZSB0aGlzIGxvZ2ljIHRvIE1JTUVUeXBlUmVnaXN0cnkgYW5kIGhhdmUgdGhpcyBq
dXN0IGJlIGEgc2luZ2xlIGZ1bmN0aW9uIGNhbGw/Ci0KLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L3htbCIpIHx8IGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiYXBwbGljYXRpb24veG1sIikgfHwgZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L3hzbCIpKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIGlmICghbWltZVR5cGUuZW5kc1dpdGgoIit4bWwiLCBmYWxzZSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIHNpemVfdCBzbGFzaFBvc2l0aW9uID0gbWltZVR5cGUu
ZmluZCgnLycpOwotICAgIC8vIFRha2UgaW50byBhY2NvdW50IHRoZSAnK3htbCcgZW5kaW5nIG9m
IG1pbWVUeXBlLgotICAgIGlmIChzbGFzaFBvc2l0aW9uID09IG5vdEZvdW5kIHx8ICFzbGFzaFBv
c2l0aW9uIHx8IHNsYXNoUG9zaXRpb24gPT0gbWltZVR5cGUubGVuZ3RoKCkgLSA1KQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBBZ2FpbiwgbWltZVR5cGUgZW5kcyB3aXRoICcreG1s
Jywgbm8gbmVlZCB0byBjaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhhdCBzdWJzdHJpbmcuCi0gICAg
c2l6ZV90IG1pbWVMZW5ndGggPSBtaW1lVHlwZS5sZW5ndGgoKTsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1pbWVMZW5ndGggLSA0OyArK2kpIHsKLSAgICAgICAgaWYgKCFpc1ZhbGlkWE1M
TUlNRVR5cGVDaGFyKG1pbWVUeXBlW2ldKSAmJiBpICE9IHNsYXNoUG9zaXRpb24pCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wg
RE9NSW1wbGVtZW50YXRpb246OmlzVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
Ci17Ci0gICAgLy8gRklYTUU6IENhbiB3ZSBtb3ZlIHRoaXMgbG9naWMgdG8gTUlNRVR5cGVSZWdp
c3RyeSBhbmQgaGF2ZSB0aGlzIGp1c3QgYmUgYSBzaW5nbGUgZnVuY3Rpb24gY2FsbD8KLQotICAg
IHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZSht
aW1lVHlwZSkKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5
cGUsICJhcHBsaWNhdGlvbi9qc29uIikgLy8gUmVuZGVyIEpTT04gYXMgdGV4dC9wbGFpbi4KLSAg
ICAgICAgfHwgKG1pbWVUeXBlLnN0YXJ0c1dpdGgoInRleHQvIiwgZmFsc2UpCi0gICAgICAgICAg
ICAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L2h0bWwi
KQotICAgICAgICAgICAgJiYgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBl
LCAidGV4dC94bWwiKQotICAgICAgICAgICAgJiYgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKG1pbWVUeXBlLCAidGV4dC94c2wiKSk7Ci19Ci0KIFJlZjxIVE1MRG9jdW1lbnQ+IERPTUlt
cGxlbWVudGF0aW9uOjpjcmVhdGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsK
ICAgICBhdXRvIGRvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgVVJMKCkp
OwpAQCAtMzIxLDYgKzI3OCw5IEBAIFJlZjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9u
OjpjcmVhdGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0aXRsZSkKIAogUmVmPERvY3VtZW50
PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0eXBlLCBG
cmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogeworICAgIC8vIEZJWE1FOiBDb25mdXNpbmcg
dG8gaGF2ZSB0aGlzIGhlcmUgd2l0aCBwdWJsaWMgRE9NIEFQSXMgZm9yIGNyZWF0aW5nIGRvY3Vt
ZW50cy4gVGhpcyBpcyBkaWZmZXJlbnQgZW5vdWdoIHRoYXQgaXQgc2hvdWxkIHBlcmhhcHMgYmUg
bW92ZWQuCisgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gaXMgZG9pbmcgY2FzZSBpbnNlbnNp
dGl2ZSBjb21wYXJpc29ucyBvbiBNSU1FIHR5cGVzLiBTaG91bGQgZG8gZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UgaW5zdGVhZC4KKwogICAgIC8vIFBsdWdpbnMgY2Fubm90IHRha2UgSFRN
TCBhbmQgWEhUTUwgZnJvbSB1cywgYW5kIHdlIGRvbid0IGV2ZW4gbmVlZCB0byBpbml0aWFsaXpl
IHRoZSBwbHVnaW4gZGF0YWJhc2UgZm9yIHRob3NlLgogICAgIGlmICh0eXBlID09ICJ0ZXh0L2h0
bWwiKQogICAgICAgICByZXR1cm4gSFRNTERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CkBA
IC0zMzgsNyArMjk4LDcgQEAgUmVmPERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRl
RG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0eXBlLCBGcmFtZSogZnJhbWUKICAgICAgICAgcmV0dXJu
IEltYWdlRG9jdW1lbnQ6OmNyZWF0ZSgqZnJhbWUsIHVybCk7CiAKICAgICBQbHVnaW5EYXRhKiBw
bHVnaW5EYXRhID0gbnVsbHB0cjsKLSAgICBQbHVnaW5EYXRhOjpBbGxvd2VkUGx1Z2luVHlwZXMg
YWxsb3dlZFBsdWdpblR5cGVzID0gUGx1Z2luRGF0YTo6T25seUFwcGxpY2F0aW9uUGx1Z2luczsK
KyAgICBhdXRvIGFsbG93ZWRQbHVnaW5UeXBlcyA9IFBsdWdpbkRhdGE6Ok9ubHlBcHBsaWNhdGlv
blBsdWdpbnM7CiAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAgaWYg
KGZyYW1lLT5sb2FkZXIoKS5zdWJmcmFtZUxvYWRlcigpLmFsbG93UGx1Z2lucygpKQogICAgICAg
ICAgICAgYWxsb3dlZFBsdWdpblR5cGVzID0gUGx1Z2luRGF0YTo6QWxsUGx1Z2luczsKQEAgLTM2
OSwxMyArMzI5LDEzIEBAIFJlZjxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURv
Y3VtZW50KGNvbnN0IFN0cmluZyYgdHlwZSwgRnJhbWUqIGZyYW1lCiAgICAgLy8gYW5kIGFsc28g
c2VydmVzIGFzIGFuIG9wdGltaXphdGlvbiB0byBwcmV2ZW50IGxvYWRpbmcgdGhlIHBsdWctaW4g
ZGF0YWJhc2UgaW4gdGhlIGNvbW1vbiBjYXNlLgogICAgIGlmICh0eXBlICE9ICJ0ZXh0L3BsYWlu
IiAmJiAoKHBsdWdpbkRhdGEgJiYgcGx1Z2luRGF0YS0+c3VwcG9ydHNXZWJWaXNpYmxlTWltZVR5
cGUodHlwZSwgYWxsb3dlZFBsdWdpblR5cGVzKSkgfHwgKGZyYW1lICYmIGZyYW1lLT5sb2FkZXIo
KS5jbGllbnQoKS5zaG91bGRBbHdheXNVc2VQbHVnaW5Eb2N1bWVudCh0eXBlKSkpKQogICAgICAg
ICByZXR1cm4gUGx1Z2luRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKLSAgICBpZiAoaXNU
ZXh0TUlNRVR5cGUodHlwZSkpCisgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzVGV4dE1JTUVU
eXBlKHR5cGUpKQogICAgICAgICByZXR1cm4gVGV4dERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVy
bCk7CiAKICAgICBpZiAodHlwZSA9PSAiaW1hZ2Uvc3ZnK3htbCIpCiAgICAgICAgIHJldHVybiBT
VkdEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwogCi0gICAgaWYgKGlzWE1MTUlNRVR5cGUo
dHlwZSkpCisgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5cGUodHlwZSkpCiAg
ICAgICAgIHJldHVybiBYTUxEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwogCiAgICAgcmV0
dXJuIEhUTUxEb2N1bWVudDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
SW1wbGVtZW50YXRpb24uaAppbmRleCA4ODgwYzRjNTBjMTI5NmI2YTkyY2NiODUwYWE3ZDBlNWM3
ZWZjNTk0Li5kODZhZGYwN2JmMWEyMjBhMmQxMjg2ZDRmYzE1YTNiMzc5YWNhYjg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHly
aWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChD
KSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChD
KSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDYgKzIzLDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlhN
TERvY3VtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2LDI1ICszNywxNCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkZXJlZigpIHsgbV9kb2N1bWVudC5kZXJlZigpOyB9CiAgICAgRG9j
dW1lbnQmIGRvY3VtZW50KCkgeyByZXR1cm4gbV9kb2N1bWVudDsgfQogCi0gICAgLy8gRE9NIG1l
dGhvZHMgJiBhdHRyaWJ1dGVzIGZvciBET01JbXBsZW1lbnRhdGlvbgotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBib29sIGhhc0ZlYXR1cmUoY29uc3QgU3RyaW5nJiBmZWF0dXJlLCBjb25zdCBT
dHJpbmcmIHZlcnNpb24pOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxEb2N1bWVudFR5cGU+
IGNyZWF0ZURvY3VtZW50VHlwZShjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIGNvbnN0IFN0
cmluZyYgcHVibGljSWQsIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8WE1MRG9jdW1lbnQ+IGNyZWF0ZURvY3VtZW50KGNv
bnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIERv
Y3VtZW50VHlwZSosIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgIERPTUltcGxlbWVudGF0aW9uKiBn
ZXRJbnRlcmZhY2UoY29uc3QgU3RyaW5nJiBmZWF0dXJlKTsKLQotICAgIC8vIEZyb20gdGhlIERP
TUltcGxlbWVudGF0aW9uQ1NTIGludGVyZmFjZQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlQ1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBTdHJpbmcmIG1lZGlhLCBFeGNlcHRpb25Db2RlJik7Ci0KLSAgICAvLyBGcm9tIHRo
ZSBIVE1MRE9NSW1wbGVtZW50YXRpb24gaW50ZXJmYWNlCisgICAgV0VCQ09SRV9FWFBPUlQgRXhj
ZXB0aW9uT3I8UmVmPERvY3VtZW50VHlwZT4+IGNyZWF0ZURvY3VtZW50VHlwZShjb25zdCBTdHJp
bmcmIHF1YWxpZmllZE5hbWUsIGNvbnN0IFN0cmluZyYgcHVibGljSWQsIGNvbnN0IFN0cmluZyYg
c3lzdGVtSWQpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxYTUxEb2N1bWVu
dD4+IGNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJp
bmcmIHF1YWxpZmllZE5hbWUsIERvY3VtZW50VHlwZSopOwogICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZjxIVE1MRG9jdW1lbnQ+IGNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBoYXNGZWF0dXJlKGNvbnN0IFN0cmluZyYg
ZmVhdHVyZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZUNTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiB0
aXRsZSwgY29uc3QgU3RyaW5nJiBtZWRpYSk7CiAKLSAgICAvLyBPdGhlciBtZXRob2RzIChub3Qg
cGFydCBvZiBET00pCiAgICAgc3RhdGljIFJlZjxEb2N1bWVudD4gY3JlYXRlRG9jdW1lbnQoY29u
c3QgU3RyaW5nJiBNSU1FVHlwZSwgRnJhbWUqLCBjb25zdCBVUkwmKTsKIAotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIGlzWE1MTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNUZXh0TUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBNSU1FVHlwZSk7Ci0KIHByaXZhdGU6CiAgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGwKaW5kZXggZGEyNmNkMGRh
Njc1ZmRmNmExNTgxYjFjOTI5MDg1NzJlYjNmMGI3Yy4uNzQzNTYxMzM1ZDIzODk3ODllYWRiYmJj
NjVkOTQ5YmQwMGY5ZTM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxl
bWVudGF0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24u
aWRsCkBAIC0yMywxNSArMjMsMTQgQEAKICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxEb2N1
bWVudCwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogXSBpbnRlcmZhY2UgRE9NSW1w
bGVtZW50YXRpb24geworICAgIFtOZXdPYmplY3RdIERvY3VtZW50VHlwZSBjcmVhdGVEb2N1bWVu
dFR5cGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIERPTVN0cmluZyBwdWJsaWNJZCwgRE9NU3Ry
aW5nIHN5c3RlbUlkKTsKKyAgICBbTmV3T2JqZWN0XSBYTUxEb2N1bWVudCBjcmVhdGVEb2N1bWVu
dChET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01T
dHJpbmcgcXVhbGlmaWVkTmFtZSwgb3B0aW9uYWwgRG9jdW1lbnRUeXBlPyBkb2N0eXBlID0gbnVs
bCk7CisgICAgW05ld09iamVjdF0gSFRNTERvY3VtZW50IGNyZWF0ZUhUTUxEb2N1bWVudChvcHRp
b25hbCBET01TdHJpbmcgdGl0bGUpOworCisgICAgLy8gRklYTUU6IExhdGVzdCBET00gc3BlY2lm
aWNhdGlvbiBzYXlzIHRoaXMgc2hvdWxkIGlnbm9yZSBhbGwgYXJndW1lbnRzIGFuZCBhbHdheXMg
cmV0dXJuIHRydWUuCiAgICAgLy8gRklYTUU6IFVzaW5nICJ1bmRlZmluZWQiIGFzIGRlZmF1bHQg
cGFyYW1ldGVyIHZhbHVlIGlzIHdyb25nLgogICAgIGJvb2xlYW4gaGFzRmVhdHVyZShvcHRpb25h
bCBET01TdHJpbmcgZmVhdHVyZSA9ICJ1bmRlZmluZWQiLCBbVHJlYXROdWxsQXM9RW1wdHlTdHJp
bmddIG9wdGlvbmFsIERPTVN0cmluZyB2ZXJzaW9uID0gInVuZGVmaW5lZCIpOwogCi0gICAgW1Jh
aXNlc0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBEb2N1bWVudFR5cGUgY3JlYXRlRG9jdW1lbnRUeXBl
KERPTVN0cmluZyBxdWFsaWZpZWROYW1lLCBET01TdHJpbmcgcHVibGljSWQsIERPTVN0cmluZyBz
eXN0ZW1JZCk7Ci0KLSAgICBbTmV3T2JqZWN0LCBSYWlzZXNFeGNlcHRpb25dIFhNTERvY3VtZW50
IGNyZWF0ZURvY3VtZW50KERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBbVHJlYXROdWxsQXM9RW1w
dHlTdHJpbmddIERPTVN0cmluZyBxdWFsaWZpZWROYW1lLCBvcHRpb25hbCBEb2N1bWVudFR5cGU/
IGRvY3R5cGUgPSBudWxsKTsKLQogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBk
ZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBD
U1NTdHlsZVNoZWV0IGNyZWF0ZUNTU1N0eWxlU2hlZXQob3B0aW9uYWwgRE9NU3RyaW5nIHRpdGxl
ID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIERPTVN0cmluZyBtZWRpYSA9ICJ1bmRlZmluZWQiKTsK
LQotICAgIFtOZXdPYmplY3RdIEhUTUxEb2N1bWVudCBjcmVhdGVIVE1MRG9jdW1lbnQob3B0aW9u
YWwgRE9NU3RyaW5nIHRpdGxlKTsKKyAgICBDU1NTdHlsZVNoZWV0IGNyZWF0ZUNTU1N0eWxlU2hl
ZXQob3B0aW9uYWwgRE9NU3RyaW5nIHRpdGxlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIERPTVN0
cmluZyBtZWRpYSA9ICJ1bmRlZmluZWQiKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCA3YThmYmQ4ZWVlMDRmOTlhMGQ1N2QyZjgxYTU5NjA5ZTE3MDU3ZDQ1Li5iNmNlOTVlZDdkYjhl
ZGJmYWVkNDY1YzUzZGUxOGRjMjc4NTNiMzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTEzNzMsMTEgKzEzNzMsNiBAQCB2b2lkIERvY3VtZW50OjpzZXRDb250ZW50TGFuZ3VhZ2UoY29u
c3QgU3RyaW5nJiBsYW5ndWFnZSkKIAogdm9pZCBEb2N1bWVudDo6c2V0WE1MVmVyc2lvbihjb25z
dCBTdHJpbmcmIHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghaW1wbGVt
ZW50YXRpb24oKS5oYXNGZWF0dXJlKCJYTUwiLCBTdHJpbmcoKSkpIHsKLSAgICAgICAgZWMgPSBO
T1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGlmICghWE1M
RG9jdW1lbnRQYXJzZXI6OnN1cHBvcnRzWE1MVmVyc2lvbih2ZXJzaW9uKSkgewogICAgICAgICBl
YyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm47CkBAIC0xMzg2LDEzICsxMzgx
LDggQEAgdm9pZCBEb2N1bWVudDo6c2V0WE1MVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24s
IEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIG1feG1sVmVyc2lvbiA9IHZlcnNpb247CiB9CiAKLXZv
aWQgRG9jdW1lbnQ6OnNldFhNTFN0YW5kYWxvbmUoYm9vbCBzdGFuZGFsb25lLCBFeGNlcHRpb25D
b2RlJiBlYykKK3ZvaWQgRG9jdW1lbnQ6OnNldFhNTFN0YW5kYWxvbmUoYm9vbCBzdGFuZGFsb25l
KQogewotICAgIGlmICghaW1wbGVtZW50YXRpb24oKS5oYXNGZWF0dXJlKCJYTUwiLCBTdHJpbmco
KSkpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQogICAgIG1feG1sU3RhbmRhbG9uZSA9IHN0YW5kYWxvbmUgPyBTdGFuZGFsb25lIDog
Tm90U3RhbmRhbG9uZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAwZDlmOWJjYjU1MGY3
MTA4NWNkZjgzZGZhM2YxNmE5Mjk2NjI1YTg5Li4yZWY1ZDU1ODg5ODM5YWQ2YWNhNGY1OWRiMmYy
NTY4MGJiOWI3NzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNDQyLDcgKzQ0Miw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0WE1MRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBlbmNvZGluZykg
eyBtX3htbEVuY29kaW5nID0gZW5jb2Rpbmc7IH0gLy8gcmVhZC1vbmx5IHByb3BlcnR5LCBvbmx5
IHRvIGJlIHNldCBmcm9tIFhNTERvY3VtZW50UGFyc2VyCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRYTUxWZXJzaW9uKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFhNTFN0YW5kYWxvbmUoYm9vbCwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0WE1MU3RhbmRhbG9uZShib29sKTsKICAgICB2b2lk
IHNldEhhc1hNTERlY2xhcmF0aW9uKGJvb2wgaGFzWE1MRGVjbGFyYXRpb24pIHsgbV9oYXNYTUxE
ZWNsYXJhdGlvbiA9IGhhc1hNTERlY2xhcmF0aW9uID8gMSA6IDA7IH0KIAogICAgIFN0cmluZyBk
b2N1bWVudFVSSSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRVUkk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaWRsCmluZGV4IGM4ZTA2MTQ5ZTc1YjcxNGQzYzZhMDljN2I0NTBlNDIyZDI3ZGZjM2Mu
LmU5ZmY4YjE5MWY4ZTUxOTNkMWJmZmRmZGFlNDJjNjg0ZjQxMDZlNWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmlkbApAQCAtNTMsNyArNTMsNyBAQAogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZz8geG1sRW5jb2Rpbmc7CiAgICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmli
dXRlIERPTVN0cmluZz8geG1sVmVyc2lvbjsKLSAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBh
dHRyaWJ1dGUgYm9vbGVhbiB4bWxTdGFuZGFsb25lOworICAgIGF0dHJpYnV0ZSBib29sZWFuIHht
bFN0YW5kYWxvbmU7CiAKICAgICBbUmFpc2VzRXhjZXB0aW9uXSBOb2RlIGFkb3B0Tm9kZShOb2Rl
IHNvdXJjZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYWNiZDVmMmZkN2Vl
YWU5NmQyNTNlY2I4YTNmNDg0M2VlOWFjNDA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V4Y2VwdGlvbi5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisKK0NvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCithcmUgbWV0OgorMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCitESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CitBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKK1NPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisqLworCisjcHJh
Z21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBFeGNlcHRpb25Db2RlID0g
aW50OworCitjbGFzcyBFeGNlcHRpb24geworcHVibGljOgorICAgIGV4cGxpY2l0IEV4Y2VwdGlv
bihFeGNlcHRpb25Db2RlKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbkNvZGUgY29k
ZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIEV4Y2VwdGlvbkNvZGUgbV9jb2RlOworfTsKKwor
aW5saW5lIEV4Y2VwdGlvbjo6RXhjZXB0aW9uKEV4Y2VwdGlvbkNvZGUgY29kZSkKKyAgICA6IG1f
Y29kZShjb2RlKQoreworfQorCitpbmxpbmUgRXhjZXB0aW9uQ29kZSBFeGNlcHRpb246OmNvZGUo
KSBjb25zdAoreworICAgIHJldHVybiBtX2NvZGU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlv
bk9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzljMDNmNTQyZDYwMTg4OGZhMThmMDU0MDVhZjJlYzU1OGJjNjI3
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCkBA
IC0wLDAgKzEsNzIgQEAKKy8qCisKK0NvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCithcmUgbWV0OgorMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCitESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCitBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKK1NPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkV4
Y2VwdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKwordGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlwZT4gY2xhc3MgRXhjZXB0aW9uT3Igewor
cHVibGljOgorICAgIEV4Y2VwdGlvbk9yKEV4Y2VwdGlvbiYmKTsKKyAgICBFeGNlcHRpb25PcihS
ZXR1cm5UeXBlJiYpOworCisgICAgYm9vbCBoYXNFeGNlcHRpb24oKSBjb25zdDsKKyAgICBFeGNl
cHRpb25Db2RlIGV4Y2VwdGlvbkNvZGUoKSBjb25zdDsKKyAgICBSZXR1cm5UeXBlJiYgdGFrZVJl
dHVyblZhbHVlKCk7CisKK3ByaXZhdGU6CisgICAgc3RkOjpleHBlcmltZW50YWw6OnZhcmlhbnQ8
RXhjZXB0aW9uLCBSZXR1cm5UeXBlPiBtX3ZhbHVlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
UmV0dXJuVHlwZT4gaW5saW5lIEV4Y2VwdGlvbk9yPFJldHVyblR5cGU+OjpFeGNlcHRpb25PcihF
eGNlcHRpb24mJiBleGNlcHRpb24pCisgICAgOiBtX3ZhbHVlKFdURk1vdmUoZXhjZXB0aW9uKSkK
K3sKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlwZT4gaW5saW5lIEV4Y2VwdGlvbk9y
PFJldHVyblR5cGU+OjpFeGNlcHRpb25PcihSZXR1cm5UeXBlJiYgcmV0dXJuVmFsdWUpCisgICAg
OiBtX3ZhbHVlKFdURk1vdmUocmV0dXJuVmFsdWUpKQoreworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBSZXR1cm5UeXBlPiBpbmxpbmUgYm9vbCBFeGNlcHRpb25PcjxSZXR1cm5UeXBlPjo6aGFzRXhj
ZXB0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjpleHBlcmltZW50YWw6OmhvbGRzX2Fs
dGVybmF0aXZlPEV4Y2VwdGlvbj4obV92YWx1ZSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJl
dHVyblR5cGU+IGlubGluZSBFeGNlcHRpb25Db2RlIEV4Y2VwdGlvbk9yPFJldHVyblR5cGU+Ojpl
eGNlcHRpb25Db2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjpleHBlcmltZW50YWw6Omdl
dDxFeGNlcHRpb24+KG1fdmFsdWUpLmNvZGUoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmV0
dXJuVHlwZT4gaW5saW5lIFJldHVyblR5cGUmJiBFeGNlcHRpb25PcjxSZXR1cm5UeXBlPjo6dGFr
ZVJldHVyblZhbHVlKCkKK3sKKyAgICByZXR1cm4gc3RkOjpleHBlcmltZW50YWw6OmdldDxSZXR1
cm5UeXBlPihXVEZNb3ZlKG1fdmFsdWUpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRlbXBsYXRlRWxlbWVudC5jcHAKaW5kZXggM2I1NmU1NWYwZWFiMzU2MTEyYTk5YWNmZjkw
MTNiM2FmM2UwOWFhZi4uNTgxYWEzMzNlYzBiN2JjNGQ4ZmM5ZGM2Y2JlMjlkYmMyZmQ4OWFkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwCkBAIC0yOSwx
MCArMjksOCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUgIkhUTUxU
ZW1wbGF0ZUVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIlRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggNzNiNDk5OTNjYjEy
OTdlYjBjYjkzMzQ4MTAxNjdmODMzNzYxMTIwNS4uZjhlNjY3OGYzMjcwYmQ4NTM2ZjBmMDNmZjg4
ZjViODhiYzIyYTc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlICJDYWNoZWRTY3JpcHQu
aCIKICNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJDb29raWVKYXIuaCIKLSNpbmNsdWRl
ICJET01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkRPTVBhdGNoU3VwcG9ydC5oIgogI2lu
Y2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCkBAIC01OSw2
ICs1OCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yT3ZlcmxheS5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCisj
aW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2lu
Y2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMTI4LDcgKzEyOCw3
IEBAIHN0YXRpYyBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gY3JlYXRlWEhSVGV4dERlY29k
ZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rl
cj4gZGVjb2RlcjsKICAgICBpZiAoIXRleHRFbmNvZGluZ05hbWUuaXNFbXB0eSgpKQogICAgICAg
ICBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgdGV4
dEVuY29kaW5nTmFtZSk7Ci0gICAgZWxzZSBpZiAoRE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlN
RVR5cGUobWltZVR5cGUpKSB7CisgICAgZWxzZSBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNYTUxN
SU1FVHlwZShtaW1lVHlwZSkpIHsKICAgICAgICAgZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29k
ZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIik7CiAgICAgICAgIGRlY29kZXItPnVzZUxlbmll
bnRYTUxEZWNvZGluZygpOwogICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UobWltZVR5cGUsICJ0ZXh0L2h0bWwiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDdiYTE4MDUwMGFiZWY0OGY4ZGIw
MzkzOTU1M2JjOWQyMGEyZTEzMmQuLjlmZjI4ZTFkZWMzNWRhZmZhZTZjNDYyZTJlMjk0ZWQ3OWMy
MDA1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmNwcApAQCAtMzAsMjQgKzMwLDE4IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNl
c0RhdGEuaCIKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCi0jaW5jbHVkZSAiRE9NSW1w
bGVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUg
IlRleHRSZXNvdXJjZURlY29kZXIuaCIKIAotbmFtZXNwYWNlIHsKLS8vIDEwME1CCi1zdGF0aWMg
Y29uc3Qgc2l6ZV90IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSA9IDEwMCAqIDEwMDAgKiAx
MDAwOwotCi0vLyAxME1CCi1zdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJj
ZUNvbnRlbnRTaXplID0gMTAgKiAxMDAwICogMTAwMDsKLX0KLQogdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBSZXNvdXJjZURhdGEKK3N0YXRp
YyBjb25zdCBzaXplX3QgbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplID0gMTAwICogMTAwMCAq
IDEwMDA7IC8vIDEwME1CCitzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJj
ZUNvbnRlbnRTaXplID0gMTAgKiAxMDAwICogMTAwMDsgLy8gMTBNQgorCiBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0
SWQsIGNvbnN0IFN0cmluZyYgbG9hZGVySWQpCiAgICAgOiBtX3JlcXVlc3RJZChyZXF1ZXN0SWQp
CiAgICAgLCBtX2xvYWRlcklkKGxvYWRlcklkKQpAQCAtMTE3LDcgKzExMSw2IEBAIHNpemVfdCBO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KCkK
ICAgICByZXR1cm4gY29udGVudFNpemVJbkJ5dGVzKG1fY29udGVudCkgLSBkYXRhTGVuZ3RoOwog
fQogCi0vLyBOZXR3b3JrUmVzb3VyY2VzRGF0YQogTmV0d29ya1Jlc291cmNlc0RhdGE6Ok5ldHdv
cmtSZXNvdXJjZXNEYXRhKCkKICAgICA6IG1fY29udGVudFNpemUoMCkKICAgICAsIG1fbWF4aW11
bVJlc291cmNlc0NvbnRlbnRTaXplKG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSkKQEAgLTE0
MSw3ICsxMzQsNyBAQCBzdGF0aWMgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGNyZWF0ZU90
aGVyUmVzb3VyY2VUZXh0RGVjb2Rlcihjb25zdCBTdHJpbmcmCiAgICAgUmVmUHRyPFRleHRSZXNv
dXJjZURlY29kZXI+IGRlY29kZXI7CiAgICAgaWYgKCF0ZXh0RW5jb2RpbmdOYW1lLmlzRW1wdHko
KSkKICAgICAgICAgZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9w
bGFpbiIsIHRleHRFbmNvZGluZ05hbWUpOwotICAgIGVsc2UgaWYgKERPTUltcGxlbWVudGF0aW9u
Ojppc1hNTE1JTUVUeXBlKG1pbWVUeXBlKSkgeworICAgIGVsc2UgaWYgKE1JTUVUeXBlUmVnaXN0
cnk6OmlzWE1MTUlNRVR5cGUobWltZVR5cGUpKSB7CiAgICAgICAgIGRlY29kZXIgPSBUZXh0UmVz
b3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3htbCIpOwogICAgICAgICBkZWNvZGVy
LT51c2VMZW5pZW50WE1MRGVjb2RpbmcoKTsKICAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC9odG1sIikpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAppbmRleCA4MDc5NDQ1N2RlZTc4MTFhYTU4MjAyYTI5ZmUwZTA4NGQw
YTg0NjYxLi5lNTQ3OTM4ZThkNDIzZDk5NGU4NDg3NTE2OTNlZDY2OTQzZmRkYWJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDb250ZW50RmlsdGVyLmgiCiAjaW5jbHVkZSAi
Q29udGVudFNlY3VyaXR5UG9saWN5LmgiCi0jaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIK
ICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNp
bmNsdWRlICJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCmluZGV4IDk1ZDM2ZTMxNWEwNWI4NWI3NTJhYTQ0
MmNjZmE1YjE0MGRjNmFmNzYuLmZlOTRiN2Y4MTg3NDZlM2QyZTdhYjMwYjQ2N2ZhMDllMTNiMTI0
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAK
QEAgLTIzLDkgKzIzLDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXh0UmVz
b3VyY2VEZWNvZGVyLmgiCiAKLSNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1
ZGUgIkhUTUxNZXRhQ2hhcnNldFBhcnNlci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJUZXh0Q29kZWMuaCIKICNpbmNs
dWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmdEZXRlY3Rvci5oIgpA
QCAtMzA2LDcgKzMwNiw3IEBAIFRleHRSZXNvdXJjZURlY29kZXI6OkNvbnRlbnRUeXBlIFRleHRS
ZXNvdXJjZURlY29kZXI6OmRldGVybWluZUNvbnRlbnRUeXBlKGNvbnN0CiAgICAgICAgIHJldHVy
biBDU1M7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAi
dGV4dC9odG1sIikpCiAgICAgICAgIHJldHVybiBIVE1MOwotICAgIGlmIChET01JbXBsZW1lbnRh
dGlvbjo6aXNYTUxNSU1FVHlwZShtaW1lVHlwZSkpCisgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6
OmlzWE1MTUlNRVR5cGUobWltZVR5cGUpKQogICAgICAgICByZXR1cm4gWE1MOwogICAgIHJldHVy
biBQbGFpblRleHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1F
VHlwZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0
cnkuY3BwCmluZGV4IDNhMzQzOTY3NTdiNjU2MTIyM2M2ZTIyZGI3MWVkMDE5YTA1MTUyMWMuLmFk
ZDI4ZmZjNjI5ZWZjM2QxOTZjMmRmNmFlNDZmMTMzODc2ZjI3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCwgMjAwOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtMjksMjAgKzI5LDIxIEBACiAKICNpbmNsdWRlICJNZWRpYVBsYXll
ci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CiAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgot
I2lmICFQTEFURk9STShJT1MpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2VuZGlmCisK
KyNpZiBVU0UoQ0cpICYmICFQTEFURk9STShJT1MpCiAjaW5jbHVkZSA8QXBwbGljYXRpb25TZXJ2
aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+Ci0jZWxzZQotI2luY2x1ZGUgPEltYWdlSU8vQ0dJ
bWFnZURlc3RpbmF0aW9uLmg+CiAjZW5kaWYKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisK
KyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSA8SW1hZ2VJTy9DR0ltYWdlRGVzdGluYXRpb24u
aD4KICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCkBA
IC01NDIsNiArNTQzLDQ3IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNVbnN1cHBvcnRlZFRl
eHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiB1bnN1cHBvcnRl
ZFRleHRNSU1FVHlwZXMtPmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0KIAorYm9vbCBNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIHJl
dHVybiBpc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShtaW1lVHlwZSkKKyAgICAgICAgfHwg
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi9qc29u
IikgLy8gUmVuZGVyIEpTT04gYXMgdGV4dC9wbGFpbi4KKyAgICAgICAgfHwgKG1pbWVUeXBlLnN0
YXJ0c1dpdGgoInRleHQvIiwgZmFsc2UpCisgICAgICAgICAgICAmJiAhZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ0ZXh0L2h0bWwiKQorICAgICAgICAgICAgJiYgIWVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC94bWwiKQorICAgICAg
ICAgICAgJiYgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAidGV4dC94
c2wiKSk7Cit9CisKKworc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRYTUxNSU1FVHlwZUNoYXIo
VUNoYXIgYykKK3sKKyAgICAvLyBWYWxpZCBjaGFyYWN0ZXJzIHBlciBSRkNzIDMwMjMgYW5kIDIw
NDU6IDAtOWEtekEtWl8tK34hJF57fXwuJSdgIyYqCisgICAgcmV0dXJuIGlzQVNDSUlBbHBoYW51
bWVyaWMoYykgfHwgYyA9PSAnIScgfHwgYyA9PSAnIycgfHwgYyA9PSAnJCcgfHwgYyA9PSAnJScg
fHwgYyA9PSAnJicgfHwgYyA9PSAnXCcnIHx8IGMgPT0gJyonIHx8IGMgPT0gJysnCisgICAgICAg
IHx8IGMgPT0gJy0nIHx8IGMgPT0gJy4nIHx8IGMgPT0gJ14nIHx8IGMgPT0gJ18nIHx8IGMgPT0g
J2AnIHx8IGMgPT0gJ3snIHx8IGMgPT0gJ3wnIHx8IGMgPT0gJ30nIHx8IGMgPT0gJ34nOworfQor
Citib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkKK3sKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUs
ICJ0ZXh0L3htbCIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAi
YXBwbGljYXRpb24veG1sIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5
cGUsICJ0ZXh0L3hzbCIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICghbWltZVR5
cGUuZW5kc1dpdGgoIit4bWwiLCBmYWxzZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHNpemVfdCBzbGFzaFBvc2l0aW9uID0gbWltZVR5cGUuZmluZCgnLycpOworICAgIC8vIFRha2Ug
aW50byBhY2NvdW50IHRoZSAnK3htbCcgZW5kaW5nIG9mIG1pbWVUeXBlLgorICAgIGlmIChzbGFz
aFBvc2l0aW9uID09IG5vdEZvdW5kIHx8ICFzbGFzaFBvc2l0aW9uIHx8IHNsYXNoUG9zaXRpb24g
PT0gbWltZVR5cGUubGVuZ3RoKCkgLSA1KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBBZ2FpbiwgbWltZVR5cGUgZW5kcyB3aXRoICcreG1sJywgbm8gbmVlZCB0byBjaGVjayB0aGUg
dmFsaWRpdHkgb2YgdGhhdCBzdWJzdHJpbmcuCisgICAgc2l6ZV90IG1pbWVMZW5ndGggPSBtaW1l
VHlwZS5sZW5ndGgoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1pbWVMZW5ndGggLSA0
OyArK2kpIHsKKyAgICAgICAgaWYgKCFpc1ZhbGlkWE1MTUlNRVR5cGVDaGFyKG1pbWVUeXBlW2ld
KSAmJiBpICE9IHNsYXNoUG9zaXRpb24pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNKYXZh
QXBwbGV0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICAvLyBTaW5jZSB0
aGlzIHNldCBpcyB2ZXJ5IGxpbWl0ZWQgYW5kIGlzIGxpa2VseSB0byByZW1haW4gc28gd2Ugd29u
J3QgYm90aGVyIHdpdGggdGhlIG92ZXJoZWFkCkBAIC01NzcsNyArNjE5LDcgQEAgYm9vbCBNSU1F
VHlwZVJlZ2lzdHJ5OjpjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAobWltZVR5cGUuc3RhcnRzV2l0aCgidGV4dC8i
LCBmYWxzZSkpCi0gICAgICAgIHJldHVybiAhTUlNRVR5cGVSZWdpc3RyeTo6aXNVbnN1cHBvcnRl
ZFRleHRNSU1FVHlwZShtaW1lVHlwZSk7CisgICAgICAgIHJldHVybiAhaXNVbnN1cHBvcnRlZFRl
eHRNSU1FVHlwZShtaW1lVHlwZSk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKaW5kZXggNGRjNzRlN2NiM2ZhODU0NmYx
ODhjNjJiMDdmZTMyMGUwOGZiOWQ4NS4uNjc0OTU0NmRlYmFiMDUzOTVlZjg1YWI4MmFmMDFiZDIy
ODUxYjc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTMsNyArMTMsNyBAQAogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCiAgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQogICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgogICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCiAgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCiAgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKQEAgLTIzLDEzICsyMywx
MSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIE1JTUVUeXBlUmVnaXN0cnlfaAot
I2RlZmluZSBNSU1FVHlwZVJlZ2lzdHJ5X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTYwLDE2ICs1OCwxMiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgaXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7
ICAgIAogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgbm9uLWltYWdlIE1JTUUgdHlwZSBpcyBz
dWl0YWJsZSBmb3IgYmVpbmcgbG9hZGVkIGFzIGEKLSAgICAvLyBkb2N1bWVudCBpbiBhIGZyYW1l
LiAgSW5jbHVkZXMgc3VwcG9ydGVkIEphdmFTY3JpcHQgTUlNRSB0eXBlcy4KKyAgICAvLyBkb2N1
bWVudCBpbiBhIGZyYW1lLiBJbmNsdWRlcyBzdXBwb3J0ZWQgSmF2YVNjcmlwdCBNSU1FIHR5cGVz
LgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkTm9uSW1hZ2VNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAogICAgIC8vIENoZWNrIHRvIHNlZSBpZiBh
IE1JTUUgdHlwZSBpcyBzdWl0YWJsZSBmb3IgYmVpbmcgbG9hZGVkIHVzaW5nIDx2aWRlbz4gYW5k
IDxhdWRpbz4uCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRNZWRp
YU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCi0gICAgLy8gQ2hlY2sgdG8gc2Vl
IGlmIHRoZSBNSU1FIHR5cGUgaXMgbm90IHN1aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgYXMgYSB0
ZXh0Ci0gICAgLy8gZG9jdW1lbnQgaW4gYSBmcmFtZS4gT25seSB2YWxpZCBmb3IgTUlNRSB0eXBl
cyBiZWdpbmluZyB3aXRoICJ0ZXh0LyIuCi0gICAgc3RhdGljIGJvb2wgaXNVbnN1cHBvcnRlZFRl
eHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKLQogICAgIC8vIENoZWNrIHRvIHNl
ZSBpZiBhIE1JTUUgdHlwZSBpcyBhIHZhbGlkIEphdmEgYXBwbGV0IG1pbWUgdHlwZS4KICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0phdmFBcHBsZXRNSU1FVHlwZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKTsKIApAQCAtODYsNiArODAsMTUgQEAgcHVibGljOgogICAgIC8vICJ0ZXh0
LyIgYW5kIGlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUoKSByZXR1cm5zIGZhbHNlLgogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKTsKIAorICAgIC8vIENoZWNrIHRvIHNlZSBpZiBhIE1JTUUgdHlwZSBpcyBvbmUgd2hl
cmUgYW4gWE1MIGRvY3VtZW50IHNob3VsZCBiZSBjcmVhdGVkCisgICAgLy8gcmF0aGVyIHRoYW4g
YW4gSFRNTCBkb2N1bWVudC4KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1hNTE1J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworCisgICAgLy8gVXNlZCBpbiBwYWdlIGxv
YWQgYWxnb3JpdGhtIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGRpc3BsYXkgYXMgYSB0ZXh0CisgICAg
Ly8gZG9jdW1lbnQgaW4gYSBmcmFtZS4gTm90IGEgZ29vZCBpZGVhIHRvIHVzZSBlbHNld2hlcmUs
IGJlY2F1c2UgdGhhdCBjb2RlCisgICAgLy8gbWFrZXMgdGhpcyB0ZXN0IGlzIGFmdGVyIG1hbnkg
b3RoZXIgdGVzdHMgYXJlIGRvbmUgb24gdGhlIE1JTUUgdHlwZS4KKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBpc1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKwog
ICAgIC8vIEZJWE1FOiBXZWJLaXQgY29kaW5nIHN0eWxlIHNheXMgd2Ugc2hvdWxkIG5vdCBoYXZl
IHRoZSB3b3JkICJnZXQiIGluIHRoZSBuYW1lcyBvZiB0aGVzZSBmdW5jdGlvbnMuCiAgICAgLy8g
RklYTUU6IFdvdWxkIGJlIG5pY2UgdG8gZmluZCBhIHdheSB0byBhdm9pZCBleHBvc2luZyB0aGVz
ZSBzZXRzLCBldmVuIHdvcnNlIGV4cG9zaW5nIG5vbi1jb25zdCByZWZlcmVuY2VzLgogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYgZ2V0U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKQEAgLTEwMCwxMCArMTAzLDEzIEBA
IHB1YmxpYzoKICAgICAvLyBGSVhNRTogV2ViS2l0IGNvZGluZyBzdHlsZSBzYXlzIHdlIHNob3Vs
ZCBub3QgaGF2ZSB0aGUgd29yZCAiZ2V0IiBpbiB0aGUgbmFtZSBvZiB0aGlzIGZ1bmN0aW9uLgog
ICAgIC8vIEZJWE1FOiBVbmNsZWFyIHdoYXQgdGhlIGNvbmNlcHQgb2YgYSBub3JtYWxpemVkIE1J
TUUgdHlwZSBpczsgY3VycmVudGx5IGl0J3MgYSBwbGF0Zm9ybS1zcGVjaWZpYyBub3Rpb24uCiAg
ICAgc3RhdGljIFN0cmluZyBnZXROb3JtYWxpemVkTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7CisK
K3ByaXZhdGU6CisgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBNSU1FIHR5cGUgaXMgbm90IHN1
aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgYXMgYSB0ZXh0CisgICAgLy8gZG9jdW1lbnQgaW4gYSBm
cmFtZS4gT25seSB2YWxpZCBmb3IgTUlNRSB0eXBlcyBiZWdpbmluZyB3aXRoICJ0ZXh0LyIuCisg
ICAgc3RhdGljIGJvb2wgaXNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKTsKIH07CiAKIGNvbnN0IFN0cmluZyYgZGVmYXVsdE1JTUVUeXBlKCk7CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIE1JTUVUeXBlUmVnaXN0cnlfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDc0MmYzODU1ODFjOTAwNmNhNDZmMGIwNDdhMjBhMWEw
NGQ1NmQ1ZjIuLmM0MjdhYmQ2ZDRhZjhhZDMzZGRjNjhkMTVkMGNjMzdiYTEyMWE4M2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJTVkdF
bGVtZW50LmgiCiAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKLSNpbmNsdWRlICJET01JbXBsZW1l
bnRhdGlvbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKQEAgLTM2MiwxMSArMzYxLDYgQEAgdm9pZCBTVkdF
bGVtZW50OjpyZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IoU1ZHUGFyc2luZ0Vycm9yIGVycm9y
LCBjb25zdCBRdWFsaWYKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotYm9vbCBTVkdF
bGVtZW50Ojppc1N1cHBvcnRlZChTdHJpbmdJbXBsKiBmZWF0dXJlLCBTdHJpbmdJbXBsKiB2ZXJz
aW9uKSBjb25zdAotewotICAgIHJldHVybiBET01JbXBsZW1lbnRhdGlvbjo6aGFzRmVhdHVyZShm
ZWF0dXJlLCB2ZXJzaW9uKTsKLX0KLQogdm9pZCBTVkdFbGVtZW50OjpyZW1vdmVkRnJvbShDb250
YWluZXJOb2RlJiByb290UGFyZW50KQogewogICAgIGJvb2wgd2FzSW5Eb2N1bWVudCA9IHJvb3RQ
YXJlbnQuaW5Eb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggZjNmZmU4MWU2
MmNmYTk0NjViMjdjMDNlMDlhMGY2NjhhMDY5YWJlYy4uMGYxYTRjMTFiM2RlMGJiNDU4YzcyOTE5
NGQ0OWE5MjZhMWFmZGJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC0xLDcgKzEsNyBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFpp
bW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAy
MDA5LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKQEAgLTIwLDEwICsyMCw4IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KICAqLwogCi0jaWZuZGVmIFNWR0VsZW1lbnRfaAotI2RlZmluZSBTVkdFbGVtZW50X2gKKyNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIlNW
R0FuaW1hdGVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiU1ZHTGFuZ1NwYWNlLmgiCiAjaW5jbHVkZSAi
U1ZHTG9jYXRhYmxlLmgiCkBAIC0zMSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiU1ZHUGFyc2luZ0Vy
cm9yLmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlJbmZvLmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxl
bWVudC5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCkBAIC04Niw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHN2Z0xvYWRFdmVudFRpbWVyRmlyZWQoKTsKICAgICB2aXJ0dWFsIFRpbWVyKiBzdmdMb2Fk
RXZlbnRUaW1lcigpOwogCi0gICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0qIHN1cHBsZW1lbnRh
bFRyYW5zZm9ybSgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSog
c3VwcGxlbWVudGFsVHJhbnNmb3JtKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdm9pZCBp
bnZhbGlkYXRlU1ZHQXR0cmlidXRlcygpIHsgZW5zdXJlVW5pcXVlRWxlbWVudERhdGEoKS5zZXRB
bmltYXRlZFNWR0F0dHJpYnV0ZXNBcmVEaXJ0eSh0cnVlKTsgfQogICAgIHZvaWQgaW52YWxpZGF0
ZVNWR1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKCkKQEAgLTE4MCw4ICsxNzcsNiBAQCBwcm90
ZWN0ZWQ6CiBwcml2YXRlOgogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlKFBz
ZXVkb0lkID0gTk9QU0VVRE8pIGZpbmFsOwogCi0gICAgdmlydHVhbCBib29sIGlzU3VwcG9ydGVk
KFN0cmluZ0ltcGwqIGZlYXR1cmUsIFN0cmluZ0ltcGwqIHZlcnNpb24pIGNvbnN0OwotCiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyVGFyZ2V0KCkgeyB9CiAKICAgICB2b2lkIGJ1aWxkUGVuZGluZ1Jl
c291cmNlc0lmTmVlZGVkKCk7CkBAIC0yNjQsNSArMjU5LDMgQEAgU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19CRUdJTihXZWJDb3JlOjpTVkdFbGVtZW50KQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQogCiAjaW5jbHVkZSAiU1ZHRWxlbWVudFR5cGVIZWxwZXJzLmgiCi0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggYzBiNWE1ODE3ZmRhOTc3MTQ2NmY0
N2EwMWVkNmNkMDA2NjY1NzY2MC4uNWQxZjNmYTNhM2NmNjM0NjljNzM2OGM5NDk5ZmM0NzQ4Y2Ux
ZmUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0yOCw3ICsyOCw2
IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiQ3Jvc3NP
cmlnaW5BY2Nlc3NDb250cm9sLmgiCiAjaW5jbHVkZSAiRE9NRm9ybURhdGEuaCIKLSNpbmNsdWRl
ICJET01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKQEAgLTM5LDYgKzM4LDcgQEAK
ICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlBhcnNlZENvbnRl
bnRUeXBlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgpAQCAtNTksNyArNTksNiBAQAog
I2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9K
U0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KLSNpbmNsdWRlIDx3dGYv
UmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC05
MzUsNyArOTM0LDcgQEAgU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZU1JTUVUeXBlKCkg
Y29uc3QKIAogYm9vbCBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VJc1hNTCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIERPTUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKHJlc3BvbnNlTUlNRVR5
cGUoKSk7CisgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5cGUocmVzcG9u
c2VNSU1FVHlwZSgpKTsKIH0KIAogaW50IFhNTEh0dHBSZXF1ZXN0OjpzdGF0dXMoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwCmluZGV4IDFiNDZiYjFjZjhkYmQ2ZmFlZTZkYzgwZWQxM2MzYjNhNTVkMWFmYTcu
LmE5OWY5ZGU3MjczYTU2MmUxNDZkOTM1MzI5MmEwNTAwYjQ0NDhkN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAK
QEAgLTEwNjQsNyArMTA2NCw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0RG9jdW1l
bnQoY29uc3QgeG1sQ2hhciogdmVyc2lvbiwgY29uc3QgeG1sQ2hhciogZW5jCiAgICAgaWYgKHZl
cnNpb24pCiAgICAgICAgIGRvY3VtZW50KCktPnNldFhNTFZlcnNpb24odG9TdHJpbmcodmVyc2lv
biksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIGlmIChzdGFuZGFsb25lICE9IFN0YW5kYWxv
bmVVbnNwZWNpZmllZCkKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0WE1MU3RhbmRhbG9uZShzdGFu
ZGFsb25lSW5mbyA9PSBTdGFuZGFsb25lWWVzLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAg
ICAgZG9jdW1lbnQoKS0+c2V0WE1MU3RhbmRhbG9uZShzdGFuZGFsb25lSW5mbyA9PSBTdGFuZGFs
b25lWWVzKTsKICAgICBpZiAoZW5jb2RpbmcpCiAgICAgICAgIGRvY3VtZW50KCktPnNldFhNTEVu
Y29kaW5nKHRvU3RyaW5nKGVuY29kaW5nKSk7CiAgICAgZG9jdW1lbnQoKS0+c2V0SGFzWE1MRGVj
bGFyYXRpb24odHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRE9N
SW1wbGVtZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRE9NSW1wbGVtZW50
YXRpb24ubW0KaW5kZXggZTBhMGMwNjZiZTE0M2E3NzFkNGUzNTg4MDU5MDAxOWUzZWQ3MDhiNS4u
MmEzZTkyZDVlODg0OTBkNGJmOTk5NjNkZTlhNmJlNjcwM2RiYTNhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvRE9NL0RPTURPTUltcGxlbWVudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0RPTS9ET01ET01JbXBsZW1lbnRhdGlvbi5tbQpAQCAtMzAsMTA1ICszMCw5MCBA
QAogI2ltcG9ydCAiRE9NRG9jdW1lbnRUeXBlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUhUTUxE
b2N1bWVudEludGVybmFsLmgiCiAjaW1wb3J0ICJET01JbnRlcm5hbC5oIgotI2ltcG9ydCAiRE9N
Tm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9ydCA8
V2ViQ29yZS9DU1NTdHlsZVNoZWV0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTUltcGxlbWVudGF0
aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Rv
Y3VtZW50VHlwZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MRG9jdW1lbnQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVh
ZENoZWNrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJD
b3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRl
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1hNTERvY3VtZW50Lmg+Ci0jaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+Ci0KLSNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkRPTUltcGxlbWVu
dGF0aW9uKj4oX2ludGVybmFsKQogCiBAaW1wbGVtZW50YXRpb24gRE9NSW1wbGVtZW50YXRpb24K
IAorc3RhdGljIGlubGluZSBXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbiYgdW53cmFwKERPTUlt
cGxlbWVudGF0aW9uJiB3cmFwcGVyKQoreworICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbio+KHdyYXBwZXIuX2ludGVybmFsKTsKK30KKwogLSAo
dm9pZClkZWFsbG9jCiB7CiAgICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRlT25N
YWluVGhyZWFkKFtET01JbXBsZW1lbnRhdGlvbiBjbGFzc10sIHNlbGYpKQogICAgICAgICByZXR1
cm47Ci0KICAgICBpZiAoX2ludGVybmFsKQotICAgICAgICBJTVBMLT5kZXJlZigpOworICAgICAg
ICB1bndyYXAoKnNlbGYpLmRlcmVmKCk7CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCiAtIChC
T09MKWhhc0ZlYXR1cmU6KE5TU3RyaW5nICopZmVhdHVyZSB2ZXJzaW9uOihOU1N0cmluZyAqKXZl
cnNpb24KIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
cmV0dXJuIElNUEwtPmhhc0ZlYXR1cmUoZmVhdHVyZSwgdmVyc2lvbik7CisgICAgcmV0dXJuIHVu
d3JhcCgqc2VsZikuaGFzRmVhdHVyZShmZWF0dXJlLCB2ZXJzaW9uKTsKIH0KIAotLSAoQk9PTClo
YXNGZWF0dXJlOihOU1N0cmluZyAqKWZlYXR1cmUgOihOU1N0cmluZyAqKXZlcnNpb24KKy0gKERP
TURvY3VtZW50VHlwZSAqKWNyZWF0ZURvY3VtZW50VHlwZTooTlNTdHJpbmcgKilxdWFsaWZpZWRO
YW1lIHB1YmxpY0lkOihOU1N0cmluZyAqKXB1YmxpY0lkIHN5c3RlbUlkOihOU1N0cmluZyAqKXN5
c3RlbUlkCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IHJldHVybiBJTVBMLT5oYXNGZWF0dXJlKGZlYXR1cmUsIHZlcnNpb24pOworICAgIGF1dG8gcmVz
dWx0ID0gdW53cmFwKCpzZWxmKS5jcmVhdGVEb2N1bWVudFR5cGUocXVhbGlmaWVkTmFtZSwgcHVi
bGljSWQsIHN5c3RlbUlkKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAg
ICByYWlzZURPTUV4Y2VwdGlvbihyZXN1bHQuZXhjZXB0aW9uQ29kZSgpKTsKKyAgICByZXR1cm4g
a2l0KHJlc3VsdC50YWtlUmV0dXJuVmFsdWUoKS5wdHIoKSk7CiB9CiAKLS0gKERPTURvY3VtZW50
VHlwZSAqKWNyZWF0ZURvY3VtZW50VHlwZTooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIHB1Ymxp
Y0lkOihOU1N0cmluZyAqKXB1YmxpY0lkIHN5c3RlbUlkOihOU1N0cmluZyAqKXN5c3RlbUlkCist
IChET01Eb2N1bWVudCAqKWNyZWF0ZURvY3VtZW50OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSBx
dWFsaWZpZWROYW1lOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgZG9jdHlwZTooRE9NRG9jdW1l
bnRUeXBlICopZG9jdHlwZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Eb2N1bWVu
dFR5cGUgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5jcmVhdGVEb2N1bWVudFR5cGUo
cXVhbGlmaWVkTmFtZSwgcHVibGljSWQsIHN5c3RlbUlkLCBlYykpKTsKLSAgICByYWlzZU9uRE9N
RXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgYXV0byByZXN1bHQgPSB1bndyYXAo
KnNlbGYpLmNyZWF0ZURvY3VtZW50KG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgY29yZShk
b2N0eXBlKSk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmFpc2VE
T01FeGNlcHRpb24ocmVzdWx0LmV4Y2VwdGlvbkNvZGUoKSk7CisgICAgcmV0dXJuIGtpdChyZXN1
bHQudGFrZVJldHVyblZhbHVlKCkucHRyKCkpOwogfQogCi0tIChET01Eb2N1bWVudFR5cGUgKilj
cmVhdGVEb2N1bWVudFR5cGU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5nICop
cHVibGljSWQgOihOU1N0cmluZyAqKXN5c3RlbUlkCistIChET01DU1NTdHlsZVNoZWV0ICopY3Jl
YXRlQ1NTU3R5bGVTaGVldDooTlNTdHJpbmcgKil0aXRsZSBtZWRpYTooTlNTdHJpbmcgKiltZWRp
YQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01Eb2N1bWVudFR5cGUgKnJlc3VsdCA9
IGtpdChXVEY6OmdldFB0cihJTVBMLT5jcmVhdGVEb2N1bWVudFR5cGUocXVhbGlmaWVkTmFtZSwg
cHVibGljSWQsIHN5c3RlbUlkLCBlYykpKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAg
IHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGtpdCh1bndyYXAoKnNlbGYpLmNyZWF0ZUNTU1N0
eWxlU2hlZXQodGl0bGUsIG1lZGlhKS5wdHIoKSk7CiB9CiAKLS0gKERPTURvY3VtZW50ICopY3Jl
YXRlRG9jdW1lbnQ6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIHF1YWxpZmllZE5hbWU6KE5TU3Ry
aW5nICopcXVhbGlmaWVkTmFtZSBkb2N0eXBlOihET01Eb2N1bWVudFR5cGUgKilkb2N0eXBlCist
IChET01IVE1MRG9jdW1lbnQgKiljcmVhdGVIVE1MRG9jdW1lbnQ6KE5TU3RyaW5nICopdGl0bGUK
IHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NRG9jdW1lbnQgKnJlc3VsdCA9IGtpdChX
VEY6OmdldFB0cihJTVBMLT5jcmVhdGVEb2N1bWVudChuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5h
bWUsIGNvcmUoZG9jdHlwZSksIGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4ga2l0KHVud3JhcCgqc2VsZikuY3JlYXRlSFRNTERv
Y3VtZW50KHRpdGxlKS5wdHIoKSk7CiB9CiAKLS0gKERPTURvY3VtZW50ICopY3JlYXRlRG9jdW1l
bnQ6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIDoo
RE9NRG9jdW1lbnRUeXBlICopZG9jdHlwZQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gRE9NSW1w
bGVtZW50YXRpb24gKERPTUltcGxlbWVudGF0aW9uRGVwcmVjYXRlZCkKKworLSAoQk9PTCloYXNG
ZWF0dXJlOihOU1N0cmluZyAqKWZlYXR1cmUgOihOU1N0cmluZyAqKXZlcnNpb24KIHsKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NRG9jdW1lbnQgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0
cihJTVBMLT5jcmVhdGVEb2N1bWVudChuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIGNvcmUo
ZG9jdHlwZSksIGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICByZXR1cm4gW3NlbGYgaGFzRmVhdHVyZTpmZWF0dXJlIHZlcnNpb246dmVyc2lv
bl07CiB9CiAKLS0gKERPTUNTU1N0eWxlU2hlZXQgKiljcmVhdGVDU1NTdHlsZVNoZWV0OihOU1N0
cmluZyAqKXRpdGxlIG1lZGlhOihOU1N0cmluZyAqKW1lZGlhCistIChET01Eb2N1bWVudFR5cGUg
KiljcmVhdGVEb2N1bWVudFR5cGU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5n
ICopcHVibGljSWQgOihOU1N0cmluZyAqKXN5c3RlbUlkCiB7Ci0gICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIERPTUNTU1N0eWxlU2hlZXQgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5j
cmVhdGVDU1NTdHlsZVNoZWV0KHRpdGxlLCBtZWRpYSwgZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVy
cm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBbc2VsZiBjcmVhdGVEb2N1
bWVudFR5cGU6cXVhbGlmaWVkTmFtZSBwdWJsaWNJZDpwdWJsaWNJZCBzeXN0ZW1JZDpzeXN0ZW1J
ZF07CiB9CiAKLS0gKERPTUNTU1N0eWxlU2hlZXQgKiljcmVhdGVDU1NTdHlsZVNoZWV0OihOU1N0
cmluZyAqKXRpdGxlIDooTlNTdHJpbmcgKiltZWRpYQorLSAoRE9NRG9jdW1lbnQgKiljcmVhdGVE
b2N1bWVudDooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5h
bWUgOihET01Eb2N1bWVudFR5cGUgKilkb2N0eXBlCiB7Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIERPTUNTU1N0eWxlU2hlZXQgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5jcmVh
dGVDU1NTdHlsZVNoZWV0KHRpdGxlLCBtZWRpYSwgZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVycm9y
KGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBbc2VsZiBjcmVhdGVEb2N1bWVu
dDpuYW1lc3BhY2VVUkkgcXVhbGlmaWVkTmFtZTpxdWFsaWZpZWROYW1lIGRvY3R5cGU6ZG9jdHlw
ZV07CiB9CiAKLS0gKERPTUhUTUxEb2N1bWVudCAqKWNyZWF0ZUhUTUxEb2N1bWVudDooTlNTdHJp
bmcgKil0aXRsZQorLSAoRE9NQ1NTU3R5bGVTaGVldCAqKWNyZWF0ZUNTU1N0eWxlU2hlZXQ6KE5T
U3RyaW5nICopdGl0bGUgOihOU1N0cmluZyAqKW1lZGlhCiB7Ci0gICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+
Y3JlYXRlSFRNTERvY3VtZW50KHRpdGxlKSkpOworICAgIHJldHVybiBbc2VsZiBjcmVhdGVDU1NT
dHlsZVNoZWV0OnRpdGxlIG1lZGlhOm1lZGlhXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvRE9NL0RPTURvY3VtZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvRE9N
L0RPTURvY3VtZW50Lm1tCmluZGV4IDRjZDliZmJmYTRlMTY2MWNjNzk1ZTY5YWFiYzA5NjQyOGQx
ZTAxYmIuLjU5ZjYxZjcyNzg4ODkzNGYzYzhhMzcyYzhlMTlkNzNkMjZjNGZhZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01Eb2N1bWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9ET00vRE9NRG9jdW1lbnQubW0KQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbXBvcnQgIkRP
TUhUTUxFbGVtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUhUTUxIZWFkRWxlbWVudEludGVy
bmFsLmgiCiAjaW1wb3J0ICJET01IVE1MU2NyaXB0RWxlbWVudEludGVybmFsLmgiCi0jaW1wb3J0
IDxXZWJDb3JlL0RPTUltcGxlbWVudGF0aW9uLmg+CiAjaW1wb3J0ICJET01JbnRlcm5hbC5oIgog
I2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01Ob2RlSXRlcmF0b3JJbnRl
cm5hbC5oIgpAQCAtMTQ3LDkgKzE0Niw3IEBAIC0gKEJPT0wpeG1sU3RhbmRhbG9uZQogLSAodm9p
ZClzZXRYbWxTdGFuZGFsb25lOihCT09MKW5ld1htbFN0YW5kYWxvbmUKIHsKICAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgSU1QTC0+c2V0WE1MU3RhbmRhbG9uZShuZXdYbWxTdGFuZGFsb25lLCBl
Yyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICBJTVBMLT5zZXRYTUxTdGFuZGFsb25l
KG5ld1htbFN0YW5kYWxvbmUpOwogfQogCiAtIChOU1N0cmluZyAqKWRvY3VtZW50VVJJCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBhY2FkOGRlM2RlM2I5MmEzMzk5NDI5
ODA2NjA4M2ZmMDViZDliMGMzLi5hNGFkNjc4MTRhZWQ3YTVmYzlkNTUxNjQ1MTVhN2IzNWM2Mzgy
NmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTYxLDcgKzYxLDYg
QEAKICNpbXBvcnQgPFdlYkNvcmUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaD4KICNpbXBvcnQgPFdl
YkNvcmUvQ2hyb21lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL0RPTUltcGxlbWVudGF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlTWFu
YWdlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CkBAIC04MCw2ICs3OSw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNOb2RlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVS
ZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NYWluRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5oPgpA
QCAtMTAxLDkgKzEwMSw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL21hcmt1cC5oPgogI2ltcG9ydCA8
V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5o
PgorI2ltcG9ydCA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW1wb3J0IDxydW50aW1lL0pTTG9j
ay5oPgogI2ltcG9ydCA8cnVudGltZS9KU09iamVjdC5oPgotI2ltcG9ydCA8cnVudGltZS9KU0NK
U1ZhbHVlLmg+CiAjaW1wb3J0IDx3dGYvQ3VycmVudFRpbWUuaD4KIAogI2lmIFBMQVRGT1JNKElP
UykKQEAgLTExMSw3ICsxMTEsNiBAQAogI2ltcG9ydCAiV2ViUmVzb3VyY2UuaCIKICNpbXBvcnQg
IldlYlVJS2l0RGVsZWdhdGUuaCIKICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbXBv
cnQgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvckNsaWVudC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9u
dC5oPgpAQCAtOTg4LDcgKzk4Nyw3IEBAIC0gKEJPT0wpX2NhblByb3ZpZGVEb2N1bWVudFNvdXJj
ZQogICAgIFN0cmluZyBtaW1lVHlwZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5sb2FkZXIoKS0+d3Jp
dGVyKCkubWltZVR5cGUoKTsKICAgICBQbHVnaW5EYXRhKiBwbHVnaW5EYXRhID0gZnJhbWUtPnBh
Z2UoKSA/ICZmcmFtZS0+cGFnZSgpLT5wbHVnaW5EYXRhKCkgOiAwOwogCi0gICAgaWYgKFdlYkNv
cmU6OkRPTUltcGxlbWVudGF0aW9uOjppc1RleHRNSU1FVHlwZShtaW1lVHlwZSkKKyAgICBpZiAo
V2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNUZXh0TUlNRVR5cGUobWltZVR5cGUpCiAgICAg
ICAgIHx8IEltYWdlOjpzdXBwb3J0c1R5cGUobWltZVR5cGUpCiAgICAgICAgIHx8IChwbHVnaW5E
YXRhICYmIHBsdWdpbkRhdGEtPnN1cHBvcnRzV2ViVmlzaWJsZU1pbWVUeXBlKG1pbWVUeXBlLCBQ
bHVnaW5EYXRhOjpBbGxQbHVnaW5zKSAmJiBmcmFtZS0+bG9hZGVyKCkuc3ViZnJhbWVMb2FkZXIo
KS5hbGxvd1BsdWdpbnMoKSkKICAgICAgICAgfHwgKHBsdWdpbkRhdGEgJiYgcGx1Z2luRGF0YS0+
c3VwcG9ydHNXZWJWaXNpYmxlTWltZVR5cGUobWltZVR5cGUsIFBsdWdpbkRhdGE6Ok9ubHlBcHBs
aWNhdGlvblBsdWdpbnMpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAppbmRleCA3OTkzYjk2ZDYzMjIz
MDY5MTY1YTkyYzUwN2UzNDU4MTQ1MTk5ZTYwLi5lMjI2Y2IyMTNiYjBiYmVlYjExMTYzMjZmNDFj
MTk1MDA1ZjY4ODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCkBAIC01OSw3ICs1OSw2IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRM
b2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvRE9NSW1wbGVtZW50YXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RPTVdpbmRvdy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9FdmVudC5oPgpAQCAtODEsNiArODAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTFBs
dWdJbkVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NV2luZG93Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJl
Z2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL01vdXNlUmVsYXRlZEV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgpAQCAtMTM4NSw3ICsxMzg1LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6Y2FuUHJvdmlkZURv
Y3VtZW50U291cmNlKGJvb2wqIHJlc3VsdCkKICAgICAgICAgQlN0cmluZyBtaW1lVHlwZUJTdHI7
CiAgICAgICAgIGlmIChTVUNDRUVERUQodXJsUmVzcG9uc2UtPk1JTUVUeXBlKCZtaW1lVHlwZUJT
dHIpKSkgewogICAgICAgICAgICAgU3RyaW5nIG1pbWVUeXBlKG1pbWVUeXBlQlN0ciwgU3lzU3Ry
aW5nTGVuKG1pbWVUeXBlQlN0cikpOwotICAgICAgICAgICAgKnJlc3VsdCA9IG1pbWVUeXBlID09
ICJ0ZXh0L2h0bWwiIHx8IFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBl
KG1pbWVUeXBlKTsKKyAgICAgICAgICAgICpyZXN1bHQgPSBtaW1lVHlwZSA9PSAidGV4dC9odG1s
IiB8fCBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1hNTE1JTUVUeXBlKG1pbWVUeXBlKTsK
ICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gaHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViRnJhbWVQcm94eS5jcHAKaW5kZXggMTViOGUyOGYyMzAwOTI5ZDIyMGU3MzNiZmYwMDYz
MDBkMTNhYWRiZi4uY2Q3MDY5ODU4MjY3NjcyNGRmMTA3NDk5YmM4OTMxNTc4YzNjYTAzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcApAQCAtMzIsNyArMzIs
NiBAQAogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9ET01J
bXBsZW1lbnRhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtMTE3LDE1
ICsxMTYsMTMgQEAgYm9vbCBXZWJGcmFtZVByb3h5Ojppc0Rpc3BsYXlpbmdTdGFuZGFsb25lTWVk
aWFEb2N1bWVudCgpIGNvbnN0CiAKIGJvb2wgV2ViRnJhbWVQcm94eTo6aXNEaXNwbGF5aW5nTWFy
a3VwRG9jdW1lbnQoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIHNob3VsZCBi
ZSBtb3ZlZCB0byBzb21ld2hlcmUgaW4gV2ViQ29yZS4KLSAgICByZXR1cm4gbV9NSU1FVHlwZSA9
PSAidGV4dC9odG1sIiB8fCBtX01JTUVUeXBlID09ICJpbWFnZS9zdmcreG1sIiB8fCBtX01JTUVU
eXBlID09ICJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiIHx8IERPTUltcGxlbWVudGF0aW9uOjpp
c1hNTE1JTUVUeXBlKG1fTUlNRVR5cGUpOworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBh
IGNhbGwgdG8gYSBzaW5nbGUgTUlNRVR5cGVSZWdpc3RyeSBmdW5jdGlvbjsgYWRkaW5nIGEgbmV3
IG9uZSBpZiBuZWVkZWQuCisgICAgLy8gRklYTUU6IFRoaXMgaXMgZG9pbmcgY2FzZSBzZW5zaXRp
dmUgY29tcGFyaXNvbnMgb24gTUlNRSB0eXBlcywgc2hvdWxkIGJlIHVzaW5nIEFTQ0lJIGNhc2Ug
aW5zZW5zaXRpdmUgaW5zdGVhZC4KKyAgICByZXR1cm4gbV9NSU1FVHlwZSA9PSAidGV4dC9odG1s
IiB8fCBtX01JTUVUeXBlID09ICJpbWFnZS9zdmcreG1sIiB8fCBtX01JTUVUeXBlID09ICJhcHBs
aWNhdGlvbi94LXdlYmFyY2hpdmUiIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzWE1MTUlNRVR5cGUo
bV9NSU1FVHlwZSk7CiB9CiAKIGJvb2wgV2ViRnJhbWVQcm94eTo6aXNEaXNwbGF5aW5nUERGRG9j
dW1lbnQoKSBjb25zdAogewotICAgIGlmIChtX01JTUVUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCiAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0
U2NyaXB0TUlNRVR5cGUobV9NSU1FVHlwZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NSW1w
bGVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01JbXBsZW1lbnRhdGlvbi5jcHAKaW5kZXggM2UwNmMx
YTA3OTAxYjE5Nzk5MzExNjcwMmU1YWM2YjgzYmY2MjAyNC4uNDljZDVjZTA4YmIzYTViMTdkYzkz
MjExZDZmZmI1MWY3YTQ3NGRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01JbXBsZW1lbnRhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01ET01JbXBsZW1lbnRhdGlvbi5jcHAKQEAgLTEzMSwxMyArMTMxLDEyIEBA
IFdlYktpdERPTURvY3VtZW50VHlwZSogd2Via2l0X2RvbV9kb21faW1wbGVtZW50YXRpb25fY3Jl
YXRlX2RvY3VtZW50X3R5cGUoV2ViS2l0CiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVkUXVhbGlm
aWVkTmFtZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChxdWFsaWZpZWROYW1lKTsKICAgICBXVEY6
OlN0cmluZyBjb252ZXJ0ZWRQdWJsaWNJZCA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChwdWJsaWNJ
ZCk7CiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVkU3lzdGVtSWQgPSBXVEY6OlN0cmluZzo6ZnJv
bVVURjgoc3lzdGVtSWQpOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IFJlZlB0cjxXZWJDb3JlOjpEb2N1bWVudFR5cGU+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0
cihpdGVtLT5jcmVhdGVEb2N1bWVudFR5cGUoY29udmVydGVkUXVhbGlmaWVkTmFtZSwgY29udmVy
dGVkUHVibGljSWQsIGNvbnZlcnRlZFN5c3RlbUlkLCBlYykpOwotICAgIGlmIChlYykgewotICAg
ICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKKyAgICBh
dXRvIHJlc3VsdCA9IGl0ZW0tPmNyZWF0ZURvY3VtZW50VHlwZShjb252ZXJ0ZWRRdWFsaWZpZWRO
YW1lLCBjb252ZXJ0ZWRQdWJsaWNJZCwgY29udmVydGVkU3lzdGVtSWQpOworICAgIGlmIChyZXN1
bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2Ny
aXB0aW9uIGVjZGVzYyhyZXN1bHQuZXhjZXB0aW9uQ29kZSgpKTsKICAgICAgICAgZ19zZXRfZXJy
b3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rl
c2MuY29kZSwgZWNkZXNjLm5hbWUpOwogICAgIH0KLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29i
amVjdFJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6a2l0KHJlc3VsdC50YWtlUmV0
dXJuVmFsdWUoKS5wdHIoKSk7CiB9CiAKIFdlYktpdERPTURvY3VtZW50KiB3ZWJraXRfZG9tX2Rv
bV9pbXBsZW1lbnRhdGlvbl9jcmVhdGVfZG9jdW1lbnQoV2ViS2l0RE9NRE9NSW1wbGVtZW50YXRp
b24qIHNlbGYsIGNvbnN0IGdjaGFyKiBuYW1lc3BhY2VVUkksIGNvbnN0IGdjaGFyKiBxdWFsaWZp
ZWROYW1lLCBXZWJLaXRET01Eb2N1bWVudFR5cGUqIGRvY3R5cGUsIEdFcnJvcioqIGVycm9yKQpA
QCAtMTUxLDEzICsxNTAsMTIgQEAgV2ViS2l0RE9NRG9jdW1lbnQqIHdlYmtpdF9kb21fZG9tX2lt
cGxlbWVudGF0aW9uX2NyZWF0ZV9kb2N1bWVudChXZWJLaXRET01ET01JbXAKICAgICBXVEY6OlN0
cmluZyBjb252ZXJ0ZWROYW1lc3BhY2VVUkkgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgobmFtZXNw
YWNlVVJJKTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRRdWFsaWZpZWROYW1lID0gV1RGOjpT
dHJpbmc6OmZyb21VVEY4KHF1YWxpZmllZE5hbWUpOwogICAgIFdlYkNvcmU6OkRvY3VtZW50VHlw
ZSogY29udmVydGVkRG9jdHlwZSA9IFdlYktpdDo6Y29yZShkb2N0eXBlKTsKLSAgICBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnQ+IGdv
YmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5jcmVhdGVEb2N1bWVudChjb252ZXJ0ZWRO
YW1lc3BhY2VVUkksIGNvbnZlcnRlZFF1YWxpZmllZE5hbWUsIGNvbnZlcnRlZERvY3R5cGUsIGVj
KSk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlw
dGlvbiBlY2Rlc2MoZWMpOworICAgIGF1dG8gcmVzdWx0ID0gaXRlbS0+Y3JlYXRlRG9jdW1lbnQo
Y29udmVydGVkTmFtZXNwYWNlVVJJLCBjb252ZXJ0ZWRRdWFsaWZpZWROYW1lLCBjb252ZXJ0ZWRE
b2N0eXBlKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MocmVzdWx0LmV4Y2VwdGlvbkNvZGUo
KSk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJp
bmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKICAgICB9Ci0gICAg
cmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOworICAgIHJldHVybiBXZWJL
aXQ6OmtpdChyZXN1bHQudGFrZVJldHVyblZhbHVlKCkucHRyKCkpOwogfQogCiBXZWJLaXRET01D
U1NTdHlsZVNoZWV0KiB3ZWJraXRfZG9tX2RvbV9pbXBsZW1lbnRhdGlvbl9jcmVhdGVfY3NzX3N0
eWxlX3NoZWV0KFdlYktpdERPTURPTUltcGxlbWVudGF0aW9uKiBzZWxmLCBjb25zdCBnY2hhciog
dGl0bGUsIGNvbnN0IGdjaGFyKiBtZWRpYSwgR0Vycm9yKiogZXJyb3IpCkBAIC0xNzAsMTIgKzE2
OCw3IEBAIFdlYktpdERPTUNTU1N0eWxlU2hlZXQqIHdlYmtpdF9kb21fZG9tX2ltcGxlbWVudGF0
aW9uX2NyZWF0ZV9jc3Nfc3R5bGVfc2hlZXQoV2ViCiAgICAgV2ViQ29yZTo6RE9NSW1wbGVtZW50
YXRpb24qIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpTdHJpbmcgY29udmVy
dGVkVGl0bGUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodGl0bGUpOwogICAgIFdURjo6U3RyaW5n
IGNvbnZlcnRlZE1lZGlhID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KG1lZGlhKTsKLSAgICBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q1NTU3R5bGVT
aGVldD4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPmNyZWF0ZUNTU1N0eWxlU2hl
ZXQoY29udmVydGVkVGl0bGUsIGNvbnZlcnRlZE1lZGlhLCBlYykpOwotICAgIGlmIChlYykgewot
ICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKLSAg
ICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VC
S0lUX0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOwotICAgIH0KKyAgICBSZWZQdHI8
V2ViQ29yZTo6Q1NTU3R5bGVTaGVldD4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0t
PmNyZWF0ZUNTU1N0eWxlU2hlZXQoY29udmVydGVkVGl0bGUsIGNvbnZlcnRlZE1lZGlhKSk7CiAg
ICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnQuY3BwCmluZGV4IDI1OTFmMjIx
ZmVjYWNjNDNlN2YwZjcyMGNjODlkYjcyNGRlZjI2ZDMuLjQ1MzI5NjA2OTNiODYzODZjZTdiODk5
ZWExY2IwYzQxOThiZjZmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NRG9jdW1lbnQuY3BwCkBAIC0xNDk3LDEzICsxNDk3LDcgQEAgdm9pZCB3ZWJraXRfZG9tX2Rv
Y3VtZW50X3NldF94bWxfc3RhbmRhbG9uZShXZWJLaXRET01Eb2N1bWVudCogc2VsZiwgZ2Jvb2xl
YW4gdmEKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKHNlbGYpKTsKICAgICBnX3JldHVy
bl9pZl9mYWlsKCFlcnJvciB8fCAhKmVycm9yKTsKLSAgICBXZWJDb3JlOjpEb2N1bWVudCogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBpdGVtLT5zZXRYTUxTdGFuZGFsb25lKHZhbHVlLCBlYyk7Ci0gICAgaWYgKGVjKSB7
Ci0gICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOwot
ICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJX
RUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7Ci0gICAgfQorICAgIFdlYktp
dDo6Y29yZShzZWxmKS0+c2V0WE1MU3RhbmRhbG9uZSh2YWx1ZSk7CiB9CiAKIGdjaGFyKiB3ZWJr
aXRfZG9tX2RvY3VtZW50X2dldF9kb2N1bWVudF91cmkoV2ViS2l0RE9NRG9jdW1lbnQqIHNlbGYp
Cg==
</data>
<flag name="review"
          id="311282"
          type_id="1"
          status="+"
          setter="rniwa"
    />
    <flag name="commit-queue"
          id="311283"
          type_id="3"
          status="-"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>