<?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>99036</bug_id>
          
          <creation_ts>2012-10-11 06:00:26 -0700</creation_ts>
          <short_desc>[GTK] Enable Pointer Lock feature</short_desc>
          <delta_ts>2019-11-08 08:04:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>202956</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk, LayoutTestFailure</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Anton Obzhirov">obzhirov</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>buildbot</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>clopez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jinwoo7.song</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mathstuf</cc>
    
    <cc>mrobinson</cc>
    
    <cc>obzhirov</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>scheib</cc>
    
    <cc>spena</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>739869</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-10-11 06:00:26 -0700</bug_when>
    <thetext>Guarded by the ENABLE_POINTER_LOCK feature define. Not currently present in Source/WebCore/GNUmakefile.features.am.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825408</commentid>
    <comment_count>1</comment_count>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2013-02-05 05:38:05 -0800</bug_when>
    <thetext>I will have a look on this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911586</commentid>
    <comment_count>2</comment_count>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2013-07-25 05:55:27 -0700</bug_when>
    <thetext>The tests that are really testing the feature are located in LayoutTests/pointer-lock.
Some information about pointer lock:
https://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html
https://developer.mozilla.org/en-US/docs/WebAPI/Pointer_Lock</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911592</commentid>
    <comment_count>3</comment_count>
      <attachid>207452</attachid>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2013-07-25 06:12:02 -0700</bug_when>
    <thetext>Created attachment 207452
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911593</commentid>
    <comment_count>4</comment_count>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2013-07-25 06:14:16 -0700</bug_when>
    <thetext>Early path for initial review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913363</commentid>
    <comment_count>5</comment_count>
      <attachid>207851</attachid>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2013-07-31 07:38:33 -0700</bug_when>
    <thetext>Created attachment 207851
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913364</commentid>
    <comment_count>6</comment_count>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2013-07-31 07:39:40 -0700</bug_when>
    <thetext>Updated patch to get latest upstream and to get EWS running.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913365</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-31 07:40:42 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913366</commentid>
    <comment_count>8</comment_count>
      <attachid>207851</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-07-31 07:56:03 -0700</bug_when>
    <thetext>Comment on attachment 207851
Patch

Attachment 207851 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1297611</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913371</commentid>
    <comment_count>9</comment_count>
      <attachid>207851</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-07-31 08:14:04 -0700</bug_when>
    <thetext>Comment on attachment 207851
Patch

Attachment 207851 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1290790</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913375</commentid>
    <comment_count>10</comment_count>
      <attachid>207851</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-07-31 08:32:45 -0700</bug_when>
    <thetext>Comment on attachment 207851
Patch

Attachment 207851 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/1296730</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913380</commentid>
    <comment_count>11</comment_count>
      <attachid>207851</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-07-31 09:36:54 -0700</bug_when>
    <thetext>Comment on attachment 207851
Patch

Attachment 207851 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/1290805</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913411</commentid>
    <comment_count>12</comment_count>
      <attachid>207851</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-07-31 10:40:15 -0700</bug_when>
    <thetext>Comment on attachment 207851
Patch

Attachment 207851 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/1297642</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917931</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Pena">spena</who>
    <bug_when>2013-08-16 06:03:08 -0700</bug_when>
    <thetext>I applied your patch locally and then checked http://threejs.org/examples/misc_controls_pointerlock.html, and it works! :)

(I run it with Tools/Scripts/run-launcher --gtk --release -2 --enable-webgl=TRUE http://threejs.org/examples/misc_controls_pointerlock.html)

However, I noticed a couple of issues:

 * First, the lock wasn&apos;t released when I pressed Esc, so I had to close minibrowser to stop.
 * Then, you probably need to do some adjustments on how you calculate the way it turns. In Chromium, you&apos;re able to turn 360º, while in Minibrowser the range was something closer to maybe 120º. That also happens when looking up &amp; down.

Regarding the patch itself, I didn&apos;t check much, but I think you missed some memory cleanup in the webkitWebViewBaseUnlockMouse and webkitWebViewBaseLockMouse methods.

Pretty nice! I already look forward to trying http://media.tojicode.com/q3bsp/!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>918568</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Pena">spena</who>
    <bug_when>2013-08-19 01:23:36 -0700</bug_when>
    <thetext>I filed a bug about the Quake 3 Map explorer not working due to a crash in JSC, in bug #119895</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924708</commentid>
    <comment_count>15</comment_count>
    <who name="Ben Boeckel">mathstuf</who>
    <bug_when>2013-09-04 17:46:11 -0700</bug_when>
    <thetext>Should this use permission-request as well? Or is there a guaranteed way to break any pointer lock status?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927249</commentid>
    <comment_count>16</comment_count>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2013-09-10 03:04:26 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Should this use permission-request as well? Or is there a guaranteed way to break any pointer lock status?
Well ESC should break it - however after checking other browsers they do issue permission request. So probably I need to add it in my patch or create new patch after this one is approved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935779</commentid>
    <comment_count>17</comment_count>
      <attachid>213248</attachid>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2013-10-03 08:25:55 -0700</bug_when>
    <thetext>Created attachment 213248
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935786</commentid>
    <comment_count>18</comment_count>
      <attachid>213248</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-03 08:46:07 -0700</bug_when>
    <thetext>Comment on attachment 213248
Patch

Attachment 213248 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/2918146</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935813</commentid>
    <comment_count>19</comment_count>
      <attachid>213248</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-03 09:08:44 -0700</bug_when>
    <thetext>Comment on attachment 213248
Patch

Attachment 213248 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/3109155</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935826</commentid>
    <comment_count>20</comment_count>
      <attachid>213248</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-03 09:42:59 -0700</bug_when>
    <thetext>Comment on attachment 213248
Patch

Attachment 213248 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/3116135</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935858</commentid>
    <comment_count>21</comment_count>
      <attachid>213276</attachid>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2013-10-03 10:43:17 -0700</bug_when>
    <thetext>Created attachment 213276
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936146</commentid>
    <comment_count>22</comment_count>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2013-10-04 02:30:28 -0700</bug_when>
    <thetext>Summary about my 2013-10-03 patch: I fixed mouse clipping issue, added handling of ESC key, fixed few other small issues and tried to simplify patch a bit. All tests from LayoutTests/pointer-lock/ are pass. Regarding permission request I am planning to submit it after this patch goes upstream.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940857</commentid>
    <comment_count>23</comment_count>
      <attachid>213276</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-10-17 11:17:19 -0700</bug_when>
    <thetext>Comment on attachment 213276
Patch

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

Hrm. I&apos;m not sure I understand why so much of this is in the UI process. It seems like a lot of it could move to the web process and be written in a cross-platform way.

&gt; Source/WTF/wtf/FeatureDefines.h:692
&gt;  #if !defined(ENABLE_POINTER_LOCK)
&gt; +#if PLATFORM(GTK)
&gt; +#define ENABLE_POINTER_LOCK 1
&gt; +#else
&gt;  #define ENABLE_POINTER_LOCK 0
&gt;  #endif
&gt; +#endif

This probably isn&apos;t the right place to do this. Instead you should define ENABLE_POINTER_LOCK via the Scripts directory.

&gt; Source/WebCore/dom/Document.cpp:5492
&gt;      if (Element* target = page()-&gt;pointerLockController()-&gt;element()) {
&gt; -        if (target-&gt;document() != this)
&gt; +        if (&amp;target-&gt;document() != this)
&gt;              return;
&gt;      }

Is this just a build fix? If so, you should split it out into another patch.

&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h:149
&gt;  #endif
&gt; -
&gt;          virtual bool shouldRubberBandInDirection(ScrollDirection) const { return true; }

Looks unecessary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941119</commentid>
    <comment_count>24</comment_count>
      <attachid>213276</attachid>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2013-10-18 01:45:13 -0700</bug_when>
    <thetext>Comment on attachment 213276
Patch

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

&gt;&gt; Source/WTF/wtf/FeatureDefines.h:692
&gt;&gt; +#endif
&gt; 
&gt; This probably isn&apos;t the right place to do this. Instead you should define ENABLE_POINTER_LOCK via the Scripts directory.

Yep, will do that.

&gt;&gt; Source/WebCore/dom/Document.cpp:5492
&gt;&gt;      }
&gt; 
&gt; Is this just a build fix? If so, you should split it out into another patch.

Yes. I&apos;ll create another patch for this.

&gt;&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h:149
&gt;&gt;          virtual bool shouldRubberBandInDirection(ScrollDirection) const { return true; }
&gt; 
&gt; Looks unecessary

Sorry, forgot to remove white space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941123</commentid>
    <comment_count>25</comment_count>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2013-10-18 02:17:15 -0700</bug_when>
    <thetext>Thanks for the review!

About changes in UIProcess - could you clarify what can be made cross platform?

In general each platform has it its own way of locking pointer and handling mouse events when mouse locked is different as well (for example I have to move mouse back to the the center of the window to avoid clipping of mouse movements in GTK). I also followed the model they use in blink since it already works there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945116</commentid>
    <comment_count>26</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-10-30 12:20:44 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Thanks for the review!
&gt; 
&gt; About changes in UIProcess - could you clarify what can be made cross platform?
&gt; 
&gt; In general each platform has it its own way of locking pointer and handling mouse events when mouse locked is different as well (for example I have to move mouse back to the the center of the window to avoid clipping of mouse movements in GTK). I also followed the model they use in blink since it already works there.

I was thinking it might make more sense to just notify that the WebProcess that pointer lock has started and always send the same type of events across the IPC channel. Then the WebProcess can be responsible for interpreting the events properly. I&apos;m not sure it makes sense for the UIProcess to modify the event according to the pointer lock state. Is there a reason this kind of design is infeasible?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990298</commentid>
    <comment_count>27</comment_count>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2014-03-13 22:02:25 -0700</bug_when>
    <thetext>Is there any more progress? I&apos;d like to start work in EFL port so I&apos;m looking forward this patch to be landed. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990459</commentid>
    <comment_count>28</comment_count>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2014-03-14 07:08:20 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; Is there any more progress? I&apos;d like to start work in EFL port so I&apos;m looking forward this patch to be landed. :)
I have a plan to start working on this patch soon. Probably beginning of April. Please let me know if this would be good enough for you, so we can think of some alternative solution otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990790</commentid>
    <comment_count>29</comment_count>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2014-03-14 19:50:09 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; Is there any more progress? I&apos;d like to start work in EFL port so I&apos;m looking forward this patch to be landed. :)
&gt; I have a plan to start working on this patch soon. Probably beginning of April. Please let me know if this would be good enough for you, so we can think of some alternative solution otherwise.

Sounds good! I&apos;ll prepare a patch based on yours.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109843</commentid>
    <comment_count>30</comment_count>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2015-07-16 01:48:30 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; Is there any more progress? I&apos;d like to start work in EFL port so I&apos;m looking forward this patch to be landed. :)
&gt; I have a plan to start working on this patch soon. Probably beginning of
&gt; April. Please let me know if this would be good enough for you, so we can
&gt; think of some alternative solution otherwise.

Any update on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1153328</commentid>
    <comment_count>31</comment_count>
      <attachid>213276</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-01-06 19:46:20 -0800</bug_when>
    <thetext>Comment on attachment 213276
Patch

Looks like this patch needs more work, according to the comments above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588642</commentid>
    <comment_count>32</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2019-11-08 08:04:42 -0800</bug_when>
    <thetext>I just discovered this bug now :\
This feature has been implemented in the end in bugs 202956 and 203896

*** This bug has been marked as a duplicate of bug 202956 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207452</attachid>
            <date>2013-07-25 06:12:02 -0700</date>
            <delta_ts>2013-07-31 07:38:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99036-20130725141247.patch</filename>
            <type>text/plain</type>
            <size>41670</size>
            <attacher name="Anton Obzhirov">obzhirov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyOTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE1OTEzMWVmNmQwZDc2MGY0OTA4NmU1
ZWY3MjRjYjU1YjNmYmUzYzYuLjhjMTUzZWRjNzFlMGJhNjQ3MTNhZDRkYjNmNGY5MTc2NDgyMzg5
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDctMjUgIEFudG9uIE9iemhpcm92ICA8YS5v
YnpoaXJvdkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBFbmFibGUgUG9pbnRlciBMb2Nr
IGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk5MDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvRmVhdHVyZURlZmluZXMuaDoKKwogMjAxMy0wNy0xOSAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkZWQgeDY0IGNvbmZpZ3VyYXRp
b24gdG8gVmlzdWFsIFN0dWRpbyBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjNGU3ZWM0ZTc0NjZhNDQ4
YzIyMDFjNzY2N2Q0ZGQ0MjQ1M2M4ZjU2Li4zN2E4MDdmMmI3MmMyZTk2ZTdiZTAzMGMzMzY2MjI4
MWNiOGM1OTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMTMtMDctMjUgIEFudG9u
IE9iemhpcm92ICA8YS5vYnpoaXJvdkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBFbmFi
bGUgUG9pbnRlciBMb2NrIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk5MDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oOgorICAgICAgICAq
IFNoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQy
UGxhdGZvcm1Nb3VzZUV2ZW50OjpXZWJLaXQyUGxhdGZvcm1Nb3VzZUV2ZW50KToKKyAgICAgICAg
KiBTaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOYXRpdmVXZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KToKKyAgICAgICAgKiBT
aGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50
RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudCk6CisgICAgICAgICogU2hhcmVkL2d0ay9XZWJF
dmVudEZhY3RvcnkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAg
ICAgICAgKFdLUGFnZVJlcXVlc3RQb2ludGVyTG9jayk6CisgICAgICAgIChXS1BhZ2VSZXF1ZXN0
UG9pbnRlclVubG9jayk6CisgICAgICAgIChXS1BhZ2VEaWRBY3F1aXJlUG9pbnRlckxvY2spOgor
ICAgICAgICAoV0tQYWdlRGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdLUGFn
ZURpZExvc2VQb2ludGVyTG9jayk6CisgICAgICAgIChXS1BhZ2VTZXRQb2ludGVyTG9ja1dpbGxS
ZXNwb25kQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV0tQYWdlU2V0UG9pbnRlckxvY2tXaWxs
RmFpbFN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpsb2NrTW91c2UpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6dW5sb2NrTW91c2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2UuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VNb3Rpb25Ob3RpZnlFdmVu
dCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUxvY2tNb3VzZSk6CisgICAgICAgICh3ZWJr
aXRXZWJWaWV3QmFzZVVubG9ja01vdXNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVu
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cmVxdWVzdFBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZXF1ZXN0UG9pbnRlclVubG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkaWROb3RBY3F1aXJlUG9pbnRlckxvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZExvc2VQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGll
bnQ6OnJlcXVlc3RQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVu
dDo6cmVxdWVzdFBvaW50ZXJVbmxvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGll
bnQ6OmlzUG9pbnRlckxvY2tlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQWNx
dWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkTm90QWNxdWly
ZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkTG9zZVBvaW50ZXJM
b2NrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjppc1BvaW50ZXJMb2NrZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzZXRQb2ludGVyTG9ja2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxMy0wNy0yMSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgogCiAgICAgICAgIEphdmEgVXBkYXRlciBub3QgbGF1bmNoZWQgb24gTGlv
biBhbmQgTW91bnRhaW4gTGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmVhdHVyZURl
ZmluZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXggNzMyOWM5NWY1
NDVjMGU0Zjg1MjMwYTIzNjRjNmVkNmQ2MWI5OTIyYi4uNDFkM2RmOTg4NjEwMzk0MGYzMDRkOTE4
NjA3MDlhYjMzYTU2M2FiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmlu
ZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCkBAIC02NTksOCArNjU5
LDEyIEBACiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKEVOQUJMRV9QT0lOVEVSX0xPQ0spCisjaWYg
UExBVEZPUk0oR1RLKQorI2RlZmluZSBFTkFCTEVfUE9JTlRFUl9MT0NLIDEKKyNlbHNlCiAjZGVm
aW5lIEVOQUJMRV9QT0lOVEVSX0xPQ0sgMAogI2VuZGlmCisjZW5kaWYKIAogI2lmICFkZWZpbmVk
KEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UKQogI2RlZmluZSBFTkFCTEVfUFJPR1JFU1NfRUxFTUVO
VCAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVu
dC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaAppbmRleCBk
ZGU1YjM2MmUzZDI1MWVmY2Y2MTU2ZGQ4NWU0ZDQyMDQ5Njk5ZThlLi4xODZjNWM2NmY1ZmE0Njg5
NWZlODQyMzQyYjE0N2MwZjEwNTZjZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRp
dmVXZWJNb3VzZUV2ZW50LmgKQEAgLTUyLDYgKzUyLDkgQEAgcHVibGljOgogI2VsaWYgUExBVEZP
Uk0oR1RLKQogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgTmF0aXZlV2ViTW91c2VFdmVu
dCYpOwogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoR2RrRXZlbnQqLCBpbnQpOworI2lmIEVOQUJM
RShQT0lOVEVSX0xPQ0spCisgICAgTmF0aXZlV2ViTW91c2VFdmVudChHZGtFdmVudCosIGludCwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CisjZW5kaWYKICNlbGlmIFBMQVRGT1JNKEVGTCkK
ICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biosIGNv
bnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5z
Zm9ybSYpOwogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9V
cCosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkFmZmlu
ZVRyYW5zZm9ybSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50
Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9u
LmNwcAppbmRleCA4MWFmN2ViMjcwMmU2NDA2MjFlMjhjYmE3NTA4YTY4MzZjZTQzNmY2Li5hNGEy
NjliYjNjZDI5Zjk1MmUxMDUxMmRiMzNkNjE4MTdiZTI1ZTY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcApAQCAtODIsNyArODIsMTAgQEAgcHVibGlj
OgogICAgICAgICBtX3Bvc2l0aW9uID0gd2ViRXZlbnQucG9zaXRpb24oKTsKICAgICAgICAgbV9n
bG9iYWxQb3NpdGlvbiA9IHdlYkV2ZW50Lmdsb2JhbFBvc2l0aW9uKCk7CiAgICAgICAgIG1fY2xp
Y2tDb3VudCA9IHdlYkV2ZW50LmNsaWNrQ291bnQoKTsKLQorI2lmIFBMQVRGT1JNKEdUSykgJiYg
RU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICAgICAgbV9tb3ZlbWVudERlbHRhLnNldFgod2ViRXZl
bnQuZGVsdGFYKCkpOworICAgICAgICBtX21vdmVtZW50RGVsdGEuc2V0WSh3ZWJFdmVudC5kZWx0
YVkoKSk7CisjZW5kaWYKICAgICAgICAgbV9tb2RpZmllckZsYWdzID0gMDsKICAgICAgICAgaWYg
KHdlYkV2ZW50LnNoaWZ0S2V5KCkpCiAgICAgICAgICAgICBtX21vZGlmaWVyRmxhZ3MgfD0gV2Vi
RXZlbnQ6OlNoaWZ0S2V5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9O
YXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0
aXZlV2ViTW91c2VFdmVudEd0ay5jcHAKaW5kZXggMjhkMDBmMGU2ZmQ1OTE0YjBhODQwNzM3ZTEx
MWUxNGJlZmQ3NWM0OS4uZjcxMDA0NGU5ZmJhODkyYjA4YzU1NmYzMTllNDhjMDk3M2UwYThhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZl
bnRHdGsuY3BwCkBAIC0zNiw3ICszNiwxMyBAQCBOYXRpdmVXZWJNb3VzZUV2ZW50OjpOYXRpdmVX
ZWJNb3VzZUV2ZW50KEdka0V2ZW50KiBldmVudCwgaW50IGV2ZW50Q2xpY2tDb3VudCkKICAgICAs
IG1fbmF0aXZlRXZlbnQoZ2RrX2V2ZW50X2NvcHkoZXZlbnQpKQogewogfQotCisjaWYgRU5BQkxF
KFBPSU5URVJfTE9DSykKK05hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQo
R2RrRXZlbnQqIGV2ZW50LCBpbnQgZXZlbnRDbGlja0NvdW50LCBjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgZ2xvYmFsUG9zaXRp
b24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGRlbHRhKQorICAgIDogV2ViTW91c2VFdmVu
dChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoZXZlbnQsIGV2ZW50Q2xpY2tD
b3VudCwgcG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBkZWx0YSkpCisgICAgLCBtX25hdGl2ZUV2
ZW50KGdka19ldmVudF9jb3B5KGV2ZW50KSkKK3sKK30KKyNlbmRpZgogTmF0aXZlV2ViTW91c2VF
dmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBOYXRpdmVXZWJNb3VzZUV2ZW50JiBldmVu
dCkKICAgICA6IFdlYk1vdXNlRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2
ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KCksIGV2ZW50LmNsaWNrQ291bnQoKSkpCiAgICAgLCBtX25h
dGl2ZUV2ZW50KGdka19ldmVudF9jb3B5KGV2ZW50Lm5hdGl2ZUV2ZW50KCkpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCmluZGV4IGNiODhhODIwYTUx
NDQzZTY0OTZmZWY1NzBjMzIzYWE4MjU5ODc0MzguLjY2YTdiMzdiMzczOTQxNDc3YmNiMmMwYWUw
MzFiNGI4M2IzNTMyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2Vi
RXZlbnRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50
RmFjdG9yeS5jcHAKQEAgLTEzMiw3ICsxMzIsMzggQEAgV2ViTW91c2VFdmVudCBXZWJFdmVudEZh
Y3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBpbnQgY3UK
ICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnNGb3JFdmVudChldmVudCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2RrX2V2ZW50X2dldF90aW1lKGV2ZW50KSk7CiB9CisjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKK1dlYk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVh
dGVXZWJNb3VzZUV2ZW50KGNvbnN0IEdka0V2ZW50KiBldmVudCwgaW50IGN1cnJlbnRDbGlja0Nv
dW50LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGRl
bHRhKQoreworICAgIFdlYkV2ZW50OjpUeXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxXZWJFdmVudDo6
VHlwZT4oMCk7CisgICAgc3dpdGNoIChldmVudC0+dHlwZSkgeworICAgIGNhc2UgR0RLX01PVElP
Tl9OT1RJRlk6CisgICAgICAgIHR5cGUgPSBXZWJFdmVudDo6TW91c2VNb3ZlOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEdES19CVVRUT05fUFJFU1M6CisgICAgY2FzZSBHREtfMkJVVFRPTl9Q
UkVTUzoKKyAgICBjYXNlIEdES18zQlVUVE9OX1BSRVNTOgorICAgICAgICB0eXBlID0gV2ViRXZl
bnQ6Ok1vdXNlRG93bjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHREtfQlVUVE9OX1JFTEVB
U0U6CisgICAgICAgIHR5cGUgPSBXZWJFdmVudDo6TW91c2VVcDsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdCA6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KIAorICAg
IHJldHVybiBXZWJNb3VzZUV2ZW50KHR5cGUsCisgICAgICAgIGJ1dHRvbkZvckV2ZW50KGV2ZW50
KSwKKyAgICAgICAgSW50UG9pbnQocG9zaXRpb24ueCgpLCBwb3NpdGlvbi55KCkpLAorICAgICAg
ICBJbnRQb2ludChnbG9iYWxQb3NpdGlvbi54KCksIGdsb2JhbFBvc2l0aW9uLnkoKSksCisgICAg
ICAgIGRlbHRhLngoKSwKKyAgICAgICAgZGVsdGEueSgpLAorICAgICAgICAwLAorICAgICAgICBj
dXJyZW50Q2xpY2tDb3VudCwKKyAgICAgICAgbW9kaWZpZXJzRm9yRXZlbnQoZXZlbnQpLAorICAg
ICAgICBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZlbnQpKTsKK30KKyNlbmRpZgogV2ViV2hlZWxFdmVu
dCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZlbnQoY29uc3QgR2RrRXZlbnQqIGV2
ZW50KQogewogICAgIGRvdWJsZSB4LCB5LCB4Um9vdCwgeVJvb3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaAppbmRleCAwODU4MTVjNDJkNDc3YjEyZWRmOTZk
MTU2ODkyNmE5ZmY4YWZlNmM3Li43NGE5ZmU5ZjViNjk4MWUzZjk5NDlhMmFmZTFiY2Y1YmYzNWUz
ZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9y
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmgKQEAg
LTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJFdmVudEZhY3Rvcnkg
ewogcHVibGljOgogICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQo
Y29uc3QgR2RrRXZlbnQqLCBpbnQpOworICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdl
Yk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYpOwogICAgIHN0YXRpYyBXZWJXaGVlbEV2ZW50IGNyZWF0ZVdlYldoZWVsRXZlbnQoY29uc3Qg
R2RrRXZlbnQqKTsKICAgICBzdGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJLZXlib2Fy
ZEV2ZW50KGNvbnN0IEdka0V2ZW50KiwgY29uc3QgV2ViQ29yZTo6Q29tcG9zaXRpb25SZXN1bHRz
Jik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA2
MTExODZmNWFkNTEyOTU4NGYzNGI0NGM4N2YxNTBlMTI4ODhiOTczLi42ZGFhNmQ5OWRjM2Q5MWRj
YTY0NWE0YTljYjg5ZjRjYzIxNTAzNTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcApAQCAtOTY2LDUgKzk2Niw1NSBAQCBXS1N0cmluZ1JlZiBXS1BhZ2VHZXRQ
bHVnaW5JbmZvcm1hdGlvblBsdWdpblVSTEtleSgpCiAgICAgcmV0dXJuIFdLUGx1Z2luSW5mb3Jt
YXRpb25QbHVnaW5VUkxLZXkoKTsKIH0KIAordm9pZCBXS1BhZ2VSZXF1ZXN0UG9pbnRlckxvY2so
V0tQYWdlUmVmIHBhZ2VSZWYpCit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBib29s
IHJlc3VsdDsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJlcXVlc3RQb2ludGVyTG9jayhyZXN1bHQp
OworI2VuZGlmCit9CisKK3ZvaWQgV0tQYWdlUmVxdWVzdFBvaW50ZXJVbmxvY2soV0tQYWdlUmVm
IHBhZ2VSZWYpCit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICB0b0ltcGwocGFnZVJl
ZiktPnJlcXVlc3RQb2ludGVyVW5sb2NrKCk7CisjZW5kaWYKK30KKwordm9pZCBXS1BhZ2VEaWRB
Y3F1aXJlUG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2VSZWYpCit7CisjaWYgRU5BQkxFKFBPSU5U
RVJfTE9DSykKKyAgICB0b0ltcGwocGFnZVJlZiktPmRpZEFjcXVpcmVQb2ludGVyTG9jaygpOwor
I2VuZGlmCit9CisKK3ZvaWQgV0tQYWdlRGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKFdLUGFnZVJl
ZiBwYWdlUmVmKQoreworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5kaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsKKyNlbmRpZgorfQorCit2b2lkIFdLUGFn
ZURpZExvc2VQb2ludGVyTG9jayhXS1BhZ2VSZWYgcGFnZVJlZikKK3sKKyNpZiBFTkFCTEUoUE9J
TlRFUl9MT0NLKQorICAgIHRvSW1wbChwYWdlUmVmKS0+ZGlkTG9zZVBvaW50ZXJMb2NrKCk7Cisj
ZW5kaWYKK30KKwordm9pZCBXS1BhZ2VTZXRQb2ludGVyTG9ja1dpbGxSZXNwb25kQXN5bmNocm9u
b3VzbHkoV0tQYWdlUmVmIHBhZ2VSZWYpCit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAg
ICB0b0ltcGwocGFnZVJlZiktPnNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNs
eSgpOworI2VuZGlmCit9CisKK3ZvaWQgV0tQYWdlU2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNo
cm9ub3VzbHkoV0tQYWdlUmVmIHBhZ2VSZWYpCit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykK
KyAgICB0b0ltcGwocGFnZVJlZiktPnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5
KCk7CisjZW5kaWYKK30KKwogLy8gLS0gREVQUkVDQVRFRCAtLQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmgKaW5kZXggZGM1N2M1MjNkYzZiYmE0MjM2NDdlYzQzNTRiNDdi
OTQ2NzgzYjY5ZS4uMzc4NDEyZjRlMzUxNzM3MWQzZTJmNjU2MGJiYTA2NGQwMWIyM2FkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaApAQCAtNTc4LDYgKzU3OCwxNCBA
QCBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tQYWdlR2V0UGx1Z2luSW5mb3JtYXRpb25QbHVnaW5z
cGFnZUF0dHJpYnV0ZVVSTEtleSgpOwogLyogVmFsdWUgdHlwZTogV0tVUkxSZWYgKi8KIFdLX0VY
UE9SVCBXS1N0cmluZ1JlZiBXS1BhZ2VHZXRQbHVnaW5JbmZvcm1hdGlvblBsdWdpblVSTEtleSgp
OwogCitXS19FWFBPUlQgdm9pZCBXS1BhZ2VSZXF1ZXN0UG9pbnRlckxvY2soV0tQYWdlUmVmIHBh
Z2VSZWYpOworV0tfRVhQT1JUIHZvaWQgV0tQYWdlUmVxdWVzdFBvaW50ZXJVbmxvY2soV0tQYWdl
UmVmIHBhZ2VSZWYpOworV0tfRVhQT1JUIHZvaWQgV0tQYWdlRGlkQWNxdWlyZVBvaW50ZXJMb2Nr
KFdLUGFnZVJlZiBwYWdlUmVmKTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZURpZE5vdEFjcXVpcmVQ
b2ludGVyTG9jayhXS1BhZ2VSZWYgcGFnZVJlZik7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VEaWRM
b3NlUG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2VSZWYpOworV0tfRVhQT1JUIHZvaWQgV0tQYWdl
U2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KFdLUGFnZVJlZiBwYWdlUmVm
KTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZVNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91
c2x5KFdLUGFnZVJlZiBwYWdlUmVmKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBs
LmNwcAppbmRleCA5MzdhOWVmYzJkZWY4ZTM2NTE2NTkyNzUwZGUzZjQxOWQyOTVkNTJhLi5jZWQ5
ZDQ4YmE2ZmJhMzE3NmM5OTc3ZjdiNTE2YTczZWUyMjkwN2VkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0yODksNSAr
Mjg5LDE1IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmhhbmRsZURvd25sb2FkUmVxdWVzdChEb3du
bG9hZFByb3h5KiBkb3dubG9hZCkKIHsKICAgICB3ZWJraXRXZWJWaWV3QmFzZUhhbmRsZURvd25s
b2FkUmVxdWVzdChXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpLCBkb3dubG9hZCk7
CiB9CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKK2Jvb2wgUGFnZUNsaWVudEltcGw6OmxvY2tN
b3VzZSgpCit7CisgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlTG9ja01vdXNlKFdFQktJVF9X
RUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpOworfQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjp1
bmxvY2tNb3VzZSgpCit7CisgICAgd2Via2l0V2ViVmlld0Jhc2VVbmxvY2tNb3VzZShXRUJLSVRf
V0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKTsKK30KKyNlbmRpZgogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuaAppbmRleCBkOWUwMDc4ZjU0NzVjNjdmOGU2NDc2ZmY1NGIxYjliZjc0ZTI5YmI5Li4w
OGU0ODRjNGI4OWQ0MWNkMjQxNzllZDNmYTQwNjlhNDA4ZTQwYmFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CiAjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0lu
dFBvaW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8Z3RrL2d0
ay5oPgogCkBAIC05OSw3ICsxMDAsMTAgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgdmlydHVh
bCB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5Kik7Ci0KKyNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQorICAgIHZpcnR1YWwgYm9vbCBsb2NrTW91c2UoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdW5sb2NrTW91c2UoKTsKKyNlbmRpZgogICAgIC8vIE1lbWJlcnMgb2YgUGFnZUNs
aWVudEltcGwgY2xhc3MKICAgICBHdGtXaWRnZXQqIG1fdmlld1dpZGdldDsKICAgICBXZWJDb3Jl
OjpLZXlCaW5kaW5nVHJhbnNsYXRvciBtX2tleUJpbmRpbmdUcmFuc2xhdG9yOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3Bw
CmluZGV4IGE0MTQ5MjBiMTAxNjYzZGFkMmJjOTgwYzU4Mzg0NTQ1Yzk4MDAzOWIuLmM0YWMwMWUx
NTkzMzY4NzUwNjc3NTJiMmM3MGY4MTQ1ZGRhZWE5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTEzMSw2
ICsxMzEsMTQgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogI2lmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkKICAgICBPd25QdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+
IHJlZGlyZWN0ZWRXaW5kb3c7CiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAg
IGJvb2wgbW91c2VMb2NrZWQ7CisgICAgYm9vbCBsb2NrZWRNb3VzZUNlbnRlcmVkOworICAgIFdl
YkNvcmU6OkZsb2F0UG9pbnQgbG9ja2VkTW91c2VQb3NpdGlvbjsKKyAgICBXZWJDb3JlOjpGbG9h
dFBvaW50IGxvY2tlZE1vdXNlR2xvYmFsUG9zaXRpb247CisgICAgV2ViQ29yZTo6RmxvYXRQb2lu
dCBtb3VzZUdsb2JhbFBvc2l0aW9uOworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgc2F2ZWRNb3Vz
ZUdsb2JhbFBvc2l0aW9uOworI2VuZGlmCiB9OwogCiBXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0
V2ViVmlld0Jhc2UsIHdlYmtpdF93ZWJfdmlld19iYXNlLCBHVEtfVFlQRV9DT05UQUlORVIpCkBA
IC02NjksOCArNjc3LDM5IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3QmFzZU1vdGlv
bk5vdGlmeUV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudE1vCiAgICAgaWYgKHByaXYt
PmF1dGhlbnRpY2F0aW9uRGlhbG9nKQogICAgICAgICByZXR1cm4gVFJVRTsKIAotICAgIHByaXYt
PnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KHJlaW50ZXJw
cmV0X2Nhc3Q8R2RrRXZlbnQqPihldmVudCksIDAgLyogY3VycmVudENsaWNrQ291bnQgKi8pKTsK
KyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGRvdWJsZSB4Um9vdCwgeVJvb3Q7CisgICAg
Z2RrX2V2ZW50X2dldF9yb290X2Nvb3JkcyhyZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4oZXZl
bnQpLCAmeFJvb3QsICZ5Um9vdCk7CisKKyAgICBpZiAocHJpdi0+bW91c2VMb2NrZWQpIHsKKyAg
ICAgICAgaWYgKCFwcml2LT5sb2NrZWRNb3VzZUNlbnRlcmVkKSB7CisgICAgICAgICAgICBkb3Vi
bGUgeCwgeTsKKyAgICAgICAgICAgIGdka19ldmVudF9nZXRfY29vcmRzKHJlaW50ZXJwcmV0X2Nh
c3Q8R2RrRXZlbnQqPihldmVudCksICZ4LCAmeSk7CisKKyAgICAgICAgICAgIHByaXYtPmxvY2tl
ZE1vdXNlUG9zaXRpb24uc2V0KHgsIHkpOworICAgICAgICAgICAgcHJpdi0+bG9ja2VkTW91c2VH
bG9iYWxQb3NpdGlvbi5zZXQoeFJvb3QsIHlSb290KTsKKyAgICAgICAgICAgIHByaXYtPnNhdmVk
TW91c2VHbG9iYWxQb3NpdGlvbi5zZXQocHJpdi0+bW91c2VHbG9iYWxQb3NpdGlvbi54KCksIHBy
aXYtPm1vdXNlR2xvYmFsUG9zaXRpb24ueSgpKTsKKyAgICAgICAgICAgIHByaXYtPmxvY2tlZE1v
dXNlQ2VudGVyZWQgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgIH0K
IAorICAgICAgICAvLyBNb3ZlbWVudCBpcyBjb21wdXRlZCBieSB0YWtpbmcgdGhlIGRpZmZlcmVu
Y2Ugb2YgdGhlIG5ldyBjdXJzb3IgcG9zaXRpb24KKyAgICAgICAgLy8gYW5kIHRoZSBwcmV2aW91
cy4gVW5kZXIgbW91c2UgbG9jayB0aGUgY3Vyc29yIHdpbGwgYmUgd2FycGVkIGJhY2sgdG8gdGhl
CisgICAgICAgIC8vIGNlbnRlciBzbyB0aGF0IHdlIGFyZSBub3QgbGltaXRlZCBieSBjbGlwcGlu
ZyBib3VuZGFyaWVzLgorICAgICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50IGxvY2tlZE1vdXNlRXZl
bnQocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSwKKyAgICAgICAgICAgIDAsCisg
ICAgICAgICAgICBwcml2LT5sb2NrZWRNb3VzZVBvc2l0aW9uLAorICAgICAgICAgICAgcHJpdi0+
bG9ja2VkTW91c2VHbG9iYWxQb3NpdGlvbiwKKyAgICAgICAgICAgIEZsb2F0UG9pbnQoeFJvb3Qg
LSBwcml2LT5tb3VzZUdsb2JhbFBvc2l0aW9uLngoKSwgeVJvb3QgLSBwcml2LT5tb3VzZUdsb2Jh
bFBvc2l0aW9uLnkoKSkpOworCisgICAgICAgIHByaXYtPm1vdXNlR2xvYmFsUG9zaXRpb24uc2V0
KHhSb290LCB5Um9vdCk7CisgICAgICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVu
dChsb2NrZWRNb3VzZUV2ZW50KTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAg
cHJpdi0+bW91c2VHbG9iYWxQb3NpdGlvbi5zZXQoeFJvb3QsIHlSb290KTsKKyNlbmRpZgorICAg
IHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KHJl
aW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihldmVudCksIDAgLyogY3VycmVudENsaWNrQ291bnQg
Ki8pKTsKICAgICByZXR1cm4gVFJVRTsKIH0KIApAQCAtMTEwMywzICsxMTQyLDY5IEBAIHZvaWQg
d2Via2l0V2ViVmlld0Jhc2VVcGRhdGVUZXh0SW5wdXRTdGF0ZShXZWJLaXRXZWJWaWV3QmFzZSog
d2Via2l0V2ViVmlld0Jhc2UpCiB7CiAgICAgd2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmlucHV0
TWV0aG9kRmlsdGVyLnNldEN1cnNvclJlY3Qod2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQ
cm94eS0+ZWRpdG9yU3RhdGUoKS5jdXJzb3JSZWN0KTsKIH0KKyNpZiBFTkFCTEUoUE9JTlRFUl9M
T0NLKQorYm9vbCB3ZWJraXRXZWJWaWV3QmFzZUxvY2tNb3VzZShXZWJLaXRXZWJWaWV3QmFzZSog
d2Via2l0V2ViVmlld0Jhc2UpCit7CisgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2
ID0gd2Via2l0V2ViVmlld0Jhc2UtPnByaXY7CisKKyAgICBpZiAocHJpdi0+bW91c2VMb2NrZWQp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gUmVsZWFzZSBhbnkgY3VycmVudCBncmFi
LgorICAgIEd0a1dpZGdldCogY3VycmVudEdyYWJXaW5kb3cgPSBndGtfZ3JhYl9nZXRfY3VycmVu
dCgpOworICAgIGlmIChjdXJyZW50R3JhYldpbmRvdykKKyAgICAgICAgZ3RrX2dyYWJfcmVtb3Zl
KGN1cnJlbnRHcmFiV2luZG93KTsKKworICAgIEdka0Rpc3BsYXkqIGRpc3BsYXkgPSBndGtfd2lk
Z2V0X2dldF9kaXNwbGF5KEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2UpKTsKKyAgICBHZGtX
aW5kb3cqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhHVEtfV0lER0VUKHdlYmtpdFdl
YlZpZXdCYXNlKSk7CisgICAgR2RrQ3Vyc29yKiBjdXJzb3IgPSBnZGtfY3Vyc29yX25ldyhHREtf
QkxBTktfQ1VSU09SKTsKKworICAgIEdka0RldmljZU1hbmFnZXIqIGRldmljZU1hbmFnZXIgPSBn
ZGtfZGlzcGxheV9nZXRfZGV2aWNlX21hbmFnZXIoZGlzcGxheSk7CisgICAgR2RrRGV2aWNlKiBk
ZXZpY2UgPSBnZGtfZGV2aWNlX21hbmFnZXJfZ2V0X2NsaWVudF9wb2ludGVyKGRldmljZU1hbmFn
ZXIpOworCisgICAgaWYgKGdka19kZXZpY2VfZ3JhYihkZXZpY2UsCisgICAgICAgIHdpbmRvdywK
KyAgICAgICAgR0RLX09XTkVSU0hJUF9OT05FLAorICAgICAgICBGQUxTRSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8R2RrRXZlbnRNYXNrPigKKyAgICAgICAgICAgIEdES19QT0lOVEVSX01PVElPTl9N
QVNLIHwKKyAgICAgICAgICAgIEdES19CVVRUT05fUFJFU1NfTUFTSyB8CisgICAgICAgICAgICBH
REtfQlVUVE9OX1JFTEVBU0VfTUFTSyksCisgICAgICAgIGN1cnNvciwKKyAgICAgICAgR0RLX0NV
UlJFTlRfVElNRSkgIT0gR0RLX0dSQUJfU1VDQ0VTUykgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgcHJpdi0+bW91c2VMb2NrZWQgPSB0cnVlOworICAgIHByaXYtPmxvY2tl
ZE1vdXNlQ2VudGVyZWQgPSBmYWxzZTsKKworICAgIGdpbnQgeCA9IDA7CisgICAgZ2ludCB5ID0g
MDsKKyAgICBnZGtfd2luZG93X2dldF9vcmlnaW4od2luZG93LCAmeCwgJnkpOworCisgICAgZ2lu
dCB3ID0gZ2RrX3dpbmRvd19nZXRfd2lkdGgod2luZG93KTsKKyAgICBnaW50IGggPSBnZGtfd2lu
ZG93X2dldF9oZWlnaHQod2luZG93KTsKKyAgICBHZGtTY3JlZW4qIHNjcmVlbiA9IGd0a193aWRn
ZXRfZ2V0X3NjcmVlbihHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlKSk7CisgICAgZ2RrX2Rl
dmljZV93YXJwKGRldmljZSwgc2NyZWVuLCB4ICsgdyAvIDIsIHkgKyBoIC8gMik7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VVbmxvY2tNb3VzZShXZWJLaXRX
ZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCit7CisgICAgV2ViS2l0V2ViVmlld0Jhc2VQ
cml2YXRlKiBwcml2ID0gd2Via2l0V2ViVmlld0Jhc2UtPnByaXY7CisgICAgaWYgKCFwcml2LT5t
b3VzZUxvY2tlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJpdi0+bW91c2VMb2NrZWQgPSBm
YWxzZTsKKyAgICBwcml2LT5sb2NrZWRNb3VzZUNlbnRlcmVkID0gZmFsc2U7CisKKyAgICBHZGtE
aXNwbGF5KiBkaXNwbGF5ID0gZ3RrX3dpZGdldF9nZXRfZGlzcGxheShHVEtfV0lER0VUKHdlYmtp
dFdlYlZpZXdCYXNlKSk7CisgICAgR2RrU2NyZWVuKiBzY3JlZW4gPSBndGtfd2lkZ2V0X2dldF9z
Y3JlZW4oR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZSkpOworICAgIEdka0RldmljZU1hbmFn
ZXIqIGRldmljZU1hbmFnZXIgPSBnZGtfZGlzcGxheV9nZXRfZGV2aWNlX21hbmFnZXIoZGlzcGxh
eSk7CisgICAgR2RrRGV2aWNlKiBkZXZpY2UgPSBnZGtfZGV2aWNlX21hbmFnZXJfZ2V0X2NsaWVu
dF9wb2ludGVyKGRldmljZU1hbmFnZXIpOworICAgIGdka19kZXZpY2VfdW5ncmFiKGRldmljZSwg
R0RLX0NVUlJFTlRfVElNRSk7CisKKyAgICAvLyB3YXJwIG1vdXNlIGJhY2sgdG8gdW5sb2NrZWQg
cG9zaXRpb24KKyAgICBnZGtfZGV2aWNlX3dhcnAoZGV2aWNlLCBzY3JlZW4sIHByaXYtPnNhdmVk
TW91c2VHbG9iYWxQb3NpdGlvbi54KCksIHByaXYtPnNhdmVkTW91c2VHbG9iYWxQb3NpdGlvbi55
KCkpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCmluZGV4IGUzMGZkOTQ5ZWNiOWZh
YzE0YjRmYmZkM2FjOTU0YTgwNWFmMDBhYjUuLjA5NzNlNmZjMzk2NGFkZDJiN2UzMTlhZjM1N2Fj
MGIwNmRkYjU3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCkBAIC01MSw3ICs1MSwxMCBAQCBX
ZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlHdGsqIHdlYmtpdFdlYlZpZXdCYXNlR2V0QWN0aXZl
Q29udGV4dE1lbnVQcm94eShXZWJLaQogR2RrRXZlbnQqIHdlYmtpdFdlYlZpZXdCYXNlVGFrZUNv
bnRleHRNZW51RXZlbnQoV2ViS2l0V2ViVmlld0Jhc2UqKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jh
c2VTZXRJbnB1dE1ldGhvZFN0YXRlKFdlYktpdFdlYlZpZXdCYXNlKiwgYm9vbCBlbmFibGVkKTsK
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VVcGRhdGVUZXh0SW5wdXRTdGF0ZShXZWJLaXRXZWJWaWV3
QmFzZSopOwotCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKK2Jvb2wgd2Via2l0V2ViVmlld0Jh
c2VMb2NrTW91c2UoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKTsKK3ZvaWQg
d2Via2l0V2ViVmlld0Jhc2VVbmxvY2tNb3VzZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2Vi
Vmlld0Jhc2UpOworI2VuZGlmCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogdm9pZCB3ZWJr
aXRXZWJWaWV3QmFzZVF1ZXVlRHJhd09mQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMoV2Vi
S2l0V2ViVmlld0Jhc2UqKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgKaW5kZXggMGRmMmMyMGVmMGNkZjc2Yzk2YzM0MzJmNzRhYWQyMDM0MzJlZTA1Yi4uYjZjNWRj
NGI1YTU3ZDdhZmU3MTM3N2ZmYzNjNWE4Njg3N2ZjNGRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCkBAIC0xNjksNiArMTY5LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogI2lm
IFBMQVRGT1JNKEdUSykKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlF
dmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiwg
VmVjdG9yPFdURjo6U3RyaW5nPiYpID0gMDsKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAg
IHZpcnR1YWwgYm9vbCBsb2NrTW91c2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVubG9ja01v
dXNlKCkgPSAwOworI2VuZGlmCiAjZW5kaWYKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVj
dCBjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSA9IDA7CiAg
ICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvVXNlclNwYWNlKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggMjdlMGMzMjU4ZGE4OTBiYTMzM2NkMGJlZDYwNTZhNjIzZTY4ZTc0MS4u
ZDUzYTZlZmNlZDVkNDE5ZDgxMWZlOGZkNDE3YzUxNWZhMTliZTA0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTMxOCw2ICszMTgsMTAgQEAgV2ViUGFn
ZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCogcGFnZUNsaWVudCwgUGFzc1JlZlB0cjxX
ZWJQcm9jZXNzUHJveHk+IHAKICAgICAsIG1fdmlzaWJpbGl0eVN0YXRlKFBhZ2VWaXNpYmlsaXR5
U3RhdGVWaXNpYmxlKQogI2VuZGlmCiAgICAgLCBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcihEb05v
dFBpbikKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKSAmJiBQTEFURk9STShHVEspCisgICAgLCBt
X3BvaW50ZXJMb2NrU2hvdWxkRmFpbFN5bmNocm9ub3VzbHkoZmFsc2UpCisgICAgLCBtX3BvaW50
ZXJMb2NrUmVzcG9uZEFzeW5jaHJvbm91c2x5KGZhbHNlKQorI2VuZGlmCiB7CiAjaWYgRU5BQkxF
KFBBR0VfVklTSUJJTElUWV9BUEkpCiAgICAgaWYgKCFtX2lzVmlzaWJsZSkKQEAgLTI5MjAsNiAr
MjkyNCw2NCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bmVlZFRvdWNoRXZlbnRzKGJvb2wgbmVlZFRv
dWNoRXZlbnRzKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKSAmJiBQTEFU
Rk9STShHVEspCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFBvaW50ZXJMb2NrKGJvb2wmIHJl
c3VsdCkKK3sKKyAgICBpZiAobV9wb2ludGVyTG9ja1Nob3VsZEZhaWxTeW5jaHJvbm91c2x5KSB7
CisgICAgICAgIG1fcG9pbnRlckxvY2tTaG91bGRGYWlsU3luY2hyb25vdXNseSA9IGZhbHNlOwor
ICAgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
IChtX3BvaW50ZXJMb2NrUmVzcG9uZEFzeW5jaHJvbm91c2x5KSB7CisgICAgICAgIG1fcG9pbnRl
ckxvY2tSZXNwb25kQXN5bmNocm9ub3VzbHkgPSBmYWxzZTsKKyAgICAgICAgcmVzdWx0ID0gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3BhZ2VDbGllbnQtPmxvY2tN
b3VzZSgpKSB7CisgICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlk
QWNxdWlyZVBvaW50ZXJMb2NrKCksIG1fcGFnZUlEKTsKKyAgICAgICAgcmVzdWx0ID0gdHJ1ZTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCksIG1fcGFnZUlEKTsKKyAgICByZXN1
bHQgPSBmYWxzZTsKKyAgICByZXR1cm47Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0
UG9pbnRlclVubG9jaygpCit7CisgICAgbV9wYWdlQ2xpZW50LT51bmxvY2tNb3VzZSgpOworICAg
IHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkTG9zZVBvaW50ZXJMb2NrKCks
IG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRpZEFjcXVpcmVQb2ludGVyTG9j
aygpCit7CisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRBY3F1aXJl
UG9pbnRlckxvY2soKSwgbV9wYWdlSUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTm90
QWNxdWlyZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpLCBtX3BhZ2VJRCk7Cit9CisKK3ZvaWQg
V2ViUGFnZVByb3h5OjpkaWRMb3NlUG9pbnRlckxvY2soKQoreworICAgIHByb2Nlc3MoKS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkTG9zZVBvaW50ZXJMb2NrKCksIG1fcGFnZUlEKTsKK30K
Kwordm9pZCBXZWJQYWdlUHJveHk6OnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5
KCkKK3sKKyAgICBtX3BvaW50ZXJMb2NrU2hvdWxkRmFpbFN5bmNocm9ub3VzbHkgPSB0cnVlOwor
fQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJv
bm91c2x5KCkKK3sKKyAgICBtX3BvaW50ZXJMb2NrUmVzcG9uZEFzeW5jaHJvbm91c2x5ID0gdHJ1
ZTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2hvd0NvbG9yQ2hvb3Nlcihjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENv
bG9yLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCA1NWE3YTY5NDRlNzg3M2YwZTIzZDhlYzNiYjlhMTUxYzU4
YzQxOWZjLi43MzBlODgzYzdiNzJjNGYwOTUwNDBhOTlhMmJhNGVjMTIyOTUwYTUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC03NzYsNiArNzc2LDE2IEBAIHB1
YmxpYzoKICAgICAgICAgCiAgICAgdm9pZCBzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoV2ViQ29y
ZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yKTsKICAgICBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVo
YXZpb3Igc2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkgeyByZXR1cm4gbV9zY3JvbGxQaW5uaW5nQmVo
YXZpb3I7IH0KKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spICYmIFBMQVRGT1JNKEdUSykKKyAg
ICB2b2lkIHJlcXVlc3RQb2ludGVyTG9jayhib29sJiByZXN1bHQpOworICAgIHZvaWQgcmVxdWVz
dFBvaW50ZXJVbmxvY2soKTsKKyAgICB2b2lkIGRpZEFjcXVpcmVQb2ludGVyTG9jaygpOworICAg
IHZvaWQgZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBkaWRMb3NlUG9pbnRl
ckxvY2soKTsKKyAgICB2b2lkIHNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNs
eSgpOworICAgIHZvaWQgc2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoKTsKKyNl
bmRpZgogICAgICAgICAKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQqLCBQ
YXNzUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4sIFdlYlBhZ2VHcm91cCosIHVpbnQ2NF90IHBhZ2VJ
RCk7CkBAIC0xMjg3LDYgKzEyOTcsMTAgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgICAgICAKICAg
ICBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3IgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3I7
CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykgJiYgUExBVEZPUk0oR1RLKQorICAgIGJvb2wgbV9w
b2ludGVyTG9ja1Nob3VsZEZhaWxTeW5jaHJvbm91c2x5OworICAgIGJvb2wgbV9wb2ludGVyTG9j
a1Jlc3BvbmRBc3luY2hyb25vdXNseTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgppbmRleCA2YzE1Mzg1ZTY5NDUwMmQ1ZjY2NTJiMWZjZTE2ZjU4MDQwMjRhNTBhLi4wNGQz
NDhlZDUxMzUyODgyOTc0NGFiZjkyZGM4ODgyOTE3ZGEyY2MxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTMyNCw0ICszMjQs
MTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRVcGRhdGVJbldpbmRvd1N0
YXRlKCkKICAgICAKICAgICBEaWRTYXZlVG9QYWdlQ2FjaGUoKQorI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spICYmIFBMQVRGT1JNKEdUSykKKyAgICBSZXF1ZXN0UG9pbnRlckxvY2soKSAtPiAoYm9v
bCByZXN1bHQpCisgICAgUmVxdWVzdFBvaW50ZXJVbmxvY2soKQorICAgIFNldFBvaW50ZXJMb2Nr
V2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSgpCisgICAgU2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5
bmNocm9ub3VzbHkoKQorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggY2Ux
NjAwNmRiNzRmMjBmOTcyNzRkNGViM2I1NGZmOGFlOGI4MGU4Yy4uZDAxYTg1YzE1NTE5NmE3OWEx
NGRhOTc4MjVkNmFkZDg2NDVkZmZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtODE0
LDYgKzgxNCwyNCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVt
ZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JN
KEdUSykgJiYgRU5BQkxFKFBPSU5URVJfTE9DSykKK2Jvb2wgV2ViQ2hyb21lQ2xpZW50OjpyZXF1
ZXN0UG9pbnRlckxvY2soKQoreworICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisgICAgcmV0dXJu
IG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdFBvaW50ZXJM
b2NrKCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RQb2ludGVyTG9jazo6UmVwbHko
cmVzdWx0KSkgJiYgcmVzdWx0OworfQorCit2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdFBv
aW50ZXJVbmxvY2soKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSZXF1ZXN0UG9pbnRlclVubG9jaygpKTsKK30KKworYm9vbCBXZWJDaHJvbWVDbGllbnQ6Omlz
UG9pbnRlckxvY2tlZCgpCit7CisgICAgcmV0dXJuIG1fcGFnZS0+aXNQb2ludGVyTG9ja2VkKCk7
Cit9CisjZW5kaWYKKwogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmRpc3BhdGNoVmlld3BvcnRQcm9w
ZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJikgY29uc3QKIHsKICNpZiBV
U0UoVElMRURfQkFDS0lOR19TVE9SRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDRmMjhiYjM3
NDcyZmFjMWI4ZjNkN2I4MGY5OTgzZmIyMzdlZTc4NzIuLjYzZjEyNjUyZTFkMDIxMThkMWE4ZGE2
YTRjNjQ5NWMwYzg1Y2RmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMjA4LDYgKzIwOCwx
MiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQo
V2ViQ29yZTo6RWxlbWVudCopIE9WRVJSSURFOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShHVEsp
ICYmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgdmlydHVhbCBib29sIHJlcXVlc3RQb2ludGVy
TG9jaygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UG9pbnRlclVubG9jaygp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc1BvaW50ZXJMb2NrZWQoKSBPVkVSUklERTsK
KyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZpcnR1YWwgdm9pZCBtYWtlRmlyc3RS
ZXNwb25kZXIoKSBPVkVSUklERTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGVkM2VhYzBmMDJjNmI1NDMyZTI5OTQ0OGZjMGY3
MTgyMTg0ZTNjNTMuLjZlYjFiZWU4OTQxMWVlODVhM2RkNjBmNmU4YTNmOGRhNDNlY2I1MmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQ0
LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQXR0cmlidXRlcy5oIgogI2luY2x1
ZGUgIlBsdWdpblByb3h5LmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgorI2luY2x1ZGUgIlBv
aW50ZXJMb2NrQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlByaW50SW5mby5oIgogI2luY2x1ZGUg
IlNlc3Npb25TdGF0ZS5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgpAQCAtMjg5LDYg
KzI5MCw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgICwgbV9iYWNrZ3JvdW5kQ29sb3Io
Q29sb3I6OndoaXRlKQogICAgICwgbV9tYXhpbXVtUmVuZGVyaW5nU3VwcHJlc3Npb25Ub2tlbigw
KQogICAgICwgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3IoRG9Ob3RQaW4pCisgICAgLCBtX2lzUG9p
bnRlckxvY2tlZChmYWxzZSkKIHsKICAgICBBU1NFUlQobV9wYWdlSUQpOwogICAgIC8vIEZJWE1F
OiBUaGlzIGlzIGEgbm9uLWlkZWFsIGxvY2F0aW9uIGZvciB0aGlzIFNldHRpbmcgYW5kCkBAIC0x
NjU0LDcgKzE2NTYsMjYgQEAgc3RhdGljIGJvb2wgaGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJN
b3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBXZWJQYWdlKiBwYWdlLCBib28KICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IHBsYXRmb3JtTW91c2VFdmVudCA9IHBs
YXRmb3JtKG1vdXNlRXZlbnQpOwotCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykgJiYgUExBVEZP
Uk0oR1RLKQorICAgIGlmIChwYWdlLT5pc1BvaW50ZXJMb2NrZWQoKSkgeworICAgICAgICBBdG9t
aWNTdHJpbmcgZXZlbnRUeXBlOworICAgICAgICBzd2l0Y2ggKHBsYXRmb3JtTW91c2VFdmVudC50
eXBlKCkpIHsKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ6CisgICAg
ICAgICAgICBldmVudFR5cGUgPSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQ7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkOgor
ICAgICAgICAgICAgZXZlbnRUeXBlID0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVudDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ6Cisg
ICAgICAgICAgICBldmVudFR5cGUgPSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQ7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIHBhZ2UtPmNvcmVQYWdlKCktPnBvaW50ZXJM
b2NrQ29udHJvbGxlcigpLT5kaXNwYXRjaExvY2tlZE1vdXNlRXZlbnQocGxhdGZvcm1Nb3VzZUV2
ZW50LCBldmVudFR5cGUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKICAg
ICBzd2l0Y2ggKHBsYXRmb3JtTW91c2VFdmVudC50eXBlKCkpIHsKICAgICAgICAgY2FzZSBQbGF0
Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ6IHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAg
LTE5NjMsNiArMTk4NCwyNiBAQCB2b2lkIFdlYlBhZ2U6OnRvdWNoRXZlbnRTeW5jRm9yVGVzdGlu
Zyhjb25zdCBXZWJUb3VjaEV2ZW50JiB0b3VjaEV2ZW50LCBib29sJiBoYQogfQogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKSAmJiBQTEFURk9STShHVEspCit2b2lkIFdlYlBhZ2U6
OmRpZEFjcXVpcmVQb2ludGVyTG9jaygpCit7CisgICAgbV9wYWdlLT5wb2ludGVyTG9ja0NvbnRy
b2xsZXIoKS0+ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgbV9pc1BvaW50ZXJMb2NrZWQg
PSB0cnVlOworfQorCit2b2lkIFdlYlBhZ2U6OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpCit7
CisgICAgbV9wYWdlLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+ZGlkTm90QWNxdWlyZVBvaW50
ZXJMb2NrKCk7CisgICAgbV9pc1BvaW50ZXJMb2NrZWQgPSBmYWxzZTsKK30KKwordm9pZCBXZWJQ
YWdlOjpkaWRMb3NlUG9pbnRlckxvY2soKQoreworICAgIG1fcGFnZS0+cG9pbnRlckxvY2tDb250
cm9sbGVyKCktPmRpZExvc2VQb2ludGVyTG9jaygpOworICAgIG1faXNQb2ludGVyTG9ja2VkID0g
ZmFsc2U7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQYWdlOjpzY3JvbGwoUGFnZSogcGFnZSwgU2Ny
b2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7
CiAgICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5ldmVu
dEhhbmRsZXIoKS0+c2Nyb2xsUmVjdXJzaXZlbHkoZGlyZWN0aW9uLCBncmFudWxhcml0eSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAzYTI1Y2Ex
ODY4MDBjOGRlMTAzNjQ5YWEzNDE3NGE0MmUwNjk0MzhjLi40OWUzMzE2NTBkOGY4NjQ4MDIwOTZi
MGM1NDlhMThiYzUzMTVlOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKQEAgLTY2MCw3ICs2NjAsMTAgQEAgcHVibGljOgogCiAgICAgV2ViQ29yZTo6
U2Nyb2xsUGlubmluZ0JlaGF2aW9yIHNjcm9sbFBpbm5pbmdCZWhhdmlvcigpIHsgcmV0dXJuIG1f
c2Nyb2xsUGlubmluZ0JlaGF2aW9yOyB9CiAgICAgdm9pZCBzZXRTY3JvbGxQaW5uaW5nQmVoYXZp
b3IodWludDMyX3QgLyogV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yICovIHBpbm5pbmcp
OwotCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykgJiYgUExBVEZPUk0oR1RLKQorICAgIGJvb2wg
aXNQb2ludGVyTG9ja2VkKCkgeyByZXR1cm4gbV9pc1BvaW50ZXJMb2NrZWQ7IH07CisgICAgdm9p
ZCBzZXRQb2ludGVyTG9ja2VkKGJvb2wgbG9ja2VkKSB7IG1faXNQb2ludGVyTG9ja2VkID0gbG9j
a2VkOyB9OworI2VuZGlmCiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBj
b25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKQEAgLTcyMyw2ICs3MjYsMTEgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGhpZ2hsaWdodFBvdGVudGlhbEFjdGl2YXRpb24oY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBhcmVhKTsKICNlbmRpZgog
I2VuZGlmCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykgJiYgUExBVEZPUk0oR1RLKQorICAgIHZv
aWQgZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBkaWROb3RBY3F1aXJlUG9pbnRl
ckxvY2soKTsKKyAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOworI2VuZGlmCiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCiAgICAgdm9pZCBjb250ZXh0TWVudUhpZGRlbigpIHsgbV9pc1No
b3dpbmdDb250ZXh0TWVudSA9IGZhbHNlOyB9CiAjZW5kaWYKQEAgLTEwMjYsNiArMTAzNCw5IEBA
IHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9tYXhpbXVtUmVuZGVyaW5nU3VwcHJlc3Npb25Ub2tl
bjsKICAgICAKICAgICBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3IgbV9zY3JvbGxQaW5u
aW5nQmVoYXZpb3I7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykgJiYgUExBVEZPUk0oR1RLKQor
ICAgIGJvb2wgbV9pc1BvaW50ZXJMb2NrZWQ7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgppbmRleCA4YTZiNTc0OWU4ZDNkOTFjZThmODZkMTA1NWI2ZGYxODQx
YTI3ZmEzLi41ZmI1NWRjOWViYWY0YzRlMGJiYzE1OWFlYTFjMGQ4ZjNiOGUzNDAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgpAQCAtMzE2LDQgKzMxNiw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2
ZXIgewogICAgIFNldE1haW5GcmFtZUluVmlld1NvdXJjZU1vZGUoYm9vbCBpblZpZXdTb3VyY2VN
b2RlKQogICAgIAogICAgIFNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcih1aW50MzJfdCBwaW5uaW5n
KQorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spICYmIFBMQVRGT1JNKEdUSykgICAgCisgICAgRGlk
QWNxdWlyZVBvaW50ZXJMb2NrKCkKKyAgICBEaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKQorICAg
IERpZExvc2VQb2ludGVyTG9jaygpCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2NGZjMTE5NmNhOTA2N2QwZDJlYjIzNGVmMTY5
YzAzNmVjNDZiODgxLi4wMDM5Yjk0MWEyNDYyZWQ2ZDFmZjZmYzYzOTMwNjYzMzE4ZWIwZDE1IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzUgQEAKKzIwMTMtMDctMjUgIEFudG9uIE9iemhpcm92ICA8YS5vYnpoaXJvdkBzYW1zdW5n
LmNvbT4KKworICAgICAgICBbR1RLXSBFbmFibGUgUG9pbnRlciBMb2NrIGZlYXR1cmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5MDM2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAg
ICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAg
KFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZExvc2VQb2ludGVyTG9jayk6CisgICAgICAgIChXVFI6
OkluamVjdGVkQnVuZGxlOjpkaWROb3RBY3F1aXJlUG9pbnRlckxvY2spOgorICAgICAgICAoV1RS
OjpJbmplY3RlZEJ1bmRsZTo6c2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnNldFBvaW50ZXJMb2NrV2lsbEZhaWxT
eW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6ZGlkQWNxdWly
ZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6ZGlkTG9zZVBvaW50ZXJM
b2NrKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2Nr
KToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFz
eW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0UG9pbnRlckxvY2tX
aWxsRmFpbFN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkQWNxdWlyZVBv
aW50ZXJMb2NrKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZExvc2VQb2ludGVy
TG9jayk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWROb3RBY3F1aXJlUG9pbnRl
ckxvY2spOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0UG9pbnRlckxvY2tXaWxs
UmVzcG9uZEFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNl
dFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZl
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMTMtMDctMjEgIEFuZHJlYXMgS2xpbmcg
IDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEtVUkwgY3JlYXRlcyBkdXBsaWNhdGUgc3Ry
aW5ncyB3aGVuIGNvbXBsZXRpbmcgZGF0YTogVVJJcy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRs
CmluZGV4IGNlNjQ3ZTI2N2NhZTFkMWVmMjhmZmQxZmY3NzA5MzM4N2I1OGE2M2UuLjM5NDMwNjU4
NDEzOTZjNDZlODQwYWE0M2ZiNTRmMzhhZDA3MDY0Y2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbApAQCAtMTkwLDUgKzE5MCwxMCBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAKICAgICAv
LyBTZWN1cmUgdGV4dCBpbnB1dCBtb2RlIChNYWMgb25seSkKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgYm9vbGVhbiBzZWN1cmVFdmVudElucHV0SXNFbmFibGVkOworICAgIHZvaWQgZGlkQWNxdWly
ZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBkaWRMb3NlUG9pbnRlckxvY2soKTsKKyAgICB2b2lk
IGRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpOworICAgIHZvaWQgc2V0UG9pbnRlckxvY2tXaWxs
UmVzcG9uZEFzeW5jaHJvbm91c2x5KCk7CisgICAgdm9pZCBzZXRQb2ludGVyTG9ja1dpbGxGYWls
U3luY2hyb25vdXNseSgpOwogfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCA5MDk0YTY2MWEwYThj
NzBkNmQ0MTBmYTljMTY2M2UwNDBmOWRmNWUwLi41OTIxMDgzZmJlOTVjZDE1MmNhODI1M2MwZjgx
YjlkOTgyNWM4M2Q2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtNTg4LDQgKzU4OCwzNCBAQCB2b2lk
IEluamVjdGVkQnVuZGxlOjpxdWV1ZU5vbkxvYWRpbmdTY3JpcHQoV0tTdHJpbmdSZWYgc2NyaXB0
KQogICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgpLCBz
Y3JpcHQpOwogfQogCit2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRBY3F1aXJlUG9pbnRlckxvY2so
KQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRGlkQWNxdWlyZVBvaW50ZXJMb2NrIikpOwor
ICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsK
K30KKwordm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkTG9zZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkRpZExvc2VQb2ludGVyTG9jayIpKTsKKyAgICBXS0J1bmRsZVBv
c3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7Cit9CisKK3ZvaWQgSW5q
ZWN0ZWRCdW5kbGU6OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpCit7CisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJEaWROb3RBY3F1aXJlUG9pbnRlckxvY2siKSk7CisgICAgV0tCdW5kbGVQb3N0
TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworfQorCit2b2lkIEluamVj
dGVkQnVuZGxlOjpzZXRQb2ludGVyTG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkoKQorewor
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJv
bm91c2x5IikpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1l
LmdldCgpLCAwKTsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0UG9pbnRlckxvY2tXaWxs
RmFpbFN5bmNocm9ub3VzbHkoKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNz
YWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0UG9pbnRl
ckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkiKSk7CisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZSht
X2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuaAppbmRleCAxNzBjOGFjNzBhZDg3MGJlYmRlZWMyMmVhYjIyNzE4MGM2NWFiMTQx
Li4zZGRiNzkwYmRlNjlhZTczOWUyMjIzYzQ1NGMzZDY5NjI5MWI3ZDAzIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5o
CkBAIC0xMDksNiArMTA5LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHF1ZXVlTG9hZGluZ1Njcmlw
dChXS1N0cmluZ1JlZiBzY3JpcHQpOwogICAgIHZvaWQgcXVldWVOb25Mb2FkaW5nU2NyaXB0KFdL
U3RyaW5nUmVmIHNjcmlwdCk7CiAKKyAgICAvLyBQb2ludGVyIGxvY2sKKyAgICB2b2lkIGRpZEFj
cXVpcmVQb2ludGVyTG9jaygpOworICAgIHZvaWQgZGlkTG9zZVBvaW50ZXJMb2NrKCk7CisgICAg
dm9pZCBkaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIHNldFBvaW50ZXJMb2Nr
V2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSgpOworICAgIHZvaWQgc2V0UG9pbnRlckxvY2tXaWxs
RmFpbFN5bmNocm9ub3VzbHkoKTsKKwogcHJpdmF0ZToKICAgICBJbmplY3RlZEJ1bmRsZSgpOwog
ICAgIH5JbmplY3RlZEJ1bmRsZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggYTY5NjYwMDUxN2I2OWU4MjliMGVl
OTJkNjVlNTRkZjJjZjgxYmUwNy4uNDliMmU5NGM3YjkxMTBmNWQxYzExNjI2ZDYyNGYwM2E0YWE5
MDAyNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCkBAIC04MTIsNCArODEyLDI5IEBAIGJvb2wgVGVzdFJ1bm5lcjo6c2Vj
dXJlRXZlbnRJbnB1dElzRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIFdLQm9vbGVhbkdldFZh
bHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4ocmV0dXJuRGF0YSkpOwogfQogCit2b2lkIFRl
c3RSdW5uZXI6OmRpZEFjcXVpcmVQb2ludGVyTG9jaygpCit7CisgICAgSW5qZWN0ZWRCdW5kbGU6
OnNoYXJlZCgpLmRpZEFjcXVpcmVQb2ludGVyTG9jaygpOworfQorCit2b2lkIFRlc3RSdW5uZXI6
OmRpZExvc2VQb2ludGVyTG9jaygpCit7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmRp
ZExvc2VQb2ludGVyTG9jaygpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OmRpZE5vdEFjcXVpcmVQ
b2ludGVyTG9jaygpCit7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmRpZE5vdEFjcXVp
cmVQb2ludGVyTG9jaygpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFBvaW50ZXJMb2NrV2ls
bFJlc3BvbmRBc3luY2hyb25vdXNseSgpCit7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LnNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSgpOworfQorCit2b2lkIFRl
c3RSdW5uZXI6OnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KCkKK3sKKyAgICBJ
bmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3Vz
bHkoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IGVmMGVhOGM3MDhkMWMyZmE5
NWFjNTdiMDBkMmFkNzY2MjM3ZjY3MmEuLmViOTEzODBhNTIyYzIxNmZjZjQ0MGI0NmUyOGZkM2U2
NDJlYjI1M2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCkBAIC0yNzQsNiArMjc0LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHF1
ZXVlTm9uTG9hZGluZ1NjcmlwdChKU1N0cmluZ1JlZiBzY3JpcHQpOwogCiAgICAgYm9vbCBzZWN1
cmVFdmVudElucHV0SXNFbmFibGVkKCkgY29uc3Q7CisgICAgLy8gUG9pbnRlciBsb2NrCisgICAg
dm9pZCBkaWRBY3F1aXJlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9j
aygpOworICAgIHZvaWQgZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBzZXRQ
b2ludGVyTG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkoKTsKKyAgICB2b2lkIHNldFBvaW50
ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KCk7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNv
bnN0IGRvdWJsZSB3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckludGVydmFsOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBjMjM0NTY5OGQzYjM3Yjk3ZDBhODRi
ZjRkOTNlNjVlZTU4ZTNhNDk0Li4yZWYyNTk0NDQwZTdjMTJkOGJiYTRiYWNlNjlmOTVhZWM1MTU2
ZWEwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMTI0
Miw0ICsxMjQyLDMxIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKFdLRnJhbWVSZWYgZnJhbWUsIFdLVVJMUmVzcG9uc2VSZWYKICAgICBXS0ZyYW1lUG9saWN5
TGlzdGVuZXJJZ25vcmUobGlzdGVuZXIpOwogfQogCisvLyBQb2ludGVyIGxvY2sKKyNpZiBQTEFU
Rk9STShHVEspICYmIEVOQUJMRShQT0lOVEVSX0xPQ0spCit2b2lkIFRlc3RDb250cm9sbGVyOjpk
aWRBY3F1aXJlUG9pbnRlckxvY2soKQoreworICAgIFdLUGFnZURpZEFjcXVpcmVQb2ludGVyTG9j
ayhtX21haW5XZWJWaWV3LT5wYWdlKCkpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRM
b3NlUG9pbnRlckxvY2soKQoreworICAgIFdLUGFnZURpZExvc2VQb2ludGVyTG9jayhtX21haW5X
ZWJWaWV3LT5wYWdlKCkpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpkaWROb3RBY3F1aXJl
UG9pbnRlckxvY2soKQoreworICAgIFdLUGFnZURpZE5vdEFjcXVpcmVQb2ludGVyTG9jayhtX21h
aW5XZWJWaWV3LT5wYWdlKCkpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRQb2ludGVy
TG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkoKQoreworICAgIFdLUGFnZVNldFBvaW50ZXJM
b2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseShtX21haW5XZWJWaWV3LT5wYWdlKCkpOworfQor
Cit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNs
eSgpCit7CisgICAgV0tQYWdlU2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkobV9t
YWluV2ViVmlldy0+cGFnZSgpKTsKK30KKyNlbmRpZgogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggZGVlMjY4MzQ2ZGY5YzI4ZDcz
Y2ViZTM5YTgwMzQyMDVkY2EzZDRiNy4uZThjNjZlYWRiMWQzNWM5NTlmZTQxN2VhNGMxMTUwNGI1
MWNmNzAwMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtOTgs
NiArOTgsMTUgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXV0aGVudGljYXRpb25Vc2VybmFtZShT
dHJpbmcgdXNlcm5hbWUpIHsgbV9hdXRoZW50aWNhdGlvblVzZXJuYW1lID0gdXNlcm5hbWU7IH0K
ICAgICB2b2lkIHNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmQoU3RyaW5nIHBhc3N3b3JkKSB7IG1f
YXV0aGVudGljYXRpb25QYXNzd29yZCA9IHBhc3N3b3JkOyB9CiAKKyAgICAvLyBQb2ludGVyIGxv
Y2sKKyNpZiBQTEFURk9STShHVEspICYmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgdm9pZCBk
aWRBY3F1aXJlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOwor
ICAgIHZvaWQgZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBzZXRQb2ludGVy
TG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkoKTsKKyAgICB2b2lkIHNldFBvaW50ZXJMb2Nr
V2lsbEZhaWxTeW5jaHJvbm91c2x5KCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIGlu
aXRpYWxpemUoaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSk7CiAgICAgdm9pZCBjcmVhdGVX
ZWJWaWV3V2l0aE9wdGlvbnMoV0tEaWN0aW9uYXJ5UmVmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggY2U5ZjU1MThlNzVmYzRiNDJhMzRlMmIzOTVjNmQ3
MGZhMjFkMGQ5NC4uZmVkOTNkODlhNzZkNTMwY2QyNGIxZGMxMGI2MGY4Y2U5MDI1M2FlZiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTY1MSw2ICs2NTEs
MzEgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiRGlkQWNx
dWlyZVBvaW50ZXJMb2NrIikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLmRp
ZEFjcXVpcmVQb2ludGVyTG9jaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJEaWRMb3NlUG9pbnRl
ckxvY2siKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkuZGlkTG9zZVBvaW50
ZXJMb2NrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkRpZE5vdEFjcXVpcmVQb2ludGVyTG9jayIp
KSB7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5kaWROb3RBY3F1aXJlUG9pbnRl
ckxvY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFz
eW5jaHJvbm91c2x5IikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLnNldFBv
aW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUs
ICJTZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSIpKSB7CisgICAgICAgIFRlc3RD
b250cm9sbGVyOjpzaGFyZWQoKS5zZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSgp
OworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207851</attachid>
            <date>2013-07-31 07:38:33 -0700</date>
            <delta_ts>2013-10-03 08:25:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99036-20130731153920.patch</filename>
            <type>text/plain</type>
            <size>42014</size>
            <attacher name="Anton Obzhirov">obzhirov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzNTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDJhMzMwOTFmMjBmNTdhZTI5ZDVkZjJk
Nzc2YWM0OTlkZGRlZTAwMTguLmJiZGI1ODA0MTY1Yzc2MDIxMmZmZmY0MTQyNGQ4MzBmMjFjNWM5
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDctMjUgIEFudG9uIE9iemhpcm92ICA8YS5v
YnpoaXJvdkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBFbmFibGUgUG9pbnRlciBMb2Nr
IGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk5MDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvRmVhdHVyZURlZmluZXMuaDoKKwogMjAxMy0wNy0zMSAgQW5kcmVhcyBLbGluZyAgPGFr
bGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgU2hyaW5rIFZlY3RvcnMgd2l0aCBpbmxpbmUgY2Fw
YWNpdHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmZiMmZiYWYwZmIzMzJiODczNmRmYjYxODZhOGY4YTM2Yjlj
YzI2MC4uMzQ0ODFjYTI2ZDQyMTMxYmU3YTk5OGQ3OTcxODg1YTUyZGI4YzJkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDY0IEBACisyMDEzLTA3LTI1ICBBbnRvbiBPYnpoaXJvdiAgPGEub2J6aGly
b3ZAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dUS10gRW5hYmxlIFBvaW50ZXIgTG9jayBmZWF0
dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTAz
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hh
cmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViRXZlbnRDb252
ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtTW91c2VFdmVudDo6
V2ViS2l0MlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAgICogU2hhcmVkL2d0ay9OYXRpdmVX
ZWJNb3VzZUV2ZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVu
dDo6TmF0aXZlV2ViTW91c2VFdmVudCk6CisgICAgICAgICogU2hhcmVkL2d0ay9XZWJFdmVudEZh
Y3RvcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1v
dXNlRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VSZXF1ZXN0
UG9pbnRlckxvY2spOgorICAgICAgICAoV0tQYWdlUmVxdWVzdFBvaW50ZXJVbmxvY2spOgorICAg
ICAgICAoV0tQYWdlRGlkQWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdLUGFnZURpZE5v
dEFjcXVpcmVQb2ludGVyTG9jayk6CisgICAgICAgIChXS1BhZ2VEaWRMb3NlUG9pbnRlckxvY2sp
OgorICAgICAgICAoV0tQYWdlU2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKFdLUGFnZVNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50
SW1wbDo6bG9ja01vdXNlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnVubG9j
a01vdXNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAg
ICAgKHdlYmtpdFdlYlZpZXdCYXNlTW90aW9uTm90aWZ5RXZlbnQpOgorICAgICAgICAod2Via2l0
V2ViVmlld0Jhc2VMb2NrTW91c2UpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VVbmxvY2tN
b3VzZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpX
ZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RQb2lu
dGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFBvaW50ZXJV
bmxvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEFjcXVpcmVQb2ludGVy
TG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkTm90QWNxdWlyZVBvaW50
ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRMb3NlUG9pbnRlckxv
Y2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFBvaW50ZXJMb2NrV2lsbEZh
aWxTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQb2lu
dGVyTG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlckxv
Y2spOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RQb2ludGVyVW5s
b2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojppc1BvaW50ZXJMb2NrZWQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6aGFuZGxlTW91c2VFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZEFjcXVpcmVQb2ludGVyTG9jayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jayk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZExvc2VQb2ludGVyTG9jayk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aXNQ
b2ludGVyTG9ja2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0UG9pbnRlckxvY2tl
ZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisK
IDIwMTMtMDctMzEgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5j
b20+CiAKICAgICAgICAgW1F0XSBCdWlsZCBXZWJLaXQgd2l0aCBDKysxMQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVE
ZWZpbmVzLmgKaW5kZXggNzMyOWM5NWY1NDVjMGU0Zjg1MjMwYTIzNjRjNmVkNmQ2MWI5OTIyYi4u
NDFkM2RmOTg4NjEwMzk0MGYzMDRkOTE4NjA3MDlhYjMzYTU2M2FiMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJl
RGVmaW5lcy5oCkBAIC02NTksOCArNjU5LDEyIEBACiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKEVO
QUJMRV9QT0lOVEVSX0xPQ0spCisjaWYgUExBVEZPUk0oR1RLKQorI2RlZmluZSBFTkFCTEVfUE9J
TlRFUl9MT0NLIDEKKyNlbHNlCiAjZGVmaW5lIEVOQUJMRV9QT0lOVEVSX0xPQ0sgMAogI2VuZGlm
CisjZW5kaWYKIAogI2lmICFkZWZpbmVkKEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UKQogI2RlZmlu
ZSBFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2
ZVdlYk1vdXNlRXZlbnQuaAppbmRleCBkZGU1YjM2MmUzZDI1MWVmY2Y2MTU2ZGQ4NWU0ZDQyMDQ5
Njk5ZThlLi4xODZjNWM2NmY1ZmE0Njg5NWZlODQyMzQyYjE0N2MwZjEwNTZjZTI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmgKQEAgLTUyLDYgKzUyLDkg
QEAgcHVibGljOgogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQo
Y29uc3QgTmF0aXZlV2ViTW91c2VFdmVudCYpOwogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoR2Rr
RXZlbnQqLCBpbnQpOworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgTmF0aXZlV2ViTW91
c2VFdmVudChHZGtFdmVudCosIGludCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CisjZW5k
aWYKICNlbGlmIFBMQVRGT1JNKEVGTCkKICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2
YXNfRXZlbnRfTW91c2VfRG93biosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNv
bnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYpOwogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQo
Y29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9y
bSYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAppbmRleCA4MWFmN2ViMjcwMmU2NDA2MjFlMjhj
YmE3NTA4YTY4MzZjZTQzNmY2Li5hNGEyNjliYjNjZDI5Zjk1MmUxMDUxMmRiMzNkNjE4MTdiZTI1
ZTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcApA
QCAtODIsNyArODIsMTAgQEAgcHVibGljOgogICAgICAgICBtX3Bvc2l0aW9uID0gd2ViRXZlbnQu
cG9zaXRpb24oKTsKICAgICAgICAgbV9nbG9iYWxQb3NpdGlvbiA9IHdlYkV2ZW50Lmdsb2JhbFBv
c2l0aW9uKCk7CiAgICAgICAgIG1fY2xpY2tDb3VudCA9IHdlYkV2ZW50LmNsaWNrQ291bnQoKTsK
LQorI2lmIFBMQVRGT1JNKEdUSykgJiYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICAgICAgbV9t
b3ZlbWVudERlbHRhLnNldFgod2ViRXZlbnQuZGVsdGFYKCkpOworICAgICAgICBtX21vdmVtZW50
RGVsdGEuc2V0WSh3ZWJFdmVudC5kZWx0YVkoKSk7CisjZW5kaWYKICAgICAgICAgbV9tb2RpZmll
ckZsYWdzID0gMDsKICAgICAgICAgaWYgKHdlYkV2ZW50LnNoaWZ0S2V5KCkpCiAgICAgICAgICAg
ICBtX21vZGlmaWVyRmxhZ3MgfD0gV2ViRXZlbnQ6OlNoaWZ0S2V5OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZlV2ViTW91c2VFdmVudEd0ay5jcHAKaW5kZXggMjhk
MDBmMGU2ZmQ1OTE0YjBhODQwNzM3ZTExMWUxNGJlZmQ3NWM0OS4uZjcxMDA0NGU5ZmJhODkyYjA4
YzU1NmYzMTllNDhjMDk3M2UwYThhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwCkBAIC0zNiw3ICszNiwxMyBAQCBOYXRp
dmVXZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KEdka0V2ZW50KiBldmVudCwgaW50
IGV2ZW50Q2xpY2tDb3VudCkKICAgICAsIG1fbmF0aXZlRXZlbnQoZ2RrX2V2ZW50X2NvcHkoZXZl
bnQpKQogewogfQotCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKK05hdGl2ZVdlYk1vdXNlRXZl
bnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoR2RrRXZlbnQqIGV2ZW50LCBpbnQgZXZlbnRDbGlja0Nv
dW50LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGRl
bHRhKQorICAgIDogV2ViTW91c2VFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNl
RXZlbnQoZXZlbnQsIGV2ZW50Q2xpY2tDb3VudCwgcG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBk
ZWx0YSkpCisgICAgLCBtX25hdGl2ZUV2ZW50KGdka19ldmVudF9jb3B5KGV2ZW50KSkKK3sKK30K
KyNlbmRpZgogTmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBO
YXRpdmVXZWJNb3VzZUV2ZW50JiBldmVudCkKICAgICA6IFdlYk1vdXNlRXZlbnQoV2ViRXZlbnRG
YWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KCksIGV2ZW50LmNs
aWNrQ291bnQoKSkpCiAgICAgLCBtX25hdGl2ZUV2ZW50KGdka19ldmVudF9jb3B5KGV2ZW50Lm5h
dGl2ZUV2ZW50KCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJF
dmVudEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3Rv
cnkuY3BwCmluZGV4IGNiODhhODIwYTUxNDQzZTY0OTZmZWY1NzBjMzIzYWE4MjU5ODc0MzguLjY2
YTdiMzdiMzczOTQxNDc3YmNiMmMwYWUwMzFiNGI4M2IzNTMyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKQEAgLTEzMiw3ICsxMzIsMzggQEAg
V2ViTW91c2VFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3Qg
R2RrRXZlbnQqIGV2ZW50LCBpbnQgY3UKICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmll
cnNGb3JFdmVudChldmVudCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RrX2V2ZW50X2dl
dF90aW1lKGV2ZW50KSk7CiB9CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKK1dlYk1vdXNlRXZl
bnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEdka0V2ZW50KiBl
dmVudCwgaW50IGN1cnJlbnRDbGlja0NvdW50LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBw
b3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGRlbHRhKQoreworICAgIFdlYkV2ZW50OjpUeXBlIHR5cGUg
PSBzdGF0aWNfY2FzdDxXZWJFdmVudDo6VHlwZT4oMCk7CisgICAgc3dpdGNoIChldmVudC0+dHlw
ZSkgeworICAgIGNhc2UgR0RLX01PVElPTl9OT1RJRlk6CisgICAgICAgIHR5cGUgPSBXZWJFdmVu
dDo6TW91c2VNb3ZlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdES19CVVRUT05fUFJFU1M6
CisgICAgY2FzZSBHREtfMkJVVFRPTl9QUkVTUzoKKyAgICBjYXNlIEdES18zQlVUVE9OX1BSRVNT
OgorICAgICAgICB0eXBlID0gV2ViRXZlbnQ6Ok1vdXNlRG93bjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBHREtfQlVUVE9OX1JFTEVBU0U6CisgICAgICAgIHR5cGUgPSBXZWJFdmVudDo6TW91
c2VVcDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdCA6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KIAorICAgIHJldHVybiBXZWJNb3VzZUV2ZW50KHR5cGUsCisgICAg
ICAgIGJ1dHRvbkZvckV2ZW50KGV2ZW50KSwKKyAgICAgICAgSW50UG9pbnQocG9zaXRpb24ueCgp
LCBwb3NpdGlvbi55KCkpLAorICAgICAgICBJbnRQb2ludChnbG9iYWxQb3NpdGlvbi54KCksIGds
b2JhbFBvc2l0aW9uLnkoKSksCisgICAgICAgIGRlbHRhLngoKSwKKyAgICAgICAgZGVsdGEueSgp
LAorICAgICAgICAwLAorICAgICAgICBjdXJyZW50Q2xpY2tDb3VudCwKKyAgICAgICAgbW9kaWZp
ZXJzRm9yRXZlbnQoZXZlbnQpLAorICAgICAgICBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZlbnQpKTsK
K30KKyNlbmRpZgogV2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVs
RXZlbnQoY29uc3QgR2RrRXZlbnQqIGV2ZW50KQogewogICAgIGRvdWJsZSB4LCB5LCB4Um9vdCwg
eVJvb3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFj
dG9yeS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaAppbmRl
eCAwODU4MTVjNDJkNDc3YjEyZWRmOTZkMTU2ODkyNmE5ZmY4YWZlNmM3Li43NGE5ZmU5ZjViNjk4
MWUzZjk5NDlhMmFmZTFiY2Y1YmYzNWUzZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9n
dGsvV2ViRXZlbnRGYWN0b3J5LmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBXZWJFdmVudEZhY3RvcnkgewogcHVibGljOgogICAgIHN0YXRpYyBXZWJNb3VzZUV2
ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBpbnQpOworICAgIHN0YXRp
YyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBpbnQs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIHN0YXRpYyBXZWJXaGVlbEV2ZW50IGNy
ZWF0ZVdlYldoZWVsRXZlbnQoY29uc3QgR2RrRXZlbnQqKTsKICAgICBzdGF0aWMgV2ViS2V5Ym9h
cmRFdmVudCBjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEdka0V2ZW50KiwgY29uc3QgV2Vi
Q29yZTo6Q29tcG9zaXRpb25SZXN1bHRzJik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcAppbmRleCA2MTExODZmNWFkNTEyOTU4NGYzNGI0NGM4N2YxNTBlMTI4
ODhiOTczLi42ZGFhNmQ5OWRjM2Q5MWRjYTY0NWE0YTljYjg5ZjRjYzIxNTAzNTAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtOTY2LDUgKzk2Niw1NSBA
QCBXS1N0cmluZ1JlZiBXS1BhZ2VHZXRQbHVnaW5JbmZvcm1hdGlvblBsdWdpblVSTEtleSgpCiAg
ICAgcmV0dXJuIFdLUGx1Z2luSW5mb3JtYXRpb25QbHVnaW5VUkxLZXkoKTsKIH0KIAordm9pZCBX
S1BhZ2VSZXF1ZXN0UG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2VSZWYpCit7CisjaWYgRU5BQkxF
KFBPSU5URVJfTE9DSykKKyAgICBib29sIHJlc3VsdDsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJl
cXVlc3RQb2ludGVyTG9jayhyZXN1bHQpOworI2VuZGlmCit9CisKK3ZvaWQgV0tQYWdlUmVxdWVz
dFBvaW50ZXJVbmxvY2soV0tQYWdlUmVmIHBhZ2VSZWYpCit7CisjaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKKyAgICB0b0ltcGwocGFnZVJlZiktPnJlcXVlc3RQb2ludGVyVW5sb2NrKCk7CisjZW5k
aWYKK30KKwordm9pZCBXS1BhZ2VEaWRBY3F1aXJlUG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2VS
ZWYpCit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICB0b0ltcGwocGFnZVJlZiktPmRp
ZEFjcXVpcmVQb2ludGVyTG9jaygpOworI2VuZGlmCit9CisKK3ZvaWQgV0tQYWdlRGlkTm90QWNx
dWlyZVBvaW50ZXJMb2NrKFdLUGFnZVJlZiBwYWdlUmVmKQoreworI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCisgICAgdG9JbXBsKHBhZ2VSZWYpLT5kaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsK
KyNlbmRpZgorfQorCit2b2lkIFdLUGFnZURpZExvc2VQb2ludGVyTG9jayhXS1BhZ2VSZWYgcGFn
ZVJlZikKK3sKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIHRvSW1wbChwYWdlUmVmKS0+
ZGlkTG9zZVBvaW50ZXJMb2NrKCk7CisjZW5kaWYKK30KKwordm9pZCBXS1BhZ2VTZXRQb2ludGVy
TG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkoV0tQYWdlUmVmIHBhZ2VSZWYpCit7CisjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldFBvaW50ZXJMb2Nr
V2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSgpOworI2VuZGlmCit9CisKK3ZvaWQgV0tQYWdlU2V0
UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoV0tQYWdlUmVmIHBhZ2VSZWYpCit7Cisj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldFBvaW50ZXJM
b2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KCk7CisjZW5kaWYKK30KKwogLy8gLS0gREVQUkVDQVRF
RCAtLQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKaW5kZXggZGM1N2M1
MjNkYzZiYmE0MjM2NDdlYzQzNTRiNDdiOTQ2NzgzYjY5ZS4uMzc4NDEyZjRlMzUxNzM3MWQzZTJm
NjU2MGJiYTA2NGQwMWIyM2FkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuaApAQCAtNTc4LDYgKzU3OCwxNCBAQCBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tQYWdlR2V0
UGx1Z2luSW5mb3JtYXRpb25QbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTEtleSgpOwogLyogVmFsdWUg
dHlwZTogV0tVUkxSZWYgKi8KIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1BhZ2VHZXRQbHVnaW5J
bmZvcm1hdGlvblBsdWdpblVSTEtleSgpOwogCitXS19FWFBPUlQgdm9pZCBXS1BhZ2VSZXF1ZXN0
UG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2VSZWYpOworV0tfRVhQT1JUIHZvaWQgV0tQYWdlUmVx
dWVzdFBvaW50ZXJVbmxvY2soV0tQYWdlUmVmIHBhZ2VSZWYpOworV0tfRVhQT1JUIHZvaWQgV0tQ
YWdlRGlkQWNxdWlyZVBvaW50ZXJMb2NrKFdLUGFnZVJlZiBwYWdlUmVmKTsKK1dLX0VYUE9SVCB2
b2lkIFdLUGFnZURpZE5vdEFjcXVpcmVQb2ludGVyTG9jayhXS1BhZ2VSZWYgcGFnZVJlZik7CitX
S19FWFBPUlQgdm9pZCBXS1BhZ2VEaWRMb3NlUG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2VSZWYp
OworV0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJv
bm91c2x5KFdLUGFnZVJlZiBwYWdlUmVmKTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZVNldFBvaW50
ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KFdLUGFnZVJlZiBwYWdlUmVmKTsKKwogI2lmZGVm
IF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCBiZDIxNGYzYjZkMjI4NzcyZWFjZTI5
OTllNTc4NTk4MmI2MzAyYmQyLi5iNDFkOTA0MWNmNGUwYmFmOWU4MDY4MGM5NjIwYjc0MDRhMmE3
MzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNs
aWVudEltcGwuY3BwCkBAIC0yODksNSArMjg5LDE1IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6Omhh
bmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5KiBkb3dubG9hZCkKIHsKICAgICB3ZWJr
aXRXZWJWaWV3QmFzZUhhbmRsZURvd25sb2FkUmVxdWVzdChXRUJLSVRfV0VCX1ZJRVdfQkFTRSht
X3ZpZXdXaWRnZXQpLCBkb3dubG9hZCk7CiB9CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKK2Jv
b2wgUGFnZUNsaWVudEltcGw6OmxvY2tNb3VzZSgpCit7CisgICAgcmV0dXJuIHdlYmtpdFdlYlZp
ZXdCYXNlTG9ja01vdXNlKFdFQktJVF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpOworfQog
Cit2b2lkIFBhZ2VDbGllbnRJbXBsOjp1bmxvY2tNb3VzZSgpCit7CisgICAgd2Via2l0V2ViVmll
d0Jhc2VVbmxvY2tNb3VzZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKTsKK30K
KyNlbmRpZgogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAppbmRleCBhNzQ2OWNkYmZiMTllZjkzNzUw
NjJmNmU1OWI4ZjlmOWEzMzUxZjQ5Li5kNDM5NzBmNzYyNDhjNTE0OGM1ZmFkZmQwNTQxNThlNTk2
NWJkNTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VD
bGllbnRJbXBsLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRT
aXplLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCkBAIC05OSw3ICsxMDAsMTAgQEAgcHJpdmF0
ZToKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVzdChEb3du
bG9hZFByb3h5Kik7Ci0KKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIHZpcnR1YWwgYm9v
bCBsb2NrTW91c2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5sb2NrTW91c2UoKTsKKyNlbmRpZgog
ICAgIC8vIE1lbWJlcnMgb2YgUGFnZUNsaWVudEltcGwgY2xhc3MKICAgICBHdGtXaWRnZXQqIG1f
dmlld1dpZGdldDsKICAgICBXZWJDb3JlOjpLZXlCaW5kaW5nVHJhbnNsYXRvciBtX2tleUJpbmRp
bmdUcmFuc2xhdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IGE0MTQ5MjBiMTAxNjYzZGFkMmJjOTgwYzU4
Mzg0NTQ1Yzk4MDAzOWIuLmM0YWMwMWUxNTkzMzY4NzUwNjc3NTJiMmM3MGY4MTQ1ZGRhZWE5OGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZS5jcHAKQEAgLTEzMSw2ICsxMzEsMTQgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3
QmFzZVByaXZhdGUgewogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKICAgICBPd25QdHI8UmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IHJlZGlyZWN0ZWRXaW5kb3c7CiAjZW5kaWYKKyNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGJvb2wgbW91c2VMb2NrZWQ7CisgICAgYm9vbCBsb2Nr
ZWRNb3VzZUNlbnRlcmVkOworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9ja2VkTW91c2VQb3Np
dGlvbjsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGxvY2tlZE1vdXNlR2xvYmFsUG9zaXRpb247
CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtb3VzZUdsb2JhbFBvc2l0aW9uOworICAgIFdlYkNv
cmU6OkZsb2F0UG9pbnQgc2F2ZWRNb3VzZUdsb2JhbFBvc2l0aW9uOworI2VuZGlmCiB9OwogCiBX
RUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2ViVmlld0Jhc2UsIHdlYmtpdF93ZWJfdmlld19iYXNl
LCBHVEtfVFlQRV9DT05UQUlORVIpCkBAIC02NjksOCArNjc3LDM5IEBAIHN0YXRpYyBnYm9vbGVh
biB3ZWJraXRXZWJWaWV3QmFzZU1vdGlvbk5vdGlmeUV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBH
ZGtFdmVudE1vCiAgICAgaWYgKHByaXYtPmF1dGhlbnRpY2F0aW9uRGlhbG9nKQogICAgICAgICBy
ZXR1cm4gVFJVRTsKIAotICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRp
dmVXZWJNb3VzZUV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihldmVudCksIDAgLyog
Y3VycmVudENsaWNrQ291bnQgKi8pKTsKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGRv
dWJsZSB4Um9vdCwgeVJvb3Q7CisgICAgZ2RrX2V2ZW50X2dldF9yb290X2Nvb3JkcyhyZWludGVy
cHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpLCAmeFJvb3QsICZ5Um9vdCk7CisKKyAgICBpZiAo
cHJpdi0+bW91c2VMb2NrZWQpIHsKKyAgICAgICAgaWYgKCFwcml2LT5sb2NrZWRNb3VzZUNlbnRl
cmVkKSB7CisgICAgICAgICAgICBkb3VibGUgeCwgeTsKKyAgICAgICAgICAgIGdka19ldmVudF9n
ZXRfY29vcmRzKHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihldmVudCksICZ4LCAmeSk7CisK
KyAgICAgICAgICAgIHByaXYtPmxvY2tlZE1vdXNlUG9zaXRpb24uc2V0KHgsIHkpOworICAgICAg
ICAgICAgcHJpdi0+bG9ja2VkTW91c2VHbG9iYWxQb3NpdGlvbi5zZXQoeFJvb3QsIHlSb290KTsK
KyAgICAgICAgICAgIHByaXYtPnNhdmVkTW91c2VHbG9iYWxQb3NpdGlvbi5zZXQocHJpdi0+bW91
c2VHbG9iYWxQb3NpdGlvbi54KCksIHByaXYtPm1vdXNlR2xvYmFsUG9zaXRpb24ueSgpKTsKKyAg
ICAgICAgICAgIHByaXYtPmxvY2tlZE1vdXNlQ2VudGVyZWQgPSB0cnVlOworICAgICAgICAgICAg
cmV0dXJuIFRSVUU7CisgICAgICAgIH0KIAorICAgICAgICAvLyBNb3ZlbWVudCBpcyBjb21wdXRl
ZCBieSB0YWtpbmcgdGhlIGRpZmZlcmVuY2Ugb2YgdGhlIG5ldyBjdXJzb3IgcG9zaXRpb24KKyAg
ICAgICAgLy8gYW5kIHRoZSBwcmV2aW91cy4gVW5kZXIgbW91c2UgbG9jayB0aGUgY3Vyc29yIHdp
bGwgYmUgd2FycGVkIGJhY2sgdG8gdGhlCisgICAgICAgIC8vIGNlbnRlciBzbyB0aGF0IHdlIGFy
ZSBub3QgbGltaXRlZCBieSBjbGlwcGluZyBib3VuZGFyaWVzLgorICAgICAgICBOYXRpdmVXZWJN
b3VzZUV2ZW50IGxvY2tlZE1vdXNlRXZlbnQocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2
ZW50KSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBwcml2LT5sb2NrZWRNb3VzZVBvc2l0
aW9uLAorICAgICAgICAgICAgcHJpdi0+bG9ja2VkTW91c2VHbG9iYWxQb3NpdGlvbiwKKyAgICAg
ICAgICAgIEZsb2F0UG9pbnQoeFJvb3QgLSBwcml2LT5tb3VzZUdsb2JhbFBvc2l0aW9uLngoKSwg
eVJvb3QgLSBwcml2LT5tb3VzZUdsb2JhbFBvc2l0aW9uLnkoKSkpOworCisgICAgICAgIHByaXYt
Pm1vdXNlR2xvYmFsUG9zaXRpb24uc2V0KHhSb290LCB5Um9vdCk7CisgICAgICAgIHByaXYtPnBh
Z2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChsb2NrZWRNb3VzZUV2ZW50KTsKKyAgICAgICAgcmV0
dXJuIFRSVUU7CisgICAgfQorCisgICAgcHJpdi0+bW91c2VHbG9iYWxQb3NpdGlvbi5zZXQoeFJv
b3QsIHlSb290KTsKKyNlbmRpZgorICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVu
dChOYXRpdmVXZWJNb3VzZUV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihldmVudCks
IDAgLyogY3VycmVudENsaWNrQ291bnQgKi8pKTsKICAgICByZXR1cm4gVFJVRTsKIH0KIApAQCAt
MTEwMywzICsxMTQyLDY5IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VVcGRhdGVUZXh0SW5wdXRT
dGF0ZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiB7CiAgICAgd2Via2l0
V2ViVmlld0Jhc2UtPnByaXYtPmlucHV0TWV0aG9kRmlsdGVyLnNldEN1cnNvclJlY3Qod2Via2l0
V2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+ZWRpdG9yU3RhdGUoKS5jdXJzb3JSZWN0KTsK
IH0KKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorYm9vbCB3ZWJraXRXZWJWaWV3QmFzZUxvY2tN
b3VzZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCit7CisgICAgV2ViS2l0
V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2Via2l0V2ViVmlld0Jhc2UtPnByaXY7CisKKyAg
ICBpZiAocHJpdi0+bW91c2VMb2NrZWQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8g
UmVsZWFzZSBhbnkgY3VycmVudCBncmFiLgorICAgIEd0a1dpZGdldCogY3VycmVudEdyYWJXaW5k
b3cgPSBndGtfZ3JhYl9nZXRfY3VycmVudCgpOworICAgIGlmIChjdXJyZW50R3JhYldpbmRvdykK
KyAgICAgICAgZ3RrX2dyYWJfcmVtb3ZlKGN1cnJlbnRHcmFiV2luZG93KTsKKworICAgIEdka0Rp
c3BsYXkqIGRpc3BsYXkgPSBndGtfd2lkZ2V0X2dldF9kaXNwbGF5KEdUS19XSURHRVQod2Via2l0
V2ViVmlld0Jhc2UpKTsKKyAgICBHZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dp
bmRvdyhHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlKSk7CisgICAgR2RrQ3Vyc29yKiBjdXJz
b3IgPSBnZGtfY3Vyc29yX25ldyhHREtfQkxBTktfQ1VSU09SKTsKKworICAgIEdka0RldmljZU1h
bmFnZXIqIGRldmljZU1hbmFnZXIgPSBnZGtfZGlzcGxheV9nZXRfZGV2aWNlX21hbmFnZXIoZGlz
cGxheSk7CisgICAgR2RrRGV2aWNlKiBkZXZpY2UgPSBnZGtfZGV2aWNlX21hbmFnZXJfZ2V0X2Ns
aWVudF9wb2ludGVyKGRldmljZU1hbmFnZXIpOworCisgICAgaWYgKGdka19kZXZpY2VfZ3JhYihk
ZXZpY2UsCisgICAgICAgIHdpbmRvdywKKyAgICAgICAgR0RLX09XTkVSU0hJUF9OT05FLAorICAg
ICAgICBGQUxTRSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8R2RrRXZlbnRNYXNrPigKKyAgICAgICAg
ICAgIEdES19QT0lOVEVSX01PVElPTl9NQVNLIHwKKyAgICAgICAgICAgIEdES19CVVRUT05fUFJF
U1NfTUFTSyB8CisgICAgICAgICAgICBHREtfQlVUVE9OX1JFTEVBU0VfTUFTSyksCisgICAgICAg
IGN1cnNvciwKKyAgICAgICAgR0RLX0NVUlJFTlRfVElNRSkgIT0gR0RLX0dSQUJfU1VDQ0VTUykg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHJpdi0+bW91c2VMb2NrZWQg
PSB0cnVlOworICAgIHByaXYtPmxvY2tlZE1vdXNlQ2VudGVyZWQgPSBmYWxzZTsKKworICAgIGdp
bnQgeCA9IDA7CisgICAgZ2ludCB5ID0gMDsKKyAgICBnZGtfd2luZG93X2dldF9vcmlnaW4od2lu
ZG93LCAmeCwgJnkpOworCisgICAgZ2ludCB3ID0gZ2RrX3dpbmRvd19nZXRfd2lkdGgod2luZG93
KTsKKyAgICBnaW50IGggPSBnZGtfd2luZG93X2dldF9oZWlnaHQod2luZG93KTsKKyAgICBHZGtT
Y3JlZW4qIHNjcmVlbiA9IGd0a193aWRnZXRfZ2V0X3NjcmVlbihHVEtfV0lER0VUKHdlYmtpdFdl
YlZpZXdCYXNlKSk7CisgICAgZ2RrX2RldmljZV93YXJwKGRldmljZSwgc2NyZWVuLCB4ICsgdyAv
IDIsIHkgKyBoIC8gMik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgd2Via2l0V2ViVmll
d0Jhc2VVbmxvY2tNb3VzZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCit7
CisgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2Via2l0V2ViVmlld0Jhc2Ut
PnByaXY7CisgICAgaWYgKCFwcml2LT5tb3VzZUxvY2tlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgcHJpdi0+bW91c2VMb2NrZWQgPSBmYWxzZTsKKyAgICBwcml2LT5sb2NrZWRNb3VzZUNlbnRl
cmVkID0gZmFsc2U7CisKKyAgICBHZGtEaXNwbGF5KiBkaXNwbGF5ID0gZ3RrX3dpZGdldF9nZXRf
ZGlzcGxheShHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlKSk7CisgICAgR2RrU2NyZWVuKiBz
Y3JlZW4gPSBndGtfd2lkZ2V0X2dldF9zY3JlZW4oR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFz
ZSkpOworICAgIEdka0RldmljZU1hbmFnZXIqIGRldmljZU1hbmFnZXIgPSBnZGtfZGlzcGxheV9n
ZXRfZGV2aWNlX21hbmFnZXIoZGlzcGxheSk7CisgICAgR2RrRGV2aWNlKiBkZXZpY2UgPSBnZGtf
ZGV2aWNlX21hbmFnZXJfZ2V0X2NsaWVudF9wb2ludGVyKGRldmljZU1hbmFnZXIpOworICAgIGdk
a19kZXZpY2VfdW5ncmFiKGRldmljZSwgR0RLX0NVUlJFTlRfVElNRSk7CisKKyAgICAvLyB3YXJw
IG1vdXNlIGJhY2sgdG8gdW5sb2NrZWQgcG9zaXRpb24KKyAgICBnZGtfZGV2aWNlX3dhcnAoZGV2
aWNlLCBzY3JlZW4sIHByaXYtPnNhdmVkTW91c2VHbG9iYWxQb3NpdGlvbi54KCksIHByaXYtPnNh
dmVkTW91c2VHbG9iYWxQb3NpdGlvbi55KCkpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0
ZS5oCmluZGV4IGUzMGZkOTQ5ZWNiOWZhYzE0YjRmYmZkM2FjOTU0YTgwNWFmMDBhYjUuLjA5NzNl
NmZjMzk2NGFkZDJiN2UzMTlhZjM1N2FjMGIwNmRkYjU3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0
ZS5oCkBAIC01MSw3ICs1MSwxMCBAQCBXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlHdGsqIHdl
YmtpdFdlYlZpZXdCYXNlR2V0QWN0aXZlQ29udGV4dE1lbnVQcm94eShXZWJLaQogR2RrRXZlbnQq
IHdlYmtpdFdlYlZpZXdCYXNlVGFrZUNvbnRleHRNZW51RXZlbnQoV2ViS2l0V2ViVmlld0Jhc2Uq
KTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRJbnB1dE1ldGhvZFN0YXRlKFdlYktpdFdlYlZp
ZXdCYXNlKiwgYm9vbCBlbmFibGVkKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VVcGRhdGVUZXh0
SW5wdXRTdGF0ZShXZWJLaXRXZWJWaWV3QmFzZSopOwotCisjaWYgRU5BQkxFKFBPSU5URVJfTE9D
SykKK2Jvb2wgd2Via2l0V2ViVmlld0Jhc2VMb2NrTW91c2UoV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YmtpdFdlYlZpZXdCYXNlKTsKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VVbmxvY2tNb3VzZShXZWJL
aXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpOworI2VuZGlmCiAjaWYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKQogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVF1ZXVlRHJhd09mQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ1Jlc3VsdHMoV2ViS2l0V2ViVmlld0Jhc2UqKTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggM2I3ZWNiODM2ZWRjMTY1MWM3MDBiYTdl
OThmMTlkNTFlOTQzYWU1MC4uM2Y3YWVkODRlMGJhODYzYWJlNDdkZjg3ZmM2ZDkzNjNiNzIxN2Yx
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0xNjksNiArMTY5LDEw
IEBAIHB1YmxpYzoKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50
JiwgY29uc3QgQXRvbWljU3RyaW5nJiwgVmVjdG9yPFdURjo6U3RyaW5nPiYpID0gMDsKKyNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIHZpcnR1YWwgYm9vbCBsb2NrTW91c2UoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHVubG9ja01vdXNlKCkgPSAwOworI2VuZGlmCiAjZW5kaWYKICAgICB2
aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29u
dmVydFRvVXNlclNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggODAwZGM0MzA3NTMwNThmNjFh
OTlmYjk0Y2U4MDMyZjUwZWY2NWJjYS4uY2RiYTE1ZjIwMDMyNTk2ZWEzMjY0ZGNkYzJhNjI3ZTc0
ZjZkNGVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTMxOSw2ICszMTksMTAgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCog
cGFnZUNsaWVudCwgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHAKICAgICAsIG1fdmlzaWJp
bGl0eVN0YXRlKFBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlKQogI2VuZGlmCiAgICAgLCBtX3Nj
cm9sbFBpbm5pbmdCZWhhdmlvcihEb05vdFBpbikKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKSAm
JiBQTEFURk9STShHVEspCisgICAgLCBtX3BvaW50ZXJMb2NrU2hvdWxkRmFpbFN5bmNocm9ub3Vz
bHkoZmFsc2UpCisgICAgLCBtX3BvaW50ZXJMb2NrUmVzcG9uZEFzeW5jaHJvbm91c2x5KGZhbHNl
KQorI2VuZGlmCiB7CiAjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCiAgICAgaWYgKCFt
X2lzVmlzaWJsZSkKQEAgLTI5MjUsNiArMjkyOSw2NCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bmVl
ZFRvdWNoRXZlbnRzKGJvb2wgbmVlZFRvdWNoRXZlbnRzKQogfQogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKSAmJiBQTEFURk9STShHVEspCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVx
dWVzdFBvaW50ZXJMb2NrKGJvb2wmIHJlc3VsdCkKK3sKKyAgICBpZiAobV9wb2ludGVyTG9ja1No
b3VsZEZhaWxTeW5jaHJvbm91c2x5KSB7CisgICAgICAgIG1fcG9pbnRlckxvY2tTaG91bGRGYWls
U3luY2hyb25vdXNseSA9IGZhbHNlOworICAgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3BvaW50ZXJMb2NrUmVzcG9uZEFzeW5jaHJvbm91
c2x5KSB7CisgICAgICAgIG1fcG9pbnRlckxvY2tSZXNwb25kQXN5bmNocm9ub3VzbHkgPSBmYWxz
ZTsKKyAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmIChtX3BhZ2VDbGllbnQtPmxvY2tNb3VzZSgpKSB7CisgICAgICAgIHByb2Nlc3MoKS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQWNxdWlyZVBvaW50ZXJMb2NrKCksIG1fcGFnZUlEKTsK
KyAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHBy
b2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkTm90QWNxdWlyZVBvaW50ZXJMb2Nr
KCksIG1fcGFnZUlEKTsKKyAgICByZXN1bHQgPSBmYWxzZTsKKyAgICByZXR1cm47Cit9CisKK3Zv
aWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UG9pbnRlclVubG9jaygpCit7CisgICAgbV9wYWdlQ2xp
ZW50LT51bmxvY2tNb3VzZSgpOworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkTG9zZVBvaW50ZXJMb2NrKCksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJv
eHk6OmRpZEFjcXVpcmVQb2ludGVyTG9jaygpCit7CisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRBY3F1aXJlUG9pbnRlckxvY2soKSwgbV9wYWdlSUQpOworfQorCit2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBwcm9j
ZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygp
LCBtX3BhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRMb3NlUG9pbnRlckxvY2so
KQoreworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkTG9zZVBvaW50
ZXJMb2NrKCksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnNldFBvaW50ZXJM
b2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KCkKK3sKKyAgICBtX3BvaW50ZXJMb2NrU2hvdWxkRmFp
bFN5bmNocm9ub3VzbHkgPSB0cnVlOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UG9pbnRl
ckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KCkKK3sKKyAgICBtX3BvaW50ZXJMb2NrUmVz
cG9uZEFzeW5jaHJvbm91c2x5ID0gdHJ1ZTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKElOUFVU
X1RZUEVfQ09MT1IpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0NvbG9yUGlja2VyKGNvbnN0IFdl
YkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0KQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGExODJhMDljZGY0
NzdjNDRkOGE0ZDg2MjJhM2QyMGI2YmQ2OTgzZmIuLjAxZWM5MGYyYzAzOWM5Zjk4NzIxY2E1MjEx
YzIwNGJkOWEwZjE1MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTc3Nyw2ICs3NzcsMTYgQEAgcHVibGljOgogICAgICAgICAKICAgICB2b2lkIHNldFNjcm9s
bFBpbm5pbmdCZWhhdmlvcihXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3IpOwogICAgIFdl
YkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBzY3JvbGxQaW5uaW5nQmVoYXZpb3IoKSB7IHJl
dHVybiBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcjsgfQorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9D
SykgJiYgUExBVEZPUk0oR1RLKQorICAgIHZvaWQgcmVxdWVzdFBvaW50ZXJMb2NrKGJvb2wmIHJl
c3VsdCk7CisgICAgdm9pZCByZXF1ZXN0UG9pbnRlclVubG9jaygpOworICAgIHZvaWQgZGlkQWNx
dWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBkaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsK
KyAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOworICAgIHZvaWQgc2V0UG9pbnRlckxvY2tX
aWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KCk7CisgICAgdm9pZCBzZXRQb2ludGVyTG9ja1dpbGxG
YWlsU3luY2hyb25vdXNseSgpOworI2VuZGlmCiAgICAgICAgIAogcHJpdmF0ZToKICAgICBXZWJQ
YWdlUHJveHkoUGFnZUNsaWVudCosIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiwgV2ViUGFn
ZUdyb3VwKiwgdWludDY0X3QgcGFnZUlEKTsKQEAgLTEyODYsNiArMTI5NiwxMCBAQCBwcml2YXRl
OgogI2VuZGlmCiAgICAgICAgIAogICAgIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBt
X3Njcm9sbFBpbm5pbmdCZWhhdmlvcjsKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKSAmJiBQTEFU
Rk9STShHVEspCisgICAgYm9vbCBtX3BvaW50ZXJMb2NrU2hvdWxkRmFpbFN5bmNocm9ub3VzbHk7
CisgICAgYm9vbCBtX3BvaW50ZXJMb2NrUmVzcG9uZEFzeW5jaHJvbm91c2x5OworI2VuZGlmCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDVkMTg2N2RiNjE3MTU1MWIzZmZmNmNl
NmI1ZTEwMTYxMmI4OWE2ODcuLjcyNTJmN2I1MzhlNGMyMDc2NzI3NmM3NDI1MDM4NWRhZDEyM2Zl
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgpAQCAtMzIzLDQgKzMyMywxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewog
ICAgIERpZFVwZGF0ZUluV2luZG93U3RhdGUoKQogICAgIAogICAgIERpZFNhdmVUb1BhZ2VDYWNo
ZSgpCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykgJiYgUExBVEZPUk0oR1RLKQorICAgIFJlcXVl
c3RQb2ludGVyTG9jaygpIC0+IChib29sIHJlc3VsdCkKKyAgICBSZXF1ZXN0UG9pbnRlclVubG9j
aygpCisgICAgU2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KCkKKyAgICBT
ZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSgpCisjZW5kaWYKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAppbmRleCA3ZTlmYzkxYWZiNTEwZTYzM2U4NTEyMGJiZDMzNTViNDU4ODEw
ZWVmLi44ODg0Y2FjM2E4ZjQ3YWI3NWQ5YjQ5ZTJjMjg4NTgyYjI2MzRmZmM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCkBAIC04MTQsNiArODE0LDI0IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50
OjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCkKIH0K
ICNlbmRpZgogCisjaWYgUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorYm9v
bCBXZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RQb2ludGVyTG9jaygpCit7CisgICAgYm9vbCByZXN1
bHQgPSBmYWxzZTsKKyAgICByZXR1cm4gbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpSZXF1ZXN0UG9pbnRlckxvY2soKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVx
dWVzdFBvaW50ZXJMb2NrOjpSZXBseShyZXN1bHQpKSAmJiByZXN1bHQ7Cit9CisKK3ZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlclVubG9jaygpCit7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RQb2ludGVyVW5sb2NrKCkpOworfQorCiti
b29sIFdlYkNocm9tZUNsaWVudDo6aXNQb2ludGVyTG9ja2VkKCkKK3sKKyAgICByZXR1cm4gbV9w
YWdlLT5pc1BvaW50ZXJMb2NrZWQoKTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYkNocm9tZUNsaWVu
dDo6ZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2UoY29uc3QgVmlld3BvcnRBcmd1
bWVudHMmKSBjb25zdAogewogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKaW5kZXggZGZjMjRkZTNlMWViMzMyOWQxOGM0ZTliMmUxZjhiNDc2NDk2YmUyZC4u
MTQyZGM4YjQ4YzA3ODFlNDY2ZjQ0YmI2YTc4NTU0Y2NjYzcxOTM0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCkBAIC0yMDgsNiArMjA4LDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGV4
aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50KikgT1ZFUlJJREU7CiAjZW5k
aWYKIAorI2lmIFBMQVRGT1JNKEdUSykgJiYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICB2aXJ0
dWFsIGJvb2wgcmVxdWVzdFBvaW50ZXJMb2NrKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RQb2ludGVyVW5sb2NrKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzUG9p
bnRlckxvY2tlZCgpIE9WRVJSSURFOworI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAgICAg
dmlydHVhbCB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpIE9WRVJSSURFOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzg1Yjgx
OGMzZGFmMzgwNzM5YzdjZjAxZDViYWJjOTNkMzliMzY5Yy4uZGI0MTFmNjBlODE4ODhlOTFiMzYw
M2YyYzUwMjEwMTk0MjlmZTIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlBsdWdpblByb2Nl
c3NBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJveHkuaCIKICNpbmNsdWRlICJQbHVn
aW5WaWV3LmgiCisjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
UHJpbnRJbmZvLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiU2hhcmVh
YmxlQml0bWFwLmgiCkBAIC0yOTAsNiArMjkxLDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAg
ICAgLCBtX2JhY2tncm91bmRDb2xvcihDb2xvcjo6d2hpdGUpCiAgICAgLCBtX21heGltdW1SZW5k
ZXJpbmdTdXBwcmVzc2lvblRva2VuKDApCiAgICAgLCBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcihE
b05vdFBpbikKKyAgICAsIG1faXNQb2ludGVyTG9ja2VkKGZhbHNlKQogewogICAgIEFTU0VSVCht
X3BhZ2VJRCk7CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSBub24taWRlYWwgbG9jYXRpb24gZm9y
IHRoaXMgU2V0dGluZyBhbmQKQEAgLTE2NDYsNyArMTY0OCwyNiBAQCBzdGF0aWMgYm9vbCBoYW5k
bGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIG1vdXNlRXZlbnQsIFdlYlBhZ2UqIHBh
Z2UsIGJvbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQg
cGxhdGZvcm1Nb3VzZUV2ZW50ID0gcGxhdGZvcm0obW91c2VFdmVudCk7Ci0KKyNpZiBFTkFCTEUo
UE9JTlRFUl9MT0NLKSAmJiBQTEFURk9STShHVEspCisgICAgaWYgKHBhZ2UtPmlzUG9pbnRlckxv
Y2tlZCgpKSB7CisgICAgICAgIEF0b21pY1N0cmluZyBldmVudFR5cGU7CisgICAgICAgIHN3aXRj
aCAocGxhdGZvcm1Nb3VzZUV2ZW50LnR5cGUoKSkgeworICAgICAgICBjYXNlIFBsYXRmb3JtRXZl
bnQ6Ok1vdXNlUHJlc3NlZDoKKyAgICAgICAgICAgIGV2ZW50VHlwZSA9IGV2ZW50TmFtZXMoKS5t
b3VzZWRvd25FdmVudDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBsYXRmb3Jt
RXZlbnQ6Ok1vdXNlUmVsZWFzZWQ6CisgICAgICAgICAgICBldmVudFR5cGUgPSBldmVudE5hbWVz
KCkubW91c2V1cEV2ZW50OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUGxhdGZv
cm1FdmVudDo6TW91c2VNb3ZlZDoKKyAgICAgICAgICAgIGV2ZW50VHlwZSA9IGV2ZW50TmFtZXMo
KS5tb3VzZW1vdmVFdmVudDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgcGFn
ZS0+Y29yZVBhZ2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPmRpc3BhdGNoTG9ja2VkTW91
c2VFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQsIGV2ZW50VHlwZSk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyNlbmRpZgogICAgIHN3aXRjaCAocGxhdGZvcm1Nb3VzZUV2ZW50LnR5cGUo
KSkgewogICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDogewogI2lmIEVO
QUJMRShDT05URVhUX01FTlVTKQpAQCAtMTk4MSw2ICsyMDAyLDI2IEBAIHZvaWQgV2ViUGFnZTo6
dG91Y2hFdmVudFN5bmNGb3JUZXN0aW5nKGNvbnN0IFdlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQs
IGJvb2wmIGhhCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spICYmIFBMQVRG
T1JNKEdUSykKK3ZvaWQgV2ViUGFnZTo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBt
X3BhZ2UtPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLT5kaWRBY3F1aXJlUG9pbnRlckxvY2soKTsK
KyAgICBtX2lzUG9pbnRlckxvY2tlZCA9IHRydWU7Cit9CisKK3ZvaWQgV2ViUGFnZTo6ZGlkTm90
QWNxdWlyZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBtX3BhZ2UtPnBvaW50ZXJMb2NrQ29udHJvbGxl
cigpLT5kaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsKKyAgICBtX2lzUG9pbnRlckxvY2tlZCA9
IGZhbHNlOworfQorCit2b2lkIFdlYlBhZ2U6OmRpZExvc2VQb2ludGVyTG9jaygpCit7CisgICAg
bV9wYWdlLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+ZGlkTG9zZVBvaW50ZXJMb2NrKCk7Cisg
ICAgbV9pc1BvaW50ZXJMb2NrZWQgPSBmYWxzZTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYlBhZ2U6
OnNjcm9sbChQYWdlKiBwYWdlLCBTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFu
dWxhcml0eSBncmFudWxhcml0eSkKIHsKICAgICBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5zY3JvbGxSZWN1cnNpdmVseShkaXJl
Y3Rpb24sIGdyYW51bGFyaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IGJlN2U4NGIxN2MzOTJhOWQxMjVjZjEzNTkwOWMwY2ZlMTdkMzg0NmMu
LjZhOTEwNmMzMGUyMTA3NDA3ZmEyYTYwNjFhNGI3YjJlNDMzMTI2OTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNjYzLDYgKzY2MywxMCBAQCBw
dWJsaWM6CiAgICAgV0tUeXBlUmVmIHBhZ2VPdmVybGF5Q29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZShXS1N0cmluZ1JlZiBhdHRyaWJ1dGUsIFdLVHlwZVJlZiBwYXJhbWV0ZXIpOwogICAg
IFdLQXJyYXlSZWYgcGFnZU92ZXJsYXlDb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZXNOYW1lcyhi
b29sIHBhcmFtZXRlcml6ZWROYW1lcyk7CiAgICAgCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykg
JiYgUExBVEZPUk0oR1RLKQorICAgIGJvb2wgaXNQb2ludGVyTG9ja2VkKCkgeyByZXR1cm4gbV9p
c1BvaW50ZXJMb2NrZWQ7IH07CisgICAgdm9pZCBzZXRQb2ludGVyTG9ja2VkKGJvb2wgbG9ja2Vk
KSB7IG1faXNQb2ludGVyTG9ja2VkID0gbG9ja2VkOyB9OworI2VuZGlmCiBwcml2YXRlOgogICAg
IFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
Jik7CiAKQEAgLTcyNSw2ICs3MjksMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhpZ2hsaWdodFBv
dGVudGlhbEFjdGl2YXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBhcmVhKTsKICNlbmRpZgogI2VuZGlmCisjaWYgRU5BQkxFKFBPSU5URVJfTE9D
SykgJiYgUExBVEZPUk0oR1RLKQorICAgIHZvaWQgZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7Cisg
ICAgdm9pZCBkaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZExvc2VQb2lu
dGVyTG9jaygpOworI2VuZGlmCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgdm9pZCBj
b250ZXh0TWVudUhpZGRlbigpIHsgbV9pc1Nob3dpbmdDb250ZXh0TWVudSA9IGZhbHNlOyB9CiAj
ZW5kaWYKQEAgLTEwMjcsNiArMTAzNiw5IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9tYXhp
bXVtUmVuZGVyaW5nU3VwcHJlc3Npb25Ub2tlbjsKICAgICAKICAgICBXZWJDb3JlOjpTY3JvbGxQ
aW5uaW5nQmVoYXZpb3IgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3I7CisjaWYgRU5BQkxFKFBPSU5U
RVJfTE9DSykgJiYgUExBVEZPUk0oR1RLKQorICAgIGJvb2wgbV9pc1BvaW50ZXJMb2NrZWQ7Cisj
ZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBlMDJmNDJh
ODEzYzlhZWJkM2U4YjQyYTFiYzA2ZjFmNWNmZjJmMjAyLi41NmNlYmZlYjMxMGJiNzllZjU4ZTFl
NDMxMWYzNmQwOTM4MDQ4MWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMzE1LDQgKzMxNSw5IEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldE1haW5GcmFtZUluVmlld1Nv
dXJjZU1vZGUoYm9vbCBpblZpZXdTb3VyY2VNb2RlKQogICAgIAogICAgIFNldFNjcm9sbFBpbm5p
bmdCZWhhdmlvcih1aW50MzJfdCBwaW5uaW5nKQorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spICYm
IFBMQVRGT1JNKEdUSykgICAgCisgICAgRGlkQWNxdWlyZVBvaW50ZXJMb2NrKCkKKyAgICBEaWRO
b3RBY3F1aXJlUG9pbnRlckxvY2soKQorICAgIERpZExvc2VQb2ludGVyTG9jaygpCisjZW5kaWYK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5
ZWI3ZmEzNjdkYTgwNGEwZjdhMTQ0YWE1ODg3ZTM3MGI0YjhkOWViLi5hYWZhNTAwN2Q2NzQyYmNl
YzkyNDY3NTU5NWNmZGIzNzhiMzIxYmFmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTMtMDctMjUgIEFudG9uIE9i
emhpcm92ICA8YS5vYnpoaXJvdkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBFbmFibGUg
UG9pbnRlciBMb2NrIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk5MDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkQWNx
dWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZExvc2VQ
b2ludGVyTG9jayk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWROb3RBY3F1aXJl
UG9pbnRlckxvY2spOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6c2V0UG9pbnRlckxv
Y2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5k
bGU6OnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmg6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAg
KFdUUjo6VGVzdFJ1bm5lcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6ZGlkTG9zZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5l
cjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6
c2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6c2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OmRpZExvc2VQb2ludGVyTG9jayk6CisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjpkaWROb3RBY3F1aXJlUG9pbnRlckxvY2spOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6c2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KToKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91
c2x5KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisK
IDIwMTMtMDctMzEgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5j
b20+CiAKICAgICAgICAgW1F0XSBCdWlsZCBXZWJLaXQgd2l0aCBDKysxMQpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGwKaW5kZXggZTI2MmIyNTdlMjdmZmMxYjcxOTE2ODRhNTNiNDNjZmZmODJjZGM4
Ny4uMGQ4NzkzM2IxY2Y3NDcwOWQyODUwN2IyZDQzYmY4Y2UwZmFjZDZmZSAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsCkBAIC0xOTAsMTIgKzE5MCwxOCBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5l
ciB7CiAKICAgICAvLyBTZWN1cmUgdGV4dCBpbnB1dCBtb2RlIChNYWMgb25seSkKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiBzZWN1cmVFdmVudElucHV0SXNFbmFibGVkOwotICAgIAor
CiAgICAgLy8gT3ZlcnJpZGUgcGx1Z2luIGxvYWQgcG9saWN5LgogICAgIHZvaWQgc2V0QmxvY2tB
bGxQbHVnaW5zKGJvb2xlYW4gc2hvdWxkQmxvY2spOwogICAgIAogICAgIC8vIEhvb2tzIHRvIHRo
ZSBKU0MgY29tcGlsZXIuCiAgICAgb2JqZWN0IG51bWJlck9mREZHQ29tcGlsZXMob2JqZWN0IGZ1
bmN0aW9uKTsKICAgICBvYmplY3QgbmV2ZXJJbmxpbmVGdW5jdGlvbihvYmplY3QgZnVuY3Rpb24p
OworCisgICAgdm9pZCBkaWRBY3F1aXJlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZExvc2VQ
b2ludGVyTG9jaygpOworICAgIHZvaWQgZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAg
dm9pZCBzZXRQb2ludGVyTG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkoKTsKKyAgICB2b2lk
IHNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KCk7CiB9OwogCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCmluZGV4IDkwOTRhNjYxYTBhOGM3MGQ2ZDQxMGZhOWMxNjYzZTA0MGY5ZGY1ZTAuLjU5MjEw
ODNmYmU5NWNkMTUyY2E4MjUzYzBmODFiOWQ5ODI1YzgzZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBA
IC01ODgsNCArNTg4LDM0IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnF1ZXVlTm9uTG9hZGluZ1Nj
cmlwdChXS1N0cmluZ1JlZiBzY3JpcHQpCiAgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRs
ZSwgbWVzc2FnZU5hbWUuZ2V0KCksIHNjcmlwdCk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6
OmRpZEFjcXVpcmVQb2ludGVyTG9jaygpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJEaWRB
Y3F1aXJlUG9pbnRlckxvY2siKSk7CisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwg
bWVzc2FnZU5hbWUuZ2V0KCksIDApOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRMb3Nl
UG9pbnRlckxvY2soKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFt
ZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRGlkTG9zZVBvaW50ZXJM
b2NrIikpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdl
dCgpLCAwKTsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkTm90QWNxdWlyZVBvaW50ZXJM
b2NrKCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRX
SywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkRpZE5vdEFjcXVpcmVQb2ludGVyTG9j
ayIpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQo
KSwgMCk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFBvaW50ZXJMb2NrV2lsbFJlc3Bv
bmRBc3luY2hyb25vdXNseSgpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3Nh
Z2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRQb2ludGVy
TG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkiKSk7CisgICAgV0tCdW5kbGVQb3N0TWVzc2Fn
ZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworfQorCit2b2lkIEluamVjdGVkQnVu
ZGxlOjpzZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSgpCit7CisgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJTZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSIpKTsKKyAg
ICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IDE3MGM4YWM3MGFkODcwYmVi
ZGVlYzIyZWFiMjI3MTgwYzY1YWIxNDEuLjNkZGI3OTBiZGU2OWFlNzM5ZTIyMjNjNDU0YzNkNjk2
MjkxYjdkMDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTEwOSw2ICsxMDksMTMgQEAgcHVibGljOgogICAg
IHZvaWQgcXVldWVMb2FkaW5nU2NyaXB0KFdLU3RyaW5nUmVmIHNjcmlwdCk7CiAgICAgdm9pZCBx
dWV1ZU5vbkxvYWRpbmdTY3JpcHQoV0tTdHJpbmdSZWYgc2NyaXB0KTsKIAorICAgIC8vIFBvaW50
ZXIgbG9jaworICAgIHZvaWQgZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBkaWRM
b3NlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpOwor
ICAgIHZvaWQgc2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KCk7CisgICAg
dm9pZCBzZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSgpOworCiBwcml2YXRlOgog
ICAgIEluamVjdGVkQnVuZGxlKCk7CiAgICAgfkluamVjdGVkQnVuZGxlKCk7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRl
eCA0MzFlZTI0YjVhM2Q5ZGVkNTkyZDFkNjUzZTFhODUzMWJmNjdhODA5Li4yNGNmYTQzNmIxM2Ix
ZmJmMzJkNzdjMzA4ZWEwZGY0NmZmZDhiYWRmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTgzNCw0ICs4MzQsMjkg
QEAgSlNWYWx1ZVJlZiBUZXN0UnVubmVyOjpuZXZlcklubGluZUZ1bmN0aW9uKEpTVmFsdWVSZWYg
dGhlRnVuY3Rpb24pCiAgICAgcmV0dXJuIEpTQzo6c2V0TmV2ZXJJbmxpbmUoY29udGV4dCwgdGhl
RnVuY3Rpb24pOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OmRpZEFjcXVpcmVQb2ludGVyTG9jaygp
Cit7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmRpZEFjcXVpcmVQb2ludGVyTG9jaygp
OworfQorCit2b2lkIFRlc3RSdW5uZXI6OmRpZExvc2VQb2ludGVyTG9jaygpCit7CisgICAgSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmRpZExvc2VQb2ludGVyTG9jaygpOworfQorCit2b2lkIFRl
c3RSdW5uZXI6OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpCit7CisgICAgSW5qZWN0ZWRCdW5k
bGU6OnNoYXJlZCgpLmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpOworfQorCit2b2lkIFRlc3RS
dW5uZXI6OnNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSgpCit7CisgICAg
SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hy
b25vdXNseSgpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFBvaW50ZXJMb2NrV2lsbEZhaWxT
eW5jaHJvbm91c2x5KCkKK3sKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc2V0UG9pbnRl
ckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
CmluZGV4IDYyN2Q2ZDQwZjAzN2VkMDUwMjk5YjIyMDgxZDliZjJjNGQ3YmM2NzkuLmEwODliNWM0
YTI5M2UzYjI3MTUwMzA2OWEwYjQ2Y2M3OWQ2NjI0MDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC0yODAsNiArMjgwLDEz
IEBAIHB1YmxpYzoKICAgICBKU1ZhbHVlUmVmIG51bWJlck9mREZHQ29tcGlsZXMoSlNWYWx1ZVJl
ZiB0aGVGdW5jdGlvbik7CiAgICAgSlNWYWx1ZVJlZiBuZXZlcklubGluZUZ1bmN0aW9uKEpTVmFs
dWVSZWYgdGhlRnVuY3Rpb24pOwogCisgICAgLy8gUG9pbnRlciBsb2NrCisgICAgdm9pZCBkaWRB
Y3F1aXJlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOworICAg
IHZvaWQgZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBzZXRQb2ludGVyTG9j
a1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkoKTsKKyAgICB2b2lkIHNldFBvaW50ZXJMb2NrV2ls
bEZhaWxTeW5jaHJvbm91c2x5KCk7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJs
ZSB3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckludGVydmFsOwogCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDYzZTAzMzAzMzYwOGY1NzVlNjQ4MWE2NDJiZjgy
YjE5ODAwMmYwN2IuLmY1MTFhZWQ2YjhkNGEzYTg0OTMxZTY2ODZmZGE1OTIxNWExYzdmOTYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xMjU4LDQgKzEy
NTgsMzEgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV0tG
cmFtZVJlZiBmcmFtZSwgV0tVUkxSZXNwb25zZVJlZgogICAgIFdLRnJhbWVQb2xpY3lMaXN0ZW5l
cklnbm9yZShsaXN0ZW5lcik7CiB9CiAKKy8vIFBvaW50ZXIgbG9jaworI2lmIFBMQVRGT1JNKEdU
SykgJiYgRU5BQkxFKFBPSU5URVJfTE9DSykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZEFjcXVp
cmVQb2ludGVyTG9jaygpCit7CisgICAgV0tQYWdlRGlkQWNxdWlyZVBvaW50ZXJMb2NrKG1fbWFp
bldlYlZpZXctPnBhZ2UoKSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZExvc2VQb2lu
dGVyTG9jaygpCit7CisgICAgV0tQYWdlRGlkTG9zZVBvaW50ZXJMb2NrKG1fbWFpbldlYlZpZXct
PnBhZ2UoKSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZE5vdEFjcXVpcmVQb2ludGVy
TG9jaygpCit7CisgICAgV0tQYWdlRGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKG1fbWFpbldlYlZp
ZXctPnBhZ2UoKSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFBvaW50ZXJMb2NrV2ls
bFJlc3BvbmRBc3luY2hyb25vdXNseSgpCit7CisgICAgV0tQYWdlU2V0UG9pbnRlckxvY2tXaWxs
UmVzcG9uZEFzeW5jaHJvbm91c2x5KG1fbWFpbldlYlZpZXctPnBhZ2UoKSk7Cit9CisKK3ZvaWQg
VGVzdENvbnRyb2xsZXI6OnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KCkKK3sK
KyAgICBXS1BhZ2VTZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseShtX21haW5XZWJW
aWV3LT5wYWdlKCkpOworfQorI2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBmNmRlYmRkMTU2ZWQzNmI0N2Q5ZGI0Y2Vi
NmYzZWQ4NjQ5ZTIwMjcxLi45OTcwOWE5MzFhNmU1NDA2N2FhZDQ2MThmZDA2ZWJjZmE3MThiOThj
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC05OSw2ICs5OSwx
NCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBdXRoZW50aWNhdGlvblBhc3N3b3JkKFN0cmluZyBw
YXNzd29yZCkgeyBtX2F1dGhlbnRpY2F0aW9uUGFzc3dvcmQgPSBwYXNzd29yZDsgfQogCiAgICAg
dm9pZCBzZXRCbG9ja0FsbFBsdWdpbnMoYm9vbCBzaG91bGRCbG9jaykgeyBtX3Nob3VsZEJsb2Nr
QWxsUGx1Z2lucyA9IHNob3VsZEJsb2NrOyB9CisgICAgLy8gUG9pbnRlciBsb2NrCisjaWYgUExB
VEZPUk0oR1RLKSAmJiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIHZvaWQgZGlkQWNxdWlyZVBv
aW50ZXJMb2NrKCk7CisgICAgdm9pZCBkaWRMb3NlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRp
ZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpOworICAgIHZvaWQgc2V0UG9pbnRlckxvY2tXaWxsUmVz
cG9uZEFzeW5jaHJvbm91c2x5KCk7CisgICAgdm9pZCBzZXRQb2ludGVyTG9ja1dpbGxGYWlsU3lu
Y2hyb25vdXNseSgpOworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplKGlu
dCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcAppbmRleCA2OTIzNmJmOTc5NmM4Y2JjZWEyZDczOTMwOGQ2NTYyYmNjYmNj
MDkwLi4xNzg3OTc5NjNiYjNmMDUwNDVmYmYyNjJiMTljNzkxZTU1ZTQ1ZTkwIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtNjU1LDYgKzY1NSwzMCBAQCB2
b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShX
S1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2Fn
ZUJvZHkpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsKICAgICAgICAgV0tCb29sZWFuUmVmIHNo
b3VsZEJsb2NrID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9keSk7CiAgICAg
ICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5zZXRCbG9ja0FsbFBsdWdpbnMoV0tCb29sZWFu
R2V0VmFsdWUoc2hvdWxkQmxvY2spKTsKKyAgICB9CisKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkRpZEFjcXVpcmVQb2ludGVyTG9jayIpKSB7Cisg
ICAgICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5kaWRBY3F1aXJlUG9pbnRlckxvY2soKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKG1lc3NhZ2VOYW1lLCAiRGlkTG9zZVBvaW50ZXJMb2NrIikpIHsKKyAgICAgICAgVGVz
dENvbnRyb2xsZXI6OnNoYXJlZCgpLmRpZExvc2VQb2ludGVyTG9jaygpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2Fn
ZU5hbWUsICJEaWROb3RBY3F1aXJlUG9pbnRlckxvY2siKSkgeworICAgICAgICBUZXN0Q29udHJv
bGxlcjo6c2hhcmVkKCkuZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdl
TmFtZSwgIlNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSIpKSB7CisgICAg
ICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5zZXRQb2ludGVyTG9ja1dpbGxSZXNwb25kQXN5
bmNocm9ub3VzbHkoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0UG9pbnRlckxvY2tXaWxsRmFp
bFN5bmNocm9ub3VzbHkiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkuc2V0
UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213248</attachid>
            <date>2013-10-03 08:25:55 -0700</date>
            <delta_ts>2013-10-03 10:43:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99036-20131003162603.patch</filename>
            <type>text/plain</type>
            <size>52461</size>
            <attacher name="Anton Obzhirov">obzhirov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2ODMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg3N2U5Y2E1MTkxODdiYjcxYTM0ODZj
NDk5YTI5OTM2Y2VhYzI5NWYuLjQ3OTAxY2FiN2Q0MWRiMGRhNDExZjhlMzdlNWFjODUyZWE2Njli
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMTAtMDMgIEFudG9uIE9iemhpcm92ICA8YS5v
YnpoaXJvdkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBFbmFibGUgUG9pbnRlciBMb2Nr
IGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk5MDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RW5hYmxlIFBPSU5URVJfTE9DSyBmbGFnIGZvciBHVEsgcG9ydC4KKworICAgICAgICAqIHd0Zi9G
ZWF0dXJlRGVmaW5lcy5oOgorCiAyMDEzLTEwLTAyICBOYWRhdiBSb3RlbSAgPG5yb3RlbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRWxpbWluYXRlIGEgYnJhbmNoIGluIEZhc3RCaXRWZWN0b3Igc2V0
QW5kQ2hlY2ssIG1ha2UgaXQgdmVjdG9yaXphYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDdmYTgyYjgxOTYx
ZDBlYzhlMWI1NWFiNDY3ODA1MzQ2YWJjZWMwODIuLmRlNWNmNzQ1NDFlNzQ0M2FjNGVhOGE3OTdm
NDBkZDM4N2M0NmU4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NSBAQAorMjAxMy0xMC0wMyAg
QW50b24gT2J6aGlyb3YgIDxhLm9iemhpcm92QHNhbXN1bmcuY29tPgorCisgICAgICAgIFtHVEtd
IEVuYWJsZSBQb2ludGVyIExvY2sgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkwMzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNYWtlIGNoYW5nZXMgaW4gV0syIHRvIHByb3ZpZGUgSVBDIGNv
bW11bmljYXRpb24gYmV0d2VlbiB3ZWIgcHJvY2VzcworICAgICAgICBhbmQgVUkgcHJvY2VzcyBm
b3IgcG9pbnRlciBsb2NrIEFQSS4gV2hlbiBwb2ludGVyIGlzIGxvY2tlZAorICAgICAgICByYXcg
bW91c2UgZXZlbnQgZGF0YSAoZGlmZmVyZW5jZSBiZXR3ZWVuIHByZXZpb3VzIGFuZCBjdXJyZW50
CisgICAgICAgIHBvaW50ZXIgZ2xvYmFsIGNvb3JkaW5hdGVzKSBnZXRzIHBhc3NlZCBmcm9tIFVJ
IHByb2Nlc3MgdG8gd2ViIHByb2Nlc3MuCisgICAgICAgIFBvaW50ZXIgbG9jayBpcyB0cmlnZ2Vy
ZWQgYnkgV2ViIGFwcGxpY2F0aW9uIGFuZCBjYW4gYmUgY2FuY2VsbGVkCisgICAgICAgIGJ5IHRo
ZSBhcHBsaWNhdGlvbiBvciB3aGVuIEVTQyBrZXkgaXMgcHJlc3NlZC4KKworICAgICAgICBBZGQg
cGxhdGZvcm0gZGVwZW5kZWQgY29kZSBmb3IgdGhlIHRyYW5zaXRpb24gdG8gdGhlIHBvaW50ZXIg
bG9ja2VkIHN0YXRlLAorICAgICAgICB0byB0cmFjayBtb3VzZSBtb3ZlbWVudHMgZHVyaW5nIHRo
ZSBwb2ludGVyIGxvY2sgYW5kIGZvciB0aGUgdHJhbnNpdGlvbiBiYWNrCisgICAgICAgIHRvIHRo
ZSBwb2ludGVyIHVubG9ja2VkIHN0YXRlLgorCisgICAgICAgICogU2hhcmVkL05hdGl2ZVdlYk1v
dXNlRXZlbnQuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtTW91c2VFdmVudDo6V2ViS2l0MlBsYXRmb3Jt
TW91c2VFdmVudCk6CisgICAgICAgICogU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3Rr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91
c2VFdmVudCk6CisgICAgICAgICogU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQpOgorICAg
ICAgICAqIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VSZXF1ZXN0UG9pbnRlckxvY2spOgor
ICAgICAgICAoV0tQYWdlUmVxdWVzdFBvaW50ZXJVbmxvY2spOgorICAgICAgICAoV0tQYWdlRGlk
QWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdLUGFnZURpZE5vdEFjcXVpcmVQb2ludGVy
TG9jayk6CisgICAgICAgIChXS1BhZ2VEaWRMb3NlUG9pbnRlckxvY2spOgorICAgICAgICAoV0tQ
YWdlU2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdL
UGFnZVNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNs
aWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6bG9ja01vdXNl
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnVubG9ja01vdXNlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZp
ZXdCYXNlTW90aW9uTm90aWZ5RXZlbnQpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VMb2Nr
TW91c2UpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VVbmxvY2tNb3VzZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RQb2ludGVyTG9jayk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFBvaW50ZXJVbmxvY2spOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEFjcXVpcmVQb2ludGVyTG9jayk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRMb3NlUG9pbnRlckxvY2spOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQb2ludGVyTG9ja1dpbGxSZXNw
b25kQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAgICAo
V2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RQb2ludGVyVW5sb2NrKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojppc1BvaW50ZXJMb2NrZWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpX
ZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6aGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmRpZEFjcXVpcmVQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRpZExvc2VQb2ludGVyTG9jayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aXNQb2ludGVyTG9ja2VkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0UG9pbnRlckxvY2tlZCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTMtMTAtMDMgIFph
biBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
Zml4IG9mIERyYXdpbmdBcmVhIGNyZWF0aW9uIG9uIG5vbi1NYWMgcGxhdGZvcm1zIGFmdGVyIHIx
NTY3OTMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oIGIvU291
cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAppbmRleCAxMzMwZjk5YmFlZGI4MjMyMWE4MTEz
YTY1MTQ1MmE3ODBhNDEyMDIwLi5lMTliYWZjODNhMWJmNThkMWVjMGU5OGI0YmE2MDE0NjVjMjBk
MDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKQEAgLTY4NCw4ICs2ODQsMTIgQEAKICNlbmRp
ZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX1BPSU5URVJfTE9DSykKKyNpZiBQTEFURk9STShHVEsp
CisjZGVmaW5lIEVOQUJMRV9QT0lOVEVSX0xPQ0sgMQorI2Vsc2UKICNkZWZpbmUgRU5BQkxFX1BP
SU5URVJfTE9DSyAwCiAjZW5kaWYKKyNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX1BST0dS
RVNTX0VMRU1FTlQpCiAjZGVmaW5lIEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UIDAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCmluZGV4IDNiNjAxOTkwNDliNTEwNjZhNGZlYjgzODdjYzA0ZGZlYmU1NGEz
ZTMuLmJmZmVmZTJiYmY1OGExOTgyZWQxZjVkZjYyN2I2ZDY3ZjEwZTM5MDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcApAQCAtNTQ4Nyw3ICs1NDg3LDcgQEAgdm9pZCBEb2N1bWVudDo6d2Via2l0
RXhpdFBvaW50ZXJMb2NrKCkKICAgICBpZiAoIXBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IGlmIChFbGVtZW50KiB0YXJnZXQgPSBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLT5l
bGVtZW50KCkpIHsKLSAgICAgICAgaWYgKHRhcmdldC0+ZG9jdW1lbnQoKSAhPSB0aGlzKQorICAg
ICAgICBpZiAoJnRhcmdldC0+ZG9jdW1lbnQoKSAhPSB0aGlzKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLT5yZXF1ZXN0UG9p
bnRlclVubG9jaygpOwpAQCAtNTQ5OCw3ICs1NDk4LDcgQEAgRWxlbWVudCogRG9jdW1lbnQ6Ondl
YmtpdFBvaW50ZXJMb2NrRWxlbWVudCgpIGNvbnN0CiAgICAgaWYgKCFwYWdlKCkgfHwgcGFnZSgp
LT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+bG9ja1BlbmRpbmcoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgaWYgKEVsZW1lbnQqIGVsZW1lbnQgPSBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJv
bGxlcigpLT5lbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKGVsZW1lbnQtPmRvY3VtZW50KCkgPT0g
dGhpcykKKyAgICAgICAgaWYgKCZlbGVtZW50LT5kb2N1bWVudCgpID09IHRoaXMpCiAgICAgICAg
ICAgICByZXR1cm4gZWxlbWVudDsKICAgICB9CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCmluZGV4IDJhNGE3
ZWJlYjI4NWVjZTBiMWMzMjkwNDNlYTRkNDg3ZDdjYjI0MjMuLmMzNGE4NmQ1YWFlNTFmOWU4ODk0
M2ZhNDE0MDQyNmQ2NTYwMWYyYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBAIC0xNDYsNyArMTQ2LDYgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQo
RWxlbWVudCopOwogICAgICAgICB2b2lkIGNhbmNlbEZ1bGxTY3JlZW4oKTsKICNlbmRpZgotCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oU2Nyb2xsRGly
ZWN0aW9uKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBudW1X
aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmgKaW5kZXggZGRlNWIzNjJlM2QyNTFlZmNmNjE1
NmRkODVlNGQ0MjA0OTY5OWU4ZS4uODNhNzM4ZTFiNDQ1ZTkyOTA5NTkxODExZWE2YmRlYTMzYzE4
ZjE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZl
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oCkBA
IC01MSw3ICs1MSw4IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBOYXRpdmVXZWJNb3VzZUV2ZW50
KFFNb3VzZUV2ZW50KiwgY29uc3QgUVRyYW5zZm9ybSYgZnJvbUl0ZW1UcmFuc2Zvcm0sIGludCBl
dmVudENsaWNrQ291bnQpOwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIE5hdGl2ZVdlYk1vdXNl
RXZlbnQoY29uc3QgTmF0aXZlV2ViTW91c2VFdmVudCYpOwotICAgIE5hdGl2ZVdlYk1vdXNlRXZl
bnQoR2RrRXZlbnQqLCBpbnQpOworICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZl
bnQqLCBpbnQpOworICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBpbnQs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogI2VsaWYgUExBVEZPUk0oRUZMKQogICAgIE5h
dGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiwgY29uc3QgV2Vi
Q29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJik7
CiAgICAgTmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwKiwgY29u
c3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNm
b3JtJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJz
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCmlu
ZGV4IDgxYWY3ZWIyNzAyZTY0MDYyMWUyOGNiYTc1MDhhNjgzNmNlNDM2ZjYuLjRmMmRkNGQwNWRi
MzM3NjgwNzYwMDc0ZDc3OGU1N2ZlN2RiODU3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCkBAIC04Miw3ICs4MiwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fcG9zaXRpb24gPSB3ZWJFdmVudC5wb3NpdGlvbigpOwogICAgICAgICBtX2dsb2JhbFBv
c2l0aW9uID0gd2ViRXZlbnQuZ2xvYmFsUG9zaXRpb24oKTsKICAgICAgICAgbV9jbGlja0NvdW50
ID0gd2ViRXZlbnQuY2xpY2tDb3VudCgpOwotCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAg
ICAgICAgbV9tb3ZlbWVudERlbHRhLnNldFgod2ViRXZlbnQuZGVsdGFYKCkpOworICAgICAgICBt
X21vdmVtZW50RGVsdGEuc2V0WSh3ZWJFdmVudC5kZWx0YVkoKSk7CisjZW5kaWYKICAgICAgICAg
bV9tb2RpZmllckZsYWdzID0gMDsKICAgICAgICAgaWYgKHdlYkV2ZW50LnNoaWZ0S2V5KCkpCiAg
ICAgICAgICAgICBtX21vZGlmaWVyRmxhZ3MgfD0gV2ViRXZlbnQ6OlNoaWZ0S2V5OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZlV2ViTW91c2VFdmVudEd0ay5jcHAK
aW5kZXggMjhkMDBmMGU2ZmQ1OTE0YjBhODQwNzM3ZTExMWUxNGJlZmQ3NWM0OS4uZmY3YzdlMWNk
MjY0YjIxNTVkZjU4NDhmMGIwOTlkMTBmMjc1OGE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwCkBAIC0zMSwxNCArMzEs
MjAgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLU5hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2
ZVdlYk1vdXNlRXZlbnQoR2RrRXZlbnQqIGV2ZW50LCBpbnQgZXZlbnRDbGlja0NvdW50KQorTmF0
aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBHZGtFdmVudCogZXZl
bnQsIGludCBldmVudENsaWNrQ291bnQpCiAgICAgOiBXZWJNb3VzZUV2ZW50KFdlYkV2ZW50RmFj
dG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChldmVudCwgZXZlbnRDbGlja0NvdW50KSkKICAgICAs
IG1fbmF0aXZlRXZlbnQoZ2RrX2V2ZW50X2NvcHkoZXZlbnQpKQogewogfQogCitOYXRpdmVXZWJN
b3VzZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KGNvbnN0IEdka0V2ZW50KiBldmVudCwgaW50
IGV2ZW50Q2xpY2tDb3VudCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcG9zaXRpb24sIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50JiBkZWx0YSkKKyAgICA6IFdlYk1vdXNlRXZlbnQoV2ViRXZlbnRGYWN0b3J5Ojpj
cmVhdGVXZWJNb3VzZUV2ZW50KGV2ZW50LCBldmVudENsaWNrQ291bnQsIHBvc2l0aW9uLCBnbG9i
YWxQb3NpdGlvbiwgZGVsdGEpKQorICAgICwgbV9uYXRpdmVFdmVudChnZGtfZXZlbnRfY29weShl
dmVudCkpCit7Cit9CisKIE5hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQo
Y29uc3QgTmF0aXZlV2ViTW91c2VFdmVudCYgZXZlbnQpCi0gICAgOiBXZWJNb3VzZUV2ZW50KFdl
YkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChldmVudC5uYXRpdmVFdmVudCgpLCBl
dmVudC5jbGlja0NvdW50KCkpKQorICAgIDogV2ViTW91c2VFdmVudChXZWJFdmVudEZhY3Rvcnk6
OmNyZWF0ZVdlYk1vdXNlRXZlbnQoZXZlbnQpKQogICAgICwgbV9uYXRpdmVFdmVudChnZGtfZXZl
bnRfY29weShldmVudC5uYXRpdmVFdmVudCgpKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAppbmRleCBjYjg4YTgyMGE1MTQ0M2U2NDk2ZmVm
NTcwYzMyM2FhODI1OTg3NDM4Li42Nzg1YjE1MmYwM2VlMTUzMTllNTlmN2M3YjYwNjc3NDMxNjdi
ZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9y
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3Bw
CkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViRXZl
bnRGYWN0b3J5LmgiCiAKKyNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCiAjaW5j
bHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIKQEAgLTk4LDYgKzk5LDIwIEBAIHN0YXRpYyBp
bmxpbmUgV2ViTW91c2VFdmVudDo6QnV0dG9uIGJ1dHRvbkZvckV2ZW50KGNvbnN0IEdka0V2ZW50
KiBldmVudCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViTW91c2VFdmVudDo6QnV0dG9uPihi
dXR0b24pOwogfQogCitXZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91
c2VFdmVudChjb25zdCBOYXRpdmVXZWJNb3VzZUV2ZW50JiB3ZWJFdmVudCkKK3sKKyAgICByZXR1
cm4gV2ViTW91c2VFdmVudCh3ZWJFdmVudC50eXBlKCksCisgICAgICAgIHdlYkV2ZW50LmJ1dHRv
bigpLAorICAgICAgICB3ZWJFdmVudC5wb3NpdGlvbigpLAorICAgICAgICB3ZWJFdmVudC5nbG9i
YWxQb3NpdGlvbigpLAorICAgICAgICB3ZWJFdmVudC5kZWx0YVgoKSwKKyAgICAgICAgd2ViRXZl
bnQuZGVsdGFZKCksCisgICAgICAgIHdlYkV2ZW50LmRlbHRhWigpLAorICAgICAgICB3ZWJFdmVu
dC5jbGlja0NvdW50KCksCisgICAgICAgIHdlYkV2ZW50Lm1vZGlmaWVycygpLAorICAgICAgICB3
ZWJFdmVudC50aW1lc3RhbXAoKSk7Cit9CisKIFdlYk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0b3J5
OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEdka0V2ZW50KiBldmVudCwgaW50IGN1cnJlbnRD
bGlja0NvdW50KQogewogICAgIGRvdWJsZSB4LCB5LCB4Um9vdCwgeVJvb3Q7CkBAIC0xMzMsNiAr
MTQ4LDM3IEBAIFdlYk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2
ZW50KGNvbnN0IEdka0V2ZW50KiBldmVudCwgaW50IGN1CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2RrX2V2ZW50X2dldF90aW1lKGV2ZW50KSk7CiB9CiAKK1dlYk1vdXNlRXZlbnQgV2ViRXZl
bnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEdka0V2ZW50KiBldmVudCwgaW50
IGN1cnJlbnRDbGlja0NvdW50LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb3NpdGlvbiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UG9pbnQmIGRlbHRhKQoreworICAgIFdlYkV2ZW50OjpUeXBlIHR5cGUgPSBzdGF0aWNf
Y2FzdDxXZWJFdmVudDo6VHlwZT4oMCk7CisgICAgc3dpdGNoIChldmVudC0+dHlwZSkgeworICAg
IGNhc2UgR0RLX01PVElPTl9OT1RJRlk6CisgICAgICAgIHR5cGUgPSBXZWJFdmVudDo6TW91c2VN
b3ZlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdES19CVVRUT05fUFJFU1M6CisgICAgY2Fz
ZSBHREtfMkJVVFRPTl9QUkVTUzoKKyAgICBjYXNlIEdES18zQlVUVE9OX1BSRVNTOgorICAgICAg
ICB0eXBlID0gV2ViRXZlbnQ6Ok1vdXNlRG93bjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBH
REtfQlVUVE9OX1JFTEVBU0U6CisgICAgICAgIHR5cGUgPSBXZWJFdmVudDo6TW91c2VVcDsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdCA6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0KKworICAgIHJldHVybiBXZWJNb3VzZUV2ZW50KHR5cGUsCisgICAgICAgIGJ1dHRv
bkZvckV2ZW50KGV2ZW50KSwKKyAgICAgICAgSW50UG9pbnQocG9zaXRpb24ueCgpLCBwb3NpdGlv
bi55KCkpLAorICAgICAgICBJbnRQb2ludChnbG9iYWxQb3NpdGlvbi54KCksIGdsb2JhbFBvc2l0
aW9uLnkoKSksCisgICAgICAgIGRlbHRhLngoKSwKKyAgICAgICAgZGVsdGEueSgpLAorICAgICAg
ICAwLAorICAgICAgICBjdXJyZW50Q2xpY2tDb3VudCwKKyAgICAgICAgbW9kaWZpZXJzRm9yRXZl
bnQoZXZlbnQpLAorICAgICAgICBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZlbnQpKTsKK30KKwogV2Vi
V2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZlbnQoY29uc3QgR2Rr
RXZlbnQqIGV2ZW50KQogewogICAgIGRvdWJsZSB4LCB5LCB4Um9vdCwgeVJvb3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaAppbmRleCAwODU4MTVjNDJkNDc3
YjEyZWRmOTZkMTU2ODkyNmE5ZmY4YWZlNmM3Li44MDA5NmI5NDQ1NTk0NGQ1ZTkwZTQ4MDdlMTY3
MzU4MmZmOTVmZWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2
ZW50RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0
b3J5LmgKQEAgLTMzLDEwICszMywxMyBAQAogdHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZl
bnQ7CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgTmF0aXZlV2ViTW91c2VFdmVudDsKIAog
Y2xhc3MgV2ViRXZlbnRGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViTW91c2VFdmVu
dCBjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEdka0V2ZW50KiwgaW50KTsKKyAgICBzdGF0aWMg
V2ViTW91c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEdka0V2ZW50KiwgaW50LCBj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKKyAgICBzdGF0aWMgV2ViTW91c2VFdmVudCBjcmVh
dGVXZWJNb3VzZUV2ZW50KGNvbnN0IE5hdGl2ZVdlYk1vdXNlRXZlbnQmIHdlYkV2ZW50KTsKICAg
ICBzdGF0aWMgV2ViV2hlZWxFdmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50KGNvbnN0IEdka0V2ZW50
Kik7CiAgICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChj
b25zdCBHZGtFdmVudCosIGNvbnN0IFdlYkNvcmU6OkNvbXBvc2l0aW9uUmVzdWx0cyYpOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggNjExMTg2ZjVh
ZDUxMjk1ODRmMzRiNDRjODdmMTUwZTEyODg4Yjk3My4uNmRhYTZkOTlkYzNkOTFkY2E2NDVhNGE5
Y2I4OWY0Y2MyMTUwMzUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAKQEAgLTk2Niw1ICs5NjYsNTUgQEAgV0tTdHJpbmdSZWYgV0tQYWdlR2V0UGx1Z2luSW5m
b3JtYXRpb25QbHVnaW5VUkxLZXkoKQogICAgIHJldHVybiBXS1BsdWdpbkluZm9ybWF0aW9uUGx1
Z2luVVJMS2V5KCk7CiB9CiAKK3ZvaWQgV0tQYWdlUmVxdWVzdFBvaW50ZXJMb2NrKFdLUGFnZVJl
ZiBwYWdlUmVmKQoreworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgYm9vbCByZXN1bHQ7
CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5yZXF1ZXN0UG9pbnRlckxvY2socmVzdWx0KTsKKyNlbmRp
ZgorfQorCit2b2lkIFdLUGFnZVJlcXVlc3RQb2ludGVyVW5sb2NrKFdLUGFnZVJlZiBwYWdlUmVm
KQoreworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgdG9JbXBsKHBhZ2VSZWYpLT5yZXF1
ZXN0UG9pbnRlclVubG9jaygpOworI2VuZGlmCit9CisKK3ZvaWQgV0tQYWdlRGlkQWNxdWlyZVBv
aW50ZXJMb2NrKFdLUGFnZVJlZiBwYWdlUmVmKQoreworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5kaWRBY3F1aXJlUG9pbnRlckxvY2soKTsKKyNlbmRpZgor
fQorCit2b2lkIFdLUGFnZURpZE5vdEFjcXVpcmVQb2ludGVyTG9jayhXS1BhZ2VSZWYgcGFnZVJl
ZikKK3sKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIHRvSW1wbChwYWdlUmVmKS0+ZGlk
Tm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7CisjZW5kaWYKK30KKwordm9pZCBXS1BhZ2VEaWRMb3Nl
UG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2VSZWYpCit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9D
SykKKyAgICB0b0ltcGwocGFnZVJlZiktPmRpZExvc2VQb2ludGVyTG9jaygpOworI2VuZGlmCit9
CisKK3ZvaWQgV0tQYWdlU2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KFdL
UGFnZVJlZiBwYWdlUmVmKQoreworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgdG9JbXBs
KHBhZ2VSZWYpLT5zZXRQb2ludGVyTG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkoKTsKKyNl
bmRpZgorfQorCit2b2lkIFdLUGFnZVNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5
KFdLUGFnZVJlZiBwYWdlUmVmKQoreworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgdG9J
bXBsKHBhZ2VSZWYpLT5zZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSgpOworI2Vu
ZGlmCit9CisKIC8vIC0tIERFUFJFQ0FURUQgLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5oCmluZGV4IDZhYTMxZjk3YzY4MzZjMzU5ZGIyMzY1ODJkZTM5ODBiZmMzNGYw
NGEuLjVlZjQ2NTEwMmE4ZDZlMzQ5ZGU2YzBhYzRmOWU5ZWMyMWU1ZTdhNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKQEAgLTU3NSw2ICs1NzUsMTQgQEAgV0tfRVhQ
T1JUIFdLU3RyaW5nUmVmIFdLUGFnZUdldFBsdWdpbkluZm9ybWF0aW9uUGx1Z2luc3BhZ2VBdHRy
aWJ1dGVVUkxLZXkoKTsKIC8qIFZhbHVlIHR5cGU6IFdLVVJMUmVmICovCiBXS19FWFBPUlQgV0tT
dHJpbmdSZWYgV0tQYWdlR2V0UGx1Z2luSW5mb3JtYXRpb25QbHVnaW5VUkxLZXkoKTsKIAorV0tf
RVhQT1JUIHZvaWQgV0tQYWdlUmVxdWVzdFBvaW50ZXJMb2NrKFdLUGFnZVJlZiBwYWdlUmVmKTsK
K1dLX0VYUE9SVCB2b2lkIFdLUGFnZVJlcXVlc3RQb2ludGVyVW5sb2NrKFdLUGFnZVJlZiBwYWdl
UmVmKTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZURpZEFjcXVpcmVQb2ludGVyTG9jayhXS1BhZ2VS
ZWYgcGFnZVJlZik7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VEaWROb3RBY3F1aXJlUG9pbnRlckxv
Y2soV0tQYWdlUmVmIHBhZ2VSZWYpOworV0tfRVhQT1JUIHZvaWQgV0tQYWdlRGlkTG9zZVBvaW50
ZXJMb2NrKFdLUGFnZVJlZiBwYWdlUmVmKTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZVNldFBvaW50
ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseShXS1BhZ2VSZWYgcGFnZVJlZik7CitXS19F
WFBPUlQgdm9pZCBXS1BhZ2VTZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseShXS1Bh
Z2VSZWYgcGFnZVJlZik7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5k
ZXggOTVmNWQ4MTQwZjUwYWE1OTUwZDA1MWM4ZmRmY2Y5ZTc2ZDFiYjliMi4uNzRjNjJhYmIzOTQx
OGU5MGM0ZTk2NTYwYjZiZWVkOThjNmY2NzU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMjg5LDUgKzI4OSwyMCBA
QCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94
eSogZG93bmxvYWQpCiB7CiAgICAgd2Via2l0V2ViVmlld0Jhc2VIYW5kbGVEb3dubG9hZFJlcXVl
c3QoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV92aWV3V2lkZ2V0KSwgZG93bmxvYWQpOwogfQorI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCitib29sIFBhZ2VDbGllbnRJbXBsOjpsb2NrTW91c2UoKQor
eworICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZUxvY2tNb3VzZShXRUJLSVRfV0VCX1ZJRVdf
QkFTRShtX3ZpZXdXaWRnZXQpKTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6dW5sb2NrTW91
c2UoKQoreworICAgIHdlYmtpdFdlYlZpZXdCYXNlVW5sb2NrTW91c2UoV0VCS0lUX1dFQl9WSUVX
X0JBU0UobV92aWV3V2lkZ2V0KSk7Cit9CiAKK2Jvb2wgUGFnZUNsaWVudEltcGw6OmlzTW91c2VM
b2NrZWQoKQoreworICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZUlzTW91c2VMb2NrZWQoV0VC
S0lUX1dFQl9WSUVXX0JBU0UobV92aWV3V2lkZ2V0KSk7Cit9CisjZW5kaWYKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
UGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VD
bGllbnRJbXBsLmgKaW5kZXggNmNhMzcwYjZmNGRiZTU3NmM3YjRmMTQxZGEyODc0NzczMWY3NjVl
Zi4uYjdlNmIxZDcxNTMwMDEyMzU2YjE3ZjgwYWVhODZkYWVmNjk0NzBiMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eS5oIgogI2luY2x1ZGUgIldpbmRvd3NLZXlib2FyZENvZGVzLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9JbnRQb2ludC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgogI2luY2x1ZGUgPGd0
ay9ndGsuaD4KIApAQCAtOTksNyArMTAwLDExIEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSopOwotCisjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICB2aXJ0dWFsIGJvb2wgbG9ja01vdXNlKCk7CisgICAg
dmlydHVhbCB2b2lkIHVubG9ja01vdXNlKCk7CisgICAgdmlydHVhbCBib29sIGlzTW91c2VMb2Nr
ZWQoKTsKKyNlbmRpZgogICAgIC8vIE1lbWJlcnMgb2YgUGFnZUNsaWVudEltcGwgY2xhc3MKICAg
ICBHdGtXaWRnZXQqIG1fdmlld1dpZGdldDsKICAgICBXZWJDb3JlOjpLZXlCaW5kaW5nVHJhbnNs
YXRvciBtX2tleUJpbmRpbmdUcmFuc2xhdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IDAwNzhkNzM0NTFj
M2RjNjNiYmE4YTIyMGM3YmVlM2Q1MmE3Y2Y1MDAuLjBmN2IwZmUzNWIxMjk1NzAwNmY5ZmViOGZm
ODU1YzVmZDJmNjgyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTEyOSw2ICsxMjksMTQgQEAgc3RydWN0
IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkK
ICAgICBPd25QdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IHJlZGlyZWN0ZWRXaW5kb3c7
CiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGJvb2wgbW91c2VMb2NrZWQ7
CisgICAgYm9vbCBsb2NraW5nTW91c2U7CisgICAgYm9vbCB1bmxvY2tpbmdNb3VzZTsKKyAgICBX
ZWJDb3JlOjpGbG9hdFBvaW50IG1vdXNlUG9zaXRpb247CisgICAgV2ViQ29yZTo6RmxvYXRQb2lu
dCBtb3VzZUdsb2JhbFBvc2l0aW9uOworICAgIGludCBtb3VzZUNsaWNrQ291bnRlcjsKKyNlbmRp
ZgogfTsKIAogV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFdlYlZpZXdCYXNlLCB3ZWJraXRfd2Vi
X3ZpZXdfYmFzZSwgR1RLX1RZUEVfQ09OVEFJTkVSKQpAQCAtMzgzLDYgKzM5MSwxNSBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICNl
bmRpZgogCiAgICAgcHJpdi0+YXV0aGVudGljYXRpb25EaWFsb2cgPSAwOworCisjaWYgRU5BQkxF
KFBPSU5URVJfTE9DSykKKyAgICBwcml2LT5tb3VzZUxvY2tlZCA9IGZhbHNlOworICAgIHByaXYt
PmxvY2tpbmdNb3VzZSA9IGZhbHNlOworICAgIHByaXYtPnVubG9ja2luZ01vdXNlID0gZmFsc2U7
CisgICAgcHJpdi0+bW91c2VQb3NpdGlvbiA9IEZsb2F0UG9pbnQoKTsKKyAgICBwcml2LT5tb3Vz
ZUdsb2JhbFBvc2l0aW9uID0gRmxvYXRQb2ludCgpOworICAgIHByaXYtPm1vdXNlQ2xpY2tDb3Vu
dGVyID0gMDsKKyNlbmRpZgogfQogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQpAQCAtNTgx
LDYgKzU5OCwxOSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VLZXlQcmVzc0V2
ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEtleSogZQogICAgIH0KICNlbmRpZgogCisj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBpZiAocHJpdi0+bW91c2VMb2NrZWQpIHsKKyAg
ICAgICAgc3dpdGNoIChldmVudC0+a2V5dmFsKSB7CisgICAgICAgIGNhc2UgR0RLX0tFWV9Fc2Nh
cGU6CisgICAgICAgICAgICB3ZWJraXRXZWJWaWV3QmFzZVVubG9ja01vdXNlKHdlYlZpZXdCYXNl
KTsKKyAgICAgICAgICAgIHByaXYtPnBhZ2VQcm94eS0+ZGlkTG9zZVBvaW50ZXJMb2NrKCk7Cisg
ICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKICAgICAvLyBTaW5jZSBXZWJQcm9jZXNz
IGtleSBldmVudCBoYW5kbGluZyBpcyBub3Qgc3luY2hyb25vdXMsIGhhbmRsZSB0aGUgZXZlbnQg
aW4gdHdvIHBhc3Nlcy4KICAgICAvLyBXaGVuIFdlYlByb2Nlc3MgcHJvY2Vzc2VzIHRoZSBpbnB1
dCBldmVudCwgaXQgd2lsbCBjYWxsIFBhZ2VDbGllbnRJbXBsOjpkb25lV2l0aEtleUV2ZW50CiAg
ICAgLy8gd2l0aCBldmVudCBoYW5kbGVkIHN0YXR1cyB3aGljaCBkZXRlcm1pbmVzIHdoZXRoZXIg
dG8gcGFzcyB0aGUgaW5wdXQgZXZlbnQgdG8gcGFyZW50IG9yIG5vdApAQCAtNjI0LDYgKzY1NCwy
MCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VCdXR0b25QcmVzc0V2ZW50KEd0
a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEJ1dAogICAgIC8vIElmIGl0J3MgYSByaWdodCBjbGlj
ayBldmVudCBzYXZlIGl0IGFzIGEgcG9zc2libGUgY29udGV4dCBtZW51IGV2ZW50LgogICAgIGlm
IChidXR0b25FdmVudC0+YnV0dG9uID09IDMpCiAgICAgICAgIHByaXYtPmNvbnRleHRNZW51RXZl
bnQuc2V0KGdka19ldmVudF9jb3B5KHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihidXR0b25F
dmVudCkpKTsKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgaWYgKHByaXYtPm1vdXNl
TG9ja2VkKSB7CisgICAgICAgIHByaXYtPm1vdXNlQ2xpY2tDb3VudGVyID0gcHJpdi0+Y2xpY2tD
b3VudGVyLmNsaWNrQ291bnRGb3JHZGtCdXR0b25FdmVudCh3aWRnZXQsIGJ1dHRvbkV2ZW50KTsK
KyAgICAgICAgTmF0aXZlV2ViTW91c2VFdmVudCBsb2NrZWRNb3VzZUV2ZW50KHJlaW50ZXJwcmV0
X2Nhc3Q8R2RrRXZlbnQqPihidXR0b25FdmVudCksCisgICAgICAgICAgICBwcml2LT5tb3VzZUNs
aWNrQ291bnRlciwKKyAgICAgICAgICAgIHByaXYtPm1vdXNlUG9zaXRpb24sCisgICAgICAgICAg
ICBwcml2LT5tb3VzZUdsb2JhbFBvc2l0aW9uLAorICAgICAgICAgICAgRmxvYXRQb2ludCgwLCAw
KSk7CisgICAgICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChsb2NrZWRNb3Vz
ZUV2ZW50KTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorI2VuZGlmCisKICAgICBwcml2
LT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChyZWludGVy
cHJldF9jYXN0PEdka0V2ZW50Kj4oYnV0dG9uRXZlbnQpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5jbGlja0NvdW50ZXIuY2xpY2tD
b3VudEZvckdka0J1dHRvbkV2ZW50KHdpZGdldCwgYnV0dG9uRXZlbnQpKSk7CiAgICAgcmV0dXJu
IFRSVUU7CkBAIC02MzgsNiArNjgyLDIyIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3
QmFzZUJ1dHRvblJlbGVhc2VFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRCCiAgICAg
ICAgIHJldHVybiBUUlVFOwogCiAgICAgZ3RrX3dpZGdldF9ncmFiX2ZvY3VzKHdpZGdldCk7CisK
KyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGlmIChwcml2LT5tb3VzZUxvY2tlZCkgewor
ICAgICAgICAvLyBQYXNzIGNsaWNrIGNvdW50ZXIgaGVyZSBhcyB3ZWxsIHNpbmNlIGxvY2tlZCBt
b3VzZSBldmVudCBhcmUgaGFuZGxlZCBkaWZmZXJlbnRseQorICAgICAgICAvLyBhbmQgUG9pbnRl
ckxvY2tDb250cm9sbGVyIHdpbGwgbmVlZCBwcm9wZXIgY2xpY2sgY291bnRlciB0byBnZW5lcmF0
ZSBjbGljayBldmVudAorICAgICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50IGxvY2tlZE1vdXNlRXZl
bnQocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSwKKyAgICAgICAgICAgIHByaXYt
Pm1vdXNlQ2xpY2tDb3VudGVyLAorICAgICAgICAgICAgcHJpdi0+bW91c2VQb3NpdGlvbiwKKyAg
ICAgICAgICAgIHByaXYtPm1vdXNlR2xvYmFsUG9zaXRpb24sCisgICAgICAgICAgICBGbG9hdFBv
aW50KDAsIDApKTsKKyAgICAgICAgcHJpdi0+bW91c2VDbGlja0NvdW50ZXIgPSAwOworICAgICAg
ICBwcml2LT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQobG9ja2VkTW91c2VFdmVudCk7Cisg
ICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKyNlbmRpZgorCiAgICAgcHJpdi0+cGFnZVByb3h5
LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQocmVpbnRlcnByZXRfY2FzdDxH
ZGtFdmVudCo+KGV2ZW50KSwgMCAvKiBjdXJyZW50Q2xpY2tDb3VudCAqLykpOwogCiAgICAgcmV0
dXJuIFRSVUU7CkBAIC02NTYsNiArNzE2LDE4IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJW
aWV3QmFzZVNjcm9sbEV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudFNjcm9sbCoKICAg
ICByZXR1cm4gVFJVRTsKIH0KIAorc3RhdGljIHZvaWQgZ2V0V2lkZ2V0V2luZG93Q2VudHJlKEd0
a1dpZGdldCogd2lkZ2V0LCBpbnQmIHgsIGludCYgeSkKK3sKKyAgICBXZWJLaXRXZWJWaWV3QmFz
ZSogd2Via2l0V2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOworICAg
IEdka1dpbmRvdyogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KHdpZGdldCk7CisKKyAg
ICBnZGtfd2luZG93X2dldF9vcmlnaW4od2luZG93LCAmeCwgJnkpOworICAgIGdpbnQgdyA9IGdk
a193aW5kb3dfZ2V0X3dpZHRoKHdpbmRvdyk7CisgICAgZ2ludCBoID0gZ2RrX3dpbmRvd19nZXRf
aGVpZ2h0KHdpbmRvdyk7CisgICAgeCArPSB3IC8gMjsKKyAgICB4ICs9IGggLyAyOworfQorCiBz
dGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VNb3Rpb25Ob3RpZnlFdmVudChHdGtXaWRn
ZXQqIHdpZGdldCwgR2RrRXZlbnRNb3Rpb24qIGV2ZW50KQogewogICAgIFdlYktpdFdlYlZpZXdC
YXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7CkBAIC02NjQs
OCArNzM2LDUzIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3QmFzZU1vdGlvbk5vdGlm
eUV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudE1vCiAgICAgaWYgKHByaXYtPmF1dGhl
bnRpY2F0aW9uRGlhbG9nKQogICAgICAgICByZXR1cm4gVFJVRTsKIAotICAgIHByaXYtPnBhZ2VQ
cm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KHJlaW50ZXJwcmV0X2Nh
c3Q8R2RrRXZlbnQqPihldmVudCksIDAgLyogY3VycmVudENsaWNrQ291bnQgKi8pKTsKKyNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGRvdWJsZSB4Um9vdCwgeVJvb3Q7CisgICAgZ2RrX2V2
ZW50X2dldF9yb290X2Nvb3JkcyhyZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpLCAm
eFJvb3QsICZ5Um9vdCk7CisgICAgZG91YmxlIHgsIHk7CisgICAgZ2RrX2V2ZW50X2dldF9jb29y
ZHMocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSwgJngsICZ5KTsKKworICAgIGlm
IChwcml2LT5tb3VzZUxvY2tlZCkgeworICAgICAgICBnaW50IHhDZW50ZXIgPSAwOworICAgICAg
ICBnaW50IHlDZW50ZXIgPSAwOworICAgICAgICBnZXRXaWRnZXRXaW5kb3dDZW50cmUod2lkZ2V0
LCB4Q2VudGVyLCB5Q2VudGVyKTsKKworICAgICAgICBpZiAoeENlbnRlciA9PSB4Um9vdCAmJiB5
Q2VudGVyID09IHlSb290KSB7CisgICAgICAgICAgICBpZiAocHJpdi0+bG9ja2luZ01vdXNlKQor
ICAgICAgICAgICAgICAgIHByaXYtPmxvY2tpbmdNb3VzZSA9IGZhbHNlOworICAgICAgICAgICAg
cmV0dXJuIFRSVUU7CisgICAgICAgIH0KKworICAgICAgICAvLyBNb3ZlbWVudCBpcyBjb21wdXRl
ZCBieSB0YWtpbmcgdGhlIGRpZmZlcmVuY2Ugb2YgdGhlIG5ldyBjdXJzb3IgcG9zaXRpb24KKyAg
ICAgICAgLy8gYW5kIHRoZSB3aWRnZXQgd2luZG93IGNlbnRlciBiZWNhdXNlIGFmdGVyIGVhY2gg
bW91c2UgbW90aW9uIG1vdmVtZW50CisgICAgICAgIC8vIHRoZSBjdXJzb3Igd2lsbCBiZSB3YXJw
ZWQgYmFjayB0byB0aGUgY2VudGVyIHNvIHRoYXQgd2UgYXJlIG5vdCBsaW1pdGVkIGJ5IGNsaXBw
aW5nIGJvdW5kYXJpZXMuCisgICAgICAgIC8vIFVzaW5nIHRoZSBjZW50ZXIgZm9yIHRoZSBjYWxj
dWxhdGlvbiByZW1vdmVzIHByb2JsZW0gd2l0aCB3cm9uZyBjYWxjdWxhdGVkIG9mZnNldHMgZm9y
IGRlbGF5ZWQgbW91c2UgZXZlbnRzCisgICAgICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQgbG9ja2Vk
TW91c2VFdmVudChyZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpLAorICAgICAgICAg
ICAgMCwKKyAgICAgICAgICAgIHByaXYtPm1vdXNlUG9zaXRpb24sCisgICAgICAgICAgICBwcml2
LT5tb3VzZUdsb2JhbFBvc2l0aW9uLAorICAgICAgICAgICAgRmxvYXRQb2ludCgoZmxvYXQpeFJv
b3QgLSB4Q2VudGVyLCAoZmxvYXQpeVJvb3QgLSB5Q2VudGVyKSk7CisKKyAgICAgICAgcHJpdi0+
cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KGxvY2tlZE1vdXNlRXZlbnQpOworICAgICAgICAv
LyBtb3ZlIG1vdXNlIGJhY2sgdG8gd2luZG93IGNlbnRlciB0byBhdm9pZCBjbGlwcGluZyBsaW1p
dGF0aW9ucworICAgICAgICBHZGtEaXNwbGF5KiBkaXNwbGF5ID0gZ3RrX3dpZGdldF9nZXRfZGlz
cGxheSh3aWRnZXQpOworICAgICAgICBHZGtTY3JlZW4qIHNjcmVlbiA9IGd0a193aWRnZXRfZ2V0
X3NjcmVlbih3aWRnZXQpOworICAgICAgICBHZGtEZXZpY2VNYW5hZ2VyKiBkZXZpY2VNYW5hZ2Vy
ID0gZ2RrX2Rpc3BsYXlfZ2V0X2RldmljZV9tYW5hZ2VyKGRpc3BsYXkpOworICAgICAgICBHZGtE
ZXZpY2UqIGRldmljZSA9IGdka19kZXZpY2VfbWFuYWdlcl9nZXRfY2xpZW50X3BvaW50ZXIoZGV2
aWNlTWFuYWdlcik7CisgICAgICAgIGdka19kZXZpY2Vfd2FycChkZXZpY2UsIHNjcmVlbiwgeENl
bnRlciwgeUNlbnRlcik7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KIAorICAgIHByaXYt
Pm1vdXNlUG9zaXRpb24uc2V0KHgsIHkpOworICAgIHByaXYtPm1vdXNlR2xvYmFsUG9zaXRpb24u
c2V0KHhSb290LCB5Um9vdCk7CisKKyAgICBpZiAocHJpdi0+dW5sb2NraW5nTW91c2UpIHsKKyAg
ICAgICAgcHJpdi0+dW5sb2NraW5nTW91c2UgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFRSVUU7
CisgICAgfQorI2VuZGlmCisKKyAgICBwcml2LT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQo
TmF0aXZlV2ViTW91c2VFdmVudChyZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpLCAw
IC8qIGN1cnJlbnRDbGlja0NvdW50ICovKSk7CiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKQEAgLTEx
MjAsMyArMTIzNyw3MCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlVXBkYXRlVGV4dElucHV0U3Rh
dGUoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogewogICAgIHdlYmtpdFdl
YlZpZXdCYXNlLT5wcml2LT5pbnB1dE1ldGhvZEZpbHRlci5zZXRDdXJzb3JSZWN0KHdlYmtpdFdl
YlZpZXdCYXNlLT5wcml2LT5wYWdlUHJveHktPmVkaXRvclN0YXRlKCkuY3Vyc29yUmVjdCk7CiB9
CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKK2Jvb2wgd2Via2l0V2ViVmlld0Jhc2VMb2NrTW91
c2UoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQoreworICAgIFdlYktpdFdl
YlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2OworCisgICAg
aWYgKHByaXYtPm1vdXNlTG9ja2VkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIFJl
bGVhc2UgYW55IGN1cnJlbnQgZ3JhYi4KKyAgICBHdGtXaWRnZXQqIGN1cnJlbnRHcmFiV2luZG93
ID0gZ3RrX2dyYWJfZ2V0X2N1cnJlbnQoKTsKKyAgICBpZiAoY3VycmVudEdyYWJXaW5kb3cpCisg
ICAgICAgIGd0a19ncmFiX3JlbW92ZShjdXJyZW50R3JhYldpbmRvdyk7CisKKyAgICBHZGtEaXNw
bGF5KiBkaXNwbGF5ID0gZ3RrX3dpZGdldF9nZXRfZGlzcGxheShHVEtfV0lER0VUKHdlYmtpdFdl
YlZpZXdCYXNlKSk7CisgICAgR2RrV2luZG93KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5k
b3coR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZSkpOworICAgIEdka0N1cnNvciogY3Vyc29y
ID0gZ2RrX2N1cnNvcl9uZXcoR0RLX0JMQU5LX0NVUlNPUik7CisKKyAgICBHZGtEZXZpY2VNYW5h
Z2VyKiBkZXZpY2VNYW5hZ2VyID0gZ2RrX2Rpc3BsYXlfZ2V0X2RldmljZV9tYW5hZ2VyKGRpc3Bs
YXkpOworICAgIEdka0RldmljZSogZGV2aWNlID0gZ2RrX2RldmljZV9tYW5hZ2VyX2dldF9jbGll
bnRfcG9pbnRlcihkZXZpY2VNYW5hZ2VyKTsKKworICAgIGlmIChnZGtfZGV2aWNlX2dyYWIoZGV2
aWNlLAorICAgICAgICB3aW5kb3csCisgICAgICAgIEdES19PV05FUlNISVBfTk9ORSwKKyAgICAg
ICAgRkFMU0UsCisgICAgICAgIHN0YXRpY19jYXN0PEdka0V2ZW50TWFzaz4oCisgICAgICAgICAg
ICBHREtfUE9JTlRFUl9NT1RJT05fTUFTSyB8CisgICAgICAgICAgICBHREtfQlVUVE9OX1BSRVNT
X01BU0sgfAorICAgICAgICAgICAgR0RLX0JVVFRPTl9SRUxFQVNFX01BU0spLAorICAgICAgICBj
dXJzb3IsCisgICAgICAgIEdES19DVVJSRU5UX1RJTUUpICE9IEdES19HUkFCX1NVQ0NFU1MpIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHByaXYtPm1vdXNlTG9ja2VkID0g
dHJ1ZTsKKyAgICBwcml2LT5sb2NraW5nTW91c2UgPSB0cnVlOworICAgIGdpbnQgeENlbnRlciA9
IDA7CisgICAgZ2ludCB5Q2VudGVyID0gMDsKKyAgICBnZXRXaWRnZXRXaW5kb3dDZW50cmUoR1RL
X1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZSksIHhDZW50ZXIsIHlDZW50ZXIpOworICAgIEdka1Nj
cmVlbiogc2NyZWVuID0gZ3RrX3dpZGdldF9nZXRfc2NyZWVuKEdUS19XSURHRVQod2Via2l0V2Vi
Vmlld0Jhc2UpKTsKKyAgICBnZGtfZGV2aWNlX3dhcnAoZGV2aWNlLCBzY3JlZW4sIHhDZW50ZXIs
IHlDZW50ZXIpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIHdlYmtpdFdlYlZpZXdCYXNl
VW5sb2NrTW91c2UoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQoreworICAg
IFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2
OworICAgIGlmICghcHJpdi0+bW91c2VMb2NrZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHBy
aXYtPm1vdXNlTG9ja2VkID0gZmFsc2U7CisgICAgcHJpdi0+dW5sb2NraW5nTW91c2UgPSB0cnVl
OworCisgICAgR2RrRGlzcGxheSogZGlzcGxheSA9IGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkoR1RL
X1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZSkpOworICAgIEdka1NjcmVlbiogc2NyZWVuID0gZ3Rr
X3dpZGdldF9nZXRfc2NyZWVuKEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2UpKTsKKyAgICBH
ZGtEZXZpY2VNYW5hZ2VyKiBkZXZpY2VNYW5hZ2VyID0gZ2RrX2Rpc3BsYXlfZ2V0X2RldmljZV9t
YW5hZ2VyKGRpc3BsYXkpOworICAgIEdka0RldmljZSogZGV2aWNlID0gZ2RrX2RldmljZV9tYW5h
Z2VyX2dldF9jbGllbnRfcG9pbnRlcihkZXZpY2VNYW5hZ2VyKTsKKyAgICBnZGtfZGV2aWNlX3Vu
Z3JhYihkZXZpY2UsIEdES19DVVJSRU5UX1RJTUUpOworCisgICAgLy8gd2FycCBtb3VzZSBiYWNr
IHRvIHVubG9ja2VkIHBvc2l0aW9uCisgICAgZ2RrX2RldmljZV93YXJwKGRldmljZSwgc2NyZWVu
LCBwcml2LT5tb3VzZUdsb2JhbFBvc2l0aW9uLngoKSwgcHJpdi0+bW91c2VHbG9iYWxQb3NpdGlv
bi55KCkpOworfQorCitib29sIHdlYmtpdFdlYlZpZXdCYXNlSXNNb3VzZUxvY2tlZChXZWJLaXRX
ZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCit7CisgICAgcmV0dXJuIHdlYmtpdFdlYlZp
ZXdCYXNlLT5wcml2LT5tb3VzZUxvY2tlZDsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUu
aAppbmRleCBmOWI4YmZhMzFjYjY2M2QzNjgzODAzMmZlMzhhZGJhYWUxNTc2NDUwLi45OGNhNTMy
ZDdjY2RkYTZkMGM3MjY4Y2I3OTIwZTRmZGMzYWFiOWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUu
aApAQCAtNTcsNiArNTcsMTIgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVVwZGF0ZVByZWZlcmVu
Y2VzKFdlYktpdFdlYlZpZXdCYXNlKik7CiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUXVldWVEcmF3
T2ZBY2NlbGVyYXRlZENvbXBvc2l0aW5nUmVzdWx0cyhXZWJLaXRXZWJWaWV3QmFzZSopOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorYm9vbCB3ZWJraXRXZWJWaWV3QmFzZUxv
Y2tNb3VzZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpOwordm9pZCB3ZWJr
aXRXZWJWaWV3QmFzZVVubG9ja01vdXNlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3
QmFzZSk7Citib29sIHdlYmtpdFdlYlZpZXdCYXNlSXNNb3VzZUxvY2tlZChXZWJLaXRXZWJWaWV3
QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpOworI2VuZGlmCisKIHZvaWQgd2Via2l0V2ViVmlld0Jh
c2VTZXRGb2N1cyhXZWJLaXRXZWJWaWV3QmFzZSosIGJvb2wgZm9jdXNlZCk7CiBib29sIHdlYmtp
dFdlYlZpZXdCYXNlSXNJbldpbmRvd0FjdGl2ZShXZWJLaXRXZWJWaWV3QmFzZSopOwogYm9vbCB3
ZWJraXRXZWJWaWV3QmFzZUlzRm9jdXNlZChXZWJLaXRXZWJWaWV3QmFzZSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggM2M1NmQ2YjdlMDFkY2Q1ZWMyM2QwNWM5ZjE4
NTgwNjA3NzBkNWZkYi4uZjFiYmMyNjczZDMxYjYxNmUzMzE1MTEwM2RmODNmYjc4MDYzNWMxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0xNzAsNiArMTcwLDExIEBA
IHB1YmxpYzoKICNpZiBQTEFURk9STShHVEspCiAgICAgdmlydHVhbCB2b2lkIGdldEVkaXRvckNv
bW1hbmRzRm9yS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGNvbnN0IEF0
b21pY1N0cmluZyYsIFZlY3RvcjxXVEY6OlN0cmluZz4mKSA9IDA7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQorICAgIHZpcnR1YWwgYm9vbCBsb2NrTW91c2UoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHVubG9ja01vdXNlKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc01vdXNl
TG9ja2VkKCkgPSAwOworI2VuZGlmCiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29u
dmVydFRvRGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgPSAwOwogICAgIHZp
cnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5U
b1dpbmRvdyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYjA2NjJlZGQyNGI0NDAyZTdiMTExZGMxMmM1
MzA0ZmI4ZjZkNGU1Mi4uMzY1ZjY0MDJlNzI1Njg2MDIyNzRkOTY4MWZkOWNlNDhlMThlNzlkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTMxOSw2ICsz
MTksMTAgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCogcGFnZUNsaWVu
dCwgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHAKICAgICAsIG1fdmlzaWJpbGl0eVN0YXRl
KFBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlKQogI2VuZGlmCiAgICAgLCBtX3Njcm9sbFBpbm5p
bmdCZWhhdmlvcihEb05vdFBpbikKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgICwgbV9w
b2ludGVyTG9ja1Nob3VsZEZhaWxTeW5jaHJvbm91c2x5KGZhbHNlKQorICAgICwgbV9wb2ludGVy
TG9ja1Jlc3BvbmRBc3luY2hyb25vdXNseShmYWxzZSkKKyNlbmRpZgogewogI2lmIEVOQUJMRShQ
QUdFX1ZJU0lCSUxJVFlfQVBJKQogICAgIGlmICghbV9pc1Zpc2libGUpCkBAIC0xMjcxLDcgKzEy
NzUsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZU1vdXNlRXZlbnQoY29uc3QgTmF0aXZl
V2ViTW91c2VFdmVudCYgZXZlbnQpCiAgICAgICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NU
aW1lcigpLT5zdGFydCgpOwogICAgIGVsc2UgewogICAgICAgICBpZiAobV9wcm9jZXNzaW5nTW91
c2VNb3ZlRXZlbnQpIHsKLSAgICAgICAgICAgIG1fbmV4dE1vdXNlTW92ZUV2ZW50ID0gYWRvcHRQ
dHIobmV3IE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXZlbnQpKTsKKyNpZiBFTkFCTEUoUE9JTlRFUl9M
T0NLKQorICAgICAgICAgICAgbV9uZXh0TW91c2VNb3ZlRXZlbnQgPSBhZG9wdFB0cihtX3BhZ2VD
bGllbnQtPmlzTW91c2VMb2NrZWQoKSA/IG5ldyBOYXRpdmVXZWJNb3VzZUV2ZW50KGV2ZW50KSA6
IG5ldyBOYXRpdmVXZWJNb3VzZUV2ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KCksIGV2ZW50LmNsaWNr
Q291bnQoKSkpOworI2Vsc2UKKyAgICAgICAgICAgIG1fbmV4dE1vdXNlTW92ZUV2ZW50ID0gYWRv
cHRQdHIobmV3IE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXZlbnQubmF0aXZlRXZlbnQoKSwgZXZlbnQu
Y2xpY2tDb3VudCgpKSk7CisjZW5kaWYKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CkBAIC0xMjgyLDggKzEyOTAsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZU1vdXNlRXZl
bnQoY29uc3QgTmF0aXZlV2ViTW91c2VFdmVudCYgZXZlbnQpCiAgICAgLy8gZGlzcGxheSBhIHBv
cHVwIG1lbnUgZm9yIHNlbGVjdCBlbGVtZW50cy4gV2hlbiB0aGUgdXNlciBjaGFuZ2VzIHRoZSBz
ZWxlY3RlZCBpdGVtLAogICAgIC8vIHdlIGZha2UgYSBtb3VzZSB1cCBldmVudCBieSB1c2luZyB0
aGlzIHN0b3JlZCBkb3duIGV2ZW50LiBUaGlzIGV2ZW50IGdldHMgY2xlYXJlZAogICAgIC8vIHdo
ZW4gdGhlIG1vdXNlIHVwIG1lc3NhZ2UgaXMgcmVjZWl2ZWQgZnJvbSBXZWJQcm9jZXNzLgorI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6
TW91c2VEb3duKQorICAgICAgICBtX2N1cnJlbnRseVByb2Nlc3NlZE1vdXNlRG93bkV2ZW50ID0g
YWRvcHRQdHIobV9wYWdlQ2xpZW50LT5pc01vdXNlTG9ja2VkKCkgPyBuZXcgTmF0aXZlV2ViTW91
c2VFdmVudChldmVudCkgOiBuZXcgTmF0aXZlV2ViTW91c2VFdmVudChldmVudC5uYXRpdmVFdmVu
dCgpLCBldmVudC5jbGlja0NvdW50KCkpKTsKKyNlbHNlCiAgICAgaWYgKGV2ZW50LnR5cGUoKSA9
PSBXZWJFdmVudDo6TW91c2VEb3duKQotICAgICAgICBtX2N1cnJlbnRseVByb2Nlc3NlZE1vdXNl
RG93bkV2ZW50ID0gYWRvcHRQdHIobmV3IE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXZlbnQpKTsKKyAg
ICAgICAgbV9jdXJyZW50bHlQcm9jZXNzZWRNb3VzZURvd25FdmVudCA9IGFkb3B0UHRyKG5ldyBO
YXRpdmVXZWJNb3VzZUV2ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KCksIGV2ZW50LmNsaWNrQ291bnQo
KSkpOworI2VuZGlmCiAKICAgICBpZiAobV9zaG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseSkg
ewogICAgICAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKQEAgLTI5MjAsNiArMjkzMyw2NCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6bmVlZFRvdWNoRXZlbnRzKGJvb2wgbmVlZFRvdWNoRXZlbnRzKQog
fQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQordm9pZCBXZWJQYWdlUHJveHk6
OnJlcXVlc3RQb2ludGVyTG9jayhib29sJiByZXN1bHQpCit7CisgICAgaWYgKG1fcG9pbnRlckxv
Y2tTaG91bGRGYWlsU3luY2hyb25vdXNseSkgeworICAgICAgICBtX3BvaW50ZXJMb2NrU2hvdWxk
RmFpbFN5bmNocm9ub3VzbHkgPSBmYWxzZTsKKyAgICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9wb2ludGVyTG9ja1Jlc3BvbmRBc3luY2hy
b25vdXNseSkgeworICAgICAgICBtX3BvaW50ZXJMb2NrUmVzcG9uZEFzeW5jaHJvbm91c2x5ID0g
ZmFsc2U7CisgICAgICAgIHJlc3VsdCA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAobV9wYWdlQ2xpZW50LT5sb2NrTW91c2UoKSkgeworICAgICAgICBwcm9jZXNzKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEFjcXVpcmVQb2ludGVyTG9jaygpLCBtX3BhZ2VJ
RCk7CisgICAgICAgIHJlc3VsdCA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZE5vdEFjcXVpcmVQb2ludGVy
TG9jaygpLCBtX3BhZ2VJRCk7CisgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgcmV0dXJuOworfQor
Cit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFBvaW50ZXJVbmxvY2soKQoreworICAgIG1fcGFn
ZUNsaWVudC0+dW5sb2NrTW91c2UoKTsKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZExvc2VQb2ludGVyTG9jaygpLCBtX3BhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRBY3F1aXJlUG9pbnRlckxvY2soKQoreworICAgIHByb2Nlc3MoKS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkQWNxdWlyZVBvaW50ZXJMb2NrKCksIG1fcGFnZUlEKTsKK30K
Kwordm9pZCBXZWJQYWdlUHJveHk6OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpCit7CisgICAg
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWROb3RBY3F1aXJlUG9pbnRlckxv
Y2soKSwgbV9wYWdlSUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTG9zZVBvaW50ZXJM
b2NrKCkKK3sKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZExvc2VQ
b2ludGVyTG9jaygpLCBtX3BhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRQb2lu
dGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSgpCit7CisgICAgbV9wb2ludGVyTG9ja1Nob3Vs
ZEZhaWxTeW5jaHJvbm91c2x5ID0gdHJ1ZTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnNldFBv
aW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSgpCit7CisgICAgbV9wb2ludGVyTG9j
a1Jlc3BvbmRBc3luY2hyb25vdXNseSA9IHRydWU7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQogdm9pZCBXZWJQYWdlUHJveHk6OnNob3dDb2xvclBpY2tlcihjb25z
dCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVj
dCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA5OWUzNGFm
M2Y2ZGI0NWJkODZhYzAwNjg3MmVjNGQ5YTA1MjE1MDFkLi5lZTUwOGM4NmUwZjRmMDFjOTRlMDI2
N2IwZjZjMzJiMWFmY2EzMjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC03NzcsNiArNzc3LDE2IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgdm9pZCBzZXRT
Y3JvbGxQaW5uaW5nQmVoYXZpb3IoV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yKTsKICAg
ICBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3Igc2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkg
eyByZXR1cm4gbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3I7IH0KKworI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCisgICAgdm9pZCByZXF1ZXN0UG9pbnRlckxvY2soYm9vbCYgcmVzdWx0KTsKKyAgICB2
b2lkIHJlcXVlc3RQb2ludGVyVW5sb2NrKCk7CisgICAgdm9pZCBkaWRBY3F1aXJlUG9pbnRlckxv
Y2soKTsKKyAgICB2b2lkIGRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpOworICAgIHZvaWQgZGlk
TG9zZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBzZXRQb2ludGVyTG9ja1dpbGxSZXNwb25kQXN5
bmNocm9ub3VzbHkoKTsKKyAgICB2b2lkIHNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91
c2x5KCk7CisjZW5kaWYKICAgICAgICAgCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdl
Q2xpZW50KiwgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+LCBXZWJQYWdlR3JvdXAqLCB1aW50
NjRfdCBwYWdlSUQpOwpAQCAtMTI4NSw2ICsxMjk1LDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKICAg
ICAgICAgCiAgICAgV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yIG1fc2Nyb2xsUGlubmlu
Z0JlaGF2aW9yOworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgYm9vbCBtX3BvaW50ZXJM
b2NrU2hvdWxkRmFpbFN5bmNocm9ub3VzbHk7CisgICAgYm9vbCBtX3BvaW50ZXJMb2NrUmVzcG9u
ZEFzeW5jaHJvbm91c2x5OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IDliYjlkNTU2MDk4YzhjMzFkODhkMWMwODQzYWIxMTVlNGZlYTBlMGYuLjhhY2IwNmU0MzIy
ZDI2ZjZhNDdkNGViNDA1YzliMDAxMDk1YWEyYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzIyLDQgKzMyMiwxMCBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZFVwZGF0ZUluV2luZG93U3RhdGUoKQog
ICAgIAogICAgIERpZFNhdmVUb1BhZ2VDYWNoZSgpCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykK
KyAgICBSZXF1ZXN0UG9pbnRlckxvY2soKSAtPiAoYm9vbCByZXN1bHQpCisgICAgUmVxdWVzdFBv
aW50ZXJVbmxvY2soKQorICAgIFNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNs
eSgpCisgICAgU2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoKQorI2VuZGlmCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggMTVkYWRmMDY5NTU2NDI2ZTRhODQ5YjBlYjkz
ZGNlMzFmZjE3YzU4My4uZmEzMjkyZWQyYWEzM2NiN2U5NzIwN2U5YzFlZDJjNjQyYjQ0NjMxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtODExLDYgKzgxMSwyNCBAQCB2b2lkIFdlYkNo
cm9tZUNsaWVudDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVs
ZW1lbnQpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCitib29sIFdlYkNo
cm9tZUNsaWVudDo6cmVxdWVzdFBvaW50ZXJMb2NrKCkKK3sKKyAgICBib29sIHJlc3VsdCA9IGZh
bHNlOworICAgIHJldHVybiBtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlJlcXVlc3RQb2ludGVyTG9jaygpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0UG9p
bnRlckxvY2s6OlJlcGx5KHJlc3VsdCkpICYmIHJlc3VsdDsKK30KKwordm9pZCBXZWJDaHJvbWVD
bGllbnQ6OnJlcXVlc3RQb2ludGVyVW5sb2NrKCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdFBvaW50ZXJVbmxvY2soKSk7Cit9CisKK2Jvb2wgV2Vi
Q2hyb21lQ2xpZW50Ojppc1BvaW50ZXJMb2NrZWQoKQoreworICAgIHJldHVybiBtX3BhZ2UtPmlz
UG9pbnRlckxvY2tlZCgpOworfQorI2VuZGlmCisKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpkaXNw
YXRjaFZpZXdwb3J0UHJvcGVydGllc0RpZENoYW5nZShjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYp
IGNvbnN0CiB7CiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAppbmRleCBjMzllMTRlNzdkODk3ZmRjZjM4Nzc2Y2EwZGM4Y2Q0NzU5YjZjYTVlLi41ZDczMzFl
MzUwMzk3OTI2ZWRkM2E4YjI4N2NmYTEwMzdhMThmNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
QEAgLTIwOCw2ICsyMDgsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqKSBPVkVSUklERTsKICNlbmRpZgogCisj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFBvaW50ZXJM
b2NrKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQb2ludGVyVW5sb2NrKCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzUG9pbnRlckxvY2tlZCgpIE9WRVJSSURFOwor
I2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAgICAgdmlydHVhbCB2b2lkIG1ha2VGaXJzdFJl
c3BvbmRlcigpIE9WRVJSSURFOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNGNmMDg5ODcyNTBmMDRhY2VmYzZlYzM1NTk5MDcz
YTQ5ODZiNjAxOS4uNjYxNWI4YjNjMzM1ZmJlNWNlM2ZkYTVhN2U5ODUwNmViYTJjNmNkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTkz
LDYgKzE5MywxMCBAQAogI2luY2x1ZGUgIkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdE1lc3NhZ2Vz
LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisjaW5jbHVkZSAiUG9pbnRl
ckxvY2tDb250cm9sbGVyLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0yOTMsNiArMjk3LDkgQEAgV2ViUGFnZTo6V2ViUGFn
ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCiAgICAgLCBtX21heGltdW1SZW5kZXJpbmdTdXBwcmVzc2lvblRva2VuKDApCiAgICAg
LCBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcihEb05vdFBpbikKICAgICAsIG1fdXNlVGhyZWFkZWRT
Y3JvbGxpbmcoZmFsc2UpCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICAsIG1faXNQb2lu
dGVyTG9ja2VkKGZhbHNlKQorI2VuZGlmCiB7CiAgICAgQVNTRVJUKG1fcGFnZUlEKTsKICAgICAv
LyBGSVhNRTogVGhpcyBpcyBhIG5vbi1pZGVhbCBsb2NhdGlvbiBmb3IgdGhpcyBTZXR0aW5nIGFu
ZApAQCAtMTY0NSw3ICsxNjUyLDI2IEBAIHN0YXRpYyBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29u
c3QgV2ViTW91c2VFdmVudCYgbW91c2VFdmVudCwgV2ViUGFnZSogcGFnZSwgYm9vCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIFBsYXRmb3JtTW91c2VFdmVudCBwbGF0Zm9ybU1vdXNlRXZl
bnQgPSBwbGF0Zm9ybShtb3VzZUV2ZW50KTsKLQorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisg
ICAgaWYgKHBhZ2UtPmlzUG9pbnRlckxvY2tlZCgpKSB7CisgICAgICAgIEF0b21pY1N0cmluZyBl
dmVudFR5cGU7CisgICAgICAgIHN3aXRjaCAocGxhdGZvcm1Nb3VzZUV2ZW50LnR5cGUoKSkgewor
ICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDoKKyAgICAgICAgICAgIGV2
ZW50VHlwZSA9IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ6CisgICAgICAgICAg
ICBldmVudFR5cGUgPSBldmVudE5hbWVzKCkubW91c2V1cEV2ZW50OworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDoKKyAgICAgICAgICAg
IGV2ZW50VHlwZSA9IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudDsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIH0KKyAgICAgICAgcGFnZS0+Y29yZVBhZ2UoKS0+cG9pbnRlckxvY2tDb250cm9s
bGVyKCktPmRpc3BhdGNoTG9ja2VkTW91c2VFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQsIGV2ZW50
VHlwZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgogICAgIHN3aXRjaCAo
cGxhdGZvcm1Nb3VzZUV2ZW50LnR5cGUoKSkgewogICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6
Ok1vdXNlUHJlc3NlZDogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQpAQCAtMTk3Nyw2ICsy
MDAzLDI2IEBAIHZvaWQgV2ViUGFnZTo6dG91Y2hFdmVudFN5bmNGb3JUZXN0aW5nKGNvbnN0IFdl
YlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQsIGJvb2wmIGhhCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShQT0lOVEVSX0xPQ0spCit2b2lkIFdlYlBhZ2U6OmRpZEFjcXVpcmVQb2ludGVyTG9jaygpCit7
CisgICAgbV9wYWdlLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+ZGlkQWNxdWlyZVBvaW50ZXJM
b2NrKCk7CisgICAgbV9pc1BvaW50ZXJMb2NrZWQgPSB0cnVlOworfQorCit2b2lkIFdlYlBhZ2U6
OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpCit7CisgICAgbV9wYWdlLT5wb2ludGVyTG9ja0Nv
bnRyb2xsZXIoKS0+ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgbV9pc1BvaW50ZXJM
b2NrZWQgPSBmYWxzZTsKK30KKwordm9pZCBXZWJQYWdlOjpkaWRMb3NlUG9pbnRlckxvY2soKQor
eworICAgIG1fcGFnZS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPmRpZExvc2VQb2ludGVyTG9j
aygpOworICAgIG1faXNQb2ludGVyTG9ja2VkID0gZmFsc2U7Cit9CisjZW5kaWYKKwogYm9vbCBX
ZWJQYWdlOjpzY3JvbGwoUGFnZSogcGFnZSwgU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Ny
b2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7CiAgICAgcmV0dXJuIHBhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLnNjcm9sbFJlY3Vy
c2l2ZWx5KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggOGNkYWZjNDRmYjQ2ZDUxODE4MDA4MGNhZjMyZjgy
ZjQ1ZjNjYmM0My4uNjhiY2E0OTA0YWQwNzBiNzkyZTIxYzk5MzE1NmFkMjQxYzAyMWFjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02NjMsNiAr
NjYzLDEwIEBAIHB1YmxpYzoKICAgICBXS1R5cGVSZWYgcGFnZU92ZXJsYXlDb3B5QWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlKFdLU3RyaW5nUmVmIGF0dHJpYnV0ZSwgV0tUeXBlUmVmIHBhcmFt
ZXRlcik7CiAgICAgV0tBcnJheVJlZiBwYWdlT3ZlcmxheUNvcHlBY2Nlc3NpYmlsaXR5QXR0cmli
dXRlc05hbWVzKGJvb2wgcGFyYW1ldGVyaXplZE5hbWVzKTsKICAgICAKKyNpZiBFTkFCTEUoUE9J
TlRFUl9MT0NLKQorICAgIGJvb2wgaXNQb2ludGVyTG9ja2VkKCkgeyByZXR1cm4gbV9pc1BvaW50
ZXJMb2NrZWQ7IH07CisgICAgdm9pZCBzZXRQb2ludGVyTG9ja2VkKGJvb2wgbG9ja2VkKSB7IG1f
aXNQb2ludGVyTG9ja2VkID0gbG9ja2VkOyB9OworI2VuZGlmCiBwcml2YXRlOgogICAgIFdlYlBh
Z2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAK
QEAgLTcyNSw2ICs3MjksMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhpZ2hsaWdodFBvdGVudGlh
bEFjdGl2YXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBhcmVhKTsKICNlbmRpZgogI2VuZGlmCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAg
ICB2b2lkIGRpZEFjcXVpcmVQb2ludGVyTG9jaygpOworICAgIHZvaWQgZGlkTm90QWNxdWlyZVBv
aW50ZXJMb2NrKCk7CisgICAgdm9pZCBkaWRMb3NlUG9pbnRlckxvY2soKTsKKyNlbmRpZgogI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIHZvaWQgY29udGV4dE1lbnVIaWRkZW4oKSB7IG1f
aXNTaG93aW5nQ29udGV4dE1lbnUgPSBmYWxzZTsgfQogI2VuZGlmCkBAIC0xMDI5LDggKzEwMzgs
MTAgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX21heGltdW1SZW5kZXJpbmdTdXBwcmVzc2lv
blRva2VuOwogICAgIAogICAgIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBtX3Njcm9s
bFBpbm5pbmdCZWhhdmlvcjsKLQogICAgIGJvb2wgbV91c2VUaHJlYWRlZFNjcm9sbGluZzsKKyNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGJvb2wgbV9pc1BvaW50ZXJMb2NrZWQ7CisjZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBlMDJmNDJhODEz
YzlhZWJkM2U4YjQyYTFiYzA2ZjFmNWNmZjJmMjAyLi5mYmRlNGY2NWFkNDYxNjY2MjUxZTljNDc3
OWQyOWVkNDBmMDNmODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMzE1LDQgKzMxNSwxMCBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRNYWluRnJhbWVJblZpZXdTb3Vy
Y2VNb2RlKGJvb2wgaW5WaWV3U291cmNlTW9kZSkKICAgICAKICAgICBTZXRTY3JvbGxQaW5uaW5n
QmVoYXZpb3IodWludDMyX3QgcGlubmluZykKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisg
ICAgRGlkQWNxdWlyZVBvaW50ZXJMb2NrKCkKKyAgICBEaWROb3RBY3F1aXJlUG9pbnRlckxvY2so
KQorICAgIERpZExvc2VQb2ludGVyTG9jaygpCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlZDAwMzBjNzY1ODI0NDVmNGM3ZTkz
NDk3MDM2ZTU4NjdjZjA4N2Q2Li5iYTMwNzliMjk4MDBjNzMzZWUyYmJkZGY5MmQ1YjYwNjQ1YjNj
NjI2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTMtMTAtMDMgIEFudG9uIE9iemhpcm92ICA8YS5vYnpoaXJvdkBz
YW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBFbmFibGUgUG9pbnRlciBMb2NrIGZlYXR1cmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5MDM2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3Qg
QVBJIG5lZWRlZCBieSB0aGUgdGVzdHMgbG9jYXRlZCBpbiBMYXlvdXRUZXN0cy9wb2ludGVyLWxv
Y2suCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlk
QWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZExv
c2VQb2ludGVyTG9jayk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWROb3RBY3F1
aXJlUG9pbnRlckxvY2spOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6c2V0UG9pbnRl
ckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGU6OnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmg6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAg
ICAgKFdUUjo6VGVzdFJ1bm5lcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdU
Ujo6VGVzdFJ1bm5lcjo6ZGlkTG9zZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1
bm5lcjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5l
cjo6c2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdU
Ujo6VGVzdFJ1bm5lcjo6c2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OmRpZExvc2VQb2ludGVyTG9jayk6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpkaWROb3RBY3F1aXJlUG9pbnRlckxvY2spOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6c2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KToKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJv
bm91c2x5KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChX
VFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6
CisKIDIwMTMtMTAtMDIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgRVdTIGJ1aWxkIGZpeCBhZnRlciB0aGUgUXQgRVdTIHJlbW92YWwuCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbAppbmRleCBlMjYyYjI1N2UyN2ZmYzFiNzE5MTY4NGE1M2I0M2NmZmY4MmNkYzg3
Li4wZDg3OTMzYjFjZjc0NzA5ZDI4NTA3YjJkNDNiZjhjZTBmYWNkNmZlIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGwKQEAgLTE5MCwxMiArMTkwLDE4IEBAIGludGVyZmFjZSBUZXN0UnVubmVy
IHsKIAogICAgIC8vIFNlY3VyZSB0ZXh0IGlucHV0IG1vZGUgKE1hYyBvbmx5KQogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBib29sZWFuIHNlY3VyZUV2ZW50SW5wdXRJc0VuYWJsZWQ7Ci0gICAgCisK
ICAgICAvLyBPdmVycmlkZSBwbHVnaW4gbG9hZCBwb2xpY3kuCiAgICAgdm9pZCBzZXRCbG9ja0Fs
bFBsdWdpbnMoYm9vbGVhbiBzaG91bGRCbG9jayk7CiAgICAgCiAgICAgLy8gSG9va3MgdG8gdGhl
IEpTQyBjb21waWxlci4KICAgICBvYmplY3QgbnVtYmVyT2ZERkdDb21waWxlcyhvYmplY3QgZnVu
Y3Rpb24pOwogICAgIG9iamVjdCBuZXZlcklubGluZUZ1bmN0aW9uKG9iamVjdCBmdW5jdGlvbik7
CisKKyAgICB2b2lkIGRpZEFjcXVpcmVQb2ludGVyTG9jaygpOworICAgIHZvaWQgZGlkTG9zZVBv
aW50ZXJMb2NrKCk7CisgICAgdm9pZCBkaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsKKyAgICB2
b2lkIHNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSgpOworICAgIHZvaWQg
c2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoKTsKIH07CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAKaW5kZXggZWYzMzhkYTg3ODA2ZWEzNTU4MDc3ZWE2ZDJjNjkwMTljMmU5MzBmOS4uMDExM2U2
NjRjM2M2YjJhYzQxOGY1MDY0M2M2NDJhOTk2YTdmOTlhMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAg
LTU4NSw0ICs1ODUsMzQgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6cXVldWVOb25Mb2FkaW5nU2Ny
aXB0KFdLU3RyaW5nUmVmIHNjcmlwdCkKICAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxl
LCBtZXNzYWdlTmFtZS5nZXQoKSwgc2NyaXB0KTsKIH0KIAordm9pZCBJbmplY3RlZEJ1bmRsZTo6
ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
bWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkRpZEFj
cXVpcmVQb2ludGVyTG9jayIpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBt
ZXNzYWdlTmFtZS5nZXQoKSwgMCk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZExvc2VQ
b2ludGVyTG9jaygpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1l
KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJEaWRMb3NlUG9pbnRlckxv
Y2siKSk7CisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0
KCksIDApOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlOjpkaWROb3RBY3F1aXJlUG9pbnRlckxv
Y2soKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRGlkTm90QWNxdWlyZVBvaW50ZXJMb2Nr
IikpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgp
LCAwKTsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0UG9pbnRlckxvY2tXaWxsUmVzcG9u
ZEFzeW5jaHJvbm91c2x5KCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2Fn
ZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFBvaW50ZXJM
b2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSIpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdl
KG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5k
bGU6OnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KCkKK3sKKyAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIlNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5IikpOworICAg
IFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKaW5kZXggMTcwYzhhYzcwYWQ4NzBiZWJk
ZWVjMjJlYWIyMjcxODBjNjVhYjE0MS4uM2RkYjc5MGJkZTY5YWU3MzllMjIyM2M0NTRjM2Q2OTYy
OTFiN2QwMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApAQCAtMTA5LDYgKzEwOSwxMyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBxdWV1ZUxvYWRpbmdTY3JpcHQoV0tTdHJpbmdSZWYgc2NyaXB0KTsKICAgICB2b2lkIHF1
ZXVlTm9uTG9hZGluZ1NjcmlwdChXS1N0cmluZ1JlZiBzY3JpcHQpOwogCisgICAgLy8gUG9pbnRl
ciBsb2NrCisgICAgdm9pZCBkaWRBY3F1aXJlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZExv
c2VQb2ludGVyTG9jaygpOworICAgIHZvaWQgZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7Cisg
ICAgdm9pZCBzZXRQb2ludGVyTG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkoKTsKKyAgICB2
b2lkIHNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KCk7CisKIHByaXZhdGU6CiAg
ICAgSW5qZWN0ZWRCdW5kbGUoKTsKICAgICB+SW5qZWN0ZWRCdW5kbGUoKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4
IDNmMmQwMzhmZjFhMTM2MTRlZDUwZGIxYzA2NmM0OTFlMWJhYjBiYTguLjY4ZGU5ZGQyZjQ0NDQ2
OTQzZjViY2JhMjQyMDQyYjRjZjA1ZTgyMzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtODMzLDQgKzgzMywyOSBA
QCBKU1ZhbHVlUmVmIFRlc3RSdW5uZXI6Om5ldmVySW5saW5lRnVuY3Rpb24oSlNWYWx1ZVJlZiB0
aGVGdW5jdGlvbikKICAgICByZXR1cm4gSlNDOjpzZXROZXZlcklubGluZShjb250ZXh0LCB0aGVG
dW5jdGlvbik7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCkK
K3sKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7
Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6ZGlkTG9zZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBJbmpl
Y3RlZEJ1bmRsZTo6c2hhcmVkKCkuZGlkTG9zZVBvaW50ZXJMb2NrKCk7Cit9CisKK3ZvaWQgVGVz
dFJ1bm5lcjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBJbmplY3RlZEJ1bmRs
ZTo6c2hhcmVkKCkuZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7Cit9CisKK3ZvaWQgVGVzdFJ1
bm5lcjo6c2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KCkKK3sKKyAgICBJ
bmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJv
bm91c2x5KCk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5
bmNocm9ub3VzbHkoKQoreworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zZXRQb2ludGVy
TG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgK
aW5kZXggMzhjZWY2Yjc4ODhlMDBhNTA0OGFlNWUxMDU0NDcyNzc1ZjE4NDFkNy4uMDUyZGFmMmZj
N2IzNDEwOGYwYzE0M2NiNGU5ODNhZDIzNDQ5MTBkMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTI3Nyw2ICsyNzcsMTMg
QEAgcHVibGljOgogICAgIEpTVmFsdWVSZWYgbnVtYmVyT2ZERkdDb21waWxlcyhKU1ZhbHVlUmVm
IHRoZUZ1bmN0aW9uKTsKICAgICBKU1ZhbHVlUmVmIG5ldmVySW5saW5lRnVuY3Rpb24oSlNWYWx1
ZVJlZiB0aGVGdW5jdGlvbik7CiAKKyAgICAvLyBQb2ludGVyIGxvY2sKKyAgICB2b2lkIGRpZEFj
cXVpcmVQb2ludGVyTG9jaygpOworICAgIHZvaWQgZGlkTG9zZVBvaW50ZXJMb2NrKCk7CisgICAg
dm9pZCBkaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIHNldFBvaW50ZXJMb2Nr
V2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSgpOworICAgIHZvaWQgc2V0UG9pbnRlckxvY2tXaWxs
RmFpbFN5bmNocm9ub3VzbHkoKTsKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgZG91Ymxl
IHdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVySW50ZXJ2YWw7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggNjRmZmEzOGQ1OTJmMTllYWY5MzE1NzdlYzI2NWY5
YTUxMjU2MDU3MC4uMDU4ZDNjZmUyM2E1YjllZjdlZGNkZDIxMzNjM2I2ZmVkNGJjYWMzMiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTEyNTAsNCArMTI1
MCwzMSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXS0Zy
YW1lUmVmIGZyYW1lLCBXS1VSTFJlc3BvbnNlUmVmCiAgICAgV0tGcmFtZVBvbGljeUxpc3RlbmVy
SWdub3JlKGxpc3RlbmVyKTsKIH0KIAorLy8gUG9pbnRlciBsb2NrCisjaWYgRU5BQkxFKFBPSU5U
RVJfTE9DSykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZEFjcXVpcmVQb2ludGVyTG9jaygpCit7
CisgICAgV0tQYWdlRGlkQWNxdWlyZVBvaW50ZXJMb2NrKG1fbWFpbldlYlZpZXctPnBhZ2UoKSk7
Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZExvc2VQb2ludGVyTG9jaygpCit7CisgICAg
V0tQYWdlRGlkTG9zZVBvaW50ZXJMb2NrKG1fbWFpbldlYlZpZXctPnBhZ2UoKSk7Cit9CisKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpCit7CisgICAgV0tQ
YWdlRGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKG1fbWFpbldlYlZpZXctPnBhZ2UoKSk7Cit9CisK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25v
dXNseSgpCit7CisgICAgV0tQYWdlU2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91
c2x5KG1fbWFpbldlYlZpZXctPnBhZ2UoKSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNl
dFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KCkKK3sKKyAgICBXS1BhZ2VTZXRQb2lu
dGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseShtX21haW5XZWJWaWV3LT5wYWdlKCkpOworfQor
I2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaAppbmRleCAyZThiMzE3ODcyYzBhYzNlNzdhYWM4MTVjY2RiZTYxMWIxZDJhM2M5Li5h
YWQ3M2UxZmQ2ODJjZDUyYjc1OGZjODRmMmY1ZmFmM2I5N2IwZWQzIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0xMDIsNiArMTAyLDEzIEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgc2V0QmxvY2tBbGxQbHVnaW5zKGJvb2wgc2hvdWxkQmxvY2spIHsgbV9zaG91bGRC
bG9ja0FsbFBsdWdpbnMgPSBzaG91bGRCbG9jazsgfQogCisgICAgLy8gUG9pbnRlciBsb2NrCisg
ICAgdm9pZCBkaWRBY3F1aXJlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZExvc2VQb2ludGVy
TG9jaygpOworICAgIHZvaWQgZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBz
ZXRQb2ludGVyTG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkoKTsKKyAgICB2b2lkIHNldFBv
aW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KCk7CisKIHByaXZhdGU6CiAgICAgdm9pZCBp
bml0aWFsaXplKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pOwogICAgIHZvaWQgY3JlYXRl
V2ViVmlld1dpdGhPcHRpb25zKFdLRGljdGlvbmFyeVJlZik7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IGI2MTIxZDM0YjYzMzM4ZmFkZTQ3MWEzNGM4ZmYw
NGYyZTFkZTNjZWUuLjg4NjE2MDgxNzUxOGMwZDA5ZDdhZjc1OWQzMDRiYzg4NzkzNzg3OTcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC02NzIsOSArNjcy
LDMzIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJ
RChtZXNzYWdlQm9keSkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpOwogICAgICAgICBXS0Jvb2xl
YW5SZWYgc2hvdWxkQmxvY2sgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5
KTsKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLnNldEJsb2NrQWxsUGx1Z2lucyhX
S0Jvb2xlYW5HZXRWYWx1ZShzaG91bGRCbG9jaykpOworICAgIH0KKyNpZiBFTkFCTEUoUE9JTlRF
Ul9MT0NLKQorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1l
LCAiRGlkQWNxdWlyZVBvaW50ZXJMb2NrIikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNo
YXJlZCgpLmRpZEFjcXVpcmVQb2ludGVyTG9jaygpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJEaWRM
b3NlUG9pbnRlckxvY2siKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkuZGlk
TG9zZVBvaW50ZXJMb2NrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkRpZE5vdEFjcXVpcmVQb2lu
dGVyTG9jayIpKSB7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5kaWROb3RBY3F1
aXJlUG9pbnRlckxvY2soKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0UG9pbnRlckxvY2tXaWxs
UmVzcG9uZEFzeW5jaHJvbm91c2x5IikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJl
ZCgpLnNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVz
c2FnZU5hbWUsICJTZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSIpKSB7CisgICAg
ICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5zZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hy
b25vdXNseSgpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggMTFkNzM3OGJhOGM4YjQyMTE1YjFmYThiM2E0NDJhNDI3MGRmYzlhNy4uMmI5NDA5
ODkzNzhiYTg1ZDdiMWM5MTFhZDhlNGI1ZTA4ZDg4OTBjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI4Myw4ICsyODMsNiBAQCB3ZWJraXQub3JnL2Iv
OTkwMzEgamF2YSBbIFNraXAgXQogIyBEaXJlY3RvcnkgdXBsb2FkIGlzIG5vdCBlbmFibGVkLgog
d2Via2l0Lm9yZy9iLzk5MDMyIGZhc3QvZm9ybXMvZmlsZS9pbnB1dC1maWxlLWRpcmVjdG9yeS11
cGxvYWQuaHRtbCBbIFRpbWVvdXQgXQogCi0jIFBvaW50ZXIgTG9jayBpcyBub3QgaW1wbGVtZW50
ZWQuCi13ZWJraXQub3JnL2IvOTkwMzYgcG9pbnRlci1sb2NrIFsgU2tpcCBdCiAjIEFzIHdlbGwg
YXMgdGVzdGluZyBmdWxsc2NyZWVuIGZ1bmN0aW9uYWxpdHksIHRoZXNlIHRlc3RzIGFsc28gdXRp
bGl6ZSB0aGUgcG9pbnRlciBsb2NrIGZlYXR1cmUuCiB3ZWJraXQub3JnL2IvOTkwMzYgaHR0cC90
ZXN0cy9mdWxsc2NyZWVuIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvOTkwMzYgaHR0cC90ZXN0cy9w
b2ludGVyLWxvY2sgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213276</attachid>
            <date>2013-10-03 10:43:17 -0700</date>
            <delta_ts>2016-01-06 19:46:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99036-20131003184325.patch</filename>
            <type>text/plain</type>
            <size>51756</size>
            <attacher name="Anton Obzhirov">obzhirov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2ODMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg3N2U5Y2E1MTkxODdiYjcxYTM0ODZj
NDk5YTI5OTM2Y2VhYzI5NWYuLjQ3OTAxY2FiN2Q0MWRiMGRhNDExZjhlMzdlNWFjODUyZWE2Njli
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMTAtMDMgIEFudG9uIE9iemhpcm92ICA8YS5v
YnpoaXJvdkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBFbmFibGUgUG9pbnRlciBMb2Nr
IGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk5MDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RW5hYmxlIFBPSU5URVJfTE9DSyBmbGFnIGZvciBHVEsgcG9ydC4KKworICAgICAgICAqIHd0Zi9G
ZWF0dXJlRGVmaW5lcy5oOgorCiAyMDEzLTEwLTAyICBOYWRhdiBSb3RlbSAgPG5yb3RlbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRWxpbWluYXRlIGEgYnJhbmNoIGluIEZhc3RCaXRWZWN0b3Igc2V0
QW5kQ2hlY2ssIG1ha2UgaXQgdmVjdG9yaXphYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDdmYTgyYjgxOTYx
ZDBlYzhlMWI1NWFiNDY3ODA1MzQ2YWJjZWMwODIuLmRlNWNmNzQ1NDFlNzQ0M2FjNGVhOGE3OTdm
NDBkZDM4N2M0NmU4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NSBAQAorMjAxMy0xMC0wMyAg
QW50b24gT2J6aGlyb3YgIDxhLm9iemhpcm92QHNhbXN1bmcuY29tPgorCisgICAgICAgIFtHVEtd
IEVuYWJsZSBQb2ludGVyIExvY2sgZmVhdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkwMzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNYWtlIGNoYW5nZXMgaW4gV0syIHRvIHByb3ZpZGUgSVBDIGNv
bW11bmljYXRpb24gYmV0d2VlbiB3ZWIgcHJvY2VzcworICAgICAgICBhbmQgVUkgcHJvY2VzcyBm
b3IgcG9pbnRlciBsb2NrIEFQSS4gV2hlbiBwb2ludGVyIGlzIGxvY2tlZAorICAgICAgICByYXcg
bW91c2UgZXZlbnQgZGF0YSAoZGlmZmVyZW5jZSBiZXR3ZWVuIHByZXZpb3VzIGFuZCBjdXJyZW50
CisgICAgICAgIHBvaW50ZXIgZ2xvYmFsIGNvb3JkaW5hdGVzKSBnZXRzIHBhc3NlZCBmcm9tIFVJ
IHByb2Nlc3MgdG8gd2ViIHByb2Nlc3MuCisgICAgICAgIFBvaW50ZXIgbG9jayBpcyB0cmlnZ2Vy
ZWQgYnkgV2ViIGFwcGxpY2F0aW9uIGFuZCBjYW4gYmUgY2FuY2VsbGVkCisgICAgICAgIGJ5IHRo
ZSBhcHBsaWNhdGlvbiBvciB3aGVuIEVTQyBrZXkgaXMgcHJlc3NlZC4KKworICAgICAgICBBZGQg
cGxhdGZvcm0gZGVwZW5kZWQgY29kZSBmb3IgdGhlIHRyYW5zaXRpb24gdG8gdGhlIHBvaW50ZXIg
bG9ja2VkIHN0YXRlLAorICAgICAgICB0byB0cmFjayBtb3VzZSBtb3ZlbWVudHMgZHVyaW5nIHRo
ZSBwb2ludGVyIGxvY2sgYW5kIGZvciB0aGUgdHJhbnNpdGlvbiBiYWNrCisgICAgICAgIHRvIHRo
ZSBwb2ludGVyIHVubG9ja2VkIHN0YXRlLgorCisgICAgICAgICogU2hhcmVkL05hdGl2ZVdlYk1v
dXNlRXZlbnQuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtTW91c2VFdmVudDo6V2ViS2l0MlBsYXRmb3Jt
TW91c2VFdmVudCk6CisgICAgICAgICogU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3Rr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91
c2VFdmVudCk6CisgICAgICAgICogU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQpOgorICAg
ICAgICAqIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VSZXF1ZXN0UG9pbnRlckxvY2spOgor
ICAgICAgICAoV0tQYWdlUmVxdWVzdFBvaW50ZXJVbmxvY2spOgorICAgICAgICAoV0tQYWdlRGlk
QWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdLUGFnZURpZE5vdEFjcXVpcmVQb2ludGVy
TG9jayk6CisgICAgICAgIChXS1BhZ2VEaWRMb3NlUG9pbnRlckxvY2spOgorICAgICAgICAoV0tQ
YWdlU2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdL
UGFnZVNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNs
aWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6bG9ja01vdXNl
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnVubG9ja01vdXNlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZp
ZXdCYXNlTW90aW9uTm90aWZ5RXZlbnQpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VMb2Nr
TW91c2UpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VVbmxvY2tNb3VzZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RQb2ludGVyTG9jayk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFBvaW50ZXJVbmxvY2spOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEFjcXVpcmVQb2ludGVyTG9jayk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRMb3NlUG9pbnRlckxvY2spOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQb2ludGVyTG9ja1dpbGxSZXNw
b25kQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAgICAo
V2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RQb2ludGVyVW5sb2NrKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojppc1BvaW50ZXJMb2NrZWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpX
ZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6aGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmRpZEFjcXVpcmVQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRpZExvc2VQb2ludGVyTG9jayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aXNQb2ludGVyTG9ja2VkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0UG9pbnRlckxvY2tlZCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTMtMTAtMDMgIFph
biBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
Zml4IG9mIERyYXdpbmdBcmVhIGNyZWF0aW9uIG9uIG5vbi1NYWMgcGxhdGZvcm1zIGFmdGVyIHIx
NTY3OTMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oIGIvU291
cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAppbmRleCAxMzMwZjk5YmFlZGI4MjMyMWE4MTEz
YTY1MTQ1MmE3ODBhNDEyMDIwLi5lMTliYWZjODNhMWJmNThkMWVjMGU5OGI0YmE2MDE0NjVjMjBk
MDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKQEAgLTY4NCw4ICs2ODQsMTIgQEAKICNlbmRp
ZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX1BPSU5URVJfTE9DSykKKyNpZiBQTEFURk9STShHVEsp
CisjZGVmaW5lIEVOQUJMRV9QT0lOVEVSX0xPQ0sgMQorI2Vsc2UKICNkZWZpbmUgRU5BQkxFX1BP
SU5URVJfTE9DSyAwCiAjZW5kaWYKKyNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX1BST0dS
RVNTX0VMRU1FTlQpCiAjZGVmaW5lIEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UIDAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCmluZGV4IDNiNjAxOTkwNDliNTEwNjZhNGZlYjgzODdjYzA0ZGZlYmU1NGEz
ZTMuLmJmZmVmZTJiYmY1OGExOTgyZWQxZjVkZjYyN2I2ZDY3ZjEwZTM5MDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcApAQCAtNTQ4Nyw3ICs1NDg3LDcgQEAgdm9pZCBEb2N1bWVudDo6d2Via2l0
RXhpdFBvaW50ZXJMb2NrKCkKICAgICBpZiAoIXBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IGlmIChFbGVtZW50KiB0YXJnZXQgPSBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLT5l
bGVtZW50KCkpIHsKLSAgICAgICAgaWYgKHRhcmdldC0+ZG9jdW1lbnQoKSAhPSB0aGlzKQorICAg
ICAgICBpZiAoJnRhcmdldC0+ZG9jdW1lbnQoKSAhPSB0aGlzKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLT5yZXF1ZXN0UG9p
bnRlclVubG9jaygpOwpAQCAtNTQ5OCw3ICs1NDk4LDcgQEAgRWxlbWVudCogRG9jdW1lbnQ6Ondl
YmtpdFBvaW50ZXJMb2NrRWxlbWVudCgpIGNvbnN0CiAgICAgaWYgKCFwYWdlKCkgfHwgcGFnZSgp
LT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+bG9ja1BlbmRpbmcoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgaWYgKEVsZW1lbnQqIGVsZW1lbnQgPSBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJv
bGxlcigpLT5lbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKGVsZW1lbnQtPmRvY3VtZW50KCkgPT0g
dGhpcykKKyAgICAgICAgaWYgKCZlbGVtZW50LT5kb2N1bWVudCgpID09IHRoaXMpCiAgICAgICAg
ICAgICByZXR1cm4gZWxlbWVudDsKICAgICB9CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCmluZGV4IDJhNGE3
ZWJlYjI4NWVjZTBiMWMzMjkwNDNlYTRkNDg3ZDdjYjI0MjMuLmMzNGE4NmQ1YWFlNTFmOWU4ODk0
M2ZhNDE0MDQyNmQ2NTYwMWYyYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBAIC0xNDYsNyArMTQ2LDYgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQo
RWxlbWVudCopOwogICAgICAgICB2b2lkIGNhbmNlbEZ1bGxTY3JlZW4oKTsKICNlbmRpZgotCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oU2Nyb2xsRGly
ZWN0aW9uKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBudW1X
aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmgKaW5kZXggZGRlNWIzNjJlM2QyNTFlZmNmNjE1
NmRkODVlNGQ0MjA0OTY5OWU4ZS4uNjg4ZjFjNGY1MDFlZmUxNmEzZDQ1NTEyMGFkMmJlNzViNzYw
NTE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZl
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oCkBA
IC01MSw3ICs1MSw4IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBOYXRpdmVXZWJNb3VzZUV2ZW50
KFFNb3VzZUV2ZW50KiwgY29uc3QgUVRyYW5zZm9ybSYgZnJvbUl0ZW1UcmFuc2Zvcm0sIGludCBl
dmVudENsaWNrQ291bnQpOwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIE5hdGl2ZVdlYk1vdXNl
RXZlbnQoY29uc3QgTmF0aXZlV2ViTW91c2VFdmVudCYpOwotICAgIE5hdGl2ZVdlYk1vdXNlRXZl
bnQoR2RrRXZlbnQqLCBpbnQpOworICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZl
bnQqLCBpbnQpOworICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBpbnQs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGJvb2wpOwogI2VsaWYgUExBVEZPUk0oRUZMKQog
ICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiwgY29u
c3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNm
b3JtJik7CiAgICAgTmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1Vw
KiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6QWZmaW5l
VHJhbnNmb3JtJik7CkBAIC02Myw2ICs2NCw3IEBAIHB1YmxpYzoKICNlbGlmIFBMQVRGT1JNKFFU
KQogICAgIGNvbnN0IFFNb3VzZUV2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
bmF0aXZlRXZlbnQ7IH0KICNlbGlmIFBMQVRGT1JNKEdUSykKKyAgICBjb25zdCBib29sIGlzTG9j
a2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0xvY2tlZDsgfQogICAgIGNvbnN0IEdka0V2ZW50KiBu
YXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQuZ2V0KCk7IH0KICNlbGlm
IFBMQVRGT1JNKEVGTCkKICAgICBjb25zdCB2b2lkKiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fbmF0aXZlRXZlbnQ7IH0KQEAgLTc0LDYgKzc2LDcgQEAgcHJpdmF0ZToKICNlbGlmIFBM
QVRGT1JNKFFUKQogICAgIFFNb3VzZUV2ZW50KiBtX25hdGl2ZUV2ZW50OwogI2VsaWYgUExBVEZP
Uk0oR1RLKQorICAgIGJvb2wgbV9pc0xvY2tlZDsKICAgICBHT3duUHRyPEdka0V2ZW50PiBtX25h
dGl2ZUV2ZW50OwogI2VsaWYgUExBVEZPUk0oRUZMKQogICAgIGNvbnN0IHZvaWQqIG1fbmF0aXZl
RXZlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJz
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCmlu
ZGV4IDgxYWY3ZWIyNzAyZTY0MDYyMWUyOGNiYTc1MDhhNjgzNmNlNDM2ZjYuLjRmMmRkNGQwNWRi
MzM3NjgwNzYwMDc0ZDc3OGU1N2ZlN2RiODU3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCkBAIC04Miw3ICs4MiwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fcG9zaXRpb24gPSB3ZWJFdmVudC5wb3NpdGlvbigpOwogICAgICAgICBtX2dsb2JhbFBv
c2l0aW9uID0gd2ViRXZlbnQuZ2xvYmFsUG9zaXRpb24oKTsKICAgICAgICAgbV9jbGlja0NvdW50
ID0gd2ViRXZlbnQuY2xpY2tDb3VudCgpOwotCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAg
ICAgICAgbV9tb3ZlbWVudERlbHRhLnNldFgod2ViRXZlbnQuZGVsdGFYKCkpOworICAgICAgICBt
X21vdmVtZW50RGVsdGEuc2V0WSh3ZWJFdmVudC5kZWx0YVkoKSk7CisjZW5kaWYKICAgICAgICAg
bV9tb2RpZmllckZsYWdzID0gMDsKICAgICAgICAgaWYgKHdlYkV2ZW50LnNoaWZ0S2V5KCkpCiAg
ICAgICAgICAgICBtX21vZGlmaWVyRmxhZ3MgfD0gV2ViRXZlbnQ6OlNoaWZ0S2V5OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZlV2ViTW91c2VFdmVudEd0ay5jcHAK
aW5kZXggMjhkMDBmMGU2ZmQ1OTE0YjBhODQwNzM3ZTExMWUxNGJlZmQ3NWM0OS4uZTBkNjhlMWE1
Y2RiMjZhNzMwNDAyN2I0ZGVkMDJmYjkxMGQ5NTNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwCkBAIC0zMSwxNCArMzEs
MjMgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLU5hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2
ZVdlYk1vdXNlRXZlbnQoR2RrRXZlbnQqIGV2ZW50LCBpbnQgZXZlbnRDbGlja0NvdW50KQorTmF0
aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBHZGtFdmVudCogZXZl
bnQsIGludCBldmVudENsaWNrQ291bnQpCiAgICAgOiBXZWJNb3VzZUV2ZW50KFdlYkV2ZW50RmFj
dG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChldmVudCwgZXZlbnRDbGlja0NvdW50KSkKKyAgICAs
IG1faXNMb2NrZWQoZmFsc2UpCisgICAgLCBtX25hdGl2ZUV2ZW50KGdka19ldmVudF9jb3B5KGV2
ZW50KSkKK3sKK30KKworTmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChj
b25zdCBHZGtFdmVudCogZXZlbnQsIGludCBldmVudENsaWNrQ291bnQsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgZGVsdGEsIGJvb2wgaXNMb2NrZWQp
CisgICAgOiBXZWJNb3VzZUV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVu
dChldmVudCwgZXZlbnRDbGlja0NvdW50LCBwb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGRlbHRh
KSkKKyAgICAsIG1faXNMb2NrZWQoaXNMb2NrZWQpCiAgICAgLCBtX25hdGl2ZUV2ZW50KGdka19l
dmVudF9jb3B5KGV2ZW50KSkKIHsKIH0KIAogTmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2Vi
TW91c2VFdmVudChjb25zdCBOYXRpdmVXZWJNb3VzZUV2ZW50JiBldmVudCkKLSAgICA6IFdlYk1v
dXNlRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGV2ZW50Lm5hdGl2
ZUV2ZW50KCksIGV2ZW50LmNsaWNrQ291bnQoKSkpCisgICAgOiBXZWJNb3VzZUV2ZW50KFdlYkV2
ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChldmVudCkpCisgICAgLCBtX2lzTG9ja2Vk
KGZhbHNlKQogICAgICwgbV9uYXRpdmVFdmVudChnZGtfZXZlbnRfY29weShldmVudC5uYXRpdmVF
dmVudCgpKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2Vi
RXZlbnRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0
b3J5LmNwcAppbmRleCBjYjg4YTgyMGE1MTQ0M2U2NDk2ZmVmNTcwYzMyM2FhODI1OTg3NDM4Li4z
NWE4MzZmYTJhNDdkM2UwMWI0MzdhZWRlMDQ3ZTEyYmY5ODZhZjIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViRXZlbnRGYWN0b3J5LmgiCiAKKyNpbmNs
dWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2
ZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiV2luZG93c0tleWJvYXJk
Q29kZXMuaCIKQEAgLTk4LDYgKzk5LDI0IEBAIHN0YXRpYyBpbmxpbmUgV2ViTW91c2VFdmVudDo6
QnV0dG9uIGJ1dHRvbkZvckV2ZW50KGNvbnN0IEdka0V2ZW50KiBldmVudCkKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8V2ViTW91c2VFdmVudDo6QnV0dG9uPihidXR0b24pOwogfQogCitXZWJNb3Vz
ZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChjb25zdCBOYXRpdmVX
ZWJNb3VzZUV2ZW50JiB3ZWJFdmVudCkKK3sKKyAgICBpZiAod2ViRXZlbnQuaXNMb2NrZWQoKSkg
eworICAgICAgICByZXR1cm4gV2ViTW91c2VFdmVudCh3ZWJFdmVudC50eXBlKCksCisgICAgICAg
ICAgICB3ZWJFdmVudC5idXR0b24oKSwKKyAgICAgICAgICAgIHdlYkV2ZW50LnBvc2l0aW9uKCks
CisgICAgICAgICAgICB3ZWJFdmVudC5nbG9iYWxQb3NpdGlvbigpLAorICAgICAgICAgICAgd2Vi
RXZlbnQuZGVsdGFYKCksCisgICAgICAgICAgICB3ZWJFdmVudC5kZWx0YVkoKSwKKyAgICAgICAg
ICAgIHdlYkV2ZW50LmRlbHRhWigpLAorICAgICAgICAgICAgd2ViRXZlbnQuY2xpY2tDb3VudCgp
LAorICAgICAgICAgICAgd2ViRXZlbnQubW9kaWZpZXJzKCksCisgICAgICAgICAgICB3ZWJFdmVu
dC50aW1lc3RhbXAoKSk7CisgICAgfQorCisgICAgcmV0dXJuIGNyZWF0ZVdlYk1vdXNlRXZlbnQo
d2ViRXZlbnQubmF0aXZlRXZlbnQoKSwgd2ViRXZlbnQuY2xpY2tDb3VudCgpKTsKK30KKwogV2Vi
TW91c2VFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2Rr
RXZlbnQqIGV2ZW50LCBpbnQgY3VycmVudENsaWNrQ291bnQpCiB7CiAgICAgZG91YmxlIHgsIHks
IHhSb290LCB5Um9vdDsKQEAgLTEzMyw2ICsxNTIsMzcgQEAgV2ViTW91c2VFdmVudCBXZWJFdmVu
dEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBpbnQg
Y3UKICAgICAgICAgICAgICAgICAgICAgICAgICBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZlbnQpKTsK
IH0KIAorV2ViTW91c2VFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQo
Y29uc3QgR2RrRXZlbnQqIGV2ZW50LCBpbnQgY3VycmVudENsaWNrQ291bnQsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBnbG9i
YWxQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgZGVsdGEpCit7CisgICAgV2Vi
RXZlbnQ6OlR5cGUgdHlwZSA9IHN0YXRpY19jYXN0PFdlYkV2ZW50OjpUeXBlPigwKTsKKyAgICBz
d2l0Y2ggKGV2ZW50LT50eXBlKSB7CisgICAgY2FzZSBHREtfTU9USU9OX05PVElGWToKKyAgICAg
ICAgdHlwZSA9IFdlYkV2ZW50OjpNb3VzZU1vdmU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
R0RLX0JVVFRPTl9QUkVTUzoKKyAgICBjYXNlIEdES18yQlVUVE9OX1BSRVNTOgorICAgIGNhc2Ug
R0RLXzNCVVRUT05fUFJFU1M6CisgICAgICAgIHR5cGUgPSBXZWJFdmVudDo6TW91c2VEb3duOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEdES19CVVRUT05fUkVMRUFTRToKKyAgICAgICAgdHlw
ZSA9IFdlYkV2ZW50OjpNb3VzZVVwOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0IDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgcmV0dXJuIFdlYk1vdXNl
RXZlbnQodHlwZSwKKyAgICAgICAgYnV0dG9uRm9yRXZlbnQoZXZlbnQpLAorICAgICAgICBJbnRQ
b2ludChwb3NpdGlvbi54KCksIHBvc2l0aW9uLnkoKSksCisgICAgICAgIEludFBvaW50KGdsb2Jh
bFBvc2l0aW9uLngoKSwgZ2xvYmFsUG9zaXRpb24ueSgpKSwKKyAgICAgICAgZGVsdGEueCgpLAor
ICAgICAgICBkZWx0YS55KCksCisgICAgICAgIDAsCisgICAgICAgIGN1cnJlbnRDbGlja0NvdW50
LAorICAgICAgICBtb2RpZmllcnNGb3JFdmVudChldmVudCksCisgICAgICAgIGdka19ldmVudF9n
ZXRfdGltZShldmVudCkpOworfQorCiBXZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3Jl
YXRlV2ViV2hlZWxFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQpCiB7CiAgICAgZG91YmxlIHgs
IHksIHhSb290LCB5Um9vdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsv
V2ViRXZlbnRGYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFj
dG9yeS5oCmluZGV4IDA4NTgxNWM0MmQ0NzdiMTJlZGY5NmQxNTY4OTI2YTlmZjhhZmU2YzcuLjgw
MDk2Yjk0NDU1OTQ0ZDVlOTBlNDgwN2UxNjczNTgyZmY5NWZlZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuaApAQCAtMzMsMTAgKzMzLDEzIEBACiB0eXBl
ZGVmIHVuaW9uIF9HZGtFdmVudCBHZGtFdmVudDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CitjbGFz
cyBOYXRpdmVXZWJNb3VzZUV2ZW50OwogCiBjbGFzcyBXZWJFdmVudEZhY3RvcnkgewogcHVibGlj
OgogICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2Rr
RXZlbnQqLCBpbnQpOworICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZl
bnQoY29uc3QgR2RrRXZlbnQqLCBpbnQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOworICAg
IHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgTmF0aXZlV2Vi
TW91c2VFdmVudCYgd2ViRXZlbnQpOwogICAgIHN0YXRpYyBXZWJXaGVlbEV2ZW50IGNyZWF0ZVdl
YldoZWVsRXZlbnQoY29uc3QgR2RrRXZlbnQqKTsKICAgICBzdGF0aWMgV2ViS2V5Ym9hcmRFdmVu
dCBjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEdka0V2ZW50KiwgY29uc3QgV2ViQ29yZTo6
Q29tcG9zaXRpb25SZXN1bHRzJik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcAppbmRleCA2MTExODZmNWFkNTEyOTU4NGYzNGI0NGM4N2YxNTBlMTI4ODhiOTcz
Li42ZGFhNmQ5OWRjM2Q5MWRjYTY0NWE0YTljYjg5ZjRjYzIxNTAzNTAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtOTY2LDUgKzk2Niw1NSBAQCBXS1N0
cmluZ1JlZiBXS1BhZ2VHZXRQbHVnaW5JbmZvcm1hdGlvblBsdWdpblVSTEtleSgpCiAgICAgcmV0
dXJuIFdLUGx1Z2luSW5mb3JtYXRpb25QbHVnaW5VUkxLZXkoKTsKIH0KIAordm9pZCBXS1BhZ2VS
ZXF1ZXN0UG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2VSZWYpCit7CisjaWYgRU5BQkxFKFBPSU5U
RVJfTE9DSykKKyAgICBib29sIHJlc3VsdDsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJlcXVlc3RQ
b2ludGVyTG9jayhyZXN1bHQpOworI2VuZGlmCit9CisKK3ZvaWQgV0tQYWdlUmVxdWVzdFBvaW50
ZXJVbmxvY2soV0tQYWdlUmVmIHBhZ2VSZWYpCit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykK
KyAgICB0b0ltcGwocGFnZVJlZiktPnJlcXVlc3RQb2ludGVyVW5sb2NrKCk7CisjZW5kaWYKK30K
Kwordm9pZCBXS1BhZ2VEaWRBY3F1aXJlUG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2VSZWYpCit7
CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICB0b0ltcGwocGFnZVJlZiktPmRpZEFjcXVp
cmVQb2ludGVyTG9jaygpOworI2VuZGlmCit9CisKK3ZvaWQgV0tQYWdlRGlkTm90QWNxdWlyZVBv
aW50ZXJMb2NrKFdLUGFnZVJlZiBwYWdlUmVmKQoreworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5kaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsKKyNlbmRp
ZgorfQorCit2b2lkIFdLUGFnZURpZExvc2VQb2ludGVyTG9jayhXS1BhZ2VSZWYgcGFnZVJlZikK
K3sKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIHRvSW1wbChwYWdlUmVmKS0+ZGlkTG9z
ZVBvaW50ZXJMb2NrKCk7CisjZW5kaWYKK30KKwordm9pZCBXS1BhZ2VTZXRQb2ludGVyTG9ja1dp
bGxSZXNwb25kQXN5bmNocm9ub3VzbHkoV0tQYWdlUmVmIHBhZ2VSZWYpCit7CisjaWYgRU5BQkxF
KFBPSU5URVJfTE9DSykKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldFBvaW50ZXJMb2NrV2lsbFJl
c3BvbmRBc3luY2hyb25vdXNseSgpOworI2VuZGlmCit9CisKK3ZvaWQgV0tQYWdlU2V0UG9pbnRl
ckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoV0tQYWdlUmVmIHBhZ2VSZWYpCit7CisjaWYgRU5B
QkxFKFBPSU5URVJfTE9DSykKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldFBvaW50ZXJMb2NrV2ls
bEZhaWxTeW5jaHJvbm91c2x5KCk7CisjZW5kaWYKK30KKwogLy8gLS0gREVQUkVDQVRFRCAtLQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKaW5kZXggNmFhMzFmOTdjNjgz
NmMzNTlkYjIzNjU4MmRlMzk4MGJmYzM0ZjA0YS4uNWVmNDY1MTAyYThkNmUzNDlkZTZjMGFjNGY5
ZTllYzIxZTVlN2E2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaApA
QCAtNTc1LDYgKzU3NSwxNCBAQCBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tQYWdlR2V0UGx1Z2lu
SW5mb3JtYXRpb25QbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTEtleSgpOwogLyogVmFsdWUgdHlwZTog
V0tVUkxSZWYgKi8KIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1BhZ2VHZXRQbHVnaW5JbmZvcm1h
dGlvblBsdWdpblVSTEtleSgpOwogCitXS19FWFBPUlQgdm9pZCBXS1BhZ2VSZXF1ZXN0UG9pbnRl
ckxvY2soV0tQYWdlUmVmIHBhZ2VSZWYpOworV0tfRVhQT1JUIHZvaWQgV0tQYWdlUmVxdWVzdFBv
aW50ZXJVbmxvY2soV0tQYWdlUmVmIHBhZ2VSZWYpOworV0tfRVhQT1JUIHZvaWQgV0tQYWdlRGlk
QWNxdWlyZVBvaW50ZXJMb2NrKFdLUGFnZVJlZiBwYWdlUmVmKTsKK1dLX0VYUE9SVCB2b2lkIFdL
UGFnZURpZE5vdEFjcXVpcmVQb2ludGVyTG9jayhXS1BhZ2VSZWYgcGFnZVJlZik7CitXS19FWFBP
UlQgdm9pZCBXS1BhZ2VEaWRMb3NlUG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2VSZWYpOworV0tf
RVhQT1JUIHZvaWQgV0tQYWdlU2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5
KFdLUGFnZVJlZiBwYWdlUmVmKTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZVNldFBvaW50ZXJMb2Nr
V2lsbEZhaWxTeW5jaHJvbm91c2x5KFdLUGFnZVJlZiBwYWdlUmVmKTsKKwogI2lmZGVmIF9fY3Bs
dXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCA5NWY1ZDgxNDBmNTBhYTU5NTBkMDUxYzhmZGZj
ZjllNzZkMWJiOWIyLi43NGM2MmFiYjM5NDE4ZTkwYzRlOTY1NjBiNmJlZWQ5OGM2ZjY3NTVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudElt
cGwuY3BwCkBAIC0yODksNSArMjg5LDIwIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmhhbmRsZURv
d25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5KiBkb3dubG9hZCkKIHsKICAgICB3ZWJraXRXZWJW
aWV3QmFzZUhhbmRsZURvd25sb2FkUmVxdWVzdChXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdX
aWRnZXQpLCBkb3dubG9hZCk7CiB9CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKK2Jvb2wgUGFn
ZUNsaWVudEltcGw6OmxvY2tNb3VzZSgpCit7CisgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNl
TG9ja01vdXNlKFdFQktJVF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpOworfQorCit2b2lk
IFBhZ2VDbGllbnRJbXBsOjp1bmxvY2tNb3VzZSgpCit7CisgICAgd2Via2l0V2ViVmlld0Jhc2VV
bmxvY2tNb3VzZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKTsKK30KIAorYm9v
bCBQYWdlQ2xpZW50SW1wbDo6aXNNb3VzZUxvY2tlZCgpCit7CisgICAgcmV0dXJuIHdlYmtpdFdl
YlZpZXdCYXNlSXNNb3VzZUxvY2tlZChXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQp
KTsKK30KKyNlbmRpZgogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAppbmRleCA2Y2EzNzBiNmY0ZGJl
NTc2YzdiNGYxNDFkYTI4NzQ3NzMxZjc2NWVmLi5iN2U2YjFkNzE1MzAwMTIzNTZiMTdmODBhZWE4
NmRhZWY2OTQ3MGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJQYWdlQ2xpZW50
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2luZG93c0tleWJvYXJk
Q29kZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCkBAIC05OSw3ICsxMDAsMTEgQEAg
cHJpdmF0ZToKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVz
dChEb3dubG9hZFByb3h5Kik7Ci0KKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIHZpcnR1
YWwgYm9vbCBsb2NrTW91c2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5sb2NrTW91c2UoKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUxvY2tlZCgpOworI2VuZGlmCiAgICAgLy8gTWVtYmVycyBv
ZiBQYWdlQ2xpZW50SW1wbCBjbGFzcwogICAgIEd0a1dpZGdldCogbV92aWV3V2lkZ2V0OwogICAg
IFdlYkNvcmU6OktleUJpbmRpbmdUcmFuc2xhdG9yIG1fa2V5QmluZGluZ1RyYW5zbGF0b3I7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHAKaW5kZXggMDA3OGQ3MzQ1MWMzZGM2M2JiYThhMjIwYzdiZWUzZDUyYTdjZjUwMC4u
NTE5MWFmNzMwOWYzNjhkMTE5YmI1MDA4OTIxYTJiNjllOGMwMDgxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApA
QCAtMTI5LDYgKzEyOSwxNCBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSB7CiAj
aWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgIE93blB0cjxSZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdz4gcmVkaXJlY3RlZFdpbmRvdzsKICNlbmRpZgorI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCisgICAgYm9vbCBtb3VzZUxvY2tlZDsKKyAgICBib29sIGxvY2tpbmdNb3VzZTsKKyAgICBi
b29sIHVubG9ja2luZ01vdXNlOworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbW91c2VQb3NpdGlv
bjsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1vdXNlR2xvYmFsUG9zaXRpb247CisgICAgaW50
IG1vdXNlQ2xpY2tDb3VudGVyOworI2VuZGlmCiB9OwogCiBXRUJLSVRfREVGSU5FX1RZUEUoV2Vi
S2l0V2ViVmlld0Jhc2UsIHdlYmtpdF93ZWJfdmlld19iYXNlLCBHVEtfVFlQRV9DT05UQUlORVIp
CkBAIC0zODMsNiArMzkxLDE1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ29uc3Ry
dWN0ZWQoR09iamVjdCogb2JqZWN0KQogI2VuZGlmCiAKICAgICBwcml2LT5hdXRoZW50aWNhdGlv
bkRpYWxvZyA9IDA7CisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIHByaXYtPm1vdXNl
TG9ja2VkID0gZmFsc2U7CisgICAgcHJpdi0+bG9ja2luZ01vdXNlID0gZmFsc2U7CisgICAgcHJp
di0+dW5sb2NraW5nTW91c2UgPSBmYWxzZTsKKyAgICBwcml2LT5tb3VzZVBvc2l0aW9uID0gRmxv
YXRQb2ludCgpOworICAgIHByaXYtPm1vdXNlR2xvYmFsUG9zaXRpb24gPSBGbG9hdFBvaW50KCk7
CisgICAgcHJpdi0+bW91c2VDbGlja0NvdW50ZXIgPSAwOworI2VuZGlmCiB9CiAKICNpZiBVU0Uo
VEVYVFVSRV9NQVBQRVJfR0wpCkBAIC01ODEsNiArNTk4LDE5IEBAIHN0YXRpYyBnYm9vbGVhbiB3
ZWJraXRXZWJWaWV3QmFzZUtleVByZXNzRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50
S2V5KiBlCiAgICAgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGlm
IChwcml2LT5tb3VzZUxvY2tlZCkgeworICAgICAgICBzd2l0Y2ggKGV2ZW50LT5rZXl2YWwpIHsK
KyAgICAgICAgY2FzZSBHREtfS0VZX0VzY2FwZToKKyAgICAgICAgICAgIHdlYmtpdFdlYlZpZXdC
YXNlVW5sb2NrTW91c2Uod2ViVmlld0Jhc2UpOworICAgICAgICAgICAgcHJpdi0+cGFnZVByb3h5
LT5kaWRMb3NlUG9pbnRlckxvY2soKTsKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYK
KwogICAgIC8vIFNpbmNlIFdlYlByb2Nlc3Mga2V5IGV2ZW50IGhhbmRsaW5nIGlzIG5vdCBzeW5j
aHJvbm91cywgaGFuZGxlIHRoZSBldmVudCBpbiB0d28gcGFzc2VzLgogICAgIC8vIFdoZW4gV2Vi
UHJvY2VzcyBwcm9jZXNzZXMgdGhlIGlucHV0IGV2ZW50LCBpdCB3aWxsIGNhbGwgUGFnZUNsaWVu
dEltcGw6OmRvbmVXaXRoS2V5RXZlbnQKICAgICAvLyB3aXRoIGV2ZW50IGhhbmRsZWQgc3RhdHVz
IHdoaWNoIGRldGVybWluZXMgd2hldGhlciB0byBwYXNzIHRoZSBpbnB1dCBldmVudCB0byBwYXJl
bnQgb3Igbm90CkBAIC02MjQsNiArNjU0LDIxIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJW
aWV3QmFzZUJ1dHRvblByZXNzRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50QnV0CiAg
ICAgLy8gSWYgaXQncyBhIHJpZ2h0IGNsaWNrIGV2ZW50IHNhdmUgaXQgYXMgYSBwb3NzaWJsZSBj
b250ZXh0IG1lbnUgZXZlbnQuCiAgICAgaWYgKGJ1dHRvbkV2ZW50LT5idXR0b24gPT0gMykKICAg
ICAgICAgcHJpdi0+Y29udGV4dE1lbnVFdmVudC5zZXQoZ2RrX2V2ZW50X2NvcHkocmVpbnRlcnBy
ZXRfY2FzdDxHZGtFdmVudCo+KGJ1dHRvbkV2ZW50KSkpOworCisjaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKKyAgICBpZiAocHJpdi0+bW91c2VMb2NrZWQpIHsKKyAgICAgICAgcHJpdi0+bW91c2VD
bGlja0NvdW50ZXIgPSBwcml2LT5jbGlja0NvdW50ZXIuY2xpY2tDb3VudEZvckdka0J1dHRvbkV2
ZW50KHdpZGdldCwgYnV0dG9uRXZlbnQpOworICAgICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50IGxv
Y2tlZE1vdXNlRXZlbnQocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGJ1dHRvbkV2ZW50KSwK
KyAgICAgICAgICAgIHByaXYtPm1vdXNlQ2xpY2tDb3VudGVyLAorICAgICAgICAgICAgcHJpdi0+
bW91c2VQb3NpdGlvbiwKKyAgICAgICAgICAgIHByaXYtPm1vdXNlR2xvYmFsUG9zaXRpb24sCisg
ICAgICAgICAgICBGbG9hdFBvaW50KDAsIDApLAorICAgICAgICAgICAgdHJ1ZSk7CisgICAgICAg
IHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChsb2NrZWRNb3VzZUV2ZW50KTsKKyAg
ICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorI2VuZGlmCisKICAgICBwcml2LT5wYWdlUHJveHkt
PmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChyZWludGVycHJldF9jYXN0PEdk
a0V2ZW50Kj4oYnV0dG9uRXZlbnQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcml2LT5jbGlja0NvdW50ZXIuY2xpY2tDb3VudEZvckdka0J1
dHRvbkV2ZW50KHdpZGdldCwgYnV0dG9uRXZlbnQpKSk7CiAgICAgcmV0dXJuIFRSVUU7CkBAIC02
MzgsNiArNjgzLDIzIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3QmFzZUJ1dHRvblJl
bGVhc2VFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRCCiAgICAgICAgIHJldHVybiBU
UlVFOwogCiAgICAgZ3RrX3dpZGdldF9ncmFiX2ZvY3VzKHdpZGdldCk7CisKKyNpZiBFTkFCTEUo
UE9JTlRFUl9MT0NLKQorICAgIGlmIChwcml2LT5tb3VzZUxvY2tlZCkgeworICAgICAgICAvLyBQ
YXNzIGNsaWNrIGNvdW50ZXIgaGVyZSBhcyB3ZWxsIHNpbmNlIGxvY2tlZCBtb3VzZSBldmVudCBh
cmUgaGFuZGxlZCBkaWZmZXJlbnRseQorICAgICAgICAvLyBhbmQgUG9pbnRlckxvY2tDb250cm9s
bGVyIHdpbGwgbmVlZCBwcm9wZXIgY2xpY2sgY291bnRlciB0byBnZW5lcmF0ZSBjbGljayBldmVu
dAorICAgICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50IGxvY2tlZE1vdXNlRXZlbnQocmVpbnRlcnBy
ZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSwKKyAgICAgICAgICAgIHByaXYtPm1vdXNlQ2xpY2tD
b3VudGVyLAorICAgICAgICAgICAgcHJpdi0+bW91c2VQb3NpdGlvbiwKKyAgICAgICAgICAgIHBy
aXYtPm1vdXNlR2xvYmFsUG9zaXRpb24sCisgICAgICAgICAgICBGbG9hdFBvaW50KDAsIDApLAor
ICAgICAgICAgICAgdHJ1ZSk7CisgICAgICAgIHByaXYtPm1vdXNlQ2xpY2tDb3VudGVyID0gMDsK
KyAgICAgICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KGxvY2tlZE1vdXNlRXZl
bnQpOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisjZW5kaWYKKwogICAgIHByaXYtPnBh
Z2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KHJlaW50ZXJwcmV0
X2Nhc3Q8R2RrRXZlbnQqPihldmVudCksIDAgLyogY3VycmVudENsaWNrQ291bnQgKi8pKTsKIAog
ICAgIHJldHVybiBUUlVFOwpAQCAtNjU2LDYgKzcxOCwxOCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Vi
a2l0V2ViVmlld0Jhc2VTY3JvbGxFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRTY3Jv
bGwqCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKK3N0YXRpYyB2b2lkIGdldFdpZGdldFdpbmRvd0Nl
bnRyZShHdGtXaWRnZXQqIHdpZGdldCwgaW50JiB4LCBpbnQmIHkpCit7CisgICAgV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0
KTsKKyAgICBHZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyh3aWRnZXQp
OworCisgICAgZ2RrX3dpbmRvd19nZXRfb3JpZ2luKHdpbmRvdywgJngsICZ5KTsKKyAgICBnaW50
IHcgPSBnZGtfd2luZG93X2dldF93aWR0aCh3aW5kb3cpOworICAgIGdpbnQgaCA9IGdka193aW5k
b3dfZ2V0X2hlaWdodCh3aW5kb3cpOworICAgIHggKz0gdyAvIDI7CisgICAgeCArPSBoIC8gMjsK
K30KKwogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlTW90aW9uTm90aWZ5RXZlbnQo
R3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50TW90aW9uKiBldmVudCkKIHsKICAgICBXZWJLaXRX
ZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOwpA
QCAtNjY0LDggKzczOCw1NCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VNb3Rp
b25Ob3RpZnlFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRNbwogICAgIGlmIChwcml2
LT5hdXRoZW50aWNhdGlvbkRpYWxvZykKICAgICAgICAgcmV0dXJuIFRSVUU7CiAKLSAgICBwcml2
LT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChyZWludGVy
cHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpLCAwIC8qIGN1cnJlbnRDbGlja0NvdW50ICovKSk7
CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBkb3VibGUgeFJvb3QsIHlSb290OworICAg
IGdka19ldmVudF9nZXRfcm9vdF9jb29yZHMocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2
ZW50KSwgJnhSb290LCAmeVJvb3QpOworICAgIGRvdWJsZSB4LCB5OworICAgIGdka19ldmVudF9n
ZXRfY29vcmRzKHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihldmVudCksICZ4LCAmeSk7CisK
KyAgICBpZiAocHJpdi0+bW91c2VMb2NrZWQpIHsKKyAgICAgICAgZ2ludCB4Q2VudGVyID0gMDsK
KyAgICAgICAgZ2ludCB5Q2VudGVyID0gMDsKKyAgICAgICAgZ2V0V2lkZ2V0V2luZG93Q2VudHJl
KHdpZGdldCwgeENlbnRlciwgeUNlbnRlcik7CisKKyAgICAgICAgaWYgKHhDZW50ZXIgPT0geFJv
b3QgJiYgeUNlbnRlciA9PSB5Um9vdCkgeworICAgICAgICAgICAgaWYgKHByaXYtPmxvY2tpbmdN
b3VzZSkKKyAgICAgICAgICAgICAgICBwcml2LT5sb2NraW5nTW91c2UgPSBmYWxzZTsKKyAgICAg
ICAgICAgIHJldHVybiBUUlVFOworICAgICAgICB9CisKKyAgICAgICAgLy8gTW92ZW1lbnQgaXMg
Y29tcHV0ZWQgYnkgdGFraW5nIHRoZSBkaWZmZXJlbmNlIG9mIHRoZSBuZXcgY3Vyc29yIHBvc2l0
aW9uCisgICAgICAgIC8vIGFuZCB0aGUgd2lkZ2V0IHdpbmRvdyBjZW50ZXIgYmVjYXVzZSBhZnRl
ciBlYWNoIG1vdXNlIG1vdGlvbiBtb3ZlbWVudAorICAgICAgICAvLyB0aGUgY3Vyc29yIHdpbGwg
YmUgd2FycGVkIGJhY2sgdG8gdGhlIGNlbnRlciBzbyB0aGF0IHdlIGFyZSBub3QgbGltaXRlZCBi
eSBjbGlwcGluZyBib3VuZGFyaWVzLgorICAgICAgICAvLyBVc2luZyB0aGUgY2VudGVyIGZvciB0
aGUgY2FsY3VsYXRpb24gcmVtb3ZlcyBwcm9ibGVtIHdpdGggd3JvbmcgY2FsY3VsYXRlZCBvZmZz
ZXRzIGZvciBkZWxheWVkIG1vdXNlIGV2ZW50cworICAgICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50
IGxvY2tlZE1vdXNlRXZlbnQocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSwKKyAg
ICAgICAgICAgIDAsCisgICAgICAgICAgICBwcml2LT5tb3VzZVBvc2l0aW9uLAorICAgICAgICAg
ICAgcHJpdi0+bW91c2VHbG9iYWxQb3NpdGlvbiwKKyAgICAgICAgICAgIEZsb2F0UG9pbnQoKGZs
b2F0KXhSb290IC0geENlbnRlciwgKGZsb2F0KXlSb290IC0geUNlbnRlciksCisgICAgICAgICAg
ICB0cnVlKTsKKworICAgICAgICBwcml2LT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQobG9j
a2VkTW91c2VFdmVudCk7CisgICAgICAgIC8vIG1vdmUgbW91c2UgYmFjayB0byB3aW5kb3cgY2Vu
dGVyIHRvIGF2b2lkIGNsaXBwaW5nIGxpbWl0YXRpb25zCisgICAgICAgIEdka0Rpc3BsYXkqIGRp
c3BsYXkgPSBndGtfd2lkZ2V0X2dldF9kaXNwbGF5KHdpZGdldCk7CisgICAgICAgIEdka1NjcmVl
biogc2NyZWVuID0gZ3RrX3dpZGdldF9nZXRfc2NyZWVuKHdpZGdldCk7CisgICAgICAgIEdka0Rl
dmljZU1hbmFnZXIqIGRldmljZU1hbmFnZXIgPSBnZGtfZGlzcGxheV9nZXRfZGV2aWNlX21hbmFn
ZXIoZGlzcGxheSk7CisgICAgICAgIEdka0RldmljZSogZGV2aWNlID0gZ2RrX2RldmljZV9tYW5h
Z2VyX2dldF9jbGllbnRfcG9pbnRlcihkZXZpY2VNYW5hZ2VyKTsKKyAgICAgICAgZ2RrX2Rldmlj
ZV93YXJwKGRldmljZSwgc2NyZWVuLCB4Q2VudGVyLCB5Q2VudGVyKTsKKyAgICAgICAgcmV0dXJu
IFRSVUU7CisgICAgfQogCisgICAgcHJpdi0+bW91c2VQb3NpdGlvbi5zZXQoeCwgeSk7CisgICAg
cHJpdi0+bW91c2VHbG9iYWxQb3NpdGlvbi5zZXQoeFJvb3QsIHlSb290KTsKKworICAgIGlmIChw
cml2LT51bmxvY2tpbmdNb3VzZSkgeworICAgICAgICBwcml2LT51bmxvY2tpbmdNb3VzZSA9IGZh
bHNlOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisjZW5kaWYKKworICAgIHByaXYtPnBh
Z2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KHJlaW50ZXJwcmV0
X2Nhc3Q8R2RrRXZlbnQqPihldmVudCksIDAgLyogY3VycmVudENsaWNrQ291bnQgKi8pKTsKICAg
ICByZXR1cm4gVFJVRTsKIH0KIApAQCAtMTEyMCwzICsxMjQwLDcwIEBAIHZvaWQgd2Via2l0V2Vi
Vmlld0Jhc2VVcGRhdGVUZXh0SW5wdXRTdGF0ZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2Vi
Vmlld0Jhc2UpCiB7CiAgICAgd2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmlucHV0TWV0aG9kRmls
dGVyLnNldEN1cnNvclJlY3Qod2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+ZWRp
dG9yU3RhdGUoKS5jdXJzb3JSZWN0KTsKIH0KKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorYm9v
bCB3ZWJraXRXZWJWaWV3QmFzZUxvY2tNb3VzZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2Vi
Vmlld0Jhc2UpCit7CisgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2Via2l0
V2ViVmlld0Jhc2UtPnByaXY7CisKKyAgICBpZiAocHJpdi0+bW91c2VMb2NrZWQpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgLy8gUmVsZWFzZSBhbnkgY3VycmVudCBncmFiLgorICAgIEd0
a1dpZGdldCogY3VycmVudEdyYWJXaW5kb3cgPSBndGtfZ3JhYl9nZXRfY3VycmVudCgpOworICAg
IGlmIChjdXJyZW50R3JhYldpbmRvdykKKyAgICAgICAgZ3RrX2dyYWJfcmVtb3ZlKGN1cnJlbnRH
cmFiV2luZG93KTsKKworICAgIEdka0Rpc3BsYXkqIGRpc3BsYXkgPSBndGtfd2lkZ2V0X2dldF9k
aXNwbGF5KEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2UpKTsKKyAgICBHZGtXaW5kb3cqIHdp
bmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNl
KSk7CisgICAgR2RrQ3Vyc29yKiBjdXJzb3IgPSBnZGtfY3Vyc29yX25ldyhHREtfQkxBTktfQ1VS
U09SKTsKKworICAgIEdka0RldmljZU1hbmFnZXIqIGRldmljZU1hbmFnZXIgPSBnZGtfZGlzcGxh
eV9nZXRfZGV2aWNlX21hbmFnZXIoZGlzcGxheSk7CisgICAgR2RrRGV2aWNlKiBkZXZpY2UgPSBn
ZGtfZGV2aWNlX21hbmFnZXJfZ2V0X2NsaWVudF9wb2ludGVyKGRldmljZU1hbmFnZXIpOworCisg
ICAgaWYgKGdka19kZXZpY2VfZ3JhYihkZXZpY2UsCisgICAgICAgIHdpbmRvdywKKyAgICAgICAg
R0RLX09XTkVSU0hJUF9OT05FLAorICAgICAgICBGQUxTRSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
R2RrRXZlbnRNYXNrPigKKyAgICAgICAgICAgIEdES19QT0lOVEVSX01PVElPTl9NQVNLIHwKKyAg
ICAgICAgICAgIEdES19CVVRUT05fUFJFU1NfTUFTSyB8CisgICAgICAgICAgICBHREtfQlVUVE9O
X1JFTEVBU0VfTUFTSyksCisgICAgICAgIGN1cnNvciwKKyAgICAgICAgR0RLX0NVUlJFTlRfVElN
RSkgIT0gR0RLX0dSQUJfU1VDQ0VTUykgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgcHJpdi0+bW91c2VMb2NrZWQgPSB0cnVlOworICAgIHByaXYtPmxvY2tpbmdNb3VzZSA9
IHRydWU7CisgICAgZ2ludCB4Q2VudGVyID0gMDsKKyAgICBnaW50IHlDZW50ZXIgPSAwOworICAg
IGdldFdpZGdldFdpbmRvd0NlbnRyZShHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlKSwgeENl
bnRlciwgeUNlbnRlcik7CisgICAgR2RrU2NyZWVuKiBzY3JlZW4gPSBndGtfd2lkZ2V0X2dldF9z
Y3JlZW4oR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZSkpOworICAgIGdka19kZXZpY2Vfd2Fy
cChkZXZpY2UsIHNjcmVlbiwgeENlbnRlciwgeUNlbnRlcik7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VVbmxvY2tNb3VzZShXZWJLaXRXZWJWaWV3QmFzZSog
d2Via2l0V2ViVmlld0Jhc2UpCit7CisgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2
ID0gd2Via2l0V2ViVmlld0Jhc2UtPnByaXY7CisgICAgaWYgKCFwcml2LT5tb3VzZUxvY2tlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgcHJpdi0+bW91c2VMb2NrZWQgPSBmYWxzZTsKKyAgICBw
cml2LT51bmxvY2tpbmdNb3VzZSA9IHRydWU7CisKKyAgICBHZGtEaXNwbGF5KiBkaXNwbGF5ID0g
Z3RrX3dpZGdldF9nZXRfZGlzcGxheShHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlKSk7Cisg
ICAgR2RrU2NyZWVuKiBzY3JlZW4gPSBndGtfd2lkZ2V0X2dldF9zY3JlZW4oR1RLX1dJREdFVCh3
ZWJraXRXZWJWaWV3QmFzZSkpOworICAgIEdka0RldmljZU1hbmFnZXIqIGRldmljZU1hbmFnZXIg
PSBnZGtfZGlzcGxheV9nZXRfZGV2aWNlX21hbmFnZXIoZGlzcGxheSk7CisgICAgR2RrRGV2aWNl
KiBkZXZpY2UgPSBnZGtfZGV2aWNlX21hbmFnZXJfZ2V0X2NsaWVudF9wb2ludGVyKGRldmljZU1h
bmFnZXIpOworICAgIGdka19kZXZpY2VfdW5ncmFiKGRldmljZSwgR0RLX0NVUlJFTlRfVElNRSk7
CisKKyAgICAvLyB3YXJwIG1vdXNlIGJhY2sgdG8gdW5sb2NrZWQgcG9zaXRpb24KKyAgICBnZGtf
ZGV2aWNlX3dhcnAoZGV2aWNlLCBzY3JlZW4sIHByaXYtPm1vdXNlR2xvYmFsUG9zaXRpb24ueCgp
LCBwcml2LT5tb3VzZUdsb2JhbFBvc2l0aW9uLnkoKSk7Cit9CisKK2Jvb2wgd2Via2l0V2ViVmll
d0Jhc2VJc01vdXNlTG9ja2VkKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkK
K3sKKyAgICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPm1vdXNlTG9ja2VkOworfQor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCmluZGV4IGY5YjhiZmEzMWNiNjYzZDM2ODM4MDMy
ZmUzOGFkYmFhZTE1NzY0NTAuLjk4Y2E1MzJkN2NjZGRhNmQwYzcyNjhjYjc5MjBlNGZkYzNhYWI5
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCkBAIC01Nyw2ICs1NywxMiBAQCB2b2lkIHdlYmtp
dFdlYlZpZXdCYXNlVXBkYXRlUHJlZmVyZW5jZXMoV2ViS2l0V2ViVmlld0Jhc2UqKTsKIHZvaWQg
d2Via2l0V2ViVmlld0Jhc2VRdWV1ZURyYXdPZkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRz
KFdlYktpdFdlYlZpZXdCYXNlKik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
Citib29sIHdlYmtpdFdlYlZpZXdCYXNlTG9ja01vdXNlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJr
aXRXZWJWaWV3QmFzZSk7Cit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlVW5sb2NrTW91c2UoV2ViS2l0
V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKTsKK2Jvb2wgd2Via2l0V2ViVmlld0Jhc2VJ
c01vdXNlTG9ja2VkKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSk7CisjZW5k
aWYKKwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldEZvY3VzKFdlYktpdFdlYlZpZXdCYXNlKiwg
Ym9vbCBmb2N1c2VkKTsKIGJvb2wgd2Via2l0V2ViVmlld0Jhc2VJc0luV2luZG93QWN0aXZlKFdl
YktpdFdlYlZpZXdCYXNlKik7CiBib29sIHdlYmtpdFdlYlZpZXdCYXNlSXNGb2N1c2VkKFdlYktp
dFdlYlZpZXdCYXNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCAz
YzU2ZDZiN2UwMWRjZDVlYzIzZDA1YzlmMTg1ODA2MDc3MGQ1ZmRiLi5mMWJiYzI2NzNkMzFiNjE2
ZTMzMTUxMTAzZGY4M2ZiNzgwNjM1YzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKQEAgLTE3MCw2ICsxNzAsMTEgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKEdUSykKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChjb25zdCBOYXRpdmVX
ZWJLZXlib2FyZEV2ZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiwgVmVjdG9yPFdURjo6U3RyaW5n
PiYpID0gMDsKICNlbmRpZgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgdmlydHVhbCBi
b29sIGxvY2tNb3VzZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5sb2NrTW91c2UoKSA9IDA7
CisgICAgdmlydHVhbCBib29sIGlzTW91c2VMb2NrZWQoKSA9IDA7CisjZW5kaWYKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVy
dFRvVXNlclNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpID0gMDsKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRvV2luZG93KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBi
MDY2MmVkZDI0YjQ0MDJlN2IxMTFkYzEyYzUzMDRmYjhmNmQ0ZTUyLi40MDMyMWM2YTZlYjE3ZTFk
MmI4ZjM2MzU2NTlkZWRjODI0ZWVhODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcApAQCAtMzE5LDYgKzMxOSwxMCBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQ
cm94eShQYWdlQ2xpZW50KiBwYWdlQ2xpZW50LCBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4g
cAogICAgICwgbV92aXNpYmlsaXR5U3RhdGUoUGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGUpCiAj
ZW5kaWYKICAgICAsIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yKERvTm90UGluKQorI2lmIEVOQUJM
RShQT0lOVEVSX0xPQ0spCisgICAgLCBtX3BvaW50ZXJMb2NrU2hvdWxkRmFpbFN5bmNocm9ub3Vz
bHkoZmFsc2UpCisgICAgLCBtX3BvaW50ZXJMb2NrUmVzcG9uZEFzeW5jaHJvbm91c2x5KGZhbHNl
KQorI2VuZGlmCiB7CiAjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCiAgICAgaWYgKCFt
X2lzVmlzaWJsZSkKQEAgLTI5MjAsNiArMjkyNCw2NCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bmVl
ZFRvdWNoRXZlbnRzKGJvb2wgbmVlZFRvdWNoRXZlbnRzKQogfQogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RQb2ludGVyTG9jayhi
b29sJiByZXN1bHQpCit7CisgICAgaWYgKG1fcG9pbnRlckxvY2tTaG91bGRGYWlsU3luY2hyb25v
dXNseSkgeworICAgICAgICBtX3BvaW50ZXJMb2NrU2hvdWxkRmFpbFN5bmNocm9ub3VzbHkgPSBm
YWxzZTsKKyAgICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAobV9wb2ludGVyTG9ja1Jlc3BvbmRBc3luY2hyb25vdXNseSkgeworICAgICAgICBt
X3BvaW50ZXJMb2NrUmVzcG9uZEFzeW5jaHJvbm91c2x5ID0gZmFsc2U7CisgICAgICAgIHJlc3Vs
dCA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9wYWdlQ2xpZW50
LT5sb2NrTW91c2UoKSkgeworICAgICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZEFjcXVpcmVQb2ludGVyTG9jaygpLCBtX3BhZ2VJRCk7CisgICAgICAgIHJlc3VsdCA9
IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpLCBtX3BhZ2VJRCk7Cisg
ICAgcmVzdWx0ID0gZmFsc2U7CisgICAgcmV0dXJuOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
cmVxdWVzdFBvaW50ZXJVbmxvY2soKQoreworICAgIG1fcGFnZUNsaWVudC0+dW5sb2NrTW91c2Uo
KTsKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZExvc2VQb2ludGVy
TG9jaygpLCBtX3BhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRBY3F1aXJlUG9p
bnRlckxvY2soKQoreworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlk
QWNxdWlyZVBvaW50ZXJMb2NrKCksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6
OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpCit7CisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKSwgbV9wYWdlSUQpOworfQor
Cit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTG9zZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBwcm9jZXNz
KCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZExvc2VQb2ludGVyTG9jaygpLCBtX3BhZ2VJ
RCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hy
b25vdXNseSgpCit7CisgICAgbV9wb2ludGVyTG9ja1Nob3VsZEZhaWxTeW5jaHJvbm91c2x5ID0g
dHJ1ZTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRB
c3luY2hyb25vdXNseSgpCit7CisgICAgbV9wb2ludGVyTG9ja1Jlc3BvbmRBc3luY2hyb25vdXNs
eSA9IHRydWU7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogdm9p
ZCBXZWJQYWdlUHJveHk6OnNob3dDb2xvclBpY2tlcihjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5p
dGlhbENvbG9yLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA5OWUzNGFmM2Y2ZGI0NWJkODZhYzAwNjg3MmVj
NGQ5YTA1MjE1MDFkLi5lZTUwOGM4NmUwZjRmMDFjOTRlMDI2N2IwZjZjMzJiMWFmY2EzMjQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC03NzcsNiArNzc3LDE2
IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgdm9pZCBzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3Io
V2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yKTsKICAgICBXZWJDb3JlOjpTY3JvbGxQaW5u
aW5nQmVoYXZpb3Igc2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkgeyByZXR1cm4gbV9zY3JvbGxQaW5u
aW5nQmVoYXZpb3I7IH0KKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgdm9pZCByZXF1
ZXN0UG9pbnRlckxvY2soYm9vbCYgcmVzdWx0KTsKKyAgICB2b2lkIHJlcXVlc3RQb2ludGVyVW5s
b2NrKCk7CisgICAgdm9pZCBkaWRBY3F1aXJlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZE5v
dEFjcXVpcmVQb2ludGVyTG9jaygpOworICAgIHZvaWQgZGlkTG9zZVBvaW50ZXJMb2NrKCk7Cisg
ICAgdm9pZCBzZXRQb2ludGVyTG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkoKTsKKyAgICB2
b2lkIHNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KCk7CisjZW5kaWYKICAgICAg
ICAgCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50KiwgUGFzc1JlZlB0cjxX
ZWJQcm9jZXNzUHJveHk+LCBXZWJQYWdlR3JvdXAqLCB1aW50NjRfdCBwYWdlSUQpOwpAQCAtMTI4
NSw2ICsxMjk1LDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAgCiAgICAgV2ViQ29yZTo6
U2Nyb2xsUGlubmluZ0JlaGF2aW9yIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yOworI2lmIEVOQUJM
RShQT0lOVEVSX0xPQ0spCisgICAgYm9vbCBtX3BvaW50ZXJMb2NrU2hvdWxkRmFpbFN5bmNocm9u
b3VzbHk7CisgICAgYm9vbCBtX3BvaW50ZXJMb2NrUmVzcG9uZEFzeW5jaHJvbm91c2x5OworI2Vu
ZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDliYjlkNTU2MDk4YzhjMzFk
ODhkMWMwODQzYWIxMTVlNGZlYTBlMGYuLjhhY2IwNmU0MzIyZDI2ZjZhNDdkNGViNDA1YzliMDAx
MDk1YWEyYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgpAQCAtMzIyLDQgKzMyMiwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJv
eHkgewogICAgIERpZFVwZGF0ZUluV2luZG93U3RhdGUoKQogICAgIAogICAgIERpZFNhdmVUb1Bh
Z2VDYWNoZSgpCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBSZXF1ZXN0UG9pbnRlckxv
Y2soKSAtPiAoYm9vbCByZXN1bHQpCisgICAgUmVxdWVzdFBvaW50ZXJVbmxvY2soKQorICAgIFNl
dFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSgpCisgICAgU2V0UG9pbnRlckxv
Y2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoKQorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKaW5kZXggMTVkYWRmMDY5NTU2NDI2ZTRhODQ5YjBlYjkzZGNlMzFmZjE3YzU4My4uZmEzMjky
ZWQyYWEzM2NiN2U5NzIwN2U5YzFlZDJjNjQyYjQ0NjMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcApAQCAtODExLDYgKzgxMSwyNCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZXhpdEZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpCiB9CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCitib29sIFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdFBv
aW50ZXJMb2NrKCkKK3sKKyAgICBib29sIHJlc3VsdCA9IGZhbHNlOworICAgIHJldHVybiBtX3Bh
Z2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RQb2ludGVyTG9jaygp
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0UG9pbnRlckxvY2s6OlJlcGx5KHJlc3Vs
dCkpICYmIHJlc3VsdDsKK30KKwordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RQb2ludGVy
VW5sb2NrKCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVx
dWVzdFBvaW50ZXJVbmxvY2soKSk7Cit9CisKK2Jvb2wgV2ViQ2hyb21lQ2xpZW50Ojppc1BvaW50
ZXJMb2NrZWQoKQoreworICAgIHJldHVybiBtX3BhZ2UtPmlzUG9pbnRlckxvY2tlZCgpOworfQor
I2VuZGlmCisKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpkaXNwYXRjaFZpZXdwb3J0UHJvcGVydGll
c0RpZENoYW5nZShjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYpIGNvbnN0CiB7CiAjaWYgVVNFKFRJ
TEVEX0JBQ0tJTkdfU1RPUkUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBjMzllMTRlNzdkODk3
ZmRjZjM4Nzc2Y2EwZGM4Y2Q0NzU5YjZjYTVlLi41ZDczMzFlMzUwMzk3OTI2ZWRkM2E4YjI4N2Nm
YTEwMzdhMThmNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTIwOCw2ICsyMDgsMTIgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNv
cmU6OkVsZW1lbnQqKSBPVkVSUklERTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9D
SykKKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFBvaW50ZXJMb2NrKCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RQb2ludGVyVW5sb2NrKCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBib29sIGlzUG9pbnRlckxvY2tlZCgpIE9WRVJSSURFOworI2VuZGlmCisKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgdmlydHVhbCB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpIE9WRVJSSURFOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggNGNmMDg5ODcyNTBmMDRhY2VmYzZlYzM1NTk5MDczYTQ5ODZiNjAxOS4uNjYxNWI4YjNj
MzM1ZmJlNWNlM2ZkYTVhN2U5ODUwNmViYTJjNmNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTkzLDYgKzE5MywxMCBAQAogI2luY2x1
ZGUgIkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdE1lc3NhZ2VzLmgiCiAjZW5kaWYKIAorI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCisjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCisj
ZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CkBAIC0yOTMsNiArMjk3LDkgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNv
bnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgLCBtX21heGlt
dW1SZW5kZXJpbmdTdXBwcmVzc2lvblRva2VuKDApCiAgICAgLCBtX3Njcm9sbFBpbm5pbmdCZWhh
dmlvcihEb05vdFBpbikKICAgICAsIG1fdXNlVGhyZWFkZWRTY3JvbGxpbmcoZmFsc2UpCisjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICAsIG1faXNQb2ludGVyTG9ja2VkKGZhbHNlKQorI2Vu
ZGlmCiB7CiAgICAgQVNTRVJUKG1fcGFnZUlEKTsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIG5v
bi1pZGVhbCBsb2NhdGlvbiBmb3IgdGhpcyBTZXR0aW5nIGFuZApAQCAtMTY0NSw3ICsxNjUyLDI2
IEBAIHN0YXRpYyBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgbW91
c2VFdmVudCwgV2ViUGFnZSogcGFnZSwgYm9vCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IFBsYXRmb3JtTW91c2VFdmVudCBwbGF0Zm9ybU1vdXNlRXZlbnQgPSBwbGF0Zm9ybShtb3VzZUV2
ZW50KTsKLQorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgaWYgKHBhZ2UtPmlzUG9pbnRl
ckxvY2tlZCgpKSB7CisgICAgICAgIEF0b21pY1N0cmluZyBldmVudFR5cGU7CisgICAgICAgIHN3
aXRjaCAocGxhdGZvcm1Nb3VzZUV2ZW50LnR5cGUoKSkgeworICAgICAgICBjYXNlIFBsYXRmb3Jt
RXZlbnQ6Ok1vdXNlUHJlc3NlZDoKKyAgICAgICAgICAgIGV2ZW50VHlwZSA9IGV2ZW50TmFtZXMo
KS5tb3VzZWRvd25FdmVudDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBsYXRm
b3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ6CisgICAgICAgICAgICBldmVudFR5cGUgPSBldmVudE5h
bWVzKCkubW91c2V1cEV2ZW50OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUGxh
dGZvcm1FdmVudDo6TW91c2VNb3ZlZDoKKyAgICAgICAgICAgIGV2ZW50VHlwZSA9IGV2ZW50TmFt
ZXMoKS5tb3VzZW1vdmVFdmVudDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAg
cGFnZS0+Y29yZVBhZ2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPmRpc3BhdGNoTG9ja2Vk
TW91c2VFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQsIGV2ZW50VHlwZSk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyNlbmRpZgogICAgIHN3aXRjaCAocGxhdGZvcm1Nb3VzZUV2ZW50LnR5
cGUoKSkgewogICAgICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDogewogI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQpAQCAtMTk3Nyw2ICsyMDAzLDI2IEBAIHZvaWQgV2ViUGFn
ZTo6dG91Y2hFdmVudFN5bmNGb3JUZXN0aW5nKGNvbnN0IFdlYlRvdWNoRXZlbnQmIHRvdWNoRXZl
bnQsIGJvb2wmIGhhCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCit2b2lk
IFdlYlBhZ2U6OmRpZEFjcXVpcmVQb2ludGVyTG9jaygpCit7CisgICAgbV9wYWdlLT5wb2ludGVy
TG9ja0NvbnRyb2xsZXIoKS0+ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgbV9pc1BvaW50
ZXJMb2NrZWQgPSB0cnVlOworfQorCit2b2lkIFdlYlBhZ2U6OmRpZE5vdEFjcXVpcmVQb2ludGVy
TG9jaygpCit7CisgICAgbV9wYWdlLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+ZGlkTm90QWNx
dWlyZVBvaW50ZXJMb2NrKCk7CisgICAgbV9pc1BvaW50ZXJMb2NrZWQgPSBmYWxzZTsKK30KKwor
dm9pZCBXZWJQYWdlOjpkaWRMb3NlUG9pbnRlckxvY2soKQoreworICAgIG1fcGFnZS0+cG9pbnRl
ckxvY2tDb250cm9sbGVyKCktPmRpZExvc2VQb2ludGVyTG9jaygpOworICAgIG1faXNQb2ludGVy
TG9ja2VkID0gZmFsc2U7Cit9CisjZW5kaWYKKwogYm9vbCBXZWJQYWdlOjpzY3JvbGwoUGFnZSog
cGFnZSwgU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVs
YXJpdHkpCiB7CiAgICAgcmV0dXJuIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLnNjcm9sbFJlY3Vyc2l2ZWx5KGRpcmVjdGlvbiwgZ3Jh
bnVsYXJpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
aW5kZXggOGNkYWZjNDRmYjQ2ZDUxODE4MDA4MGNhZjMyZjgyZjQ1ZjNjYmM0My4uNjhiY2E0OTA0
YWQwNzBiNzkyZTIxYzk5MzE1NmFkMjQxYzAyMWFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02NjMsNiArNjYzLDEwIEBAIHB1YmxpYzoKICAg
ICBXS1R5cGVSZWYgcGFnZU92ZXJsYXlDb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKFdL
U3RyaW5nUmVmIGF0dHJpYnV0ZSwgV0tUeXBlUmVmIHBhcmFtZXRlcik7CiAgICAgV0tBcnJheVJl
ZiBwYWdlT3ZlcmxheUNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlc05hbWVzKGJvb2wgcGFyYW1l
dGVyaXplZE5hbWVzKTsKICAgICAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGJvb2wg
aXNQb2ludGVyTG9ja2VkKCkgeyByZXR1cm4gbV9pc1BvaW50ZXJMb2NrZWQ7IH07CisgICAgdm9p
ZCBzZXRQb2ludGVyTG9ja2VkKGJvb2wgbG9ja2VkKSB7IG1faXNQb2ludGVyTG9ja2VkID0gbG9j
a2VkOyB9OworI2VuZGlmCiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBj
b25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKQEAgLTcyNSw2ICs3MjksMTEgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGhpZ2hsaWdodFBvdGVudGlhbEFjdGl2YXRpb24oY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBhcmVhKTsKICNlbmRpZgog
I2VuZGlmCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICB2b2lkIGRpZEFjcXVpcmVQb2lu
dGVyTG9jaygpOworICAgIHZvaWQgZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9p
ZCBkaWRMb3NlUG9pbnRlckxvY2soKTsKKyNlbmRpZgogI2lmIEVOQUJMRShDT05URVhUX01FTlVT
KQogICAgIHZvaWQgY29udGV4dE1lbnVIaWRkZW4oKSB7IG1faXNTaG93aW5nQ29udGV4dE1lbnUg
PSBmYWxzZTsgfQogI2VuZGlmCkBAIC0xMDI5LDggKzEwMzgsMTAgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX21heGltdW1SZW5kZXJpbmdTdXBwcmVzc2lvblRva2VuOwogICAgIAogICAgIFdl
YkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcjsKLQog
ICAgIGJvb2wgbV91c2VUaHJlYWRlZFNjcm9sbGluZzsKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NL
KQorICAgIGJvb2wgbV9pc1BvaW50ZXJMb2NrZWQ7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBlMDJmNDJhODEzYzlhZWJkM2U4YjQyYTFiYzA2ZjFm
NWNmZjJmMjAyLi5mYmRlNGY2NWFkNDYxNjY2MjUxZTljNDc3OWQyOWVkNDBmMDNmODk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgpAQCAtMzE1LDQgKzMxNSwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJl
Y2VpdmVyIHsKICAgICBTZXRNYWluRnJhbWVJblZpZXdTb3VyY2VNb2RlKGJvb2wgaW5WaWV3U291
cmNlTW9kZSkKICAgICAKICAgICBTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IodWludDMyX3QgcGlu
bmluZykKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgRGlkQWNxdWlyZVBvaW50ZXJM
b2NrKCkKKyAgICBEaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKQorICAgIERpZExvc2VQb2ludGVy
TG9jaygpCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCBlZDAwMzBjNzY1ODI0NDVmNGM3ZTkzNDk3MDM2ZTU4NjdjZjA4N2Q2Li5i
YTMwNzliMjk4MDBjNzMzZWUyYmJkZGY5MmQ1YjYwNjQ1YjNjNjI2IDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTMt
MTAtMDMgIEFudG9uIE9iemhpcm92ICA8YS5vYnpoaXJvdkBzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbR1RLXSBFbmFibGUgUG9pbnRlciBMb2NrIGZlYXR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5MDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3QgQVBJIG5lZWRlZCBieSB0aGUgdGVz
dHMgbG9jYXRlZCBpbiBMYXlvdXRUZXN0cy9wb2ludGVyLWxvY2suCisKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
OgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKToK
KyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZExvc2VQb2ludGVyTG9jayk6CisgICAg
ICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWROb3RBY3F1aXJlUG9pbnRlckxvY2spOgorICAg
ICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6c2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5j
aHJvbm91c2x5KToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnNldFBvaW50ZXJMb2Nr
V2lsbEZhaWxTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6
ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6ZGlkTG9z
ZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6ZGlkTm90QWNxdWlyZVBv
aW50ZXJMb2NrKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0UG9pbnRlckxvY2tXaWxs
UmVzcG9uZEFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0UG9p
bnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlk
QWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZExv
c2VQb2ludGVyTG9jayk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWROb3RBY3F1
aXJlUG9pbnRlckxvY2spOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0UG9pbnRl
ckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpk
aWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMTMtMTAtMDIgIFJ5b3N1
a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRVdTIGJ1aWxkIGZpeCBhZnRl
ciB0aGUgUXQgRVdTIHJlbW92YWwuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCBlMjYy
YjI1N2UyN2ZmYzFiNzE5MTY4NGE1M2I0M2NmZmY4MmNkYzg3Li4wZDg3OTMzYjFjZjc0NzA5ZDI4
NTA3YjJkNDNiZjhjZTBmYWNkNmZlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTE5
MCwxMiArMTkwLDE4IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKIAogICAgIC8vIFNlY3VyZSB0
ZXh0IGlucHV0IG1vZGUgKE1hYyBvbmx5KQogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFu
IHNlY3VyZUV2ZW50SW5wdXRJc0VuYWJsZWQ7Ci0gICAgCisKICAgICAvLyBPdmVycmlkZSBwbHVn
aW4gbG9hZCBwb2xpY3kuCiAgICAgdm9pZCBzZXRCbG9ja0FsbFBsdWdpbnMoYm9vbGVhbiBzaG91
bGRCbG9jayk7CiAgICAgCiAgICAgLy8gSG9va3MgdG8gdGhlIEpTQyBjb21waWxlci4KICAgICBv
YmplY3QgbnVtYmVyT2ZERkdDb21waWxlcyhvYmplY3QgZnVuY3Rpb24pOwogICAgIG9iamVjdCBu
ZXZlcklubGluZUZ1bmN0aW9uKG9iamVjdCBmdW5jdGlvbik7CisKKyAgICB2b2lkIGRpZEFjcXVp
cmVQb2ludGVyTG9jaygpOworICAgIHZvaWQgZGlkTG9zZVBvaW50ZXJMb2NrKCk7CisgICAgdm9p
ZCBkaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIHNldFBvaW50ZXJMb2NrV2ls
bFJlc3BvbmRBc3luY2hyb25vdXNseSgpOworICAgIHZvaWQgc2V0UG9pbnRlckxvY2tXaWxsRmFp
bFN5bmNocm9ub3VzbHkoKTsKIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggZWYzMzhkYTg3ODA2
ZWEzNTU4MDc3ZWE2ZDJjNjkwMTljMmU5MzBmOS4uMDExM2U2NjRjM2M2YjJhYzQxOGY1MDY0M2M2
NDJhOTk2YTdmOTlhMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTU4NSw0ICs1ODUsMzQgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZTo6cXVldWVOb25Mb2FkaW5nU2NyaXB0KFdLU3RyaW5nUmVmIHNjcmlw
dCkKICAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwg
c2NyaXB0KTsKIH0KIAordm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkQWNxdWlyZVBvaW50ZXJMb2Nr
KCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywg
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkRpZEFjcXVpcmVQb2ludGVyTG9jayIpKTsK
KyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7
Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZExvc2VQb2ludGVyTG9jaygpCit7CisgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJEaWRMb3NlUG9pbnRlckxvY2siKSk7CisgICAgV0tCdW5kbGVQ
b3N0TWVzc2FnZShtX2J1bmRsZSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworfQorCit2b2lkIElu
amVjdGVkQnVuZGxlOjpkaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKQoreworICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiRGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrIikpOworICAgIFdLQnVuZGxlUG9z
dE1lc3NhZ2UobV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKK30KKwordm9pZCBJbmpl
Y3RlZEJ1bmRsZTo6c2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KCkKK3sK
KyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hy
b25vdXNseSIpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKG1fYnVuZGxlLCBtZXNzYWdlTmFt
ZS5nZXQoKSwgMCk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFBvaW50ZXJMb2NrV2ls
bEZhaWxTeW5jaHJvbm91c2x5KCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVz
c2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFBvaW50
ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5IikpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2Uo
bV9idW5kbGUsIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RS
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmgKaW5kZXggMTcwYzhhYzcwYWQ4NzBiZWJkZWVjMjJlYWIyMjcxODBjNjVhYjE0
MS4uM2RkYjc5MGJkZTY5YWU3MzllMjIyM2M0NTRjM2Q2OTYyOTFiN2QwMyAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
aApAQCAtMTA5LDYgKzEwOSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBxdWV1ZUxvYWRpbmdTY3Jp
cHQoV0tTdHJpbmdSZWYgc2NyaXB0KTsKICAgICB2b2lkIHF1ZXVlTm9uTG9hZGluZ1NjcmlwdChX
S1N0cmluZ1JlZiBzY3JpcHQpOwogCisgICAgLy8gUG9pbnRlciBsb2NrCisgICAgdm9pZCBkaWRB
Y3F1aXJlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOworICAg
IHZvaWQgZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBzZXRQb2ludGVyTG9j
a1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkoKTsKKyAgICB2b2lkIHNldFBvaW50ZXJMb2NrV2ls
bEZhaWxTeW5jaHJvbm91c2x5KCk7CisKIHByaXZhdGU6CiAgICAgSW5qZWN0ZWRCdW5kbGUoKTsK
ICAgICB+SW5qZWN0ZWRCdW5kbGUoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDNmMmQwMzhmZjFhMTM2MTRlZDUw
ZGIxYzA2NmM0OTFlMWJhYjBiYTguLjY4ZGU5ZGQyZjQ0NDQ2OTQzZjViY2JhMjQyMDQyYjRjZjA1
ZTgyMzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcApAQCAtODMzLDQgKzgzMywyOSBAQCBKU1ZhbHVlUmVmIFRlc3RSdW5u
ZXI6Om5ldmVySW5saW5lRnVuY3Rpb24oSlNWYWx1ZVJlZiB0aGVGdW5jdGlvbikKICAgICByZXR1
cm4gSlNDOjpzZXROZXZlcklubGluZShjb250ZXh0LCB0aGVGdW5jdGlvbik7CiB9CiAKK3ZvaWQg
VGVzdFJ1bm5lcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBJbmplY3RlZEJ1bmRs
ZTo6c2hhcmVkKCkuZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5l
cjo6ZGlkTG9zZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCku
ZGlkTG9zZVBvaW50ZXJMb2NrKCk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6ZGlkTm90QWNxdWly
ZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuZGlkTm90QWNx
dWlyZVBvaW50ZXJMb2NrKCk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0UG9pbnRlckxvY2tX
aWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KCkKK3sKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkuc2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KCk7Cit9CisKK3ZvaWQg
VGVzdFJ1bm5lcjo6c2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoKQoreworICAg
IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25v
dXNseSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggMzhjZWY2Yjc4ODhlMDBh
NTA0OGFlNWUxMDU0NDcyNzc1ZjE4NDFkNy4uMDUyZGFmMmZjN2IzNDEwOGYwYzE0M2NiNGU5ODNh
ZDIzNDQ5MTBkMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmgKQEAgLTI3Nyw2ICsyNzcsMTMgQEAgcHVibGljOgogICAgIEpTVmFs
dWVSZWYgbnVtYmVyT2ZERkdDb21waWxlcyhKU1ZhbHVlUmVmIHRoZUZ1bmN0aW9uKTsKICAgICBK
U1ZhbHVlUmVmIG5ldmVySW5saW5lRnVuY3Rpb24oSlNWYWx1ZVJlZiB0aGVGdW5jdGlvbik7CiAK
KyAgICAvLyBQb2ludGVyIGxvY2sKKyAgICB2b2lkIGRpZEFjcXVpcmVQb2ludGVyTG9jaygpOwor
ICAgIHZvaWQgZGlkTG9zZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBkaWROb3RBY3F1aXJlUG9p
bnRlckxvY2soKTsKKyAgICB2b2lkIHNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25v
dXNseSgpOworICAgIHZvaWQgc2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoKTsK
KwogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIHdhaXRUb0R1bXBXYXRjaGRvZ1Rp
bWVySW50ZXJ2YWw7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAK
aW5kZXggNjRmZmEzOGQ1OTJmMTllYWY5MzE1NzdlYzI2NWY5YTUxMjU2MDU3MC4uMDU4ZDNjZmUy
M2E1YjllZjdlZGNkZDIxMzNjM2I2ZmVkNGJjYWMzMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTEyNTAsNCArMTI1MCwzMSBAQCB2b2lkIFRlc3RDb250
cm9sbGVyOjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXS0ZyYW1lUmVmIGZyYW1lLCBXS1VSTFJl
c3BvbnNlUmVmCiAgICAgV0tGcmFtZVBvbGljeUxpc3RlbmVySWdub3JlKGxpc3RlbmVyKTsKIH0K
IAorLy8gUG9pbnRlciBsb2NrCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKK3ZvaWQgVGVzdENv
bnRyb2xsZXI6OmRpZEFjcXVpcmVQb2ludGVyTG9jaygpCit7CisgICAgV0tQYWdlRGlkQWNxdWly
ZVBvaW50ZXJMb2NrKG1fbWFpbldlYlZpZXctPnBhZ2UoKSk7Cit9CisKK3ZvaWQgVGVzdENvbnRy
b2xsZXI6OmRpZExvc2VQb2ludGVyTG9jaygpCit7CisgICAgV0tQYWdlRGlkTG9zZVBvaW50ZXJM
b2NrKG1fbWFpbldlYlZpZXctPnBhZ2UoKSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRp
ZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpCit7CisgICAgV0tQYWdlRGlkTm90QWNxdWlyZVBvaW50
ZXJMb2NrKG1fbWFpbldlYlZpZXctPnBhZ2UoKSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6
OnNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSgpCit7CisgICAgV0tQYWdl
U2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KG1fbWFpbldlYlZpZXctPnBh
Z2UoKSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFBvaW50ZXJMb2NrV2lsbEZhaWxT
eW5jaHJvbm91c2x5KCkKK3sKKyAgICBXS1BhZ2VTZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hy
b25vdXNseShtX21haW5XZWJWaWV3LT5wYWdlKCkpOworfQorI2VuZGlmCiB9IC8vIG5hbWVzcGFj
ZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCAyZThiMzE3
ODcyYzBhYzNlNzdhYWM4MTVjY2RiZTYxMWIxZDJhM2M5Li5hYWQ3M2UxZmQ2ODJjZDUyYjc1OGZj
ODRmMmY1ZmFmM2I5N2IwZWQzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5oCkBAIC0xMDIsNiArMTAyLDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0QmxvY2tBbGxQ
bHVnaW5zKGJvb2wgc2hvdWxkQmxvY2spIHsgbV9zaG91bGRCbG9ja0FsbFBsdWdpbnMgPSBzaG91
bGRCbG9jazsgfQogCisgICAgLy8gUG9pbnRlciBsb2NrCisgICAgdm9pZCBkaWRBY3F1aXJlUG9p
bnRlckxvY2soKTsKKyAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOworICAgIHZvaWQgZGlk
Tm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBzZXRQb2ludGVyTG9ja1dpbGxSZXNw
b25kQXN5bmNocm9ub3VzbHkoKTsKKyAgICB2b2lkIHNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5j
aHJvbm91c2x5KCk7CisKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplKGludCBhcmdjLCBj
b25zdCBjaGFyKiBhcmd2W10pOwogICAgIHZvaWQgY3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKFdL
RGljdGlvbmFyeVJlZik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
CmluZGV4IGI2MTIxZDM0YjYzMzM4ZmFkZTQ3MWEzNGM4ZmYwNGYyZTFkZTNjZWUuLjg4NjE2MDgx
NzUxOGMwZDA5ZDdhZjc1OWQzMDRiYzg4NzkzNzg3OTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC02NzIsOSArNjcyLDMzIEBAIHZvaWQgVGVzdEludm9j
YXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1l
c3NhZ2VOYW1lCiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tC
b29sZWFuR2V0VHlwZUlEKCkpOwogICAgICAgICBXS0Jvb2xlYW5SZWYgc2hvdWxkQmxvY2sgPSBz
dGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5KTsKICAgICAgICAgVGVzdENvbnRy
b2xsZXI6OnNoYXJlZCgpLnNldEJsb2NrQWxsUGx1Z2lucyhXS0Jvb2xlYW5HZXRWYWx1ZShzaG91
bGRCbG9jaykpOworICAgIH0KKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiRGlkQWNxdWlyZVBvaW50ZXJM
b2NrIikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLmRpZEFjcXVpcmVQb2lu
dGVyTG9jaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJEaWRMb3NlUG9pbnRlckxvY2siKSkgewor
ICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkuZGlkTG9zZVBvaW50ZXJMb2NrKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgIkRpZE5vdEFjcXVpcmVQb2ludGVyTG9jayIpKSB7CisgICAgICAg
IFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5kaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKG1lc3NhZ2VOYW1lLCAiU2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5
IikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLnNldFBvaW50ZXJMb2NrV2ls
bFJlc3BvbmRBc3luY2hyb25vdXNseSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRQb2ludGVy
TG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSIpKSB7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpz
aGFyZWQoKS5zZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorI2VuZGlmCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMTFkNzM3OGJhOGM4
YjQyMTE1YjFmYThiM2E0NDJhNDI3MGRmYzlhNy4uMmI5NDA5ODkzNzhiYTg1ZDdiMWM5MTFhZDhl
NGI1ZTA4ZDg4OTBjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTI4Myw4ICsyODMsNiBAQCB3ZWJraXQub3JnL2IvOTkwMzEgamF2YSBbIFNraXAgXQog
IyBEaXJlY3RvcnkgdXBsb2FkIGlzIG5vdCBlbmFibGVkLgogd2Via2l0Lm9yZy9iLzk5MDMyIGZh
c3QvZm9ybXMvZmlsZS9pbnB1dC1maWxlLWRpcmVjdG9yeS11cGxvYWQuaHRtbCBbIFRpbWVvdXQg
XQogCi0jIFBvaW50ZXIgTG9jayBpcyBub3QgaW1wbGVtZW50ZWQuCi13ZWJraXQub3JnL2IvOTkw
MzYgcG9pbnRlci1sb2NrIFsgU2tpcCBdCiAjIEFzIHdlbGwgYXMgdGVzdGluZyBmdWxsc2NyZWVu
IGZ1bmN0aW9uYWxpdHksIHRoZXNlIHRlc3RzIGFsc28gdXRpbGl6ZSB0aGUgcG9pbnRlciBsb2Nr
IGZlYXR1cmUuCiB3ZWJraXQub3JnL2IvOTkwMzYgaHR0cC90ZXN0cy9mdWxsc2NyZWVuIFsgU2tp
cCBdCiB3ZWJraXQub3JnL2IvOTkwMzYgaHR0cC90ZXN0cy9wb2ludGVyLWxvY2sgWyBTa2lwIF0K
</data>
<flag name="review"
          id="235617"
          type_id="1"
          status="-"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>