<?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>68468</bug_id>
          
          <creation_ts>2011-09-20 13:53:28 -0700</creation_ts>
          <short_desc>WIP: Implement Mouse Lock API</short_desc>
          <delta_ts>2011-10-20 16:46:00 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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="Vincent Scheib">scheib</reporter>
          <assigned_to name="Vincent Scheib">scheib</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>fishd</cc>
    
    <cc>gregsimon</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>ojan</cc>
    
    <cc>scottmg</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>470308</commentid>
    <comment_count>0</comment_count>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2011-09-20 13:53:28 -0700</bug_when>
    <thetext>The Mouse Lock specification http://goo.gl/9G8pd defines an API that provides scripted access to raw mouse movement data while locking the target of mouse events to a single element and removing the cursor from view. This is an essential input mode for certain classes of applications, especially first person perspective 3D applications and 3D modelling software.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470489</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-20 17:11:59 -0700</bug_when>
    <thetext>Please e-mail webkit-dev when you are ready to discuss whether this API should be implemented in WebKit, as well as some level of detail for the implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470580</commentid>
    <comment_count>2</comment_count>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2011-09-20 20:45:01 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Please e-mail webkit-dev when you are ready to discuss whether this API should be implemented in WebKit, as well as some level of detail for the implementation.

https://lists.webkit.org/pipermail/webkit-dev/2011-September/017945.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471843</commentid>
    <comment_count>3</comment_count>
      <attachid>108394</attachid>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2011-09-22 13:53:53 -0700</bug_when>
    <thetext>Created attachment 108394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471847</commentid>
    <comment_count>4</comment_count>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2011-09-22 13:56:25 -0700</bug_when>
    <thetext>Some initial changes to .idl, adding compile/runtime switch, etc. Accessing .movementX/Y works in a prototype that forces mouse lock mode. Plumbing of methods (lockMouse, mouseLocked, ...) still TBD.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471848</commentid>
    <comment_count>5</comment_count>
      <attachid>108394</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-22 13:58:49 -0700</bug_when>
    <thetext>Comment on attachment 108394
Patch

I&apos;m still unsure if it makes sense to add code for non-fullscreen mode at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483750</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-13 21:46:31 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 108394 [details])
&gt; I&apos;m still unsure if it makes sense to add code for non-fullscreen mode at this point.

Alexey, I thought we had already went over this issue with you.  Why do we need to repeat this discussion?

To summarize past discussions:  The API is designed so as to allow the embedder control over the policy for when this API may be used.  It becomes a UA policy decision.  We have discussed a UA policy that would only permit mouse lock when in fullscreen mode, but the API is not limited to fullscreen mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483790</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-13 23:18:53 -0700</bug_when>
    <thetext>Darin, please note that my latest comment on the bug was several weeks ago, right when we were having this discussion on webkit-dev.

However, the discussion was not constructive. You have indicated that you are not confident in having a decent solution for non-fullscreen case, and then asserted that you want to expose general case in IDL regardless.

&gt; To summarize past discussions:  The API is designed so as to allow the embedder control over the policy for when this API may be used.

So, you are proposing yet another fragmentation point for WebKit based browsers, and for the Web in general. Locking the mouse in non-fullscreen mode will work in some browsers, but not in others. It should not come as a surprise that this is frowned upon.

Considering UI conventions of different platforms is a very important step in creating specifications for the open Web.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483800</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-13 23:48:45 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Darin, please note that my latest comment on the bug was several weeks ago, right when we were having this discussion on webkit-dev.

Ah, I did indeed miss that.  Thanks for pointing that out.


&gt; However, the discussion was not constructive. You have indicated that you are not confident in having a decent solution for non-fullscreen case, and then asserted that you want to expose general case in IDL regardless.
&gt;
&gt; &gt; To summarize past discussions:  The API is designed so as to allow the embedder control over the policy for when this API may be used.
&gt; 
&gt; So, you are proposing yet another fragmentation point for WebKit based browsers, and for the Web in general. Locking the mouse in non-fullscreen mode will work in some browsers, but not in others. It should not come as a surprise that this is frowned upon.

We are obviously very invested in the open web platform.  It would be ideal to arrive at a solution that becomes a web standard.


&gt; Considering UI conventions of different platforms is a very important step in creating specifications for the open Web.

WebKit does not implement any browser policy UI as far as I can tell.

Perhaps it would be helpful if you could explain what you would change about the API if indeed it only ever worked in fullscreen mode?  As far as I can tell, it just so happens that the API we like would support both fullscreen and non-fullscreen modes.

We like that this leaves open the possibility of exploring a non-fullscreen mode in the future.  We are moving conservatively by only adding fullscreen mode support for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484345</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-14 15:15:09 -0700</bug_when>
    <thetext>&gt;Perhaps it would be helpful if you could explain what you would change about the API if indeed it only ever worked in fullscreen mode?  As far as I can tell, it just so happens that the API we like would support both fullscreen and non-fullscreen modes.

One thing that stands out to me is MouseLockable interface. Wouldn&apos;t we be better off with navigator.lockMouse(), which could potentially be extended to navigator.lockMouse(in Element target) later?

I see that providing an element helps dispatch events. Yet the spec is not consistent anyway - some notifications use DOM events, while others use callback functions.

On an unrelated theme, the definition of movementX/movementY seems too platform dependent to me. The spec says &quot;movementX/Y must continue to provide the change in position of the mouse as when the mouse is unlocked&quot;. That&apos;s likely not what will work for games given dynamic acceleration on some platforms. Such acceleration would yield unacceptable results if applied to FPS shooter movement control.

I intend to review the spec more closely soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486308</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-18 14:26:39 -0700</bug_when>
    <thetext>The above comment has most of what I had to say upon closer review. Smaller rough edges can be polished during the course of cross-platform and cross-browser implementation, and are not worth discussing here. My bigger new comments are below.

I&apos;m surprised by &quot;jog movement over spinner controls&quot; use case. Doesn&apos;t that work already? E.g. I can drag the mouse outside of browser window, while &lt;input type=range&gt; will continue to respond. Getting use cases right seems fairly important.

Solution for &quot;Synthetic cursor interaction with HTML DOM UI&quot; use case appears to directly contradict HTML5. Synthetic mouse events should not behave like normal ones, it&apos;s a bug in WebKit when they do.

I see that the spec used to say something about touch events, and no longer does. Regardless of what it used to say, it seems critically important to explain what happens with mouse events that are synthesized from touch events on mobile devices. Should touch capable devices such as phones and tablets just avoid supporting MouseLock?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487332</commentid>
    <comment_count>11</comment_count>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2011-10-19 22:20:15 -0700</bug_when>
    <thetext>Thanks Alexey,

Your comments all seem spec related so I&apos;ve addressed them on the spec&apos;s working group list, public-webevents
http://lists.w3.org/Archives/Public/public-webevents/2011OctDec/0066.html

Do you have any reason that we can not start landing work behind a flag?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487335</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-19 22:24:20 -0700</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487340</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-19 22:54:56 -0700</bug_when>
    <thetext>Is your ultimate goal to land attachment 108394 without addressing any feedback? Otherwise, I&apos;m not sure why you marked it for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487349</commentid>
    <comment_count>14</comment_count>
      <attachid>108394</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-19 23:28:30 -0700</bug_when>
    <thetext>Comment on attachment 108394
Patch

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

Chromium WebKit API changes all look kosher to me!

&gt; Source/WebCore/dom/Document.idl:249
&gt; +        FIXME: Need to sort out how to make this compile:

It might be better to separate the Document* changes out into a separate
patch since there isn&apos;t much here anyways and it has this signature issue
to still resolve.

&gt; Source/WebCore/dom/MouseEvent.idl:29
&gt; +        readonly attribute long             movementX;

I&apos;d probably want to vendor prefix these attributes until they are finalized.

&gt; Source/WebCore/dom/MouseEvent.idl:49
&gt; +                                           in [Optional=CallWithDefaultValue] long movementX,

ditto

&gt; Source/WebCore/dom/WheelEvent.h:54
&gt; +#if ENABLE(MOUSE_LOCK_API)

It might be nicer to avoid these #ifdefs and just unconditionally give these internal
data structures the extra fields.  However, that would imply expanding these structures
for ports that haven&apos;t enabled this feature yet.  I don&apos;t know how much that matters.
I sort of prefer the cleanliness of less conditionally compiled code :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487350</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-19 23:32:14 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Is your ultimate goal to land attachment 108394 [details] without addressing any feedback? Otherwise, I&apos;m not sure why you marked it for review.

Did you notice the link Vincent included in comment #11?  He produced a very detailed and thoughtful reply to your concerns.  Perhaps you could reply to that in return?

I believe Vincent posted the patch to get further feedback so that he could make improvements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487384</commentid>
    <comment_count>16</comment_count>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2011-10-20 00:41:44 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Is your ultimate goal to land attachment 108394 [details] without addressing any feedback? Otherwise, I&apos;m not sure why you marked it for review.

