<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.kde.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugs.kde.org/"
          
          maintainer="sysadmin@kde.org"
>

    <bug>
          <bug_id>62380</bug_id>
          
          <creation_ts>2003-08-08 13:28:03 +0000</creation_ts>
          <short_desc>Disable word wrap in Konsole.</short_desc>
          <delta_ts>2024-07-11 18:18:06 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>2</classification_id>
          <classification>Applications</classification>
          <product>konsole</product>
          <component>general</component>
          <version>master</version>
          <rep_platform>Gentoo Packages</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.kde.org/show_bug.cgi?id=196998</see_also>
    
    <see_also>https://bugzilla.gnome.org/show_bug.cgi?id=769440</see_also>
    
    <see_also>https://github.com/microsoft/terminal/issues/1860#issue-465003141</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>NOR</priority>
          <bug_severity>wishlist</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>485970</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>dpavlotzky</reporter>
          <assigned_to name="Konsole Bugs">konsole-bugs-null</assigned_to>
          <cc>4wy78uwh</cc>
    
    <cc>agollapudi</cc>
    
    <cc>bugseforuns</cc>
    
    <cc>cpigat242</cc>
    
    <cc>emilsedgh</cc>
    
    <cc>erbenton</cc>
    
    <cc>fasaxc</cc>
    
    <cc>Juergen.Schwarz</cc>
    
    <cc>kde</cc>
    
    <cc>linds.r</cc>
    
    <cc>mkyral</cc>
    
    <cc>nate</cc>
    
    <cc>negora</cc>
    
    <cc>pmb</cc>
    
    <cc>pmullor</cc>
    
    <cc>rob</cc>
    
    <cc>thothonegan</cc>
          
          <cf_commitlink></cf_commitlink>
          <cf_versionfixedin></cf_versionfixedin>
          <cf_sentryurl></cf_sentryurl>
          <votes>0</votes>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>150884</commentid>
    <comment_count>0</comment_count>
    <who name="">dpavlotzky</who>
    <bug_when>2003-08-08 13:28:03 +0000</bug_when>
    <thetext>Version:            (using KDE KDE 3.1.2)
Installed from:    Gentoo Packages
Compiler:          gcc 3.2.3 
OS:          Linux

I was using konsole to do some database queries. The results where big so the output gets distributed accross multiple lines.

Would it be possible to implement a wordwrap toggle, so it would be possible to get everything on one line. I think that would realy improve readability of these sort of queries.

kind regards,

David Pavlotzky</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150887</commentid>
    <comment_count>1</comment_count>
    <who name="Thiago Macieira">thiago</who>
    <bug_when>2003-08-08 13:59:13 +0000</bug_when>
    <thetext>I&apos;m sorry, but how do you propose we do that? A horizontal scrollbar? 
 
That just doesn&apos;t exist in terminals. When something gets to the end of a line, it 
automatically goes down to the next line, causing scrolling if needed. 
 </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150892</commentid>
    <comment_count>2</comment_count>
    <who name="Waldo Bastian">bastian</who>
    <bug_when>2003-08-08 14:15:39 +0000</bug_when>
    <thetext>Subject: Re: [Konsole-devel]  disable wordwrap in konsole

On Friday 08 August 2003 13:59, Thiago Macieira wrote:
&gt; I&apos;m sorry, but how do you propose we do that? A horizontal scrollbar?

It would technically be possible to have the logical screen size wider than 
the visible screen size but many applications running in konsole will then 
try to use the full width of the logical screen size which may cause more 
problems than it is worth. A significant portion of these applications will 
then not be visible.

An alternative could be to use a large logical screen size but report the 
visible screen size to the applications running in konsole, but I think that 
that will cause many applications, including the command shell, to 
miscalculate the position of text, leading to very broken input-line 
behavior.

I don&apos;t think konsole can offer any usable solutions in this area.

Cheers,
Waldo
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150893</commentid>
    <comment_count>3</comment_count>
    <who name="">dpavlotzky</who>
    <bug_when>2003-08-08 14:32:00 +0000</bug_when>
    <thetext>Is there an LF or CR or other string termination at the end of every line or just at the 
&quot;real&quot; end of the line. Maybe it&apos;s possible to search for that? 
 
kind regards, 
 
David Pavlotzky </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150894</commentid>
    <comment_count>4</comment_count>
    <who name="Thiago Macieira">thiago</who>
    <bug_when>2003-08-08 14:40:19 +0000</bug_when>
    <thetext>The current code already knows about premature end of lines (just try selecting with 
mouse a line that ended by a newline past the newline). Maybe then all that is needed is a 
button &quot;Show buffer in not wordwrapped&quot; and Konsole would show the user a re-rendering 
of the buffer contents. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150895</commentid>
    <comment_count>5</comment_count>
    <who name="">dpavlotzky</who>
    <bug_when>2003-08-08 14:52:42 +0000</bug_when>
    <thetext>That would be great! 
 
I was just thinking about an example: nano. You can start it with the &quot;-w&quot; switch to have 
nano not wrap long lines. Instead it shows a &quot;$&quot; at the end of the (terminal) line and 
when you go to the $ the line is shifted. 
 
kind regards, 
 
David Pavlotzky </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150905</commentid>
    <comment_count>6</comment_count>
    <who name="Stephan Kulow">coolo</who>
    <bug_when>2003-08-08 15:53:33 +0000</bug_when>
    <thetext>Subject: Re:  disable wordwrap in konsole

On Friday 08 August 2003 14:52, david@djin.com wrote:
&gt; I was just thinking about an example: nano. You can start it with the &quot;-w&quot; switch to have 
&gt; nano not wrap long lines. Instead it shows a &quot;$&quot; at the end of the (terminal) line and 
&gt; when you go to the $ the line is shifted. 
nano is an editor no terminal emulator, no?

Greetings, Stephan

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150915</commentid>
    <comment_count>7</comment_count>
    <who name="">dpavlotzky</who>
    <bug_when>2003-08-08 16:36:00 +0000</bug_when>
    <thetext>Correct 
 
kind regards, 
 
David Pavlotzky </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151518</commentid>
    <comment_count>8</comment_count>
    <who name="Thiago Macieira">thiago</who>
    <bug_when>2003-08-11 23:43:12 +0000</bug_when>
    <thetext>*** Bug 62509 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151519</commentid>
    <comment_count>9</comment_count>
    <who name="Amit Gollapudi">agollapudi</who>
    <bug_when>2003-08-11 23:52:15 +0000</bug_when>
    <thetext>Like I mentioned in bug report# 62509, the way emacs handles wrapping of long
lines in a shell is ideal.  A similar mechanism is used to OS X terminals.  So,
the line would still be layed out based on available space and wrapped normally.
 However, when the terminal is resized, more and more of the text would move
into a single line based on available space.  This behavior is kind of similar
to text editors/viewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157301</commentid>
    <comment_count>10</comment_count>
    <who name="">dpavlotzky</who>
    <bug_when>2003-09-10 23:59:16 +0000</bug_when>
    <thetext>Hi,

PuTTY (www.chiark.greenend.org.uk/~sgtatham/putty/) has the possibility to 
turn word wrapping of.

When starting a new session goto Terminal in the tree view on the left. Here 
you have an option &quot;Auto wrap mode initialy on&quot;. When you disable this option 
long lines het truncated at the end of the PuTTY window.

I couldn&apos;t find an option to add a horizontal scrollbar though.

Kind regards,

David Pavlotzky</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172046</commentid>
    <comment_count>11</comment_count>
    <who name="Thiago Macieira">thiago</who>
    <bug_when>2003-11-04 03:38:55 +0000</bug_when>
    <thetext>*** Bug 67157 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172324</commentid>
    <comment_count>12</comment_count>
    <who name="Pedro Mullor">pmullor</who>
    <bug_when>2003-11-04 20:42:12 +0000</bug_when>
    <thetext>Hello all,

apparently I opened a dupe yesterday :P

As I told, &quot;There should be a sort of &apos;buffer&apos;, which stores horizontal data.
I use everyday &apos;cmd&apos; from windows and, besides its poor terminal emulation, it&apos;s the only terminal around which I know has this &apos;buffer&apos; feature.

You just do a select of this sort and use the horizontal bar to pan through the &apos;buffered data&apos;, it works nice (sometimes it gots the CPU at 100 because it moves the focus of the terminal window while drawing on it - as a typewriter - but this is another thing... ;o) &quot;

CMD sets a limit of, say, 80 columns for normal operation but when I start sqlplus and I make &apos;set line 3000&apos; to sort data at its widest, it just gets the job done.

I would admit the terminal emulation of CMD is not the brightest but it performs this feature with no problem.

I&apos;ve tried PowerTerm, putty &amp; CRT to no avail.... :|

Kind regards,

Pedro Mullor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203267</commentid>
    <comment_count>13</comment_count>
    <who name="Pedro Mullor">pmullor</who>
    <bug_when>2004-02-08 18:12:00 +0000</bug_when>
    <thetext>could we have a sort of confirmation of deny.
As long as 3.2 went out recently, it would be great news to see this is foreseen someday soon....

thanks ,

Pedro</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203268</commentid>
    <comment_count>14</comment_count>
    <who name="Pedro Mullor">pmullor</who>
    <bug_when>2004-02-08 18:13:17 +0000</bug_when>
    <thetext>sorry, it was &quot;confirmation OR deny&quot; :P

BTW, hello everyone.

Pedro</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203417</commentid>
    <comment_count>15</comment_count>
    <who name="Waldo Bastian">bastian</who>
    <bug_when>2004-02-09 00:10:38 +0000</bug_when>
    <thetext>Yes, it would be nice to have. No, I&apos;m not going to implement it anytime soon. Maybe someone else will though, you never know. I will be more than happy to assist anyone that wants to work on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404997</commentid>
    <comment_count>16</comment_count>
    <who name="Alparslan Ozturk">alparslan_ozturk</who>
    <bug_when>2006-01-10 15:02:31 +0000</bug_when>
    <thetext>hi,

I&apos;m using kde 3.5, I also want a horizontal scrollbar.
I think, must be differrent &quot;Screen buffer size&quot; and &quot;window size&quot;

thanks
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460933</commentid>
    <comment_count>17</comment_count>
    <who name="Marcel Partap">mpartap</who>
    <bug_when>2006-08-16 22:45:24 +0000</bug_when>
    <thetext>*** This bug has been confirmed by popular vote. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460947</commentid>
    <comment_count>18</comment_count>
    <who name="Robert Knight">robertknight</who>
    <bug_when>2006-08-16 22:57:26 +0000</bug_when>
    <thetext>It is now at least possible to add this since lines are now allowed to be longer than the number of columns in the display (this was needed to fix the bug where making the display smaller and then larger again would lose some of the output which was originall visible).

This would have the side effect of making the end of a long prompt disappear off the screen though (at least when using Bash, I&apos;m not sure how other shells handle their prompt-lines).
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480488</commentid>
    <comment_count>19</comment_count>
    <who name="">shattered</who>
    <bug_when>2006-10-28 15:08:30 +0000</bug_when>
    <thetext>In the meantime, you could use screen(1)...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528866</commentid>
    <comment_count>20</comment_count>
    <who name="Juergen Schwarz">Juergen.Schwarz</who>
    <bug_when>2007-05-30 18:02:31 +0000</bug_when>
    <thetext>&gt;&gt; In the meantime, you could use screen(1)... 
I&apos;ve been using screen(1), but don&apos;t know how to achive horizontal scroll.
Anybody able to explain how ??</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554373</commentid>
    <comment_count>21</comment_count>
    <who name="Rob Hasselbaum">rob</who>
    <bug_when>2007-11-09 20:47:13 +0000</bug_when>
    <thetext>Is this being worked on for KDE4? I love Konsole, but this is a big limitation compared to other tools.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563744</commentid>
    <comment_count>22</comment_count>
    <who name="Maciej Pilichowski">bluedzins</who>
    <bug_when>2007-12-16 10:07:50 +0000</bug_when>
    <thetext>My vote for it.

However few issues -- the wordwrap should be switched on the fly, i.e. user should be able to turn it on an work in MC for example, then quit it, run mysql client, disable wordwrap so each line should now become one line indeed.
But if any program asks, in wordwrap mode, about console width the answer should be given according to the window size (or settings).
So if any program does wordwprapping by itself Konsole should not &quot;fix&quot; it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568115</commentid>
    <comment_count>23</comment_count>
    <who name="Robert Knight">robertknight</who>
    <bug_when>2008-01-04 00:26:31 +0000</bug_when>
    <thetext>*** Bug 117152 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589163</commentid>
    <comment_count>24</comment_count>
      <attachid>24036</attachid>
    <who name="Robert Knight">robertknight</who>
    <bug_when>2008-03-24 15:05:20 +0000</bug_when>
    <thetext>Created attachment 24036
Add &apos;Enable Word Wrap&apos; option - V1

Adds facility to turn line wrapping on or off via View -&gt; Enable Word Wrap</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589164</commentid>
    <comment_count>25</comment_count>
    <who name="Robert Knight">robertknight</who>
    <bug_when>2008-03-24 15:17:54 +0000</bug_when>
    <thetext>The patch in comment #24 is a first attempt at this.  It adds an &apos;Enable Word Wrap&apos; option on the View menu which can be unchecked to disable word wrapping.  The text layout is redone when turning word wrap on or off.  A horizontal scrollbar appears when word wrapping is turned off.  The scrollbar range is currently much larger than it should be.

It works quite well for text which is produced by a simple program such as &apos;cat&apos; which just writes output without treating the terminal specially.  With word-wrapping alone, interactive programs such as bash had odd problems such as rewriting the current line instead of moving to a new line when entering long command-lines.

eg:

endofcommand bashprompt$ startofcommand-

To fix this the current implementation tells the terminal than the width is some arbitrary large value (&gt;1000) when word wrapping is disabled.  Which is infinite for most purposes.  Programs such as Vim which display information at the right-edge of the screen can do odd things as a result.  

&gt;  However, when the terminal is resized, more and more of the
&gt; text would move into a single line based on available space.

That seems like the best option.  Terminal output can be very, very long - much larger than a text file would usually be.  Reformatting might be somewhat slow in such cases.  

Incidentally - as a temporary solution you can save the output from Konsole to a text file via Scrollback -&gt; Save Output and then open it in any text editor which supports word-wrap off.  The Save Output dialog also provides an option to save the output in HTML if you want to preserve formatting information.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730109</commentid>
    <comment_count>26</comment_count>
      <attachid>32094</attachid>
    <who name="Kurt Hindenburg">khindenburg</who>
    <bug_when>2009-03-14 07:00:25 +0000</bug_when>
    <thetext>Created attachment 32094
Patch to remove wordwrap

I had to do a lot of manually editing but this patch will apply to 4.2 and to trunk.
There are some issues still, 1 is the vertical scrollbar position.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043039</commentid>
    <comment_count>27</comment_count>
    <who name="Marius Bjørnstad">pmb</who>
    <bug_when>2010-11-11 13:09:17 +0000</bug_when>
    <thetext>Hi, How can I enable this patch in Konsole 2.5 / KDE 4.5.1 ?

A lot of the bugs/wishes that are marked as duplicates of this one request a subtly different feature: that the terminal buffers long lines, but does word wrap(line wrap) as normal. When the terminal is resized, the terminal would re-flow the text, so that the whole (new) width is used for long lines in the existing output. Examples with this functionality are rxvt and the Mac terminal (the only thing i envy about my co-worker&apos;s mac).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1267450</commentid>
    <comment_count>28</comment_count>
    <who name="Kurt Hindenburg">khindenburg</who>
    <bug_when>2012-06-19 02:57:06 +0000</bug_when>
    <thetext>Is there still any interest in this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268130</commentid>
    <comment_count>29</comment_count>
    <who name="Rob Hasselbaum">rob</who>
    <bug_when>2012-06-20 13:29:14 +0000</bug_when>
    <thetext>Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269701</commentid>
    <comment_count>30</comment_count>
    <who name="Juergen Schwarz">Juergen.Schwarz</who>
    <bug_when>2012-06-25 11:36:02 +0000</bug_when>
    <thetext>Yes, definitely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278533</commentid>
    <comment_count>31</comment_count>
    <who name="Emil Sedgh">emilsedgh</who>
    <bug_when>2012-07-24 10:11:15 +0000</bug_when>
    <thetext>I would love to have this feature as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282019</commentid>
    <comment_count>32</comment_count>
    <who name="Marian Kyral">mkyral</who>
    <bug_when>2012-08-05 18:51:00 +0000</bug_when>
    <thetext>Me too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357129</commentid>
    <comment_count>33</comment_count>
    <who name="Paul McAuley">kde</who>
    <bug_when>2013-04-03 12:11:17 +0000</bug_when>
    <thetext>It would be good if bug 196998 could be implemented in conjunction with this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357200</commentid>
    <comment_count>34</comment_count>
    <who name="Juergen Schwarz">Juergen.Schwarz</who>
    <bug_when>2013-04-03 15:03:58 +0000</bug_when>
    <thetext>Yes, it should be implemented the way described by Paul in bug 196998 comment 11 (can I link to another bug&apos;s comment this way ?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772757</commentid>
    <comment_count>35</comment_count>
    <who name="Christoph Feck">cfeck</who>
    <bug_when>2018-08-19 05:09:13 +0000</bug_when>
    <thetext>*** Bug 397597 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772762</commentid>
    <comment_count>36</comment_count>
    <who name="cat22">erbenton</who>
    <bug_when>2018-08-19 06:53:36 +0000</bug_when>
    <thetext>This bug was filed in 2003 it is now 2018. 15 years!
Can someone either confirm this bug is going to be addressed or else plainly state it wont be fixed and why?
BTW - there is a w/o people can use but its clumsy:
alias wrapoff=&apos;echo -e &quot;\\e[?7l&quot;&apos;
alias wrapon=&apos;echo -e &quot;\\e[?7h&quot;&apos;
Its clumsy because it only affects future text it will not unwrap existing text.
I&apos;m mystified why there is such strong reluctance to address this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772870</commentid>
    <comment_count>37</comment_count>
    <who name="Egmont Koblinger">egmont</who>
    <bug_when>2018-08-19 17:38:57 +0000</bug_when>
    <thetext>You might want to see https://bugzilla.gnome.org/show_bug.cgi?id=769440 why gnome-terminal rejected this idea, and xterm.js followed too: https://github.com/xtermjs/xterm.js/issues/1617.

&gt; alias wrapoff=&apos;echo -e &quot;\\e[?7l&quot;&apos;

This causes characters to be chopped off permanently, hardly unlikely to be what anyone is looking for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772875</commentid>
    <comment_count>38</comment_count>
    <who name="Nate Graham">nate</who>
    <bug_when>2018-08-19 18:13:00 +0000</bug_when>
    <thetext>I concur; I&apos;m not sure this would actually be useful.

Instead, what might make more sense is to implement dynamic wrapping properly: Bug 196998</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2250403</commentid>
    <comment_count>39</comment_count>
      <attachid>161394</attachid>
    <who name="">tcanabrava</who>
    <bug_when>2023-09-03 22:31:04 +0000</bug_when>
    <thetext>Created attachment 161394
attachment-352116-0.html

There’s an option for that if you do t like word wrap. I’m on the phone now
so it’s hard to remember where, but it’s there.

On Sun, 3 Sep 2023 at 17:30 Kenneth Perry &lt;bugzilla_noreply@kde.org&gt; wrote:

&gt; https://bugs.kde.org/show_bug.cgi?id=62380
&gt;
&gt; Kenneth Perry &lt;thothonegan@gmail.com&gt; changed:
&gt;
&gt;            What    |Removed                     |Added
&gt;
&gt; ----------------------------------------------------------------------------
&gt;                  CC|                            |thothonegan@gmail.com
&gt;
&gt; --
&gt; You are receiving this mail because:
&gt; You are the assignee for the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2304787</commentid>
    <comment_count>40</comment_count>
    <who name="Kurt Hindenburg">khindenburg</who>
    <bug_when>2024-03-24 01:56:06 +0000</bug_when>
    <thetext>Let us know if this is still an issue in recent versions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2304802</commentid>
    <comment_count>41</comment_count>
    <who name="Mr BEEDELL Roke Julian Lockhart">4wy78uwh</who>
    <bug_when>2024-03-24 02:38:26 +0000</bug_when>
    <thetext>(In reply to Kurt Hindenburg from comment #40)

Per https://imgur.com/Ec2VlVr, I still don&apos;t see any way to disable word wrap in https://download.opensuse.org/repositories/openSUSE:/Factory/standard/x86_64/konsole-24.02.1-1.1.x86_64.rpm, so it remains an issue for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2306736</commentid>
    <comment_count>42</comment_count>
    <who name="cat22">erbenton</who>
    <bug_when>2024-03-29 12:08:35 +0000</bug_when>
    <thetext>There doesn&apos;t appear to have any horizontal scrollbar (or an way to enable one)  in konsole 24.02.0
If I have missed the option somehow please slap me and tell me where it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2311165</commentid>
    <comment_count>43</comment_count>
    <who name="Bug Janitor Service">bug-janitor</who>
    <bug_when>2024-04-13 03:47:55 +0000</bug_when>
    <thetext>Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least
15 days. Please provide the requested information as soon as
possible and set the bug status as REPORTED. Due to regular bug
tracker maintenance, if the bug is still in NEEDSINFO status with
no change in 30 days the bug will be closed as RESOLVED &gt; WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please
mark the bug as REPORTED so that the KDE team knows that the bug is
ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2314816</commentid>
    <comment_count>44</comment_count>
    <who name="Bug Janitor Service">bug-janitor</who>
    <bug_when>2024-04-28 03:46:06 +0000</bug_when>
    <thetext>This bug has been in NEEDSINFO status with no change for at least
30 days. The bug is now closed as RESOLVED &gt; WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

Thank you for helping us make KDE software even better for everyone!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24036</attachid>
            <date>2008-03-24 15:05:20 +0000</date>
            <delta_ts>2009-03-14 07:00:25 +0000</delta_ts>
            <desc>Add &apos;Enable Word Wrap&apos; option - V1</desc>
            <filename>disable_wordwrap_v1.patch</filename>
            <type>text/plain</type>
            <size>41274</size>
            <attacher name="Robert Knight">robertknight</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2Rlc2t0b3Avc2Vzc2lvbnVpLnJjIGIvZGVza3RvcC9zZXNzaW9udWkucmMK
aW5kZXggZjk0ODA0NC4uNTQ3ZTM2MiAxMDA2NDQKLS0tIGEvZGVza3RvcC9zZXNzaW9udWkucmMK
KysrIGIvZGVza3RvcC9zZXNzaW9udWkucmMKQEAgLTMyLDYgKzMyLDcgQEAKICAgICAgICAgICAg
IDxBY3Rpb24gbmFtZT0ibW9uaXRvci1hY3Rpdml0eSIgZ3JvdXA9InNlc3Npb24tdmlldy1vcGVy
YXRpb25zIiAvPgogICAgICAgICAgICAgPFNlcGFyYXRvciBncm91cD0ic2Vzc2lvbi12aWV3LW9w
ZXJhdGlvbnMiLz4KICAgICAgICAgICAgIDxBY3Rpb24gbmFtZT0iY2hhcmFjdGVyLWVuY29kaW5n
IiAgZ3JvdXA9InNlc3Npb24tdmlldy1vcGVyYXRpb25zIiAvPgorCQkJPEFjdGlvbiBuYW1lPSJl
bmFibGUtd29yZC13cmFwIiBncm91cD0ic2Vzc2lvbi12aWV3LW9wZXJhdGlvbnMiIC8+CiAgICAg
ICAgICAgICA8QWN0aW9uIG5hbWU9ImluY3JlYXNlLXRleHQtc2l6ZSIgIGdyb3VwPSJzZXNzaW9u
LXZpZXctb3BlcmF0aW9ucyIgLz4KICAgICAgICAgICAgIDxBY3Rpb24gbmFtZT0iZGVjcmVhc2Ut
dGV4dC1zaXplIiAgZ3JvdXA9InNlc3Npb24tdmlldy1vcGVyYXRpb25zIiAvPgogICAgICAgICA8
L01lbnU+CmRpZmYgLS1naXQgYS9zcmMvRW11bGF0aW9uLmNwcCBiL3NyYy9FbXVsYXRpb24uY3Bw
CmluZGV4IDJhYWRjZTkuLjY1MDVhNjIgMTAwNjQ0Ci0tLSBhL3NyYy9FbXVsYXRpb24uY3BwCisr
KyBiL3NyYy9FbXVsYXRpb24uY3BwCkBAIC02OCw3ICs2OCw4IEBAIEVtdWxhdGlvbjo6RW11bGF0
aW9uKCkgOgogICBfY29kZWMoMCksCiAgIF9kZWNvZGVyKDApLAogICBfa2V5VHJhbnNsYXRvcigw
KSwKLSAgX3VzZXNNb3VzZShmYWxzZSkKKyAgX3VzZXNNb3VzZShmYWxzZSksCisgIF93cmFwRW5h
YmxlZCh0cnVlKQogewogCiAgIC8vIGNyZWF0ZSBzY3JlZW5zIHdpdGggYSBkZWZhdWx0IHNpemUK
QEAgLTgzLDYgKzg0LDE5IEBAIEVtdWxhdGlvbjo6RW11bGF0aW9uKCkgOgogICBjb25uZWN0KCB0
aGlzICwgU0lHTkFMKHByb2dyYW1Vc2VzTW91c2VDaGFuZ2VkKGJvb2wpKSAsIAogICAgICAgICAg
ICBTTE9UKHVzZXNNb3VzZUNoYW5nZWQoYm9vbCkpICk7CiB9Cit2b2lkIEVtdWxhdGlvbjo6cmVm
b3JtYXQoKQoreworCV9zY3JlZW5bMF0tPnJlZm9ybWF0KCk7CisJX3NjcmVlblsxXS0+cmVmb3Jt
YXQoKTsKK30KK3ZvaWQgRW11bGF0aW9uOjpzZXRUZXh0V3JhcEVuYWJsZWQoYm9vbCBlbmFibGUp
IAoreyAKKwlfd3JhcEVuYWJsZWQgPSBlbmFibGU7CisKKwlfc2NyZWVuWzBdLT5zZXRXcmFwRW5h
YmxlZChlbmFibGUpOworCV9zY3JlZW5bMV0tPnNldFdyYXBFbmFibGVkKGVuYWJsZSk7Cit9Citi
b29sIEVtdWxhdGlvbjo6dGV4dFdyYXBFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gX3dyYXBFbmFi
bGVkOyB9CiAKIGJvb2wgRW11bGF0aW9uOjpwcm9ncmFtVXNlc01vdXNlKCkgY29uc3QKIHsKQEAg
LTQzMiw2ICs0NDYsMTAgQEAgdm9pZCBFbXVsYXRpb246OnNldEltYWdlU2l6ZShpbnQgbGluZXMs
IGludCBjb2x1bW5zKQogICBRX0FTU0VSVCggbGluZXMgPiAwICk7CiAgIFFfQVNTRVJUKCBjb2x1
bW5zID4gMCApOwogCisgIC8vIHdoZW4gdGV4dCB3cmFwcGluZyBpcyBlbmFibGVkLCB0aGUgc2Ny
ZWVuIGNhbiBvbmx5IGdldCB3aWRlcgorICBpZiAoIV93cmFwRW5hYmxlZCkgCisJICBjb2x1bW5z
ID0gcU1heChfc2NyZWVuWzBdLT5nZXRDb2x1bW5zKCksY29sdW1ucyk7CisKICAgX3NjcmVlblsw
XS0+cmVzaXplSW1hZ2UobGluZXMsY29sdW1ucyk7CiAgIF9zY3JlZW5bMV0tPnJlc2l6ZUltYWdl
KGxpbmVzLGNvbHVtbnMpOwogCmRpZmYgLS1naXQgYS9zcmMvRW11bGF0aW9uLmggYi9zcmMvRW11
bGF0aW9uLmgKaW5kZXggNzVkN2Q2NC4uMzY0YWM0MSAxMDA2NDQKLS0tIGEvc3JjL0VtdWxhdGlv
bi5oCisrKyBiL3NyYy9FbXVsYXRpb24uaApAQCAtMjE1LDYgKzIxNSwyMiBAQCBwdWJsaWM6CiAg
ICAqLwogICBib29sIHByb2dyYW1Vc2VzTW91c2UoKSBjb25zdDsKIAorICAvKiogCisgICAqIEVu
YWJsZXMgb3IgZGlzYWJsZXMgbGluZSB3cmFwcGluZy4gIElmIGxpbmUgd3JhcHBpbmcgaXMgZW5h
YmxlZCwgCisgICAqIHRoZSBlbXVsYXRpb24gd2lsbCBub3QgYWxsb3cgbGluZXMgdG8gYmVjb21l
IGxvbmdlciAKKyAgICoKKyAgICogQnkgZGVmYXVsdCwgbGluZSB3cmFwcGluZyBpcyBlbmFibGVk
LgorICAgKi8KKyAgdmlydHVhbCB2b2lkIHNldFRleHRXcmFwRW5hYmxlZChib29sIGVuYWJsZSk7
CisgIGJvb2wgdGV4dFdyYXBFbmFibGVkKCkgY29uc3Q7CisKKyAgLyoqIAorICAgKiBSZS1kb2Vz
IHRoZSB0ZXh0IGxheW91dCBpbiB0aGUgZGlzcGxheS4gIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBh
ZnRlcgorICAgKiBzZXRUZXh0V3JhcEVuYWJsZWQoKSBpcyBjaGFuZ2VkIGFuZCB0aGUgc2l6ZSBv
ZiB0aGUgZW11bGF0aW9uIGltYWdlIAorICAgKiBoYXMgYmVlbiB1cGRhdGVkLgorICAgKi8KKyAg
dm9pZCByZWZvcm1hdCgpOworCiBwdWJsaWMgc2xvdHM6IAogCiAgIC8qKiBDaGFuZ2UgdGhlIHNp
emUgb2YgdGhlIGVtdWxhdGlvbidzIGltYWdlICovCkBAIC00NTMsNiArNDY5LDcgQEAgcHJpdmF0
ZSBzbG90czoKIHByaXZhdGU6CiAKICAgYm9vbCBfdXNlc01vdXNlOworICBib29sIF93cmFwRW5h
YmxlZDsKICAgUVRpbWVyIF9idWxrVGltZXIxOwogICBRVGltZXIgX2J1bGtUaW1lcjI7CiAgIApk
aWZmIC0tZ2l0IGEvc3JjL1NjcmVlbi5jcHAgYi9zcmMvU2NyZWVuLmNwcAppbmRleCBkNDU2ZDY3
Li5jY2JhOTJiIDEwMDY0NAotLS0gYS9zcmMvU2NyZWVuLmNwcAorKysgYi9zcmMvU2NyZWVuLmNw
cApAQCAtODEsNyArODEsOCBAQCBTY3JlZW46OlNjcmVlbihpbnQgbCwgaW50IGMpCiAgICAgZWZf
ZmcoQ2hhcmFjdGVyQ29sb3IoKSksIGVmX2JnKENoYXJhY3RlckNvbG9yKCkpLCBlZl9yZSgwKSwK
ICAgICBzYV9jdVgoMCksIHNhX2N1WSgwKSwKICAgICBzYV9jdV9yZSgwKSwKLSAgICBsYXN0UG9z
KC0xKQorICAgIGxhc3RQb3MoLTEpLAorCWRpc2FibGVXcmFwKGZhbHNlKQogewogICBsaW5lUHJv
cGVydGllcy5yZXNpemUobGluZXMrMSk7CiAgIGZvciAoaW50IGk9MDtpPGxpbmVzKzE7aSsrKQpA
QCAtNTA5LDI2ICs1MTAsMjkgQEAgdm9pZCBTY3JlZW46OmVmZmVjdGl2ZVJlbmRpdGlvbigpCiAK
ICovCiAKLXZvaWQgU2NyZWVuOjpjb3B5RnJvbUhpc3RvcnkoQ2hhcmFjdGVyKiBkZXN0LCBpbnQg
c3RhcnRMaW5lLCBpbnQgY291bnQpIGNvbnN0Cit2b2lkIFNjcmVlbjo6Y29weUZyb21IaXN0b3J5
KENoYXJhY3RlciogZGVzdCwgaW50IHN0YXJ0TGluZSwgaW50IGxpbmVDb3VudCwKKwkJCQkJCQkg
aW50IHN0YXJ0Q29sdW1uLCBpbnQgY29sdW1uQ291bnQpIGNvbnN0CiB7Ci0gIFFfQVNTRVJUKCBz
dGFydExpbmUgPj0gMCAmJiBjb3VudCA+IDAgJiYgc3RhcnRMaW5lICsgY291bnQgPD0gaGlzdC0+
Z2V0TGluZXMoKSApOworICBRX0FTU0VSVCggc3RhcnRMaW5lID49IDAgJiYgbGluZUNvdW50ID4g
MCAmJiBzdGFydExpbmUgKyBsaW5lQ291bnQgPD0gaGlzdC0+Z2V0TGluZXMoKSApOwogCi0gIGZv
ciAoaW50IGxpbmUgPSBzdGFydExpbmU7IGxpbmUgPCBzdGFydExpbmUgKyBjb3VudDsgbGluZSsr
KSAKKyAgZm9yIChpbnQgbGluZSA9IHN0YXJ0TGluZTsgbGluZSA8IHN0YXJ0TGluZSArIGxpbmVD
b3VudDsgbGluZSsrKSAKICAgewotICAgIGNvbnN0IGludCBsZW5ndGggPSBxTWluKGNvbHVtbnMs
aGlzdC0+Z2V0TGluZUxlbihsaW5lKSk7Ci0gICAgY29uc3QgaW50IGRlc3RMaW5lT2Zmc2V0ICA9
IChsaW5lLXN0YXJ0TGluZSkqY29sdW1uczsKLQotICAgIGhpc3QtPmdldENlbGxzKGxpbmUsMCxs
ZW5ndGgsZGVzdCArIGRlc3RMaW5lT2Zmc2V0KTsKKyAgICBjb25zdCBpbnQgbGVuZ3RoID0gaGlz
dC0+Z2V0TGluZUxlbihsaW5lKTsgCisgICAgY29uc3QgaW50IGRlc3RMaW5lT2Zmc2V0ICA9IChs
aW5lLXN0YXJ0TGluZSkqY29sdW1uQ291bnQ7CisJCisJaW50IGNvcHlDb3VudCA9IHFCb3VuZCgw
LGxlbmd0aC1zdGFydENvbHVtbixjb2x1bW5Db3VudCk7CisgICAgCisJaGlzdC0+Z2V0Q2VsbHMo
bGluZSxzdGFydENvbHVtbixjb3B5Q291bnQsZGVzdCArIGRlc3RMaW5lT2Zmc2V0KTsKIAotICAg
IGZvciAoaW50IGNvbHVtbiA9IGxlbmd0aDsgY29sdW1uIDwgY29sdW1uczsgY29sdW1uKyspIAor
ICAgIGZvciAoaW50IGNvbHVtbiA9IGNvcHlDb3VudDsgY29sdW1uIDwgY29sdW1uQ291bnQ7IGNv
bHVtbisrKSAKIAkJZGVzdFtkZXN0TGluZU9mZnNldCtjb2x1bW5dID0gZGVmYXVsdENoYXI7CiAg
ICAgCiAJLy8gaW52ZXJ0IHNlbGVjdGVkIHRleHQKIAlpZiAoc2VsX2JlZ2luICE9LTEpCiAJewot
ICAgIAlmb3IgKGludCBjb2x1bW4gPSAwOyBjb2x1bW4gPCBjb2x1bW5zOyBjb2x1bW4rKykKKyAg
ICAJZm9yIChpbnQgY29sdW1uID0gMDsgY29sdW1uIDwgY29sdW1uQ291bnQ7IGNvbHVtbisrKQog
ICAgIAl7Ci0gICAgICAgIAlpZiAoaXNTZWxlY3RlZChjb2x1bW4sbGluZSkpIAorICAgICAgICAJ
aWYgKGlzU2VsZWN0ZWQoY29sdW1uK3N0YXJ0Q29sdW1uLGxpbmUpKSAKIAkJCXsKICAgICAgICAg
ICAJCXJldmVyc2VSZW5kaXRpb24oZGVzdFtkZXN0TGluZU9mZnNldCArIGNvbHVtbl0pOyAKICAg
ICAJCX0KQEAgLTUzNywxOSArNTQxLDIyIEBAIHZvaWQgU2NyZWVuOjpjb3B5RnJvbUhpc3Rvcnko
Q2hhcmFjdGVyKiBkZXN0LCBpbnQgc3RhcnRMaW5lLCBpbnQgY291bnQpIGNvbnN0CiAgIH0KIH0K
IAotdm9pZCBTY3JlZW46OmNvcHlGcm9tU2NyZWVuKENoYXJhY3RlciogZGVzdCAsIGludCBzdGFy
dExpbmUgLCBpbnQgY291bnQpIGNvbnN0Cit2b2lkIFNjcmVlbjo6Y29weUZyb21TY3JlZW4oQ2hh
cmFjdGVyKiBkZXN0ICwgaW50IHN0YXJ0TGluZSAsIGludCBsaW5lQ291bnQsIAorCQkJCQkJCWlu
dCBzdGFydENvbHVtbiwgaW50IGNvbHVtbkNvdW50KSBjb25zdAogewotCVFfQVNTRVJUKCBzdGFy
dExpbmUgPj0gMCAmJiBjb3VudCA+IDAgJiYgc3RhcnRMaW5lICsgY291bnQgPD0gbGluZXMgKTsK
KwlRX0FTU0VSVCggc3RhcnRMaW5lID49IDAgJiYgbGluZUNvdW50ID4gMCAmJiBzdGFydExpbmUg
KyBsaW5lQ291bnQgPD0gbGluZXMgKTsKKworCWludCBlbmRDb2x1bW4gPSBzdGFydENvbHVtbiAr
IGNvbHVtbkNvdW50IC0gMTsKIAotICAgIGZvciAoaW50IGxpbmUgPSBzdGFydExpbmU7IGxpbmUg
PCAoc3RhcnRMaW5lK2NvdW50KSA7IGxpbmUrKykKKyAgICBmb3IgKGludCBsaW5lID0gc3RhcnRM
aW5lOyBsaW5lIDwgKHN0YXJ0TGluZStsaW5lQ291bnQpIDsgbGluZSsrKQogICAgIHsKICAgICAg
ICBpbnQgc3JjTGluZVN0YXJ0SW5kZXggID0gbGluZSpjb2x1bW5zOwotCSAgIGludCBkZXN0TGlu
ZVN0YXJ0SW5kZXggPSAobGluZS1zdGFydExpbmUpKmNvbHVtbnM7CisJICAgaW50IGRlc3RMaW5l
U3RhcnRJbmRleCA9IChsaW5lLXN0YXJ0TGluZSkqY29sdW1uQ291bnQ7CiAKLSAgICAgICBmb3Ig
KGludCBjb2x1bW4gPSAwOyBjb2x1bW4gPCBjb2x1bW5zOyBjb2x1bW4rKykKKyAgICAgICBmb3Ig
KGludCBjb2x1bW4gPSBzdGFydENvbHVtbjsgY29sdW1uIDw9IGVuZENvbHVtbjsgY29sdW1uKysp
CiAgICAgICAgeyAKIAkJIGludCBzcmNJbmRleCA9IHNyY0xpbmVTdGFydEluZGV4ICsgY29sdW1u
OyAKLQkJIGludCBkZXN0SW5kZXggPSBkZXN0TGluZVN0YXJ0SW5kZXggKyBjb2x1bW47CisJCSBp
bnQgZGVzdEluZGV4ID0gZGVzdExpbmVTdGFydEluZGV4ICsgKGNvbHVtbi1zdGFydENvbHVtbik7
CiAKICAgICAgICAgIGRlc3RbZGVzdEluZGV4XSA9IHNjcmVlbkxpbmVzW3NyY0luZGV4L2NvbHVt
bnNdLnZhbHVlKHNyY0luZGV4JWNvbHVtbnMsZGVmYXVsdENoYXIpOwogCkBAIC01NjEsMjcgKzU2
OCwzMSBAQCB2b2lkIFNjcmVlbjo6Y29weUZyb21TY3JlZW4oQ2hhcmFjdGVyKiBkZXN0ICwgaW50
IHN0YXJ0TGluZSAsIGludCBjb3VudCkgY29uc3QKICAgICB9CiB9CiAKLXZvaWQgU2NyZWVuOjpn
ZXRJbWFnZSggQ2hhcmFjdGVyKiBkZXN0LCBpbnQgc2l6ZSwgaW50IHN0YXJ0TGluZSwgaW50IGVu
ZExpbmUgKSBjb25zdAordm9pZCBTY3JlZW46OmdldEltYWdlKCAJQ2hhcmFjdGVyKiBkZXN0LCBp
bnQgc2l6ZSwgCisJCQkJCQlpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSwKKwkJCQkJCWludCBz
dGFydENvbHVtbiwgaW50IGVuZENvbHVtbiApIGNvbnN0CiB7CiAgIFFfQVNTRVJUKCBzdGFydExp
bmUgPj0gMCApOyAKICAgUV9BU1NFUlQoIGVuZExpbmUgPj0gc3RhcnRMaW5lICYmIGVuZExpbmUg
PCBoaXN0LT5nZXRMaW5lcygpICsgbGluZXMgKTsKIAogICBjb25zdCBpbnQgbWVyZ2VkTGluZXMg
PSBlbmRMaW5lIC0gc3RhcnRMaW5lICsgMTsKKyAgY29uc3QgaW50IG1lcmdlZENvbHVtbnMgPSBl
bmRDb2x1bW4gLSBzdGFydENvbHVtbiArIDE7CiAKLSAgUV9BU1NFUlQoIHNpemUgPj0gbWVyZ2Vk
TGluZXMgKiBjb2x1bW5zICk7IAorICBRX0FTU0VSVCggc2l6ZSA+PSBtZXJnZWRMaW5lcyAqIG1l
cmdlZENvbHVtbnMgKTsgCiAKICAgY29uc3QgaW50IGxpbmVzSW5IaXN0b3J5QnVmZmVyID0gcUJv
dW5kKDAsaGlzdC0+Z2V0TGluZXMoKS1zdGFydExpbmUsbWVyZ2VkTGluZXMpOwogICBjb25zdCBp
bnQgbGluZXNJblNjcmVlbkJ1ZmZlciA9IG1lcmdlZExpbmVzIC0gbGluZXNJbkhpc3RvcnlCdWZm
ZXI7CiAKICAgLy8gY29weSBsaW5lcyBmcm9tIGhpc3RvcnkgYnVmZmVyCiAgIGlmIChsaW5lc0lu
SGlzdG9yeUJ1ZmZlciA+IDApCi0gIAljb3B5RnJvbUhpc3RvcnkoZGVzdCxzdGFydExpbmUsbGlu
ZXNJbkhpc3RvcnlCdWZmZXIpOyAKKyAgCWNvcHlGcm9tSGlzdG9yeShkZXN0LHN0YXJ0TGluZSxs
aW5lc0luSGlzdG9yeUJ1ZmZlcixzdGFydENvbHVtbixtZXJnZWRDb2x1bW5zKTsgCiAKICAgLy8g
Y29weSBsaW5lcyBmcm9tIHNjcmVlbiBidWZmZXIKICAgaWYgKGxpbmVzSW5TY3JlZW5CdWZmZXIg
PiAwKQotICAJY29weUZyb21TY3JlZW4oZGVzdCArIGxpbmVzSW5IaXN0b3J5QnVmZmVyKmNvbHVt
bnMsCisgIAljb3B5RnJvbVNjcmVlbihkZXN0ICsgbGluZXNJbkhpc3RvcnlCdWZmZXIqbWVyZ2Vk
Q29sdW1ucywKIAkJCQkgICBzdGFydExpbmUgKyBsaW5lc0luSGlzdG9yeUJ1ZmZlciAtIGhpc3Qt
PmdldExpbmVzKCksCi0JCQkJICAgbGluZXNJblNjcmVlbkJ1ZmZlcik7CisJCQkJICAgbGluZXNJ
blNjcmVlbkJ1ZmZlciwKKwkJCQkgICBzdGFydENvbHVtbiwgbWVyZ2VkQ29sdW1ucyk7CiAgCiAg
IC8vIGludmVydCBkaXNwbGF5IHdoZW4gaW4gc2NyZWVuIG1vZGUKICAgaWYgKGdldE1vZGUoTU9E
RV9TY3JlZW4pKQpAQCAtNTkxLDggKzYwMiw4IEBAIHZvaWQgU2NyZWVuOjpnZXRJbWFnZSggQ2hh
cmFjdGVyKiBkZXN0LCBpbnQgc2l6ZSwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUgKSBjCiAg
IH0KIAogICAvLyBtYXJrIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0
aW9uCi0gIGludCBjdXJzb3JJbmRleCA9IGxvYyhjdVgsIGN1WSArIGxpbmVzSW5IaXN0b3J5QnVm
ZmVyKTsKLSAgaWYoZ2V0TW9kZShNT0RFX0N1cnNvcikgJiYgY3Vyc29ySW5kZXggPCBjb2x1bW5z
Km1lcmdlZExpbmVzKQorICBpbnQgY3Vyc29ySW5kZXggPSBjdVgtc3RhcnRDb2x1bW4gKyAoY3VZ
ICsgbGluZXNJbkhpc3RvcnlCdWZmZXIpKm1lcmdlZENvbHVtbnM7CisgIGlmKGdldE1vZGUoTU9E
RV9DdXJzb3IpICYmIGN1cnNvckluZGV4IDwgbWVyZ2VkQ29sdW1ucyptZXJnZWRMaW5lcyAmJiBj
dVggPj0gc3RhcnRDb2x1bW4pCiAgICAgZGVzdFtjdXJzb3JJbmRleF0ucmVuZGl0aW9uIHw9IFJF
X0NVUlNPUjsKIH0KIApAQCAtNzU5LDcgKzc3MCw5IEBAIHZvaWQgU2NyZWVuOjpTaG93Q2hhcmFj
dGVyKHVuc2lnbmVkIHNob3J0IGMpCiAgICAgIHJldHVybjsKIAogICBpZiAoY3VYK3cgPiBjb2x1
bW5zKSB7Ci0gICAgaWYgKGdldE1vZGUoTU9ERV9XcmFwKSkgeworCWlmIChkaXNhYmxlV3JhcCkg
CisJICByZXNpemVJbWFnZShsaW5lcyxjdVgrdyk7CisgICAgZWxzZSBpZiAoZ2V0TW9kZShNT0RF
X1dyYXApKSB7CiAgICAgICBsaW5lUHJvcGVydGllc1tjdVldID0gKExpbmVQcm9wZXJ0eSkobGlu
ZVByb3BlcnRpZXNbY3VZXSB8IExJTkVfV1JBUFBFRCk7CiAgICAgICBOZXh0TGluZSgpOwogICAg
IH0KQEAgLTE1NzQsMyArMTU4Nyw5MiBAQCB2b2lkIFNjcmVlbjo6ZmlsbFdpdGhEZWZhdWx0Q2hh
cihDaGFyYWN0ZXIqIGRlc3QsIGludCBjb3VudCkKIAlmb3IgKGludCBpPTA7aTxjb3VudDtpKysp
CiAJCWRlc3RbaV0gPSBkZWZhdWx0Q2hhcjsKIH0KK3ZvaWQgU2NyZWVuOjpzZXRXcmFwRW5hYmxl
ZChib29sIGVuYWJsZSkKK3sKKwlkaXNhYmxlV3JhcCA9ICFlbmFibGU7Cit9Citib29sIFNjcmVl
bjo6d3JhcEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiAhZGlzYWJsZVdyYXA7IH0KKwordm9pZCBT
Y3JlZW46OnJlZm9ybWF0KCkKK3sKKwlTY3JlZW4qIHRlbXBTY3JlZW4gPSBuZXcgU2NyZWVuKGdl
dExpbmVzKCksZ2V0Q29sdW1ucygpKTsKKwl0ZW1wU2NyZWVuLT5kaXNhYmxlV3JhcCA9IGRpc2Fi
bGVXcmFwOworCXRlbXBTY3JlZW4tPnNldFNjcm9sbChnZXRTY3JvbGwoKSxmYWxzZSk7CisKKwlR
VmVjdG9yPENoYXJhY3Rlcj4gYnVmZmVyOworCisJLy8gY29weSBsaW5lcyBmcm9tIGhpc3Rvcnkg
dG8gdGVtcCBTY3JlZW4KKwlpbnQgaGlzdExpbmVzID0gaGlzdC0+Z2V0TGluZXMoKTsKKwlmb3Ig
KGludCBpPTA7aTxoaXN0TGluZXM7aSsrKQorCXsKKwkJaW50IGxpbmVTaXplID0gaGlzdC0+Z2V0
TGluZUxlbihpKTsKKworCQlpZiAoYnVmZmVyLnNpemUoKSA8IGxpbmVTaXplKQorCQkJYnVmZmVy
LnJlc2l6ZShsaW5lU2l6ZSk7CisKKwkJaGlzdC0+Z2V0Q2VsbHMoaSwwLGxpbmVTaXplLGJ1ZmZl
ci5kYXRhKCkpOworCisJCS8vIHRyaW1taW5nIHRyYWlsaW5nIHdoaXRlc3BhY2UgaXMgaW1wb3J0
YW50IHRvIHByZXZlbnQgY3JlYXRpb24KKwkJLy8gb2YgZXh0cmEgbGluZXMgd2hlbiByZWZvcm1h
dHRpbmcgZnJvbSBhbiB1bndyYXBwZWQgc2NyZWVuIHRvIGEgCisJCS8vIHdyYXBwZWQgc2NyZWVu
CisJCXdoaWxlIChsaW5lU2l6ZSA+IDAgJiYgYnVmZmVyW2xpbmVTaXplLTFdLmNoYXJhY3RlciA9
PSAnICcpCisJCQlsaW5lU2l6ZS0tOworCisJCWZvciAoaW50IGs9MDtrPGxpbmVTaXplO2srKykK
KwkJeworCQkJQ2hhcmFjdGVyJiBjaCA9IGJ1ZmZlcltrXTsKKworCQkJdGVtcFNjcmVlbi0+ZWZf
ZmcgPSBjaC5mb3JlZ3JvdW5kQ29sb3I7CisJCQl0ZW1wU2NyZWVuLT5lZl9iZyA9IGNoLmJhY2tn
cm91bmRDb2xvcjsKKwkJCXRlbXBTY3JlZW4tPmVmX3JlID0gY2gucmVuZGl0aW9uOworCQkJdGVt
cFNjcmVlbi0+U2hvd0NoYXJhY3RlcihjaC5jaGFyYWN0ZXIpOworCQl9CisKKwkJaWYgKCFoaXN0
LT5pc1dyYXBwZWRMaW5lKGkpKQorCQkJdGVtcFNjcmVlbi0+TmV4dExpbmUoKTsKKwl9CisKKwkv
LyBjb3B5IGxpbmVzIGZyb20gc2NyZWVuIHRvIHRlbXAgU2NyZWVuCisJZm9yIChpbnQgaT0wO2k8
Z2V0TGluZXMoKTtpKyspCisJeworCQlpbnQgbGluZVNpemUgPSBzY3JlZW5MaW5lc1tpXS5jb3Vu
dCgpOworCisJCS8vIChzZWUgY29tbWVudHMgYWJvdXQgd2hpdGVzcGFjZSB0cmltbWluZyBhYm92
ZSkKKwkJd2hpbGUgKGxpbmVTaXplID4gMCAmJiBzY3JlZW5MaW5lc1tpXVtsaW5lU2l6ZS0xXS5j
aGFyYWN0ZXIgPT0gJyAnKQorCQkJbGluZVNpemUtLTsKKworCQlpZiAoYnVmZmVyLnNpemUoKSA8
IGxpbmVTaXplKQorCQkJYnVmZmVyLnJlc2l6ZShsaW5lU2l6ZSk7CisKKwkJZm9yIChpbnQgaj0w
O2o8bGluZVNpemU7aisrKQorCQl7CisJCQlDaGFyYWN0ZXImIGNoID0gc2NyZWVuTGluZXNbaV1b
al07CisJCQl0ZW1wU2NyZWVuLT5lZl9mZyA9IGNoLmZvcmVncm91bmRDb2xvcjsKKwkJCXRlbXBT
Y3JlZW4tPmVmX2JnID0gY2guYmFja2dyb3VuZENvbG9yOworCQkJdGVtcFNjcmVlbi0+ZWZfcmUg
PSBjaC5yZW5kaXRpb247CisJCQl0ZW1wU2NyZWVuLT5TaG93Q2hhcmFjdGVyKGNoLmNoYXJhY3Rl
cik7CisJCX0KKworCQkvLyBkbyBub3QgbW92ZSB0byBhIG5ldyBsaW5lIGlmIHRoZSBjdXJyZW50
IGxpbmUgY29udGFpbnMgdGhlIGN1cnNvcgorCQkvLyB0byBhdm9pZCB0cmlnZ2VyaW5nIGEgcmUt
cHJpbnQgb2YgdGhlIGN1cnJlbnQgcHJvbXB0IG9uIGEgbmV3IGxpbmUKKwkJYm9vbCBpc0N1cnNv
ckxpbmUgPSBjdVkgPT0gaTsKKwkJaWYgKCFpc0N1cnNvckxpbmUgJiYgIShsaW5lUHJvcGVydGll
c1tpXSAmIExJTkVfV1JBUFBFRCkpCisJCQl0ZW1wU2NyZWVuLT5OZXh0TGluZSgpOworCX0KKwkK
KwkvLyBzd2FwIGhpc3RvcnkgYnVmZmVycyBhbmQgc2NyZWVuIGNvbnRlbnRzCisgICAgSGlzdG9y
eVNjcm9sbCogCW9sZEhpc3QgPSBoaXN0OworCUltYWdlTGluZSoJCW9sZFNjcmVlbkxpbmVzID0g
c2NyZWVuTGluZXM7IAorCisJaGlzdCA9IHRlbXBTY3JlZW4tPmhpc3Q7CisJdGVtcFNjcmVlbi0+
aGlzdCA9IG9sZEhpc3Q7CisJCisJc2NyZWVuTGluZXMgPSB0ZW1wU2NyZWVuLT5zY3JlZW5MaW5l
czsKKwl0ZW1wU2NyZWVuLT5zY3JlZW5MaW5lcyA9IG9sZFNjcmVlbkxpbmVzOworCisJbGluZVBy
b3BlcnRpZXMgPSB0ZW1wU2NyZWVuLT5saW5lUHJvcGVydGllczsKKworCWRlbGV0ZSB0ZW1wU2Ny
ZWVuOworfQorCisKZGlmZiAtLWdpdCBhL3NyYy9TY3JlZW4uaCBiL3NyYy9TY3JlZW4uaAppbmRl
eCAwMTJjZWQ1Li44ZTc5Zjc3IDEwMDY0NAotLS0gYS9zcmMvU2NyZWVuLmgKKysrIGIvc3JjL1Nj
cmVlbi5oCkBAIC0zNjQsOCArMzY0LDEyIEBAIHB1YmxpYzoKICAgICAgKiBAcGFyYW0gc2l6ZSBT
aXplIG9mIEBwIGRlc3QgaW4gQ2hhcmFjdGVycwogICAgICAqIEBwYXJhbSBzdGFydExpbmUgSW5k
ZXggb2YgZmlyc3QgbGluZSB0byBjb3B5CiAgICAgICogQHBhcmFtIGVuZExpbmUgSW5kZXggb2Yg
bGFzdCBsaW5lIHRvIGNvcHkKKwkgKiBAcGFyYW0gc3RhcnRDb2x1bW4gSW5kZXggb2YgZmlyc3Qg
Y29sdW1uIHRvIGNvcHkKKwkgKiBAcGFyYW0gZW5kQ29sdW1uIEluZGV4IG9mIGxhc3QgY29sdW1u
IHRvIGNvcHkKICAgICAgKi8KLSAgICB2b2lkIGdldEltYWdlKCBDaGFyYWN0ZXIqIGRlc3QgLCBp
bnQgc2l6ZSAsIGludCBzdGFydExpbmUgLCBpbnQgZW5kTGluZSApIGNvbnN0OworICAgIHZvaWQg
Z2V0SW1hZ2UoIENoYXJhY3RlciogZGVzdCAsIGludCBzaXplICwgCisJCQkJICAgaW50IHN0YXJ0
TGluZSAsIGludCBlbmRMaW5lLAorCQkJCSAgIGludCBzdGFydENvbHVtbiAsIGludCBlbmRDb2x1
bW4gKSBjb25zdDsKIAogICAgIC8qKiAKICAgICAgKiBSZXR1cm5zIHRoZSBhZGRpdGlvbmFsIGF0
dHJpYnV0ZXMgYXNzb2NpYXRlZCB3aXRoIGxpbmVzIGluIHRoZSBpbWFnZS4KQEAgLTUzMSw2ICs1
MzUsMjUgQEAgcHVibGljOgogICAgICAqLwogICAgIHZvaWQgcmVzZXREcm9wcGVkTGluZXMoKTsK
IAorCS8qKgorCSAqIFNldHMgd2hldGhlciBsaW5lIHdyYXBwaW5nIGlzIGVuYWJsZWQgaWYgTU9E
RV9XcmFwIGlzIG9uLgorCSAqIElmIGxpbmUgd3JhcHBpbmcgaXMgZGlzYWJsZWQsIGF0dGVtcHRz
IHRvIGFkZCBuZXcgY2hhcmFjdGVycyBhdCB0aGUgCisJICogZW5kIG9mIGEgbGluZSB3aWxsIHJl
c3VsdCBpbiB0aGUgaW1hZ2Ugc2l6ZSBiZWluZyBpbmNyZWFzZWQgdG8gYWNjb21vZGF0ZQorCSAq
IHRoZSBuZXcgY2hhcmFjdGVyLgorCSAqCisJICogTGluZSB3cmFwcGluZyBpcyBlbmFibGVkIGJ5
IGRlZmF1bHQuCisJICovCisJdm9pZCBzZXRXcmFwRW5hYmxlZChib29sIGVuYWJsZVdyYXApOwor
CS8qKiBTZWUgc2V0V3JhcEVuYWJsZWQoKSAqLworCWJvb2wgd3JhcEVuYWJsZWQoKSBjb25zdDsK
KworCS8qKiAKKwkgKiBSZWZvcm1hdHMgbGluZXMgb2YgdGV4dCBvbiB0aGUgc2NyZWVuLiAgVGhp
cyBzaG91bGQgYmUgY2FsbGVkCisJICogYWZ0ZXIgc2V0V3JhcEVuYWJsZWQoKSBpcyBjYWxsZWQg
YW5kIGFmdGVyIHRoZSBzY3JlZW4gc2l6ZSBoYXMgYmVlbgorCSAqIHVwZGF0ZWQuCisJICovCisJ
dm9pZCByZWZvcm1hdCgpOworCQogCS8qKiAKICAJICogRmlsbHMgdGhlIGJ1ZmZlciBAcCBkZXN0
IHdpdGggQHAgY291bnQgaW5zdGFuY2VzIG9mIHRoZSBkZWZhdWx0IChpZS4gYmxhbmspCiAgCSAq
IENoYXJhY3RlciBzdHlsZS4KQEAgLTU4MSwxMCArNjA0LDEyIEBAIHByaXZhdGU6CiAKIAkvLyBj
b3BpZXMgJ2NvdW50JyBsaW5lcyBmcm9tIHRoZSBzY3JlZW4gYnVmZmVyIGludG8gJ2Rlc3QnLAog
CS8vIHN0YXJ0aW5nIGZyb20gJ3N0YXJ0TGluZScsIHdoZXJlIDAgaXMgdGhlIGZpcnN0IGxpbmUg
aW4gdGhlIHNjcmVlbiBidWZmZXIKLQl2b2lkIGNvcHlGcm9tU2NyZWVuKENoYXJhY3RlciogZGVz
dCwgaW50IHN0YXJ0TGluZSwgaW50IGNvdW50KSBjb25zdDsKKwl2b2lkIGNvcHlGcm9tU2NyZWVu
KENoYXJhY3RlciogZGVzdCwgaW50IHN0YXJ0TGluZSwgaW50IGxpbmVDb3VudCwKKwkJCQkJCWlu
dCBzdGFydENvbHVtbiwgaW50IGNvbHVtbkNvdW50KSBjb25zdDsKIAkvLyBjb3BpZXMgJ2NvdW50
JyBsaW5lcyBmcm9tIHRoZSBoaXN0b3J5IGJ1ZmZlciBpbnRvICdkZXN0JywKIAkvLyBzdGFydGlu
ZyBmcm9tICdzdGFydExpbmUnLCB3aGVyZSAwIGlzIHRoZSBmaXJzdCBsaW5lIGluIHRoZSBoaXN0
b3J5Ci0Jdm9pZCBjb3B5RnJvbUhpc3RvcnkoQ2hhcmFjdGVyKiBkZXN0LCBpbnQgc3RhcnRMaW5l
LCBpbnQgY291bnQpIGNvbnN0OworCXZvaWQgY29weUZyb21IaXN0b3J5KENoYXJhY3RlciogZGVz
dCwgaW50IHN0YXJ0TGluZSwgaW50IGxpbmVDb3VudCwKKwkJCQkJCSBpbnQgc3RhcnRDb2x1bW4s
IGludCBjb2x1bW5Db3VudCkgY29uc3Q7CiAKIAogICAgIC8vIHNjcmVlbiBpbWFnZSAtLS0tLS0t
LS0tLS0tLS0tCkBAIC02NTUsNiArNjgwLDggQEAgcHJpdmF0ZToKICAgICAvLyBtb2RlcwogICAg
IFNjcmVlblBhcm0gc2F2ZVBhcm07CiAKKwlib29sIGRpc2FibGVXcmFwOworCiAgICAgc3RhdGlj
IENoYXJhY3RlciBkZWZhdWx0Q2hhcjsKIH07CiAKZGlmZiAtLWdpdCBhL3NyYy9TY3JlZW5XaW5k
b3cuY3BwIGIvc3JjL1NjcmVlbldpbmRvdy5jcHAKaW5kZXggMzQ0MDFlZi4uYTY0YjBhMCAxMDA2
NDQKLS0tIGEvc3JjL1NjcmVlbldpbmRvdy5jcHAKKysrIGIvc3JjL1NjcmVlbldpbmRvdy5jcHAK
QEAgLTM0LDcgKzM0LDkgQEAgU2NyZWVuV2luZG93OjpTY3JlZW5XaW5kb3coUU9iamVjdCogcGFy
ZW50KQogCSwgX3dpbmRvd0J1ZmZlclNpemUoMCkKIAksIF9idWZmZXJOZWVkc1VwZGF0ZSh0cnVl
KQogCSwgX3dpbmRvd0xpbmVzKDEpCisJLCBfd2luZG93Q29sdW1ucygxKQogICAgICwgX2N1cnJl
bnRMaW5lKDApCisJLCBfY3VycmVudENvbHVtbigwKQogICAgICwgX3RyYWNrT3V0cHV0KHRydWUp
CiAgICAgLCBfc2Nyb2xsQ291bnQoMCkKIHsKQEAgLTcxLDcgKzczLDggQEAgQ2hhcmFjdGVyKiBT
Y3JlZW5XaW5kb3c6OmdldEltYWdlKCkKIAkJcmV0dXJuIF93aW5kb3dCdWZmZXI7CiAgCiAJX3Nj
cmVlbi0+Z2V0SW1hZ2UoX3dpbmRvd0J1ZmZlcixzaXplLAotCQkJCQkgIGN1cnJlbnRMaW5lKCks
ZW5kV2luZG93TGluZSgpKTsKKwkJCQkJICBjdXJyZW50TGluZSgpLGVuZFdpbmRvd0xpbmUoKSwK
KwkJCQkJICBjdXJyZW50Q29sdW1uKCksZW5kV2luZG93Q29sdW1uKCkpOwogCiAJLy8gdGhpcyB3
aW5kb3cgbWF5IGxvb2sgYmV5b25kIHRoZSBlbmQgb2YgdGhlIHNjcmVlbiwgaW4gd2hpY2ggCiAJ
Ly8gY2FzZSB0aGVyZSB3aWxsIGJlIGFuIHVudXNlZCBhcmVhIHdoaWNoIG5lZWRzIHRvIGJlIGZp
bGxlZApAQCAtMTA1LDYgKzEwOCwxMSBAQCBpbnQgU2NyZWVuV2luZG93OjplbmRXaW5kb3dMaW5l
KCkgY29uc3QKIAlyZXR1cm4gcU1pbihjdXJyZW50TGluZSgpICsgd2luZG93TGluZXMoKSAtIDEs
CiAJCQkJbGluZUNvdW50KCkgLSAxKTsKIH0KK2ludCBTY3JlZW5XaW5kb3c6OmVuZFdpbmRvd0Nv
bHVtbigpIGNvbnN0IAoreworCXJldHVybiBxTWluKGN1cnJlbnRDb2x1bW4oKSArIHdpbmRvd0Nv
bHVtbnMoKSAtIDEsCisJCQkJY29sdW1uQ291bnQoKSAtIDEpOworfQogUVZlY3RvcjxMaW5lUHJv
cGVydHk+IFNjcmVlbldpbmRvdzo6Z2V0TGluZVByb3BlcnRpZXMoKQogewogICAgIFFWZWN0b3I8
TGluZVByb3BlcnR5PiByZXN1bHQgPSBfc2NyZWVuLT5nZXRMaW5lUHJvcGVydGllcyhjdXJyZW50
TGluZSgpLGVuZFdpbmRvd0xpbmUoKSk7CkBAIC0xMjQsMTUgKzEzMiwxOCBAQCB2b2lkIFNjcmVl
bldpbmRvdzo6Z2V0U2VsZWN0aW9uU3RhcnQoIGludCYgY29sdW1uICwgaW50JiBsaW5lICkKIHsK
ICAgICBfc2NyZWVuLT5nZXRTZWxlY3Rpb25TdGFydChjb2x1bW4sbGluZSk7CiAgICAgbGluZSAt
PSBjdXJyZW50TGluZSgpOworCWNvbHVtbiAtPSBjdXJyZW50Q29sdW1uKCk7CiB9CiB2b2lkIFNj
cmVlbldpbmRvdzo6Z2V0U2VsZWN0aW9uRW5kKCBpbnQmIGNvbHVtbiAsIGludCYgbGluZSApCiB7
CiAgICAgX3NjcmVlbi0+Z2V0U2VsZWN0aW9uRW5kKGNvbHVtbixsaW5lKTsKICAgICBsaW5lIC09
IGN1cnJlbnRMaW5lKCk7CisJY29sdW1uIC09IGN1cnJlbnRDb2x1bW4oKTsKIH0KIHZvaWQgU2Ny
ZWVuV2luZG93OjpzZXRTZWxlY3Rpb25TdGFydCggaW50IGNvbHVtbiAsIGludCBsaW5lICwgYm9v
bCBjb2x1bW5Nb2RlICkKIHsKLSAgICBfc2NyZWVuLT5zZXRTZWxlY3Rpb25TdGFydCggY29sdW1u
ICwgcU1pbihsaW5lICsgY3VycmVudExpbmUoKSxlbmRXaW5kb3dMaW5lKCkpICAsIGNvbHVtbk1v
ZGUpOworICAgIF9zY3JlZW4tPnNldFNlbGVjdGlvblN0YXJ0KCBjb2x1bW4gKyBjdXJyZW50Q29s
dW1uKCkgLCAKKwkJCQkJcU1pbihsaW5lICsgY3VycmVudExpbmUoKSxlbmRXaW5kb3dMaW5lKCkp
ICAsIGNvbHVtbk1vZGUpOwogCQogCV9idWZmZXJOZWVkc1VwZGF0ZSA9IHRydWU7CiAgICAgZW1p
dCBzZWxlY3Rpb25DaGFuZ2VkKCk7CkBAIC0xNDAsNyArMTUxLDcgQEAgdm9pZCBTY3JlZW5XaW5k
b3c6OnNldFNlbGVjdGlvblN0YXJ0KCBpbnQgY29sdW1uICwgaW50IGxpbmUgLCBib29sIGNvbHVt
bk1vZGUgKQogCiB2b2lkIFNjcmVlbldpbmRvdzo6c2V0U2VsZWN0aW9uRW5kKCBpbnQgY29sdW1u
ICwgaW50IGxpbmUgKQogewotICAgIF9zY3JlZW4tPnNldFNlbGVjdGlvbkVuZCggY29sdW1uICwg
cU1pbihsaW5lICsgY3VycmVudExpbmUoKSxlbmRXaW5kb3dMaW5lKCkpICk7CisgICAgX3NjcmVl
bi0+c2V0U2VsZWN0aW9uRW5kKCBjb2x1bW4gKyBjdXJyZW50Q29sdW1uKCkgLCBxTWluKGxpbmUg
KyBjdXJyZW50TGluZSgpLGVuZFdpbmRvd0xpbmUoKSkgKTsKIAogCV9idWZmZXJOZWVkc1VwZGF0
ZSA9IHRydWU7CiAgICAgZW1pdCBzZWxlY3Rpb25DaGFuZ2VkKCk7CkBAIC0xNDgsNyArMTU5LDcg
QEAgdm9pZCBTY3JlZW5XaW5kb3c6OnNldFNlbGVjdGlvbkVuZCggaW50IGNvbHVtbiAsIGludCBs
aW5lICkKIAogYm9vbCBTY3JlZW5XaW5kb3c6OmlzU2VsZWN0ZWQoIGludCBjb2x1bW4gLCBpbnQg
bGluZSApCiB7Ci0gICAgcmV0dXJuIF9zY3JlZW4tPmlzU2VsZWN0ZWQoIGNvbHVtbiAsIHFNaW4o
bGluZSArIGN1cnJlbnRMaW5lKCksZW5kV2luZG93TGluZSgpKSApOworICAgIHJldHVybiBfc2Ny
ZWVuLT5pc1NlbGVjdGVkKCBjb2x1bW4gKyBjdXJyZW50Q29sdW1uKCkgLCBxTWluKGxpbmUgKyBj
dXJyZW50TGluZSgpLGVuZFdpbmRvd0xpbmUoKSkgKTsKIH0KIAogdm9pZCBTY3JlZW5XaW5kb3c6
OmNsZWFyU2VsZWN0aW9uKCkKQEAgLTE2Myw2ICsxNzQsMTEgQEAgdm9pZCBTY3JlZW5XaW5kb3c6
OnNldFdpbmRvd0xpbmVzKGludCBsaW5lcykKIAlRX0FTU0VSVChsaW5lcyA+IDApOwogCV93aW5k
b3dMaW5lcyA9IGxpbmVzOwogfQordm9pZCBTY3JlZW5XaW5kb3c6OnNldFdpbmRvd0NvbHVtbnMo
aW50IGNvbHVtbnMpCit7CisJUV9BU1NFUlQoY29sdW1ucyA+IDApOworCV93aW5kb3dDb2x1bW5z
ID0gY29sdW1uczsKK30KIGludCBTY3JlZW5XaW5kb3c6OndpbmRvd0xpbmVzKCkgY29uc3QKIHsK
IAlyZXR1cm4gX3dpbmRvd0xpbmVzOwkJCkBAIC0xNzAsNyArMTg2LDcgQEAgaW50IFNjcmVlbldp
bmRvdzo6d2luZG93TGluZXMoKSBjb25zdAogCiBpbnQgU2NyZWVuV2luZG93Ojp3aW5kb3dDb2x1
bW5zKCkgY29uc3QKIHsKLSAgICByZXR1cm4gX3NjcmVlbi0+Z2V0Q29sdW1ucygpOworICAgIHJl
dHVybiBfd2luZG93Q29sdW1uczsKIH0KIAogaW50IFNjcmVlbldpbmRvdzo6bGluZUNvdW50KCkg
Y29uc3QKQEAgLTE4Nyw3ICsyMDMsNyBAQCBRUG9pbnQgU2NyZWVuV2luZG93OjpjdXJzb3JQb3Np
dGlvbigpIGNvbnN0CiB7CiAgICAgUVBvaW50IHBvc2l0aW9uOwogICAgIAotICAgIHBvc2l0aW9u
LnNldFgoIF9zY3JlZW4tPmdldEN1cnNvclgoKSApOworICAgIHBvc2l0aW9uLnNldFgoIHFNYXgo
MCxfc2NyZWVuLT5nZXRDdXJzb3JYKCktY3VycmVudENvbHVtbigpKSApOwogICAgIHBvc2l0aW9u
LnNldFkoIF9zY3JlZW4tPmdldEN1cnNvclkoKSApOwogCiAgICAgcmV0dXJuIHBvc2l0aW9uOyAK
QEAgLTE5NywxNiArMjEzLDE5IEBAIGludCBTY3JlZW5XaW5kb3c6OmN1cnJlbnRMaW5lKCkgY29u
c3QKIHsKICAgICByZXR1cm4gcUJvdW5kKDAsX2N1cnJlbnRMaW5lLGxpbmVDb3VudCgpLXdpbmRv
d0xpbmVzKCkpOwogfQotCitpbnQgU2NyZWVuV2luZG93OjpjdXJyZW50Q29sdW1uKCkgY29uc3QK
K3sKKwlyZXR1cm4gcUJvdW5kKDAsX2N1cnJlbnRDb2x1bW4sY29sdW1uQ291bnQoKS13aW5kb3dD
b2x1bW5zKCkpOworfQogdm9pZCBTY3JlZW5XaW5kb3c6OnNjcm9sbEJ5KCBSZWxhdGl2ZVNjcm9s
bE1vZGUgbW9kZSAsIGludCBhbW91bnQgKQogewogICAgIGlmICggbW9kZSA9PSBTY3JvbGxMaW5l
cyApCiAgICAgewotICAgICAgICBzY3JvbGxUbyggY3VycmVudExpbmUoKSArIGFtb3VudCApOwor
ICAgICAgICBzY3JvbGxUbyggY3VycmVudExpbmUoKSArIGFtb3VudCAsIF9jdXJyZW50Q29sdW1u
ICk7CiAgICAgfQogICAgIGVsc2UgaWYgKCBtb2RlID09IFNjcm9sbFBhZ2VzICkKICAgICB7Ci0g
ICAgICAgIHNjcm9sbFRvKCBjdXJyZW50TGluZSgpICsgYW1vdW50ICogKCB3aW5kb3dMaW5lcygp
IC8gMiApICk7IAorICAgICAgICBzY3JvbGxUbyggY3VycmVudExpbmUoKSArIGFtb3VudCAqICgg
d2luZG93TGluZXMoKSAvIDIgKSAsIF9jdXJyZW50Q29sdW1uICk7IAogICAgIH0KIH0KIApAQCAt
MjE1LDcgKzIzNCw3IEBAIGJvb2wgU2NyZWVuV2luZG93OjphdEVuZE9mT3V0cHV0KCkgY29uc3QK
ICAgICByZXR1cm4gY3VycmVudExpbmUoKSA9PSAobGluZUNvdW50KCktd2luZG93TGluZXMoKSk7
CiB9CiAKLXZvaWQgU2NyZWVuV2luZG93OjpzY3JvbGxUbyggaW50IGxpbmUgKQordm9pZCBTY3Jl
ZW5XaW5kb3c6OnNjcm9sbFRvTGluZShpbnQgbGluZSkKIHsKIAlpbnQgbWF4Q3VycmVudExpbmVO
dW1iZXIgPSBsaW5lQ291bnQoKSAtIHdpbmRvd0xpbmVzKCk7CiAJbGluZSA9IHFCb3VuZCgwLGxp
bmUsbWF4Q3VycmVudExpbmVOdW1iZXIpOwpAQCAtMjI4LDggKzI0NywyMSBAQCB2b2lkIFNjcmVl
bldpbmRvdzo6c2Nyb2xsVG8oIGludCBsaW5lICkKICAgICBfc2Nyb2xsQ291bnQgKz0gZGVsdGE7
CiAKIAlfYnVmZmVyTmVlZHNVcGRhdGUgPSB0cnVlOworfQordm9pZCBTY3JlZW5XaW5kb3c6OnNj
cm9sbFRvKCBpbnQgbGluZSAsIGludCBjb2x1bW4gKQoreworCXNjcm9sbFRvTGluZShsaW5lKTsK
KwlzY3JvbGxUb0NvbHVtbihjb2x1bW4pOworICAgIAorCWVtaXQgc2Nyb2xsZWQoX2N1cnJlbnRM
aW5lLF9jdXJyZW50Q29sdW1uKTsKK30KK3ZvaWQgU2NyZWVuV2luZG93OjpzY3JvbGxUb0NvbHVt
biggaW50IGNvbHVtbiApCit7CisJaW50IG1heEN1cnJlbnRDb2x1bW5OdW1iZXIgPSBjb2x1bW5D
b3VudCgpIC0gd2luZG93Q29sdW1ucygpOworCWNvbHVtbiA9IHFCb3VuZCgwLGNvbHVtbixtYXhD
dXJyZW50Q29sdW1uTnVtYmVyKTsKIAotICAgIGVtaXQgc2Nyb2xsZWQoX2N1cnJlbnRMaW5lKTsK
KwlfY3VycmVudENvbHVtbiA9IGNvbHVtbjsKKwlfYnVmZmVyTmVlZHNVcGRhdGUgPSB0cnVlOwog
fQogCiB2b2lkIFNjcmVlbldpbmRvdzo6c2V0VHJhY2tPdXRwdXQoYm9vbCB0cmFja091dHB1dCkK
ZGlmZiAtLWdpdCBhL3NyYy9TY3JlZW5XaW5kb3cuaCBiL3NyYy9TY3JlZW5XaW5kb3cuaAppbmRl
eCA5Y2ZjNDlkLi45MDdlMDBlIDEwMDY0NAotLS0gYS9zcmMvU2NyZWVuV2luZG93LmgKKysrIGIv
c3JjL1NjcmVlbldpbmRvdy5oCkBAIC0xNDQsNiArMTQ0LDggQEAgcHVibGljOgogCXZvaWQgc2V0
V2luZG93TGluZXMoaW50IGxpbmVzKTsKICAgICAvKiogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGxp
bmVzIGluIHRoZSB3aW5kb3cgKi8KICAgICBpbnQgd2luZG93TGluZXMoKSBjb25zdDsKKwkvKiog
U2V0cyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIHdpbmRvdyAqLworCXZvaWQgc2V0V2lu
ZG93Q29sdW1ucyhpbnQgY29sdW1ucyk7CiAgICAgLyoqIFJldHVybnMgdGhlIG51bWJlciBvZiBj
b2x1bW5zIGluIHRoZSB3aW5kb3cgKi8KICAgICBpbnQgd2luZG93Q29sdW1ucygpIGNvbnN0Owog
ICAgIApAQCAtMTU0LDYgKzE1Niw4IEBAIHB1YmxpYzoKIAogICAgIC8qKiBSZXR1cm5zIHRoZSBp
bmRleCBvZiB0aGUgbGluZSB3aGljaCBpcyBjdXJyZW50bHkgYXQgdGhlIHRvcCBvZiB0aGlzIHdp
bmRvdyAqLwogICAgIGludCBjdXJyZW50TGluZSgpIGNvbnN0OworCS8qKiBSZXR1cm5zIHRoZSBp
bmRleCBvZiB0aGUgY29sdW1uIHdoaWNoIGlzIGN1cnJlbnRseSBhdCB0aGUgbGVmdCBlZGdlIG9m
IHRoaXMgd2luZG93ICovCisJaW50IGN1cnJlbnRDb2x1bW4oKSBjb25zdDsKIAogICAgIC8qKiAK
ICAgICAgKiBSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgY3Vyc29yIApAQCAtMTY3LDggKzE3
MSwxMSBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgYm9vbCBhdEVuZE9mT3V0cHV0KCkgY29uc3Q7
CiAKLSAgICAvKiogU2Nyb2xscyB0aGUgd2luZG93IHNvIHRoYXQgQHAgbGluZSBpcyBhdCB0aGUg
dG9wIG9mIHRoZSB3aW5kb3cgKi8KLSAgICB2b2lkIHNjcm9sbFRvKCBpbnQgbGluZSApOworICAg
IC8qKiAKKwkgKiBTY3JvbGxzIHRoZSB3aW5kb3cgc28gdGhhdCBAcCBsaW5lIGlzIGF0IHRoZSB0
b3Agb2YgdGhlIHdpbmRvdyBhbmQKKwkgKiBAcCBjb2x1bW4gaXMgYXQgdGhlIGxlZnQgZWRnZSBv
ZiB0aGUgd2luZG93LiAKKwkgKi8KKyAgICB2b2lkIHNjcm9sbFRvKCBpbnQgbGluZSAsIGludCBj
b2x1bW4gKTsKIAogICAgIGVudW0gUmVsYXRpdmVTY3JvbGxNb2RlCiAgICAgewpAQCAtMjI2LDgg
KzIzMyw5IEBAIHNpZ25hbHM6CiAgICAgICogRW1pdHRlZCB3aGVuIHRoZSBzY3JlZW4gd2luZG93
IGlzIHNjcm9sbGVkIHRvIGEgZGlmZmVyZW50IHBvc2l0aW9uLgogICAgICAqIAogICAgICAqIEBw
YXJhbSBsaW5lIFRoZSBsaW5lIHdoaWNoIGlzIG5vdyBhdCB0aGUgdG9wIG9mIHRoZSB3aW5kb3cu
CisJICogQHBhcmFtIGNvbHVtbiBUaGUgY29sdW1uIHdoaWNoIGlzIG5vdyBhdCB0aGUgbGVmdCBl
ZGdlIG9mIHRoZSB3aW5kb3cuCiAgICAgICovCi0gICAgdm9pZCBzY3JvbGxlZChpbnQgbGluZSk7
CisgICAgdm9pZCBzY3JvbGxlZChpbnQgbGluZSAsIGludCBjb2x1bW4pOwogCiAgICAgLyoqCiAg
ICAgICogRW1pdHRlZCB3aGVuIHRoZSBzZWxlY3Rpb24gaXMgY2hhbmdlZC4KQEAgLTIzNiw3ICsy
NDQsMTAgQEAgc2lnbmFsczoKIAogcHJpdmF0ZToKIAlpbnQgZW5kV2luZG93TGluZSgpIGNvbnN0
OworCWludCBlbmRXaW5kb3dDb2x1bW4oKSBjb25zdDsKIAl2b2lkIGZpbGxVbnVzZWRBcmVhKCk7
CisJdm9pZCBzY3JvbGxUb0xpbmUoaW50IGxpbmUpOworCXZvaWQgc2Nyb2xsVG9Db2x1bW4oaW50
IGNvbHVtbik7CiAKICAgICBTY3JlZW4qIF9zY3JlZW47IC8vIHNlZSBzZXRTY3JlZW4oKSAsIHNj
cmVlbigpCiAJQ2hhcmFjdGVyKiBfd2luZG93QnVmZmVyOwpAQCAtMjQ0LDcgKzI1NSw5IEBAIHBy
aXZhdGU6CiAJYm9vbCBfYnVmZmVyTmVlZHNVcGRhdGU7CiAKIAlpbnQgIF93aW5kb3dMaW5lczsK
KwlpbnQgIF93aW5kb3dDb2x1bW5zOwogICAgIGludCAgX2N1cnJlbnRMaW5lOyAvLyBzZWUgc2Ny
b2xsVG8oKSAsIGN1cnJlbnRMaW5lKCkKKwlpbnQgIF9jdXJyZW50Q29sdW1uOyAvLyBzZWUgc2Ny
b2xsVG8oKSAsIGN1cnJlbnRDb2x1bW4oKQogICAgIGJvb2wgX3RyYWNrT3V0cHV0OyAvLyBzZWUg
c2V0VHJhY2tPdXRwdXQoKSAsIHRyYWNrT3V0cHV0KCkgCiAgICAgaW50ICBfc2Nyb2xsQ291bnQ7
IC8vIGNvdW50IG9mIGxpbmVzIHdoaWNoIHRoZSB3aW5kb3cgaGFzIGJlZW4gc2Nyb2xsZWQgYnkg
c2luY2UKICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGxhc3QgY2FsbCB0byByZXNldFNj
cm9sbENvdW50KCkKZGlmZiAtLWdpdCBhL3NyYy9TZXNzaW9uLmNwcCBiL3NyYy9TZXNzaW9uLmNw
cAppbmRleCAwZGI2ZTU4Li4zN2VhNzQ0IDEwMDY0NAotLS0gYS9zcmMvU2Vzc2lvbi5jcHAKKysr
IGIvc3JjL1Nlc3Npb24uY3BwCkBAIC0xMDUsOSArMTA1LDggQEAgU2Vzc2lvbjo6U2Vzc2lvbigp
IDoKICAgICAgICAgICAgdGhpcywgU0lHTkFMKCBjaGFuZ2VUYWJUZXh0Q29sb3JSZXF1ZXN0KCBp
bnQgKSApICk7CiAgICAgY29ubmVjdCggX2VtdWxhdGlvbiwgU0lHTkFMKHByb2ZpbGVDaGFuZ2VD
b21tYW5kUmVjZWl2ZWQoY29uc3QgUVN0cmluZyYpKSwKICAgICAgICAgICAgdGhpcywgU0lHTkFM
KCBwcm9maWxlQ2hhbmdlQ29tbWFuZFJlY2VpdmVkKGNvbnN0IFFTdHJpbmcmKSkgKTsKLSAgICAv
LyBUT0RPCi0gICAgLy8gY29ubmVjdCggX2VtdWxhdGlvbixTSUdOQUwoaW1hZ2VTaXplQ2hhbmdl
ZChpbnQsaW50KSkgLCB0aGlzICwKLSAgICAvLyAgICAgICAgU0xPVChvbkVtdWxhdGlvblNpemVD
aGFuZ2UoaW50LGludCkpICk7CisgICAgY29ubmVjdCggX2VtdWxhdGlvbixTSUdOQUwoaW1hZ2VT
aXplQ2hhbmdlZChpbnQsaW50KSkgLCB0aGlzICwKKyAgICAgICAgICAgIFNMT1Qob25FbXVsYXRp
b25TaXplQ2hhbmdlKGludCxpbnQpKSApOwogCiAgICAgLy9jb25uZWN0IHRlbGV0eXBlIHRvIGVt
dWxhdGlvbiBiYWNrZW5kCiAgICAgX3NoZWxsUHJvY2Vzcy0+c2V0VXRmOE1vZGUoX2VtdWxhdGlv
bi0+dXRmOCgpKTsKQEAgLTUyOCw5ICs1MjcsNDIgQEAgdm9pZCBTZXNzaW9uOjpvblZpZXdTaXpl
Q2hhbmdlKGludCAvKmhlaWdodCovLCBpbnQgLyp3aWR0aCovKQogewogICB1cGRhdGVUZXJtaW5h
bFNpemUoKTsKIH0KK3ZvaWQgU2Vzc2lvbjo6c2V0V3JhcEVuYWJsZWQoYm9vbCB3cmFwKQorewor
CV9lbXVsYXRpb24tPnNldFRleHRXcmFwRW5hYmxlZCh3cmFwKTsKKwkKKwlpZiAod3JhcCkKKwl7
CisJCS8vIHVwZGF0ZSB0ZXJtaW5hbCBzaXplIHRvIHJlZmxlY3QgY3VycmVudCB2aWV3cworCQl1
cGRhdGVUZXJtaW5hbFNpemUoKTsKKwl9CisJZWxzZQorCXsKKwkJLy8gc2V0IHRoZSB3aW5kb3cg
c2l6ZSB0byBhIGxhcmdlIHZhbHVlIHdoaWNoIGNhbiBiZSBjb25zaWRlcmVkIGluZmluaXRlCisJ
CS8vIGZvciBtb3N0IGludGVyYWN0aXZlIHByb2dyYW1zLiAgCisJCS8vCisJCS8vIElTU1VFOiAg
VGhpcyB3aWxsIGNhdXNlIHRoZSBTY3JlZW5XaW5kb3cgY2xhc3MgdG8gYWxsb2NhdGUgbXVjaCBs
YXJnZXIgYnVmZmVycworCQkvLyB0aGFuIG5lY2Vzc2FyeSB0byBob2xkIHRoZSBzY3JlZW4gaW1h
Z2Ugd2hlbiBjb3B5aW5nIGZyb20gdGhlIFNjcmVlbiB0byB0aGUgCisJCS8vIFRlcm1pbmFsRGlz
cGxheS4gIFRoZSBTY3JlZW4gLyBTY3JlZW5XaW5kb3cgY2xhc3NlcyBuZWVkIHRvIGJlIG1vZGlm
aWVkIHRvIG9ubHkKKwkJLy8gYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgc2l6ZSBvZiB0aGUgU2Ny
ZWVuV2luZG93CisJCV9lbXVsYXRpb24tPnNldEltYWdlU2l6ZShfZW11bGF0aW9uLT5pbWFnZVNp
emUoKS5oZWlnaHQoKSwxMDI0KTsKKwl9CisKKwlfZW11bGF0aW9uLT5yZWZvcm1hdCgpOworfQor
Ym9vbCBTZXNzaW9uOjp3cmFwRW5hYmxlZCgpIGNvbnN0Cit7CisJcmV0dXJuIF9lbXVsYXRpb24t
PnRleHRXcmFwRW5hYmxlZCgpOworfQogdm9pZCBTZXNzaW9uOjpvbkVtdWxhdGlvblNpemVDaGFu
Z2UoaW50IGxpbmVzICwgaW50IGNvbHVtbnMpCiB7Ci0gIHNldFNpemUoIFFTaXplKGxpbmVzLGNv
bHVtbnMpICk7CisJUVNpemUgY3VycmVudFNpemUgPSBfc2hlbGxQcm9jZXNzLT53aW5kb3dTaXpl
KCk7CisKKwlpZiAoY3VycmVudFNpemUuaGVpZ2h0KCkgIT0gbGluZXMgfHwgY3VycmVudFNpemUu
d2lkdGgoKSAhPSBjb2x1bW5zKQorCQlfc2hlbGxQcm9jZXNzLT5zZXRXaW5kb3dTaXplKGxpbmVz
LGNvbHVtbnMpOworCisJUVNpemUgbmV3U2l6ZSA9IF9zaGVsbFByb2Nlc3MtPndpbmRvd1NpemUo
KTsKKwlRX0FTU0VSVChuZXdTaXplLmhlaWdodCgpID09IGxpbmVzICYmIG5ld1NpemUud2lkdGgo
KSA9PSBjb2x1bW5zKTsKIH0KIAogdm9pZCBTZXNzaW9uOjp1cGRhdGVUZXJtaW5hbFNpemUoKQpA
QCAtNTYzLDcgKzU5NSw2IEBAIHZvaWQgU2Vzc2lvbjo6dXBkYXRlVGVybWluYWxTaXplKCkKICAg
ICBpZiAoIG1pbkxpbmVzID4gMCAmJiBtaW5Db2x1bW5zID4gMCApCiAgICAgewogICAgICAgICBf
ZW11bGF0aW9uLT5zZXRJbWFnZVNpemUoIG1pbkxpbmVzICwgbWluQ29sdW1ucyApOwotICAgICAg
ICBfc2hlbGxQcm9jZXNzLT5zZXRXaW5kb3dTaXplKCBtaW5MaW5lcyAsIG1pbkNvbHVtbnMgKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9TZXNzaW9uLmggYi9zcmMvU2Vzc2lvbi5oCmlu
ZGV4IDliZjFhMjEuLjY5NDlhZGYgMTAwNjQ0Ci0tLSBhL3NyYy9TZXNzaW9uLmgKKysrIGIvc3Jj
L1Nlc3Npb24uaApAQCAtMzQ4LDYgKzM0OCw5IEBAIHB1YmxpYzoKICAgdm9pZCBjYW5jZWxaTW9k
ZW0oKTsKICAgYm9vbCBpc1pNb2RlbUJ1c3koKSB7IHJldHVybiBfem1vZGVtQnVzeTsgfQogCisg
IHZvaWQgc2V0V3JhcEVuYWJsZWQoYm9vbCB3cmFwKTsKKyAgYm9vbCB3cmFwRW5hYmxlZCgpIGNv
bnN0OworCiAgLyoqIAogICAgKiBQb3NzaWJsZSB2YWx1ZXMgb2YgdGhlIEBwIHdoYXQgcGFyYW1l
dGVyIGZvciBzZXRVc2VyVGl0bGUoKQogICAgKiBTZWUgIk9wZXJhdGluZyBTeXN0ZW0gQ29udHJv
bHMiIHNlY3Rpb24gb24gaHR0cDovL3J0Zm0uZXRsYS5vcmcveHRlcm0vY3Rsc2VxLmh0bWwKZGlm
ZiAtLWdpdCBhL3NyYy9TZXNzaW9uQ29udHJvbGxlci5jcHAgYi9zcmMvU2Vzc2lvbkNvbnRyb2xs
ZXIuY3BwCmluZGV4IDU2NzRjZDUuLjJjMjY3ZTMgMTAwNjQ0Ci0tLSBhL3NyYy9TZXNzaW9uQ29u
dHJvbGxlci5jcHAKKysrIGIvc3JjL1Nlc3Npb25Db250cm9sbGVyLmNwcApAQCAtMzY2LDcgKzM2
Niw3IEBAIGJvb2wgU2Vzc2lvbkNvbnRyb2xsZXI6OmV2ZW50RmlsdGVyKFFPYmplY3QqIHdhdGNo
ZWQgLCBRRXZlbnQqIGV2ZW50KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIF92aWV3LT5z
Y3JlZW5XaW5kb3coKSAmJiAhX3ZpZXdVcmxGaWx0ZXIgKQogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGNvbm5lY3QoIF92aWV3LT5zY3JlZW5XaW5kb3coKSAsIFNJR05BTChzY3JvbGxl
ZChpbnQpKSAsIHRoaXMgLAorICAgICAgICAgICAgICAgIGNvbm5lY3QoIF92aWV3LT5zY3JlZW5X
aW5kb3coKSAsIFNJR05BTChzY3JvbGxlZChpbnQsaW50KSkgLCB0aGlzICwKICAgICAgICAgICAg
ICAgICAgICAgICAgIFNMT1QocmVxdWlyZVVybEZpbHRlclVwZGF0ZSgpKSApOwogICAgICAgICAg
ICAgICAgIGNvbm5lY3QoIF92aWV3LT5zY3JlZW5XaW5kb3coKSAsIFNJR05BTChvdXRwdXRDaGFu
Z2VkKCkpICwgdGhpcyAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChyZXF1aXJlVXJs
RmlsdGVyVXBkYXRlKCkpICk7CkBAIC00NzksNiArNDc5LDEyIEBAIHZvaWQgU2Vzc2lvbkNvbnRy
b2xsZXI6OnNldHVwQWN0aW9ucygpCiAgICAgYWN0aW9uLT5zZXRTaG9ydGN1dCggUUtleVNlcXVl
bmNlKFF0OjpDVFJMK1F0OjpBTFQrUXQ6OktleV9TKSApOwogICAgIGNvbm5lY3QoIGFjdGlvbiAs
IFNJR05BTCh0cmlnZ2VyZWQoKSkgLCB0aGlzICwgU0xPVChyZW5hbWVTZXNzaW9uKCkpICk7CiAK
KwkvLyBFbmFibGUgdGV4dCB3cmFwCisJdG9nZ2xlQWN0aW9uID0gbmV3IEtUb2dnbGVBY3Rpb24o
aTE4bigiRW5hYmxlIFdvcmQgV3JhcCIpLHRoaXMpOworCXRvZ2dsZUFjdGlvbi0+c2V0Q2hlY2tl
ZCh0cnVlKTsKKwlhY3Rpb24gPSBjb2xsZWN0aW9uLT5hZGRBY3Rpb24oImVuYWJsZS13b3JkLXdy
YXAiLHRvZ2dsZUFjdGlvbik7CisJY29ubmVjdChhY3Rpb24sU0lHTkFMKHRvZ2dsZWQoYm9vbCkp
LHRoaXMsU0xPVChzZXRXcmFwRW5hYmxlZChib29sKSkpOyAKKwogICAgIC8vIFNlbmQgdG8gQWxs
CiAKICAgICAvL1RPRE8gLSBDb21wbGV0ZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgJ1NlbmQgSW5w
dXQgdG8gQWxsJyBmb3IKQEAgLTU4NSw2ICs1OTEsMTQgQEAgdm9pZCBTZXNzaW9uQ29udHJvbGxl
cjo6c2V0dXBBY3Rpb25zKCkKICAgICAvL2FjdGlvbi0+c2V0VGV4dCggIkdldCBGb3JlZ3JvdW5k
IFByb2Nlc3MiICk7CiAgICAgLy9jb25uZWN0KCBhY3Rpb24gLCBTSUdOQUwodHJpZ2dlcmVkKCkp
ICwgdGhpcyAsIFNMT1QoZGVidWdQcm9jZXNzKCkpICk7CiB9Cit2b2lkIFNlc3Npb25Db250cm9s
bGVyOjpzZXRXcmFwRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisJX3Nlc3Npb24tPnNldFdyYXBF
bmFibGVkKGVuYWJsZWQpOworCisJVGVybWluYWxEaXNwbGF5OjpTY3JvbGxCYXJQb3NpdGlvbiBw
b3NpdGlvbiA9IGVuYWJsZWQgPyBUZXJtaW5hbERpc3BsYXk6Ok5vU2Nyb2xsQmFyIDoKKwkJCQkJ
CQkJCQkJCQkJCVRlcm1pbmFsRGlzcGxheTo6U2Nyb2xsQmFyQm90dG9tOworCV92aWV3LT5zZXRT
Y3JvbGxCYXJQb3NpdGlvbihRdDo6SG9yaXpvbnRhbCxwb3NpdGlvbik7Cit9CiB2b2lkIFNlc3Np
b25Db250cm9sbGVyOjpjaGFuZ2VQcm9maWxlKFByb2ZpbGU6OlB0ciBwcm9maWxlKQogewogCVNl
c3Npb25NYW5hZ2VyOjppbnN0YW5jZSgpLT5zZXRTZXNzaW9uUHJvZmlsZShfc2Vzc2lvbixwcm9m
aWxlKTsJCkBAIC03NDMsNyArNzU3LDcgQEAgdm9pZCBTZXNzaW9uQ29udHJvbGxlcjo6bGlzdGVu
Rm9yU2NyZWVuV2luZG93VXBkYXRlcygpCiAKIAljb25uZWN0KCBfdmlldy0+c2NyZWVuV2luZG93
KCkgLCBTSUdOQUwob3V0cHV0Q2hhbmdlZCgpKSAsIHRoaXMgLCAKIAkJCVNMT1QodXBkYXRlU2Vh
cmNoRmlsdGVyKCkpICk7Ci0JY29ubmVjdCggX3ZpZXctPnNjcmVlbldpbmRvdygpICwgU0lHTkFM
KHNjcm9sbGVkKGludCkpICwgdGhpcyAsIAorCWNvbm5lY3QoIF92aWV3LT5zY3JlZW5XaW5kb3co
KSAsIFNJR05BTChzY3JvbGxlZChpbnQsaW50KSkgLCB0aGlzICwgCiAJCQlTTE9UKHVwZGF0ZVNl
YXJjaEZpbHRlcigpKSApOwogCiAJX2xpc3RlbkZvclNjcmVlbldpbmRvd1VwZGF0ZXMgPSB0cnVl
OwpAQCAtMTM3NSw3ICsxMzg5LDcgQEAgdm9pZCBTZWFyY2hIaXN0b3J5VGFzazo6aGlnaGxpZ2h0
UmVzdWx0KFNjcmVlbldpbmRvd1B0ciB3aW5kb3cgLCBpbnQgZmluZFBvcykKICAgICAga0RlYnVn
KDEyMTEpIDw8ICJGb3VuZCByZXN1bHQgYXQgbGluZSAiIDw8IGZpbmRQb3M7CiAKICAgICAgLy91
cGRhdGUgZGlzcGxheSB0byBzaG93IGFyZWEgb2YgaGlzdG9yeSBjb250YWluaW5nIHNlbGVjdGlv
bgotICAgICB3aW5kb3ctPnNjcm9sbFRvKGZpbmRQb3MpOworICAgICB3aW5kb3ctPnNjcm9sbFRv
KGZpbmRQb3Msd2luZG93LT5jdXJyZW50Q29sdW1uKCkpOwogICAgICB3aW5kb3ctPnNldFNlbGVj
dGlvblN0YXJ0KCAwICwgZmluZFBvcyAtIHdpbmRvdy0+Y3VycmVudExpbmUoKSAsIGZhbHNlICk7
CiAgICAgIHdpbmRvdy0+c2V0U2VsZWN0aW9uRW5kKCB3aW5kb3ctPmNvbHVtbkNvdW50KCkgLCBm
aW5kUG9zIC0gd2luZG93LT5jdXJyZW50TGluZSgpICk7CiAgICAgIC8va0RlYnVnKCkgPDwgIkN1
cnJlbnQgbGluZSAiIDw8IHdpbmRvdy0+Y3VycmVudExpbmUoKTsKZGlmZiAtLWdpdCBhL3NyYy9T
ZXNzaW9uQ29udHJvbGxlci5oIGIvc3JjL1Nlc3Npb25Db250cm9sbGVyLmgKaW5kZXggNDgyNjNl
YS4uYTVmOThiZCAxMDA2NDQKLS0tIGEvc3JjL1Nlc3Npb25Db250cm9sbGVyLmgKKysrIGIvc3Jj
L1Nlc3Npb25Db250cm9sbGVyLmgKQEAgLTE2Niw2ICsxNjYsNyBAQCBwcml2YXRlIHNsb3RzOgog
CXZvaWQgcGFzdGVTZWxlY3Rpb24oKTsgLy8gc2hvcnRjdXQgb25seQogICAgIHZvaWQgY2xlYXIo
KTsKICAgICB2b2lkIGNsZWFyQW5kUmVzZXQoKTsKKwl2b2lkIHNldFdyYXBFbmFibGVkKGJvb2wg
ZW5hYmxlZCk7CiAgICAgdm9pZCBlZGl0Q3VycmVudFByb2ZpbGUoKTsKICAgICB2b2lkIGNoYW5n
ZUNvZGVjKFFUZXh0Q29kZWMqIGNvZGVjKTsKICAgICAvL3ZvaWQgc2VhcmNoSGlzdG9yeSgpOwpk
aWZmIC0tZ2l0IGEvc3JjL1Rlcm1pbmFsRGlzcGxheS5jcHAgYi9zcmMvVGVybWluYWxEaXNwbGF5
LmNwcAppbmRleCBkN2VjZmRiLi41MjBkODAyIDEwMDY0NAotLS0gYS9zcmMvVGVybWluYWxEaXNw
bGF5LmNwcAorKysgYi9zcmMvVGVybWluYWxEaXNwbGF5LmNwcApAQCAtMTEyLDYgKzExMiw3IEBA
IHZvaWQgVGVybWluYWxEaXNwbGF5OjpzZXRTY3JlZW5XaW5kb3coU2NyZWVuV2luZG93KiB3aW5k
b3cpCiAgICAgICAgIGNvbm5lY3QoIF9zY3JlZW5XaW5kb3cgLCBTSUdOQUwob3V0cHV0Q2hhbmdl
ZCgpKSAsIHRoaXMgLCBTTE9UKHVwZGF0ZUxpbmVQcm9wZXJ0aWVzKCkpICk7CiAgICAgICAgIGNv
bm5lY3QoIF9zY3JlZW5XaW5kb3cgLCBTSUdOQUwob3V0cHV0Q2hhbmdlZCgpKSAsIHRoaXMgLCBT
TE9UKHVwZGF0ZUltYWdlKCkpICk7CiAJCXdpbmRvdy0+c2V0V2luZG93TGluZXMoX2xpbmVzKTsK
KwkJd2luZG93LT5zZXRXaW5kb3dDb2x1bW5zKF9jb2x1bW5zKTsKICAgICB9CiB9CiAKQEAgLTEy
OCw2ICsxMjksNyBAQCB2b2lkIFRlcm1pbmFsRGlzcGxheTo6c2V0QmFja2dyb3VuZENvbG9yKGNv
bnN0IFFDb2xvciYgY29sb3IpCiAKICAgCS8vIEF2b2lkIHByb3BhZ2F0aW5nIHRoZSBwYWxldHRl
IGNoYW5nZSB0byB0aGUgc2Nyb2xsIGJhciAKICAgCV9zY3JvbGxCYXItPnNldFBhbGV0dGUoIFFB
cHBsaWNhdGlvbjo6cGFsZXR0ZSgpICk7ICAKKwlfaG9yaXpvbnRhbFNjcm9sbEJhci0+c2V0UGFs
ZXR0ZSggUUFwcGxpY2F0aW9uOjpwYWxldHRlKCkgKTsKIAogCXVwZGF0ZSgpOwogfQpAQCAtMjc3
LDcgKzI3OSw4IEBAIFRlcm1pbmFsRGlzcGxheTo6VGVybWluYWxEaXNwbGF5KFFXaWRnZXQgKnBh
cmVudCkKICxfbGluZVNlbGVjdGlvbk1vZGUoZmFsc2UpCiAsX3ByZXNlcnZlTGluZUJyZWFrcyhm
YWxzZSkKICxfY29sdW1uU2VsZWN0aW9uTW9kZShmYWxzZSkKLSxfc2Nyb2xsYmFyTG9jYXRpb24o
Tm9TY3JvbGxCYXIpCissX3ZlcnRpY2FsU2Nyb2xsQmFyUG9zKE5vU2Nyb2xsQmFyKQorLF9ob3Jp
em9udGFsU2Nyb2xsQmFyUG9zKE5vU2Nyb2xsQmFyKQogLF93b3JkQ2hhcmFjdGVycygiOkAtLi9f
fiIpCiAsX2JlbGxNb2RlKFN5c3RlbUJlZXBCZWxsKQogLF9ibGlua2luZyhmYWxzZSkKQEAgLTMw
OSwxMiArMzEyLDEzIEBAIFRlcm1pbmFsRGlzcGxheTo6VGVybWluYWxEaXNwbGF5KFFXaWRnZXQg
KnBhcmVudCkKIAogICAvLyBjcmVhdGUgc2Nyb2xsIGJhciBmb3Igc2Nyb2xsaW5nIG91dHB1dCB1
cCBhbmQgZG93bgogICAvLyBzZXQgdGhlIHNjcm9sbCBiYXIncyBzbGlkZXIgdG8gb2NjdXB5IHRo
ZSB3aG9sZSBhcmVhIG9mIHRoZSBzY3JvbGwgYmFyIGluaXRpYWxseQotICBfc2Nyb2xsQmFyID0g
bmV3IFFTY3JvbGxCYXIodGhpcyk7Ci0gIHNldFNjcm9sbCgwLDApOyAKLSAgX3Njcm9sbEJhci0+
c2V0Q3Vyc29yKCBRdDo6QXJyb3dDdXJzb3IgKTsKLSAgY29ubmVjdChfc2Nyb2xsQmFyLCBTSUdO
QUwodmFsdWVDaGFuZ2VkKGludCkpLCB0aGlzLCAKLSAgCQkJCQkgIFNMT1Qoc2Nyb2xsQmFyUG9z
aXRpb25DaGFuZ2VkKGludCkpKTsKKyAgX3Njcm9sbEJhciA9IG5ldyBRU2Nyb2xsQmFyKFF0OjpW
ZXJ0aWNhbCx0aGlzKTsKKyAgX2hvcml6b250YWxTY3JvbGxCYXIgPSBuZXcgUVNjcm9sbEJhcihR
dDo6SG9yaXpvbnRhbCx0aGlzKTsKIAorICBzZXRTY3JvbGwoMCwwLDAsMCk7IAorICBfc2Nyb2xs
QmFyLT5zZXRDdXJzb3IoIFF0OjpBcnJvd0N1cnNvciApOworICBfaG9yaXpvbnRhbFNjcm9sbEJh
ci0+c2V0Q3Vyc29yKCBRdDo6QXJyb3dDdXJzb3IgKTsKKyAgICAKICAgLy8gc2V0dXAgdGltZXJz
IGZvciBibGlua2luZyBjdXJzb3IgYW5kIHRleHQKICAgX2JsaW5rVGltZXIgICA9IG5ldyBRVGlt
ZXIodGhpcyk7CiAgIGNvbm5lY3QoX2JsaW5rVGltZXIsIFNJR05BTCh0aW1lb3V0KCkpLCB0aGlz
LCBTTE9UKGJsaW5rRXZlbnQoKSkpOwpAQCAtNTU5LDEwICs1NjMsMjMgQEAgdm9pZCBUZXJtaW5h
bERpc3BsYXk6OmRyYXdCYWNrZ3JvdW5kKFFQYWludGVyJiBwYWludGVyLCBjb25zdCBRUmVjdCYg
cmVjdCwgY29uc3QKICAgICAgICAgLy8gYmVpbmcgb3V0c2lkZSBvZiB0aGUgdGVybWluYWwgZGlz
cGxheSBhbmQgdmlzdWFsIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgS0RFCiAgICAgICAgIC8vIGFw
cGxpY2F0aW9ucy4gIAogICAgICAgICAvLwotICAgICAgICBRUmVjdCBzY3JvbGxCYXJBcmVhID0g
X3Njcm9sbEJhci0+aXNWaXNpYmxlKCkgPyAKKyAgICAgICAgUVJlY3QgdmVydGljYWxTY3JvbGxC
YXJBcmVhID0gX3Njcm9sbEJhci0+aXNWaXNpYmxlKCkgPyAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlY3QuaW50ZXJzZWN0ZWQoX3Njcm9sbEJhci0+Z2VvbWV0cnkoKSkg
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVJlY3QoKTsKLSAgICAgICAg
UVJlZ2lvbiBjb250ZW50c1JlZ2lvbiA9IFFSZWdpb24ocmVjdCkuc3VidHJhY3RlZChzY3JvbGxC
YXJBcmVhKTsKKworCQkvLyBwcmV0ZW5kIHRoYXQgdGhlIGhvcml6b250YWwgc2Nyb2xsYmFyIGNv
dmVycyB0aGUgZW50aXJlIHdpZHRoIG9mIHRoZSBzY3JlZW4KKwkJLy8gdGhpcyBlbnN1cmVzIHRo
YXQgdGhlIGdhYiBpbiB0aGUgY29ybmVyIHdoZXJlIHRoZSBob3Jpem9udGFsIGFuZCB2ZXJ0aWNh
bCBzY3JvbGxiYXJzIAorCQkvLyBtZWV0IGlzIHBhaW50ZWQgd2l0aCB0aGUgc2FtZSBiYWNrZ3Jv
dW5kIGNvbG9yIGFzIHRoZSBzY3JvbGxiYXJzIHRoZW1zZWx2ZXMKKwkJUVJlY3QgaFNjcm9sbEJh
ckdlb21ldHJ5ID0gUVJlY3QoY29udGVudHNSZWN0KCkuYm90dG9tTGVmdCgpIC0gCisJCQkJCQkJ
CQkJUVBvaW50KDAsX2hvcml6b250YWxTY3JvbGxCYXItPmhlaWdodCgpLTEpLAorCQkJCQkJCQkJ
CVFTaXplKHdpZHRoKCksX2hvcml6b250YWxTY3JvbGxCYXItPmhlaWdodCgpKSk7CisKKwkJUVJl
Y3QgaG9yaXpvbnRhbFNjcm9sbEJhckFyZWEgPSBfaG9yaXpvbnRhbFNjcm9sbEJhci0+aXNWaXNp
YmxlKCkgPyAKKwkJCQkJCQkJCXJlY3QuaW50ZXJzZWN0ZWQoaFNjcm9sbEJhckdlb21ldHJ5KSA6
IFFSZWN0KCk7CisKKyAgICAgICAgUVJlZ2lvbiBjb250ZW50c1JlZ2lvbiA9IFFSZWdpb24ocmVj
dCkKKwkJCQkJCQkJLnN1YnRyYWN0ZWQodmVydGljYWxTY3JvbGxCYXJBcmVhKQorCQkJCQkJCQku
c3VidHJhY3RlZChob3Jpem9udGFsU2Nyb2xsQmFyQXJlYSk7CiAgICAgICAgIFFSZWN0IGNvbnRl
bnRzUmVjdCA9IGNvbnRlbnRzUmVnaW9uLmJvdW5kaW5nUmVjdCgpOwogCiAgICAgICAgIGlmICgg
SEFWRV9UUkFOU1BBUkVOQ1kgJiYgcUFscGhhKF9ibGVuZENvbG9yKSA8IDB4ZmYgJiYgdXNlT3Bh
Y2l0eVNldHRpbmcgKSAKQEAgLTU3OCw3ICs1OTUsOCBAQCB2b2lkIFRlcm1pbmFsRGlzcGxheTo6
ZHJhd0JhY2tncm91bmQoUVBhaW50ZXImIHBhaW50ZXIsIGNvbnN0IFFSZWN0JiByZWN0LCBjb25z
dAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwYWludGVyLmZpbGxSZWN0KGNvbnRlbnRzUmVj
dCwgYmFja2dyb3VuZENvbG9yKTsKIAotICAgICAgICBwYWludGVyLmZpbGxSZWN0KHNjcm9sbEJh
ckFyZWEsX3Njcm9sbEJhci0+cGFsZXR0ZSgpLmJhY2tncm91bmQoKSk7CisgICAgICAgIHBhaW50
ZXIuZmlsbFJlY3QodmVydGljYWxTY3JvbGxCYXJBcmVhLF9zY3JvbGxCYXItPnBhbGV0dGUoKS5i
YWNrZ3JvdW5kKCkpOworCQlwYWludGVyLmZpbGxSZWN0KGhvcml6b250YWxTY3JvbGxCYXJBcmVh
LF9ob3Jpem9udGFsU2Nyb2xsQmFyLT5wYWxldHRlKCkuYmFja2dyb3VuZCgpKTsKIH0KIAogdm9p
ZCBUZXJtaW5hbERpc3BsYXk6OmRyYXdDdXJzb3IoUVBhaW50ZXImIHBhaW50ZXIsIApAQCAtODgx
LDcgKzg5OSwxMCBAQCB2b2lkIFRlcm1pbmFsRGlzcGxheTo6dXBkYXRlSW1hZ2UoKQogICBpbnQg
bGluZXMgPSBfc2NyZWVuV2luZG93LT53aW5kb3dMaW5lcygpOwogICBpbnQgY29sdW1ucyA9IF9z
Y3JlZW5XaW5kb3ctPndpbmRvd0NvbHVtbnMoKTsKIAotICBzZXRTY3JvbGwoIF9zY3JlZW5XaW5k
b3ctPmN1cnJlbnRMaW5lKCkgLCBfc2NyZWVuV2luZG93LT5saW5lQ291bnQoKSApOworICBzZXRT
Y3JvbGwoIF9zY3JlZW5XaW5kb3ctPmN1cnJlbnRMaW5lKCkgLCAKKyAgCQkJIF9zY3JlZW5XaW5k
b3ctPmxpbmVDb3VudCgpICwgCisJCQkgX3NjcmVlbldpbmRvdy0+Y3VycmVudENvbHVtbigpICwg
CisJCQkgX3NjcmVlbldpbmRvdy0+Y29sdW1uQ291bnQoKSApOwogCiAgIGlmICghX2ltYWdlKQog
ICAgICB1cGRhdGVJbWFnZVNpemUoKTsgLy8gQ3JlYXRlIF9pbWFnZQpAQCAtMTQ2OSw3ICsxNDkw
LDEwIEBAIHZvaWQgVGVybWluYWxEaXNwbGF5Ojp1cGRhdGVJbWFnZVNpemUoKQogICB9CiAKICAg
aWYgKF9zY3JlZW5XaW5kb3cpCisgIHsKICAgCV9zY3JlZW5XaW5kb3ctPnNldFdpbmRvd0xpbmVz
KF9saW5lcyk7CisJX3NjcmVlbldpbmRvdy0+c2V0V2luZG93Q29sdW1ucyhfY29sdW1ucyk7Cisg
IH0KIAogICBfcmVzaXppbmcgPSAob2xkbGluIT1fbGluZXMpIHx8IChvbGRjb2whPV9jb2x1bW5z
KTsKIApAQCAtMTUwMywxMiArMTUyNywxMiBAQCB2b2lkIFRlcm1pbmFsRGlzcGxheTo6aGlkZUV2
ZW50KFFIaWRlRXZlbnQqKQogLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyogLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSAqLwogCi12b2lkIFRlcm1pbmFsRGlzcGxheTo6c2Nyb2xsQmFyUG9zaXRpb25DaGFuZ2Vk
KGludCkKK3ZvaWQgVGVybWluYWxEaXNwbGF5OjpzY3JvbGxCYXJQb3NpdGlvbkNoYW5nZWQoKQog
ewogICBpZiAoICFfc2NyZWVuV2luZG93ICkgCiAgICAgICByZXR1cm47CiAKLSAgX3NjcmVlbldp
bmRvdy0+c2Nyb2xsVG8oIF9zY3JvbGxCYXItPnZhbHVlKCkgKTsKKyAgX3NjcmVlbldpbmRvdy0+
c2Nyb2xsVG8oIF9zY3JvbGxCYXItPnZhbHVlKCkgLCBfaG9yaXpvbnRhbFNjcm9sbEJhci0+dmFs
dWUoKSApOwogCiAgIC8vIGlmIHRoZSB0aHVtYiBoYXMgYmVlbiBtb3ZlZCB0byB0aGUgYm90dG9t
IG9mIHRoZSBfc2Nyb2xsQmFyIHRoZW4gc2V0CiAgIC8vIHRoZSBkaXNwbGF5IHRvIGF1dG9tYXRp
Y2FsbHkgdHJhY2sgbmV3IG91dHB1dCwgCkBAIC0xNTIwLDQxICsxNTQ0LDY2IEBAIHZvaWQgVGVy
bWluYWxEaXNwbGF5OjpzY3JvbGxCYXJQb3NpdGlvbkNoYW5nZWQoaW50KQogICB1cGRhdGVJbWFn
ZSgpOwogfQogCi12b2lkIFRlcm1pbmFsRGlzcGxheTo6c2V0U2Nyb2xsKGludCBjdXJzb3IsIGlu
dCBzbGluZXMpCit2b2lkIFRlcm1pbmFsRGlzcGxheTo6c2V0U2Nyb2xsKGludCB2ZXJ0aWNhbEN1
cnNvciwgaW50IGxpbmVzLAorCQkJCQkJCQlpbnQgaG9yaXpvbnRhbEN1cnNvciwgaW50IGNvbHVt
bnMpCiB7CisgIGJvb2wgdmVydGljYWxTY3JvbGxVbmNoYW5nZWQgPSAJX3Njcm9sbEJhci0+bWlu
aW11bSgpID09IDAgJiYKKyAgCQkJCQkJCQkJX3Njcm9sbEJhci0+bWF4aW11bSgpID09IChsaW5l
cyAtIF9saW5lcykgJiYKKwkJCQkJCQkJCV9zY3JvbGxCYXItPnZhbHVlKCkgPT0gdmVydGljYWxD
dXJzb3I7CisKKyAgYm9vbCBob3Jpem9udGFsU2Nyb2xsVW5jaGFuZ2VkID0gX2hvcml6b250YWxT
Y3JvbGxCYXItPm1pbmltdW0oKSA9PSAwICYmCisgIAkJCQkJCQkJICAgX2hvcml6b250YWxTY3Jv
bGxCYXItPm1heGltdW0oKSA9PSAoY29sdW1ucyAtIF9jb2x1bW5zKSAmJgorCQkJCQkJCQkgICBf
aG9yaXpvbnRhbFNjcm9sbEJhci0+dmFsdWUoKSA9PSBob3Jpem9udGFsQ3Vyc29yOworCiAgIC8v
IHVwZGF0ZSBfc2Nyb2xsQmFyIGlmIHRoZSByYW5nZSBvciB2YWx1ZSBoYXMgY2hhbmdlZCwKICAg
Ly8gb3RoZXJ3aXNlIHJldHVybgogICAvLwogICAvLyBzZXR0aW5nIHRoZSByYW5nZSBvciB2YWx1
ZSBvZiBhIF9zY3JvbGxCYXIgd2lsbCBhbHdheXMgdHJpZ2dlcgogICAvLyBhIHJlcGFpbnQsIHNv
IGl0IHNob3VsZCBiZSBhdm9pZGVkIGlmIGl0IGlzIG5vdCBuZWNlc3NhcnkKLSAgaWYgKCBfc2Ny
b2xsQmFyLT5taW5pbXVtKCkgPT0gMCAgICAgICAgICAgICAgICAgJiYKLSAgICAgICBfc2Nyb2xs
QmFyLT5tYXhpbXVtKCkgPT0gKHNsaW5lcyAtIF9saW5lcykgJiYKLSAgICAgICBfc2Nyb2xsQmFy
LT52YWx1ZSgpICAgPT0gY3Vyc29yICkKKyAgCisKKyAgc3RhdGljIGNvbnN0IGNoYXIqIHZhbHVl
Q2hhbmdlZFNpZ25hbCA9IFNJR05BTCh2YWx1ZUNoYW5nZWQoaW50KSk7CisgIHN0YXRpYyBjb25z
dCBjaGFyKiBzY3JvbGxCYXJWYWx1ZVNsb3QgPSBTTE9UKHNjcm9sbEJhclBvc2l0aW9uQ2hhbmdl
ZCgpKTsKKworICAvLyBVcGRhdGUgdmVydGljYWwgc2Nyb2xsIGJhcgorICBpZiAoIXZlcnRpY2Fs
U2Nyb2xsVW5jaGFuZ2VkKQogICB7Ci0gICAgICAgIHJldHVybjsKKyAgCWRpc2Nvbm5lY3QoX3Nj
cm9sbEJhcix2YWx1ZUNoYW5nZWRTaWduYWwsIHRoaXMsIHNjcm9sbEJhclZhbHVlU2xvdCk7IAor
ICAJX3Njcm9sbEJhci0+c2V0UmFuZ2UoMCxsaW5lcyAtIF9saW5lcyk7CisgIAlfc2Nyb2xsQmFy
LT5zZXRTaW5nbGVTdGVwKDEpOworICAJX3Njcm9sbEJhci0+c2V0UGFnZVN0ZXAoX2xpbmVzKTsK
KyAgCV9zY3JvbGxCYXItPnNldFZhbHVlKHZlcnRpY2FsQ3Vyc29yKTsKKyAgCWNvbm5lY3QoX3Nj
cm9sbEJhcix2YWx1ZUNoYW5nZWRTaWduYWwsdGhpcyxzY3JvbGxCYXJWYWx1ZVNsb3QpOworICB9
CisJCisgIC8vIFVwZGF0ZSBob3Jpem9udGFsIHNjcm9sbCBiYXIKKyAgaWYgKCFob3Jpem9udGFs
U2Nyb2xsVW5jaGFuZ2VkKQorICB7CisJZGlzY29ubmVjdCggX2hvcml6b250YWxTY3JvbGxCYXIs
dmFsdWVDaGFuZ2VkU2lnbmFsLHRoaXMsc2Nyb2xsQmFyVmFsdWVTbG90KTsgCisgIAlfaG9yaXpv
bnRhbFNjcm9sbEJhci0+c2V0UmFuZ2UoMCxjb2x1bW5zIC0gX2NvbHVtbnMpOworICAJX2hvcml6
b250YWxTY3JvbGxCYXItPnNldFNpbmdsZVN0ZXAoMSk7CisgIAlfaG9yaXpvbnRhbFNjcm9sbEJh
ci0+c2V0UGFnZVN0ZXAoX2NvbHVtbnMpOworICAJX2hvcml6b250YWxTY3JvbGxCYXItPnNldFZh
bHVlKGhvcml6b250YWxDdXJzb3IpOworCWNvbm5lY3QoIF9ob3Jpem9udGFsU2Nyb2xsQmFyICwg
dmFsdWVDaGFuZ2VkU2lnbmFsLHRoaXMsc2Nyb2xsQmFyVmFsdWVTbG90KTsKICAgfQotCi0gIGRp
c2Nvbm5lY3QoX3Njcm9sbEJhciwgU0lHTkFMKHZhbHVlQ2hhbmdlZChpbnQpKSwgdGhpcywgU0xP
VChzY3JvbGxCYXJQb3NpdGlvbkNoYW5nZWQoaW50KSkpOwotICBfc2Nyb2xsQmFyLT5zZXRSYW5n
ZSgwLHNsaW5lcyAtIF9saW5lcyk7Ci0gIF9zY3JvbGxCYXItPnNldFNpbmdsZVN0ZXAoMSk7Ci0g
IF9zY3JvbGxCYXItPnNldFBhZ2VTdGVwKF9saW5lcyk7Ci0gIF9zY3JvbGxCYXItPnNldFZhbHVl
KGN1cnNvcik7Ci0gIGNvbm5lY3QoX3Njcm9sbEJhciwgU0lHTkFMKHZhbHVlQ2hhbmdlZChpbnQp
KSwgdGhpcywgU0xPVChzY3JvbGxCYXJQb3NpdGlvbkNoYW5nZWQoaW50KSkpOwogfQogCi12b2lk
IFRlcm1pbmFsRGlzcGxheTo6c2V0U2Nyb2xsQmFyUG9zaXRpb24oU2Nyb2xsQmFyUG9zaXRpb24g
cG9zaXRpb24pCit2b2lkIFRlcm1pbmFsRGlzcGxheTo6c2V0U2Nyb2xsQmFyUG9zaXRpb24oUXQ6
Ok9yaWVudGF0aW9uIG9yaWVudGF0aW9uICwgU2Nyb2xsQmFyUG9zaXRpb24gcG9zaXRpb24pCiB7
Ci0gIGlmIChfc2Nyb2xsYmFyTG9jYXRpb24gPT0gcG9zaXRpb24pIAotICAgICAgcmV0dXJuOyAK
LSAKKyAgYm9vbCB2ZXJ0aWNhbCA9IG9yaWVudGF0aW9uID09IFF0OjpWZXJ0aWNhbDsKKyAgUVNj
cm9sbEJhciogc2Nyb2xsQmFyID0gdmVydGljYWwgPyBfc2Nyb2xsQmFyIDogX2hvcml6b250YWxT
Y3JvbGxCYXI7CisKKyAgU2Nyb2xsQmFyUG9zaXRpb24mIGN1cnJlbnRQb3MgPSB2ZXJ0aWNhbCA/
IF92ZXJ0aWNhbFNjcm9sbEJhclBvcyA6IF9ob3Jpem9udGFsU2Nyb2xsQmFyUG9zOworCiAgIGlm
ICggcG9zaXRpb24gPT0gTm9TY3JvbGxCYXIgKQotICAgICBfc2Nyb2xsQmFyLT5oaWRlKCk7Cisg
ICAgIHNjcm9sbEJhci0+aGlkZSgpOwogICBlbHNlIAotICAgICBfc2Nyb2xsQmFyLT5zaG93KCk7
IAorICAgICBzY3JvbGxCYXItPnNob3coKTsgCiAKICAgX3RvcE1hcmdpbiA9IF9sZWZ0TWFyZ2lu
ID0gMTsKLSAgX3Njcm9sbGJhckxvY2F0aW9uID0gcG9zaXRpb247Ci0gIAorCisgIGN1cnJlbnRQ
b3MgPSBwb3NpdGlvbjsKKwogICBwcm9wYWdhdGVTaXplKCk7CiAgIHVwZGF0ZSgpOwogfQpAQCAt
MjU1OCw5ICsyNjA3LDE0IEBAIHZvaWQgVGVybWluYWxEaXNwbGF5OjpjbGVhckltYWdlKCkKIAog
dm9pZCBUZXJtaW5hbERpc3BsYXk6OmNhbGNHZW9tZXRyeSgpCiB7Ci0gIF9zY3JvbGxCYXItPnJl
c2l6ZShRQXBwbGljYXRpb246OnN0eWxlKCktPnBpeGVsTWV0cmljKFFTdHlsZTo6UE1fU2Nyb2xs
QmFyRXh0ZW50KSwKLSAgICAgICAgICAgICAgICAgICAgY29udGVudHNSZWN0KCkuaGVpZ2h0KCkp
OwotICBzd2l0Y2goX3Njcm9sbGJhckxvY2F0aW9uKQorICBpbnQgc2Nyb2xsQmFyRXh0ZW50ID0g
UUFwcGxpY2F0aW9uOjpzdHlsZSgpLT5waXhlbE1ldHJpYyhRU3R5bGU6OlBNX1Njcm9sbEJhckV4
dGVudCk7CisgIGludCB2ZXJ0aWNhbFNjcm9sbEJhckV4dGVudCA9IF9zY3JvbGxCYXItPmlzVmlz
aWJsZSgpID8gc2Nyb2xsQmFyRXh0ZW50IDogMDsKKyAgaW50IGhvcml6b250YWxTY3JvbGxCYXJF
eHRlbnQgPSBfaG9yaXpvbnRhbFNjcm9sbEJhci0+aXNWaXNpYmxlKCkgPyBzY3JvbGxCYXJFeHRl
bnQgOiAwOworCisgIF9zY3JvbGxCYXItPnJlc2l6ZShzY3JvbGxCYXJFeHRlbnQsY29udGVudHNS
ZWN0KCkuaGVpZ2h0KCktaG9yaXpvbnRhbFNjcm9sbEJhckV4dGVudCk7CisgIF9ob3Jpem9udGFs
U2Nyb2xsQmFyLT5yZXNpemUoY29udGVudHNSZWN0KCkud2lkdGgoKS12ZXJ0aWNhbFNjcm9sbEJh
ckV4dGVudCxzY3JvbGxCYXJFeHRlbnQpOworCisgIHN3aXRjaChfdmVydGljYWxTY3JvbGxCYXJQ
b3MpCiAgIHsKICAgICBjYXNlIE5vU2Nyb2xsQmFyIDoKICAgICAgX2xlZnRNYXJnaW4gPSBERUZB
VUxUX0xFRlRfTUFSR0lOOwpAQCAtMjU2OCwxOCArMjYyMiwyNCBAQCB2b2lkIFRlcm1pbmFsRGlz
cGxheTo6Y2FsY0dlb21ldHJ5KCkKICAgICAgYnJlYWs7CiAgICAgY2FzZSBTY3JvbGxCYXJMZWZ0
IDoKICAgICAgX2xlZnRNYXJnaW4gPSBERUZBVUxUX0xFRlRfTUFSR0lOICsgX3Njcm9sbEJhci0+
d2lkdGgoKTsKLSAgICAgX2NvbnRlbnRXaWR0aCA9IGNvbnRlbnRzUmVjdCgpLndpZHRoKCkgLSAy
ICogREVGQVVMVF9MRUZUX01BUkdJTiAtIF9zY3JvbGxCYXItPndpZHRoKCk7CisgICAgIF9jb250
ZW50V2lkdGggPSBjb250ZW50c1JlY3QoKS53aWR0aCgpIC0gMiAqIERFRkFVTFRfTEVGVF9NQVJH
SU4gLSB2ZXJ0aWNhbFNjcm9sbEJhckV4dGVudDsKICAgICAgX3Njcm9sbEJhci0+bW92ZShjb250
ZW50c1JlY3QoKS50b3BMZWZ0KCkpOwogICAgICBicmVhazsKICAgICBjYXNlIFNjcm9sbEJhclJp
Z2h0OgogICAgICBfbGVmdE1hcmdpbiA9IERFRkFVTFRfTEVGVF9NQVJHSU47Ci0gICAgIF9jb250
ZW50V2lkdGggPSBjb250ZW50c1JlY3QoKS53aWR0aCgpICAtIDIgKiBERUZBVUxUX0xFRlRfTUFS
R0lOIC0gX3Njcm9sbEJhci0+d2lkdGgoKTsKLSAgICAgX3Njcm9sbEJhci0+bW92ZShjb250ZW50
c1JlY3QoKS50b3BSaWdodCgpIC0gUVBvaW50KF9zY3JvbGxCYXItPndpZHRoKCktMSwwKSk7Cisg
ICAgIF9jb250ZW50V2lkdGggPSBjb250ZW50c1JlY3QoKS53aWR0aCgpICAtIDIgKiBERUZBVUxU
X0xFRlRfTUFSR0lOIC0gdmVydGljYWxTY3JvbGxCYXJFeHRlbnQ7CisgICAgIF9zY3JvbGxCYXIt
Pm1vdmUoY29udGVudHNSZWN0KCkudG9wUmlnaHQoKSAtIFFQb2ludCh2ZXJ0aWNhbFNjcm9sbEJh
ckV4dGVudC0xLDApKTsKICAgICAgYnJlYWs7CisJIGRlZmF1bHQ6CisJIGJyZWFrOwogICB9CiAK
ICAgX3RvcE1hcmdpbiA9IERFRkFVTFRfVE9QX01BUkdJTjsKLSAgX2NvbnRlbnRIZWlnaHQgPSBj
b250ZW50c1JlY3QoKS5oZWlnaHQoKSAtIDIgKiBERUZBVUxUX1RPUF9NQVJHSU4gKyAvKiBteXN0
ZXJpb3VzICovIDE7CisKKyAgX2NvbnRlbnRIZWlnaHQgPSBjb250ZW50c1JlY3QoKS5oZWlnaHQo
KSAtIDIgKiBERUZBVUxUX1RPUF9NQVJHSU4gKyAvKiBteXN0ZXJpb3VzICovIDEgLSAKKyAgCQkJ
CSAgIGhvcml6b250YWxTY3JvbGxCYXJFeHRlbnQ7CisgIF9ob3Jpem9udGFsU2Nyb2xsQmFyLT5t
b3ZlKGNvbnRlbnRzUmVjdCgpLmJvdHRvbUxlZnQoKSAtIAorICAJCQkJCQkJIFFQb2ludCgwLGhv
cml6b250YWxTY3JvbGxCYXJFeHRlbnQtMSkpOwogCiAgIGlmICghX2lzRml4ZWRTaXplKQogICB7
CmRpZmYgLS1naXQgYS9zcmMvVGVybWluYWxEaXNwbGF5LmggYi9zcmMvVGVybWluYWxEaXNwbGF5
LmgKaW5kZXggM2RkNDVhYi4uYTMwNGQyYSAxMDA2NDQKLS0tIGEvc3JjL1Rlcm1pbmFsRGlzcGxh
eS5oCisrKyBiL3NyYy9UZXJtaW5hbERpc3BsYXkuaApAQCAtOTcsMjQgKzk3LDQxIEBAIHB1Ymxp
YzoKICAgICB7IAogICAgICAgICAvKiogRG8gbm90IHNob3cgdGhlIHNjcm9sbCBiYXIuICovCiAg
ICAgICAgIE5vU2Nyb2xsQmFyPTAsIAotICAgICAgICAvKiogU2hvdyB0aGUgc2Nyb2xsIGJhciBv
biB0aGUgbGVmdCBzaWRlIG9mIHRoZSBkaXNwbGF5LiAqLworICAgICAgICAvKiogCisJCSAqIFNo
b3cgdGhlIHNjcm9sbCBiYXIgb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgZGlzcGxheS4gIAorCQkg
KiBPbmx5IHZhbGlkIGZvciB0aGUgdmVydGljYWwgc2Nyb2xsIGJhci4KKwkJICovCiAgICAgICAg
IFNjcm9sbEJhckxlZnQ9MSwgCi0gICAgICAgIC8qKiBTaG93IHRoZSBzY3JvbGwgYmFyIG9uIHRo
ZSByaWdodCBzaWRlIG9mIHRoZSBkaXNwbGF5LiAqLwotICAgICAgICBTY3JvbGxCYXJSaWdodD0y
IAorICAgICAgICAvKiogCisJCSAqIFNob3cgdGhlIHNjcm9sbCBiYXIgb24gdGhlIHJpZ2h0IHNp
ZGUgb2YgdGhlIGRpc3BsYXkuICAKKwkJICogT25seSB2YWxpZCBmb3IgdGhlIHZlcnRpY2FsIHNj
cm9sbCBiYXIuCisJCSAqLworICAgICAgICBTY3JvbGxCYXJSaWdodD0yLAorCQkvKiogCisJCSAq
IFNob3cgdGhlIHNjcm9sbCBiYXIgb24gdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBkaXNwbGF5LiAK
KwkJICogT25seSB2YWxpZCBmb3IgdGhlIGhvcml6b250YWwgc2Nyb2xsIGJhci4KKwkJICovCisJ
CVNjcm9sbEJhckJvdHRvbT0zCiAgICAgfTsKICAgICAvKiogCi0gICAgICogU3BlY2lmaWVzIHdo
ZXRoZXIgdGhlIHRlcm1pbmFsIGRpc3BsYXkgaGFzIGEgdmVydGljYWwgc2Nyb2xsIGJhciwgYW5k
IGlmIHNvIHdoZXRoZXIgaXQKLSAgICAgKiBpcyBzaG93biBvbiB0aGUgbGVmdCBvciByaWdodCBz
aWRlIG9mIHRoZSBkaXNwbGF5LgorICAgICAqIFNwZWNpZmllcyB3aGV0aGVyIGEgc2Nyb2xsYmFy
IGlzIHZpc2libGUgYW5kIHdoYXQgcG9zaXRpb24gdG8gcGxhY2UgaXQgaW4gcmVsYXRpdmUgdG8K
KwkgKiB0aGUgY29udGVudHMgb2YgdGhlIGRpc3BsYXkuCisJICoKKwkgKiBAcGFyYW0gc2Nyb2xs
QmFyIFNjcm9sbGJhciB0byBzaG93L2hpZGUgb3IgcmVwb3NpdGlvbi4gCisJICogQHBhcmFtIHBv
c2l0aW9uIFRoZSBuZXcgcG9zaXRpb24gb2YgdGhlIHNjcm9sbCBiYXIKICAgICAgKi8KLSAgICB2
b2lkIHNldFNjcm9sbEJhclBvc2l0aW9uKFNjcm9sbEJhclBvc2l0aW9uIHBvc2l0aW9uKTsKLQor
ICAgIHZvaWQgc2V0U2Nyb2xsQmFyUG9zaXRpb24oUXQ6Ok9yaWVudGF0aW9uIHNjcm9sbEJhciAs
IFNjcm9sbEJhclBvc2l0aW9uIHBvc2l0aW9uKTsKKwkKICAgICAvKiogCiAgICAgICogU2V0cyB0
aGUgY3VycmVudCBwb3NpdGlvbiBhbmQgcmFuZ2Ugb2YgdGhlIGRpc3BsYXkncyBzY3JvbGwgYmFy
LgogICAgICAqCi0gICAgICogQHBhcmFtIGN1cnNvciBUaGUgcG9zaXRpb24gb2YgdGhlIHNjcm9s
bCBiYXIncyB0aHVtYi4KLSAgICAgKiBAcGFyYW0gbGluZXMgVGhlIG1heGltdW0gdmFsdWUgb2Yg
dGhlIHNjcm9sbCBiYXIuCisgICAgICogQHBhcmFtIHZlcnRpY2FsQ3Vyc29yIFRoZSBwb3NpdGlv
biBvZiB0aGUgdmVydGljYWwgc2Nyb2xsIGJhcidzIHRodW1iLgorICAgICAqIEBwYXJhbSBsaW5l
cyBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgdmVydGljYWwgc2Nyb2xsIGJhci4KKwkgKiBAcGFy
YW0gaG9yaXpvbnRhbEN1cnNvciBUaGUgcG9zaXRpb24gb2YgdGhlIGhvcml6b250YWwgc2Nyb2xs
IGJhcidzIHRodW1iCisJICogQHBhcmFtIGNvbHVtbnMgVGhlIG1heGltdW0gdmFsdWUgb2YgdGhl
IGhvcml6b250YWwgc2Nyb2xsIGJhci4KICAgICAgKi8KLSAgICB2b2lkIHNldFNjcm9sbChpbnQg
Y3Vyc29yLCBpbnQgbGluZXMpOworICAgIHZvaWQgc2V0U2Nyb2xsKAlpbnQgdmVydGljYWxDdXJz
b3IsIGludCBsaW5lcywKKwkJCQkJaW50IGhvcml6b250YWxDdXJzb3IsIGludCBjb2x1bW5zICk7
CiAKICAgICAvKiogCiAgICAgICogUmV0dXJucyB0aGUgZGlzcGxheSdzIGZpbHRlciBjaGFpbi4g
IFdoZW4gdGhlIGltYWdlIGZvciB0aGUgZGlzcGxheSBpcyB1cGRhdGVkLApAQCAtNTUxLDcgKzU2
OCw3IEBAIHByb3RlY3RlZDoKIAogcHJvdGVjdGVkIHNsb3RzOgogCi0gICAgdm9pZCBzY3JvbGxC
YXJQb3NpdGlvbkNoYW5nZWQoaW50IHZhbHVlKTsKKyAgICB2b2lkIHNjcm9sbEJhclBvc2l0aW9u
Q2hhbmdlZCgpOwogICAgIHZvaWQgYmxpbmtFdmVudCgpOwogICAgIHZvaWQgYmxpbmtDdXJzb3JF
dmVudCgpOwogICAgIApAQCAtNjk0LDcgKzcxMSwxMSBAQCBwcml2YXRlOgogCiAgICAgUUNsaXBi
b2FyZCogIF9jbGlwYm9hcmQ7CiAgICAgUVNjcm9sbEJhciogX3Njcm9sbEJhcjsKLSAgICBTY3Jv
bGxCYXJQb3NpdGlvbiBfc2Nyb2xsYmFyTG9jYXRpb247CisJUVNjcm9sbEJhciogX2hvcml6b250
YWxTY3JvbGxCYXI7CisKKyAgICBTY3JvbGxCYXJQb3NpdGlvbiBfdmVydGljYWxTY3JvbGxCYXJQ
b3M7CisJU2Nyb2xsQmFyUG9zaXRpb24gX2hvcml6b250YWxTY3JvbGxCYXJQb3M7CisKICAgICBR
U3RyaW5nICAgICBfd29yZENoYXJhY3RlcnM7CiAgICAgaW50ICAgICAgICAgX2JlbGxNb2RlOwog
CmRpZmYgLS1naXQgYS9zcmMvVmlld01hbmFnZXIuY3BwIGIvc3JjL1ZpZXdNYW5hZ2VyLmNwcApp
bmRleCBkODcwMzg0Li45OWVkZGFhIDEwMDY0NAotLS0gYS9zcmMvVmlld01hbmFnZXIuY3BwCisr
KyBiL3NyYy9WaWV3TWFuYWdlci5jcHAKQEAgLTY0OCw3ICs2NDgsOCBAQCBUZXJtaW5hbERpc3Bs
YXkqIFZpZXdNYW5hZ2VyOjpjcmVhdGVUZXJtaW5hbERpc3BsYXkoU2Vzc2lvbiogc2Vzc2lvbikK
ICAgIGRpc3BsYXktPnNldFRlcm1pbmFsU2l6ZUhpbnQodHJ1ZSk7CiAgICBkaXNwbGF5LT5zZXRU
cmlwbGVDbGlja01vZGUoVGVybWluYWxEaXNwbGF5OjpTZWxlY3RXaG9sZUxpbmUpOwogICAgZGlz
cGxheS0+c2V0VGVybWluYWxTaXplU3RhcnR1cCh0cnVlKTsKLSAgIGRpc3BsYXktPnNldFNjcm9s
bEJhclBvc2l0aW9uKFRlcm1pbmFsRGlzcGxheTo6U2Nyb2xsQmFyUmlnaHQpOworICAgZGlzcGxh
eS0+c2V0U2Nyb2xsQmFyUG9zaXRpb24oUXQ6OlZlcnRpY2FsLFRlcm1pbmFsRGlzcGxheTo6U2Ny
b2xsQmFyUmlnaHQpOworICAgZGlzcGxheS0+c2V0U2Nyb2xsQmFyUG9zaXRpb24oUXQ6Okhvcml6
b250YWwsVGVybWluYWxEaXNwbGF5OjpOb1Njcm9sbEJhcik7CiAgICBkaXNwbGF5LT5zZXRSYW5k
b21TZWVkKHNlc3Npb24tPnNlc3Npb25JZCgpICogMzEpOwogCiAgICByZXR1cm4gZGlzcGxheTsK
QEAgLTcxMSwxMSArNzEyLDExIEBAIHZvaWQgVmlld01hbmFnZXI6OmFwcGx5UHJvZmlsZShUZXJt
aW5hbERpc3BsYXkqIHZpZXcgLCBjb25zdCBQcm9maWxlOjpQdHIgaW5mbyApCiAgICAgaW50IHNj
cm9sbEJhclBvc2l0aW9uID0gaW5mby0+cHJvcGVydHk8aW50PihQcm9maWxlOjpTY3JvbGxCYXJQ
b3NpdGlvbik7CiAKICAgICBpZiAoIHNjcm9sbEJhclBvc2l0aW9uID09IFByb2ZpbGU6OlNjcm9s
bEJhckhpZGRlbiApCi0gICAgICAgdmlldy0+c2V0U2Nyb2xsQmFyUG9zaXRpb24oVGVybWluYWxE
aXNwbGF5OjpOb1Njcm9sbEJhcik7CisgICAgICAgdmlldy0+c2V0U2Nyb2xsQmFyUG9zaXRpb24o
UXQ6OlZlcnRpY2FsLFRlcm1pbmFsRGlzcGxheTo6Tm9TY3JvbGxCYXIpOwogICAgIGVsc2UgaWYg
KCBzY3JvbGxCYXJQb3NpdGlvbiA9PSBQcm9maWxlOjpTY3JvbGxCYXJMZWZ0ICkKLSAgICAgICB2
aWV3LT5zZXRTY3JvbGxCYXJQb3NpdGlvbihUZXJtaW5hbERpc3BsYXk6OlNjcm9sbEJhckxlZnQp
OworICAgICAgIHZpZXctPnNldFNjcm9sbEJhclBvc2l0aW9uKFF0OjpWZXJ0aWNhbCxUZXJtaW5h
bERpc3BsYXk6OlNjcm9sbEJhckxlZnQpOwogICAgIGVsc2UgaWYgKCBzY3JvbGxCYXJQb3NpdGlv
biA9PSBQcm9maWxlOjpTY3JvbGxCYXJSaWdodCApCi0gICAgICAgdmlldy0+c2V0U2Nyb2xsQmFy
UG9zaXRpb24oVGVybWluYWxEaXNwbGF5OjpTY3JvbGxCYXJSaWdodCk7CisgICAgICAgdmlldy0+
c2V0U2Nyb2xsQmFyUG9zaXRpb24oUXQ6OlZlcnRpY2FsLFRlcm1pbmFsRGlzcGxheTo6U2Nyb2xs
QmFyUmlnaHQpOwogCiAgICAgLy8gdGVybWluYWwgZmVhdHVyZXMKICAgICBib29sIGJsaW5raW5n
Q3Vyc29yID0gaW5mby0+cHJvcGVydHk8Ym9vbD4oUHJvZmlsZTo6QmxpbmtpbmdDdXJzb3JFbmFi
bGVkKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32094</attachid>
            <date>2009-03-14 07:00:25 +0000</date>
            <delta_ts>2009-03-14 07:00:25 +0000</delta_ts>
            <desc>Patch to remove wordwrap</desc>
            <filename>BR62380good.diff</filename>
            <type>text/plain</type>
            <size>42367</size>
            <attacher name="Kurt Hindenburg">khindenburg</attacher>
            
              <data encoding="base64">SW5kZXg6IHNyYy9TZXNzaW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL1Nlc3Np
b25Db250cm9sbGVyLmNwcAkocmV2aXNpb24gOTM4ODEzKQorKysgc3JjL1Nlc3Npb25Db250cm9s
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkwLDcgKzI5MCw3IEBACiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmICggX3ZpZXctPnNjcmVlbldpbmRvdygpICYmICFfdmlld1VybEZpbHRlciAp
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29ubmVjdCggX3ZpZXctPnNjcmVlbldp
bmRvdygpICwgU0lHTkFMKHNjcm9sbGVkKGludCkpICwgdGhpcyAsCisgICAgICAgICAgICAgICAg
Y29ubmVjdCggX3ZpZXctPnNjcmVlbldpbmRvdygpICwgU0lHTkFMKHNjcm9sbGVkKGludCxpbnQp
KSAsIHRoaXMgLAogICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChyZXF1aXJlVXJsRmlsdGVy
VXBkYXRlKCkpICk7CiAgICAgICAgICAgICAgICAgY29ubmVjdCggX3ZpZXctPnNjcmVlbldpbmRv
dygpICwgU0lHTkFMKG91dHB1dENoYW5nZWQoKSkgLCB0aGlzICwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBTTE9UKHJlcXVpcmVVcmxGaWx0ZXJVcGRhdGUoKSkgKTsKQEAgLTQwMyw2ICs0MDMs
MTIgQEAKICAgICBhY3Rpb24tPnNldFNob3J0Y3V0KCBRS2V5U2VxdWVuY2UoUXQ6OkNUUkwrUXQ6
OkFMVCtRdDo6S2V5X1MpICk7CiAgICAgY29ubmVjdCggYWN0aW9uICwgU0lHTkFMKHRyaWdnZXJl
ZCgpKSAsIHRoaXMgLCBTTE9UKHJlbmFtZVNlc3Npb24oKSkgKTsKIAorICAgIC8vIEVuYWJsZSB0
ZXh0IHdyYXAKKyAgICB0b2dnbGVBY3Rpb24gPSBuZXcgS1RvZ2dsZUFjdGlvbihpMThuKCJFbmFi
bGUgV29yZCBXcmFwIiksdGhpcyk7CisgICAgdG9nZ2xlQWN0aW9uLT5zZXRDaGVja2VkKHRydWUp
OworICAgIGFjdGlvbiA9IGNvbGxlY3Rpb24tPmFkZEFjdGlvbigiZW5hYmxlLXdvcmQtd3JhcCIs
dG9nZ2xlQWN0aW9uKTsKKyAgICBjb25uZWN0KGFjdGlvbixTSUdOQUwodG9nZ2xlZChib29sKSks
dGhpcyxTTE9UKHNldFdyYXBFbmFibGVkKGJvb2wpKSk7CisKICAgICAvLyBDb3B5IElucHV0IFRv
CiAgICAgYWN0aW9uID0gY29sbGVjdGlvbi0+YWRkQWN0aW9uKCJjb3B5LWlucHV0LXRvIik7CiAg
ICAgYWN0aW9uLT5zZXRUZXh0KGkxOG4oIkNvcHkgSW5wdXQgVG8uLi4iKSk7CkBAIC01MDAsNiAr
NTA2LDE0IEBACiAgICAgY29sbGVjdGlvbi0+YWRkQWN0aW9uKCJjaGFuZ2UtcHJvZmlsZSIsX2No
YW5nZVByb2ZpbGVNZW51LT5tZW51QWN0aW9uKCkpOwogICAgIGNvbm5lY3QoIF9jaGFuZ2VQcm9m
aWxlTWVudSAsIFNJR05BTChhYm91dFRvU2hvdygpKSAsIHRoaXMgLCBTTE9UKHByZXBhcmVDaGFu
Z2VQcm9maWxlTWVudSgpKSApOwogfQordm9pZCBTZXNzaW9uQ29udHJvbGxlcjo6c2V0V3JhcEVu
YWJsZWQoYm9vbCBlbmFibGVkKQoreworCV9zZXNzaW9uLT5zZXRXcmFwRW5hYmxlZChlbmFibGVk
KTsKKworCVRlcm1pbmFsRGlzcGxheTo6U2Nyb2xsQmFyUG9zaXRpb24gcG9zaXRpb24gPSBlbmFi
bGVkID8gVGVybWluYWxEaXNwbGF5OjpOb1Njcm9sbEJhciA6CisJCQkJCQkJCQkJCQkJCQlUZXJt
aW5hbERpc3BsYXk6OlNjcm9sbEJhckJvdHRvbTsKKwlfdmlldy0+c2V0U2Nyb2xsQmFyUG9zaXRp
b24oUXQ6Okhvcml6b250YWwscG9zaXRpb24pOworfQogdm9pZCBTZXNzaW9uQ29udHJvbGxlcjo6
Y2hhbmdlUHJvZmlsZShQcm9maWxlOjpQdHIgcHJvZmlsZSkKIHsKICAgICBTZXNzaW9uTWFuYWdl
cjo6aW5zdGFuY2UoKS0+c2V0U2Vzc2lvblByb2ZpbGUoX3Nlc3Npb24scHJvZmlsZSk7ICAgIApA
QCAtNjkyLDcgKzcwNiw3IEBACiAKICAgICBjb25uZWN0KCBfdmlldy0+c2NyZWVuV2luZG93KCkg
LCBTSUdOQUwob3V0cHV0Q2hhbmdlZCgpKSAsIHRoaXMgLCAKICAgICAgICAgICAgIFNMT1QodXBk
YXRlU2VhcmNoRmlsdGVyKCkpICk7Ci0gICAgY29ubmVjdCggX3ZpZXctPnNjcmVlbldpbmRvdygp
ICwgU0lHTkFMKHNjcm9sbGVkKGludCkpICwgdGhpcyAsIAorICAgICBjb25uZWN0KCBfdmlldy0+
c2NyZWVuV2luZG93KCkgLCBTSUdOQUwoc2Nyb2xsZWQoaW50LGludCkpICwgdGhpcyAsCiAgICAg
ICAgICAgICBTTE9UKHVwZGF0ZVNlYXJjaEZpbHRlcigpKSApOwogCiAgICAgX2xpc3RlbkZvclNj
cmVlbldpbmRvd1VwZGF0ZXMgPSB0cnVlOwpAQCAtMTMyOSw3ICsxMzQzLDcgQEAKICAgICAga0Rl
YnVnKDEyMTEpIDw8ICJGb3VuZCByZXN1bHQgYXQgbGluZSAiIDw8IGZpbmRQb3M7CiAKICAgICAg
Ly91cGRhdGUgZGlzcGxheSB0byBzaG93IGFyZWEgb2YgaGlzdG9yeSBjb250YWluaW5nIHNlbGVj
dGlvbgotICAgICB3aW5kb3ctPnNjcm9sbFRvKGZpbmRQb3MpOworICAgICB3aW5kb3ctPnNjcm9s
bFRvKGZpbmRQb3Msd2luZG93LT5jdXJyZW50Q29sdW1uKCkpOwogICAgICB3aW5kb3ctPnNldFNl
bGVjdGlvblN0YXJ0KCAwICwgZmluZFBvcyAtIHdpbmRvdy0+Y3VycmVudExpbmUoKSAsIGZhbHNl
ICk7CiAgICAgIHdpbmRvdy0+c2V0U2VsZWN0aW9uRW5kKCB3aW5kb3ctPmNvbHVtbkNvdW50KCkg
LCBmaW5kUG9zIC0gd2luZG93LT5jdXJyZW50TGluZSgpICk7CiAgICAgIHdpbmRvdy0+c2V0VHJh
Y2tPdXRwdXQoZmFsc2UpOwpJbmRleDogc3JjL1ZpZXdNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBzcmMvVmlld01hbmFnZXIuY3BwCShyZXZpc2lvbiA5Mzg4MTMpCisrKyBzcmMvVmlld01hbmFn
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTEsNyArNzExLDggQEAKICAgIGRpc3BsYXktPnNl
dFRlcm1pbmFsU2l6ZUhpbnQodHJ1ZSk7CiAgICBkaXNwbGF5LT5zZXRUcmlwbGVDbGlja01vZGUo
VGVybWluYWxEaXNwbGF5OjpTZWxlY3RXaG9sZUxpbmUpOwogICAgZGlzcGxheS0+c2V0VGVybWlu
YWxTaXplU3RhcnR1cCh0cnVlKTsKLSAgIGRpc3BsYXktPnNldFNjcm9sbEJhclBvc2l0aW9uKFRl
cm1pbmFsRGlzcGxheTo6U2Nyb2xsQmFyUmlnaHQpOworICAgZGlzcGxheS0+c2V0U2Nyb2xsQmFy
UG9zaXRpb24oUXQ6OlZlcnRpY2FsLFRlcm1pbmFsRGlzcGxheTo6U2Nyb2xsQmFyUmlnaHQpOwor
ICAgZGlzcGxheS0+c2V0U2Nyb2xsQmFyUG9zaXRpb24oUXQ6Okhvcml6b250YWwsVGVybWluYWxE
aXNwbGF5OjpOb1Njcm9sbEJhcik7CiAgICBkaXNwbGF5LT5zZXRSYW5kb21TZWVkKHNlc3Npb24t
PnNlc3Npb25JZCgpICogMzEpOwogCiAgICByZXR1cm4gZGlzcGxheTsKQEAgLTc4OSwxMSArNzkw
LDExIEBACiAgICAgaW50IHNjcm9sbEJhclBvc2l0aW9uID0gaW5mby0+cHJvcGVydHk8aW50PihQ
cm9maWxlOjpTY3JvbGxCYXJQb3NpdGlvbik7CiAKICAgICBpZiAoIHNjcm9sbEJhclBvc2l0aW9u
ID09IFByb2ZpbGU6OlNjcm9sbEJhckhpZGRlbiApCi0gICAgICAgdmlldy0+c2V0U2Nyb2xsQmFy
UG9zaXRpb24oVGVybWluYWxEaXNwbGF5OjpOb1Njcm9sbEJhcik7CisgICAgICAgdmlldy0+c2V0
U2Nyb2xsQmFyUG9zaXRpb24oUXQ6OlZlcnRpY2FsLFRlcm1pbmFsRGlzcGxheTo6Tm9TY3JvbGxC
YXIpOwogICAgIGVsc2UgaWYgKCBzY3JvbGxCYXJQb3NpdGlvbiA9PSBQcm9maWxlOjpTY3JvbGxC
YXJMZWZ0ICkKLSAgICAgICB2aWV3LT5zZXRTY3JvbGxCYXJQb3NpdGlvbihUZXJtaW5hbERpc3Bs
YXk6OlNjcm9sbEJhckxlZnQpOworICAgICAgIHZpZXctPnNldFNjcm9sbEJhclBvc2l0aW9uKFF0
OjpWZXJ0aWNhbCxUZXJtaW5hbERpc3BsYXk6OlNjcm9sbEJhckxlZnQpOwogICAgIGVsc2UgaWYg
KCBzY3JvbGxCYXJQb3NpdGlvbiA9PSBQcm9maWxlOjpTY3JvbGxCYXJSaWdodCApCi0gICAgICAg
dmlldy0+c2V0U2Nyb2xsQmFyUG9zaXRpb24oVGVybWluYWxEaXNwbGF5OjpTY3JvbGxCYXJSaWdo
dCk7CisgICAgICAgdmlldy0+c2V0U2Nyb2xsQmFyUG9zaXRpb24oUXQ6OlZlcnRpY2FsLFRlcm1p
bmFsRGlzcGxheTo6U2Nyb2xsQmFyUmlnaHQpOwogCiAgICAgLy8gdGVybWluYWwgZmVhdHVyZXMK
ICAgICBib29sIGJsaW5raW5nQ3Vyc29yID0gaW5mby0+cHJvcGVydHk8Ym9vbD4oUHJvZmlsZTo6
QmxpbmtpbmdDdXJzb3JFbmFibGVkKTsKSW5kZXg6IHNyYy9UZXJtaW5hbERpc3BsYXkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBzcmMvVGVybWluYWxEaXNwbGF5LmgJKHJldmlzaW9uIDkzODgxMykKKysrIHNy
Yy9UZXJtaW5hbERpc3BsYXkuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsMjQgKzk3LDQxIEBACiAg
ICAgeyAKICAgICAgICAgLyoqIERvIG5vdCBzaG93IHRoZSBzY3JvbGwgYmFyLiAqLwogICAgICAg
ICBOb1Njcm9sbEJhcj0wLCAKLSAgICAgICAgLyoqIFNob3cgdGhlIHNjcm9sbCBiYXIgb24gdGhl
IGxlZnQgc2lkZSBvZiB0aGUgZGlzcGxheS4gKi8KKyAgICAgICAgLyoqIAorCQkgKiBTaG93IHRo
ZSBzY3JvbGwgYmFyIG9uIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGRpc3BsYXkuICAKKwkJICogT25s
eSB2YWxpZCBmb3IgdGhlIHZlcnRpY2FsIHNjcm9sbCBiYXIuCisJCSAqLwogICAgICAgICBTY3Jv
bGxCYXJMZWZ0PTEsIAotICAgICAgICAvKiogU2hvdyB0aGUgc2Nyb2xsIGJhciBvbiB0aGUgcmln
aHQgc2lkZSBvZiB0aGUgZGlzcGxheS4gKi8KLSAgICAgICAgU2Nyb2xsQmFyUmlnaHQ9MiAKKyAg
ICAgICAgLyoqIAorCQkgKiBTaG93IHRoZSBzY3JvbGwgYmFyIG9uIHRoZSByaWdodCBzaWRlIG9m
IHRoZSBkaXNwbGF5LiAgCisJCSAqIE9ubHkgdmFsaWQgZm9yIHRoZSB2ZXJ0aWNhbCBzY3JvbGwg
YmFyLgorCQkgKi8KKyAgICAgICAgU2Nyb2xsQmFyUmlnaHQ9MiwKKwkJLyoqIAorCQkgKiBTaG93
IHRoZSBzY3JvbGwgYmFyIG9uIHRoZSBib3R0b20gZWRnZSBvZiB0aGUgZGlzcGxheS4gCisJCSAq
IE9ubHkgdmFsaWQgZm9yIHRoZSBob3Jpem9udGFsIHNjcm9sbCBiYXIuCisJCSAqLworCQlTY3Jv
bGxCYXJCb3R0b209MwogICAgIH07CiAgICAgLyoqIAotICAgICAqIFNwZWNpZmllcyB3aGV0aGVy
IHRoZSB0ZXJtaW5hbCBkaXNwbGF5IGhhcyBhIHZlcnRpY2FsIHNjcm9sbCBiYXIsIGFuZCBpZiBz
byB3aGV0aGVyIGl0Ci0gICAgICogaXMgc2hvd24gb24gdGhlIGxlZnQgb3IgcmlnaHQgc2lkZSBv
ZiB0aGUgZGlzcGxheS4KKyAgICAgKiBTcGVjaWZpZXMgd2hldGhlciBhIHNjcm9sbGJhciBpcyB2
aXNpYmxlIGFuZCB3aGF0IHBvc2l0aW9uIHRvIHBsYWNlIGl0IGluIHJlbGF0aXZlIHRvCisJICog
dGhlIGNvbnRlbnRzIG9mIHRoZSBkaXNwbGF5LgorCSAqCisJICogQHBhcmFtIHNjcm9sbEJhciBT
Y3JvbGxiYXIgdG8gc2hvdy9oaWRlIG9yIHJlcG9zaXRpb24uIAorCSAqIEBwYXJhbSBwb3NpdGlv
biBUaGUgbmV3IHBvc2l0aW9uIG9mIHRoZSBzY3JvbGwgYmFyCiAgICAgICovCi0gICAgdm9pZCBz
ZXRTY3JvbGxCYXJQb3NpdGlvbihTY3JvbGxCYXJQb3NpdGlvbiBwb3NpdGlvbik7Ci0KKyAgICB2
b2lkIHNldFNjcm9sbEJhclBvc2l0aW9uKFF0OjpPcmllbnRhdGlvbiBzY3JvbGxCYXIgLCBTY3Jv
bGxCYXJQb3NpdGlvbiBwb3NpdGlvbik7CisJCiAgICAgLyoqIAogICAgICAqIFNldHMgdGhlIGN1
cnJlbnQgcG9zaXRpb24gYW5kIHJhbmdlIG9mIHRoZSBkaXNwbGF5J3Mgc2Nyb2xsIGJhci4KICAg
ICAgKgotICAgICAqIEBwYXJhbSBjdXJzb3IgVGhlIHBvc2l0aW9uIG9mIHRoZSBzY3JvbGwgYmFy
J3MgdGh1bWIuCi0gICAgICogQHBhcmFtIGxpbmVzIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBz
Y3JvbGwgYmFyLgorICAgICAqIEBwYXJhbSB2ZXJ0aWNhbEN1cnNvciBUaGUgcG9zaXRpb24gb2Yg
dGhlIHZlcnRpY2FsIHNjcm9sbCBiYXIncyB0aHVtYi4KKyAgICAgKiBAcGFyYW0gbGluZXMgVGhl
IG1heGltdW0gdmFsdWUgb2YgdGhlIHZlcnRpY2FsIHNjcm9sbCBiYXIuCisJICogQHBhcmFtIGhv
cml6b250YWxDdXJzb3IgVGhlIHBvc2l0aW9uIG9mIHRoZSBob3Jpem9udGFsIHNjcm9sbCBiYXIn
cyB0aHVtYgorCSAqIEBwYXJhbSBjb2x1bW5zIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBob3Jp
em9udGFsIHNjcm9sbCBiYXIuCiAgICAgICovCi0gICAgdm9pZCBzZXRTY3JvbGwoaW50IGN1cnNv
ciwgaW50IGxpbmVzKTsKKyAgICB2b2lkIHNldFNjcm9sbCgJaW50IHZlcnRpY2FsQ3Vyc29yLCBp
bnQgbGluZXMsCisJCQkJCWludCBob3Jpem9udGFsQ3Vyc29yLCBpbnQgY29sdW1ucyApOwogCiAg
ICAgLyoqIAogICAgICAqIFJldHVybnMgdGhlIGRpc3BsYXkncyBmaWx0ZXIgY2hhaW4uICBXaGVu
IHRoZSBpbWFnZSBmb3IgdGhlIGRpc3BsYXkgaXMgdXBkYXRlZCwKQEAgLTU3Myw3ICs1OTAsNyBA
QAogCiBwcm90ZWN0ZWQgc2xvdHM6CiAKLSAgICB2b2lkIHNjcm9sbEJhclBvc2l0aW9uQ2hhbmdl
ZChpbnQgdmFsdWUpOworICAgIHZvaWQgc2Nyb2xsQmFyUG9zaXRpb25DaGFuZ2VkKCk7CiAgICAg
dm9pZCBibGlua0V2ZW50KCk7CiAgICAgdm9pZCBibGlua0N1cnNvckV2ZW50KCk7CiAgICAgCkBA
IC03MTUsNyArNzMyLDExIEBACiAKICAgICBRQ2xpcGJvYXJkKiAgX2NsaXBib2FyZDsKICAgICBR
U2Nyb2xsQmFyKiBfc2Nyb2xsQmFyOwotICAgIFNjcm9sbEJhclBvc2l0aW9uIF9zY3JvbGxiYXJM
b2NhdGlvbjsKKwlRU2Nyb2xsQmFyKiBfaG9yaXpvbnRhbFNjcm9sbEJhcjsKKworICAgIFNjcm9s
bEJhclBvc2l0aW9uIF92ZXJ0aWNhbFNjcm9sbEJhclBvczsKKwlTY3JvbGxCYXJQb3NpdGlvbiBf
aG9yaXpvbnRhbFNjcm9sbEJhclBvczsKKwogICAgIFFTdHJpbmcgICAgIF93b3JkQ2hhcmFjdGVy
czsKICAgICBpbnQgICAgICAgICBfYmVsbE1vZGU7CiAKSW5kZXg6IHNyYy9TY3JlZW5XaW5kb3cu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBzcmMvU2NyZWVuV2luZG93LmgJKHJldmlzaW9uIDkzODgxMykKKysr
IHNyYy9TY3JlZW5XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDYgKzE0NSw4IEBACiAg
ICAgdm9pZCBzZXRXaW5kb3dMaW5lcyhpbnQgbGluZXMpOwogICAgIC8qKiBSZXR1cm5zIHRoZSBu
dW1iZXIgb2YgbGluZXMgaW4gdGhlIHdpbmRvdyAqLwogICAgIGludCB3aW5kb3dMaW5lcygpIGNv
bnN0OworCS8qKiBTZXRzIHRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgd2luZG93ICovCisJ
dm9pZCBzZXRXaW5kb3dDb2x1bW5zKGludCBjb2x1bW5zKTsKICAgICAvKiogUmV0dXJucyB0aGUg
bnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIHdpbmRvdyAqLwogICAgIGludCB3aW5kb3dDb2x1bW5z
KCkgY29uc3Q7CiAgICAgCkBAIC0xNTUsNiArMTU3LDggQEAKIAogICAgIC8qKiBSZXR1cm5zIHRo
ZSBpbmRleCBvZiB0aGUgbGluZSB3aGljaCBpcyBjdXJyZW50bHkgYXQgdGhlIHRvcCBvZiB0aGlz
IHdpbmRvdyAqLwogICAgIGludCBjdXJyZW50TGluZSgpIGNvbnN0OworCS8qKiBSZXR1cm5zIHRo
ZSBpbmRleCBvZiB0aGUgY29sdW1uIHdoaWNoIGlzIGN1cnJlbnRseSBhdCB0aGUgbGVmdCBlZGdl
IG9mIHRoaXMgd2luZG93ICovCisJaW50IGN1cnJlbnRDb2x1bW4oKSBjb25zdDsKIAogICAgIC8q
KiAKICAgICAgKiBSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgY3Vyc29yIApAQCAtMTY4LDgg
KzE3MiwxMSBAQAogICAgICAqLwogICAgIGJvb2wgYXRFbmRPZk91dHB1dCgpIGNvbnN0OwogCi0g
ICAgLyoqIFNjcm9sbHMgdGhlIHdpbmRvdyBzbyB0aGF0IEBwIGxpbmUgaXMgYXQgdGhlIHRvcCBv
ZiB0aGUgd2luZG93ICovCi0gICAgdm9pZCBzY3JvbGxUbyggaW50IGxpbmUgKTsKKyAgICAvKiog
CisJICogU2Nyb2xscyB0aGUgd2luZG93IHNvIHRoYXQgQHAgbGluZSBpcyBhdCB0aGUgdG9wIG9m
IHRoZSB3aW5kb3cgYW5kCisJICogQHAgY29sdW1uIGlzIGF0IHRoZSBsZWZ0IGVkZ2Ugb2YgdGhl
IHdpbmRvdy4gCisJICovCisgICAgdm9pZCBzY3JvbGxUbyggaW50IGxpbmUgLCBpbnQgY29sdW1u
ICk7CiAKICAgICAvKiogRGVzY3JpYmVzIHRoZSB1bml0cyB3aGljaCBzY3JvbGxCeSgpIG1vdmVz
IHRoZSB3aW5kb3cgYnkuICovCiAgICAgZW51bSBSZWxhdGl2ZVNjcm9sbE1vZGUKQEAgLTIzMywy
MyArMjQwLDMwIEBACiAgICAgICogRW1pdHRlZCB3aGVuIHRoZSBzY3JlZW4gd2luZG93IGlzIHNj
cm9sbGVkIHRvIGEgZGlmZmVyZW50IHBvc2l0aW9uLgogICAgICAqIAogICAgICAqIEBwYXJhbSBs
aW5lIFRoZSBsaW5lIHdoaWNoIGlzIG5vdyBhdCB0aGUgdG9wIG9mIHRoZSB3aW5kb3cuCisJICog
QHBhcmFtIGNvbHVtbiBUaGUgY29sdW1uIHdoaWNoIGlzIG5vdyBhdCB0aGUgbGVmdCBlZGdlIG9m
IHRoZSB3aW5kb3cuCiAgICAgICovCi0gICAgdm9pZCBzY3JvbGxlZChpbnQgbGluZSk7CisgICAg
dm9pZCBzY3JvbGxlZChpbnQgbGluZSAsIGludCBjb2x1bW4pOwogCiAgICAgLyoqIEVtaXR0ZWQg
d2hlbiB0aGUgc2VsZWN0aW9uIGlzIGNoYW5nZWQuICovCiAgICAgdm9pZCBzZWxlY3Rpb25DaGFu
Z2VkKCk7CiAKIHByaXZhdGU6CiAgICAgaW50IGVuZFdpbmRvd0xpbmUoKSBjb25zdDsKKyAgICBp
bnQgZW5kV2luZG93Q29sdW1uKCkgY29uc3Q7CiAgICAgdm9pZCBmaWxsVW51c2VkQXJlYSgpOwor
ICAgIHZvaWQgc2Nyb2xsVG9MaW5lKGludCBsaW5lKTsKKyAgICB2b2lkIHNjcm9sbFRvQ29sdW1u
KGludCBjb2x1bW4pOwogCisKICAgICBTY3JlZW4qIF9zY3JlZW47IC8vIHNlZSBzZXRTY3JlZW4o
KSAsIHNjcmVlbigpCiAgICAgQ2hhcmFjdGVyKiBfd2luZG93QnVmZmVyOwogICAgIGludCBfd2lu
ZG93QnVmZmVyU2l6ZTsKICAgICBib29sIF9idWZmZXJOZWVkc1VwZGF0ZTsKIAogICAgIGludCAg
X3dpbmRvd0xpbmVzOworICAgIGludCAgX3dpbmRvd0NvbHVtbnM7CiAgICAgaW50ICBfY3VycmVu
dExpbmU7IC8vIHNlZSBzY3JvbGxUbygpICwgY3VycmVudExpbmUoKQorICAgIGludCAgX2N1cnJl
bnRDb2x1bW47IC8vIHNlZSBzY3JvbGxUbygpICwgY3VycmVudENvbHVtbigpCiAgICAgYm9vbCBf
dHJhY2tPdXRwdXQ7IC8vIHNlZSBzZXRUcmFja091dHB1dCgpICwgdHJhY2tPdXRwdXQoKSAKICAg
ICBpbnQgIF9zY3JvbGxDb3VudDsgLy8gY291bnQgb2YgbGluZXMgd2hpY2ggdGhlIHdpbmRvdyBo
YXMgYmVlbiBzY3JvbGxlZCBieSBzaW5jZQogICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUg
bGFzdCBjYWxsIHRvIHJlc2V0U2Nyb2xsQ291bnQoKQpJbmRleDogc3JjL1NjcmVlbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHNyYy9TY3JlZW4uaAkocmV2aXNpb24gOTM4ODEzKQorKysgc3JjL1NjcmVlbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNjcsOCArMzY3LDEyIEBACiAgICAgICogQHBhcmFtIHNpemUg
U2l6ZSBvZiBAcCBkZXN0IGluIENoYXJhY3RlcnMKICAgICAgKiBAcGFyYW0gc3RhcnRMaW5lIElu
ZGV4IG9mIGZpcnN0IGxpbmUgdG8gY29weQogICAgICAqIEBwYXJhbSBlbmRMaW5lIEluZGV4IG9m
IGxhc3QgbGluZSB0byBjb3B5CisJICogQHBhcmFtIHN0YXJ0Q29sdW1uIEluZGV4IG9mIGZpcnN0
IGNvbHVtbiB0byBjb3B5CisJICogQHBhcmFtIGVuZENvbHVtbiBJbmRleCBvZiBsYXN0IGNvbHVt
biB0byBjb3B5CiAgICAgICovCi0gICAgdm9pZCBnZXRJbWFnZSggQ2hhcmFjdGVyKiBkZXN0ICwg
aW50IHNpemUgLCBpbnQgc3RhcnRMaW5lICwgaW50IGVuZExpbmUgKSBjb25zdDsKKyAgICB2b2lk
IGdldEltYWdlKCBDaGFyYWN0ZXIqIGRlc3QgLCBpbnQgc2l6ZSAsIAorCQkJCSAgIGludCBzdGFy
dExpbmUgLCBpbnQgZW5kTGluZSwKKwkJCQkgICBpbnQgc3RhcnRDb2x1bW4gLCBpbnQgZW5kQ29s
dW1uICkgY29uc3Q7CiAKICAgICAvKiogCiAgICAgICogUmV0dXJucyB0aGUgYWRkaXRpb25hbCBh
dHRyaWJ1dGVzIGFzc29jaWF0ZWQgd2l0aCBsaW5lcyBpbiB0aGUgaW1hZ2UuCkBAIC01MzAsNiAr
NTM0LDI2IEBACiAgICAgICovCiAgICAgdm9pZCByZXNldERyb3BwZWRMaW5lcygpOwogCisKKyAg
ICAvKioKKyAgICAgKiBTZXRzIHdoZXRoZXIgbGluZSB3cmFwcGluZyBpcyBlbmFibGVkIGlmIE1P
REVfV3JhcCBpcyBvbi4KKyAgICAgKiBJZiBsaW5lIHdyYXBwaW5nIGlzIGRpc2FibGVkLCBhdHRl
bXB0cyB0byBhZGQgbmV3IGNoYXJhY3RlcnMgYXQgdGhlCisgICAgICogZW5kIG9mIGEgbGluZSB3
aWxsIHJlc3VsdCBpbiB0aGUgaW1hZ2Ugc2l6ZSBiZWluZyBpbmNyZWFzZWQgdG8gYWNjb21vZGF0
ZQorICAgICAqIHRoZSBuZXcgY2hhcmFjdGVyLgorICAgICAqCisgICAgICogTGluZSB3cmFwcGlu
ZyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCisgICAgICovCisgICAgdm9pZCBzZXRXcmFwRW5hYmxl
ZChib29sIGVuYWJsZVdyYXApOworICAgIC8qKiBTZWUgc2V0V3JhcEVuYWJsZWQoKSAqLworICAg
IGJvb2wgd3JhcEVuYWJsZWQoKSBjb25zdDsKKyAKKyAgICAvKioKKyAgICAgKiBSZWZvcm1hdHMg
bGluZXMgb2YgdGV4dCBvbiB0aGUgc2NyZWVuLiAgVGhpcyBzaG91bGQgYmUgY2FsbGVkCisgICAg
ICogYWZ0ZXIgc2V0V3JhcEVuYWJsZWQoKSBpcyBjYWxsZWQgYW5kIGFmdGVyIHRoZSBzY3JlZW4g
c2l6ZSBoYXMgYmVlbgorICAgICAqIHVwZGF0ZWQuCisgICAgICovCisgICAgdm9pZCByZWZvcm1h
dCgpOworCiAgICAgLyoqIAogICAgICAgKiBGaWxscyB0aGUgYnVmZmVyIEBwIGRlc3Qgd2l0aCBA
cCBjb3VudCBpbnN0YW5jZXMgb2YgdGhlIGRlZmF1bHQgKGllLiBibGFuaykKICAgICAgICogQ2hh
cmFjdGVyIHN0eWxlLgpAQCAtNTg2LDEyICs2MTAsMTMgQEAKICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGVuZEluZGV4LCBib29sIHByZXNlcnZlTGluZUJyZWFrcyA9IHRydWUpIGNvbnN0Owog
ICAgIC8vIGNvcGllcyAnY291bnQnIGxpbmVzIGZyb20gdGhlIHNjcmVlbiBidWZmZXIgaW50byAn
ZGVzdCcsCiAgICAgLy8gc3RhcnRpbmcgZnJvbSAnc3RhcnRMaW5lJywgd2hlcmUgMCBpcyB0aGUg
Zmlyc3QgbGluZSBpbiB0aGUgc2NyZWVuIGJ1ZmZlcgotICAgIHZvaWQgY29weUZyb21TY3JlZW4o
Q2hhcmFjdGVyKiBkZXN0LCBpbnQgc3RhcnRMaW5lLCBpbnQgY291bnQpIGNvbnN0OworICAgIHZv
aWQgY29weUZyb21TY3JlZW4oQ2hhcmFjdGVyKiBkZXN0LCBpbnQgc3RhcnRMaW5lLCBpbnQgbGlu
ZUNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0Q29sdW1uLCBpbnQgY29s
dW1uQ291bnQpIGNvbnN0OwogICAgIC8vIGNvcGllcyAnY291bnQnIGxpbmVzIGZyb20gdGhlIGhp
c3RvcnkgYnVmZmVyIGludG8gJ2Rlc3QnLAogICAgIC8vIHN0YXJ0aW5nIGZyb20gJ3N0YXJ0TGlu
ZScsIHdoZXJlIDAgaXMgdGhlIGZpcnN0IGxpbmUgaW4gdGhlIGhpc3RvcnkKLSAgICB2b2lkIGNv
cHlGcm9tSGlzdG9yeShDaGFyYWN0ZXIqIGRlc3QsIGludCBzdGFydExpbmUsIGludCBjb3VudCkg
Y29uc3Q7CisgICAgdm9pZCBjb3B5RnJvbUhpc3RvcnkoQ2hhcmFjdGVyKiBkZXN0LCBpbnQgc3Rh
cnRMaW5lLCBpbnQgbGluZUNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFy
dENvbHVtbiwgaW50IGNvbHVtbkNvdW50KSBjb25zdDsKIAotCiAgICAgLy8gc2NyZWVuIGltYWdl
IC0tLS0tLS0tLS0tLS0tLS0KICAgICBpbnQgbGluZXM7CiAgICAgaW50IGNvbHVtbnM7CkBAIC02
NTgsNiArNjgzLDggQEAKICAgICAvLyBsYXN0IHBvc2l0aW9uIHdoZXJlIHdlIGFkZGVkIGEgY2hh
cmFjdGVyCiAgICAgaW50IGxhc3RQb3M7CiAKKwlib29sIGRpc2FibGVXcmFwOworCiAgICAgc3Rh
dGljIENoYXJhY3RlciBkZWZhdWx0Q2hhcjsKIH07CiAKSW5kZXg6IHNyYy9UZXJtaW5hbERpc3Bs
YXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHNyYy9UZXJtaW5hbERpc3BsYXkuY3BwCShyZXZpc2lvbiA5
Mzg4MTMpCisrKyBzcmMvVGVybWluYWxEaXNwbGF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4
LDYgKzEzOCw3IEBACiAgICAgICAgIGNvbm5lY3QoIF9zY3JlZW5XaW5kb3cgLCBTSUdOQUwob3V0
cHV0Q2hhbmdlZCgpKSAsIHRoaXMgLCBTTE9UKHVwZGF0ZUxpbmVQcm9wZXJ0aWVzKCkpICk7CiAg
ICAgICAgIGNvbm5lY3QoIF9zY3JlZW5XaW5kb3cgLCBTSUdOQUwob3V0cHV0Q2hhbmdlZCgpKSAs
IHRoaXMgLCBTTE9UKHVwZGF0ZUltYWdlKCkpICk7CiAgICAgICAgIHdpbmRvdy0+c2V0V2luZG93
TGluZXMoX2xpbmVzKTsKKyAgICAgICAgd2luZG93LT5zZXRXaW5kb3dDb2x1bW5zKF9jb2x1bW5z
KTsKICAgICB9CiB9CiAKQEAgLTE1NCw2ICsxNTUsNyBAQAogCiAgICAgICAvLyBBdm9pZCBwcm9w
YWdhdGluZyB0aGUgcGFsZXR0ZSBjaGFuZ2UgdG8gdGhlIHNjcm9sbCBiYXIgCiAgICAgICBfc2Ny
b2xsQmFyLT5zZXRQYWxldHRlKCBRQXBwbGljYXRpb246OnBhbGV0dGUoKSApOyAgCisgICAgICBf
aG9yaXpvbnRhbFNjcm9sbEJhci0+c2V0UGFsZXR0ZSggUUFwcGxpY2F0aW9uOjpwYWxldHRlKCkg
KTsKIAogICAgIHVwZGF0ZSgpOwogfQpAQCAtMzAzLDcgKzMwNSw4IEBACiAsX2xpbmVTZWxlY3Rp
b25Nb2RlKGZhbHNlKQogLF9wcmVzZXJ2ZUxpbmVCcmVha3MoZmFsc2UpCiAsX2NvbHVtblNlbGVj
dGlvbk1vZGUoZmFsc2UpCi0sX3Njcm9sbGJhckxvY2F0aW9uKE5vU2Nyb2xsQmFyKQorLF92ZXJ0
aWNhbFNjcm9sbEJhclBvcyhOb1Njcm9sbEJhcikKKyxfaG9yaXpvbnRhbFNjcm9sbEJhclBvcyhO
b1Njcm9sbEJhcikKICxfd29yZENoYXJhY3RlcnMoIjpALS4vX34iKQogLF9iZWxsTW9kZShTeXN0
ZW1CZWVwQmVsbCkKICxfYmxpbmtpbmcoZmFsc2UpCkBAIC0zMzYsMTEgKzMzOSwxMiBAQAogCiAg
IC8vIGNyZWF0ZSBzY3JvbGwgYmFyIGZvciBzY3JvbGxpbmcgb3V0cHV0IHVwIGFuZCBkb3duCiAg
IC8vIHNldCB0aGUgc2Nyb2xsIGJhcidzIHNsaWRlciB0byBvY2N1cHkgdGhlIHdob2xlIGFyZWEg
b2YgdGhlIHNjcm9sbCBiYXIgaW5pdGlhbGx5Ci0gIF9zY3JvbGxCYXIgPSBuZXcgUVNjcm9sbEJh
cih0aGlzKTsKLSAgc2V0U2Nyb2xsKDAsMCk7IAorICBfc2Nyb2xsQmFyID0gbmV3IFFTY3JvbGxC
YXIoUXQ6OlZlcnRpY2FsLHRoaXMpOworICBfaG9yaXpvbnRhbFNjcm9sbEJhciA9IG5ldyBRU2Ny
b2xsQmFyKFF0OjpIb3Jpem9udGFsLHRoaXMpOworCisgIHNldFNjcm9sbCgwLDAsMCwwKTsKICAg
X3Njcm9sbEJhci0+c2V0Q3Vyc29yKCBRdDo6QXJyb3dDdXJzb3IgKTsKLSAgY29ubmVjdChfc2Ny
b2xsQmFyLCBTSUdOQUwodmFsdWVDaGFuZ2VkKGludCkpLCB0aGlzLCAKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFNMT1Qoc2Nyb2xsQmFyUG9zaXRpb25DaGFuZ2VkKGludCkpKTsKKyAgX2hvcml6
b250YWxTY3JvbGxCYXItPnNldEN1cnNvciggUXQ6OkFycm93Q3Vyc29yICk7CiAKICAgLy8gc2V0
dXAgdGltZXJzIGZvciBibGlua2luZyBjdXJzb3IgYW5kIHRleHQKICAgX2JsaW5rVGltZXIgICA9
IG5ldyBRVGltZXIodGhpcyk7CkBAIC01ODMsMTAgKzU4NywyMyBAQAogICAgICAgICAvLyBiZWlu
ZyBvdXRzaWRlIG9mIHRoZSB0ZXJtaW5hbCBkaXNwbGF5IGFuZCB2aXN1YWwgY29uc2lzdGVuY3kg
d2l0aCBvdGhlciBLREUKICAgICAgICAgLy8gYXBwbGljYXRpb25zLiAgCiAgICAgICAgIC8vCi0g
ICAgICAgIFFSZWN0IHNjcm9sbEJhckFyZWEgPSBfc2Nyb2xsQmFyLT5pc1Zpc2libGUoKSA/IAor
ICAgICAgICBRUmVjdCB2ZXJ0aWNhbFNjcm9sbEJhckFyZWEgPSBfc2Nyb2xsQmFyLT5pc1Zpc2li
bGUoKSA/IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5pbnRlcnNl
Y3RlZChfc2Nyb2xsQmFyLT5nZW9tZXRyeSgpKSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBRUmVjdCgpOwotICAgICAgICBRUmVnaW9uIGNvbnRlbnRzUmVnaW9uID0gUVJl
Z2lvbihyZWN0KS5zdWJ0cmFjdGVkKHNjcm9sbEJhckFyZWEpOworCisJCS8vIHByZXRlbmQgdGhh
dCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIgY292ZXJzIHRoZSBlbnRpcmUgd2lkdGggb2YgdGhl
IHNjcmVlbgorCQkvLyB0aGlzIGVuc3VyZXMgdGhhdCB0aGUgZ2FiIGluIHRoZSBjb3JuZXIgd2hl
cmUgdGhlIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIHNjcm9sbGJhcnMgCisJCS8vIG1lZXQgaXMg
cGFpbnRlZCB3aXRoIHRoZSBzYW1lIGJhY2tncm91bmQgY29sb3IgYXMgdGhlIHNjcm9sbGJhcnMg
dGhlbXNlbHZlcworCQlRUmVjdCBoU2Nyb2xsQmFyR2VvbWV0cnkgPSBRUmVjdChjb250ZW50c1Jl
Y3QoKS5ib3R0b21MZWZ0KCkgLSAKKwkJCQkJCQkJCQlRUG9pbnQoMCxfaG9yaXpvbnRhbFNjcm9s
bEJhci0+aGVpZ2h0KCktMSksCisJCQkJCQkJCQkJUVNpemUod2lkdGgoKSxfaG9yaXpvbnRhbFNj
cm9sbEJhci0+aGVpZ2h0KCkpKTsKKworCQlRUmVjdCBob3Jpem9udGFsU2Nyb2xsQmFyQXJlYSA9
IF9ob3Jpem9udGFsU2Nyb2xsQmFyLT5pc1Zpc2libGUoKSA/IAorCQkJCQkJCQkJcmVjdC5pbnRl
cnNlY3RlZChoU2Nyb2xsQmFyR2VvbWV0cnkpIDogUVJlY3QoKTsKKworICAgICAgICBRUmVnaW9u
IGNvbnRlbnRzUmVnaW9uID0gUVJlZ2lvbihyZWN0KQorCQkJCQkJCQkuc3VidHJhY3RlZCh2ZXJ0
aWNhbFNjcm9sbEJhckFyZWEpCisJCQkJCQkJCS5zdWJ0cmFjdGVkKGhvcml6b250YWxTY3JvbGxC
YXJBcmVhKTsKICAgICAgICAgUVJlY3QgY29udGVudHNSZWN0ID0gY29udGVudHNSZWdpb24uYm91
bmRpbmdSZWN0KCk7CiAKICAgICAgICAgaWYgKCBIQVZFX1RSQU5TUEFSRU5DWSAmJiBxQWxwaGEo
X2JsZW5kQ29sb3IpIDwgMHhmZiAmJiB1c2VPcGFjaXR5U2V0dGluZyApIApAQCAtNjAyLDcgKzYx
OSw4IEBACiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBhaW50ZXIuZmlsbFJlY3QoY29udGVu
dHNSZWN0LCBiYWNrZ3JvdW5kQ29sb3IpOwogCi0gICAgICAgIHBhaW50ZXIuZmlsbFJlY3Qoc2Ny
b2xsQmFyQXJlYSxfc2Nyb2xsQmFyLT5wYWxldHRlKCkuYmFja2dyb3VuZCgpKTsKKyAgICAgICAg
cGFpbnRlci5maWxsUmVjdCh2ZXJ0aWNhbFNjcm9sbEJhckFyZWEsX3Njcm9sbEJhci0+cGFsZXR0
ZSgpLmJhY2tncm91bmQoKSk7CisJCXBhaW50ZXIuZmlsbFJlY3QoaG9yaXpvbnRhbFNjcm9sbEJh
ckFyZWEsX2hvcml6b250YWxTY3JvbGxCYXItPnBhbGV0dGUoKS5iYWNrZ3JvdW5kKCkpOwogfQog
CiB2b2lkIFRlcm1pbmFsRGlzcGxheTo6ZHJhd0N1cnNvcihRUGFpbnRlciYgcGFpbnRlciwgCkBA
IC04MTEsMTYgKzgyOSwxOSBAQAogICAgIGludCBzY3JvbGxCYXJXaWR0aCA9IF9zY3JvbGxCYXIt
PmlzSGlkZGVuKCkgPyAwIDogX3Njcm9sbEJhci0+d2lkdGgoKTsKICAgICBjb25zdCBpbnQgU0NS
T0xMQkFSX0NPTlRFTlRfR0FQID0gMTsKICAgICBRUmVjdCBzY3JvbGxSZWN0OwotICAgIGlmICgg
X3Njcm9sbGJhckxvY2F0aW9uID09IFNjcm9sbEJhckxlZnQgKQorCisvL19zY3JvbGxiYXJMb2Nh
dGlvbiA9PSBTY3JvbGxCYXJMZWZ0ICkKKyAgICBzd2l0Y2goX3ZlcnRpY2FsU2Nyb2xsQmFyUG9z
KQogICAgIHsKLSAgICAgICAgc2Nyb2xsUmVjdC5zZXRMZWZ0KHNjcm9sbEJhcldpZHRoK1NDUk9M
TEJBUl9DT05URU5UX0dBUCk7Ci0gICAgICAgIHNjcm9sbFJlY3Quc2V0UmlnaHQod2lkdGgoKSk7
CisgICAgICAgIGNhc2UgTm9TY3JvbGxCYXIgOiAgLy8gVE9ETyBmaXggbWUKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFNjcm9sbEJhckxlZnQgOgorICAgICAgICAgICAgc2Nyb2xs
UmVjdC5zZXRMZWZ0KHNjcm9sbEJhcldpZHRoK1NDUk9MTEJBUl9DT05URU5UX0dBUCk7CisgICAg
ICAgICAgICBzY3JvbGxSZWN0LnNldFJpZ2h0KHdpZHRoKCkpOworICAgICAgICBjYXNlIFNjcm9s
bEJhclJpZ2h0IDoKKyAgICAgICAgICAgIHNjcm9sbFJlY3Quc2V0TGVmdCgwKTsKKyAgICAgICAg
ICAgIHNjcm9sbFJlY3Quc2V0UmlnaHQod2lkdGgoKSAtIHNjcm9sbEJhcldpZHRoIC0gU0NST0xM
QkFSX0NPTlRFTlRfR0FQKTsKICAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgc2Nyb2xs
UmVjdC5zZXRMZWZ0KDApOwotICAgICAgICBzY3JvbGxSZWN0LnNldFJpZ2h0KHdpZHRoKCkgLSBz
Y3JvbGxCYXJXaWR0aCAtIFNDUk9MTEJBUl9DT05URU5UX0dBUCk7Ci0gICAgfQogICAgIHZvaWQq
IGZpcnN0Q2hhclBvcyA9ICZfaW1hZ2VbIHJlZ2lvbi50b3AoKSAqIHRoaXMtPl9jb2x1bW5zIF07
CiAgICAgdm9pZCogbGFzdENoYXJQb3MgPSAmX2ltYWdlWyAocmVnaW9uLnRvcCgpICsgYWJzKGxp
bmVzKSkgKiB0aGlzLT5fY29sdW1ucyBdOwogCkBAIC05NDIsNyArOTYzLDEwIEBACiAgIGludCBs
aW5lcyA9IF9zY3JlZW5XaW5kb3ctPndpbmRvd0xpbmVzKCk7CiAgIGludCBjb2x1bW5zID0gX3Nj
cmVlbldpbmRvdy0+d2luZG93Q29sdW1ucygpOwogCi0gIHNldFNjcm9sbCggX3NjcmVlbldpbmRv
dy0+Y3VycmVudExpbmUoKSAsIF9zY3JlZW5XaW5kb3ctPmxpbmVDb3VudCgpICk7CisgIHNldFNj
cm9sbCggX3NjcmVlbldpbmRvdy0+Y3VycmVudExpbmUoKSAsIAorICAJCQkgX3NjcmVlbldpbmRv
dy0+bGluZUNvdW50KCkgLCAKKwkJCSBfc2NyZWVuV2luZG93LT5jdXJyZW50Q29sdW1uKCkgLCAK
KwkJCSBfc2NyZWVuV2luZG93LT5jb2x1bW5Db3VudCgpICk7CiAKICAgaWYgKCFfaW1hZ2UpCiAg
ICAgIHVwZGF0ZUltYWdlU2l6ZSgpOyAvLyBDcmVhdGUgX2ltYWdlCkBAIC0xNTUyLDggKzE1NzYs
MTIgQEAKICAgfQogCiAgIGlmIChfc2NyZWVuV2luZG93KQotICAgICAgX3NjcmVlbldpbmRvdy0+
c2V0V2luZG93TGluZXMoX2xpbmVzKTsKKyAgeworICAgIF9zY3JlZW5XaW5kb3ctPnNldFdpbmRv
d0xpbmVzKF9saW5lcyk7CisgICAgX3NjcmVlbldpbmRvdy0+c2V0V2luZG93Q29sdW1ucyhfY29s
dW1ucyk7CisgIH0KIAorCiAgIF9yZXNpemluZyA9IChvbGRsaW4hPV9saW5lcykgfHwgKG9sZGNv
bCE9X2NvbHVtbnMpOwogCiAgIGlmICggX3Jlc2l6aW5nICkKQEAgLTE1ODUsMTIgKzE2MTMsMTIg
QEAKIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotdm9p
ZCBUZXJtaW5hbERpc3BsYXk6OnNjcm9sbEJhclBvc2l0aW9uQ2hhbmdlZChpbnQpCit2b2lkIFRl
cm1pbmFsRGlzcGxheTo6c2Nyb2xsQmFyUG9zaXRpb25DaGFuZ2VkKCkKIHsKICAgaWYgKCAhX3Nj
cmVlbldpbmRvdyApIAogICAgICAgcmV0dXJuOwogCi0gIF9zY3JlZW5XaW5kb3ctPnNjcm9sbFRv
KCBfc2Nyb2xsQmFyLT52YWx1ZSgpICk7CisgIF9zY3JlZW5XaW5kb3ctPnNjcm9sbFRvKCBfc2Ny
b2xsQmFyLT52YWx1ZSgpICwgX2hvcml6b250YWxTY3JvbGxCYXItPnZhbHVlKCkgKTsKIAogICAv
LyBpZiB0aGUgdGh1bWIgaGFzIGJlZW4gbW92ZWQgdG8gdGhlIGJvdHRvbSBvZiB0aGUgX3Njcm9s
bEJhciB0aGVuIHNldAogICAvLyB0aGUgZGlzcGxheSB0byBhdXRvbWF0aWNhbGx5IHRyYWNrIG5l
dyBvdXRwdXQsIApAQCAtMTYwMiw0MSArMTYzMCw2NiBAQAogICB1cGRhdGVJbWFnZSgpOwogfQog
Ci12b2lkIFRlcm1pbmFsRGlzcGxheTo6c2V0U2Nyb2xsKGludCBjdXJzb3IsIGludCBzbGluZXMp
Cit2b2lkIFRlcm1pbmFsRGlzcGxheTo6c2V0U2Nyb2xsKGludCB2ZXJ0aWNhbEN1cnNvciwgaW50
IGxpbmVzLAorCQkJCQkJCQlpbnQgaG9yaXpvbnRhbEN1cnNvciwgaW50IGNvbHVtbnMpCiB7Cisg
IGJvb2wgdmVydGljYWxTY3JvbGxVbmNoYW5nZWQgPSAJX3Njcm9sbEJhci0+bWluaW11bSgpID09
IDAgJiYKKyAgCQkJCQkJCQkJX3Njcm9sbEJhci0+bWF4aW11bSgpID09IChsaW5lcyAtIF9saW5l
cykgJiYKKwkJCQkJCQkJCV9zY3JvbGxCYXItPnZhbHVlKCkgPT0gdmVydGljYWxDdXJzb3I7CisK
KyAgYm9vbCBob3Jpem9udGFsU2Nyb2xsVW5jaGFuZ2VkID0gX2hvcml6b250YWxTY3JvbGxCYXIt
Pm1pbmltdW0oKSA9PSAwICYmCisgIAkJCQkJCQkJICAgX2hvcml6b250YWxTY3JvbGxCYXItPm1h
eGltdW0oKSA9PSAoY29sdW1ucyAtIF9jb2x1bW5zKSAmJgorCQkJCQkJCQkgICBfaG9yaXpvbnRh
bFNjcm9sbEJhci0+dmFsdWUoKSA9PSBob3Jpem9udGFsQ3Vyc29yOworCiAgIC8vIHVwZGF0ZSBf
c2Nyb2xsQmFyIGlmIHRoZSByYW5nZSBvciB2YWx1ZSBoYXMgY2hhbmdlZCwKICAgLy8gb3RoZXJ3
aXNlIHJldHVybgogICAvLwogICAvLyBzZXR0aW5nIHRoZSByYW5nZSBvciB2YWx1ZSBvZiBhIF9z
Y3JvbGxCYXIgd2lsbCBhbHdheXMgdHJpZ2dlcgogICAvLyBhIHJlcGFpbnQsIHNvIGl0IHNob3Vs
ZCBiZSBhdm9pZGVkIGlmIGl0IGlzIG5vdCBuZWNlc3NhcnkKLSAgaWYgKCBfc2Nyb2xsQmFyLT5t
aW5pbXVtKCkgPT0gMCAgICAgICAgICAgICAgICAgJiYKLSAgICAgICBfc2Nyb2xsQmFyLT5tYXhp
bXVtKCkgPT0gKHNsaW5lcyAtIF9saW5lcykgJiYKLSAgICAgICBfc2Nyb2xsQmFyLT52YWx1ZSgp
ICAgPT0gY3Vyc29yICkKKyAgCisKKyAgc3RhdGljIGNvbnN0IGNoYXIqIHZhbHVlQ2hhbmdlZFNp
Z25hbCA9IFNJR05BTCh2YWx1ZUNoYW5nZWQoaW50KSk7CisgIHN0YXRpYyBjb25zdCBjaGFyKiBz
Y3JvbGxCYXJWYWx1ZVNsb3QgPSBTTE9UKHNjcm9sbEJhclBvc2l0aW9uQ2hhbmdlZCgpKTsKKwor
ICAvLyBVcGRhdGUgdmVydGljYWwgc2Nyb2xsIGJhcgorICBpZiAoIXZlcnRpY2FsU2Nyb2xsVW5j
aGFuZ2VkKQogICB7Ci0gICAgICAgIHJldHVybjsKKyAgCWRpc2Nvbm5lY3QoX3Njcm9sbEJhcix2
YWx1ZUNoYW5nZWRTaWduYWwsIHRoaXMsIHNjcm9sbEJhclZhbHVlU2xvdCk7IAorICAJX3Njcm9s
bEJhci0+c2V0UmFuZ2UoMCxsaW5lcyAtIF9saW5lcyk7CisgIAlfc2Nyb2xsQmFyLT5zZXRTaW5n
bGVTdGVwKDEpOworICAJX3Njcm9sbEJhci0+c2V0UGFnZVN0ZXAoX2xpbmVzKTsKKyAgCV9zY3Jv
bGxCYXItPnNldFZhbHVlKHZlcnRpY2FsQ3Vyc29yKTsKKyAgCWNvbm5lY3QoX3Njcm9sbEJhcix2
YWx1ZUNoYW5nZWRTaWduYWwsdGhpcyxzY3JvbGxCYXJWYWx1ZVNsb3QpOwogICB9Ci0KLSAgZGlz
Y29ubmVjdChfc2Nyb2xsQmFyLCBTSUdOQUwodmFsdWVDaGFuZ2VkKGludCkpLCB0aGlzLCBTTE9U
KHNjcm9sbEJhclBvc2l0aW9uQ2hhbmdlZChpbnQpKSk7Ci0gIF9zY3JvbGxCYXItPnNldFJhbmdl
KDAsc2xpbmVzIC0gX2xpbmVzKTsKLSAgX3Njcm9sbEJhci0+c2V0U2luZ2xlU3RlcCgxKTsKLSAg
X3Njcm9sbEJhci0+c2V0UGFnZVN0ZXAoX2xpbmVzKTsKLSAgX3Njcm9sbEJhci0+c2V0VmFsdWUo
Y3Vyc29yKTsKLSAgY29ubmVjdChfc2Nyb2xsQmFyLCBTSUdOQUwodmFsdWVDaGFuZ2VkKGludCkp
LCB0aGlzLCBTTE9UKHNjcm9sbEJhclBvc2l0aW9uQ2hhbmdlZChpbnQpKSk7CisJCisgIC8vIFVw
ZGF0ZSBob3Jpem9udGFsIHNjcm9sbCBiYXIKKyAgaWYgKCFob3Jpem9udGFsU2Nyb2xsVW5jaGFu
Z2VkKQorICB7CisJZGlzY29ubmVjdCggX2hvcml6b250YWxTY3JvbGxCYXIsdmFsdWVDaGFuZ2Vk
U2lnbmFsLHRoaXMsc2Nyb2xsQmFyVmFsdWVTbG90KTsgCisgIAlfaG9yaXpvbnRhbFNjcm9sbEJh
ci0+c2V0UmFuZ2UoMCxjb2x1bW5zIC0gX2NvbHVtbnMpOworICAJX2hvcml6b250YWxTY3JvbGxC
YXItPnNldFNpbmdsZVN0ZXAoMSk7CisgIAlfaG9yaXpvbnRhbFNjcm9sbEJhci0+c2V0UGFnZVN0
ZXAoX2NvbHVtbnMpOworICAJX2hvcml6b250YWxTY3JvbGxCYXItPnNldFZhbHVlKGhvcml6b250
YWxDdXJzb3IpOworCWNvbm5lY3QoIF9ob3Jpem9udGFsU2Nyb2xsQmFyICwgdmFsdWVDaGFuZ2Vk
U2lnbmFsLHRoaXMsc2Nyb2xsQmFyVmFsdWVTbG90KTsKKyAgfQogfQogCi12b2lkIFRlcm1pbmFs
RGlzcGxheTo6c2V0U2Nyb2xsQmFyUG9zaXRpb24oU2Nyb2xsQmFyUG9zaXRpb24gcG9zaXRpb24p
Cit2b2lkIFRlcm1pbmFsRGlzcGxheTo6c2V0U2Nyb2xsQmFyUG9zaXRpb24oUXQ6Ok9yaWVudGF0
aW9uIG9yaWVudGF0aW9uICwgU2Nyb2xsQmFyUG9zaXRpb24gcG9zaXRpb24pCiB7Ci0gIGlmIChf
c2Nyb2xsYmFyTG9jYXRpb24gPT0gcG9zaXRpb24pIAotICAgICAgcmV0dXJuOyAKLSAKKyAgYm9v
bCB2ZXJ0aWNhbCA9IG9yaWVudGF0aW9uID09IFF0OjpWZXJ0aWNhbDsKKyAgUVNjcm9sbEJhciog
c2Nyb2xsQmFyID0gdmVydGljYWwgPyBfc2Nyb2xsQmFyIDogX2hvcml6b250YWxTY3JvbGxCYXI7
CisKKyAgU2Nyb2xsQmFyUG9zaXRpb24mIGN1cnJlbnRQb3MgPSB2ZXJ0aWNhbCA/IF92ZXJ0aWNh
bFNjcm9sbEJhclBvcyA6IF9ob3Jpem9udGFsU2Nyb2xsQmFyUG9zOworCiAgIGlmICggcG9zaXRp
b24gPT0gTm9TY3JvbGxCYXIgKQotICAgICBfc2Nyb2xsQmFyLT5oaWRlKCk7CisgICAgIHNjcm9s
bEJhci0+aGlkZSgpOwogICBlbHNlIAotICAgICBfc2Nyb2xsQmFyLT5zaG93KCk7IAorICAgICBz
Y3JvbGxCYXItPnNob3coKTsgCiAKICAgX3RvcE1hcmdpbiA9IF9sZWZ0TWFyZ2luID0gMTsKLSAg
X3Njcm9sbGJhckxvY2F0aW9uID0gcG9zaXRpb247Ci0gIAorCisgIGN1cnJlbnRQb3MgPSBwb3Np
dGlvbjsKKwogICBwcm9wYWdhdGVTaXplKCk7CiAgIHVwZGF0ZSgpOwogfQpAQCAtMjY1NiwyOSAr
MjcwOSwzOSBAQAogCiB2b2lkIFRlcm1pbmFsRGlzcGxheTo6Y2FsY0dlb21ldHJ5KCkKIHsKLSAg
X3Njcm9sbEJhci0+cmVzaXplKFFBcHBsaWNhdGlvbjo6c3R5bGUoKS0+cGl4ZWxNZXRyaWMoUVN0
eWxlOjpQTV9TY3JvbGxCYXJFeHRlbnQpLAotICAgICAgICAgICAgICAgICAgICBjb250ZW50c1Jl
Y3QoKS5oZWlnaHQoKSk7Ci0gIHN3aXRjaChfc2Nyb2xsYmFyTG9jYXRpb24pCisgIGludCBzY3Jv
bGxCYXJFeHRlbnQgPSBRQXBwbGljYXRpb246OnN0eWxlKCktPnBpeGVsTWV0cmljKFFTdHlsZTo6
UE1fU2Nyb2xsQmFyRXh0ZW50KTsKKyAgaW50IHZlcnRpY2FsU2Nyb2xsQmFyRXh0ZW50ID0gX3Nj
cm9sbEJhci0+aXNWaXNpYmxlKCkgPyBzY3JvbGxCYXJFeHRlbnQgOiAwOworICBpbnQgaG9yaXpv
bnRhbFNjcm9sbEJhckV4dGVudCA9IF9ob3Jpem9udGFsU2Nyb2xsQmFyLT5pc1Zpc2libGUoKSA/
IHNjcm9sbEJhckV4dGVudCA6IDA7CisKKyAgX3Njcm9sbEJhci0+cmVzaXplKHNjcm9sbEJhckV4
dGVudCxjb250ZW50c1JlY3QoKS5oZWlnaHQoKS1ob3Jpem9udGFsU2Nyb2xsQmFyRXh0ZW50KTsK
KyAgX2hvcml6b250YWxTY3JvbGxCYXItPnJlc2l6ZShjb250ZW50c1JlY3QoKS53aWR0aCgpLXZl
cnRpY2FsU2Nyb2xsQmFyRXh0ZW50LHNjcm9sbEJhckV4dGVudCk7CisKKyAgc3dpdGNoKF92ZXJ0
aWNhbFNjcm9sbEJhclBvcykKICAgewogICAgIGNhc2UgTm9TY3JvbGxCYXIgOgogICAgICBfbGVm
dE1hcmdpbiA9IERFRkFVTFRfTEVGVF9NQVJHSU47CiAgICAgIF9jb250ZW50V2lkdGggPSBjb250
ZW50c1JlY3QoKS53aWR0aCgpIC0gMiAqIERFRkFVTFRfTEVGVF9NQVJHSU47CiAgICAgIGJyZWFr
OwogICAgIGNhc2UgU2Nyb2xsQmFyTGVmdCA6Ci0gICAgIF9sZWZ0TWFyZ2luID0gREVGQVVMVF9M
RUZUX01BUkdJTiArIF9zY3JvbGxCYXItPndpZHRoKCk7Ci0gICAgIF9jb250ZW50V2lkdGggPSBj
b250ZW50c1JlY3QoKS53aWR0aCgpIC0gMiAqIERFRkFVTFRfTEVGVF9NQVJHSU4gLSBfc2Nyb2xs
QmFyLT53aWR0aCgpOwotICAgICBfc2Nyb2xsQmFyLT5tb3ZlKGNvbnRlbnRzUmVjdCgpLnRvcExl
ZnQoKSk7Ci0gICAgIGJyZWFrOwotICAgIGNhc2UgU2Nyb2xsQmFyUmlnaHQ6Ci0gICAgIF9sZWZ0
TWFyZ2luID0gREVGQVVMVF9MRUZUX01BUkdJTjsKLSAgICAgX2NvbnRlbnRXaWR0aCA9IGNvbnRl
bnRzUmVjdCgpLndpZHRoKCkgIC0gMiAqIERFRkFVTFRfTEVGVF9NQVJHSU4gLSBfc2Nyb2xsQmFy
LT53aWR0aCgpOwotICAgICBfc2Nyb2xsQmFyLT5tb3ZlKGNvbnRlbnRzUmVjdCgpLnRvcFJpZ2h0
KCkgLSBRUG9pbnQoX3Njcm9sbEJhci0+d2lkdGgoKS0xLDApKTsKLSAgICAgYnJlYWs7CisgICAg
ICBfY29udGVudFdpZHRoID0gY29udGVudHNSZWN0KCkud2lkdGgoKSAtIDIgKiBERUZBVUxUX0xF
RlRfTUFSR0lOIC0gdmVydGljYWxTY3JvbGxCYXJFeHRlbnQ7CisgICAgICAgX3Njcm9sbEJhci0+
bW92ZShjb250ZW50c1JlY3QoKS50b3BMZWZ0KCkpOworICAgICAgIGJyZWFrOworICAgICBjYXNl
IFNjcm9sbEJhclJpZ2h0OgorICAgICAgIF9sZWZ0TWFyZ2luID0gREVGQVVMVF9MRUZUX01BUkdJ
TjsKKyAgICAgICBfY29udGVudFdpZHRoID0gY29udGVudHNSZWN0KCkud2lkdGgoKSAgLSAyICog
REVGQVVMVF9MRUZUX01BUkdJTiAtIHZlcnRpY2FsU2Nyb2xsQmFyRXh0ZW50OworICAgICAgIF9z
Y3JvbGxCYXItPm1vdmUoY29udGVudHNSZWN0KCkudG9wUmlnaHQoKSAtIFFQb2ludCh2ZXJ0aWNh
bFNjcm9sbEJhckV4dGVudC0xLDApKTsKKyAgICAgICBicmVhazsKKyAgICAgZGVmYXVsdDoKKyAg
ICAgICBicmVhazsKICAgfQogCiAgIF90b3BNYXJnaW4gPSBERUZBVUxUX1RPUF9NQVJHSU47Ci0g
IF9jb250ZW50SGVpZ2h0ID0gY29udGVudHNSZWN0KCkuaGVpZ2h0KCkgLSAyICogREVGQVVMVF9U
T1BfTUFSR0lOICsgLyogbXlzdGVyaW91cyAqLyAxOwotICAgCisKKyAgX2NvbnRlbnRIZWlnaHQg
PSBjb250ZW50c1JlY3QoKS5oZWlnaHQoKSAtIDIgKiBERUZBVUxUX1RPUF9NQVJHSU4gKyAvKiBt
eXN0ZXJpb3VzICovIDEgLQorICAgICAgICAgICAgICAgIGhvcml6b250YWxTY3JvbGxCYXJFeHRl
bnQ7CisgIF9ob3Jpem9udGFsU2Nyb2xsQmFyLT5tb3ZlKGNvbnRlbnRzUmVjdCgpLmJvdHRvbUxl
ZnQoKSAtCisgICAgICAgICAgICAgICAgICAgICAgIFFQb2ludCgwLGhvcml6b250YWxTY3JvbGxC
YXJFeHRlbnQtMSkpOworCiAgIGlmICghX2lzRml4ZWRTaXplKQogICB7CiAgICAgIC8vIGVuc3Vy
ZSB0aGF0IGRpc3BsYXkgaXMgYWx3YXlzIGF0IGxlYXN0IG9uZSBjb2x1bW4gd2lkZQpJbmRleDog
c3JjL0VtdWxhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy9FbXVsYXRpb24uaAkocmV2aXNpb24g
OTM4ODEzKQorKysgc3JjL0VtdWxhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsNiArMjE0
LDIyIEBACiAgICAqLwogICBib29sIHByb2dyYW1Vc2VzTW91c2UoKSBjb25zdDsKIAorICAvKiog
CisgICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgbGluZSB3cmFwcGluZy4gIElmIGxpbmUgd3JhcHBp
bmcgaXMgZW5hYmxlZCwgCisgICAqIHRoZSBlbXVsYXRpb24gd2lsbCBub3QgYWxsb3cgbGluZXMg
dG8gYmVjb21lIGxvbmdlciAKKyAgICoKKyAgICogQnkgZGVmYXVsdCwgbGluZSB3cmFwcGluZyBp
cyBlbmFibGVkLgorICAgKi8KKyAgdmlydHVhbCB2b2lkIHNldFRleHRXcmFwRW5hYmxlZChib29s
IGVuYWJsZSk7CisgIGJvb2wgdGV4dFdyYXBFbmFibGVkKCkgY29uc3Q7CisKKyAgLyoqIAorICAg
KiBSZS1kb2VzIHRoZSB0ZXh0IGxheW91dCBpbiB0aGUgZGlzcGxheS4gIFRoaXMgc2hvdWxkIGJl
IGNhbGxlZCBhZnRlcgorICAgKiBzZXRUZXh0V3JhcEVuYWJsZWQoKSBpcyBjaGFuZ2VkIGFuZCB0
aGUgc2l6ZSBvZiB0aGUgZW11bGF0aW9uIGltYWdlIAorICAgKiBoYXMgYmVlbiB1cGRhdGVkLgor
ICAgKi8KKyAgdm9pZCByZWZvcm1hdCgpOworCiBwdWJsaWMgc2xvdHM6IAogCiAgIC8qKiBDaGFu
Z2UgdGhlIHNpemUgb2YgdGhlIGVtdWxhdGlvbidzIGltYWdlICovCkBAIC00NTcsNiArNDczLDcg
QEAKIAogcHJpdmF0ZToKICAgYm9vbCBfdXNlc01vdXNlOworICBib29sIF93cmFwRW5hYmxlZDsK
ICAgUVRpbWVyIF9idWxrVGltZXIxOwogICBRVGltZXIgX2J1bGtUaW1lcjI7CiAgIApJbmRleDog
c3JjL1NjcmVlbldpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL1NjcmVlbldpbmRvdy5jcHAJ
KHJldmlzaW9uIDkzODgxMykKKysrIHNyYy9TY3JlZW5XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw3ICszNCw5IEBACiAgICAgLCBfd2luZG93QnVmZmVyU2l6ZSgwKQogICAgICwgX2J1
ZmZlck5lZWRzVXBkYXRlKHRydWUpCiAgICAgLCBfd2luZG93TGluZXMoMSkKKyAgICAsIF93aW5k
b3dDb2x1bW5zKDEpCiAgICAgLCBfY3VycmVudExpbmUoMCkKKyAgICAsIF9jdXJyZW50Q29sdW1u
KDApCiAgICAgLCBfdHJhY2tPdXRwdXQodHJ1ZSkKICAgICAsIF9zY3JvbGxDb3VudCgwKQogewpA
QCAtNzEsNyArNzMsOCBAQAogICAgICAgICByZXR1cm4gX3dpbmRvd0J1ZmZlcjsKICAKICAgICBf
c2NyZWVuLT5nZXRJbWFnZShfd2luZG93QnVmZmVyLHNpemUsCi0gICAgICAgICAgICAgICAgICAg
ICAgY3VycmVudExpbmUoKSxlbmRXaW5kb3dMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICAg
IGN1cnJlbnRMaW5lKCksZW5kV2luZG93TGluZSgpLAorICAgICAgICAgICAgICAgICAgICAgIGN1
cnJlbnRDb2x1bW4oKSxlbmRXaW5kb3dDb2x1bW4oKSk7CiAKICAgICAvLyB0aGlzIHdpbmRvdyBt
YXkgbG9vayBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgc2NyZWVuLCBpbiB3aGljaCAKICAgICAvLyBj
YXNlIHRoZXJlIHdpbGwgYmUgYW4gdW51c2VkIGFyZWEgd2hpY2ggbmVlZHMgdG8gYmUgZmlsbGVk
CkBAIC0xMDUsNiArMTA4LDExIEBACiAgICAgcmV0dXJuIHFNaW4oY3VycmVudExpbmUoKSArIHdp
bmRvd0xpbmVzKCkgLSAxLAogICAgICAgICAgICAgICAgIGxpbmVDb3VudCgpIC0gMSk7CiB9Citp
bnQgU2NyZWVuV2luZG93OjplbmRXaW5kb3dDb2x1bW4oKSBjb25zdCAKK3sKKwlyZXR1cm4gcU1p
bihjdXJyZW50Q29sdW1uKCkgKyB3aW5kb3dDb2x1bW5zKCkgLSAxLAorCQkJCWNvbHVtbkNvdW50
KCkgLSAxKTsKK30KIFFWZWN0b3I8TGluZVByb3BlcnR5PiBTY3JlZW5XaW5kb3c6OmdldExpbmVQ
cm9wZXJ0aWVzKCkKIHsKICAgICBRVmVjdG9yPExpbmVQcm9wZXJ0eT4gcmVzdWx0ID0gX3NjcmVl
bi0+Z2V0TGluZVByb3BlcnRpZXMoY3VycmVudExpbmUoKSxlbmRXaW5kb3dMaW5lKCkpOwpAQCAt
MTIzLDI0ICsxMzEsMjcgQEAKIHZvaWQgU2NyZWVuV2luZG93OjpnZXRTZWxlY3Rpb25TdGFydCgg
aW50JiBjb2x1bW4gLCBpbnQmIGxpbmUgKQogewogICAgIF9zY3JlZW4tPmdldFNlbGVjdGlvblN0
YXJ0KGNvbHVtbixsaW5lKTsKKyAgICBjb2x1bW4gLT0gY3VycmVudENvbHVtbigpOwogICAgIGxp
bmUgLT0gY3VycmVudExpbmUoKTsKIH0KIHZvaWQgU2NyZWVuV2luZG93OjpnZXRTZWxlY3Rpb25F
bmQoIGludCYgY29sdW1uICwgaW50JiBsaW5lICkKIHsKICAgICBfc2NyZWVuLT5nZXRTZWxlY3Rp
b25FbmQoY29sdW1uLGxpbmUpOwogICAgIGxpbmUgLT0gY3VycmVudExpbmUoKTsKKyAgICBjb2x1
bW4gLT0gY3VycmVudENvbHVtbigpOwogfQogdm9pZCBTY3JlZW5XaW5kb3c6OnNldFNlbGVjdGlv
blN0YXJ0KCBpbnQgY29sdW1uICwgaW50IGxpbmUgLCBib29sIGNvbHVtbk1vZGUgKQogewotICAg
IF9zY3JlZW4tPnNldFNlbGVjdGlvblN0YXJ0KCBjb2x1bW4gLCBxTWluKGxpbmUgKyBjdXJyZW50
TGluZSgpLGVuZFdpbmRvd0xpbmUoKSkgICwgY29sdW1uTW9kZSk7Ci0gICAgCisgICAgX3NjcmVl
bi0+c2V0U2VsZWN0aW9uU3RhcnQoIGNvbHVtbiArIGN1cnJlbnRDb2x1bW4oKSAsCisgICAgICAg
ICAgICAgICBxTWluKGxpbmUgKyBjdXJyZW50TGluZSgpLGVuZFdpbmRvd0xpbmUoKSkgICwgY29s
dW1uTW9kZSk7CisKICAgICBfYnVmZmVyTmVlZHNVcGRhdGUgPSB0cnVlOwogICAgIGVtaXQgc2Vs
ZWN0aW9uQ2hhbmdlZCgpOwogfQogCiB2b2lkIFNjcmVlbldpbmRvdzo6c2V0U2VsZWN0aW9uRW5k
KCBpbnQgY29sdW1uICwgaW50IGxpbmUgKQogewotICAgIF9zY3JlZW4tPnNldFNlbGVjdGlvbkVu
ZCggY29sdW1uICwgcU1pbihsaW5lICsgY3VycmVudExpbmUoKSxlbmRXaW5kb3dMaW5lKCkpICk7
CisgICAgX3NjcmVlbi0+c2V0U2VsZWN0aW9uRW5kKCBjb2x1bW4gKyBjdXJyZW50Q29sdW1uKCkg
LCBxTWluKGxpbmUgKyBjdXJyZW50TGluZSgpLGVuZFdpbmRvd0xpbmUoKSkgKTsKIAogICAgIF9i
dWZmZXJOZWVkc1VwZGF0ZSA9IHRydWU7CiAgICAgZW1pdCBzZWxlY3Rpb25DaGFuZ2VkKCk7CkBA
IC0xNDgsNyArMTU5LDcgQEAKIAogYm9vbCBTY3JlZW5XaW5kb3c6OmlzU2VsZWN0ZWQoIGludCBj
b2x1bW4gLCBpbnQgbGluZSApCiB7Ci0gICAgcmV0dXJuIF9zY3JlZW4tPmlzU2VsZWN0ZWQoIGNv
bHVtbiAsIHFNaW4obGluZSArIGN1cnJlbnRMaW5lKCksZW5kV2luZG93TGluZSgpKSApOworICAg
IHJldHVybiBfc2NyZWVuLT5pc1NlbGVjdGVkKCBjb2x1bW4gKyBjdXJyZW50Q29sdW1uKCkgLCBx
TWluKGxpbmUgKyBjdXJyZW50TGluZSgpLGVuZFdpbmRvd0xpbmUoKSkgKTsKIH0KIAogdm9pZCBT
Y3JlZW5XaW5kb3c6OmNsZWFyU2VsZWN0aW9uKCkKQEAgLTE2Myw2ICsxNzQsMTEgQEAKICAgICBR
X0FTU0VSVChsaW5lcyA+IDApOwogICAgIF93aW5kb3dMaW5lcyA9IGxpbmVzOwogfQordm9pZCBT
Y3JlZW5XaW5kb3c6OnNldFdpbmRvd0NvbHVtbnMoaW50IGNvbHVtbnMpCit7CisJUV9BU1NFUlQo
Y29sdW1ucyA+IDApOworCV93aW5kb3dDb2x1bW5zID0gY29sdW1uczsKK30KIGludCBTY3JlZW5X
aW5kb3c6OndpbmRvd0xpbmVzKCkgY29uc3QKIHsKICAgICByZXR1cm4gX3dpbmRvd0xpbmVzOyAg
ICAgICAgCkBAIC0xNzAsNyArMTg2LDcgQEAKIAogaW50IFNjcmVlbldpbmRvdzo6d2luZG93Q29s
dW1ucygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIF9zY3JlZW4tPmdldENvbHVtbnMoKTsKKyAgICBy
ZXR1cm4gX3dpbmRvd0NvbHVtbnM7CiB9CiAKIGludCBTY3JlZW5XaW5kb3c6OmxpbmVDb3VudCgp
IGNvbnN0CkBAIC0xODcsNyArMjAzLDcgQEAKIHsKICAgICBRUG9pbnQgcG9zaXRpb247CiAgICAg
Ci0gICAgcG9zaXRpb24uc2V0WCggX3NjcmVlbi0+Z2V0Q3Vyc29yWCgpICk7CisgICAgcG9zaXRp
b24uc2V0WCggcU1heCgwLF9zY3JlZW4tPmdldEN1cnNvclgoKS1jdXJyZW50Q29sdW1uKCkpICk7
CiAgICAgcG9zaXRpb24uc2V0WSggX3NjcmVlbi0+Z2V0Q3Vyc29yWSgpICk7CiAKICAgICByZXR1
cm4gcG9zaXRpb247IApAQCAtMTk3LDE2ICsyMTMsMTkgQEAKIHsKICAgICByZXR1cm4gcUJvdW5k
KDAsX2N1cnJlbnRMaW5lLGxpbmVDb3VudCgpLXdpbmRvd0xpbmVzKCkpOwogfQotCitpbnQgU2Ny
ZWVuV2luZG93OjpjdXJyZW50Q29sdW1uKCkgY29uc3QKK3sKKwlyZXR1cm4gcUJvdW5kKDAsX2N1
cnJlbnRDb2x1bW4sY29sdW1uQ291bnQoKS13aW5kb3dDb2x1bW5zKCkpOworfQogdm9pZCBTY3Jl
ZW5XaW5kb3c6OnNjcm9sbEJ5KCBSZWxhdGl2ZVNjcm9sbE1vZGUgbW9kZSAsIGludCBhbW91bnQg
KQogewogICAgIGlmICggbW9kZSA9PSBTY3JvbGxMaW5lcyApCiAgICAgewotICAgICAgICBzY3Jv
bGxUbyggY3VycmVudExpbmUoKSArIGFtb3VudCApOworICAgICAgICBzY3JvbGxUbyggY3VycmVu
dExpbmUoKSArIGFtb3VudCAsIF9jdXJyZW50Q29sdW1uICk7CiAgICAgfQogICAgIGVsc2UgaWYg
KCBtb2RlID09IFNjcm9sbFBhZ2VzICkKICAgICB7Ci0gICAgICAgIHNjcm9sbFRvKCBjdXJyZW50
TGluZSgpICsgYW1vdW50ICogKCB3aW5kb3dMaW5lcygpIC8gMiApICk7IAorICAgICAgICBzY3Jv
bGxUbyggY3VycmVudExpbmUoKSArIGFtb3VudCAqICggd2luZG93TGluZXMoKSAvIDIgKSAsIF9j
dXJyZW50Q29sdW1uICk7IAogICAgIH0KIH0KIApAQCAtMjE1LDcgKzIzNCw3IEBACiAgICAgcmV0
dXJuIGN1cnJlbnRMaW5lKCkgPT0gKGxpbmVDb3VudCgpLXdpbmRvd0xpbmVzKCkpOwogfQogCi12
b2lkIFNjcmVlbldpbmRvdzo6c2Nyb2xsVG8oIGludCBsaW5lICkKK3ZvaWQgU2NyZWVuV2luZG93
OjpzY3JvbGxUb0xpbmUoaW50IGxpbmUpCiB7CiAgICAgaW50IG1heEN1cnJlbnRMaW5lTnVtYmVy
ID0gbGluZUNvdW50KCkgLSB3aW5kb3dMaW5lcygpOwogICAgIGxpbmUgPSBxQm91bmQoMCxsaW5l
LG1heEN1cnJlbnRMaW5lTnVtYmVyKTsKQEAgLTIyOCwxMCArMjQ3LDIzIEBACiAgICAgX3Njcm9s
bENvdW50ICs9IGRlbHRhOwogCiAgICAgX2J1ZmZlck5lZWRzVXBkYXRlID0gdHJ1ZTsKK30KK3Zv
aWQgU2NyZWVuV2luZG93OjpzY3JvbGxUbyggaW50IGxpbmUgLCBpbnQgY29sdW1uICkKK3sKKyAg
ICBzY3JvbGxUb0xpbmUobGluZSk7CisgICAgc2Nyb2xsVG9Db2x1bW4oY29sdW1uKTsKIAotICAg
IGVtaXQgc2Nyb2xsZWQoX2N1cnJlbnRMaW5lKTsKKyAgICBlbWl0IHNjcm9sbGVkKF9jdXJyZW50
TGluZSxfY3VycmVudENvbHVtbik7CiB9Cit2b2lkIFNjcmVlbldpbmRvdzo6c2Nyb2xsVG9Db2x1
bW4oIGludCBjb2x1bW4gKQoreworICAgIGludCBtYXhDdXJyZW50Q29sdW1uTnVtYmVyID0gY29s
dW1uQ291bnQoKSAtIHdpbmRvd0NvbHVtbnMoKTsKKyAgICBjb2x1bW4gPSBxQm91bmQoMCxjb2x1
bW4sbWF4Q3VycmVudENvbHVtbk51bWJlcik7CiAKKyAgICBfY3VycmVudENvbHVtbiA9IGNvbHVt
bjsKKyAgICBfYnVmZmVyTmVlZHNVcGRhdGUgPSB0cnVlOworfQorCiB2b2lkIFNjcmVlbldpbmRv
dzo6c2V0VHJhY2tPdXRwdXQoYm9vbCB0cmFja091dHB1dCkKIHsKICAgICBfdHJhY2tPdXRwdXQg
PSB0cmFja091dHB1dDsKSW5kZXg6IHNyYy9TY3JlZW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy9T
Y3JlZW4uY3BwCShyZXZpc2lvbiA5Mzg4MTMpCisrKyBzcmMvU2NyZWVuLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODIsNyArODIsOCBAQAogICAgIHNlbEJlZ2luKDApLCBzZWxUb3BMZWZ0KDApLCBz
ZWxCb3R0b21SaWdodCgwKSwKICAgICBibG9ja1NlbGVjdGlvbk1vZGUoZmFsc2UpLAogICAgIGVm
ZmVjdGl2ZUZvcmVncm91bmQoQ2hhcmFjdGVyQ29sb3IoKSksIGVmZmVjdGl2ZUJhY2tncm91bmQo
Q2hhcmFjdGVyQ29sb3IoKSksIGVmZmVjdGl2ZVJlbmRpdGlvbigwKSwKLSAgICBsYXN0UG9zKC0x
KQorICAgIGxhc3RQb3MoLTEpLAorICAgIGRpc2FibGVXcmFwKGZhbHNlKQogewogICAgIGxpbmVQ
cm9wZXJ0aWVzLnJlc2l6ZShsaW5lcysxKTsKICAgICBmb3IgKGludCBpPTA7aTxsaW5lcysxO2kr
KykKQEAgLTQwMSwyNiArNDAyLDI5IEBACiAgICAgICAgIGVmZmVjdGl2ZUZvcmVncm91bmQudG9n
Z2xlSW50ZW5zaXZlKCk7CiB9CiAKLXZvaWQgU2NyZWVuOjpjb3B5RnJvbUhpc3RvcnkoQ2hhcmFj
dGVyKiBkZXN0LCBpbnQgc3RhcnRMaW5lLCBpbnQgY291bnQpIGNvbnN0Cit2b2lkIFNjcmVlbjo6
Y29weUZyb21IaXN0b3J5KENoYXJhY3RlciogZGVzdCwgaW50IHN0YXJ0TGluZSwgaW50IGxpbmVD
b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0Q29sdW1uLCBpbnQg
Y29sdW1uQ291bnQpIGNvbnN0CiB7Ci0gICAgUV9BU1NFUlQoIHN0YXJ0TGluZSA+PSAwICYmIGNv
dW50ID4gMCAmJiBzdGFydExpbmUgKyBjb3VudCA8PSBoaXN0b3J5LT5nZXRMaW5lcygpICk7Cisg
ICAgUV9BU1NFUlQoIHN0YXJ0TGluZSA+PSAwICYmIGxpbmVDb3VudCA+IDAgJiYgc3RhcnRMaW5l
ICsgbGluZUNvdW50IDw9IGhpc3RvcnktPmdldExpbmVzKCkgKTsKIAotICAgIGZvciAoaW50IGxp
bmUgPSBzdGFydExpbmU7IGxpbmUgPCBzdGFydExpbmUgKyBjb3VudDsgbGluZSsrKSAKKyAgICBm
b3IgKGludCBsaW5lID0gc3RhcnRMaW5lOyBsaW5lIDwgc3RhcnRMaW5lICsgbGluZUNvdW50OyBs
aW5lKyspCiAgICAgewotICAgICAgICBjb25zdCBpbnQgbGVuZ3RoID0gcU1pbihjb2x1bW5zLGhp
c3RvcnktPmdldExpbmVMZW4obGluZSkpOwotICAgICAgICBjb25zdCBpbnQgZGVzdExpbmVPZmZz
ZXQgID0gKGxpbmUtc3RhcnRMaW5lKSpjb2x1bW5zOworICAgICAgICBjb25zdCBpbnQgbGVuZ3Ro
ID0gaGlzdG9yeS0+Z2V0TGluZUxlbihsaW5lKTsKKyAgICAgICAgY29uc3QgaW50IGRlc3RMaW5l
T2Zmc2V0ICA9IChsaW5lLXN0YXJ0TGluZSkqY29sdW1uQ291bnQ7CiAKLSAgICAgICAgaGlzdG9y
eS0+Z2V0Q2VsbHMobGluZSwwLGxlbmd0aCxkZXN0ICsgZGVzdExpbmVPZmZzZXQpOworICAgICAg
ICBpbnQgY29weUNvdW50ID0gcUJvdW5kKDAsbGVuZ3RoLXN0YXJ0Q29sdW1uLGNvbHVtbkNvdW50
KTsKIAotICAgICAgICBmb3IgKGludCBjb2x1bW4gPSBsZW5ndGg7IGNvbHVtbiA8IGNvbHVtbnM7
IGNvbHVtbisrKSAKKyAgICAgICAgaGlzdG9yeS0+Z2V0Q2VsbHMobGluZSxzdGFydENvbHVtbixj
b3B5Q291bnQsZGVzdCArIGRlc3RMaW5lT2Zmc2V0KTsKKworICAgICAgICBmb3IgKGludCBjb2x1
bW4gPSBjb3B5Q291bnQ7IGNvbHVtbiA8IGNvbHVtbkNvdW50OyBjb2x1bW4rKykKICAgICAgICAg
ICAgIGRlc3RbZGVzdExpbmVPZmZzZXQrY29sdW1uXSA9IGRlZmF1bHRDaGFyOwogCiAgICAgICAg
IC8vIGludmVydCBzZWxlY3RlZCB0ZXh0CiAgICAgICAgIGlmIChzZWxCZWdpbiAhPS0xKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBmb3IgKGludCBjb2x1bW4gPSAwOyBjb2x1bW4gPCBjb2x1bW5z
OyBjb2x1bW4rKykKKyAgICAgICAgICAgIGZvciAoaW50IGNvbHVtbiA9IDA7IGNvbHVtbiA8IGNv
bHVtbkNvdW50OyBjb2x1bW4rKykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAo
aXNTZWxlY3RlZChjb2x1bW4sbGluZSkpIAorICAgICAgICAgICAgICAgIGlmIChpc1NlbGVjdGVk
KGNvbHVtbitzdGFydENvbHVtbixsaW5lKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgICAgIHJldmVyc2VSZW5kaXRpb24oZGVzdFtkZXN0TGluZU9mZnNldCArIGNvbHVtbl0p
OyAKICAgICAgICAgICAgICAgICB9CkBAIC00MjksMjAgKzQzMywyMiBAQAogICAgIH0KIH0KIAot
dm9pZCBTY3JlZW46OmNvcHlGcm9tU2NyZWVuKENoYXJhY3RlciogZGVzdCAsIGludCBzdGFydExp
bmUgLCBpbnQgY291bnQpIGNvbnN0Cit2b2lkIFNjcmVlbjo6Y29weUZyb21TY3JlZW4oQ2hhcmFj
dGVyKiBkZXN0ICwgaW50IHN0YXJ0TGluZSAsIGludCBsaW5lQ291bnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHN0YXJ0Q29sdW1uLCBpbnQgY29sdW1uQ291bnQpIGNvbnN0CiB7
Ci0gICAgUV9BU1NFUlQoIHN0YXJ0TGluZSA+PSAwICYmIGNvdW50ID4gMCAmJiBzdGFydExpbmUg
KyBjb3VudCA8PSBsaW5lcyApOworICAgIFFfQVNTRVJUKCBzdGFydExpbmUgPj0gMCAmJiBsaW5l
Q291bnQgPiAwICYmIHN0YXJ0TGluZSArIGxpbmVDb3VudCA8PSBsaW5lcyApOwogCi0gICAgZm9y
IChpbnQgbGluZSA9IHN0YXJ0TGluZTsgbGluZSA8IChzdGFydExpbmUrY291bnQpIDsgbGluZSsr
KQorICAgIGludCBlbmRDb2x1bW4gPSBzdGFydENvbHVtbiArIGNvbHVtbkNvdW50IC0gMTsKKwor
ICAgIGZvciAoaW50IGxpbmUgPSBzdGFydExpbmU7IGxpbmUgPCAoc3RhcnRMaW5lK2xpbmVDb3Vu
dCkgOyBsaW5lKyspCiAgICAgewogICAgICAgICBpbnQgc3JjTGluZVN0YXJ0SW5kZXggID0gbGlu
ZSpjb2x1bW5zOwotICAgICAgICBpbnQgZGVzdExpbmVTdGFydEluZGV4ID0gKGxpbmUtc3RhcnRM
aW5lKSpjb2x1bW5zOworICAgICAgICBpbnQgZGVzdExpbmVTdGFydEluZGV4ID0gKGxpbmUtc3Rh
cnRMaW5lKSpjb2x1bW5Db3VudDsKIAotICAgICAgICBmb3IgKGludCBjb2x1bW4gPSAwOyBjb2x1
bW4gPCBjb2x1bW5zOyBjb2x1bW4rKykKLSAgICAgICAgeyAKLSAgICAgICAgICAgIGludCBzcmNJ
bmRleCA9IHNyY0xpbmVTdGFydEluZGV4ICsgY29sdW1uOyAKLSAgICAgICAgICAgIGludCBkZXN0
SW5kZXggPSBkZXN0TGluZVN0YXJ0SW5kZXggKyBjb2x1bW47Ci0KKyAgICAgICAgZm9yIChpbnQg
Y29sdW1uID0gc3RhcnRDb2x1bW47IGNvbHVtbiA8PSBlbmRDb2x1bW47IGNvbHVtbisrKQorICAg
ICAgICB7CisgICAgICAgICAgICBpbnQgc3JjSW5kZXggPSBzcmNMaW5lU3RhcnRJbmRleCArIGNv
bHVtbjsKKyAgICAgICAgICAgIGludCBkZXN0SW5kZXggPSBkZXN0TGluZVN0YXJ0SW5kZXggKyAo
Y29sdW1uLXN0YXJ0Q29sdW1uKTsKICAgICAgICAgICAgIGRlc3RbZGVzdEluZGV4XSA9IHNjcmVl
bkxpbmVzW3NyY0luZGV4L2NvbHVtbnNdLnZhbHVlKHNyY0luZGV4JWNvbHVtbnMsZGVmYXVsdENo
YXIpOwogCiAgICAgICAgICAgICAvLyBpbnZlcnQgc2VsZWN0ZWQgdGV4dApAQCAtNDUzLDI3ICs0
NTksMzEgQEAKICAgICB9CiB9CiAKLXZvaWQgU2NyZWVuOjpnZXRJbWFnZSggQ2hhcmFjdGVyKiBk
ZXN0LCBpbnQgc2l6ZSwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUgKSBjb25zdAordm9pZCBT
Y3JlZW46OmdldEltYWdlKCBDaGFyYWN0ZXIqIGRlc3QsIGludCBzaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgaW50IHN0YXJ0Q29sdW1uLCBpbnQgZW5kQ29sdW1uICkgY29uc3QKIHsKLSAgICBRX0FT
U0VSVCggc3RhcnRMaW5lID49IDAgKTsgCisgICAgUV9BU1NFUlQoIHN0YXJ0TGluZSA+PSAwICk7
CiAgICAgUV9BU1NFUlQoIGVuZExpbmUgPj0gc3RhcnRMaW5lICYmIGVuZExpbmUgPCBoaXN0b3J5
LT5nZXRMaW5lcygpICsgbGluZXMgKTsKIAogICAgIGNvbnN0IGludCBtZXJnZWRMaW5lcyA9IGVu
ZExpbmUgLSBzdGFydExpbmUgKyAxOworICAgIGNvbnN0IGludCBtZXJnZWRDb2x1bW5zID0gZW5k
Q29sdW1uIC0gc3RhcnRDb2x1bW4gKyAxOwogCi0gICAgUV9BU1NFUlQoIHNpemUgPj0gbWVyZ2Vk
TGluZXMgKiBjb2x1bW5zICk7IAorICAgIFFfQVNTRVJUKCBzaXplID49IG1lcmdlZExpbmVzICog
bWVyZ2VkQ29sdW1ucyApOwogCiAgICAgY29uc3QgaW50IGxpbmVzSW5IaXN0b3J5QnVmZmVyID0g
cUJvdW5kKDAsaGlzdG9yeS0+Z2V0TGluZXMoKS1zdGFydExpbmUsbWVyZ2VkTGluZXMpOwogICAg
IGNvbnN0IGludCBsaW5lc0luU2NyZWVuQnVmZmVyID0gbWVyZ2VkTGluZXMgLSBsaW5lc0luSGlz
dG9yeUJ1ZmZlcjsKIAogICAgIC8vIGNvcHkgbGluZXMgZnJvbSBoaXN0b3J5IGJ1ZmZlcgogICAg
IGlmIChsaW5lc0luSGlzdG9yeUJ1ZmZlciA+IDApCi0gICAgICAgIGNvcHlGcm9tSGlzdG9yeShk
ZXN0LHN0YXJ0TGluZSxsaW5lc0luSGlzdG9yeUJ1ZmZlcik7IAorICAgICAgICBjb3B5RnJvbUhp
c3RvcnkoZGVzdCxzdGFydExpbmUsbGluZXNJbkhpc3RvcnlCdWZmZXIsc3RhcnRDb2x1bW4sbWVy
Z2VkQ29sdW1ucyk7CiAKICAgICAvLyBjb3B5IGxpbmVzIGZyb20gc2NyZWVuIGJ1ZmZlcgogICAg
IGlmIChsaW5lc0luU2NyZWVuQnVmZmVyID4gMCkKLSAgICAgICAgY29weUZyb21TY3JlZW4oZGVz
dCArIGxpbmVzSW5IaXN0b3J5QnVmZmVyKmNvbHVtbnMsCi0gICAgICAgICAgICAgICAgc3RhcnRM
aW5lICsgbGluZXNJbkhpc3RvcnlCdWZmZXIgLSBoaXN0b3J5LT5nZXRMaW5lcygpLAotICAgICAg
ICAgICAgICAgIGxpbmVzSW5TY3JlZW5CdWZmZXIpOworICAgICAgICBjb3B5RnJvbVNjcmVlbihk
ZXN0ICsgbGluZXNJbkhpc3RvcnlCdWZmZXIqbWVyZ2VkQ29sdW1ucywKKyAgICAgICAgICAgICAg
ICAgICAgICAgc3RhcnRMaW5lICsgbGluZXNJbkhpc3RvcnlCdWZmZXIgLSBoaXN0b3J5LT5nZXRM
aW5lcygpLAorICAgICAgICAgICAgICAgICAgICAgICBsaW5lc0luU2NyZWVuQnVmZmVyLAorICAg
ICAgICAgICAgICAgICAgICAgICBzdGFydENvbHVtbiwgbWVyZ2VkQ29sdW1ucyk7CiAKICAgICAv
LyBpbnZlcnQgZGlzcGxheSB3aGVuIGluIHNjcmVlbiBtb2RlCiAgICAgaWYgKGdldE1vZGUoTU9E
RV9TY3JlZW4pKQpAQCAtNDgzLDggKzQ5Myw4IEBACiAgICAgfQogCiAgICAgLy8gbWFyayB0aGUg
Y2hhcmFjdGVyIGF0IHRoZSBjdXJyZW50IGN1cnNvciBwb3NpdGlvbgotICAgIGludCBjdXJzb3JJ
bmRleCA9IGxvYyhjdVgsIGN1WSArIGxpbmVzSW5IaXN0b3J5QnVmZmVyKTsKLSAgICBpZihnZXRN
b2RlKE1PREVfQ3Vyc29yKSAmJiBjdXJzb3JJbmRleCA8IGNvbHVtbnMqbWVyZ2VkTGluZXMpCisg
ICAgaW50IGN1cnNvckluZGV4ID0gY3VYLXN0YXJ0Q29sdW1uICsgKGN1WSArIGxpbmVzSW5IaXN0
b3J5QnVmZmVyKSptZXJnZWRDb2x1bW5zOworICAgIGlmKGdldE1vZGUoTU9ERV9DdXJzb3IpICYm
IGN1cnNvckluZGV4IDwgbWVyZ2VkQ29sdW1ucyptZXJnZWRMaW5lcyAmJiBjdVggPj0gc3RhcnRD
b2x1bW4pCiAgICAgICAgIGRlc3RbY3Vyc29ySW5kZXhdLnJlbmRpdGlvbiB8PSBSRV9DVVJTT1I7
CiB9CiAKQEAgLTYzNCw3ICs2NDQsOSBAQAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY3VY
K3cgPiBjb2x1bW5zKSB7Ci0gICAgICAgIGlmIChnZXRNb2RlKE1PREVfV3JhcCkpIHsKKyAgICAg
ICAgaWYgKGRpc2FibGVXcmFwKQorICAgICAgICAgICAgcmVzaXplSW1hZ2UobGluZXMsY3VYK3cp
OworICAgICAgICBlbHNlIGlmIChnZXRNb2RlKE1PREVfV3JhcCkpIHsKICAgICAgICAgICAgIGxp
bmVQcm9wZXJ0aWVzW2N1WV0gPSAoTGluZVByb3BlcnR5KShsaW5lUHJvcGVydGllc1tjdVldIHwg
TElORV9XUkFQUEVEKTsKICAgICAgICAgICAgIG5leHRMaW5lKCk7CiAgICAgICAgIH0KQEAgLTEz
NzIsMyArMTM4NCw5MiBAQAogICAgIGZvciAoaW50IGk9MDtpPGNvdW50O2krKykKICAgICAgICAg
ZGVzdFtpXSA9IGRlZmF1bHRDaGFyOwogfQordm9pZCBTY3JlZW46OnNldFdyYXBFbmFibGVkKGJv
b2wgZW5hYmxlKQoreworCWRpc2FibGVXcmFwID0gIWVuYWJsZTsKK30KK2Jvb2wgU2NyZWVuOjp3
cmFwRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuICFkaXNhYmxlV3JhcDsgfQorCit2b2lkIFNjcmVl
bjo6cmVmb3JtYXQoKQoreworCVNjcmVlbiogdGVtcFNjcmVlbiA9IG5ldyBTY3JlZW4oZ2V0TGlu
ZXMoKSxnZXRDb2x1bW5zKCkpOworCXRlbXBTY3JlZW4tPmRpc2FibGVXcmFwID0gZGlzYWJsZVdy
YXA7CisJdGVtcFNjcmVlbi0+c2V0U2Nyb2xsKGdldFNjcm9sbCgpLGZhbHNlKTsKKworCVFWZWN0
b3I8Q2hhcmFjdGVyPiBidWZmZXI7CisKKwkvLyBjb3B5IGxpbmVzIGZyb20gaGlzdG9yeSB0byB0
ZW1wIFNjcmVlbgorCWludCBoaXN0TGluZXMgPSBoaXN0b3J5LT5nZXRMaW5lcygpOworCWZvciAo
aW50IGk9MDtpPGhpc3RMaW5lcztpKyspCisJeworCQlpbnQgbGluZVNpemUgPSBoaXN0b3J5LT5n
ZXRMaW5lTGVuKGkpOworCisJCWlmIChidWZmZXIuc2l6ZSgpIDwgbGluZVNpemUpCisJCQlidWZm
ZXIucmVzaXplKGxpbmVTaXplKTsKKworCQloaXN0b3J5LT5nZXRDZWxscyhpLDAsbGluZVNpemUs
YnVmZmVyLmRhdGEoKSk7CisKKwkJLy8gdHJpbW1pbmcgdHJhaWxpbmcgd2hpdGVzcGFjZSBpcyBp
bXBvcnRhbnQgdG8gcHJldmVudCBjcmVhdGlvbgorCQkvLyBvZiBleHRyYSBsaW5lcyB3aGVuIHJl
Zm9ybWF0dGluZyBmcm9tIGFuIHVud3JhcHBlZCBzY3JlZW4gdG8gYSAKKwkJLy8gd3JhcHBlZCBz
Y3JlZW4KKwkJd2hpbGUgKGxpbmVTaXplID4gMCAmJiBidWZmZXJbbGluZVNpemUtMV0uY2hhcmFj
dGVyID09ICcgJykKKwkJCWxpbmVTaXplLS07CisKKwkJZm9yIChpbnQgaz0wO2s8bGluZVNpemU7
aysrKQorCQl7CisJCQlDaGFyYWN0ZXImIGNoID0gYnVmZmVyW2tdOworCisJCQl0ZW1wU2NyZWVu
LT5lZmZlY3RpdmVGb3JlZ3JvdW5kID0gY2guZm9yZWdyb3VuZENvbG9yOworCQkJdGVtcFNjcmVl
bi0+ZWZmZWN0aXZlQmFja2dyb3VuZCA9IGNoLmJhY2tncm91bmRDb2xvcjsKKwkJCXRlbXBTY3Jl
ZW4tPmVmZmVjdGl2ZVJlbmRpdGlvbiA9IGNoLnJlbmRpdGlvbjsKKwkJCXRlbXBTY3JlZW4tPmRp
c3BsYXlDaGFyYWN0ZXIoY2guY2hhcmFjdGVyKTsKKwkJfQorCisJCWlmICghaGlzdG9yeS0+aXNX
cmFwcGVkTGluZShpKSkKKwkJCXRlbXBTY3JlZW4tPm5leHRMaW5lKCk7CisJfQorCisJLy8gY29w
eSBsaW5lcyBmcm9tIHNjcmVlbiB0byB0ZW1wIFNjcmVlbgorCWZvciAoaW50IGk9MDtpPGdldExp
bmVzKCk7aSsrKQorCXsKKwkJaW50IGxpbmVTaXplID0gc2NyZWVuTGluZXNbaV0uY291bnQoKTsK
KworCQkvLyAoc2VlIGNvbW1lbnRzIGFib3V0IHdoaXRlc3BhY2UgdHJpbW1pbmcgYWJvdmUpCisJ
CXdoaWxlIChsaW5lU2l6ZSA+IDAgJiYgc2NyZWVuTGluZXNbaV1bbGluZVNpemUtMV0uY2hhcmFj
dGVyID09ICcgJykKKwkJCWxpbmVTaXplLS07CisKKwkJaWYgKGJ1ZmZlci5zaXplKCkgPCBsaW5l
U2l6ZSkKKwkJCWJ1ZmZlci5yZXNpemUobGluZVNpemUpOworCisJCWZvciAoaW50IGo9MDtqPGxp
bmVTaXplO2orKykKKwkJeworCQkJQ2hhcmFjdGVyJiBjaCA9IHNjcmVlbkxpbmVzW2ldW2pdOwor
CQkJdGVtcFNjcmVlbi0+ZWZmZWN0aXZlRm9yZWdyb3VuZCA9IGNoLmZvcmVncm91bmRDb2xvcjsK
KwkJCXRlbXBTY3JlZW4tPmVmZmVjdGl2ZUJhY2tncm91bmQgPSBjaC5iYWNrZ3JvdW5kQ29sb3I7
CisJCQl0ZW1wU2NyZWVuLT5lZmZlY3RpdmVSZW5kaXRpb24gPSBjaC5yZW5kaXRpb247CisJCQl0
ZW1wU2NyZWVuLT5kaXNwbGF5Q2hhcmFjdGVyKGNoLmNoYXJhY3Rlcik7CisJCX0KKworCQkvLyBk
byBub3QgbW92ZSB0byBhIG5ldyBsaW5lIGlmIHRoZSBjdXJyZW50IGxpbmUgY29udGFpbnMgdGhl
IGN1cnNvcgorCQkvLyB0byBhdm9pZCB0cmlnZ2VyaW5nIGEgcmUtcHJpbnQgb2YgdGhlIGN1cnJl
bnQgcHJvbXB0IG9uIGEgbmV3IGxpbmUKKwkJYm9vbCBpc0N1cnNvckxpbmUgPSBjdVkgPT0gaTsK
KwkJaWYgKCFpc0N1cnNvckxpbmUgJiYgIShsaW5lUHJvcGVydGllc1tpXSAmIExJTkVfV1JBUFBF
RCkpCisJCQl0ZW1wU2NyZWVuLT5uZXh0TGluZSgpOworCX0KKwkKKwkvLyBzd2FwIGhpc3Rvcnkg
YnVmZmVycyBhbmQgc2NyZWVuIGNvbnRlbnRzCisgICAgSGlzdG9yeVNjcm9sbCogCW9sZEhpc3Qg
PSBoaXN0b3J5OworCUltYWdlTGluZSoJCW9sZFNjcmVlbkxpbmVzID0gc2NyZWVuTGluZXM7IAor
CisJaGlzdG9yeSA9IHRlbXBTY3JlZW4tPmhpc3Rvcnk7CisJdGVtcFNjcmVlbi0+aGlzdG9yeSA9
IG9sZEhpc3Q7CisJCisJc2NyZWVuTGluZXMgPSB0ZW1wU2NyZWVuLT5zY3JlZW5MaW5lczsKKwl0
ZW1wU2NyZWVuLT5zY3JlZW5MaW5lcyA9IG9sZFNjcmVlbkxpbmVzOworCisJbGluZVByb3BlcnRp
ZXMgPSB0ZW1wU2NyZWVuLT5saW5lUHJvcGVydGllczsKKworCWRlbGV0ZSB0ZW1wU2NyZWVuOwor
fQorCisKSW5kZXg6IHNyYy9TZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL1Nlc3Npb24uaAko
cmV2aXNpb24gOTM4ODEzKQorKysgc3JjL1Nlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzc0
LDYgKzM3NCw5IEBACiAgIHZvaWQgY2FuY2VsWk1vZGVtKCk7CiAgIGJvb2wgaXNaTW9kZW1CdXN5
KCkgeyByZXR1cm4gX3ptb2RlbUJ1c3k7IH0KIAorICB2b2lkIHNldFdyYXBFbmFibGVkKGJvb2wg
d3JhcCk7CisgIGJvb2wgd3JhcEVuYWJsZWQoKSBjb25zdDsKKwogIC8qKiAKICAgICogUG9zc2li
bGUgdmFsdWVzIG9mIHRoZSBAcCB3aGF0IHBhcmFtZXRlciBmb3Igc2V0VXNlclRpdGxlKCkKICAg
ICogU2VlICJPcGVyYXRpbmcgU3lzdGVtIENvbnRyb2xzIiBzZWN0aW9uIG9uIGh0dHA6Ly9ydGZt
LmV0bGEub3JnL3h0ZXJtL2N0bHNlcS5odG1sIApJbmRleDogc3JjL0VtdWxhdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gc3JjL0VtdWxhdGlvbi5jcHAJKHJldmlzaW9uIDkzODgxMykKKysrIHNyYy9F
bXVsYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw4IEBACiAgIF9jb2RlYygw
KSwKICAgX2RlY29kZXIoMCksCiAgIF9rZXlUcmFuc2xhdG9yKDApLAotICBfdXNlc01vdXNlKGZh
bHNlKQorICBfdXNlc01vdXNlKGZhbHNlKSwKKyAgX3dyYXBFbmFibGVkKHRydWUpCiB7CiAgIC8v
IGNyZWF0ZSBzY3JlZW5zIHdpdGggYSBkZWZhdWx0IHNpemUKICAgX3NjcmVlblswXSA9IG5ldyBT
Y3JlZW4oNDAsODApOwpAQCAtNjksNyArNzAsMjAgQEAKICAgY29ubmVjdCggdGhpcyAsIFNJR05B
TChwcm9ncmFtVXNlc01vdXNlQ2hhbmdlZChib29sKSkgLCAKICAgICAgICAgICAgU0xPVCh1c2Vz
TW91c2VDaGFuZ2VkKGJvb2wpKSApOwogfQordm9pZCBFbXVsYXRpb246OnJlZm9ybWF0KCkKK3sK
Kwlfc2NyZWVuWzBdLT5yZWZvcm1hdCgpOworCV9zY3JlZW5bMV0tPnJlZm9ybWF0KCk7Cit9Cit2
b2lkIEVtdWxhdGlvbjo6c2V0VGV4dFdyYXBFbmFibGVkKGJvb2wgZW5hYmxlKSAKK3sgCisJX3dy
YXBFbmFibGVkID0gZW5hYmxlOwogCisJX3NjcmVlblswXS0+c2V0V3JhcEVuYWJsZWQoZW5hYmxl
KTsKKwlfc2NyZWVuWzFdLT5zZXRXcmFwRW5hYmxlZChlbmFibGUpOworfQorYm9vbCBFbXVsYXRp
b246OnRleHRXcmFwRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIF93cmFwRW5hYmxlZDsgfQorCiBi
b29sIEVtdWxhdGlvbjo6cHJvZ3JhbVVzZXNNb3VzZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIF91
c2VzTW91c2U7CkBAIC0zNDIsNiArMzU2LDEwIEBACiAgIGlmIChuZXdTaXplID09IHNjcmVlblNp
emVbMF0gJiYgbmV3U2l6ZSA9PSBzY3JlZW5TaXplWzFdKQogICAgIHJldHVybjsgICAgCiAKKyAg
Ly8gd2hlbiB0ZXh0IHdyYXBwaW5nIGlzIGVuYWJsZWQsIHRoZSBzY3JlZW4gY2FuIG9ubHkgZ2V0
IHdpZGVyCisgIGlmICghX3dyYXBFbmFibGVkKSAKKwkgIGNvbHVtbnMgPSBxTWF4KF9zY3JlZW5b
MF0tPmdldENvbHVtbnMoKSxjb2x1bW5zKTsKKwogICBfc2NyZWVuWzBdLT5yZXNpemVJbWFnZShs
aW5lcyxjb2x1bW5zKTsKICAgX3NjcmVlblsxXS0+cmVzaXplSW1hZ2UobGluZXMsY29sdW1ucyk7
CiAKSW5kZXg6IHNyYy9TZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMvU2Vzc2lvbi5jcHAJ
KHJldmlzaW9uIDkzODgxMykKKysrIHNyYy9TZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQzLDYgKzE0MywxMCBAQAogICAgIGNvbm5lY3QoIF9lbXVsYXRpb24sU0lHTkFMKHVzZVV0ZjhS
ZXF1ZXN0KGJvb2wpKSxfc2hlbGxQcm9jZXNzLFNMT1Qoc2V0VXRmOE1vZGUoYm9vbCkpICk7CiAg
ICAgY29ubmVjdCggX3NoZWxsUHJvY2VzcyxTSUdOQUwoZmluaXNoZWQoaW50LFFQcm9jZXNzOjpF
eGl0U3RhdHVzKSksIHRoaXMsIFNMT1QoZG9uZShpbnQpKSApOwogICAgIGNvbm5lY3QoIF9lbXVs
YXRpb24sU0lHTkFMKGltYWdlU2l6ZUNoYW5nZWQoaW50LGludCkpLHRoaXMsU0xPVCh1cGRhdGVX
aW5kb3dTaXplKGludCxpbnQpKSApOworCisvLyAgICBjb25uZWN0KCBfZW11bGF0aW9uLFNJR05B
TChpbWFnZVNpemVDaGFuZ2VkKGludCxpbnQpKSAsIHRoaXMgLAorLy8gICAgICAgICAgICAgU0xP
VChvbkVtdWxhdGlvblNpemVDaGFuZ2UoaW50LGludCkpICk7CisKIH0KIAogV0lkIFNlc3Npb246
OndpbmRvd0lkKCkgY29uc3QKQEAgLTU3NSw2ICs1NzksMzQgQEAKICAgZW1pdCBzdGF0ZUNoYW5n
ZWQoc3RhdGUpOwogfQogCit2b2lkIFNlc3Npb246OnNldFdyYXBFbmFibGVkKGJvb2wgd3JhcCkK
K3sKKyAgICBfZW11bGF0aW9uLT5zZXRUZXh0V3JhcEVuYWJsZWQod3JhcCk7CisKKyAgICBpZiAo
d3JhcCkKKyAgICB7CisgICAgICAgIC8vIHVwZGF0ZSB0ZXJtaW5hbCBzaXplIHRvIHJlZmxlY3Qg
Y3VycmVudCB2aWV3cworICAgICAgICB1cGRhdGVUZXJtaW5hbFNpemUoKTsKKyAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgLy8gc2V0IHRoZSB3aW5kb3cgc2l6ZSB0byBhIGxhcmdlIHZh
bHVlIHdoaWNoIGNhbiBiZSBjb25zaWRlcmVkIGluZmluaXRlCisgICAgICAgIC8vIGZvciBtb3N0
IGludGVyYWN0aXZlIHByb2dyYW1zLgorICAgICAgICAvLworICAgICAgICAvLyBJU1NVRTogIFRo
aXMgd2lsbCBjYXVzZSB0aGUgU2NyZWVuV2luZG93IGNsYXNzIHRvIGFsbG9jYXRlIG11Y2ggbGFy
Z2VyIGJ1ZmZlcnMKKyAgICAgICAgLy8gdGhhbiBuZWNlc3NhcnkgdG8gaG9sZCB0aGUgc2NyZWVu
IGltYWdlIHdoZW4gY29weWluZyBmcm9tIHRoZSBTY3JlZW4gdG8gdGhlCisgICAgICAgIC8vIFRl
cm1pbmFsRGlzcGxheS4gIFRoZSBTY3JlZW4gLyBTY3JlZW5XaW5kb3cgY2xhc3NlcyBuZWVkIHRv
IGJlIG1vZGlmaWVkIHRvIG9ubHkKKyAgICAgICAgLy8gYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUg
c2l6ZSBvZiB0aGUgU2NyZWVuV2luZG93CisgICAgICAgIF9lbXVsYXRpb24tPnNldEltYWdlU2l6
ZShfZW11bGF0aW9uLT5pbWFnZVNpemUoKS5oZWlnaHQoKSwxMDI0KTsKKyAgICB9CisKKyAgICBf
ZW11bGF0aW9uLT5yZWZvcm1hdCgpOworfQorYm9vbCBTZXNzaW9uOjp3cmFwRW5hYmxlZCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIF9lbXVsYXRpb24tPnRleHRXcmFwRW5hYmxlZCgpOworfQorCiB2
b2lkIFNlc3Npb246Om9uVmlld1NpemVDaGFuZ2UoaW50IC8qaGVpZ2h0Ki8sIGludCAvKndpZHRo
Ki8pCiB7CiAgIHVwZGF0ZVRlcm1pbmFsU2l6ZSgpOwpAQCAtNjE2LDYgKzY0OCwxNiBAQAogewog
ICAgIFFfQVNTRVJUKGxpbmVzID4gMCAmJiBjb2x1bW5zID4gMCk7CiAgICAgX3NoZWxsUHJvY2Vz
cy0+c2V0V2luZG93U2l6ZShsaW5lcyxjb2x1bW5zKTsKKworLy8rICBRU2l6ZSBjdXJyZW50U2l6
ZSA9IF9zaGVsbFByb2Nlc3MtPndpbmRvd1NpemUoKTsKKy8vKworLy8rICBpZiAoY3VycmVudFNp
emUuaGVpZ2h0KCkgIT0gbGluZXMgfHwgY3VycmVudFNpemUud2lkdGgoKSAhPSBjb2x1bW5zKQor
Ly8rICAgICBfc2hlbGxQcm9jZXNzLT5zZXRXaW5kb3dTaXplKGxpbmVzLGNvbHVtbnMpOworLy8r
CisvLysgIFFTaXplIG5ld1NpemUgPSBfc2hlbGxQcm9jZXNzLT53aW5kb3dTaXplKCk7CisvLysg
IFFfQVNTRVJUKG5ld1NpemUuaGVpZ2h0KCkgPT0gbGluZXMgJiYgbmV3U2l6ZS53aWR0aCgpID09
IGNvbHVtbnMpOworCisKIH0KIHZvaWQgU2Vzc2lvbjo6cmVmcmVzaCgpCiB7CkluZGV4OiBzcmMv
U2Vzc2lvbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMvU2Vzc2lvbkNvbnRyb2xsZXIu
aAkocmV2aXNpb24gOTM4ODEzKQorKysgc3JjL1Nlc3Npb25Db250cm9sbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE2NSw2ICsxNjUsNyBAQAogICAgIHZvaWQgcGFzdGVTZWxlY3Rpb24oKTsgLy8g
c2hvcnRjdXQgb25seQogICAgIHZvaWQgY2xlYXIoKTsKICAgICB2b2lkIGNsZWFyQW5kUmVzZXQo
KTsKKyAgICB2b2lkIHNldFdyYXBFbmFibGVkKGJvb2wgZW5hYmxlZCk7CiAgICAgdm9pZCBjb3B5
SW5wdXRUbygpOwogICAgIHZvaWQgZWRpdEN1cnJlbnRQcm9maWxlKCk7CiAgICAgdm9pZCBjaGFu
Z2VDb2RlYyhRVGV4dENvZGVjKiBjb2RlYyk7CkluZGV4OiBkZXNrdG9wL3Nlc3Npb251aS5yYwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBkZXNrdG9wL3Nlc3Npb251aS5yYwkocmV2aXNpb24gOTM4ODEzKQorKysg
ZGVza3RvcC9zZXNzaW9udWkucmMJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICAg
ICAgICAgICAgIDxBY3Rpb24gbmFtZT0ibW9uaXRvci1hY3Rpdml0eSIgZ3JvdXA9InNlc3Npb24t
dmlldy1vcGVyYXRpb25zIiAvPgogICAgICAgICAgICAgPFNlcGFyYXRvciBncm91cD0ic2Vzc2lv
bi12aWV3LW9wZXJhdGlvbnMiLz4KICAgICAgICAgICAgIDxBY3Rpb24gbmFtZT0iY2hhcmFjdGVy
LWVuY29kaW5nIiAgZ3JvdXA9InNlc3Npb24tdmlldy1vcGVyYXRpb25zIiAvPgorCQkJPEFjdGlv
biBuYW1lPSJlbmFibGUtd29yZC13cmFwIiBncm91cD0ic2Vzc2lvbi12aWV3LW9wZXJhdGlvbnMi
IC8+CiAgICAgICAgICAgICA8QWN0aW9uIG5hbWU9ImluY3JlYXNlLXRleHQtc2l6ZSIgIGdyb3Vw
PSJzZXNzaW9uLXZpZXctb3BlcmF0aW9ucyIgLz4KICAgICAgICAgICAgIDxBY3Rpb24gbmFtZT0i
ZGVjcmVhc2UtdGV4dC1zaXplIiAgZ3JvdXA9InNlc3Npb24tdmlldy1vcGVyYXRpb25zIiAvPgog
ICAgICAgICA8L01lbnU+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>161394</attachid>
            <date>2023-09-03 22:31:05 +0000</date>
            <delta_ts>2023-09-03 22:31:05 +0000</delta_ts>
            <desc>attachment-352116-0.html</desc>
            <filename>attachment-352116-0.html</filename>
            <type>text/html</type>
            <size>1224</size>
            <attacher>tcanabrava</attacher>
            
              <data encoding="base64">PGRpdiBkaXI9ImF1dG8iPlRoZXJl4oCZcyBhbiBvcHRpb24gZm9yIHRoYXQgaWYgeW91IGRvIHQg
bGlrZSB3b3JkIHdyYXAuIEnigJltIG9uIHRoZSBwaG9uZSBub3cgc28gaXTigJlzIGhhcmQgdG8g
cmVtZW1iZXIgd2hlcmUsIGJ1dCBpdOKAmXMgdGhlcmUuPC9kaXY+PGRpdj48YnI+PGRpdiBjbGFz
cz0iZ21haWxfcXVvdGUiPjxkaXYgZGlyPSJsdHIiIGNsYXNzPSJnbWFpbF9hdHRyIj5PbiBTdW4s
IDMgU2VwIDIwMjMgYXQgMTc6MzAgS2VubmV0aCBQZXJyeSAmbHQ7PGEgaHJlZj0ibWFpbHRvOmJ1
Z3ppbGxhX25vcmVwbHlAa2RlLm9yZyI+YnVnemlsbGFfbm9yZXBseUBrZGUub3JnPC9hPiZndDsg
d3JvdGU6PGJyPjwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1h
cmdpbjowcHggMHB4IDBweCAwLjhleDtib3JkZXItbGVmdC13aWR0aDoxcHg7Ym9yZGVyLWxlZnQt
c3R5bGU6c29saWQ7cGFkZGluZy1sZWZ0OjFleDtib3JkZXItbGVmdC1jb2xvcjpyZ2IoMjA0LDIw
NCwyMDQpIj48YSBocmVmPSJodHRwczovL2J1Z3Mua2RlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIz
ODAiIHJlbD0ibm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vYnVncy5rZGUub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MjM4MDwvYT48YnI+DQo8YnI+DQpLZW5uZXRoIFBlcnJ5ICZsdDs8
YSBocmVmPSJtYWlsdG86dGhvdGhvbmVnYW5AZ21haWwuY29tIiB0YXJnZXQ9Il9ibGFuayI+dGhv
dGhvbmVnYW5AZ21haWwuY29tPC9hPiZndDsgY2hhbmdlZDo8YnI+DQo8YnI+DQrCoCDCoCDCoCDC
oCDCoCDCoFdoYXTCoCDCoCB8UmVtb3ZlZMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
fEFkZGVkPGJyPg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTxicj4NCsKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgQ0N8wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfDxhIGhy
ZWY9Im1haWx0bzp0aG90aG9uZWdhbkBnbWFpbC5jb20iIHRhcmdldD0iX2JsYW5rIj50aG90aG9u
ZWdhbkBnbWFpbC5jb208L2E+PGJyPg0KPGJyPg0KLS0gPGJyPg0KWW91IGFyZSByZWNlaXZpbmcg
dGhpcyBtYWlsIGJlY2F1c2U6PGJyPg0KWW91IGFyZSB0aGUgYXNzaWduZWUgZm9yIHRoZSBidWcu
PC9ibG9ja3F1b3RlPjwvZGl2PjwvZGl2Pg0K
</data>

          </attachment>
      

    </bug>

</bugzilla>