Hey (In reply to comment #15)
&gt; (In reply to comment #13)
&gt; &gt; Is your ultimate goal to land attachment 108394 [details] [details] without addressing any feedback? Otherwise, I&apos;m not sure why you marked it for review.
&gt; 
&gt; Did you notice the link Vincent included in comment #11?  He produced a very detailed and thoughtful reply to your concerns.  Perhaps you could reply to that in return?
&gt; 
&gt; I believe Vincent posted the patch to get further feedback so that he could make improvements.

Yes, as I requested on webkit-dev where I introduced this feature, I&apos;m looking to make progress on the technical details of implementation, and was seeking review of the code for that purpose.

Alexey, I haven&apos;t heard you raise a concern not already discussed in the public-webapps thread and codified in the draft spec and FAQs. If you have any issues please raise them explicitly. You also have not proposed why we can not proceed with development behind a flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487854</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-20 13:56:41 -0700</bug_when>
    <thetext>I do not know what you mean when asking for &quot;technical feedback&quot;.

I started drafting a response to you working group posting, but it&apos;s very difficult to get rid of the feeling that you are just trying to overcome a perceived obstacle, not to come up with a spec that can be implemented on multiple platforms with their distinct UX conventions.

I&apos;ll give my answers, but please excuse me if these seem impatient in their turn.

&gt; It is reasonable for the application to accept text input to an element that is different than where mouse events are being dispatched.

I don&apos;t really see what this has to do with keyboard events. They&apos;ll still got to a focused element whether mouse is locked or not, correct? This doesn&apos;t mean that mouse events need a custom target.

&gt;&gt; - Why document.lockMouse() instead of navigator.lockMouse()?
&gt; Is there a reason navigator would be more appropriate?

Sure, you wouldn&apos;t need to worry about which subframe&apos;s document to call it on.

&gt; Callbacks for the asynchronous success or failure of a call to lockMouse serve the need without adding unnecessary new events, and is a pattern already established in recent specs such as geolocation. Are there any issues with this? You haven&apos;t identified any inconsistencies.

I&apos;m not sure how to answer this. I said that some events are delivered as events, and others as callbacks. How is that &quot;you haven&apos;t identified any inconsistencies&quot;?

&gt; You do not believe a click event should be able to be dispatched from JS to another element?

What I &quot;believe&quot; is that synthetic events do not trigger a default action per HTML5. It&apos;s implicit in the spec, but you can see bug 64580 comments 79 and 80 for a succinct explanation from Hixie.

You can certainly dispatch a click event on a button, and you can handle it in a custom event handler, but the button itself won&apos;t do anything in response.

&gt; You can not today drag a job control in a single direction with unlimited input.

OK, I better understand this use case now. It&apos;s really questionable if this kind of functionality should be available to web applications at all.

&gt; On the topic of acceleration and calibration, there seems to only be speculation that this is harmful.

I remember seeing an FPS shooter game that didn&apos;t compensate for mouse acceleration, it was basically unplayable. It seems obvious that acceleration that&apos;s good for linear movement won&apos;t be as good when applied to controlling 3D view.

&gt; Users who desire no acceleration can configure it the same way they do with games today (system configuration, drivers, or in game)

Are you really suggesting that users will manually tweak global system settings before playing a 3D game in a browser, and change them back afterwards?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487871</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-20 14:10:36 -0700</bug_when>
    <thetext>In addition, I find it extremely annoying that you landed a part of this patch today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487994</commentid>
    <comment_count>19</comment_count>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2011-10-20 16:46:00 -0700</bug_when>
    <thetext>Alexey, your contributions to the spec discussion are welcome and I&apos;m
pleased to see they are not an obstacle.

We announced this feature over a month ago and no concern around
implementing the spec in webkit has been raised. I hope to continue
discussing your finer points as we move forward breaking the work down
to smaller patches to focus discussion.

I&apos;ll continue to address your specification questions on the webevents
mailing list to make them accessible for other parties interested in
the spec.
http://lists.w3.org/Archives/Public/public-webevents/2011OctDec/0070.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108394</attachid>
            <date>2011-09-22 13:53:53 -0700</date>
            <delta_ts>2011-10-19 23:28:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68468-20110922135352.patch</filename>
            <type>text/plain</type>
            <size>62467</size>
            <attacher name="Vincent Scheib">scheib</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUwODIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDUw
OTUyNTg3NWM2OTY4MmJmY2NkMWU5YzYzYjEwMmI1ODFlNWJjYWEuLmIxMjU4NjA2ZDAxM2QwODBj
MzZmNDg5ZmEzZDRjMzM0ZjFkOTNmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDExLTA5LTIyICBWaW5jZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgV0lQIE1vdXNlIExvY2sgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODQ2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTEtMDktMTMg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGVjdWxhdGl2ZUpJ
VDo6c2hvdWxkU3BlY3VsYXRlSW50ZWdlcihOb2RlSW5kZXgsIE5vZGVJbmRleCkgc2hvdWxkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKaW5kZXggOTQ5OWNkYThjZWE3NTQ2Njg0ZjJi
NzQ3ZTQ3MmIxZjcyMDg1NTkzOC4uYjI4ODM2NDFmM2EzY2RhMmQ3NmUxMWIyNzNhMGQ4ODE1MTEx
MDk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaApAQCAtOTIzLDYgKzkyMywx
MCBAQAogI2RlZmluZSBFTkFCTEVfRlVMTFNDUkVFTl9BUEkgMAogI2VuZGlmCiAKKyNpZiAhZGVm
aW5lZChFTkFCTEVfTU9VU0VfTE9DS19BUEkpCisjZGVmaW5lIEVOQUJMRV9NT1VTRV9MT0NLX0FQ
SSAwCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKFdURl9VU0VfSlNWQUxVRTY0KSAmJiAhZGVmaW5l
ZChXVEZfVVNFX0pTVkFMVUUzMl82NCkKICNpZiAoQ1BVKFg4Nl82NCkgJiYgKE9TKFVOSVgpIHx8
IE9TKFdJTkRPV1MpKSkgXAogICAgIHx8IChDUFUoSUE2NCkgJiYgIUNQVShJQTY0XzMyKSkgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDIyNjM4MmYzMzc0NjA2NmQ1ZjkwNDFiOTkxMjI0ODZhYzQ2M2U5NDMuLmUz
ZGRhZDdlNjkxMWQ3OWQwNzk1NzhlZDA2ZWZiNTBiM2I3Njc3ODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MCBAQAorMjAxMS0wOS0yMiAgVmluY2VudCBTY2hlaWIgIDxzY2hlaWJAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFdJUCBNb3VzZSBMb2NrIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0NjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5jcHA6CisgICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3
ZWJraXRNb3VzZUxvY2tBUElFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNldFdlYmtpdE1vdXNlTG9ja0FQSUVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0TG9ja01vdXNlRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRVbmxvY2tNb3Vz
ZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Vi
a2l0TW91c2VMb2NrZWRFbmFibGVkKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdExvY2tNb3VzZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6d2Via2l0VW5sb2NrTW91c2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OndlYmtpdE1vdXNlTG9ja2VkKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAg
ICAgICogZG9tL0VsZW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAg
ICAgICogZG9tL01vdXNlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6TW91c2VFdmVudDo6d2hpY2gpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6
dG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6OmZyb21FbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZE1vdXNlRXZlbnQ6OlNpbXVsYXRlZE1vdXNlRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudERpc3BhdGNoTWVkaWF0b3I6OmRpc3Bh
dGNoRXZlbnQpOgorICAgICAgICAqIGRvbS9Nb3VzZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpNb3VzZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAqIGRvbS9Nb3VzZUV2ZW50LmlkbDoKKyAg
ICAgICAgKiBkb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW91
c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KToKKyAgICAgICAgKiBkb20vTW91c2VS
ZWxhdGVkRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojptb3Zl
bWVudFgpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6Om1vdmVtZW50WSk6
CisgICAgICAgICogZG9tL1RvdWNoRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hF
dmVudDo6VG91Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEV2ZW50Ojppbml0VG91
Y2hFdmVudCk6CisgICAgICAgICogZG9tL1doZWVsRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2hlZWxFdmVudDo6V2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50
Ojppbml0V2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50Ojppbml0V2Vi
S2l0V2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50RGlzcGF0Y2hNZWRp
YXRvcjo6V2hlZWxFdmVudERpc3BhdGNoTWVkaWF0b3IpOgorICAgICAgICAqIGRvbS9XaGVlbEV2
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50OjpjcmVhdGUpOgorICAgICAgICAq
IGRvbS9XaGVlbEV2ZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5p
bjoKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNb3VzZUV2ZW50KToKKyAgICAg
ICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OmRpc3BhdGNoRHJhZ0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6
aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2Vu
ZENvbnRleHRNZW51RXZlbnRGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpmYWtlTW91c2VNb3ZlRXZlbnRUaW1lckZpcmVkKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICog
cGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldE1vdXNlTG9j
a0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6Om1vdXNlTG9ja0VuYWJsZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtTW91c2VFdmVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50Ojptb3ZlbWVudFgpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1Nb3VzZUV2ZW50Ojptb3ZlbWVudFkpOgorICAgICAgICAqIHBsYXRmb3JtL1Bs
YXRmb3JtV2hlZWxFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50
OjpQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2
ZW50Ojptb3ZlbWVudFgpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50Ojpt
b3ZlbWVudFkpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyOjpoYW5kbGVHZXN0dXJlRXZlbnQp
OgorCiAyMDExLTA5LTE0ICBCZW4gV2VsbHMgIDxiZW53ZWxsc0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgTGFyZ2UgY2FudmFzIGZpbGxzIHNob3VsZCBub3QgY3Jhc2ggb3IgY3JlYXRlIHVubmVj
ZXNzYXJpbHkgbGFyZ2UgaW1hZ2UgYnVmZmVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAKaW5kZXggN2Zi
N2NmMjVmOWFjMDM4OThjZGEwZWFhNmE4ZmI1OTJkMDk0OWU1OS4uYWE3MDI5M2U5YmQ0OWUxODk4
NThkM2RiMGM0M2E4NGI1ZDgyMGI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCkBAIC0xNTUsNiAr
MTU1LDEwIEBAIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNRdW90YUVuYWJsZWQgPSBm
YWxzZTsKIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNGdWxsU2NyZWVuQVBJRW5hYmxl
ZCA9IHRydWU7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNT1VTRV9MT0NLX0FQSSkKK2Jvb2wgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6aXNNb3VzZUxvY2tBUElFbmFibGVkID0gZmFsc2U7CisjZW5k
aWYKKwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiBib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmlzTWVkaWFTb3VyY2VFbmFibGVkID0gZmFsc2U7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgK
aW5kZXggMTQyMTcyMmI2NDlmZWJlNWMyNTE2NGNkNTRjYWI4ODkyZmI5MGMyZi4uYWJiODIxOGQ2
OGFkNTY5NjNmNDQ4ODYyNzQyYTdhYjJmMDc3NWY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKQEAgLTgw
LDYgKzgwLDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCB3ZWJraXRDYW5jZWxGdWxsU2Ny
ZWVuRW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KICNlbmRpZgog
CisjaWYgRU5BQkxFKE1PVVNFX0xPQ0tfQVBJKQorICAgIHN0YXRpYyBib29sIHdlYmtpdE1vdXNl
TG9ja0FQSUVuYWJsZWQoKSB7IHJldHVybiBpc01vdXNlTG9ja0FQSUVuYWJsZWQ7IH0KKyAgICBz
dGF0aWMgdm9pZCBzZXRXZWJraXRNb3VzZUxvY2tBUElFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7
IGlzTW91c2VMb2NrQVBJRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIHN0YXRpYyBib29sIHdl
YmtpdExvY2tNb3VzZUVuYWJsZWQoKSB7IHJldHVybiBpc01vdXNlTG9ja0FQSUVuYWJsZWQ7IH0K
KyAgICBzdGF0aWMgYm9vbCB3ZWJraXRVbmxvY2tNb3VzZUVuYWJsZWQoKSB7IHJldHVybiBpc01v
dXNlTG9ja0FQSUVuYWJsZWQ7IH0KKyAgICBzdGF0aWMgYm9vbCB3ZWJraXRNb3VzZUxvY2tlZEVu
YWJsZWQoKSB7IHJldHVybiBpc01vdXNlTG9ja0FQSUVuYWJsZWQ7IH0KKyNlbmRpZgorCiAjaWYg
RU5BQkxFKFZJREVPKQogICAgIHN0YXRpYyBib29sIGF1ZGlvRW5hYmxlZCgpOwogICAgIHN0YXRp
YyBib29sIGh0bWxNZWRpYUVsZW1lbnRFbmFibGVkKCk7CkBAIC0yMTMsNiArMjIxLDEwIEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIGJvb2wgaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsKICNlbmRpZgog
CisjaWYgRU5BQkxFKE1PVVNFX0xPQ0tfQVBJKQorICAgIHN0YXRpYyBib29sIGlzTW91c2VMb2Nr
QVBJRW5hYmxlZDsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICBzdGF0
aWMgYm9vbCBpc01lZGlhU291cmNlRW5hYmxlZDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggY2JhNjliOWQ1MjZlZGVkODE0YmRlNjBkM2YxNjM2N2M2NDgzZDZlMy4uOTI2MjNi
NTE1NGRmYWFhODAxOWU0ZmJhZTA1NWQ3OTQwNzc4MmQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCkBAIC01MDgwLDYgKzUwODAsMjQgQEAgdm9pZCBEb2N1bWVudDo6c2V0QW5pbWF0aW5nRnVs
bFNjcmVlbihib29sIGZsYWcpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNT1VTRV9MT0NLX0FQ
SSkKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdExvY2tNb3VzZSgvKlBhc3NSZWZQdHI8Vm9pZENhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBmYWlsdXJlQ2Fs
bGJhY2sqLykKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorfQorCit2b2lkIERvY3VtZW50
Ojp3ZWJraXRVbmxvY2tNb3VzZSgpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KK30KKwor
RWxlbWVudCogRG9jdW1lbnQ6OndlYmtpdE1vdXNlTG9ja2VkKCkKK3sKKyAgICAvLyBGSVhNRTog
SW1wbGVtZW50LgorICAgIHJldHVybiBkb2N1bWVudEVsZW1lbnQoKTsgLy8gRklYTUU6IFRlbXBv
cmFyeSBjb2RlIGZvciByZXR1cm4gdmFsdWUuCit9CisjZW5kaWYKKwogdm9pZCBEb2N1bWVudDo6
ZGVjcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpCiB7CiAgICAgQVNTRVJUKG1fbG9hZEV2ZW50
RGVsYXlDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDU1NzVjNWViZDA2NTFmMzRhMGJi
MDExNDkyMTE0MTM1N2U1MzBiM2QuLjVjZDI1NTBhMTQ3NjA2ODViOWQ0NzQwYWUzYTVmNjFjZThl
MTA4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMDY4LDYgKzEwNjgsMTIgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0QW5pbWF0aW5nRnVsbFNjcmVlbihib29sKTsKICNlbmRpZgogCisjaWYg
RU5BQkxFKE1PVVNFX0xPQ0tfQVBJKQorICAgIHZvaWQgd2Via2l0TG9ja01vdXNlKC8qUGFzc1Jl
ZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJh
Y2s+IGZhaWx1cmVDYWxsYmFjayovKTsKKyAgICB2b2lkIHdlYmtpdFVubG9ja01vdXNlKCk7Cisg
ICAgRWxlbWVudCogd2Via2l0TW91c2VMb2NrZWQoKTsKKyNlbmRpZgorCiAgICAgLy8gVXNlZCB0
byBhbGxvdyBlbGVtZW50IHRoYXQgbG9hZHMgZGF0YSB3aXRob3V0IGdvaW5nIHRocm91Z2ggYSBG
cmFtZUxvYWRlciB0byBkZWxheSB0aGUgJ2xvYWQnIGV2ZW50LgogICAgIHZvaWQgaW5jcmVtZW50
TG9hZEV2ZW50RGVsYXlDb3VudCgpIHsgKyttX2xvYWRFdmVudERlbGF5Q291bnQ7IH0KICAgICB2
b2lkIGRlY3JlbWVudExvYWRFdmVudERlbGF5Q291bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRs
CmluZGV4IDVjNjgzOGVjNWY1ZjA0MzUxMThhODVmNmQxNGYyZWEzMDkwMWQwMzYuLmRmMGI5MjNj
NTY2NjQ5YjdhMGYxMjExMTgyZWQ5MDk2YzJkODQ1YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmlk
bApAQCAtMjQ0LDYgKzI0NCwxNCBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIFtFbmFibGVkQXRS
dW50aW1lXSB2b2lkIHdlYmtpdENhbmNlbEZ1bGxTY3JlZW4oKTsKICNlbmRpZgogCisjaWYgZGVm
aW5lZChFTkFCTEVfTU9VU0VfTE9DS19BUEkpICYmIEVOQUJMRV9NT1VTRV9MT0NLX0FQSQorICAg
ICAgICBbRW5hYmxlZEF0UnVudGltZV0gdm9pZCB3ZWJraXRMb2NrTW91c2UoLyoKKyAgICAgICAg
RklYTUU6IE5lZWQgdG8gc29ydCBvdXQgaG93IHRvIG1ha2UgdGhpcyBjb21waWxlOgorICAgICAg
ICBpbiBbb3B0aW9uYWxdIFZvaWRDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtvcHRpb25h
bF0gVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjayovKTsKKyAgICAgICAgW0VuYWJsZWRBdFJ1
bnRpbWVdIHZvaWQgd2Via2l0VW5sb2NrTW91c2UoKTsKKyAgICAgICAgW0VuYWJsZWRBdFJ1bnRp
bWVdIEVsZW1lbnQgd2Via2l0TW91c2VMb2NrZWQoKTsKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQo
TEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgICAgICAv
LyBFdmVudCBoYW5kbGVyIERPTSBhdHRyaWJ1dGVzCiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVu
dW1dIEV2ZW50TGlzdGVuZXIgb25hYm9ydDsKQEAgLTMxNSw3ICszMjMsMTAgQEAgbW9kdWxlIGNv
cmUgewogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLENvbmRpdGlvbmFsPVRPVUNIX0VWRU5U
UyxFbmFibGVkQXRSdW50aW1lXSBFdmVudExpc3RlbmVyIG9udG91Y2htb3ZlOwogICAgICAgICBh
dHRyaWJ1dGUgW0RvbnRFbnVtLENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUyxFbmFibGVkQXRSdW50
aW1lXSBFdmVudExpc3RlbmVyIG9udG91Y2hlbmQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVu
dW0sQ29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTLEVuYWJsZWRBdFJ1bnRpbWVdIEV2ZW50TGlzdGVu
ZXIgb250b3VjaGNhbmNlbDsKLSAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSwgQ29uZGl0aW9u
YWw9RlVMTFNDUkVFTl9BUEldIEV2ZW50TGlzdGVuZXIgb253ZWJraXRmdWxsc2NyZWVuY2hhbmdl
OworICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLENvbmRpdGlvbmFsPUZVTExTQ1JFRU5fQVBJ
XSBFdmVudExpc3RlbmVyIG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZTsKKyNpZiBkZWZpbmVkKEVO
QUJMRV9NT1VTRV9MT0NLX0FQSSkgJiYgRU5BQkxFX01PVVNFX0xPQ0tfQVBJCisgICAgICAgIGF0
dHJpYnV0ZSBbRG9udEVudW0sQ29uZGl0aW9uYWw9TU9VU0VMT0NLX0FQSSxFbmFibGVkQXRSdW50
aW1lXSBFdmVudExpc3RlbmVyIG9ud2Via2l0bW91c2Vsb2NrbG9zdDsKKyNlbmRpZgogI2VuZGlm
CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICYmIEVOQUJMRV9UT1VDSF9FVkVO
VFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCmluZGV4IGQyYTg3NmZjYzc0MWM3N2Q3MGE0MmZiMTQ2ODUxYTYz
YTY5ODk3YmIuLjA2M2E1MGI3MjM0MWRhY2NhMjQ1YTY1ZWYyNWIzNWNkYzRiMTQ1NWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaApAQCAtMTA3LDYgKzEwNyw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRm
dWxsc2NyZWVuY2hhbmdlKTsKICNlbmRpZgorI2lmIEVOQUJMRShNT1VTRV9MT0NLX0FQSSkKKyAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdG1vdXNlbG9ja2xvc3QpOwor
I2VuZGlmCiAKICAgICBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29u
c3Q7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRs
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCmluZGV4IDgxMDMyZTY2YTQyMGMyYTcz
OTJiM2MzZWRhZDM3YmUxMjFkMjVhNDguLmE1MzUzMWI1ZWNlODMyYTU0NmQwOTJlYzM4NDBhNGYz
YzM4YjNmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKQEAgLTIwNSw3ICsyMDUsMTAgQEAgbW9k
dWxlIGNvcmUgewogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLENvbmRpdGlvbmFsPVRPVUNI
X0VWRU5UUyxFbmFibGVkQXRSdW50aW1lXSBFdmVudExpc3RlbmVyIG9udG91Y2htb3ZlOwogICAg
ICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUyxFbmFibGVk
QXRSdW50aW1lXSBFdmVudExpc3RlbmVyIG9udG91Y2hlbmQ7CiAgICAgICAgIGF0dHJpYnV0ZSBb
RG9udEVudW0sQ29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTLEVuYWJsZWRBdFJ1bnRpbWVdIEV2ZW50
TGlzdGVuZXIgb250b3VjaGNhbmNlbDsKLSAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSwgQ29u
ZGl0aW9uYWw9RlVMTFNDUkVFTl9BUEldIEV2ZW50TGlzdGVuZXIgb253ZWJraXRmdWxsc2NyZWVu
Y2hhbmdlOworICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLENvbmRpdGlvbmFsPUZVTExTQ1JF
RU5fQVBJXSBFdmVudExpc3RlbmVyIG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZTsKKyNpZiBkZWZp
bmVkKEVOQUJMRV9NT1VTRV9MT0NLX0FQSSkgJiYgRU5BQkxFX01PVVNFX0xPQ0tfQVBJCisgICAg
ICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sQ29uZGl0aW9uYWw9TU9VU0VMT0NLX0FQSSxFbmFibGVk
QXRSdW50aW1lXSBFdmVudExpc3RlbmVyIG9ud2Via2l0bW91c2Vsb2NrbG9zdDsKKyNlbmRpZgog
I2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFt
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggYTJjYTE0MjNiMWE3
MjA1YjBhMDRjMTEyYWNhOWExZWMwMTdiZWQ2YS4uODI1NzM4MTAxZjg2Zjk3ZDViMmQ2YjA1ODQ4
YzJmZmQ4MDQ3MTNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0xNzUsNiArMTc1LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFwKICAgICBtYWNybyh3ZWJraXRmdWxsc2NyZWVu
Y2hhbmdlKSBcCiAgICAgXAorICAgIG1hY3JvKHdlYmtpdG1vdXNlbG9ja2xvc3QpIFwKKyAgICBc
CiAgICAgbWFjcm8od2Via2l0c3BlZWNoY2hhbmdlKSBcCiAgICAgXAogICAgIG1hY3JvKHdlYmds
Y29udGV4dGxvc3QpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAppbmRleCAwZTcxZWY1Y2Yx
NDdjMzkzMDJlOTNmNWE0N2MzZWJlZjgzNjc4MjAxLi4zMzNmY2EyOTljNDY1OGM5MjNjYzFhNDg3
NDlmZmI3OWU5NDhhOWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCkBAIC0zOSw2ICsz
OSw5IEBAIFBhc3NSZWZQdHI8TW91c2VFdmVudD4gTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmCiAKICAgICByZXR1cm4gTW91c2VFdmVudDo6
Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgaXNDYW5jZWxhYmxlLCB2aWV3LAogICAgICAgICBkZXRh
aWwsIGV2ZW50Lmdsb2JhbFgoKSwgZXZlbnQuZ2xvYmFsWSgpLCBldmVudC54KCksIGV2ZW50Lnko
KSwKKyNpZiBFTkFCTEUoTU9VU0VfTE9DS19BUEkpCisgICAgICAgIGV2ZW50Lm1vdmVtZW50WCgp
LCBldmVudC5tb3ZlbWVudFkoKSwKKyNlbmRpZgogICAgICAgICBldmVudC5jdHJsS2V5KCksIGV2
ZW50LmFsdEtleSgpLCBldmVudC5zaGlmdEtleSgpLCBldmVudC5tZXRhS2V5KCksIGV2ZW50LmJ1
dHRvbigpLAogICAgICAgICByZWxhdGVkVGFyZ2V0LCAwLCBmYWxzZSk7CiB9CkBAIC01MSwxMSAr
NTQsMTggQEAgTW91c2VFdmVudDo6TW91c2VFdmVudCgpCiAKIE1vdXNlRXZlbnQ6Ok1vdXNlRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LAogICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwg
aW50IHBhZ2VZLAorI2lmIEVOQUJMRShNT1VTRV9MT0NLX0FQSSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgaW50IG1vdmVtZW50WCwgaW50IG1vdmVtZW50WSwKKyNlbmRpZgogICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29s
IG1ldGFLZXksCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwg
UGFzc1JlZlB0cjxFdmVudFRhcmdldD4gcmVsYXRlZFRhcmdldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IGNsaXBib2FyZCwgYm9vbCBpc1NpbXVsYXRlZCkK
ICAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
LCB2aWV3LCBkZXRhaWwsIEludFBvaW50KHNjcmVlblgsIHNjcmVlblkpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgSW50UG9pbnQocGFnZVgsIHBhZ2VZKSwgY3RybEtleSwgYWx0S2V5LCBzaGlm
dEtleSwgbWV0YUtleSwgaXNTaW11bGF0ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICBJbnRQ
b2ludChwYWdlWCwgcGFnZVkpLAorI2lmIEVOQUJMRShNT1VTRV9MT0NLX0FQSSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEludFBvaW50KG1vdmVtZW50WCwgbW92ZW1lbnRZKSwKKyNlbmRpZgor
ICAgICAgICAgICAgICAgICAgICAgICAgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtl
eSwgaXNTaW11bGF0ZWQpCiAgICAgLCBtX2J1dHRvbihidXR0b24gPT0gKHVuc2lnbmVkIHNob3J0
KS0xID8gMCA6IGJ1dHRvbikKICAgICAsIG1fYnV0dG9uRG93bihidXR0b24gIT0gKHVuc2lnbmVk
IHNob3J0KS0xKQogICAgICwgbV9yZWxhdGVkVGFyZ2V0KHJlbGF0ZWRUYXJnZXQpCkBAIC02OSw2
ICs3OSw5IEBAIE1vdXNlRXZlbnQ6On5Nb3VzZUV2ZW50KCkKIAogdm9pZCBNb3VzZUV2ZW50Ojpp
bml0TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVl
blksIGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwKKyNpZiBFTkFCTEUoTU9VU0VfTE9DS19BUEkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtb3ZlbWVudFgsIGludCBtb3Zl
bWVudFksCisjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjdHJs
S2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBidXR0b24sIFBhc3NSZWZQdHI8
RXZlbnRUYXJnZXQ+IHJlbGF0ZWRUYXJnZXQpCiB7CkBAIC03OCw2ICs5MSw5IEBAIHZvaWQgTW91
c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjCiAgICAgaW5pdFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxh
YmxlLCB2aWV3LCBkZXRhaWwpOwogCiAgICAgbV9zY3JlZW5Mb2NhdGlvbiA9IEludFBvaW50KHNj
cmVlblgsIHNjcmVlblkpOworI2lmIEVOQUJMRShNT1VTRV9MT0NLX0FQSSkKKyAgICBtX21vdmVt
ZW50RGVsdGEgPSBJbnRQb2ludChtb3ZlbWVudFgsIG1vdmVtZW50WSk7CisjZW5kaWYKICAgICBt
X2N0cmxLZXkgPSBjdHJsS2V5OwogICAgIG1fYWx0S2V5ID0gYWx0S2V5OwogICAgIG1fc2hpZnRL
ZXkgPSBzaGlmdEtleTsKQEAgLTEwNyw3ICsxMjMsNyBAQCBib29sIE1vdXNlRXZlbnQ6OmlzRHJh
Z0V2ZW50KCkgY29uc3QKIGludCBNb3VzZUV2ZW50Ojp3aGljaCgpIGNvbnN0CiB7CiAgICAgLy8g
Rm9yIHRoZSBET00sIHRoZSByZXR1cm4gdmFsdWVzIGZvciBsZWZ0LCBtaWRkbGUgYW5kIHJpZ2h0
IG1vdXNlIGJ1dHRvbnMgYXJlIDAsIDEsIDIsIHJlc3BlY3RpdmVseS4KLSAgICAvLyBGb3IgdGhl
IE5ldHNjYXBlICJ3aGljaCIgcHJvcGVydHksIHRoZSByZXR1cm4gdmFsdWVzIGZvciBsZWZ0LCBt
aWRkbGUgYW5kIHJpZ2h0IG1vdXNlIGJ1dHRvbnMgYXJlIDEsIDIsIDMsIHJlc3BlY3RpdmVseS4g
CisgICAgLy8gRm9yIHRoZSBOZXRzY2FwZSAid2hpY2giIHByb3BlcnR5LCB0aGUgcmV0dXJuIHZh
bHVlcyBmb3IgbGVmdCwgbWlkZGxlIGFuZCByaWdodCBtb3VzZSBidXR0b25zIGFyZSAxLCAyLCAz
LCByZXNwZWN0aXZlbHkuCiAgICAgLy8gU28gd2UgbXVzdCBhZGQgMS4KICAgICBpZiAoIW1fYnV0
dG9uRG93bikKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMTcsOSArMTMzLDkgQEAgaW50IE1vdXNl
RXZlbnQ6OndoaWNoKCkgY29uc3QKIE5vZGUqIE1vdXNlRXZlbnQ6OnRvRWxlbWVudCgpIGNvbnN0
CiB7CiAgICAgLy8gTVNJRSBleHRlbnNpb24gLSAidGhlIG9iamVjdCB0b3dhcmQgd2hpY2ggdGhl
IHVzZXIgaXMgbW92aW5nIHRoZSBtb3VzZSBwb2ludGVyIgotICAgIGlmICh0eXBlKCkgPT0gZXZl
bnROYW1lcygpLm1vdXNlb3V0RXZlbnQpIAorICAgIGlmICh0eXBlKCkgPT0gZXZlbnROYW1lcygp
Lm1vdXNlb3V0RXZlbnQpCiAgICAgICAgIHJldHVybiByZWxhdGVkVGFyZ2V0KCkgPyByZWxhdGVk
VGFyZ2V0KCktPnRvTm9kZSgpIDogMDsKLSAgICAKKwogICAgIHJldHVybiB0YXJnZXQoKSA/IHRh
cmdldCgpLT50b05vZGUoKSA6IDA7CiB9CiAKQEAgLTEyOCw3ICsxNDQsNyBAQCBOb2RlKiBNb3Vz
ZUV2ZW50Ojpmcm9tRWxlbWVudCgpIGNvbnN0CiAgICAgLy8gTVNJRSBleHRlbnNpb24gLSAib2Jq
ZWN0IGZyb20gd2hpY2ggYWN0aXZhdGlvbiBvciB0aGUgbW91c2UgcG9pbnRlciBpcyBleGl0aW5n
IGR1cmluZyB0aGUgZXZlbnQiIChodWg/KQogICAgIGlmICh0eXBlKCkgIT0gZXZlbnROYW1lcygp
Lm1vdXNlb3V0RXZlbnQpCiAgICAgICAgIHJldHVybiByZWxhdGVkVGFyZ2V0KCkgPyByZWxhdGVk
VGFyZ2V0KCktPnRvTm9kZSgpIDogMDsKLSAgICAKKwogICAgIHJldHVybiB0YXJnZXQoKSA/IHRh
cmdldCgpLT50b05vZGUoKSA6IDA7CiB9CiAKQEAgLTE0Miw3ICsxNTgsMTEgQEAgU2ltdWxhdGVk
TW91c2VFdmVudDo6flNpbXVsYXRlZE1vdXNlRXZlbnQoKQogfQogCiBTaW11bGF0ZWRNb3VzZUV2
ZW50OjpTaW11bGF0ZWRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQ
YXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywgUGFzc1JlZlB0cjxFdmVudD4gdW5kZXJseWlu
Z0V2ZW50KQotICAgIDogTW91c2VFdmVudChldmVudFR5cGUsIHRydWUsIHRydWUsIHZpZXcsIDAs
IDAsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwLCAwLCAwLCB0cnVlKQor
ICAgIDogTW91c2VFdmVudChldmVudFR5cGUsIHRydWUsIHRydWUsIHZpZXcsIDAsIDAsIDAsIDAs
IDAsCisjaWYgRU5BQkxFKE1PVVNFX0xPQ0tfQVBJKQorICAgICAgICAgICAgICAgICAwLCAwLAor
I2VuZGlmCisgICAgICAgICAgICAgICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwLCAw
LCAwLCB0cnVlKQogewogICAgIGlmIChVSUV2ZW50V2l0aEtleVN0YXRlKiBrZXlTdGF0ZUV2ZW50
ID0gZmluZEV2ZW50V2l0aEtleVN0YXRlKHVuZGVybHlpbmdFdmVudC5nZXQoKSkpIHsKICAgICAg
ICAgbV9jdHJsS2V5ID0ga2V5U3RhdGVFdmVudC0+Y3RybEtleSgpOwpAQCAtMTk1LDYgKzIxNSw5
IEBAIGJvb2wgTW91c2VFdmVudERpc3BhdGNoTWVkaWF0b3I6OmRpc3BhdGNoRXZlbnQoRXZlbnRE
aXNwYXRjaGVyKiBkaXNwYXRjaGVyKSBjb25zCiAgICAgICAgIFJlZlB0cjxNb3VzZUV2ZW50PiBk
b3VibGVDbGlja0V2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKCk7CiAgICAgICAgIGRvdWJsZUNs
aWNrRXZlbnQtPmluaXRNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5kYmxjbGlja0V2ZW50LCBldmVu
dCgpLT5idWJibGVzKCksIGV2ZW50KCktPmNhbmNlbGFibGUoKSwgZXZlbnQoKS0+dmlldygpLAog
ICAgICAgICAgICAgICAgIGV2ZW50KCktPmRldGFpbCgpLCBldmVudCgpLT5zY3JlZW5YKCksIGV2
ZW50KCktPnNjcmVlblkoKSwgZXZlbnQoKS0+Y2xpZW50WCgpLCBldmVudCgpLT5jbGllbnRZKCks
CisjaWYgRU5BQkxFKE1PVVNFX0xPQ0tfQVBJKQorICAgICAgICAgICAgICAgIGV2ZW50KCktPm1v
dmVtZW50WCgpLCBldmVudCgpLT5tb3ZlbWVudFkoKSwKKyNlbmRpZgogICAgICAgICAgICAgICAg
IGV2ZW50KCktPmN0cmxLZXkoKSwgZXZlbnQoKS0+YWx0S2V5KCksIGV2ZW50KCktPnNoaWZ0S2V5
KCksIGV2ZW50KCktPm1ldGFLZXkoKSwKICAgICAgICAgICAgICAgICBldmVudCgpLT5idXR0b24o
KSwgcmVsYXRlZFRhcmdldCk7CiAgICAgICAgIGlmIChldmVudCgpLT5kZWZhdWx0SGFuZGxlZCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKaW5kZXggNDNlN2IzMmYyOGUwYjk3OGY5YjY4ZTgyNmQy
MTI5NmM1NWZiNmM3Yi4uZDYzMDQxZTMxMTM1YTQwZWQwODk4MDVjY2QxN2IzZmI2NGFkYzkxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTW91c2VFdmVudC5oCkBAIC00MiwxMCArNDIsMTYgQEAgY2xhc3MgUGxhdGZv
cm1Nb3VzZUV2ZW50OwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1vdXNl
RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LAogICAgICAgICAg
ICAgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBw
YWdlWSwKKyNpZiBFTkFCTEUoTU9VU0VfTE9DS19BUEkpCisgICAgICAgICAgICBpbnQgbW92ZW1l
bnRYLCBpbnQgbW92ZW1lbnRZLAorI2VuZGlmCiAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJv
b2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIHVuc2lnbmVkIHNob3J0IGJ1
dHRvbiwKICAgICAgICAgICAgIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHJlbGF0ZWRUYXJnZXQs
IFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBjbGlwYm9hcmQgPSAwLCBib29sIGlzU2ltdWxhdGVkID0g
ZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW91c2VF
dmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCwgc2NyZWVuWCwg
c2NyZWVuWSwgcGFnZVgsIHBhZ2VZLAorI2lmIEVOQUJMRShNT1VTRV9MT0NLX0FQSSkKKyAgICAg
ICAgICAgICAgICBtb3ZlbWVudFgsIG1vdmVtZW50WSwKKyNlbmRpZgogICAgICAgICAgICAgICAg
IGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRvbiwgcmVsYXRlZFRhcmdl
dCwgY2xpcGJvYXJkLCBpc1NpbXVsYXRlZCkpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBp
bnQgZGV0YWlsLCBQYXNzUmVmUHRyPE5vZGU+IHJlbGF0ZWRUYXJnZXQpOwpAQCAtNTQsNiArNjAs
OSBAQCBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiAKICAgICAgICAgdm9pZCBpbml0TW91c2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBp
bnQgY2xpZW50WSwKKyNpZiBFTkFCTEUoTU9VU0VfTE9DS19BUEkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IG1vdmVtZW50WCwgaW50IG1vdmVtZW50WSwKKyNlbmRpZgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hp
ZnRLZXksIGJvb2wgbWV0YUtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBidXR0b24sIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHJlbGF0ZWRUYXJnZXQpOwog
CkBAIC03OCw2ICs4Nyw5IEBAIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKICAgICBwcm90ZWN0
ZWQ6CiAgICAgICAgIE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4sCiAgICAg
ICAgICAgICAgICAgICAgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQg
cGFnZVgsIGludCBwYWdlWSwKKyNpZiBFTkFCTEUoTU9VU0VfTE9DS19BUEkpCisgICAgICAgICAg
ICAgICAgICAgaW50IG1vdmVtZW50WCwgaW50IG1vdmVtZW50WSwKKyNlbmRpZgogICAgICAgICAg
ICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wg
bWV0YUtleSwgdW5zaWduZWQgc2hvcnQgYnV0dG9uLAogICAgICAgICAgICAgICAgICAgIFBhc3NS
ZWZQdHI8RXZlbnRUYXJnZXQ+IHJlbGF0ZWRUYXJnZXQsIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBj
bGlwYm9hcmQsIGJvb2wgaXNTaW11bGF0ZWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTW91c2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5pZGwK
aW5kZXggYjU5YjhhOTQwNTYwN2IxZGNjYzQyNDMyMWY3ZjdlYmIwNjU3YjFkZi4uMDhkNDRjOGE0
ZDljNGRkYzk4MjJjMWRmNmYxYzk2NGE5MzAyNDg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL01vdXNlRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50
LmlkbApAQCAtMjUsNiArMjUsMTAgQEAgbW9kdWxlIGV2ZW50cyB7CiAgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBsb25nICAgICAgICAgICAgIHNjcmVlblk7CiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBsb25nICAgICAgICAgICAgIGNsaWVudFg7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBsb25nICAgICAgICAgICAgIGNsaWVudFk7CisjaWYgZGVmaW5lZChFTkFCTEVfTU9VU0Vf
TE9DS19BUEkpICYmIEVOQUJMRV9NT1VTRV9MT0NLX0FQSQorICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgbG9uZyAgICAgICAgICAgICBtb3ZlbWVudFg7CisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBsb25nICAgICAgICAgICAgIG1vdmVtZW50WTsKKyNlbmRpZgogICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgICBjdHJsS2V5OwogICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgICBzaGlmdEtleTsKICAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGJvb2xlYW4gICAgICAgICAgYWx0S2V5OwpAQCAtNDEsNiArNDUsMTAgQEAgbW9kdWxl
IGV2ZW50cyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
W09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBsb25nIHNjcmVlblksIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1DYWxsV2l0aERl
ZmF1bHRWYWx1ZV0gbG9uZyBjbGllbnRYLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIGxvbmcgY2xp
ZW50WSwgCisjaWYgZGVmaW5lZChFTkFCTEVfTU9VU0VfTE9DS19BUEkpICYmIEVOQUJMRV9NT1VT
RV9MT0NLX0FQSQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gbG9uZyBtb3ZlbWVudFgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRo
RGVmYXVsdFZhbHVlXSBsb25nIG1vdmVtZW50WSwKKyNlbmRpZgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1
ZV0gYm9vbGVhbiBjdHJsS2V5LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIGJvb2xlYW4gYWx0S2V5
LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9u
YWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIGJvb2xlYW4gc2hpZnRLZXksIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAKaW5kZXggMjE2ZmUyOGM0MWMyMzViODk1ODQ0NTg1
OTk2NzcwNTUxZWM1ZmMwYy4uMzU0OGYyMGNiMzJlMTFjZDIxYzYwMzdkYmI5Njg4NzU2YzE3MDRm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCkBAIC01NCw5ICs1
NCwxNSBAQCBzdGF0aWMgTGF5b3V0U2l6ZSBjb250ZW50c1Njcm9sbE9mZnNldChBYnN0cmFjdFZp
ZXcqIGFic3RyYWN0VmlldykKIAogTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gYWJzdHJhY3RWaWV3LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXRhaWwsIGNvbnN0IExheW91dFBvaW50
JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgTGF5b3V0UG9pbnQmIHdpbmRvd0xvY2F0aW9uLAorI2lm
IEVOQUJMRShNT1VTRV9MT0NLX0FQSSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBMYXlvdXRQb2ludCYgbW92ZW1lbnREZWx0YSwKKyNlbmRpZgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJv
b2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgYm9vbCBpc1NpbXVsYXRlZCkKICAgICA6IFVJRXZl
bnRXaXRoS2V5U3RhdGUoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGFic3RyYWN0
VmlldywgZGV0YWlsLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KQogICAgICwg
bV9zY3JlZW5Mb2NhdGlvbihzY3JlZW5Mb2NhdGlvbikKKyNpZiBFTkFCTEUoTU9VU0VfTE9DS19B
UEkpCisgICAgLCBtX21vdmVtZW50RGVsdGEobW92ZW1lbnREZWx0YSkKKyNlbmRpZgogICAgICwg
bV9pc1NpbXVsYXRlZChpc1NpbXVsYXRlZCkKIHsKICAgICBMYXlvdXRQb2ludCBhZGp1c3RlZFBh
Z2VMb2NhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRF
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgKaW5kZXggNGIx
ODU1ODY4NmU3ZmNlYWYzYzA2OTdkOTk1ZTZkNmZiZmE2MDY0NS4uYWFhNjMzZGMxMzkyN2NiMWI1
MjQwZDhlYzU5YWVkZGQ0NGJmY2M5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01v
dXNlUmVsYXRlZEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2
ZW50LmgKQEAgLTM5LDYgKzM5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29u
c3QgTGF5b3V0UG9pbnQmIHNjcmVlbkxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zY3JlZW5M
b2NhdGlvbjsgfQogICAgICAgICBpbnQgY2xpZW50WCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50
TG9jYXRpb24ueCgpOyB9CiAgICAgICAgIGludCBjbGllbnRZKCkgY29uc3QgeyByZXR1cm4gbV9j
bGllbnRMb2NhdGlvbi55KCk7IH0KKyNpZiBFTkFCTEUoTU9VU0VfTE9DS19BUEkpCisgICAgICAg
IGludCBtb3ZlbWVudFgoKSBjb25zdCB7IHJldHVybiBtX21vdmVtZW50RGVsdGEueCgpOyB9Cisg
ICAgICAgIGludCBtb3ZlbWVudFkoKSBjb25zdCB7IHJldHVybiBtX21vdmVtZW50RGVsdGEueSgp
OyB9CisjZW5kaWYKICAgICAgICAgY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudExvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9jbGllbnRMb2NhdGlvbjsgfQogICAgICAgICBpbnQgbGF5ZXJYKCk7
CiAgICAgICAgIGludCBsYXllclkoKTsKQEAgLTU1LDExICs1OSwxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIC8vIHVzYWJsZSB3aXRoIFJlbmRlck9iamVjdDo6YWJzb2x1dGVUb0xv
Y2FsKS4KICAgICAgICAgY29uc3QgTGF5b3V0UG9pbnQmIGFic29sdXRlTG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX2Fic29sdXRlTG9jYXRpb247IH0KICAgICAgICAgdm9pZCBzZXRBYnNvbHV0
ZUxvY2F0aW9uKGNvbnN0IExheW91dFBvaW50JiBwKSB7IG1fYWJzb2x1dGVMb2NhdGlvbiA9IHA7
IH0KLSAgICAKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgTW91c2VSZWxhdGVkRXZlbnQoKTsK
ICAgICAgICAgTW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXRhaWwsIGNvbnN0IExheW91dFBvaW50JiBz
Y3JlZW5Mb2NhdGlvbiwgY29uc3QgTGF5b3V0UG9pbnQmIHdpbmRvd0xvY2F0aW9uLAorI2lmIEVO
QUJMRShNT1VTRV9MT0NLX0FQSSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGF5
b3V0UG9pbnQmIG1vdmVtZW50RGVsdGEsCisjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5
LCBib29sIGlzU2ltdWxhdGVkID0gZmFsc2UpOwogCiAgICAgICAgIHZvaWQgaW5pdENvb3JkaW5h
dGVzKCk7CkBAIC02OCwxMCArNzUsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IHZvaWQgY29tcHV0ZVBhZ2VMb2NhdGlvbigpOwogICAgICAgICB2b2lkIGNvbXB1dGVSZWxhdGl2
ZVBvc2l0aW9uKCk7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIEV4cG9zZSB0aGVzZSBzbyBNb3Vz
ZUV2ZW50Ojppbml0TW91c2VFdmVudCBjYW4gc2V0IHRoZW0uCiAgICAgICAgIExheW91dFBvaW50
IG1fc2NyZWVuTG9jYXRpb247CiAgICAgICAgIExheW91dFBvaW50IG1fY2xpZW50TG9jYXRpb247
CisjaWYgRU5BQkxFKE1PVVNFX0xPQ0tfQVBJKQorICAgICAgICBMYXlvdXRQb2ludCBtX21vdmVt
ZW50RGVsdGE7CisjZW5kaWYKIAogICAgIHByaXZhdGU6CiAgICAgICAgIExheW91dFBvaW50IG1f
cGFnZUxvY2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCmluZGV4IDYzOGE0NDQzZjM1
YTljYmI2YWVjMjA0MmY0MDU5Y2Q3ODllMzU0ZWMuLmFjMTY3ODhiNDQ3YzA0NzllNTdiMDlhNjY2
YzMxZjc3NWUwODc4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAKQEAgLTM3LDExICsz
NywxNSBAQCBUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KCkKIH0KIAogVG91Y2hFdmVudDo6VG91Y2hF
dmVudChUb3VjaExpc3QqIHRvdWNoZXMsIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcywKLSAgICAg
ICAgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcywgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCAK
KyAgICAgICAgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcywgY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLAogICAgICAgICBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywgaW50IHNjcmVlblgs
IGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKICAgICAgICAgYm9vbCBjdHJsS2V5
LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQogICAgIDogTW91c2VS
ZWxhdGVkRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSwgdmlldywgMCwgSW50UG9pbnQoc2NyZWVuWCwg
c2NyZWVuWSksCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChwYWdlWCwgcGFnZVkp
LCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KQorICAgICAgICAgICAgICAgICAg
ICAgICAgSW50UG9pbnQocGFnZVgsIHBhZ2VZKSwKKyNpZiBFTkFCTEUoTU9VU0VfTE9DS19BUEkp
CisgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludCgwLCAwKSwKKyNlbmRpZgorICAgICAg
ICAgICAgICAgICAgICAgICAgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSkKICAg
ICAsIG1fdG91Y2hlcyh0b3VjaGVzKQogICAgICwgbV90YXJnZXRUb3VjaGVzKHRhcmdldFRvdWNo
ZXMpCiAgICAgLCBtX2NoYW5nZWRUb3VjaGVzKGNoYW5nZWRUb3VjaGVzKQpAQCAtNTMsNyArNTcs
NyBAQCBUb3VjaEV2ZW50Ojp+VG91Y2hFdmVudCgpCiB9CiAKIHZvaWQgVG91Y2hFdmVudDo6aW5p
dFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0b3VjaGVzLCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMs
Ci0gICAgICAgIFRvdWNoTGlzdCogY2hhbmdlZFRvdWNoZXMsIGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgCisgICAgICAgIFRvdWNoTGlzdCogY2hhbmdlZFRvdWNoZXMsIGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwKICAgICAgICAgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGludCBz
Y3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLAogICAgICAgICBi
b29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAKaW5kZXggODViNTYyMjU1ZDJmNjRmNzY4ODRhNGVi
ZmU0NGViZWJhOTEzYTUxZC4uNmJiZTc0MGE4NGZlMWJiZDlkZDM4N2VlMGRhMmIyMmYxZGFhODE4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcApAQCAtMzksOSArMzksMTUgQEAgV2hlZWxF
dmVudDo6V2hlZWxFdmVudCgpCiBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGNvbnN0IEZsb2F0UG9p
bnQmIHdoZWVsVGlja3MsIGNvbnN0IEZsb2F0UG9pbnQmIHJhd0RlbHRhLAogICAgICAgICAgICAg
ICAgICAgICAgICBHcmFudWxhcml0eSBncmFudWxhcml0eSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZp
ZXc+IHZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFBvaW50JiBzY3JlZW5M
b2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHBhZ2VMb2NhdGlvbiwKKyNpZiBFTkFCTEUoTU9VU0Vf
TE9DS19BUEkpCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFBvaW50JiBtb3ZlbWVu
dERlbHRhLAorI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9v
bCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSkKICAgICA6IE1vdXNlUmVsYXRl
ZEV2ZW50KGV2ZW50TmFtZXMoKS5tb3VzZXdoZWVsRXZlbnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICB0cnVlLCB0cnVlLCB2aWV3LCAwLCBzY3JlZW5Mb2NhdGlvbiwgcGFnZUxvY2F0aW9uLAor
I2lmIEVOQUJMRShNT1VTRV9MT0NLX0FQSSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVt
ZW50RGVsdGEsCisjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgIGN0cmxLZXksIGFsdEtl
eSwgc2hpZnRLZXksIG1ldGFLZXkpCiAgICAgLCBtX3doZWVsRGVsdGEoSW50UG9pbnQoc3RhdGlj
X2Nhc3Q8aW50Pih3aGVlbFRpY2tzLngoKSAqIHRpY2tNdWx0aXBsaWVyKSwgc3RhdGljX2Nhc3Q8
aW50Pih3aGVlbFRpY2tzLnkoKSAqIHRpY2tNdWx0aXBsaWVyKSkpCiAgICAgLCBtX3Jhd0RlbHRh
KHJvdW5kZWRJbnRQb2ludChyYXdEZWx0YSkpCkBAIC01MSwzMyArNTcsNDUgQEAgV2hlZWxFdmVu
dDo6V2hlZWxFdmVudChjb25zdCBGbG9hdFBvaW50JiB3aGVlbFRpY2tzLCBjb25zdCBGbG9hdFBv
aW50JiByYXdEZWx0YSwKIAogdm9pZCBXaGVlbEV2ZW50Ojppbml0V2hlZWxFdmVudChpbnQgcmF3
RGVsdGFYLCBpbnQgcmF3RGVsdGFZLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBp
bnQgcGFnZVgsIGludCBwYWdlWSwKKyNpZiBFTkFCTEUoTU9VU0VfTE9DS19BUEkpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtb3ZlbWVudFgsIGludCBtb3ZlbWVudFksCisj
ZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29s
IGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQogewogICAgIGlmIChkaXNwYXRj
aGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIGluaXRVSUV2ZW50KGV2ZW50TmFt
ZXMoKS5tb3VzZXdoZWVsRXZlbnQsIHRydWUsIHRydWUsIHZpZXcsIDApOwotICAgIAorCiAgICAg
bV9zY3JlZW5Mb2NhdGlvbiA9IEludFBvaW50KHNjcmVlblgsIHNjcmVlblkpOworI2lmIEVOQUJM
RShNT1VTRV9MT0NLX0FQSSkKKyAgICBtX21vdmVtZW50RGVsdGEgPSBJbnRQb2ludChtb3ZlbWVu
dFgsIG1vdmVtZW50WSk7CisjZW5kaWYKICAgICBtX2N0cmxLZXkgPSBjdHJsS2V5OwogICAgIG1f
YWx0S2V5ID0gYWx0S2V5OwogICAgIG1fc2hpZnRLZXkgPSBzaGlmdEtleTsKICAgICBtX21ldGFL
ZXkgPSBtZXRhS2V5OwotICAgIAorCiAgICAgLy8gTm9ybWFsaXplIHRvIHRoZSBXaW5kb3dzIDEy
MCBtdWx0aXBsZQogICAgIG1fd2hlZWxEZWx0YSA9IEludFBvaW50KHJhd0RlbHRhWCAqIHRpY2tN
dWx0aXBsaWVyLCByYXdEZWx0YVkgKiB0aWNrTXVsdGlwbGllcik7Ci0gICAgCisKICAgICBtX3Jh
d0RlbHRhID0gSW50UG9pbnQocmF3RGVsdGFYLCByYXdEZWx0YVkpOwogICAgIG1fZ3JhbnVsYXJp
dHkgPSBQaXhlbDsKLSAgICAKKwogICAgIGluaXRDb29yZGluYXRlcyhJbnRQb2ludChwYWdlWCwg
cGFnZVkpKTsKIH0KIAogdm9pZCBXaGVlbEV2ZW50Ojppbml0V2ViS2l0V2hlZWxFdmVudChpbnQg
cmF3RGVsdGFYLCBpbnQgcmF3RGVsdGFZLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNjcmVlblgsIGludCBz
Y3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKKyNpZiBFTkFCTEUoTU9VU0VfTE9DS19BUEkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtb3ZlbWVudFgsIGlu
dCBtb3ZlbWVudFksCisjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5
KQogewogICAgIGluaXRXaGVlbEV2ZW50KHJhd0RlbHRhWCwgcmF3RGVsdGFZLCB2aWV3LCBzY3Jl
ZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksCisjaWYgRU5BQkxFKE1PVVNFX0xPQ0tfQVBJKQor
ICAgICAgICAgICAgICAgICAgIG1vdmVtZW50WCwgbW92ZW1lbnRZLAorI2VuZGlmCiAgICAgICAg
ICAgICAgICAgICAgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSk7CiB9CiAKQEAg
LTEwMiw4ICsxMjAsMTEgQEAgV2hlZWxFdmVudERpc3BhdGNoTWVkaWF0b3I6OldoZWVsRXZlbnRE
aXNwYXRjaE1lZGlhdG9yKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYKICAgICAgICAgcmV0dXJu
OwogCiAgICAgc2V0RXZlbnQoV2hlZWxFdmVudDo6Y3JlYXRlKEZsb2F0UG9pbnQoZXZlbnQud2hl
ZWxUaWNrc1goKSwgZXZlbnQud2hlZWxUaWNrc1koKSksIEZsb2F0UG9pbnQoZXZlbnQuZGVsdGFY
KCksIGV2ZW50LmRlbHRhWSgpKSwgZ3JhbnVsYXJpdHkoZXZlbnQpLAotICAgICAgICB2aWV3LCBJ
bnRQb2ludChldmVudC5nbG9iYWxYKCksIGV2ZW50Lmdsb2JhbFkoKSksIEludFBvaW50KGV2ZW50
LngoKSwgZXZlbnQueSgpKSwgZXZlbnQuY3RybEtleSgpLCBldmVudC5hbHRLZXkoKSwgZXZlbnQu
c2hpZnRLZXkoKSwgZXZlbnQubWV0YUtleSgpKSk7Ci0KKyAgICAgICAgdmlldywgSW50UG9pbnQo
ZXZlbnQuZ2xvYmFsWCgpLCBldmVudC5nbG9iYWxZKCkpLCBJbnRQb2ludChldmVudC54KCksIGV2
ZW50LnkoKSksCisjaWYgRU5BQkxFKE1PVVNFX0xPQ0tfQVBJKQorICAgICAgICBJbnRQb2ludChl
dmVudC5tb3ZlbWVudFgoKSwgZXZlbnQubW92ZW1lbnRZKCkpLAorI2VuZGlmCisgICAgICAgIGV2
ZW50LmN0cmxLZXkoKSwgZXZlbnQuYWx0S2V5KCksIGV2ZW50LnNoaWZ0S2V5KCksIGV2ZW50Lm1l
dGFLZXkoKSkpOwogfQogCiBXaGVlbEV2ZW50KiBXaGVlbEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6
ZXZlbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgKaW5kZXggNTIyM2NlNDMzODhlNmY5
MzZmNzI1YzA0M2IxYzYzOWJiYjY4NTNlYi4uOTk4OTAzNDJhNTE0ODdhOGFhOTViMTczYjYyNDQx
ZjVmNjNkYzM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oCkBAIC00NCwxOCArNDQsMzEgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXaGVlbEV2ZW50
PiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgd2hlZWxUaWNrcywKICAgICAgICAgICAgIGNvbnN0
IEZsb2F0UG9pbnQmIHJhd0RlbHRhLCBHcmFudWxhcml0eSBncmFudWxhcml0eSwgUGFzc1JlZlB0
cjxBYnN0cmFjdFZpZXc+IHZpZXcsCiAgICAgICAgICAgICBjb25zdCBJbnRQb2ludCYgc2NyZWVu
TG9jYXRpb24sIGNvbnN0IEludFBvaW50JiBwYWdlTG9jYXRpb24sCisjaWYgRU5BQkxFKE1PVVNF
X0xPQ0tfQVBJKQorICAgICAgICAgICAgY29uc3QgSW50UG9pbnQmIG1vdmVtZW50RGVsdGEsCisj
ZW5kaWYKICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRL
ZXksIGJvb2wgbWV0YUtleSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXaGVlbEV2ZW50KHdoZWVsVGlja3MsIHJhd0RlbHRhLCBncmFudWxhcml0eSwgdmlldywK
LSAgICAgICAgICAgICAgICBzY3JlZW5Mb2NhdGlvbiwgcGFnZUxvY2F0aW9uLCBjdHJsS2V5LCBh
bHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KSk7CisgICAgICAgICAgICAgICAgc2NyZWVuTG9jYXRp
b24sIHBhZ2VMb2NhdGlvbiwKKyNpZiBFTkFCTEUoTU9VU0VfTE9DS19BUEkpCisgICAgICAgICAg
ICAgICAgbW92ZW1lbnREZWx0YSwKKyNlbmRpZgorICAgICAgICAgICAgICAgIGN0cmxLZXksIGFs
dEtleSwgc2hpZnRLZXksIG1ldGFLZXkpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgaW5p
dFdoZWVsRXZlbnQoaW50IHJhd0RlbHRhWCwgaW50IHJhd0RlbHRhWSwgUGFzc1JlZlB0cjxBYnN0
cmFjdFZpZXc+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzY3JlZW5YLCBpbnQg
c2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCisjaWYgRU5BQkxFKE1PVVNFX0xPQ0tfQVBJ
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtb3ZlbWVudFgsIGludCBtb3ZlbWVu
dFksCisjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJv
b2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpOwogCiAgICAgICAgIHZvaWQg
aW5pdFdlYktpdFdoZWVsRXZlbnQoaW50IHJhd0RlbHRhWCwgaW50IHJhd0RlbHRhWSwgUGFzc1Jl
ZlB0cjxBYnN0cmFjdFZpZXc+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCisjaWYgRU5BQkxF
KE1PVVNFX0xPQ0tfQVBJKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBt
b3ZlbWVudFgsIGludCBtb3ZlbWVudFksCisjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29s
IG1ldGFLZXkpOwogCiAgICAgICAgIGludCB3aGVlbERlbHRhKCkgY29uc3QgeyByZXR1cm4gbV93
aGVlbERlbHRhLnkoKSA/IG1fd2hlZWxEZWx0YS55KCkgOiBtX3doZWVsRGVsdGEueCgpOyB9CkBA
IC03Myw2ICs4Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV2hlZWxFdmVudChj
b25zdCBGbG9hdFBvaW50JiB3aGVlbFRpY2tzLCBjb25zdCBGbG9hdFBvaW50JiByYXdEZWx0YSwK
ICAgICAgICAgICAgICAgICAgICBHcmFudWxhcml0eSBncmFudWxhcml0eSwgUGFzc1JlZlB0cjxB
YnN0cmFjdFZpZXc+LAogICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFBvaW50JiBzY3JlZW5M
b2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHBhZ2VMb2NhdGlvbiwKKyNpZiBFTkFCTEUoTU9VU0Vf
TE9DS19BUEkpCisgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UG9pbnQmIG1vdmVtZW50RGVs
dGEsCisjZW5kaWYKICAgICAgICAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5
LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c1doZWVsRXZlbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVl
bEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmlkbAppbmRleCBiZDgx
NTFiN2E2MDg1ZWM3MTUxYTczMTcwM2EyYjZiMjJmMzZmYWU2Li5kZDkzZmM2Njg1NWNkNjU4ZjRh
MzUyNDIwNGJmOWY3ZmE3ZmNlOTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hl
ZWxFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaWRsCkBAIC0y
Niw2ICsyNiwxMCBAQCBtb2R1bGUgZXZlbnRzIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGxvbmcgICAgc2NyZWVuWTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgICAgY2xp
ZW50WDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgICAgY2xpZW50WTsKKyNpZiBk
ZWZpbmVkKEVOQUJMRV9NT1VTRV9MT0NLX0FQSSkgJiYgRU5BQkxFX01PVVNFX0xPQ0tfQVBJCisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nICAgIG1vdmVtZW50WDsKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGxvbmcgICAgbW92ZW1lbnRZOworI2VuZGlmCiAgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBib29sZWFuIGN0cmxLZXk7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBib29sZWFuIHNoaWZ0S2V5OwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBh
bHRLZXk7CkBAIC01Miw2ICs1NiwxMCBAQCBtb2R1bGUgZXZlbnRzIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIGxvbmcgc2Ny
ZWVuWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhE
ZWZhdWx0VmFsdWVdIGxvbmcgY2xpZW50WCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIGxvbmcgY2xpZW50WSwKKyNpZiBkZWZp
bmVkKEVOQUJMRV9NT1VTRV9MT0NLX0FQSSkgJiYgRU5BQkxFX01PVVNFX0xPQ0tfQVBJCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVl
XSBsb25nIG1vdmVtZW50WCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9u
YWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIGxvbmcgbW92ZW1lbnRZLAorI2VuZGlmCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBi
b29sZWFuIGN0cmxLZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFs
PUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBib29sZWFuIGFsdEtleSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIGJvb2xlYW4gc2hp
ZnRLZXksCkBAIC02Niw2ICs3NCwxMCBAQCBtb2R1bGUgZXZlbnRzIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIGxv
bmcgc2NyZWVuWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9u
YWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIGxvbmcgY2xpZW50WCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIGxvbmcg
Y2xpZW50WSwKKyNpZiBkZWZpbmVkKEVOQUJMRV9NT1VTRV9MT0NLX0FQSSkgJiYgRU5BQkxFX01P
VVNFX0xPQ0tfQVBJCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlv
bmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBsb25nIG1vdmVtZW50WCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIGxv
bmcgbW92ZW1lbnRZLAorI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBib29sZWFuIGN0cmxLZXksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVs
dFZhbHVlXSBib29sZWFuIGFsdEtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIGJvb2xlYW4gc2hpZnRLZXksCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4IDc5OTE2M2MyZmFm
ZDAzZGEwN2ZhZmQ1NmE2MjI2MGUwZjQxOTMwY2UuLjM0YjU1ZjMwNTIzMzEzZDFiN2U3MmIzNzc5
YzM5MGUzNDc0ODdlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJp
YnV0ZU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVz
LmluCkBAIC0yMzksNiArMjM5LDcgQEAgb253ZWJraXRhbmltYXRpb25lbmQKIG9ud2Via2l0YmVn
aW5mdWxsc2NyZWVuCiBvbndlYmtpdGVuZGZ1bGxzY3JlZW4KIG9ud2Via2l0ZnVsbHNjcmVlbmNo
YW5nZQorb253ZWJraXRtb3VzZWxvY2tsb3N0CiBvbndlYmtpdHRyYW5zaXRpb25lbmQKIG9wZW4K
IG9wdGltdW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggYjc2N2ViY2Q0MjZk
N2M5YzAxMTEwMWFlYThmMWFkZTJkNzIzYmNmOS4uODZhMTU0YTVmODBkM2VjYTNkNTAzZGJjZWU3
ODVmMGQxZjNkZjk3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTI4Nyw2
ICsyODcsMTAgQEAgdm9pZCBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKiBhdHRyKQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9ud2Via2l0ZnVsbHNj
cmVlbmNoYW5nZUF0dHIpIHsKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkud2Via2l0ZnVsbHNjcmVlbmNoYW5nZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICNlbmRpZgorI2lmIEVOQUJMRShNT1VTRV9MT0NLX0FQ
SSkKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbndlYmtpdG1vdXNlbG9ja2xvc3RB
dHRyKSB7CisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLndl
YmtpdG1vdXNlbG9ja2xvc3RFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlz
LCBhdHRyKSk7CisjZW5kaWYKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAKaW5kZXggZDE4MzU3ZmEwMGUyNzZjMjU4M2I0NmY0NDVmOGU4YjA5NTY3YzQ5OC4u
Njc5NjhhYTI1ZGRmMzVkMTZmNjZlNjEyNDZiOTdjZTgzM2JmZjQwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTc4LDYgKzc4LDkgQEAgc3RhdGljIFBsYXRmb3Jt
TW91c2VFdmVudCBjcmVhdGVNb3VzZUV2ZW50KERyYWdEYXRhKiBkcmFnRGF0YSkKICAgICBzaGlm
dEtleSA9IGN0cmxLZXkgPSBhbHRLZXkgPSBtZXRhS2V5ID0gZmFsc2U7CiAgICAgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpnZXRDdXJyZW50TW9kaWZpZXJTdGF0ZShzaGlmdEtleSwgY3RybEtleSwg
YWx0S2V5LCBtZXRhS2V5KTsKICAgICByZXR1cm4gUGxhdGZvcm1Nb3VzZUV2ZW50KGRyYWdEYXRh
LT5jbGllbnRQb3NpdGlvbigpLCBkcmFnRGF0YS0+Z2xvYmFsUG9zaXRpb24oKSwKKyNpZiBFTkFC
TEUoTU9VU0VfTE9DS19BUEkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2lu
dCgwLCAwKSwgLy8gRklYTUUoc2NoZWliKTogTmVlZCB0byBtb2RpZnkgRHJhZ0RhdGEgdG9vPwor
I2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZWZ0QnV0dG9uLCBNb3VzZUV2
ZW50TW92ZWQsIDAsIHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtZXRhS2V5LCBjdXJyZW50VGltZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAppbmRleCA0ZTQ2N2VhMmMxNmIyNWU5OWI3YjBmMDQ1ZGIwN2NlYmVk
YmU4YjZjLi5lMzk5NjQ3NGE5NTg3Njk0YzNlYzA5ZGIzMDMzN2QwMDIyNWZmYzZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0xNzM0LDYgKzE3MzQsOSBAQCBib29sIEV2
ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIE5vZGUqIGRyYWdUYQogICAgIFJlZlB0cjxNb3VzZUV2ZW50PiBtZSA9IE1vdXNlRXZlbnQ6
OmNyZWF0ZShldmVudFR5cGUsCiAgICAgICAgIHRydWUsIHRydWUsIG1fZnJhbWUtPmRvY3VtZW50
KCktPmRlZmF1bHRWaWV3KCksCiAgICAgICAgIDAsIGV2ZW50Lmdsb2JhbFgoKSwgZXZlbnQuZ2xv
YmFsWSgpLCBldmVudC54KCksIGV2ZW50LnkoKSwKKyNpZiBFTkFCTEUoTU9VU0VfTE9DS19BUEkp
CisgICAgICAgIGV2ZW50Lm1vdmVtZW50WCgpLCBldmVudC5tb3ZlbWVudFkoKSwKKyNlbmRpZgog
ICAgICAgICBldmVudC5jdHJsS2V5KCksIGV2ZW50LmFsdEtleSgpLCBldmVudC5zaGlmdEtleSgp
LCBldmVudC5tZXRhS2V5KCksCiAgICAgICAgIDAsIDAsIGNsaXBib2FyZCk7CiAKQEAgLTIyMTMs
OSArMjIxNiwyMSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0
IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGU6IHsKICAgICAgICAgLy8gRklYTUU6
IFJlZmFjdG9yIHRoaXMgY29kZSB0byBub3QgaGl0IHRlc3QgbXVsdGlwbGUgdGltZXMgb25jZSBo
aXQgdGVzdGluZyBoYXMgYmVlbiBjb3JyZWN0ZWQgYXMgc3VnZ2VzdGVkIGFib3ZlLgotICAgICAg
ICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92ZShnZXN0dXJlRXZlbnQucG9zaXRpb24o
KSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIE5vQnV0dG9uLCBNb3VzZUV2ZW50TW92
ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVF
dmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFL
ZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2
ZW50IGZha2VNb3VzZURvd24oZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5n
bG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwgLyogY2xpY2tD
b3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXko
KSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJl
RXZlbnQudGltZXN0YW1wKCkpOwotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNl
VXAoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigp
LCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UmVsZWFzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2Vz
dHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVu
dC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFt
cCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZU1vdmUoZ2VzdHVyZUV2
ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLAorI2lmIEVOQUJM
RShNT1VTRV9MT0NLX0FQSSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogbW92ZW1lbnREZWx0YSAqLyBJbnRQb2ludCgwLCAwKSwKKyNlbmRpZgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb0J1dHRvbiwgTW91c2VFdmVudE1vdmVk
LCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZl
bnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5
KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVu
dCBmYWtlTW91c2VEb3duKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xv
YmFsUG9zaXRpb24oKSwKKyNpZiBFTkFCTEUoTU9VU0VfTE9DS19BUEkpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1vdmVtZW50RGVsdGEgKi8gSW50UG9pbnQo
MCwgMCksCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TGVmdEJ1dHRvbiwgTW91c2VFdmVudFByZXNzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVy
ZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5h
bHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgp
KTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZVVwKGdlc3R1cmVFdmVudC5w
b3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwKKyNpZiBFTkFCTEUoTU9V
U0VfTE9DS19BUEkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IG1vdmVtZW50RGVsdGEgKi8gSW50UG9pbnQoMCwgMCksCisjZW5kaWYKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIExlZnRCdXR0b24sIE1vdXNlRXZlbnRSZWxlYXNlZCwg
LyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50
LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgp
LCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwogICAgICAgICBtb3VzZU1vdmVkKGZha2VNb3Vz
ZU1vdmUpOwogICAgICAgICBoYW5kbGVNb3VzZVByZXNzRXZlbnQoZmFrZU1vdXNlRG93bik7CiAg
ICAgICAgIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGZha2VNb3VzZVVwKTsKQEAgLTIyMjgsNyAr
MjI0MywxMSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBs
YXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiAgICAgICAgIC8vIEZJWE1FOiBSZXBs
YWNlIHRoaXMgaW50ZXJpbSBpbXBsZW1lbnRhdGlvbiBvbmNlIHRoZSBhYm92ZSBmaXhtZSBoYXMg
YmVlbiBhZGRyZXNzZWQuCiAgICAgICAgIEludFBvaW50IHBvaW50KGdlc3R1cmVFdmVudC5wb3Np
dGlvbigpLngoKSwgZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCkueSgpKTsKICAgICAgICAgSW50UG9p
bnQgZ2xvYmFsUG9pbnQoZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCkueCgpLCBnZXN0dXJl
RXZlbnQuZ2xvYmFsUG9zaXRpb24oKS55KCkpOwotICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQg
c3ludGhldGljV2hlZWxFdmVudChwb2ludCwgZ2xvYmFsUG9pbnQsIGdlc3R1cmVFdmVudC5kZWx0
YVgoKSwgZ2VzdHVyZUV2ZW50LmRlbHRhWSgpLCBnZXN0dXJlRXZlbnQuZGVsdGFYKCkgLyB0aWNr
RGl2aXNvciwgZ2VzdHVyZUV2ZW50LmRlbHRhWSgpIC8gdGlja0Rpdmlzb3IsIFNjcm9sbEJ5UGl4
ZWxXaGVlbEV2ZW50LCAvKiBpc0FjY2VwdGVkICovIGZhbHNlLCBnZXN0dXJlRXZlbnQuc2hpZnRL
ZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0
dXJlRXZlbnQubWV0YUtleSgpKTsKKyAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50IHN5bnRoZXRp
Y1doZWVsRXZlbnQocG9pbnQsIGdsb2JhbFBvaW50LAorI2lmIEVOQUJMRShNT1VTRV9MT0NLX0FQ
SSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbW92
ZW1lbnREZWx0YSAqLyBJbnRQb2ludCgwLCAwKSwKKyNlbmRpZgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXN0dXJlRXZlbnQuZGVsdGFYKCksIGdlc3R1
cmVFdmVudC5kZWx0YVkoKSwgZ2VzdHVyZUV2ZW50LmRlbHRhWCgpIC8gdGlja0Rpdmlzb3IsIGdl
c3R1cmVFdmVudC5kZWx0YVkoKSAvIHRpY2tEaXZpc29yLCBTY3JvbGxCeVBpeGVsV2hlZWxFdmVu
dCwgLyogaXNBY2NlcHRlZCAqLyBmYWxzZSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1
cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1l
dGFLZXkoKSk7CiAgICAgICAgIGhhbmRsZVdoZWVsRXZlbnQoc3ludGhldGljV2hlZWxFdmVudCk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTIzMzksNyArMjM1OCwxMSBAQCBib29s
IEV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnRGb3JLZXkoKQogICAgIE1vdXNlRXZl
bnRUeXBlIGV2ZW50VHlwZSA9IE1vdXNlRXZlbnRQcmVzc2VkOwogI2VuZGlmCiAKLSAgICBQbGF0
Zm9ybU1vdXNlRXZlbnQgbW91c2VFdmVudChwb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIFJpZ2h0
QnV0dG9uLCBldmVudFR5cGUsIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBXVEY6OmN1
cnJlbnRUaW1lKCkpOworICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZUV2ZW50KHBvc2l0aW9u
LCBnbG9iYWxQb3NpdGlvbiwgCisjaWYgRU5BQkxFKE1PVVNFX0xPQ0tfQVBJKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KDAsIDApLAorI2VuZGlmCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmlnaHRCdXR0b24sIGV2ZW50VHlwZSwgMSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIFdURjo6Y3VycmVudFRpbWUoKSk7CiAKICAgICByZXR1
cm4gZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5jb250ZXh0bWVudUV2ZW50LCB0YXJn
ZXROb2RlLCB0cnVlLCAwLCBtb3VzZUV2ZW50LCBmYWxzZSk7CiB9CkBAIC0yMzk0LDcgKzI0MTcs
MTEgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmZha2VNb3VzZU1vdmVFdmVudFRpbWVyRmlyZWQoVGlt
ZXI8RXZlbnRIYW5kbGVyPiogdGltZXIpCiAgICAgYm9vbCBtZXRhS2V5OwogICAgIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6Z2V0Q3VycmVudE1vZGlmaWVyU3RhdGUoc2hpZnRLZXksIGN0cmxLZXks
IGFsdEtleSwgbWV0YUtleSk7CiAgICAgTGF5b3V0UG9pbnQgZ2xvYmFsUG9pbnQgPSB2aWV3LT5j
b250ZW50c1RvU2NyZWVuKExheW91dFJlY3Qodmlldy0+d2luZG93VG9Db250ZW50cyhtX2N1cnJl
bnRNb3VzZVBvc2l0aW9uKSwgTGF5b3V0U2l6ZSgpKSkubG9jYXRpb24oKTsKLSAgICBQbGF0Zm9y
bU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92ZUV2ZW50KG1fY3VycmVudE1vdXNlUG9zaXRpb24sIGds
b2JhbFBvaW50LCBOb0J1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAwLCBzaGlmdEtleSwgY3RybEtl
eSwgYWx0S2V5LCBtZXRhS2V5LCBjdXJyZW50VGltZSgpKTsKKyAgICBQbGF0Zm9ybU1vdXNlRXZl
bnQgZmFrZU1vdXNlTW92ZUV2ZW50KG1fY3VycmVudE1vdXNlUG9zaXRpb24sIGdsb2JhbFBvaW50
LAorI2lmIEVOQUJMRShNT1VTRV9MT0NLX0FQSSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEludFBvaW50KDAsIDApLAorI2VuZGlmCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOb0J1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAwLCBz
aGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5LCBjdXJyZW50VGltZSgpKTsKICAgICBt
b3VzZU1vdmVkKGZha2VNb3VzZU1vdmVFdmVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5j
cHAKaW5kZXggOWM3MDgyMDFlODc4ZWJiOTQ1YWU5ZTFhNDM1OWM0MTk2NDMxYzZmOS4uNmJmOTk0
NWNmZTNkZGNhZjkyZWE2YjQ1NDY5YTZmMWNjNGYzMjQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5jcHAKQEAgLTE5Niw2ICsxOTYsOSBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkK
ICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgLCBtX2Z1bGxTY3JlZW5BUElFbmFibGVk
KGZhbHNlKQogI2VuZGlmCisjaWYgRU5BQkxFKE1PVVNFX0xPQ0tfQVBJKQorICAgICwgbV9tb3Vz
ZUxvY2tBUElFbmFibGVkKGZhbHNlKQorI2VuZGlmCiAgICAgLCBtX2FzeW5jaHJvbm91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKGZhbHNlKQogICAgICwgbV9tZW1vcnlJbmZvRW5hYmxlZChmYWxzZSkK
ICAgICAsIG1faW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbihmYWxzZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuaAppbmRleCBhOWI0YWM1MDExMWViZDZjNTk1OTIzY2VjOGM4OWEwYTQxNzc4NzRhLi42OTUy
MGI0Y2M0M2JlOTYyYzVlNjYxNmI1MzRkMWQ4MTk0NzY3ZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5oCkBAIC0zODQsNiArMzg0LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9v
bCBmdWxsU2NyZWVuRW5hYmxlZCgpIGNvbnN0ICB7IHJldHVybiBtX2Z1bGxTY3JlZW5BUElFbmFi
bGVkOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNT1VTRV9MT0NLX0FQSSkKKyAgICAgICAgdm9p
ZCBzZXRNb3VzZUxvY2tFbmFibGVkKGJvb2wgZmxhZykgeyBtX21vdXNlTG9ja0FQSUVuYWJsZWQg
PSBmbGFnOyB9CisgICAgICAgIGJvb2wgbW91c2VMb2NrRW5hYmxlZCgpIGNvbnN0ICB7IHJldHVy
biBtX21vdXNlTG9ja0FQSUVuYWJsZWQ7IH0KKyNlbmRpZgorCiAjaWYgVVNFKEFWRk9VTkRBVElP
TikKICAgICAgICAgc3RhdGljIHZvaWQgc2V0QVZGb3VuZGF0aW9uRW5hYmxlZChib29sIGZsYWcp
IHsgZ0FWRm91bmRhdGlvbkVuYWJsZWQgPSBmbGFnOyB9CiAgICAgICAgIHN0YXRpYyBib29sIGlz
QVZGb3VuZGF0aW9uRW5hYmxlZCgpIHsgcmV0dXJuIGdBVkZvdW5kYXRpb25FbmFibGVkOyB9CkBA
IC01NzIsNiArNTc3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKICAgICAgICAgYm9vbCBtX2Z1bGxTY3JlZW5BUElFbmFibGVkIDogMTsKICNlbmRp
ZgorI2lmIEVOQUJMRShNT1VTRV9MT0NLX0FQSSkKKyAgICAgICAgYm9vbCBtX21vdXNlTG9ja0FQ
SUVuYWJsZWQgOiAxOworI2VuZGlmCiAgICAgICAgIGJvb2wgbV9hc3luY2hyb25vdXNTcGVsbENo
ZWNraW5nRW5hYmxlZDogMTsKICAgICAgICAgYm9vbCBtX21lbW9yeUluZm9FbmFibGVkOiAxOwog
ICAgICAgICBib29sIG1faW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbjogMTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTW91c2VFdmVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmgKaW5kZXggNzNjMWJiNTgxMzYyY2U2
ZTI5M2E3MTI1OWUyMTJiNTkwMmYyMWIwNS4uYjU4ZTNhMTg4NTI5NjVlNDZjMDE3YzgzNjJiNDM3
ZmE3N2Q5ODMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1N
b3VzZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2
ZW50LmgKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2lmbmRlZiBQ
bGF0Zm9ybU1vdXNlRXZlbnRfaApAQCAtNjgsMTEgKzY4LDExIEBAIHR5cGVkZWYgdW5zaWduZWQg
bG9uZyBpbnQgdWludDMyOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwog
ICAgIC8vIFRoZXNlIGJ1dHRvbiBudW1iZXJzIG1hdGNoIHRoZSBvbmVzIHVzZWQgaW4gdGhlIERP
TSBBUEksIDAgdGhyb3VnaCAyLCBleGNlcHQgZm9yIE5vQnV0dG9uIHdoaWNoIGlzbid0IHNwZWNp
ZmllZC4KICAgICBlbnVtIE1vdXNlQnV0dG9uIHsgTm9CdXR0b24gPSAtMSwgTGVmdEJ1dHRvbiwg
TWlkZGxlQnV0dG9uLCBSaWdodEJ1dHRvbiB9OwogICAgIGVudW0gTW91c2VFdmVudFR5cGUgeyBN
b3VzZUV2ZW50TW92ZWQsIE1vdXNlRXZlbnRQcmVzc2VkLCBNb3VzZUV2ZW50UmVsZWFzZWQsIE1v
dXNlRXZlbnRTY3JvbGwgfTsKLSAgICAKKwogICAgIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudCB7
CiAgICAgcHVibGljOgogICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQoKQpAQCAtOTMsMTAgKzkz
LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgUGxhdGZvcm1Nb3VzZUV2ZW50KGNvbnN0IExheW91dFBvaW50JiBwb3NpdGlvbiwgY29uc3Qg
TGF5b3V0UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBNb3VzZUJ1dHRvbiBidXR0b24sIE1vdXNlRXZl
bnRUeXBlIGV2ZW50VHlwZSwKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50KGNvbnN0IExheW91
dFBvaW50JiBwb3NpdGlvbiwgY29uc3QgTGF5b3V0UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCAKKyNp
ZiBFTkFCTEUoTU9VU0VfTE9DS19BUEkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBMYXlvdXRQb2ludCYgbW92ZW1lbnREZWx0YSwKKyNlbmRpZgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTW91c2VCdXR0b24gYnV0dG9uLCBNb3VzZUV2ZW50VHlwZSBldmVudFR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xpY2tDb3VudCwgYm9vbCBzaGlmdCwgYm9v
bCBjdHJsLCBib29sIGFsdCwgYm9vbCBtZXRhLCBkb3VibGUgdGltZXN0YW1wKQogICAgICAgICAg
ICAgOiBtX3Bvc2l0aW9uKHBvc2l0aW9uKQogICAgICAgICAgICAgLCBtX2dsb2JhbFBvc2l0aW9u
KGdsb2JhbFBvc2l0aW9uKQorI2lmIEVOQUJMRShNT1VTRV9MT0NLX0FQSSkKKyAgICAgICAgICAg
ICwgbV9tb3ZlbWVudERlbHRhKG1vdmVtZW50RGVsdGEpCisjZW5kaWYKICAgICAgICAgICAgICwg
bV9idXR0b24oYnV0dG9uKQogICAgICAgICAgICAgLCBtX2V2ZW50VHlwZShldmVudFR5cGUpCiAg
ICAgICAgICAgICAsIG1fY2xpY2tDb3VudChjbGlja0NvdW50KQpAQCAtMTE5LDYgKzEyNiwxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIExheW91dFVuaXQgeSgpIGNvbnN0IHsgcmV0
dXJuIG1fcG9zaXRpb24ueSgpOyB9CiAgICAgICAgIExheW91dFVuaXQgZ2xvYmFsWCgpIGNvbnN0
IHsgcmV0dXJuIG1fZ2xvYmFsUG9zaXRpb24ueCgpOyB9CiAgICAgICAgIExheW91dFVuaXQgZ2xv
YmFsWSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsUG9zaXRpb24ueSgpOyB9CisjaWYgRU5BQkxF
KE1PVVNFX0xPQ0tfQVBJKQorICAgICAgICBMYXlvdXRVbml0IG1vdmVtZW50WCgpIGNvbnN0IHsg
cmV0dXJuIG1fbW92ZW1lbnREZWx0YS54KCk7IH0KKyAgICAgICAgTGF5b3V0VW5pdCBtb3ZlbWVu
dFkoKSBjb25zdCB7IHJldHVybiBtX21vdmVtZW50RGVsdGEueSgpOyB9CisjZW5kaWYKICAgICAg
ICAgTW91c2VCdXR0b24gYnV0dG9uKCkgY29uc3QgeyByZXR1cm4gbV9idXR0b247IH0KICAgICAg
ICAgTW91c2VFdmVudFR5cGUgZXZlbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFR5cGU7
IH0KICAgICAgICAgaW50IGNsaWNrQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWNrQ291bnQ7
IH0KQEAgLTEyNywxMSArMTM4LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9v
bCBhbHRLZXkoKSBjb25zdCB7IHJldHVybiBtX2FsdEtleTsgfQogICAgICAgICBib29sIG1ldGFL
ZXkoKSBjb25zdCB7IHJldHVybiBtX21ldGFLZXk7IH0KICAgICAgICAgdW5zaWduZWQgbW9kaWZp
ZXJGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpZXJGbGFnczsgfQotICAgICAgICAKKwog
ICAgICAgICAvLyBUaW1lIGluIHNlY29uZHMuCiAgICAgICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBj
b25zdCB7IHJldHVybiBtX3RpbWVzdGFtcDsgfQogCi0jaWYgUExBVEZPUk0oR1RLKSAKKyNpZiBQ
TEFURk9STShHVEspCiAgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudChHZGtFdmVudEJ1dHRvbiop
OwogICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQoR2RrRXZlbnRNb3Rpb24qKTsKICAgICAgICAg
dm9pZCBzZXRDbGlja0NvdW50KGludCBjb3VudCkgeyBtX2NsaWNrQ291bnQgPSBjb3VudDsgfQpA
QCAtMTgwLDYgKzE5MSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIExheW91dFBvaW50IG1fcG9zaXRpb247CiAgICAgICAgIExheW91dFBvaW50IG1fZ2xv
YmFsUG9zaXRpb247CisjaWYgRU5BQkxFKE1PVVNFX0xPQ0tfQVBJKQorICAgICAgICBMYXlvdXRQ
b2ludCBtX21vdmVtZW50RGVsdGE7CisjZW5kaWYKICAgICAgICAgTW91c2VCdXR0b24gbV9idXR0
b247CiAgICAgICAgIE1vdXNlRXZlbnRUeXBlIG1fZXZlbnRUeXBlOwogICAgICAgICBpbnQgbV9j
bGlja0NvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1X
aGVlbEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQu
aAppbmRleCA1MzdlZjRjMDhhMjM3MjQwZmI2YTlhMTVhODFlYmFjYTMxODdiNzZkLi42YWFhN2Zm
MTg4NDE0OTk0N2I2Y2Y3ZjRiZTljOTQxODk1NTJhZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaApAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCiAjaWZuZGVmIFBsYXRmb3JtV2hlZWxFdmVudF9oCkBAIC0xMDYsOSArMTA2
LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgUGxhdGZvcm1XaGVlbEV2ZW50KEludFBvaW50IHBvc2l0aW9uLCBJbnRQb2ludCBnbG9iYWxQ
b3NpdGlvbiwgZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0YVksIGZsb2F0IHdoZWVsVGlja3NYLCBm
bG9hdCB3aGVlbFRpY2tzWSwgUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dHksIGJvb2wgaXNBY2NlcHRlZCwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29sIGFs
dEtleSwgYm9vbCBtZXRhS2V5KQorICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoSW50UG9pbnQg
cG9zaXRpb24sIEludFBvaW50IGdsb2JhbFBvc2l0aW9uLAorI2lmIEVOQUJMRShNT1VTRV9MT0NL
X0FQSSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50IG1vdmVtZW50RGVsdGEs
CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRlbHRhWCwgZmxvYXQg
ZGVsdGFZLCBmbG9hdCB3aGVlbFRpY2tzWCwgZmxvYXQgd2hlZWxUaWNrc1ksIFBsYXRmb3JtV2hl
ZWxFdmVudEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGlzQWNjZXB0ZWQsIGJvb2wgc2hp
ZnRLZXksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgbWV0YUtleSkKICAgICAgICAg
ICAgIDogbV9wb3NpdGlvbihwb3NpdGlvbikKICAgICAgICAgICAgICwgbV9nbG9iYWxQb3NpdGlv
bihnbG9iYWxQb3NpdGlvbikKKyNpZiBFTkFCTEUoTU9VU0VfTE9DS19BUEkpCisgICAgICAgICAg
ICAsIG1fbW92ZW1lbnREZWx0YShtb3ZlbWVudERlbHRhKQorI2VuZGlmCiAgICAgICAgICAgICAs
IG1fZGVsdGFYKGRlbHRhWCkKICAgICAgICAgICAgICwgbV9kZWx0YVkoZGVsdGFZKQogICAgICAg
ICAgICAgLCBtX3doZWVsVGlja3NYKHdoZWVsVGlja3NYKQpAQCAtMTQ5LDYgKzE1NiwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGludCB5KCkgY29uc3QgeyByZXR1cm4gbV9wb3Np
dGlvbi55KCk7IH0KICAgICAgICAgaW50IGdsb2JhbFgoKSBjb25zdCB7IHJldHVybiBtX2dsb2Jh
bFBvc2l0aW9uLngoKTsgfSAvLyBTY3JlZW4gY29vcmRpbmF0ZXMuCiAgICAgICAgIGludCBnbG9i
YWxZKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxQb3NpdGlvbi55KCk7IH0KKyNpZiBFTkFCTEUo
TU9VU0VfTE9DS19BUEkpCisgICAgICAgIGludCBtb3ZlbWVudFgoKSBjb25zdCB7IHJldHVybiBt
X21vdmVtZW50RGVsdGEueCgpOyB9CisgICAgICAgIGludCBtb3ZlbWVudFkoKSBjb25zdCB7IHJl
dHVybiBtX21vdmVtZW50RGVsdGEueSgpOyB9CisjZW5kaWYKIAogICAgICAgICB2b2lkIGFjY2Vw
dCgpIHsgbV9pc0FjY2VwdGVkID0gdHJ1ZTsgfQogICAgICAgICB2b2lkIGlnbm9yZSgpIHsgbV9p
c0FjY2VwdGVkID0gZmFsc2U7IH0KQEAgLTIwNSw2ICsyMTYsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBJbnRQb2ludCBtX3Bvc2l0aW9uOwogICAgICAg
ICBJbnRQb2ludCBtX2dsb2JhbFBvc2l0aW9uOworI2lmIEVOQUJMRShNT1VTRV9MT0NLX0FQSSkK
KyAgICAgICAgSW50UG9pbnQgbV9tb3ZlbWVudERlbHRhOworI2VuZGlmCiAgICAgICAgIGZsb2F0
IG1fZGVsdGFYOwogICAgICAgICBmbG9hdCBtX2RlbHRhWTsKICAgICAgICAgZmxvYXQgbV93aGVl
bFRpY2tzWDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bv
cHVwQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVw
Q29udGFpbmVyLmNwcAppbmRleCA3M2RlZWQzZDkwZDZjYWE5YWUzNDg5MWEzMDA2MDY4YTA4YTEx
YmY5Li4xYmRlNjc0NmQ4Mzg4YWY5MzVlNmY2ZTZlNDQ3OTIyODQyMDY0MjE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuY3BwCkBA
IC0yOTgsOSArMjk4LDIxIEBAIGJvb2wgUG9wdXBDb250YWluZXI6OmhhbmRsZUdlc3R1cmVFdmVu
dChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50CiB7CiAgICAgc3dpdGNo
IChnZXN0dXJlRXZlbnQudHlwZSgpKSB7CiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6
VGFwVHlwZTogewotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92ZShnZXN0
dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIE5vQnV0
dG9uLCBNb3VzZUV2ZW50TW92ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNo
aWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwg
Z2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKLSAgICAg
ICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZURvd24oZ2VzdHVyZUV2ZW50LnBvc2l0aW9u
KCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50
UHJlc3NlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2Vz
dHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQu
bWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOwotICAgICAgICBQbGF0Zm9ybU1v
dXNlRXZlbnQgZmFrZU1vdXNlVXAoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVu
dC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UmVsZWFzZWQsIC8qIGNs
aWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJs
S2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2Vz
dHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VN
b3VzZU1vdmUoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3Np
dGlvbigpLAorI2lmIEVOQUJMRShNT1VTRV9MT0NLX0FQSSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSW50UG9pbnQoMCwgMCksCisjZW5kaWYKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9CdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwg
LyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50
LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgp
LCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOworICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQg
ZmFrZU1vdXNlRG93bihnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2Jh
bFBvc2l0aW9uKCksCisjaWYgRU5BQkxFKE1PVVNFX0xPQ0tfQVBJKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludCgwLCAwKSwKKyNlbmRpZgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50
UHJlc3NlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2Vz
dHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQu
bWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOworICAgICAgICBQbGF0Zm9ybU1v
dXNlRXZlbnQgZmFrZU1vdXNlVXAoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVu
dC5nbG9iYWxQb3NpdGlvbigpLAorI2lmIEVOQUJMRShNT1VTRV9MT0NLX0FQSSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KDAsIDApLAorI2VuZGlmCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZWZ0QnV0dG9uLCBNb3VzZUV2
ZW50UmVsZWFzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCks
IGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2
ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKICAgICAgICAgLy8gaGFu
ZGxlTW91c2VNb3ZlRXZlbnQoZmFrZU1vdXNlTW92ZSk7CiAgICAgICAgIGhhbmRsZU1vdXNlRG93
bkV2ZW50KGZha2VNb3VzZURvd24pOwogICAgICAgICBoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChm
YWtlTW91c2VVcCk7CkBAIC0zMDksNyArMzIxLDExIEBAIGJvb2wgUG9wdXBDb250YWluZXI6Omhh
bmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50
CiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6RG91YmxlVGFwVHlwZToKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlwZTog
ewotICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgc3ludGhldGljV2hlZWxFdmVudChnZXN0dXJl
RXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIGdlc3R1cmVF
dmVudC5kZWx0YVgoKSwgZ2VzdHVyZUV2ZW50LmRlbHRhWSgpLCBnZXN0dXJlRXZlbnQuZGVsdGFY
KCkgLyAxMjAuMGYsIGdlc3R1cmVFdmVudC5kZWx0YVkoKSAvIDEyMC4wZiwgU2Nyb2xsQnlQaXhl
bFdoZWVsRXZlbnQsIC8qIGlzQWNjZXB0ZWQgKi8gZmFsc2UsIGdlc3R1cmVFdmVudC5zaGlmdEtl
eSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1
cmVFdmVudC5tZXRhS2V5KCkpOworICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgc3ludGhldGlj
V2hlZWxFdmVudChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBv
c2l0aW9uKCksCisjaWYgRU5BQkxFKE1PVVNFX0xPQ0tfQVBJKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludCgwLCAwKSwKKyNlbmRpZgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXN0dXJlRXZlbnQu
ZGVsdGFYKCksIGdlc3R1cmVFdmVudC5kZWx0YVkoKSwgZ2VzdHVyZUV2ZW50LmRlbHRhWCgpIC8g
MTIwLjBmLCBnZXN0dXJlRXZlbnQuZGVsdGFZKCkgLyAxMjAuMGYsIFNjcm9sbEJ5UGl4ZWxXaGVl
bEV2ZW50LCAvKiBpc0FjY2VwdGVkICovIGZhbHNlLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwg
Z2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZl
bnQubWV0YUtleSgpKTsKICAgICAgICAgaGFuZGxlV2hlZWxFdmVudChzeW50aGV0aWNXaGVlbEV2
ZW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCBkY2E2ZTkxNzM5YTY3NjUxZDUzMzZkNTQwNjJjMTEyNWUyYzliODkzLi41ZDA5OWIy
ZTI5ZmYyOTFjMmNlYzU4ZDFmODE0MTIzMjgyZjgzNjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDExLTA5LTIyICBWaW5jZW50IFNjaGVpYiAgPHNjaGVp
YkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV0lQIE1vdXNlIExvY2sgQVBJCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODQ2OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmVhdHVyZXMuZ3lwaToKKyAg
ICAgICAgKiBwdWJsaWMvV2ViSW5wdXRFdmVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJNb3Vz
ZUV2ZW50OjpXZWJNb3VzZUV2ZW50KToKKyAgICAgICAgKiBwdWJsaWMvV2ViUnVudGltZUZlYXR1
cmVzLmg6CisgICAgICAgICogcHVibGljL1dlYlNldHRpbmdzLmg6CisgICAgICAgICogc3JjL1dl
YklucHV0RXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1Nb3Vz
ZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXI6OlBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIp
OgorICAgICAgICAqIHNyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZU1vdXNlTG9ja0FQSSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJ1bnRpbWVGZWF0dXJlczo6aXNNb3VzZUxvY2tBUElFbmFibGVkKToKKyAgICAgICAg
KiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJ
bXBsOjpzZXRNb3VzZUxvY2tFbmFibGVkKToKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBs
Lmg6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OmRyYWdTb3VyY2VFbmRlZEF0KToKKwogMjAxMS0wOS0xMyAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gVGhlIGNoZWNrZWQgc3Rh
dGUgb2YgV2ViUG9wdXBNZW51SXRlbSBpc24ndCBpbml0aWFsaXplZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9mZWF0dXJlcy5neXBpCmluZGV4IDk1M2RjODdhYTgyNzhlNjRmY2E4ZGI2NDlkNjZjNTZkYWYw
ZGZlNzEuLmYwMTU1NTJjNWMxZTc4OTY4MGYyMWQ0YWJiMTQ2OGI5MDI1YjU2NzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKQEAgLTY0LDYgKzY0LDcgQEAKICAgICAgICdFTkFC
TEVfTUVESUFfU1RBVElTVElDUz0xJywKICAgICAgICdFTkFCTEVfTUVESUFfU1RSRUFNPTEnLAog
ICAgICAgJ0VOQUJMRV9NSFRNTD0xJywKKyAgICAgICdFTkFCTEVfTU9VU0VfTE9DS19BUEk9MScs
ICMgRklYTUU6IEluaXRpYWwgbGFuZCB3aXRoIGNvbXBpbGUgZW5hYmxlZCBvciBub3Q/CiAgICAg
ICAnRU5BQkxFX05PVElGSUNBVElPTlM9MScsCiAgICAgICAnRU5BQkxFX09GRkxJTkVfV0VCX0FQ
UExJQ0FUSU9OUz0xJywKICAgICAgICdFTkFCTEVfT1BFTlRZUEVfU0FOSVRJWkVSPTEnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCmluZGV4IGYxNmUz
MWJiNGFkNGVjOWU0MjYzY2Y2MDE0ZDE4MGFiMWY2NjUxMTEuLjlmYjdmMmEyNjBjYzE1NTA4MTZi
YTdlYWQ3ODE3MzY2M2I1ZGI3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklucHV0RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJJbnB1dEV2ZW50LmgKQEAgLTI2NCw2ICsyNjQsOCBAQCBwdWJsaWM6CiAgICAgaW50IHdp
bmRvd1k7CiAgICAgaW50IGdsb2JhbFg7CiAgICAgaW50IGdsb2JhbFk7CisgICAgaW50IG1vdmVt
ZW50WDsKKyAgICBpbnQgbW92ZW1lbnRZOwogICAgIGludCBjbGlja0NvdW50OwogCiAgICAgV2Vi
TW91c2VFdmVudCh1bnNpZ25lZCBzaXplUGFyYW0gPSBzaXplb2YoV2ViTW91c2VFdmVudCkpCkBA
IC0yNzUsNiArMjc3LDggQEAgcHVibGljOgogICAgICAgICAsIHdpbmRvd1koMCkKICAgICAgICAg
LCBnbG9iYWxYKDApCiAgICAgICAgICwgZ2xvYmFsWSgwKQorICAgICAgICAsIG1vdmVtZW50WCgw
KQorICAgICAgICAsIG1vdmVtZW50WSgwKQogICAgICAgICAsIGNsaWNrQ291bnQoMCkKICAgICB7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUnVu
dGltZUZlYXR1cmVzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJSdW50aW1l
RmVhdHVyZXMuaAppbmRleCBlZjBlMmFkZTMxMWFkNDNmZTRhNGIxMzU0NTk3MDNiYzE2OWQ3NDU4
Li5kZmJmZWYzNTJhZjU2OGYyYTQ5NDc0ZmMzNjc4ZThiOTc2NzM3YmIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJSdW50aW1lRmVhdHVyZXMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJSdW50aW1lRmVhdHVyZXMuaApAQCAtMTA5
LDYgKzEwOSw5IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIGVuYWJs
ZUZ1bGxTY3JlZW5BUEkoYm9vbCk7CiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0Z1
bGxTY3JlZW5BUElFbmFibGVkKCk7CiAKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIGVu
YWJsZU1vdXNlTG9ja0FQSShib29sKTsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBib29sIGlz
TW91c2VMb2NrQVBJRW5hYmxlZCgpOworCiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBl
bmFibGVNZWRpYVNvdXJjZShib29sKTsKICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBib29sIGlz
TWVkaWFTb3VyY2VFbmFibGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJTZXR0aW5ncy5oCmluZGV4IDA0NGQwNjE4Nzc0ZmVmNDE4NTNjNmIwMWMyMjhlNzY4MDNlY2Mz
ODUuLmY5ZTY0YjE0NWFhODdhZWEzOTYyNzg5MDRiMTEyYmI4YTljNTRiYzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaApAQCAtMTIzLDYgKzEyMyw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsaWRhdGlvbk1lc3NhZ2VUaW1lck1hZ25p
ZmljYXRpb24oaW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE1pbmltdW1UaW1lckludGVy
dmFsKGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGdWxsU2NyZWVuRW5hYmxlZChi
b29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldE1vdXNlTG9ja0VuYWJsZWQoYm9vbCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChib29s
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50
KGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyhi
b29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1
dEV2ZW50Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1
dEV2ZW50Q29udmVyc2lvbi5jcHAKaW5kZXggNzU2NTg4NWQ4OGY5NWRjMTY3ZGE2ZDE0Y2E4ZDAy
ODJlNTg3YWYwNC4uYTAxOGMxYTY3M2YwMzU5ZTUyY2I0MWNhMWM3M2Y3ODAxOGMwNDAxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252
ZXJzaW9uLmNwcApAQCAtNjAsNiArNjAsOSBAQCBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyOjpQ
bGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKFdpZGdldCogd2lkZ2V0LCBjb25zdCBXZWJNbwogICAg
IC8vIHRvIGdldCByaWQgb2YgdGhpcyBvbmNlIHdlIGFic3RyYWN0IHBvcHVwcyBpbnRvIGEgV2Vi
S2l0IEFQSS4KICAgICBtX3Bvc2l0aW9uID0gd2lkZ2V0LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdX
aW5kb3coSW50UG9pbnQoZS54LCBlLnkpKTsKICAgICBtX2dsb2JhbFBvc2l0aW9uID0gSW50UG9p
bnQoZS5nbG9iYWxYLCBlLmdsb2JhbFkpOworI2lmIEVOQUJMRShNT1VTRV9MT0NLX0FQSSkKKyAg
ICBtX21vdmVtZW50RGVsdGEgPSBJbnRQb2ludChlLm1vdmVtZW50WCwgZS5tb3ZlbWVudFkpOwor
I2VuZGlmCiAgICAgbV9idXR0b24gPSBzdGF0aWNfY2FzdDxNb3VzZUJ1dHRvbj4oZS5idXR0b24p
OwogICAgIG1fc2hpZnRLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpTaGlmdEtl
eSk7CiAgICAgbV9jdHJsS2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6Q29udHJv
bEtleSk7CkBAIC05NCw2ICs5Nyw5IEBAIFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXI6OlBsYXRm
b3JtV2hlZWxFdmVudEJ1aWxkZXIoV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYk1vCiB7CiAgICAg
bV9wb3NpdGlvbiA9IHdpZGdldC0+Y29udmVydEZyb21Db250YWluaW5nV2luZG93KEludFBvaW50
KGUueCwgZS55KSk7CiAgICAgbV9nbG9iYWxQb3NpdGlvbiA9IEludFBvaW50KGUuZ2xvYmFsWCwg
ZS5nbG9iYWxZKTsKKyNpZiBFTkFCTEUoTU9VU0VfTE9DS19BUEkpCisgICAgbV9tb3ZlbWVudERl
bHRhID0gSW50UG9pbnQoZS5tb3ZlbWVudFgsIGUubW92ZW1lbnRZKTsKKyNlbmRpZgogICAgIG1f
ZGVsdGFYID0gZS5kZWx0YVg7CiAgICAgbV9kZWx0YVkgPSBlLmRlbHRhWTsKICAgICBtX3doZWVs
VGlja3NYID0gZS53aGVlbFRpY2tzWDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlJ1bnRpbWVGZWF0dXJlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwCmluZGV4IDNhYzhkNmQyNTk3YjhkYTIwZGJjNGQ0YTZj
OWQzYjI1OTg0YTZmZmYuLjI3MjQ1NDQ2YjllZTg3ZjdiYjUwNjNjNGY0NWI5NzY0ZjlhMmI3N2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJ1bnRpbWVGZWF0dXJl
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUnVudGltZUZlYXR1cmVz
LmNwcApAQCAtMzc0LDYgKzM3NCwyNCBAQCBib29sIFdlYlJ1bnRpbWVGZWF0dXJlczo6aXNGdWxs
U2NyZWVuQVBJRW5hYmxlZCgpCiAjZW5kaWYKIH0KIAordm9pZCBXZWJSdW50aW1lRmVhdHVyZXM6
OmVuYWJsZU1vdXNlTG9ja0FQSShib29sIGVuYWJsZSkKK3sKKyNpZiBFTkFCTEUoTU9VU0VfTE9D
S19BUEkpCisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0V2Via2l0TW91c2VMb2NrQVBJ
RW5hYmxlZChlbmFibGUpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZW5hYmxlKTsKKyNlbmRp
ZgorfQorCitib29sIFdlYlJ1bnRpbWVGZWF0dXJlczo6aXNNb3VzZUxvY2tBUElFbmFibGVkKCkK
K3sKKyNpZiBFTkFCTEUoTU9VU0VfTE9DS19BUEkpCisgICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OndlYmtpdE1vdXNlTG9ja0FQSUVuYWJsZWQoKTsKKyNlbHNlCisgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmCit9CisKIHZvaWQgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVNZWRp
YVNvdXJjZShib29sIGVuYWJsZSkKIHsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKaW5kZXggYjQ2MzQw
MTkxZTJmYjYxMmQ2Y2YzM2NhZDY3OTY2ZDNiMGQyMzRlYy4uM2FiMmYyOTczZTkzNDFmMWVlZDEx
MzQ2ODhlYzYyZDU3NjM0NDdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC00MTIsNiArNDEyLDE1IEBAIHZvaWQgV2ViU2V0dGluZ3NJ
bXBsOjpzZXRGdWxsU2NyZWVuRW5hYmxlZChib29sIGVuYWJsZWQpCiAjZW5kaWYKIH0KIAordm9p
ZCBXZWJTZXR0aW5nc0ltcGw6OnNldE1vdXNlTG9ja0VuYWJsZWQoYm9vbCBlbmFibGVkKQorewor
I2lmIEVOQUJMRShNT1VTRV9MT0NLX0FQSSkKKyAgICBtX3NldHRpbmdzLT5zZXRNb3VzZUxvY2tF
bmFibGVkKGVuYWJsZWQpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CisjZW5k
aWYKK30KKwogdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVD
b250ZW50KGJvb2wgZW5hYmxlZCkKIHsKICAgICBtX3NldHRpbmdzLT5zZXRBbGxvd0Rpc3BsYXlP
Zkluc2VjdXJlQ29udGVudChlbmFibGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2V0dGluZ3NJbXBsLmgKaW5kZXggMTkwNjk5NWRiNzk1MTE5OTQxYmExOTFjNmU1NjIwZGIw
NTE5YWRkMC4uZjIxODBmMWNmM2YxZTY0YWZkM2EwNjQyZGJkMjZjYmM0YzFjNzRlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTExNSw2ICsx
MTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbGlkYXRpb25NZXNzYWdlVGlt
ZXJNYWduaWZpY2F0aW9uKGludCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE1pbmltdW1UaW1lcklu
dGVydmFsKGRvdWJsZSk7CiAgICAgdmlydHVhbCB2b2lkIHNldEZ1bGxTY3JlZW5FbmFibGVkKGJv
b2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRNb3VzZUxvY2tFbmFibGVkKGJvb2wpOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChib29sKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCk7CiAgICAg
dmlydHVhbCB2b2lkIHNldFNob3VsZFByaW50QmFja2dyb3VuZHMoYm9vbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNjliNzU4MTFkODBlODU1OGRj
YzVhMDlkMDY5NDkwZDUxNzljMzk3YS4uNzAxMTM1NWE2MzM2ZThlOWVhODNiMTJhZWJhNDI2OThk
NmRiZWI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApA
QCAtMTk5OSw2ICsxOTk5LDkgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZHJhZ1NvdXJjZUVuZGVkQXQo
CiB7CiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IHBtZShjbGllbnRQb2ludCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNjcmVlblBvaW50LAorI2lmIEVOQUJMRShNT1VTRV9MT0NLX0FQSSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlBvaW50KDAsIDApLCAvLyBGSVhNRShzY2hl
aWIpIE5lZWQgdG8gcG9sdXRlIGRyYWcgY29kZT8KKyNlbmRpZgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTGVmdEJ1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIDApOwogICAgIG1fcGFnZS0+
bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5kcmFnU291cmNlRW5kZWRBdChwbWUsCg==
</data>
<flag name="review"
          id="109626"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>