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

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>74490</bug_id>
          
          <creation_ts>2011-12-14 00:51:18 -0800</creation_ts>
          <short_desc>Only EditCommandComposition should implement unapply and reapply</short_desc>
          <delta_ts>2011-12-16 20:45:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>74249</dependson>
          <blocked>74748</blocked>
    
    <blocked>74754</blocked>
    
    <blocked>74778</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cshu</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>japhet</cc>
    
    <cc>kenneth</cc>
    
    <cc>kevino</cc>
    
    <cc>morrita</cc>
    
    <cc>mrobinson</cc>
    
    <cc>mrowe</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</cc>
    
    <cc>tkent</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>520762</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-14 00:51:18 -0800</bug_when>
    <thetext>Right now EditCommand, SimpleEditCommand, and CompositeEditCommand all implement apply, unapply, and reapply methods. However this doesn&apos;t make much sense since CompositeEditCommand&apos;s unapply/reapply are never called and EditCommandComposition&apos;s unapply &amp; reapply can simply involve SimpleEditCommand&apos;s doUnapply and doReapply (we can disable delete button at the top-level command; not need to re-enable them after unapplying/reapplying each simple edit command).

Furthermore, it makes zero sense for EditCommandComposition for have apply or doApply. We should get rid of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521723</commentid>
    <comment_count>1</comment_count>
      <attachid>119392</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-15 00:56:36 -0800</bug_when>
    <thetext>Created attachment 119392
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521725</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-15 01:01:18 -0800</bug_when>
    <thetext>I&apos;m very unhappy about having to rename EditCommand to UndoManagerEntry but it seems this is inevitable because edit commands now create EditCommandComposition for undo/redo instead of themselves being undoable/redoable. It&apos;s semantically wrong for us to register an edit command for undo/redo.

An alternative approach is either replace EditCommand with EditCommandComposition or rename EditCommandComposition to UndoManagerEntry. I&apos;m fine with either approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521728</commentid>
    <comment_count>3</comment_count>
      <attachid>119392</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-12-15 01:01:54 -0800</bug_when>
    <thetext>Comment on attachment 119392
Patch

Attachment 119392 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10910178</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521730</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-15 01:03:18 -0800</bug_when>
    <thetext>Note I didn&apos;t update Wx code because Wx port overrides CompositeEditCommand and do other fancy stuff with edit commands. Per IRC discussion, I&apos;ll let Kevin take care of it after the fact.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521732</commentid>
    <comment_count>5</comment_count>
      <attachid>119392</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-15 01:06:14 -0800</bug_when>
    <thetext>Comment on attachment 119392
Patch

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

&gt; Source/WebKit/qt/WebCoreSupport/EditorClientQt.cpp:240
&gt; -void EditorClientQt::registerCommandForUndo(WTF::PassRefPtr&lt;WebCore::EditCommand&gt; cmd)
&gt; +void EditorClientQt::registerCommandForUndo(WTF::PassRefPtr&lt;WebCore::UndoManagerEntry&gt; entry)

Apparently I forgot to update EditorClientQt.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521763</commentid>
    <comment_count>6</comment_count>
      <attachid>119401</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-15 02:19:04 -0800</bug_when>
    <thetext>Created attachment 119401
Fixed Qt and Win builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521766</commentid>
    <comment_count>7</comment_count>
      <attachid>119401</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-12-15 02:27:06 -0800</bug_when>
    <thetext>Comment on attachment 119401
Fixed Qt and Win builds

Attachment 119401 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10914157</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521773</commentid>
    <comment_count>8</comment_count>
      <attachid>119401</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-15 02:48:25 -0800</bug_when>
    <thetext>Comment on attachment 119401
Fixed Qt and Win builds

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

&gt; Source/WebKit/qt/WebCoreSupport/EditCommandQt.h:23
&gt; -#include &lt;EditCommand.h&gt;
&gt; +#include &lt;UndoManagerEntry.h&gt;

I don&apos;t understand why Qt&apos;s giving the following error given that I&apos;m including UndoManagerEntry.h here:

In file included from ../../../Source/WebKit/qt/WebCoreSupport/EditCommandQt.cpp:21:
../../../Source/WebKit/qt/WebCoreSupport/EditCommandQt.h:34: error: expected &apos;)&apos; before &apos;&lt;&apos; token
../../../Source/WebKit/qt/WebCoreSupport/EditCommandQt.h:44: error: ISO C++ forbids declaration of &apos;RefPtr&apos; with no type
../../../Source/WebKit/qt/WebCoreSupport/EditCommandQt.h:44: error: invalid use of &apos;::&apos;
../../../Source/WebKit/qt/WebCoreSupport/EditCommandQt.h:44: error: expected &apos;;&apos; before &apos;&lt;&apos; token
../../../Source/WebKit/qt/WebCoreSupport/EditCommandQt.cpp:26: error: expected &apos;)&apos; before &apos;&lt;&apos; token
../../../Source/WebKit/qt/WebCoreSupport/EditCommandQt.cpp: In member function &apos;virtual void EditCommandQt::redo()&apos;:
../../../Source/WebKit/qt/WebCoreSupport/EditCommandQt.cpp:51: error: &apos;m_cmd&apos; was not declared in this scope
../../../Source/WebKit/qt/WebCoreSupport/EditCommandQt.cpp: In member function &apos;virtual void EditCommandQt::undo()&apos;:
../../../Source/WebKit/qt/WebCoreSupport/EditCommandQt.cpp:58: error: &apos;m_cmd&apos; was not declared in this scope
distcc[26227] ERROR: compile ../../../Source/WebKit/qt/WebCoreSupport/EditCommandQt.cpp on localhosFailed to run &quot;[&apos;Tools/Scripts/build-webkit&apos;, &apos;--release&apos;, &apos;--qt&apos;, &apos;--makeargs=&quot;-j20&quot;&apos;]&quot; exit_code: 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521949</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-15 09:15:22 -0800</bug_when>
    <thetext>I do not thing “undo manager entry” is a good name. I do think that one undoable step should be a class, maybe named “undo step”, but “manager entry” is computer jargon disaster!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521961</commentid>
    <comment_count>10</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-12-15 09:29:04 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; I do not thing “undo manager entry” is a good name. I do think that one undoable step should be a class, maybe named “undo step”, but “manager entry” is computer jargon disaster!

What about EditActionUndo, or EditActionApplier?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521962</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-15 09:30:46 -0800</bug_when>
    <thetext>I like a name like “undoable action” or “undo step” or “undoable operation” or something like that. I don’t like “edit action undo” as much because the phrase doesn’t even sound like a noun phrase. I don’t like “edit action applier” because I in the phrase “edit action” the word edit sounds like a verb, not a noun.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521971</commentid>
    <comment_count>12</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-12-15 09:42:10 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; I like a name like “undoable action” or “undo step” or “undoable operation” or something like that. I don’t like “edit action undo” as much because the phrase doesn’t even sound like a noun phrase. I don’t like “edit action applier” because I in the phrase “edit action” the word edit sounds like a verb, not a noun.

I think UndoableAction sounds good. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521981</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-15 09:53:31 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; I do not thing “undo manager entry” is a good name. I do think that one undoable step should be a class, maybe named “undo step”, but “manager entry” is computer jargon disaster!

But the thing that manages undo stack is called UndoManager:
http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUndoManager_Class/Reference/Reference.html

(In reply to comment #11)
&gt; I like a name like “undoable action” or “undo step” or “undoable operation” or something like that. I don’t like “edit action undo” as much because the phrase doesn’t even sound like a noun phrase. I don’t like “edit action applier” because I in the phrase “edit action” the word edit sounds like a verb, not a noun.

I&apos;ve considered names like UndoItem, UndoableAction, etc... but they all don&apos;t sound quite right since they&apos;re also used for redos. We could name it like UndoRedoItem but that sounds ad-hoc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522090</commentid>
    <comment_count>14</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-12-15 11:17:00 -0800</bug_when>
    <thetext>&gt; (In reply to comment #11)
&gt; &gt; I like a name like “undoable action” or “undo step” or “undoable operation” or something like that. I don’t like “edit action undo” as much because the phrase doesn’t even sound like a noun phrase. I don’t like “edit action applier” because I in the phrase “edit action” the word edit sounds like a verb, not a noun.
&gt; 
&gt; I&apos;ve considered names like UndoItem, UndoableAction, etc... but they all don&apos;t sound quite right since they&apos;re also used for redos. We could name it like UndoRedoItem but that sounds ad-hoc.

I do see the problem with undo itself, but I think that undoable suggests that it is inherently redoable as well, though maybe that&apos;s just how I tend to look at it... If you can undo something, you usually can also redo it. 

I think for myself, the reason I prefer something like UndoableAction is that UndoManagerEntry sounds like a simple data item in a list. I wouldn&apos;t think from the name that it actually would do the undo / redo itself, I would think that it would just provide the data needed for the UndoManager to perform those actions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522103</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-15 11:36:58 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; I do see the problem with undo itself, but I think that undoable suggests that it is inherently redoable as well, though maybe that&apos;s just how I tend to look at it... If you can undo something, you usually can also redo it. 
&gt; 
&gt; I think for myself, the reason I prefer something like UndoableAction is that UndoManagerEntry sounds like a simple data item in a list. I wouldn&apos;t think from the name that it actually would do the undo / redo itself, I would think that it would just provide the data needed for the UndoManager to perform those actions.

Fair enough. Let&apos;s go with UndoableAction then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522484</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-15 20:40:17 -0800</bug_when>
    <thetext>hm... UndoableAction might be problematic due to its having editingAction(). action.editingAction makes little sense. Undo step, though, sounds too low-level since one of these entries may consist of multiple SimpleEditCommand.

How about UndoItem? Or UndoableCommand?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522540</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-15 22:21:47 -0800</bug_when>
    <thetext>.net framework 4 calls it UndoUnit: http://msdn.microsoft.com/en-us/library/system.activities.presentation.undounit.aspx

QtUndoManager uses QAction: http://doc.qt.nokia.com/solutions/4/qtundo/qtundomanager.html

Java calls it UndoableEdit: http://docs.oracle.com/javase/6/docs/api/javax/swing/undo/UndoManager.html

Cocoa&apos;s UndoManager doesn&apos;t give it an explicit name (it says undoable/redoable &quot;operation&quot; in some places):
http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/UndoArchitecture/UndoArchitecture.html

Visual Studio&apos;s UndoManager interface calls it UndoableAction:
http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.modeling.undomanager.aspx

ActionScript 3.0 has IOperation:
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flashx/undo/UndoManager.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522576</commentid>
    <comment_count>18</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-12-15 23:41:47 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; hm... UndoableAction might be problematic due to its having editingAction(). action.editingAction makes little sense. Undo step, though, sounds too low-level since one of these entries may consist of multiple SimpleEditCommand.
&gt; 
&gt; How about UndoItem? Or UndoableCommand?

Perhaps UndoItem is the best one to avoid using a term too similar to Action in the class name. I do like Java&apos;s UndoableEdit as well, but then we end up with edit.editingAction() syntax. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522582</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-15 23:49:38 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; Perhaps UndoItem is the best one to avoid using a term too similar to Action in the class name. I do like Java&apos;s UndoableEdit as well, but then we end up with edit.editingAction() syntax. :(

Yeah, but I don&apos;t like the fact &quot;item&quot; is such a generic word; no better than entry. &quot;Edit&quot; is a horrible noun though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522583</commentid>
    <comment_count>20</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-15 23:51:30 -0800</bug_when>
    <thetext>I think we can live with UndoableAction if we renamed editingAction to actionType since we have to rename either editingAction or EditAction anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522585</commentid>
    <comment_count>21</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-16 00:00:03 -0800</bug_when>
    <thetext>Hm... thinking more carefully, UndoableAction sounds like it&apos;s an action that can be undone and should have apply in addition to unapply/reapply.

UndoStep is starting to grow on me. I think &quot;step&quot; is a better word than &quot;item&quot; or &quot;unit&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522904</commentid>
    <comment_count>22</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-12-16 12:08:55 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; Hm... thinking more carefully, UndoableAction sounds like it&apos;s an action that can be undone and should have apply in addition to unapply/reapply.
&gt; 
&gt; UndoStep is starting to grow on me. I think &quot;step&quot; is a better word than &quot;item&quot; or &quot;unit&quot;.

Yeah, maybe this is the best choice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522948</commentid>
    <comment_count>23</comment_count>
      <attachid>119401</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-16 12:42:38 -0800</bug_when>
    <thetext>Comment on attachment 119401
Fixed Qt and Win builds

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

Seems reasonable.  Obviously you need to fix Qt.

&gt; Source/WebCore/editing/CompositeEditCommand.cpp:-203
&gt; -    RefPtr&lt;CompositeEditCommand&gt; command = prpCommand;

I&apos;m not sure this is a negative pattern we should be removing.

&gt;&gt; Source/WebKit/qt/WebCoreSupport/EditCommandQt.h:23
&gt;&gt; +#include &lt;UndoManagerEntry.h&gt;
&gt; 
&gt; I don&apos;t understand why Qt&apos;s giving the following error given that I&apos;m including UndoManagerEntry.h here:
&gt; 
&gt; In file included from ../../../Source/WebKit/qt/WebCoreSupport/EditCommandQt.cpp:21:
&gt; ../../../Source/WebKit/qt/WebCoreSupport/EditCommandQt.h:34: error: expected &apos;)&apos; before &apos;&lt;&apos; token
&gt; ../../../Source/WebKit/qt/WebCoreSupport/EditCommandQt.h:44: error: ISO C++ forbids declaration of &apos;RefPtr&apos; with no type
&gt; ../../../Source/WebKit/qt/WebCoreSupport/EditCommandQt.h:44: error: invalid use of &apos;::&apos;
&gt; ../../../Source/WebKit/qt/WebCoreSupport/EditCommandQt.h:44: error: expected &apos;;&apos; before &apos;&lt;&apos; token
&gt; ../../../Source/WebKit/qt/WebCoreSupport/EditCommandQt.cpp:26: error: expected &apos;)&apos; before &apos;&lt;&apos; token
&gt; ../../../Source/WebKit/qt/WebCoreSupport/EditCommandQt.cpp: In member function &apos;virtual void EditCommandQt::redo()&apos;:
&gt; ../../../Source/WebKit/qt/WebCoreSupport/EditCommandQt.cpp:51: error: &apos;m_cmd&apos; was not declared in this scope
&gt; ../../../Source/WebKit/qt/WebCoreSupport/EditCommandQt.cpp: In member function &apos;virtual void EditCommandQt::undo()&apos;:
&gt; ../../../Source/WebKit/qt/WebCoreSupport/EditCommandQt.cpp:58: error: &apos;m_cmd&apos; was not declared in this scope
&gt; distcc[26227] ERROR: compile ../../../Source/WebKit/qt/WebCoreSupport/EditCommandQt.cpp on localhosFailed to run &quot;[&apos;Tools/Scripts/build-webkit&apos;, &apos;--release&apos;, &apos;--qt&apos;, &apos;--makeargs=&quot;-j20&quot;&apos;]&quot; exit_code: 2

Include cycle?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522972</commentid>
    <comment_count>24</comment_count>
      <attachid>119659</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-16 13:15:47 -0800</bug_when>
    <thetext>Created attachment 119659
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522975</commentid>
    <comment_count>25</comment_count>
      <attachid>119659</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-16 13:18:01 -0800</bug_when>
    <thetext>Comment on attachment 119659
Patch for landing

Clearing cq+ temporarily to wait for Qt EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522978</commentid>
    <comment_count>26</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-16 13:20:31 -0800</bug_when>
    <thetext>Thanks for the review, Eric.

I&apos;ve renamed UndoManagerEntry to UndoStep per discussion with Darin &amp; Kevin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523015</commentid>
    <comment_count>27</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-16 14:05:06 -0800</bug_when>
    <thetext>Committed r103104: &lt;http://trac.webkit.org/changeset/103104&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523213</commentid>
    <comment_count>28</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2011-12-16 19:52:17 -0800</bug_when>
    <thetext>This broke the build because it removed headers from WebCore.framework that are used from within WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523214</commentid>
    <comment_count>29</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-16 19:57:56 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; This broke the build because it removed headers from WebCore.framework that are used from within WebKit.

You mean EditCommand.h? I thought I&apos;ve replaced all of #include by UndoStep.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523215</commentid>
    <comment_count>30</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2011-12-16 19:59:28 -0800</bug_when>
    <thetext>The failures mention CompositeEditCommand.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523216</commentid>
    <comment_count>31</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2011-12-16 20:01:10 -0800</bug_when>
    <thetext>When making code changes that remove headers I’d strongly suggest deleting all built frameworks from your build directory. It will prevent stale headers from being picked up so that you can verify that you have removed all uses of them, but won’t require a full rebuild like nuking the entire build directory would.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523217</commentid>
    <comment_count>32</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-16 20:04:24 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; The failures mention CompositeEditCommand.h.

I can&apos;t find any file in Source/WebKit that includes CompositeEditCommand.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523218</commentid>
    <comment_count>33</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-16 20:04:42 -0800</bug_when>
    <thetext>Of course, except files in wx port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523219</commentid>
    <comment_count>34</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2011-12-16 20:08:16 -0800</bug_when>
    <thetext>This is the sort of issue that grep isn’t really suitable to diagnose.  No files in WebKit include it directly. However, WebFrame.mm includes one or more files from WebCore that in turn attempt to include CompositeEditCommand.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523220</commentid>
    <comment_count>35</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-16 20:12:33 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; This is the sort of issue that grep isn’t really suitable to diagnose.  No files in WebKit include it directly. However, WebFrame.mm includes one or more files from WebCore that in turn attempt to include CompositeEditCommand.h.

Oh it&apos;s probably ReplaceSelectionCommand.h.  I thought I removed it in http://trac.webkit.org/changeset/102627 :( I guess that removal got lost in somewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523222</commentid>
    <comment_count>36</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2011-12-16 20:20:42 -0800</bug_when>
    <thetext>The following headers are in WebCore.framework/PrivateHeaders and include CompositeEditCommand.h:

ApplyBlockElementCommand.h
DeleteSelectionCommand.h
MoveSelectionCommand.h
ReplaceSelectionCommand.h
TypingCommand.h

Any and all of these will cause similar build failures if used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523223</commentid>
    <comment_count>37</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2011-12-16 20:21:25 -0800</bug_when>
    <thetext>Do you want me to file a new bug tracking this or are you going to fix it quickly? Given that the build is broken I’d appreciate either a quick fix or the change to be rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523226</commentid>
    <comment_count>38</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-16 20:26:05 -0800</bug_when>
    <thetext>(In reply to comment #37)
&gt; Do you want me to file a new bug tracking this or are you going to fix it quickly? Given that the build is broken I’d appreciate either a quick fix or the change to be rolled out.

I&apos;ll try to fix it ASAP. Doing a clean rebuild to reproduce the build failure at the moment. Sorry for the failure again :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523228</commentid>
    <comment_count>39</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2011-12-16 20:29:30 -0800</bug_when>
    <thetext>As I mentioned earlier, a clean rebuild shouldn’t be necessary to see this. Deleting WebCore.framework from the build directory should be sufficient and should not result in WebCore rebuilding at all (though it may relink).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523229</commentid>
    <comment_count>40</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-16 20:30:27 -0800</bug_when>
    <thetext>Oops, it appears that _insertParagraphSeparatorInQuotedContent is calling TypingCommand::insertParagraphSeparatorInQuotedContent :( I&apos;ll have to add CompositeEditCommand.h back to the framework.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523235</commentid>
    <comment_count>41</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-16 20:45:04 -0800</bug_when>
    <thetext>Build fix landed in http://trac.webkit.org/changeset/103141; filed https://bugs.webkit.org/show_bug.cgi?id=74778 to remove these *Command.h dependencies from WebKit code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523236</commentid>
    <comment_count>42</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2011-12-16 20:45:42 -0800</bug_when>
    <thetext>Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119392</attachid>
            <date>2011-12-15 00:56:36 -0800</date>
            <delta_ts>2011-12-15 02:18:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74490-20111215005635.patch</filename>
            <type>text/plain</type>
            <size>102493</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjg5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDExLTEyLTE1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE9ubHkgRWRpdENvbW1hbmRDb21w
b3NpdGlvbiBzaG91bGQgaW1wbGVtZW50IHVuYXBwbHkgYW5kIHJlYXBwbHkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NDkwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIG5ldyBhYnN0cmFj
dCBjbGFzcyBVbmRvTWFuYWdlckVudHJ5IHRvIHJlcGxhY2UgRWRpdENvbW1hbmQgZm9yIEVkaXRv
ckNsaWVudCwgYW5kIG1ha2UgRWRpdENvbW1hbmQKKyAgICAgICAgcHJpdmF0ZSB0byBXZWJDb3Jl
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogR05VbWFrZWZp
bGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjpjcmVhdGUpOiBUYWtlcyBFZGl0QWN0
aW9uIGluc3RlYWQgb2YgYm9vbGVhbiBmb3IgQ3JlYXRlTGlua0NvbW1hbmQuCisgICAgICAgIChX
ZWJDb3JlOjpFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjpFZGl0Q29tbWFuZENvbXBvc2l0aW9uKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjp1bmFwcGx5
KTogTW92ZWQgZnJvbSBFZGl0Q29tbWFuZDsgd2UgZG9uJ3QgaGF2ZSB0byBjYWxsIGlzVG9wTGV2
ZWxDb21tYW5kCisgICAgICAgIGFueW1vcmUgYmVjYXVzZSBFZGl0Q29tbWFuZENvbXBvc2l0aW9u
IGlzIGFsd2F5cyB0b3AtbGV2ZWwuIEluIGZhY3QsIHRoZSBvbmx5IHRoaW5nIHVuYXBwbHkvcmVh
cHBseSBkbworICAgICAgICBpbiBhZGRpdGlvbiB0byB3aGF0IGRvVW5hcHBseS9kb1JlYXBwbHkg
ZG8gZm9yIHN1Yi1sZXZlbCBjb21tYW5kcyBpcyBkaXNhYmxpbmcgYW5kIGVuYWJsaW5nIGRlbGV0
ZSBidXR0b24KKyAgICAgICAgYW5kIGRlZmluaW5nIGFuIGV2ZW50IHF1ZXVlIHNjb3BlLiBIb3dl
dmVyLCB0aGVzZSBjYW4gYmUgZG9uZSBhdCB0b3AtbGV2ZWwgY29tbWFuZCBhbnl3YXksIHNvIHdl
IG5vdyBvbmx5IGNhbGwKKyAgICAgICAgZG9BcHBseSBmb3Igc3ViLWxldmVsIGNvbW1hbmRzLgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6cmVhcHBseSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6c2V0U3RhcnRpbmdT
ZWxlY3Rpb24pOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRDb21tYW5kQ29tcG9zaXRp
b246OnNldEVuZGluZ1NlbGVjdGlvbik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlD
b21tYW5kKTogTW92ZWQgZnJvbSBFZGl0Q29tbWFuZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBv
c2l0ZUVkaXRDb21tYW5kOjphcHBseSk6IE1vdmVkIGZyb20gRWRpdENvbW1hbmQ7IGRvZXNuJ3Qg
Y2FsbCBpc1RvcExldmVsQ29tbWFuZCBmb3IgdGhlIHNhbWUgcmVhc29uLgorICAgICAgICAoV2Vi
Q29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmVuc3VyZUNvbXBvc2l0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjphcHBseUNvbW1hbmRUb0NvbXBvc2l0ZSk6
IENhbGwgZG9BcHBseSBpbnN0ZWFkIG9mIGFwcGx5IGZvciB0aGUgc2FtZSByZWFzb24uCisgICAg
ICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6d2FzQ3JlYXRlTGlua0NvbW1hbmQpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6c3RhcnRpbmdTZWxlY3Rpb24pOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRDb21tYW5kQ29tcG9zaXRpb246OmVuZGluZ1NlbGVj
dGlvbik6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvRWRpdENvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdENvbW1hbmQ6OnNldFN0YXJ0aW5nU2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRDb21tYW5kOjpzZXRFbmRpbmdTZWxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2ltcGxlRWRpdENvbW1hbmQ6OmRvUmVhcHBseSk6IE1vdmVkIGZyb20gRWRpdENvbW1h
bmQuCisgICAgICAgICogZWRpdGluZy9FZGl0Q29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcv
VW5kb01hbmFnZXJFbnRyeS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2Vy
RW50cnk6On5VbmRvTWFuYWdlckVudHJ5KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRz
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUVkaXRvckNsaWVudDo6c2hvdWxkSW5zZXJ0Tm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUVkaXRvckNsaWVudDo6ZGlkU2V0U2VsZWN0aW9u
VHlwZXNGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RWRpdG9yQ2xpZW50
OjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKTogVGFrZXMgVW5kb01hbmFnZXJFbnRyeSBpbnN0ZWFk
IG9mIEVkaXRDb21tYW5kLgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlFZGl0b3JDbGllbnQ6OnJl
Z2lzdGVyQ29tbWFuZEZvclJlZG8pOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVu
dC5oOgorCiAyMDExLTExLTAzICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBBIHNwaW4gYnV0dG9uIGNoYW5nZXMgdGhlIHZhbHVlIGluY29ycmVjdGx5IGlmIGl0
IGlzIGNsaWNrZWQgYWZ0ZXIgdG91Y2ggZXZlbnRzLgpJbmRleDogU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCShyZXZpc2lvbiAxMDI4MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xNTA4LDYgKzE1MDgsNyBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggXAogCVNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9N
YW5hZ2VyRW50cnkuaCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmxpbmtDb21tYW5kLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmxpbmtDb21tYW5kLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJl
dmlzaW9uIDEwMjgzNSkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29w
eSkKQEAgLTE3MjIsNiArMTcyMiw3IEBAIEhFQURFUlMgKz0gXAogICAgIGVkaXRpbmcvU3BsaXRU
ZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50Q29tbWFuZC5oIFwKICAgICBlZGl0aW5nL1RleHRJdGVy
YXRvci5oIFwKICAgICBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuaCBcCisgICAgZWRpdGluZy9VbmRv
TWFuYWdlckVudHJ5LmggXAogICAgIGVkaXRpbmcvVW5saW5rQ29tbWFuZC5oIFwKICAgICBlZGl0
aW5nL1Zpc2libGVQb3NpdGlvbi5oIFwKICAgICBlZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaCBc
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTAyODM1KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE1OCw4ICsxNTgsNiBAQCBf
X1pON1dlYkNvcmUxMHRvRG9jdW1lbnRFTjNKU0M3SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTExQml0
bWFwSW1hZ2VDMUVQN0NHSW1hZ2VQTlNfMTNJbWFnZU9ic2VydmVyRQogX19aTjdXZWJDb3JlMTFD
YWNoZWRGcmFtZTIzY2FjaGVkRnJhbWVQbGF0Zm9ybURhdGFFdgogX19aTjdXZWJDb3JlMTFDYWNo
ZWRGcmFtZTI2c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGFFTjNXVEYxMFBhc3NPd25QdHJJTlNf
MjNDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YUVFRQotX19aTjdXZWJDb3JlMTFFZGl0Q29tbWFuZDdy
ZWFwcGx5RXYKLV9fWk43V2ViQ29yZTExRWRpdENvbW1hbmQ3dW5hcHBseUV2CiBfX1pON1dlYkNv
cmUxMUZpbGVDaG9vc2VyMTBjaG9vc2VGaWxlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3Jl
MTFGaWxlQ2hvb3NlcjExY2hvb3NlRmlsZXNFUktOM1dURjZWZWN0b3JJTlMxXzZTdHJpbmdFTG0w
RUVFCiBfX1pON1dlYkNvcmUxMUZpbGVDaG9vc2VyRDFFdgpJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQko
cmV2aXNpb24gMTAyODM1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTc4LDYgKzI1NzgsNyBAQAogICAgICAgICAgICAgJ2VkaXRpbmcvVGV4dENo
ZWNraW5nSGVscGVyLmgnLAogICAgICAgICAgICAgJ2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCcs
CiAgICAgICAgICAgICAnZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCcsCisgICAgICAgICAgICAn
ZWRpdGluZy9VbmRvTWFuYWdlckVudHJ5LmgnLAogICAgICAgICAgICAgJ2VkaXRpbmcvVW5saW5r
Q29tbWFuZC5jcHAnLAogICAgICAgICAgICAgJ2VkaXRpbmcvVW5saW5rQ29tbWFuZC5oJywKICAg
ICAgICAgICAgICdlZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAnLApJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDEwMjgzNSkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC01MjkyMiw2ICs1MjkyMiwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxlZGl0aW5nXFVuZG9NYW5hZ2VyRW50cnkuaCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZWRpdGluZ1xV
bmxpbmtDb21tYW5kLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxMDI4MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMwMDMsMTQgKzMwMDMsMTQgQEAKIAkJOTMz
MDlEREEwOTlFNjQ5MjAwNTZFNTgxIC8qIEJyZWFrQmxvY2txdW90ZUNvbW1hbmQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMDlEOEIwOTlFNjQ5
MTAwNTZFNTgxIC8qIEJyZWFrQmxvY2txdW90ZUNvbW1hbmQuY3BwICovOyB9OwogCQk5MzMwOURE
QjA5OUU2NDkyMDA1NkU1ODEgLyogQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMDlEOEMwOTlFNjQ5MTAwNTZF
NTgxIC8qIEJyZWFrQmxvY2txdW90ZUNvbW1hbmQuaCAqLzsgfTsKIAkJOTMzMDlEREMwOTlFNjQ5
MjAwNTZFNTgxIC8qIENvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzA5RDhEMDk5RTY0OTEwMDU2RTU4MSAvKiBD
b21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgKi87IH07Ci0JCTkzMzA5REREMDk5RTY0OTIwMDU2RTU4
MSAvKiBDb21wb3NpdGVFZGl0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTMzMDlEOEUwOTlFNjQ5MTAwNTZFNTgxIC8qIENvbXBvc2l0ZUVk
aXRDb21tYW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJOTMzMDlEREQwOTlFNjQ5MjAwNTZFNTgxIC8qIENvbXBvc2l0ZUVkaXRDb21tYW5kLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzMwOUQ4RTA5
OUU2NDkxMDA1NkU1ODEgLyogQ29tcG9zaXRlRWRpdENvbW1hbmQuaCAqLzsgfTsKIAkJOTMzMDlE
REUwOTlFNjQ5MjAwNTZFNTgxIC8qIERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMDlEOEYwOTlFNjQ5
MTAwNTZFNTgxIC8qIERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwICovOyB9OwogCQk5MzMw
OURERjA5OUU2NDkyMDA1NkU1ODEgLyogRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMDlEOTAwOTlFNjQ5
MTAwNTZFNTgxIC8qIERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuaCAqLzsgfTsKIAkJOTMzMDlE
RTAwOTlFNjQ5MjAwNTZFNTgxIC8qIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMDlEOTEwOTlFNjQ5MTAw
NTZFNTgxIC8qIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwICovOyB9OwogCQk5MzMwOURFMTA5
OUU2NDkyMDA1NkU1ODEgLyogRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMDlEOTIwOTlFNjQ5MTAwNTZFNTgx
IC8qIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzMwOURFMjA5OUU2NDkyMDA1NkU1ODEgLyogRWRpdEFj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMz
MDlEOTMwOTlFNjQ5MTAwNTZFNTgxIC8qIEVkaXRBY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzMwOURFMzA5OUU2NDkyMDA1NkU1ODEg
LyogRWRpdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTMzMDlEOTQwOTlFNjQ5MTAwNTZFNTgxIC8qIEVkaXRDb21tYW5kLmNwcCAqLzsg
fTsKLQkJOTMzMDlERTQwOTlFNjQ5MjAwNTZFNTgxIC8qIEVkaXRDb21tYW5kLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzMwOUQ5NTA5OUU2NDkxMDA1
NkU1ODEgLyogRWRpdENvbW1hbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk5MzMwOURFNDA5OUU2NDkyMDA1NkU1ODEgLyogRWRpdENvbW1hbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzA5RDk1
MDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0Q29tbWFuZC5oICovOyB9OwogCQk5MzMwOURFNTA5OUU2
NDkyMDA1NkU1ODEgLyogSFRNTEludGVyY2hhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzA5RDk2MDk5RTY0OTEwMDU2RTU4MSAvKiBIVE1M
SW50ZXJjaGFuZ2UuY3BwICovOyB9OwogCQk5MzMwOURFNjA5OUU2NDkyMDA1NkU1ODEgLyogSFRN
TEludGVyY2hhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzMwOUQ5NzA5OUU2NDkxMDA1NkU1ODEgLyogSFRNTEludGVyY2hhbmdlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTMzMDlERTcwOTlF
NjQ5MjAwNTZFNTgxIC8qIGh0bWxlZGl0aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzA5RDk4MDk5RTY0OTEwMDU2RTU4MSAvKiBodG1sZWRp
dGluZy5jcHAgKi87IH07CkBAIC0zMzY1LDYgKzMzNjUsNyBAQAogCQk5OEVCMUY5NTEzMTNGRTA1
MDBEMEUxRUEgLyogTm90SW1wbGVtZW50ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk4RUIxRjk0MTMxM0ZFMDUwMEQwRTFFQSAvKiBOb3RJbXBsZW1l
bnRlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTlCMEZCMTkxMTQwREI1NzkwMDIyNTg4RiAvKiBIVFRQVmFsaWRhdGlvbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjBGQjE4RjE0MERCNTc5MDAy
MjU4OEYgLyogSFRUUFZhbGlkYXRpb24uY3BwICovOyB9OwogCQk5QjBGQjE5MjE0MERCNTc5MDAy
MjU4OEYgLyogSFRUUFZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDlCMEZCMTkwMTQwREI1NzkwMDIyNTg4RiAvKiBIVFRQVmFsaWRhdGlv
bi5oICovOyB9OworCQk5QjJEOEE3OTE0OTk3Q0NGMDBFQ0VGM0UgLyogVW5kb01hbmFnZXJFbnRy
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyRDhB
NzgxNDk5N0NDRjAwRUNFRjNFIC8qIFVuZG9NYW5hZ2VyRW50cnkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QjMyQ0RBOTEzREY3RkE5MDBGMzRE
MTMgLyogUmVuZGVyZWRQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUIzMkNEQTcxM0RGN0ZBOTAwRjM0RDEzIC8qIFJlbmRlcmVkUG9zaXRp
b24uaCAqLzsgfTsKIAkJOUIzMkNEQUExM0RGN0ZBOTAwRjM0RDEzIC8qIFJlbmRlcmVkUG9zaXRp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIz
MkNEQTgxM0RGN0ZBOTAwRjM0RDEzIC8qIFJlbmRlcmVkUG9zaXRpb24uY3BwICovOyB9OwogCQk5
QjM3NUVEQTE0NDc4QTAxMDBGM0NBRTUgLyogTWljcm9EYXRhSXRlbUxpc3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIzNzVFRDgxNDQ3OEEwMTAw
RjNDQUU1IC8qIE1pY3JvRGF0YUl0ZW1MaXN0LmNwcCAqLzsgfTsKQEAgLTEwNTg5LDYgKzEwNTkw
LDcgQEAKIAkJOThFQjFGOTQxMzEzRkUwNTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdEltcGxlbWVudGVkLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMEZCMThGMTQwREI1NzkwMDIyNTg4RiAvKiBIVFRQVmFs
aWRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVFRQVmFs
aWRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMEZCMTkwMTQwREI1
NzkwMDIyNTg4RiAvKiBIVFRQVmFsaWRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIVFRQVmFsaWRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
QjJEOEE3ODE0OTk3Q0NGMDBFQ0VGM0UgLyogVW5kb01hbmFnZXJFbnRyeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBVbmRvTWFuYWdlckVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTlCMkY3Q0Y3MTQ1NjIxMjAwMDdGOEI1MCAvKiBNaWNyb0RhdGFJdGVt
VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWljcm9EYXRh
SXRlbVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIyRjdDRjgxNDU2
MjEyMDAwN0Y4QjUwIC8qIE1pY3JvRGF0YUl0ZW1WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNaWNyb0RhdGFJdGVtVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOUIzMkNEQTcxM0RGN0ZBOTAwRjM0RDEzIC8qIFJlbmRlcmVkUG9zaXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyZWRQb3NpdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcwNjgsNiArMTcwNzAsNyBAQAogCQkJCTkzMzA5
RENEMDk5RTY0OTEwMDU2RTU4MSAvKiBUZXh0SXRlcmF0b3IuaCAqLywKIAkJCQk5MzMwOURDQTA5
OUU2NDkxMDA1NkU1ODEgLyogVHlwaW5nQ29tbWFuZC5jcHAgKi8sCiAJCQkJOTMzMDlEQ0IwOTlF
NjQ5MTAwNTZFNTgxIC8qIFR5cGluZ0NvbW1hbmQuaCAqLywKKwkJCQk5QjJEOEE3ODE0OTk3Q0NG
MDBFQ0VGM0UgLyogVW5kb01hbmFnZXJFbnRyeS5oICovLAogCQkJCUQwODZGRTk3MDlENTNBQUIw
MDVCQzc0RCAvKiBVbmxpbmtDb21tYW5kLmNwcCAqLywKIAkJCQlEMDg2RkU5NjA5RDUzQUFCMDA1
QkM3NEQgLyogVW5saW5rQ29tbWFuZC5oICovLAogCQkJCTkzMzA5RENFMDk5RTY0OTEwMDU2RTU4
MSAvKiB2aXNpYmxlX3VuaXRzLmNwcCAqLywKQEAgLTI0ODMwLDYgKzI0ODMzLDcgQEAKIAkJCQky
NkMxN0EzRTE0OTFEMkQ0MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY1ODBGQTMxNDk2OTM5MTAwRkI1QkQ4IC8qIFdlYlRpbGVDYWNoZUxheWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjU4MEZBRjE0OTgwMEQ0MDBGQjVCRDggLyogQW5pbWF0aW9uVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5QjJEOEE3OTE0OTk3Q0NGMDBFQ0VGM0UgLyog
VW5kb01hbmFnZXJFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkocmV2aXNpb24gMTAyODM1KQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFwcGVuZE5vZGVDb21tYW5k
LmgiCiAjaW5jbHVkZSAiQXBwbHlTdHlsZUNvbW1hbmQuaCIKKyNpbmNsdWRlICJEZWxldGVCdXR0
b25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5oIgog
I2luY2x1ZGUgIkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgpAQCAtNTIsNiArNTMsNyBAQAogI2luY2x1ZGUgIlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgi
CiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCisjaW5j
bHVkZSAiU2NvcGVkRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIlNldE5vZGVBdHRyaWJ1dGVDb21t
YW5kLmgiCiAjaW5jbHVkZSAiU3BsaXRFbGVtZW50Q29tbWFuZC5oIgogI2luY2x1ZGUgIlNwbGl0
VGV4dE5vZGVDb21tYW5kLmgiCkBAIC03MSwzNiArNzMsNjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogUGFzc1JlZlB0cjxFZGl0Q29tbWFuZENv
bXBvc2l0aW9uPiBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3Vt
ZW50LAotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHN0YXJ0aW5nU2VsZWN0aW9uLCBjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiBlbmRpbmdTZWxlY3Rpb24sIGJvb2wgd2FzQ3JlYXRlTGlua0Nv
bW1hbmQpCisgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc3RhcnRpbmdTZWxlY3Rpb24sIGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIGVuZGluZ1NlbGVjdGlvbiwgRWRpdEFjdGlvbiBlZGl0QWN0
aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgRWRpdENvbW1hbmRDb21wb3NpdGlvbihk
b2N1bWVudCwgc3RhcnRpbmdTZWxlY3Rpb24sIGVuZGluZ1NlbGVjdGlvbiwgd2FzQ3JlYXRlTGlu
a0NvbW1hbmQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVkaXRDb21tYW5kQ29tcG9zaXRp
b24oZG9jdW1lbnQsIHN0YXJ0aW5nU2VsZWN0aW9uLCBlbmRpbmdTZWxlY3Rpb24sIGVkaXRBY3Rp
b24pKTsKIH0KIAotRWRpdENvbW1hbmRDb21wb3NpdGlvbjo6RWRpdENvbW1hbmRDb21wb3NpdGlv
bihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHN0YXJ0aW5nU2Vs
ZWN0aW9uLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBlbmRpbmdTZWxlY3Rpb24sIGJvb2wgd2Fz
Q3JlYXRlTGlua0NvbW1hbmQpCi0gICAgOiBFZGl0Q29tbWFuZChkb2N1bWVudCwgc3RhcnRpbmdT
ZWxlY3Rpb24sIGVuZGluZ1NlbGVjdGlvbikKK0VkaXRDb21tYW5kQ29tcG9zaXRpb246OkVkaXRD
b21tYW5kQ29tcG9zaXRpb24oRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBzdGFydGluZ1NlbGVjdGlvbiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZW5kaW5nU2Vs
ZWN0aW9uLCBFZGl0QWN0aW9uIGVkaXRBY3Rpb24pCisgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50
KQorICAgICwgbV9zdGFydGluZ1NlbGVjdGlvbihzdGFydGluZ1NlbGVjdGlvbikKKyAgICAsIG1f
ZW5kaW5nU2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbikKICAgICAsIG1fc3RhcnRpbmdSb290RWRp
dGFibGVFbGVtZW50KHN0YXJ0aW5nU2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkKICAg
ICAsIG1fZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudChlbmRpbmdTZWxlY3Rpb24ucm9vdEVkaXRh
YmxlRWxlbWVudCgpKQotICAgICwgbV93YXNDcmVhdGVMaW5rQ29tbWFuZCh3YXNDcmVhdGVMaW5r
Q29tbWFuZCkKKyAgICAsIG1fZWRpdEFjdGlvbihlZGl0QWN0aW9uKQogewogfQogCi12b2lkIEVk
aXRDb21tYW5kQ29tcG9zaXRpb246OmRvQXBwbHkoKQordm9pZCBFZGl0Q29tbWFuZENvbXBvc2l0
aW9uOjp1bmFwcGx5KCkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KKyAgICBBU1NF
UlQobV9kb2N1bWVudCk7CisgICAgRnJhbWUqIGZyYW1lID0gbV9kb2N1bWVudC0+ZnJhbWUoKTsK
KyAgICBBU1NFUlQoZnJhbWUpOwogCi12b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRpb246OmRvVW5h
cHBseSgpCi17CisgICAgLy8gQ2hhbmdlcyB0byB0aGUgZG9jdW1lbnQgbWF5IGhhdmUgYmVlbiBt
YWRlIHNpbmNlIHRoZSBsYXN0IGVkaXRpbmcgb3BlcmF0aW9uIHRoYXQgcmVxdWlyZSBhIGxheW91
dCwgYXMgaW4gPHJkYXI6Ly9wcm9ibGVtLzU2NTg2MDM+LgorICAgIC8vIExvdyBsZXZlbCBvcGVy
YXRpb25zLCBsaWtlIFJlbW92ZU5vZGVDb21tYW5kLCBkb24ndCByZXF1aXJlIGEgbGF5b3V0IGJl
Y2F1c2UgdGhlIGhpZ2ggbGV2ZWwgb3BlcmF0aW9ucyB0aGF0IHVzZSB0aGVtIHBlcmZvcm0gb25l
CisgICAgLy8gaWYgb25lIGlzIG5lY2Vzc2FyeSAobGlrZSBmb3IgdGhlIGNyZWF0aW9uIG9mIFZp
c2libGVQb3NpdGlvbnMpLgorICAgIG1fZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cygpOworICAgIAorICAgIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIqIGRlbGV0
ZUJ1dHRvbkNvbnRyb2xsZXIgPSBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXIoKTsKKyAgICBkZWxldGVCdXR0b25Db250cm9sbGVyLT5kaXNhYmxlKCk7CiAgICAgc2l6ZV90
IHNpemUgPSBtX2NvbW1hbmRzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gc2l6ZTsgaSAh
PSAwOyAtLWkpCi0gICAgICAgIG1fY29tbWFuZHNbaSAtIDFdLT51bmFwcGx5KCk7CisgICAgICAg
IG1fY29tbWFuZHNbaSAtIDFdLT5kb1VuYXBwbHkoKTsKKyAgICBkZWxldGVCdXR0b25Db250cm9s
bGVyLT5lbmFibGUoKTsKKyAgICAKKyAgICBmcmFtZS0+ZWRpdG9yKCktPnVuYXBwbGllZEVkaXRp
bmcodGhpcyk7CiB9CiAKLXZvaWQgRWRpdENvbW1hbmRDb21wb3NpdGlvbjo6ZG9SZWFwcGx5KCkK
K3ZvaWQgRWRpdENvbW1hbmRDb21wb3NpdGlvbjo6cmVhcHBseSgpCiB7CisgICAgQVNTRVJUKG1f
ZG9jdW1lbnQpOworICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCk7CisgICAg
QVNTRVJUKGZyYW1lKTsKKworICAgIC8vIENoYW5nZXMgdG8gdGhlIGRvY3VtZW50IG1heSBoYXZl
IGJlZW4gbWFkZSBzaW5jZSB0aGUgbGFzdCBlZGl0aW5nIG9wZXJhdGlvbiB0aGF0IHJlcXVpcmUg
YSBsYXlvdXQsIGFzIGluIDxyZGFyOi8vcHJvYmxlbS81NjU4NjAzPi4KKyAgICAvLyBMb3cgbGV2
ZWwgb3BlcmF0aW9ucywgbGlrZSBSZW1vdmVOb2RlQ29tbWFuZCwgZG9uJ3QgcmVxdWlyZSBhIGxh
eW91dCBiZWNhdXNlIHRoZSBoaWdoIGxldmVsIG9wZXJhdGlvbnMgdGhhdCB1c2UgdGhlbSBwZXJm
b3JtIG9uZQorICAgIC8vIGlmIG9uZSBpcyBuZWNlc3NhcnkgKGxpa2UgZm9yIHRoZSBjcmVhdGlv
biBvZiBWaXNpYmxlUG9zaXRpb25zKS4KKyAgICBtX2RvY3VtZW50LT51cGRhdGVMYXlvdXRJZ25v
cmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKyAgICAKKyAgICBEZWxldGVCdXR0b25Db250cm9sbGVy
KiBkZWxldGVCdXR0b25Db250cm9sbGVyID0gZnJhbWUtPmVkaXRvcigpLT5kZWxldGVCdXR0b25D
b250cm9sbGVyKCk7CisgICAgZGVsZXRlQnV0dG9uQ29udHJvbGxlci0+ZGlzYWJsZSgpOwogICAg
IHNpemVfdCBzaXplID0gbV9jb21tYW5kcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgIT0gc2l6ZTsgKytpKQotICAgICAgICBtX2NvbW1hbmRzW2ldLT5yZWFwcGx5KCk7CisgICAg
ICAgIG1fY29tbWFuZHNbaV0tPmRvUmVhcHBseSgpOworICAgIGRlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXItPmVuYWJsZSgpOworICAgIAorICAgIGZyYW1lLT5lZGl0b3IoKS0+cmVhcHBsaWVkRWRpdGlu
Zyh0aGlzKTsKIH0KIAogdm9pZCBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjphcHBlbmQoU2ltcGxl
RWRpdENvbW1hbmQqIGNvbW1hbmQpCkBAIC0xMTAsMTMgKzEzNywxMyBAQCB2b2lkIEVkaXRDb21t
YW5kQ29tcG9zaXRpb246OmFwcGVuZChTaW1wCiAKIHZvaWQgRWRpdENvbW1hbmRDb21wb3NpdGlv
bjo6c2V0U3RhcnRpbmdTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9u
KQogewotICAgIEVkaXRDb21tYW5kOjpzZXRTdGFydGluZ1NlbGVjdGlvbihzZWxlY3Rpb24pOwor
ICAgIG1fc3RhcnRpbmdTZWxlY3Rpb24gPSBzZWxlY3Rpb247CiAgICAgbV9zdGFydGluZ1Jvb3RF
ZGl0YWJsZUVsZW1lbnQgPSBzZWxlY3Rpb24ucm9vdEVkaXRhYmxlRWxlbWVudCgpOwogfQogCiB2
b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRpb246OnNldEVuZGluZ1NlbGVjdGlvbihjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiB7Ci0gICAgRWRpdENvbW1hbmQ6OnNldEVuZGluZ1Nl
bGVjdGlvbihzZWxlY3Rpb24pOworICAgIG1fZW5kaW5nU2VsZWN0aW9uID0gc2VsZWN0aW9uOwog
ICAgIG1fZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudCA9IHNlbGVjdGlvbi5yb290RWRpdGFibGVF
bGVtZW50KCk7CiB9CiAKQEAgLTEyOSw2ICsxNTYsMTEgQEAgdm9pZCBFZGl0Q29tbWFuZENvbXBv
c2l0aW9uOjpnZXROb2Rlc0luQwogfQogI2VuZGlmCiAKK3ZvaWQgYXBwbHlDb21tYW5kKFBhc3NS
ZWZQdHI8Q29tcG9zaXRlRWRpdENvbW1hbmQ+IGNvbW1hbmQpCit7CisgICAgY29tbWFuZC0+YXBw
bHkoKTsKK30KKwogQ29tcG9zaXRlRWRpdENvbW1hbmQ6OkNvbXBvc2l0ZUVkaXRDb21tYW5kKERv
Y3VtZW50ICpkb2N1bWVudCkKICAgICA6IEVkaXRDb21tYW5kKGRvY3VtZW50KQogewpAQCAtMTM5
LDE0ICsxNzEsNDUgQEAgQ29tcG9zaXRlRWRpdENvbW1hbmQ6On5Db21wb3NpdGVFZGl0Q29tbQog
ICAgIEFTU0VSVChpc1RvcExldmVsQ29tbWFuZCgpIHx8ICFtX2NvbXBvc2l0aW9uKTsKIH0KIAot
dm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6ZG9VbmFwcGx5KCkKK3ZvaWQgQ29tcG9zaXRlRWRp
dENvbW1hbmQ6OmFwcGx5KCkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KKyAgICBp
ZiAoIWVuZGluZ1NlbGVjdGlvbigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkpIHsKKyAgICAg
ICAgc3dpdGNoIChlZGl0aW5nQWN0aW9uKCkpIHsKKyAgICAgICAgY2FzZSBFZGl0QWN0aW9uVHlw
aW5nOgorICAgICAgICBjYXNlIEVkaXRBY3Rpb25QYXN0ZToKKyAgICAgICAgY2FzZSBFZGl0QWN0
aW9uRHJhZzoKKyAgICAgICAgY2FzZSBFZGl0QWN0aW9uU2V0V3JpdGluZ0RpcmVjdGlvbjoKKyAg
ICAgICAgY2FzZSBFZGl0QWN0aW9uQ3V0OgorICAgICAgICBjYXNlIEVkaXRBY3Rpb25VbnNwZWNp
ZmllZDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICB9CisgICAgZW5zdXJlQ29tcG9zaXRpb24oKTsKIAotdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFu
ZDo6ZG9SZWFwcGx5KCkKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAvLyBDaGFu
Z2VzIHRvIHRoZSBkb2N1bWVudCBtYXkgaGF2ZSBiZWVuIG1hZGUgc2luY2UgdGhlIGxhc3QgZWRp
dGluZyBvcGVyYXRpb24gdGhhdCByZXF1aXJlIGEgbGF5b3V0LCBhcyBpbiA8cmRhcjovL3Byb2Js
ZW0vNTY1ODYwMz4uCisgICAgLy8gTG93IGxldmVsIG9wZXJhdGlvbnMsIGxpa2UgUmVtb3ZlTm9k
ZUNvbW1hbmQsIGRvbid0IHJlcXVpcmUgYSBsYXlvdXQgYmVjYXVzZSB0aGUgaGlnaCBsZXZlbCBv
cGVyYXRpb25zIHRoYXQgdXNlIHRoZW0gcGVyZm9ybSBvbmUKKyAgICAvLyBpZiBvbmUgaXMgbmVj
ZXNzYXJ5IChsaWtlIGZvciB0aGUgY3JlYXRpb24gb2YgVmlzaWJsZVBvc2l0aW9ucykuCisgICAg
QVNTRVJUKGRvY3VtZW50KCkpOworICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBl
bmRpbmdTdHlsZXNoZWV0cygpOworCisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJh
bWUoKTsKKyAgICBBU1NFUlQoZnJhbWUpOworICAgIHsKKyAgICAgICAgRXZlbnRRdWV1ZVNjb3Bl
IHNjb3BlOworICAgICAgICBEZWxldGVCdXR0b25Db250cm9sbGVyKiBkZWxldGVCdXR0b25Db250
cm9sbGVyID0gZnJhbWUtPmVkaXRvcigpLT5kZWxldGVCdXR0b25Db250cm9sbGVyKCk7CisgICAg
ICAgIGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXItPmRpc2FibGUoKTsKKyAgICAgICAgZG9BcHBseSgp
OworICAgICAgICBkZWxldGVCdXR0b25Db250cm9sbGVyLT5lbmFibGUoKTsKKyAgICB9CisKKyAg
ICAvLyBPbmx5IG5lZWQgdG8gY2FsbCBhcHBsaWVkRWRpdGluZyBmb3IgdG9wLWxldmVsIGNvbW1h
bmRzLAorICAgIC8vIGFuZCBUeXBpbmdDb21tYW5kcyBkbyBpdCBvbiB0aGVpciBvd24gKHNlZSBU
eXBpbmdDb21tYW5kOjp0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQpLgorICAgIGlmICghaXNUeXBp
bmdDb21tYW5kKCkpCisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbGllZEVkaXRpbmcodGhp
cyk7CisgICAgc2V0U2hvdWxkUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3IoZmFsc2UpOwog
fQogCiBFZGl0Q29tbWFuZENvbXBvc2l0aW9uKiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6ZW5zdXJl
Q29tcG9zaXRpb24oKQpAQCAtMTU1LDcgKzIxOCw3IEBAIEVkaXRDb21tYW5kQ29tcG9zaXRpb24q
IENvbXBvc2l0ZUVkaXRDb20KICAgICB3aGlsZSAoY29tbWFuZCAmJiBjb21tYW5kLT5wYXJlbnQo
KSkKICAgICAgICAgY29tbWFuZCA9IGNvbW1hbmQtPnBhcmVudCgpOwogICAgIGlmICghY29tbWFu
ZC0+bV9jb21wb3NpdGlvbikKLSAgICAgICAgY29tbWFuZC0+bV9jb21wb3NpdGlvbiA9IEVkaXRD
b21tYW5kQ29tcG9zaXRpb246OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydGluZ1NlbGVjdGlvbigp
LCBlbmRpbmdTZWxlY3Rpb24oKSwgaXNDcmVhdGVMaW5rQ29tbWFuZCgpKTsKKyAgICAgICAgY29t
bWFuZC0+bV9jb21wb3NpdGlvbiA9IEVkaXRDb21tYW5kQ29tcG9zaXRpb246OmNyZWF0ZShkb2N1
bWVudCgpLCBzdGFydGluZ1NlbGVjdGlvbigpLCBlbmRpbmdTZWxlY3Rpb24oKSwgZWRpdGluZ0Fj
dGlvbigpKTsKICAgICByZXR1cm4gY29tbWFuZC0+bV9jb21wb3NpdGlvbi5nZXQoKTsKIH0KIApA
QCAtMTkwLDcgKzI1Myw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmFwcGx5Q29tbWFu
ZFQKIHsKICAgICBSZWZQdHI8RWRpdENvbW1hbmQ+IGNvbW1hbmQgPSBwcnBDb21tYW5kOwogICAg
IGNvbW1hbmQtPnNldFBhcmVudCh0aGlzKTsKLSAgICBjb21tYW5kLT5hcHBseSgpOworICAgIGNv
bW1hbmQtPmRvQXBwbHkoKTsKICAgICBpZiAoY29tbWFuZC0+aXNTaW1wbGVFZGl0Q29tbWFuZCgp
KSB7CiAgICAgICAgIGNvbW1hbmQtPnNldFBhcmVudCgwKTsKICAgICAgICAgZW5zdXJlQ29tcG9z
aXRpb24oKS0+YXBwZW5kKHRvU2ltcGxlRWRpdENvbW1hbmQoY29tbWFuZC5nZXQoKSkpOwpAQCAt
MTk4LDIwICsyNjEsMTUgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwbHlDb21tYW5k
VAogICAgIG1fY29tbWFuZHMuYXBwZW5kKGNvbW1hbmQucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBD
b21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwbHlDb21tYW5kVG9Db21wb3NpdGUoUGFzc1JlZlB0cjxD
b21wb3NpdGVFZGl0Q29tbWFuZD4gcHJwQ29tbWFuZCwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
c2VsZWN0aW9uKQordm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwbHlDb21tYW5kVG9Db21w
b3NpdGUoUGFzc1JlZlB0cjxDb21wb3NpdGVFZGl0Q29tbWFuZD4gY29tbWFuZCwgY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogewotICAgIFJlZlB0cjxDb21wb3NpdGVFZGl0Q29t
bWFuZD4gY29tbWFuZCA9IHBycENvbW1hbmQ7CiAgICAgY29tbWFuZC0+c2V0UGFyZW50KHRoaXMp
OwogICAgIGlmIChzZWxlY3Rpb24gIT0gY29tbWFuZC0+ZW5kaW5nU2VsZWN0aW9uKCkpIHsKICAg
ICAgICAgY29tbWFuZC0+c2V0U3RhcnRpbmdTZWxlY3Rpb24oc2VsZWN0aW9uKTsKICAgICAgICAg
Y29tbWFuZC0+c2V0RW5kaW5nU2VsZWN0aW9uKHNlbGVjdGlvbik7CiAgICAgfQotICAgIGNvbW1h
bmQtPmFwcGx5KCk7Ci0gICAgaWYgKGNvbW1hbmQtPmlzU2ltcGxlRWRpdENvbW1hbmQoKSkgewot
ICAgICAgICBjb21tYW5kLT5zZXRQYXJlbnQoMCk7Ci0gICAgICAgIGVuc3VyZUNvbXBvc2l0aW9u
KCktPmFwcGVuZCh0b1NpbXBsZUVkaXRDb21tYW5kKGNvbW1hbmQuZ2V0KCkpKTsKLSAgICB9Ci0g
ICAgbV9jb21tYW5kcy5hcHBlbmQoY29tbWFuZC5yZWxlYXNlKCkpOworICAgIGNvbW1hbmQtPmRv
QXBwbHkoKTsKKyAgICBtX2NvbW1hbmRzLmFwcGVuZChjb21tYW5kKTsKIH0KIAogdm9pZCBDb21w
b3NpdGVFZGl0Q29tbWFuZDo6YXBwbHlTdHlsZShjb25zdCBFZGl0aW5nU3R5bGUqIHN0eWxlLCBF
ZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Nv
bXBvc2l0ZUVkaXRDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCShyZXZpc2lvbiAxMDI4MzUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkVkaXRDb21tYW5kLmgiCiAjaW5jbHVkZSAiQ1NTUHJv
cGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIlVuZG9NYW5hZ2VyRW50cnkuaCIKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDE2ICszOCwyMCBAQCBj
bGFzcyBIVE1MRWxlbWVudDsKIGNsYXNzIFN0eWxlZEVsZW1lbnQ7CiBjbGFzcyBUZXh0OwogCi1j
bGFzcyBFZGl0Q29tbWFuZENvbXBvc2l0aW9uIDogcHVibGljIEVkaXRDb21tYW5kIHsKK2NsYXNz
IEVkaXRDb21tYW5kQ29tcG9zaXRpb24gOiBwdWJsaWMgVW5kb01hbmFnZXJFbnRyeSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RWRpdENvbW1hbmRDb21wb3NpdGlvbj4gY3JlYXRl
KERvY3VtZW50KiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mLCBib29sIHdhc0NyZWF0ZUxpbmtDb21tYW5kKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxF
ZGl0Q29tbWFuZENvbXBvc2l0aW9uPiBjcmVhdGUoRG9jdW1lbnQqLCBjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIEVkaXRBY3Rpb24pOwogCi0gICAgdmly
dHVhbCB2b2lkIGRvQXBwbHkoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZG9VbmFwcGx5
KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRvUmVhcHBseSgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCB1bmFwcGx5KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlYXBw
bHkoKSBPVkVSUklERTsKKyAgICBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBtX2VkaXRBY3Rpb247IH0KICAgICB2b2lkIGFwcGVuZChTaW1wbGVFZGl0
Q29tbWFuZCopOwotICAgIGJvb2wgd2FzQ3JlYXRlTGlua0NvbW1hbmQoKSBjb25zdCB7IHJldHVy
biBtX3dhc0NyZWF0ZUxpbmtDb21tYW5kOyB9CisgICAgYm9vbCB3YXNDcmVhdGVMaW5rQ29tbWFu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZWRpdEFjdGlvbiA9PSBFZGl0QWN0aW9uQ3JlYXRlTGluazsg
fQogCisgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc3RhcnRpbmdTZWxlY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX3N0YXJ0aW5nU2VsZWN0aW9uOyB9CisgICAgY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYgZW5kaW5nU2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRpbmdTZWxlY3Rpb247
IH0KKyAgICB2b2lkIHNldFN0YXJ0aW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
KTsKKyAgICB2b2lkIHNldEVuZGluZ1NlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7
CiAgICAgRWxlbWVudCogc3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQuZ2V0KCk7IH0KICAgICBFbGVtZW50KiBl
bmRpbmdSb290RWRpdGFibGVFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbmRpbmdSb290RWRp
dGFibGVFbGVtZW50LmdldCgpOyB9CiAKQEAgLTU1LDIxICs2MCwyMiBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogcHJpdmF0ZToKLSAgICBFZGl0Q29tbWFuZENvbXBvc2l0aW9uKERvY3VtZW50KiwgY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgc3RhcnRpbmdTZWxlY3Rpb24sIGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mIGVuZGluZ1NlbGVjdGlvbiwgYm9vbCB3YXNDcmVhdGVMaW5rQ29tbWFuZCk7Ci0gICAg
dmlydHVhbCBib29sIGlzRWRpdENvbW1hbmRDb21wb3NpdGlvbigpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhcnRpbmdTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRFbmRp
bmdTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIE9WRVJSSURFOworICAgIEVkaXRD
b21tYW5kQ29tcG9zaXRpb24oRG9jdW1lbnQqLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzdGFy
dGluZ1NlbGVjdGlvbiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZW5kaW5nU2VsZWN0aW9uLCBF
ZGl0QWN0aW9uKTsKIAorICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKKyAgICBWaXNp
YmxlU2VsZWN0aW9uIG1fc3RhcnRpbmdTZWxlY3Rpb247CisgICAgVmlzaWJsZVNlbGVjdGlvbiBt
X2VuZGluZ1NlbGVjdGlvbjsKICAgICBWZWN0b3I8UmVmUHRyPFNpbXBsZUVkaXRDb21tYW5kPiA+
IG1fY29tbWFuZHM7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1fc3RhcnRpbmdSb290RWRpdGFibGVF
bGVtZW50OwogICAgIFJlZlB0cjxFbGVtZW50PiBtX2VuZGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQ7
Ci0gICAgYm9vbCBtX3dhc0NyZWF0ZUxpbmtDb21tYW5kOworICAgIEVkaXRBY3Rpb24gbV9lZGl0
QWN0aW9uOwogfTsKIAogY2xhc3MgQ29tcG9zaXRlRWRpdENvbW1hbmQgOiBwdWJsaWMgRWRpdENv
bW1hbmQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNvbXBvc2l0ZUVkaXRDb21tYW5kKCk7CiAK
KyAgICB2b2lkIGFwcGx5KCk7CiAgICAgYm9vbCBpc0ZpcnN0Q29tbWFuZChFZGl0Q29tbWFuZCog
Y29tbWFuZCkgeyByZXR1cm4gIW1fY29tbWFuZHMuaXNFbXB0eSgpICYmIG1fY29tbWFuZHMuZmly
c3QoKSA9PSBjb21tYW5kOyB9CiAgICAgRWRpdENvbW1hbmRDb21wb3NpdGlvbiogY29tcG9zaXRp
b24oKSB7IHJldHVybiBtX2NvbXBvc2l0aW9uLmdldCgpOyB9CiAgICAgRWRpdENvbW1hbmRDb21w
b3NpdGlvbiogZW5zdXJlQ29tcG9zaXRpb24oKTsKQEAgLTE2MCwyMCArMTY2LDEyIEBAIHByb3Rl
Y3RlZDoKICAgICBWZWN0b3I8UmVmUHRyPEVkaXRDb21tYW5kPiA+IG1fY29tbWFuZHM7CiAKIHBy
aXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGRvVW5hcHBseSgpOwotICAgIHZpcnR1YWwgdm9pZCBk
b1JlYXBwbHkoKTsKLQogICAgIGJvb2wgaXNDb21wb3NpdGVFZGl0Q29tbWFuZCgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFJlZlB0cjxFZGl0Q29tbWFuZENvbXBvc2l0
aW9uPiBtX2NvbXBvc2l0aW9uOwogfTsKLQotaW5saW5lIEVkaXRDb21tYW5kQ29tcG9zaXRpb24q
IHRvRWRpdENvbW1hbmRDb21wb3NpdGlvbihFZGl0Q29tbWFuZCogY29tbWFuZCkKLXsKLSAgICBB
U1NFUlQoY29tbWFuZCk7Ci0gICAgQVNTRVJUKGNvbW1hbmQtPmlzRWRpdENvbW1hbmRDb21wb3Np
dGlvbigpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWRpdENvbW1hbmRDb21wb3NpdGlvbio+
KGNvbW1hbmQpOwotfQorICAgIAordm9pZCBhcHBseUNvbW1hbmQoUGFzc1JlZlB0cjxDb21wb3Np
dGVFZGl0Q29tbWFuZD4pOwogCiBpbmxpbmUgQ29tcG9zaXRlRWRpdENvbW1hbmQqIHRvQ29tcG9z
aXRlRWRpdENvbW1hbmQoRWRpdENvbW1hbmQqIGNvbW1hbmQpCiB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcAkocmV2aXNpb24gMTAyODM1KQorKysgU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0
LDYgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJGcmFtZVNlbGVjdGlvbi5oIgotI2luY2x1ZGUgIlNjb3BlZEV2ZW50UXVldWUuaCIKICNp
bmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgogCkBA
IC02NCwxMDkgKzYzLDYgQEAgRWRpdENvbW1hbmQ6On5FZGl0Q29tbWFuZCgpCiB7CiB9CiAKLXZv
aWQgRWRpdENvbW1hbmQ6OmFwcGx5KCkKLXsKLSAgICBBU1NFUlQobV9kb2N1bWVudCk7Ci0gICAg
QVNTRVJUKG1fZG9jdW1lbnQtPmZyYW1lKCkpOwotIAotICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9j
dW1lbnQtPmZyYW1lKCk7Ci0gICAgCi0gICAgaWYgKGlzVG9wTGV2ZWxDb21tYW5kKCkpIHsKLSAg
ICAgICAgQVNTRVJUKGlzQ29tcG9zaXRlRWRpdENvbW1hbmQoKSk7Ci0gICAgICAgIGlmICghZW5k
aW5nU2VsZWN0aW9uKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkgewotICAgICAgICAgICAg
c3dpdGNoIChlZGl0aW5nQWN0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIEVkaXRBY3Rp
b25UeXBpbmc6Ci0gICAgICAgICAgICAgICAgY2FzZSBFZGl0QWN0aW9uUGFzdGU6Ci0gICAgICAg
ICAgICAgICAgY2FzZSBFZGl0QWN0aW9uRHJhZzoKLSAgICAgICAgICAgICAgICBjYXNlIEVkaXRB
Y3Rpb25TZXRXcml0aW5nRGlyZWN0aW9uOgotICAgICAgICAgICAgICAgIGNhc2UgRWRpdEFjdGlv
bkN1dDoKLSAgICAgICAgICAgICAgICBjYXNlIEVkaXRBY3Rpb25VbnNwZWNpZmllZDoKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICB0b0NvbXBvc2l0ZUVkaXRD
b21tYW5kKHRoaXMpLT5lbnN1cmVDb21wb3NpdGlvbigpOwotICAgIH0KLSAgICAKLSAgICAvLyBD
aGFuZ2VzIHRvIHRoZSBkb2N1bWVudCBtYXkgaGF2ZSBiZWVuIG1hZGUgc2luY2UgdGhlIGxhc3Qg
ZWRpdGluZyBvcGVyYXRpb24gdGhhdCAKLSAgICAvLyByZXF1aXJlIGEgbGF5b3V0LCBhcyBpbiA8
cmRhcjovL3Byb2JsZW0vNTY1ODYwMz4uICBMb3cgbGV2ZWwgb3BlcmF0aW9ucywgbGlrZSAKLSAg
ICAvLyBSZW1vdmVOb2RlQ29tbWFuZCwgZG9uJ3QgcmVxdWlyZSBhIGxheW91dCBiZWNhdXNlIHRo
ZSBoaWdoIGxldmVsIG9wZXJhdGlvbnMgdGhhdCAKLSAgICAvLyB1c2UgdGhlbSBwZXJmb3JtIG9u
ZSBpZiBvbmUgaXMgbmVjZXNzYXJ5IChsaWtlIGZvciB0aGUgY3JlYXRpb24gb2YgVmlzaWJsZVBv
c2l0aW9ucykuCi0gICAgaWYgKGlzVG9wTGV2ZWxDb21tYW5kKCkpCi0gICAgICAgIGRvY3VtZW50
KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwotCi0gICAgewotICAg
ICAgICBFdmVudFF1ZXVlU2NvcGUgc2NvcGU7Ci0gICAgICAgIERlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXIqIGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIgPSBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZUJ1dHRv
bkNvbnRyb2xsZXIoKTsKLSAgICAgICAgZGVsZXRlQnV0dG9uQ29udHJvbGxlci0+ZGlzYWJsZSgp
OwotICAgICAgICBkb0FwcGx5KCk7Ci0gICAgICAgIGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXItPmVu
YWJsZSgpOwotICAgIH0KLQotICAgIGlmIChpc1RvcExldmVsQ29tbWFuZCgpKSB7Ci0gICAgICAg
IEFTU0VSVChpc0NvbXBvc2l0ZUVkaXRDb21tYW5kKCkpOwotICAgICAgICBDb21wb3NpdGVFZGl0
Q29tbWFuZCogY29tbWFuZCA9IHRvQ29tcG9zaXRlRWRpdENvbW1hbmQodGhpcyk7Ci0gICAgICAg
IC8vIE9ubHkgbmVlZCB0byBjYWxsIGFwcGxpZWRFZGl0aW5nIGZvciB0b3AtbGV2ZWwgY29tbWFu
ZHMsIGFuZCBUeXBpbmdDb21tYW5kcyBkbyBpdCBvbiB0aGVpcgotICAgICAgICAvLyBvd24gKHNl
ZSBUeXBpbmdDb21tYW5kOjp0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQpLgotICAgICAgICBpZiAo
IWNvbW1hbmQtPmlzVHlwaW5nQ29tbWFuZCgpKQotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigp
LT5hcHBsaWVkRWRpdGluZyhjb21tYW5kKTsKLSAgICAgICAgY29tbWFuZC0+c2V0U2hvdWxkUmV0
YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3IoZmFsc2UpOwotICAgIH0KLX0KLQotdm9pZCBFZGl0
Q29tbWFuZDo6dW5hcHBseSgpCi17Ci0gICAgQVNTRVJUKG1fZG9jdW1lbnQpOwotICAgIEFTU0VS
VChtX2RvY3VtZW50LT5mcmFtZSgpKTsKLSAKLSAgICBGcmFtZSogZnJhbWUgPSBtX2RvY3VtZW50
LT5mcmFtZSgpOwotICAgIAotICAgIC8vIENoYW5nZXMgdG8gdGhlIGRvY3VtZW50IG1heSBoYXZl
IGJlZW4gbWFkZSBzaW5jZSB0aGUgbGFzdCBlZGl0aW5nIG9wZXJhdGlvbiB0aGF0IAotICAgIC8v
IHJlcXVpcmUgYSBsYXlvdXQsIGFzIGluIDxyZGFyOi8vcHJvYmxlbS81NjU4NjAzPi4gIExvdyBs
ZXZlbCBvcGVyYXRpb25zLCBsaWtlIAotICAgIC8vIFJlbW92ZU5vZGVDb21tYW5kLCBkb24ndCBy
ZXF1aXJlIGEgbGF5b3V0IGJlY2F1c2UgdGhlIGhpZ2ggbGV2ZWwgb3BlcmF0aW9ucyB0aGF0IAot
ICAgIC8vIHVzZSB0aGVtIHBlcmZvcm0gb25lIGlmIG9uZSBpcyBuZWNlc3NhcnkgKGxpa2UgZm9y
IHRoZSBjcmVhdGlvbiBvZiBWaXNpYmxlUG9zaXRpb25zKS4KLSAgICBpZiAoaXNUb3BMZXZlbENv
bW1hbmQoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0
eWxlc2hlZXRzKCk7Ci0gICAgCi0gICAgRGVsZXRlQnV0dG9uQ29udHJvbGxlciogZGVsZXRlQnV0
dG9uQ29udHJvbGxlciA9IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29udHJvbGxlcigp
OwotICAgIGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXItPmRpc2FibGUoKTsKLSAgICBkb1VuYXBwbHko
KTsKLSAgICBkZWxldGVCdXR0b25Db250cm9sbGVyLT5lbmFibGUoKTsKLQotICAgIGlmIChpc0Vk
aXRDb21tYW5kQ29tcG9zaXRpb24oKSkKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT51bmFwcGxp
ZWRFZGl0aW5nKHRvRWRpdENvbW1hbmRDb21wb3NpdGlvbih0aGlzKSk7Ci19Ci0KLXZvaWQgRWRp
dENvbW1hbmQ6OnJlYXBwbHkoKQotewotICAgIEFTU0VSVChtX2RvY3VtZW50KTsKLSAgICBBU1NF
UlQobV9kb2N1bWVudC0+ZnJhbWUoKSk7Ci0gCi0gICAgRnJhbWUqIGZyYW1lID0gbV9kb2N1bWVu
dC0+ZnJhbWUoKTsKLSAgICAKLSAgICAvLyBDaGFuZ2VzIHRvIHRoZSBkb2N1bWVudCBtYXkgaGF2
ZSBiZWVuIG1hZGUgc2luY2UgdGhlIGxhc3QgZWRpdGluZyBvcGVyYXRpb24gdGhhdCAKLSAgICAv
LyByZXF1aXJlIGEgbGF5b3V0LCBhcyBpbiA8cmRhcjovL3Byb2JsZW0vNTY1ODYwMz4uICBMb3cg
bGV2ZWwgb3BlcmF0aW9ucywgbGlrZSAKLSAgICAvLyBSZW1vdmVOb2RlQ29tbWFuZCwgZG9uJ3Qg
cmVxdWlyZSBhIGxheW91dCBiZWNhdXNlIHRoZSBoaWdoIGxldmVsIG9wZXJhdGlvbnMgdGhhdCAK
LSAgICAvLyB1c2UgdGhlbSBwZXJmb3JtIG9uZSBpZiBvbmUgaXMgbmVjZXNzYXJ5IChsaWtlIGZv
ciB0aGUgY3JlYXRpb24gb2YgVmlzaWJsZVBvc2l0aW9ucykuCi0gICAgaWYgKGlzVG9wTGV2ZWxD
b21tYW5kKCkpCi0gICAgICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cygpOwotCi0gICAgRGVsZXRlQnV0dG9uQ29udHJvbGxlciogZGVsZXRlQnV0dG9u
Q29udHJvbGxlciA9IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpOwot
ICAgIGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXItPmRpc2FibGUoKTsKLSAgICBkb1JlYXBwbHkoKTsK
LSAgICBkZWxldGVCdXR0b25Db250cm9sbGVyLT5lbmFibGUoKTsKLQotICAgIGlmIChpc0VkaXRD
b21tYW5kQ29tcG9zaXRpb24oKSkKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5yZWFwcGxpZWRF
ZGl0aW5nKHRvRWRpdENvbW1hbmRDb21wb3NpdGlvbih0aGlzKSk7Ci19Ci0KLXZvaWQgRWRpdENv
bW1hbmQ6OmRvUmVhcHBseSgpCi17Ci0gICAgZG9BcHBseSgpOwotfQotCiBFZGl0QWN0aW9uIEVk
aXRDb21tYW5kOjplZGl0aW5nQWN0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gRWRpdEFjdGlv
blVuc3BlY2lmaWVkOwpAQCAtMTg0LDcgKzgwLDcgQEAgdm9pZCBFZGl0Q29tbWFuZDo6c2V0U3Rh
cnRpbmdTZWxlY3Rpb24oYwogICAgIGZvciAoRWRpdENvbW1hbmQqIGNtZCA9IHRoaXM7IDsgY21k
ID0gY21kLT5tX3BhcmVudCkgewogICAgICAgICBpZiAoRWRpdENvbW1hbmRDb21wb3NpdGlvbiog
Y29tcG9zaXRpb24gPSBjb21wb3NpdGlvbklmUG9zc2libGUoY21kKSkgewogICAgICAgICAgICAg
QVNTRVJUKGNtZC0+aXNUb3BMZXZlbENvbW1hbmQoKSk7Ci0gICAgICAgICAgICBzdGF0aWNfY2Fz
dDxFZGl0Q29tbWFuZCo+KGNvbXBvc2l0aW9uKS0+c2V0U3RhcnRpbmdTZWxlY3Rpb24ocyk7Cisg
ICAgICAgICAgICBjb21wb3NpdGlvbi0+c2V0U3RhcnRpbmdTZWxlY3Rpb24ocyk7CiAgICAgICAg
IH0KICAgICAgICAgY21kLT5tX3N0YXJ0aW5nU2VsZWN0aW9uID0gczsKICAgICAgICAgaWYgKCFj
bWQtPm1fcGFyZW50IHx8IGNtZC0+bV9wYXJlbnQtPmlzRmlyc3RDb21tYW5kKGNtZCkpCkBAIC0x
OTcsNyArOTMsNyBAQCB2b2lkIEVkaXRDb21tYW5kOjpzZXRFbmRpbmdTZWxlY3Rpb24oY29uCiAg
ICAgZm9yIChFZGl0Q29tbWFuZCogY21kID0gdGhpczsgY21kOyBjbWQgPSBjbWQtPm1fcGFyZW50
KSB7CiAgICAgICAgIGlmIChFZGl0Q29tbWFuZENvbXBvc2l0aW9uKiBjb21wb3NpdGlvbiA9IGNv
bXBvc2l0aW9uSWZQb3NzaWJsZShjbWQpKSB7CiAgICAgICAgICAgICBBU1NFUlQoY21kLT5pc1Rv
cExldmVsQ29tbWFuZCgpKTsKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEVkaXRDb21tYW5kKj4o
Y29tcG9zaXRpb24pLT5zZXRFbmRpbmdTZWxlY3Rpb24ocyk7CisgICAgICAgICAgICBjb21wb3Np
dGlvbi0+c2V0RW5kaW5nU2VsZWN0aW9uKHMpOwogICAgICAgICB9CiAgICAgICAgIGNtZC0+bV9l
bmRpbmdTZWxlY3Rpb24gPSBzOwogICAgIH0KQEAgLTIxNCw2ICsxMTAsMTEgQEAgdm9pZCBFZGl0
Q29tbWFuZDo6c2V0UGFyZW50KENvbXBvc2l0ZUVkaQogICAgIH0KIH0KIAordm9pZCBTaW1wbGVF
ZGl0Q29tbWFuZDo6ZG9SZWFwcGx5KCkKK3sKKyAgICBkb0FwcGx5KCk7Cit9CisKICNpZm5kZWYg
TkRFQlVHCiB2b2lkIFNpbXBsZUVkaXRDb21tYW5kOjphZGROb2RlQW5kRGVzY2VuZGFudHMoTm9k
ZSogc3RhcnROb2RlLCBIYXNoU2V0PE5vZGUqPiYgbm9kZXMpCiB7CkBAIC0yMjIsOSArMTIzLDQg
QEAgdm9pZCBTaW1wbGVFZGl0Q29tbWFuZDo6YWRkTm9kZUFuZERlc2NlbgogfQogI2VuZGlmCiAK
LXZvaWQgYXBwbHlDb21tYW5kKFBhc3NSZWZQdHI8Q29tcG9zaXRlRWRpdENvbW1hbmQ+IGNvbW1h
bmQpCi17Ci0gICAgY29tbWFuZC0+YXBwbHkoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaAkocmV2aXNpb24gMTAyODM1
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NSwxMCArNDUsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFBhcmVudChDb21wb3Np
dGVFZGl0Q29tbWFuZCopOwogCi0gICAgdm9pZCBhcHBseSgpOwotICAgIHZvaWQgdW5hcHBseSgp
OwotICAgIHZvaWQgcmVhcHBseSgpOwotCiAgICAgdmlydHVhbCBFZGl0QWN0aW9uIGVkaXRpbmdB
Y3Rpb24oKSBjb25zdDsKIAogICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHN0YXJ0aW5nU2Vs
ZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydGluZ1NlbGVjdGlvbjsgfQpAQCAtNTksMzEg
KzU1LDI4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNFZGl0Q29tbWFuZENvbXBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzVG9wTGV2ZWxDb21tYW5k
KCkgY29uc3QgeyByZXR1cm4gIW1fcGFyZW50OyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgZG9BcHBs
eSgpID0gMDsKKwogcHJvdGVjdGVkOgogICAgIEVkaXRDb21tYW5kKERvY3VtZW50Kik7CiAgICAg
RWRpdENvbW1hbmQoRG9jdW1lbnQqLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYpOwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9kb2N1bWVudC5nZXQoKTsgfQogICAgIENvbXBvc2l0ZUVkaXRDb21tYW5kKiBwYXJlbnQo
KSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQotCi0gICAgdmlydHVhbCB2b2lkIHNldFN0YXJ0
aW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0RW5kaW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKKyAgICB2b2lkIHNl
dFN0YXJ0aW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKKyAgICB2b2lkIHNl
dEVuZGluZ1NlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CiAKIHByaXZhdGU6Ci0g
ICAgdmlydHVhbCB2b2lkIGRvQXBwbHkoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRvVW5hcHBs
eSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZG9SZWFwcGx5KCk7IC8vIGNhbGxzIGRvQXBwbHko
KQotCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFZpc2libGVTZWxlY3Rp
b24gbV9zdGFydGluZ1NlbGVjdGlvbjsKICAgICBWaXNpYmxlU2VsZWN0aW9uIG1fZW5kaW5nU2Vs
ZWN0aW9uOwogICAgIENvbXBvc2l0ZUVkaXRDb21tYW5kKiBtX3BhcmVudDsKLQotICAgIGZyaWVu
ZCB2b2lkIGFwcGx5Q29tbWFuZChQYXNzUmVmUHRyPENvbXBvc2l0ZUVkaXRDb21tYW5kPik7CiB9
OwogCiBjbGFzcyBTaW1wbGVFZGl0Q29tbWFuZCA6IHB1YmxpYyBFZGl0Q29tbWFuZCB7CiBwdWJs
aWM6CisgICAgdmlydHVhbCB2b2lkIGRvVW5hcHBseSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZG9SZWFwcGx5KCk7IC8vIGNhbGxzIGRvQXBwbHkoKQogCiAjaWZuZGVmIE5ERUJVRwogICAgIHZp
cnR1YWwgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYpID0gMDsKQEAgLTEw
Nyw4ICsxMDAsNiBAQCBpbmxpbmUgU2ltcGxlRWRpdENvbW1hbmQqIHRvU2ltcGxlRWRpdENvCiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFNpbXBsZUVkaXRDb21tYW5kKj4oY29tbWFuZCk7CiB9CiAK
LXZvaWQgYXBwbHlDb21tYW5kKFBhc3NSZWZQdHI8Q29tcG9zaXRlRWRpdENvbW1hbmQ+KTsKLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRWRpdENvbW1hbmRfaApJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlckVudHJ5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlckVudHJ5LmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyRW50cnkuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgVW5kb01hbmFnZXJFbnRyeV9oCisjZGVmaW5lIFVuZG9N
YW5hZ2VyRW50cnlfaAorCisjaW5jbHVkZSAiRWRpdEFjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVW5kb01hbmFnZXJF
bnRyeSA6IHB1YmxpYyBSZWZDb3VudGVkPFVuZG9NYW5hZ2VyRW50cnk+IHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5VbmRvTWFuYWdlckVudHJ5KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdW5h
cHBseSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhcHBseSgpID0gMDsKKyAgICB2aXJ0dWFs
IEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0ID0gMDsKK307CisKK30KKworI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiAxMDI4MzUp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0NSwyNyArNDQ1LDIxIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQmVn
aW5FZGl0aW5nKFJhbmdlKikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkRW5kRWRpdGluZyhSYW5nZSopIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IHNob3VsZEluc2VydE5vZGUoTm9kZSosIFJhbmdlKiwgRWRpdG9ySW5zZXJ0QWN0aW9uKSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIC8vICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShOb2Rl
KiwgUmFuZ2UqIHJlcGxhY2luZ1JhbmdlLCBXZWJWaWV3SW5zZXJ0QWN0aW9uKSB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYs
IFJhbmdlKiwgRWRpdG9ySW5zZXJ0QWN0aW9uKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFJhbmdlKiwgUmFuZ2UqLCBFQWZmaW5p
dHksIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXBw
bHlTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiwgUmFuZ2UqKSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShSYW5nZSosIFJhbmdl
KikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAvLyAgdmlydHVhbCBib29sIHNob3VsZENoYW5nZVR5
cGluZ1N0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIGZyb21TdHlsZSwgQ1NTU3R5bGVEZWNsYXJh
dGlvbiogdG9TdHlsZSkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAvLyAgdmlydHVhbCBib29sIGRv
Q29tbWFuZEJ5U2VsZWN0b3IoU0VMIHNlbGVjdG9yKSB7IHJldHVybiBmYWxzZTsgfQotICAgIC8v
CisKICAgICB2aXJ0dWFsIHZvaWQgZGlkQmVnaW5FZGl0aW5nKCkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZXNw
b25kVG9DaGFuZ2VkU2VsZWN0aW9uKEZyYW1lKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEVu
ZEVkaXRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0
ZWJvYXJkKCkgeyB9Ci0gICAgLy8gIHZpcnR1YWwgdm9pZCB3ZWJWaWV3RGlkQ2hhbmdlVHlwaW5n
U3R5bGU6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uIHsgfQotICAgIC8vICB2aXJ0dWFs
IHZvaWQgd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjooTlNOb3RpZmljYXRpb24gKilub3RpZmlj
YXRpb24geyB9Ci0gICAgLy8gIHZpcnR1YWwgTlNVbmRvTWFuYWdlciogdW5kb01hbmFnZXJGb3JX
ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyB7IHJldHVybiAwOyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgcmVnaXN0ZXJDb21tYW5kRm9yVW5kbyhQYXNzUmVmUHRyPEVkaXRDb21tYW5kPikgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oUGFzc1JlZlB0cjxFZGl0Q29t
bWFuZD4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JVbmRvKFBhc3NS
ZWZQdHI8VW5kb01hbmFnZXJFbnRyeT4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNv
bW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8VW5kb01hbmFnZXJFbnRyeT4pIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpIHsgfQogCiAgICAgdmlydHVhbCBib29s
IGNhbkNvcHlDdXQoRnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QgeyByZXR1cm4gZGVm
YXVsdFZhbHVlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9u
IDEwMjgzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUzLDcgKzUzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXJjaGl2
ZVJlc291cmNlOwogY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIERvY3VtZW50RnJh
Z21lbnQ7Ci1jbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRvcjsKIGNsYXNzIEVsZW1lbnQ7
CiBjbGFzcyBGcmFtZTsKQEAgLTYzLDYgKzYyLDcgQEAgY2xhc3MgTm9kZTsKIGNsYXNzIFJhbmdl
OwogY2xhc3MgU3BlbGxDaGVja2VyOwogY2xhc3MgVGV4dENoZWNrZXJDbGllbnQ7CitjbGFzcyBV
bmRvTWFuYWdlckVudHJ5OwogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKIGNsYXNzIFZpc2libGVQ
b3NpdGlvbjsKIApAQCAtOTksOCArOTksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRT
ZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKSA9IDA7CiAgICAgCi0gICAgdmlydHVhbCB2
b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oUGFzc1JlZlB0cjxFZGl0Q29tbWFuZD4pID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPEVkaXRD
b21tYW5kPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JVbmRvKFBh
c3NSZWZQdHI8VW5kb01hbmFnZXJFbnRyeT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0
ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPFVuZG9NYW5hZ2VyRW50cnk+KSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkgPSAwOwogCiAgICAgdmlydHVh
bCBib29sIGNhbkNvcHlDdXQoRnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QgPSAwOwpJ
bmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTAyODk3KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMTItMTUgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgT25seSBFZGl0Q29tbWFuZENvbXBv
c2l0aW9uIHNob3VsZCBpbXBsZW1lbnQgdW5hcHBseSBhbmQgcmVhcHBseQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0OTAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWVkIFdlYkVkaXRDb21tYW5k
IHRvIFdlYlVuZG9NYW5hZ2VyRW50cnkgYW5kIG1hZGUgbmVjZXNzYXJ5IGNoYW5nZXMuCisgICAg
ICAgIEV2ZXJ5dGhpbmcgb24gV2ViUHJvY2VzcyBzaWRlIHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0
IG5hbWUgbm93LgorCisgICAgICAgIE5hbWVzIGluIHRoZSBwcm94eSBhbmQgVUlQcm9jZXNzIGFy
ZSB0byBiZSB1cGRhdGVkIGluIGEgZm9sbG93IHVwLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAg
ICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8pOgorICAgICAgICAo
V2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQ29tbWFuZEZvclJlZG8pOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkVkaXRDb21tYW5kLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRWRpdENvbW1hbmQuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OndlYlVuZG9NYW5hZ2VyRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjph
ZGRXZWJVbmRvTWFuYWdlckVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVtb3Zl
V2ViRWRpdENvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1bmFwcGx5RWRpdENv
bW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZWFwcGx5RWRpdENvbW1hbmQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlVuZG9NYW5hZ2VyRW50cnkuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRWRpdENvbW1hbmQuY3BwLgorICAgICAgICAo
V2ViS2l0OjpnZW5lcmF0ZVVuZG9NYW5hZ2VyRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJV
bmRvTWFuYWdlckVudHJ5OjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJVbmRvTWFuYWdlckVudHJ5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJFZGl0Q29tbWFuZC5oLgorICAgICAgICAoV2ViS2l0OjpXZWJVbmRvTWFu
YWdlckVudHJ5OjplbnRyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVuZG9NYW5hZ2VyRW50cnk6
OmVudHJ5SUQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVbmRvTWFuYWdlckVudHJ5OjpXZWJVbmRv
TWFuYWdlckVudHJ5KToKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisKIDIwMTEtMTIt
MTQgIEppbmcgWmhhbyAgPGppbmd6aGFvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBPcGVuaW5n
IHR3byBwb3B1cCBtZW51cyBieSBkaXNwYXRjaEV2ZW50KCkgbWFrZXMgcHJvYmxlbXMuCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTAyODM1KQorKysgU291cmNlL1dlYktpdDIv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM3Niw3ICszNzYsNyBAQCBTRVQoV2Vi
S2l0Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1RpbGVkRHJhd2luZ0FyZWEuY3Bw
CiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAogICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAKLSAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRWRpdENvbW1hbmQuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVuZG9N
YW5hZ2VyRW50cnkuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAogICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcApJbmRleDogU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUu
YW0JKHJldmlzaW9uIDEwMjgzNSkKKysrIFNvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCSh3
b3JraW5nIGNvcHkpCkBAIC04OTksOCArODk5LDYgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RL
X0FQSV9NQUpPUl9WRVJTSQogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJC
YWNrRm9yd2FyZExpc3RQcm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQ29udGV4dE1lbnUuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQ29udGV4dE1lbnUuaCBcCi0JU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkVkaXRDb21tYW5kLmNwcCBcCi0JU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkVkaXRDb21tYW5kLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNw
cCBcCkBAIC05MTEsNiArOTA5LDggQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpP
Ul9WRVJTSQogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQ
cm94eS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3Jv
dXBQcm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
IFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVW5kb01hbmFnZXJFbnRy
eS5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVbmRvTWFuYWdl
ckVudHJ5LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29ubmVjdGlvblRvVUlQ
cm9jZXNzLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9V
SVByb2Nlc3MuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBc
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1RhcmdldC5wcmkJKHJldmlzaW9uIDEwMjgzNSkKKysrIFNvdXJjZS9XZWJLaXQyL1Rh
cmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTM0OSwxMiArMzQ5LDEyIEBAIEhFQURFUlMgKz0g
XAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oIFwKICAgICBXZWJQcm9j
ZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
bnRleHRNZW51LmggXAotICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJFZGl0Q29tbWFuZC5oIFwK
ICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBcCiAg
ICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmggXAorICAgIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJVbmRvTWFuYWdlckVudHJ5LmggXAogICAgIFdlYlByb2Nlc3MvV2ViQ29u
bmVjdGlvblRvVUlQcm9jZXNzLmggXAogICAgIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIFwKICAg
ICBXZWJQcm9jZXNzL3F0L1F0QnVpbHRpbkJ1bmRsZS5oIFwKQEAgLTY5OCwxMiArNjk4LDEyIEBA
IFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9UaWxlZERyYXdpbmdBcmVhLmNw
cCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcCBc
CiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcCBcCi0gICAgV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkVkaXRDb21tYW5kLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAg
XAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAg
XAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcCBcCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlVuZG9NYW5hZ2VyRW50cnkuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2ViSW5z
cGVjdG9yUXQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0
LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHAgXApJbmRleDog
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTAyODM1KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03MDEsOCArNzAxLDggQEAKIAkJQkM5NjNE
NkIxMTNERDE5MjAwNTc0QkUyIC8qIFdlYlBhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5NjNENkExMTNERDE5MjAwNTc0QkUyIC8qIFdlYlBh
Z2UuY3BwICovOyB9OwogCQlCQzk2M0Q2RTExM0REMUE1MDA1NzRCRTIgLyogV2ViUGFnZU1hYy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTYzRDZE
MTEzREQxQTUwMDU3NEJFMiAvKiBXZWJQYWdlTWFjLm1tICovOyB9OwogCQlCQzlCMzhBMTEwRjUz
OEJFMDA0NDNBMTUgLyogV2ViRnJhbWVQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5QjM4OUYxMEY1MzhCRTAwNDQzQTE1IC8qIFdlYkZyYW1l
UHJveHkuaCAqLzsgfTsKLQkJQkNBMEVGN0YxMjMzMUU3ODAwN0QzQ0ZCIC8qIFdlYkVkaXRDb21t
YW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Ew
RUY3RDEyMzMxRTc4MDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmQuaCAqLzsgfTsKLQkJQkNBMEVG
ODAxMjMzMUU3ODAwN0QzQ0ZCIC8qIFdlYkVkaXRDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTBFRjdFMTIzMzFFNzgwMDdEM0NGQiAv
KiBXZWJFZGl0Q29tbWFuZC5jcHAgKi87IH07CisJCUJDQTBFRjdGMTIzMzFFNzgwMDdEM0NGQiAv
KiBXZWJVbmRvTWFuYWdlckVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0EwRUY3RDEyMzMxRTc4MDA3RDNDRkIgLyogV2ViVW5kb01hbmFnZXJF
bnRyeS5oICovOyB9OworCQlCQ0EwRUY4MDEyMzMxRTc4MDA3RDNDRkIgLyogV2ViVW5kb01hbmFn
ZXJFbnRyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0EwRUY3RTEyMzMxRTc4MDA3RDNDRkIgLyogV2ViVW5kb01hbmFnZXJFbnRyeS5jcHAgKi87
IH07CiAJCUJDQTBFRjlGMTIzMzI2NDIwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZFByb3h5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EwRUY5RDEy
MzMyNjQyMDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmRQcm94eS5oICovOyB9OwogCQlCQ0EwRUZB
MDEyMzMyNjQyMDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmRQcm94eS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EwRUY5RTEyMzMyNjQyMDA3RDND
RkIgLyogV2ViRWRpdENvbW1hbmRQcm94eS5jcHAgKi87IH07CiAJCUJDQTI4NEQ2MTQ5MkYyQzcw
MDFGOTA0MiAvKiBXS0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0EyODRENDE0OTJGMkM3MDAxRjkwNDIgLyogV0tDb25uZWN0aW9u
Lm1tICovOyB9OwpAQCAtMTcyNiw4ICsxNzI2LDggQEAKIAkJQkM5NjNENkExMTNERDE5MjAwNTc0
QkUyIC8qIFdlYlBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViUGFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOTYzRDZEMTEzREQx
QTUwMDU3NEJFMiAvKiBXZWJQYWdlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViUGFnZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkM5QjM4OUYxMEY1MzhCRTAwNDQzQTE1IC8qIFdlYkZyYW1lUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRnJhbWVQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlCQ0EwRUY3RDEyMzMxRTc4MDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRWRpdENvbW1hbmQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNBMEVGN0UxMjMzMUU3ODAwN0QzQ0ZCIC8qIFdlYkVk
aXRDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkVk
aXRDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNBMEVGN0QxMjMz
MUU3ODAwN0QzQ0ZCIC8qIFdlYlVuZG9NYW5hZ2VyRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViVW5kb01hbmFnZXJFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCQ0EwRUY3RTEyMzMxRTc4MDA3RDNDRkIgLyogV2ViVW5kb01hbmFnZXJFbnRy
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVbmRvTWFuYWdl
ckVudHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBMEVGOUQxMjMzMjY0
MjAwN0QzQ0ZCIC8qIFdlYkVkaXRDb21tYW5kUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViRWRpdENvbW1hbmRQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQ0EwRUY5RTEyMzMyNjQyMDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmRQcm94eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJFZGl0Q29tbWFuZFBy
b3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBMjg0RDQxNDkyRjJDNzAw
MUY5MDQyIC8qIFdLQ29ubmVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdLQ29ubmVjdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI3OTksOCArMjc5OSw4IEBACiAJCQkJQkM3MkI5RjkxMUU2NDc2QjAwMUVCNEVBIC8qIFdlYkJh
Y2tGb3J3YXJkTGlzdFByb3h5LmggKi8sCiAJCQkJNTE4NzFCNTkxMjdDQjg5RDAwRjc2MjMyIC8q
IFdlYkNvbnRleHRNZW51LmNwcCAqLywKIAkJCQk1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIgLyog
V2ViQ29udGV4dE1lbnUuaCAqLywKLQkJCQlCQ0EwRUY3RTEyMzMxRTc4MDA3RDNDRkIgLyogV2Vi
RWRpdENvbW1hbmQuY3BwICovLAotCQkJCUJDQTBFRjdEMTIzMzFFNzgwMDdEM0NGQiAvKiBXZWJF
ZGl0Q29tbWFuZC5oICovLAorCQkJCUJDQTBFRjdFMTIzMzFFNzgwMDdEM0NGQiAvKiBXZWJVbmRv
TWFuYWdlckVudHJ5LmNwcCAqLywKKwkJCQlCQ0EwRUY3RDEyMzMxRTc4MDA3RDNDRkIgLyogV2Vi
VW5kb01hbmFnZXJFbnRyeS5oICovLAogCQkJCUJDMTExQURDMTEyRjVCOTMwMDMzN0JBQiAvKiBX
ZWJGcmFtZS5jcHAgKi8sCiAJCQkJQkMwMzJEODkxMEY0MzdBMDAwNThDMTVBIC8qIFdlYkZyYW1l
LmggKi8sCiAJCQkJMUM4RTI4MUYxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5jcHAg
Ki8sCkBAIC0zOTAxLDcgKzM5MDEsNyBAQAogCQkJCUJDQjBCMERDMTIzMDVBMjUwMEIxMzQxRSAv
KiBXZWJDb250ZXh0VXNlck1lc3NhZ2VDb2RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjBC
MERFMTIzMDVBOEMwMEIxMzQxRSAvKiBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQ0IwQjBFMDEyMzA1QUIxMDBCMTM0MUUgLyogVXNlck1lc3Nh
Z2VDb2RlcnMuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDQTBFRjdGMTIzMzFFNzgwMDdEM0NGQiAv
KiBXZWJFZGl0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNBMEVGN0YxMjMzMUU3ODAw
N0QzQ0ZCIC8qIFdlYlVuZG9NYW5hZ2VyRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQTBF
RjlGMTIzMzI2NDIwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZFByb3h5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzMzREQ2ODEyMzg0NjQ2MDAzNjBGM0YgLyogV2ViTnVtYmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0Y1MDEyMTEyM0VEM0IzMDA1OTU1QUUgLyogVGhyZWFkTGF1bmNoZXIuaCBp
biBIZWFkZXJzICovLApAQCAtNDU1MCw3ICs0NTUwLDcgQEAKIAkJCQlCQzkwQTFENzEyMkRENjZB
MDBDQzhDNTAgLyogV2ViVVJMUmVzcG9uc2VNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0Iw
QUQzMzEyMkYyODU4MDBCMTM0MUUgLyogTXV0YWJsZUFycmF5LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDQjBBRUVBMTIyRjUzRTMwMEIxMzQxRSAvKiBNdXRhYmxlRGljdGlvbmFyeS5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQlCQ0EwRUY4MDEyMzMxRTc4MDA3RDNDRkIgLyogV2ViRWRpdENvbW1h
bmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkNBMEVGODAxMjMzMUU3ODAwN0QzQ0ZCIC8qIFdl
YlVuZG9NYW5hZ2VyRW50cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMEVGQTAxMjMzMjY0
MjAwN0QzQ0ZCIC8qIFdlYkVkaXRDb21tYW5kUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkNGNTAxMjIxMjNFRDNCMzAwNTk1NUFFIC8qIFRocmVhZExhdW5jaGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDRjUwMUI0MTIzRUY2MDIwMDU5NTVBRSAvKiBUaHJlYWRMYXVuY2hlck1hYy5t
bSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAkocmV2aXNpb24g
MTAyODM1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXJjaGl2ZVJlc291cmNlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9F
ZGl0Q29tbWFuZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9jdXNDb250cm9sbGVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CkBA
IC00Niw2ICs0NSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9VbmRvTWFuYWdlckVudHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Vc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKQEAgLTIyMCwyMSArMjIwLDIxIEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpkaWRTZXRTZWxl
Y3Rpb25UeXAKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVu
dDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyhQYXNzUmVmUHRyPEVkaXRDb21tYW5kPiBjb21tYW5k
KQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oUGFzc1JlZlB0
cjxVbmRvTWFuYWdlckVudHJ5PiBlbnRyeSkKIHsKICAgICAvLyBGSVhNRTogQWRkIGFzc2VydGlv
biB0aGF0IHRoZSBjb21tYW5kIGJlaW5nIHJlYXBwbGllZCBpcyB0aGUgc2FtZSBjb21tYW5kIHRo
YXQgaXMKICAgICAvLyBiZWluZyBwYXNzZWQgdG8gdXMuCiAgICAgaWYgKG1fcGFnZS0+aXNJblJl
ZG8oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFdlYkVkaXRDb21tYW5kPiB3ZWJD
b21tYW5kID0gV2ViRWRpdENvbW1hbmQ6OmNyZWF0ZShjb21tYW5kKTsKLSAgICBtX3BhZ2UtPmFk
ZFdlYkVkaXRDb21tYW5kKHdlYkNvbW1hbmQtPmNvbW1hbmRJRCgpLCB3ZWJDb21tYW5kLmdldCgp
KTsKLSAgICB1aW50MzJfdCBlZGl0QWN0aW9uID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHdlYkNv
bW1hbmQtPmNvbW1hbmQoKS0+ZWRpdGluZ0FjdGlvbigpKTsKKyAgICBSZWZQdHI8V2ViVW5kb01h
bmFnZXJFbnRyeT4gd2ViRW50cnkgPSBXZWJVbmRvTWFuYWdlckVudHJ5OjpjcmVhdGUoZW50cnkp
OworICAgIG1fcGFnZS0+YWRkV2ViVW5kb01hbmFnZXJFbnRyeSh3ZWJFbnRyeS0+ZW50cnlJRCgp
LCB3ZWJFbnRyeS5nZXQoKSk7CisgICAgdWludDMyX3QgZWRpdEFjdGlvbiA9IHN0YXRpY19jYXN0
PHVpbnQzMl90Pih3ZWJFbnRyeS0+ZW50cnkoKS0+ZWRpdGluZ0FjdGlvbigpKTsKIAotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlckVkaXRDb21tYW5kRm9y
VW5kbyh3ZWJDb21tYW5kLT5jb21tYW5kSUQoKSwgZWRpdEFjdGlvbikpOworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlckVkaXRDb21tYW5kRm9yVW5kbyh3
ZWJFbnRyeS0+ZW50cnlJRCgpLCBlZGl0QWN0aW9uKSk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpyZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+KQordm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oUGFzc1JlZlB0cjxVbmRv
TWFuYWdlckVudHJ5PikKIHsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCShyZXZpc2lv
biAxMDI4MzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw4ICs2OSw4IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgp
IE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JVbmRv
KFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21t
YW5kPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8o
UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvTWFuYWdlckVudHJ5PikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oUGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRv
TWFuYWdlckVudHJ5PikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyVW5kb1JlZG9P
cGVyYXRpb25zKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29weUN1dChXZWJD
b3JlOjpGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdCBPVkVSUklERTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJFZGl0Q29tbWFuZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkVkaXRDb21tYW5k
LmNwcAkocmV2aXNpb24gMTAyODM1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkVkaXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0MiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkVkaXRDb21tYW5k
LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVDb21t
YW5kSUQoKQotewotICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVDb21tYW5kSUQgPSAxOwotICAg
IHJldHVybiB1bmlxdWVDb21tYW5kSUQrKzsKLX0KLQotUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFu
ZD4gV2ViRWRpdENvbW1hbmQ6OmNyZWF0ZShQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5k
PiBjb21tYW5kKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViRWRpdENvbW1hbmQoY29t
bWFuZCwgZ2VuZXJhdGVDb21tYW5kSUQoKSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJFZGl0Q29tbWFuZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJFZGl0
Q29tbWFuZC5oCShyZXZpc2lvbiAxMDI4MzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRWRpdENvbW1hbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJFZGl0Q29tbWFuZF9oCi0jZGVmaW5lIFdlYkVkaXRD
b21tYW5kX2gKLQotI2luY2x1ZGUgPFdlYkNvcmUvRWRpdENvbW1hbmQuaD4KLSNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLWNsYXNzIFdlYkVkaXRDb21tYW5kIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViRWRp
dENvbW1hbmQ+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFu
ZD4gY3JlYXRlKFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KTsKLQotICAgIFdlYkNv
cmU6OkVkaXRDb21tYW5kKiBjb21tYW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb21tYW5kLmdldCgp
OyB9Ci0gICAgdWludDY0X3QgY29tbWFuZElEKCkgY29uc3QgeyByZXR1cm4gbV9jb21tYW5kSUQ7
IH0KLQotcHJpdmF0ZToKLSAgICBXZWJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkNvcmU6OkVk
aXRDb21tYW5kPiBjb21tYW5kLCB1aW50NjRfdCBjb21tYW5kSUQpCi0gICAgICAgIDogbV9jb21t
YW5kKGNvbW1hbmQpCi0gICAgICAgICwgbV9jb21tYW5kSUQoY29tbWFuZElEKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+IG1fY29tbWFuZDsKLSAgICB1
aW50NjRfdCBtX2NvbW1hbmRJRDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gV2ViRWRpdENvbW1hbmRfaApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTAyODM1KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDU5
LDM4ICsyMDU5LDM4IEBAIHZvaWQgV2ViUGFnZTo6d2lsbFBlcmZvcm1Mb2FkRHJhZ0Rlc3RpbmEK
ICAgICBtX3NhbmRib3hFeHRlbnNpb25UcmFja2VyLndpbGxQZXJmb3JtTG9hZERyYWdEZXN0aW5h
dGlvbkFjdGlvbihtX3BlbmRpbmdEcm9wU2FuZGJveEV4dGVuc2lvbi5yZWxlYXNlKCkpOwogfQog
Ci1XZWJFZGl0Q29tbWFuZCogV2ViUGFnZTo6d2ViRWRpdENvbW1hbmQodWludDY0X3QgY29tbWFu
ZElEKQorV2ViVW5kb01hbmFnZXJFbnRyeSogV2ViUGFnZTo6d2ViVW5kb01hbmFnZXJFbnRyeSh1
aW50NjRfdCBlbnRyeUlEKQogewotICAgIHJldHVybiBtX2VkaXRDb21tYW5kTWFwLmdldChjb21t
YW5kSUQpLmdldCgpOworICAgIHJldHVybiBtX3VuZG9NYW5hZ2VyRW50cnlNYXAuZ2V0KGVudHJ5
SUQpLmdldCgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmFkZFdlYkVkaXRDb21tYW5kKHVpbnQ2NF90
IGNvbW1hbmRJRCwgV2ViRWRpdENvbW1hbmQqIGNvbW1hbmQpCit2b2lkIFdlYlBhZ2U6OmFkZFdl
YlVuZG9NYW5hZ2VyRW50cnkodWludDY0X3QgZW50cnlJRCwgV2ViVW5kb01hbmFnZXJFbnRyeSog
ZW50cnkpCiB7Ci0gICAgbV9lZGl0Q29tbWFuZE1hcC5zZXQoY29tbWFuZElELCBjb21tYW5kKTsK
KyAgICBtX3VuZG9NYW5hZ2VyRW50cnlNYXAuc2V0KGVudHJ5SUQsIGVudHJ5KTsKIH0KIAotdm9p
ZCBXZWJQYWdlOjpyZW1vdmVXZWJFZGl0Q29tbWFuZCh1aW50NjRfdCBjb21tYW5kSUQpCit2b2lk
IFdlYlBhZ2U6OnJlbW92ZVdlYkVkaXRDb21tYW5kKHVpbnQ2NF90IGVudHJ5SUQpCiB7Ci0gICAg
bV9lZGl0Q29tbWFuZE1hcC5yZW1vdmUoY29tbWFuZElEKTsKKyAgICBtX3VuZG9NYW5hZ2VyRW50
cnlNYXAucmVtb3ZlKGVudHJ5SUQpOwogfQogCi12b2lkIFdlYlBhZ2U6OnVuYXBwbHlFZGl0Q29t
bWFuZCh1aW50NjRfdCBjb21tYW5kSUQpCit2b2lkIFdlYlBhZ2U6OnVuYXBwbHlFZGl0Q29tbWFu
ZCh1aW50NjRfdCBlbnRyeUlEKQogewotICAgIFdlYkVkaXRDb21tYW5kKiBjb21tYW5kID0gd2Vi
RWRpdENvbW1hbmQoY29tbWFuZElEKTsKLSAgICBpZiAoIWNvbW1hbmQpCisgICAgV2ViVW5kb01h
bmFnZXJFbnRyeSogZW50cnkgPSB3ZWJVbmRvTWFuYWdlckVudHJ5KGVudHJ5SUQpOworICAgIGlm
ICghZW50cnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbW1hbmQtPmNvbW1hbmQoKS0+dW5h
cHBseSgpOworICAgIGVudHJ5LT5lbnRyeSgpLT51bmFwcGx5KCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6cmVhcHBseUVkaXRDb21tYW5kKHVpbnQ2NF90IGNvbW1hbmRJRCkKK3ZvaWQgV2ViUGFnZTo6
cmVhcHBseUVkaXRDb21tYW5kKHVpbnQ2NF90IGVudHJ5SUQpCiB7Ci0gICAgV2ViRWRpdENvbW1h
bmQqIGNvbW1hbmQgPSB3ZWJFZGl0Q29tbWFuZChjb21tYW5kSUQpOwotICAgIGlmICghY29tbWFu
ZCkKKyAgICBXZWJVbmRvTWFuYWdlckVudHJ5KiBlbnRyeSA9IHdlYlVuZG9NYW5hZ2VyRW50cnko
ZW50cnlJRCk7CisgICAgaWYgKCFlbnRyeSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pc0lu
UmVkbyA9IHRydWU7Ci0gICAgY29tbWFuZC0+Y29tbWFuZCgpLT5yZWFwcGx5KCk7CisgICAgZW50
cnktPmVudHJ5KCktPnJlYXBwbHkoKTsKICAgICBtX2lzSW5SZWRvID0gZmFsc2U7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNp
b24gMTAyODM1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQAogI2luY2x1ZGUgIlBsdWdpbi5oIgog
I2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAu
aCIKLSNpbmNsdWRlICJXZWJFZGl0Q29tbWFuZC5oIgorI2luY2x1ZGUgIldlYlVuZG9NYW5hZ2Vy
RW50cnkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9FZGl0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KQEAgLTE5
MSw4ICsxOTEsOCBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6SW50UmVjdCB3aW5kb3dSZXNpemVy
UmVjdCgpIGNvbnN0OwogICAgIFdlYkNvcmU6OktleWJvYXJkVUlNb2RlIGtleWJvYXJkVUlNb2Rl
KCk7CiAKLSAgICBXZWJFZGl0Q29tbWFuZCogd2ViRWRpdENvbW1hbmQodWludDY0X3QpOwotICAg
IHZvaWQgYWRkV2ViRWRpdENvbW1hbmQodWludDY0X3QsIFdlYkVkaXRDb21tYW5kKik7CisgICAg
V2ViVW5kb01hbmFnZXJFbnRyeSogd2ViVW5kb01hbmFnZXJFbnRyeSh1aW50NjRfdCk7CisgICAg
dm9pZCBhZGRXZWJVbmRvTWFuYWdlckVudHJ5KHVpbnQ2NF90LCBXZWJVbmRvTWFuYWdlckVudHJ5
Kik7CiAgICAgdm9pZCByZW1vdmVXZWJFZGl0Q29tbWFuZCh1aW50NjRfdCk7CiAgICAgYm9vbCBp
c0luUmVkbygpIGNvbnN0IHsgcmV0dXJuIG1faXNJblJlZG87IH0KIApAQCAtNjYxLDcgKzY2MSw3
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgUnVuTG9vcDo6VGltZXI8V2ViUGFnZT4gbV9zZXRDYW5T
dGFydE1lZGlhVGltZXI7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViRWRpdENv
bW1hbmQ+ID4gbV9lZGl0Q29tbWFuZE1hcDsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
V2ViVW5kb01hbmFnZXJFbnRyeT4gPiBtX3VuZG9NYW5hZ2VyRW50cnlNYXA7CiAKICAgICBXZWJD
b3JlOjpJbnRTaXplIG1fd2luZG93UmVzaXplclNpemU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVbmRvTWFuYWdlckVudHJ5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVW5kb01hbmFnZXJFbnRyeS5j
cHAJKHJldmlzaW9uIDEwMjgzNSkJKGZyb20gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkVkaXRDb21tYW5kLmNwcDoxMDI4MzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViVW5kb01hbmFnZXJFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJFZGl0Q29tbWFuZC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHVpbnQ2NF90
IGdlbmVyYXRlQ29tbWFuZElEKCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgdW5pcXVlQ29tbWFu
ZElEID0gMTsKKyAgICByZXR1cm4gdW5pcXVlQ29tbWFuZElEKys7Cit9CisKK1Bhc3NSZWZQdHI8
V2ViRWRpdENvbW1hbmQ+IFdlYkVkaXRDb21tYW5kOjpjcmVhdGUoUGFzc1JlZlB0cjxXZWJDb3Jl
OjpFZGl0Q29tbWFuZD4gY29tbWFuZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkVk
aXRDb21tYW5kKGNvbW1hbmQsIGdlbmVyYXRlQ29tbWFuZElEKCkpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
VW5kb01hbmFnZXJFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlVuZG9NYW5hZ2VyRW50cnkuY3BwCShyZXZpc2lvbiAxMDI4MzUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVW5kb01hbmFnZXJFbnRyeS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDE5ICsyNCwxOSBAQAogICovCiAKICNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJXZWJFZGl0Q29tbWFuZC5oIgorI2luY2x1ZGUgIldlYlVuZG9N
YW5hZ2VyRW50cnkuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyB1aW50NjRfdCBn
ZW5lcmF0ZUNvbW1hbmRJRCgpCitzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVVbmRvTWFuYWdlckVu
dHJ5KCkKIHsKLSAgICBzdGF0aWMgdWludDY0X3QgdW5pcXVlQ29tbWFuZElEID0gMTsKLSAgICBy
ZXR1cm4gdW5pcXVlQ29tbWFuZElEKys7CisgICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZUVudHJ5
SUQgPSAxOworICAgIHJldHVybiB1bmlxdWVFbnRyeUlEKys7CiB9CiAKLVBhc3NSZWZQdHI8V2Vi
RWRpdENvbW1hbmQ+IFdlYkVkaXRDb21tYW5kOjpjcmVhdGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpF
ZGl0Q29tbWFuZD4gY29tbWFuZCkKK1Bhc3NSZWZQdHI8V2ViVW5kb01hbmFnZXJFbnRyeT4gV2Vi
VW5kb01hbmFnZXJFbnRyeTo6Y3JlYXRlKFBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb01hbmFnZXJF
bnRyeT4gZW50cnkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJFZGl0Q29tbWFuZChj
b21tYW5kLCBnZW5lcmF0ZUNvbW1hbmRJRCgpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJVbmRvTWFuYWdlckVudHJ5KGVudHJ5LCBnZW5lcmF0ZVVuZG9NYW5hZ2VyRW50cnkoKSkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJVbmRvTWFuYWdlckVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVuZG9NYW5hZ2VyRW50cnkuaAkocmV2aXNpb24g
MTAyODM1KQkoZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRWRpdENv
bW1hbmQuaDoxMDI4MzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
VW5kb01hbmFnZXJFbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYkVkaXRDb21tYW5kX2gKKyNkZWZpbmUgV2ViRWRpdENvbW1hbmRf
aAorCisjaW5jbHVkZSA8V2ViQ29yZS9FZGl0Q29tbWFuZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViRWRpdENvbW1hbmQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJFZGl0Q29tbWFu
ZD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kPiBjcmVh
dGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4pOworCisgICAgV2ViQ29yZTo6RWRp
dENvbW1hbmQqIGNvbW1hbmQoKSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmQuZ2V0KCk7IH0KKyAg
ICB1aW50NjRfdCBjb21tYW5kSUQoKSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmRJRDsgfQorCitw
cml2YXRlOgorICAgIFdlYkVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1h
bmQ+IGNvbW1hbmQsIHVpbnQ2NF90IGNvbW1hbmRJRCkKKyAgICAgICAgOiBtX2NvbW1hbmQoY29t
bWFuZCkKKyAgICAgICAgLCBtX2NvbW1hbmRJRChjb21tYW5kSUQpCisgICAgeworICAgIH0KKwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4gbV9jb21tYW5kOworICAgIHVpbnQ2NF90
IG1fY29tbWFuZElEOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBX
ZWJFZGl0Q29tbWFuZF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViVW5kb01hbmFnZXJFbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJVbmRvTWFuYWdlckVudHJ5LmgJKHJldmlzaW9uIDEwMjgzNSkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVbmRvTWFuYWdlckVudHJ5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDMxICsyMywzMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViRWRpdENvbW1hbmRfaAotI2RlZmluZSBX
ZWJFZGl0Q29tbWFuZF9oCisjaWZuZGVmIFdlYlVuZG9NYW5hZ2VyRW50cnlfaAorI2RlZmluZSBX
ZWJVbmRvTWFuYWdlckVudHJ5X2gKIAotI2luY2x1ZGUgPFdlYkNvcmUvRWRpdENvbW1hbmQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1VuZG9NYW5hZ2VyRW50cnkuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLWNsYXNzIFdlYkVkaXRDb21tYW5kIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViRWRpdENvbW1h
bmQ+IHsKK2NsYXNzIFdlYlVuZG9NYW5hZ2VyRW50cnkgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJV
bmRvTWFuYWdlckVudHJ5PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViRWRp
dENvbW1hbmQ+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPik7CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViVW5kb01hbmFnZXJFbnRyeT4gY3JlYXRlKFBhc3NSZWZQdHI8
V2ViQ29yZTo6VW5kb01hbmFnZXJFbnRyeT4pOwogCi0gICAgV2ViQ29yZTo6RWRpdENvbW1hbmQq
IGNvbW1hbmQoKSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmQuZ2V0KCk7IH0KLSAgICB1aW50NjRf
dCBjb21tYW5kSUQoKSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmRJRDsgfQorICAgIFdlYkNvcmU6
OlVuZG9NYW5hZ2VyRW50cnkqIGVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9lbnRyeS5nZXQoKTsg
fQorICAgIHVpbnQ2NF90IGVudHJ5SUQoKSBjb25zdCB7IHJldHVybiBtX2VudHJ5SUQ7IH0KIAog
cHJpdmF0ZToKLSAgICBXZWJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21t
YW5kPiBjb21tYW5kLCB1aW50NjRfdCBjb21tYW5kSUQpCi0gICAgICAgIDogbV9jb21tYW5kKGNv
bW1hbmQpCi0gICAgICAgICwgbV9jb21tYW5kSUQoY29tbWFuZElEKQorICAgIFdlYlVuZG9NYW5h
Z2VyRW50cnkoUGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvTWFuYWdlckVudHJ5PiBlbnRyeSwgdWlu
dDY0X3QgZW50cnlJRCkKKyAgICAgICAgOiBtX2VudHJ5KGVudHJ5KQorICAgICAgICAsIG1fZW50
cnlJRChlbnRyeUlEKQogICAgIHsKICAgICB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6RWRpdENv
bW1hbmQ+IG1fY29tbWFuZDsKLSAgICB1aW50NjRfdCBtX2NvbW1hbmRJRDsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6VW5kb01hbmFnZXJFbnRyeT4gbV9lbnRyeTsKKyAgICB1aW50NjRfdCBtX2VudHJ5
SUQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL3dp
bi9XZWJLaXQyLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0
Mi52Y3Byb2oJKHJldmlzaW9uIDEwMjgzNSkKKysrIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
LnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjAzOCwxNCArMjAzOCw2IEBACiAJCQkJCT4KIAkJ
CQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdl
YlBhZ2VcV2ViRWRpdENvbW1hbmQuY3BwIgotCQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxl
Ci0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xXZWJQYWdlXFdlYkVkaXRDb21tYW5k
LmgiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxXZWJQcm9jZXNzXFdlYlBhZ2VcV2ViRnJhbWUuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpA
QCAtMjA5Myw2ICsyMDg1LDE0IEBACiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xX
ZWJQYWdlXFdlYlBhZ2VHcm91cFByb3h5LmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CisJCQkJPEZp
bGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYlBhZ2VcV2ViVW5kb01hbmFn
ZXJFbnRyeS5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYlBhZ2VcV2ViVW5kb01hbmFnZXJFbnRyeS5oIgorCQkJ
CQk+CisJCQkJPC9GaWxlPgogCQkJCTxGaWx0ZXIKIAkJCQkJTmFtZT0id2luIgogCQkJCQk+Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTAyODk3KQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBA
QAorMjAxMS0xMi0xNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAg
ICBPbmx5IEVkaXRDb21tYW5kQ29tcG9zaXRpb24gc2hvdWxkIGltcGxlbWVudCB1bmFwcGx5IGFu
ZCByZWFwcGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NDQ5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogc3JjL0VkaXRvckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGll
bnRJbXBsOjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKToKKyAgICAgICAgKFdlYktpdDo6RWRpdG9y
Q2xpZW50SW1wbDo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyk6CisgICAgICAgIChXZWJLaXQ6OkVk
aXRvckNsaWVudEltcGw6OnVuZG8pOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRJbXBs
OjpyZWRvKToKKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5oOgorCiAyMDExLTEyLTE0
ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1d
IERhdGFiYXNlT2JzZXJ2ZXIgbmVlZHMgdGhyZWFkc2FmZSBmaXhlcyBhbmQgb3RoZXIgY2xlYW4t
dXAuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJ
bXBsLmNwcAkocmV2aXNpb24gMTAyODM1KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RWRpdG9yQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNp
bmNsdWRlICJFZGl0b3JDbGllbnRJbXBsLmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2lu
Y2x1ZGUgIkVkaXRDb21tYW5kLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRXZl
bnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgpAQCAtNDEsNiArNDAsNyBAQAog
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAj
aW5jbHVkZSAiU3BlbGxDaGVja2VyLmgiCisjaW5jbHVkZSAiVW5kb01hbmFnZXJFbnRyeS5oIgog
CiAjaW5jbHVkZSAiRE9NVXRpbGl0aWVzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYkF1dG9maWxs
Q2xpZW50LmgiCkBAIC0yODgsMTggKzI4OCwxOCBAQCB2b2lkIEVkaXRvckNsaWVudEltcGw6OmRp
ZFNldFNlbGVjdGlvblR5CiB7CiB9CiAKLXZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVnaXN0ZXJD
b21tYW5kRm9yVW5kbyhQYXNzUmVmUHRyPEVkaXRDb21tYW5kPiBjb21tYW5kKQordm9pZCBFZGl0
b3JDbGllbnRJbXBsOjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKFBhc3NSZWZQdHI8VW5kb01hbmFn
ZXJFbnRyeT4gZW50cnkpCiB7CiAgICAgaWYgKG1fdW5kb1N0YWNrLnNpemUoKSA9PSBtYXhpbXVt
VW5kb1N0YWNrRGVwdGgpCiAgICAgICAgIG1fdW5kb1N0YWNrLnJlbW92ZUZpcnN0KCk7IC8vIGRy
b3Agb2xkZXN0IGl0ZW0gb2ZmIHRoZSBmYXIgZW5kCiAgICAgaWYgKCFtX2luUmVkbykKICAgICAg
ICAgbV9yZWRvU3RhY2suY2xlYXIoKTsKLSAgICBtX3VuZG9TdGFjay5hcHBlbmQoY29tbWFuZCk7
CisgICAgbV91bmRvU3RhY2suYXBwZW5kKGVudHJ5KTsKIH0KIAotdm9pZCBFZGl0b3JDbGllbnRJ
bXBsOjpyZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+IGNvbW1h
bmQpCit2b2lkIEVkaXRvckNsaWVudEltcGw6OnJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oUGFzc1Jl
ZlB0cjxVbmRvTWFuYWdlckVudHJ5PiBlbnRyeSkKIHsKLSAgICBtX3JlZG9TdGFjay5hcHBlbmQo
Y29tbWFuZCk7CisgICAgbV9yZWRvU3RhY2suYXBwZW5kKGVudHJ5KTsKIH0KIAogdm9pZCBFZGl0
b3JDbGllbnRJbXBsOjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCkBAIC0zMzUsMTAgKzMzNSwx
MCBAQCBib29sIEVkaXRvckNsaWVudEltcGw6OmNhblJlZG8oKSBjb25zdAogdm9pZCBFZGl0b3JD
bGllbnRJbXBsOjp1bmRvKCkKIHsKICAgICBpZiAoY2FuVW5kbygpKSB7Ci0gICAgICAgIEVkaXRD
b21tYW5kU3RhY2s6Oml0ZXJhdG9yIGJhY2sgPSAtLW1fdW5kb1N0YWNrLmVuZCgpOwotICAgICAg
ICBSZWZQdHI8RWRpdENvbW1hbmQ+IGNvbW1hbmQoKmJhY2spOworICAgICAgICBVbmRvTWFuYWdl
clN0YWNrOjppdGVyYXRvciBiYWNrID0gLS1tX3VuZG9TdGFjay5lbmQoKTsKKyAgICAgICAgUmVm
UHRyPFVuZG9NYW5hZ2VyRW50cnk+IGVudHJ5KCpiYWNrKTsKICAgICAgICAgbV91bmRvU3RhY2su
cmVtb3ZlKGJhY2spOwotICAgICAgICBjb21tYW5kLT51bmFwcGx5KCk7CisgICAgICAgIGVudHJ5
LT51bmFwcGx5KCk7CiAgICAgICAgIC8vIHVuYXBwbHkgd2lsbCBjYWxsIHVzIGJhY2sgdG8gcHVz
aCB0aGlzIGNvbW1hbmQgb250byB0aGUgcmVkbyBzdGFjay4KICAgICB9CiB9CkBAIC0zNDYsMTMg
KzM0NiwxMyBAQCB2b2lkIEVkaXRvckNsaWVudEltcGw6OnVuZG8oKQogdm9pZCBFZGl0b3JDbGll
bnRJbXBsOjpyZWRvKCkKIHsKICAgICBpZiAoY2FuUmVkbygpKSB7Ci0gICAgICAgIEVkaXRDb21t
YW5kU3RhY2s6Oml0ZXJhdG9yIGJhY2sgPSAtLW1fcmVkb1N0YWNrLmVuZCgpOwotICAgICAgICBS
ZWZQdHI8RWRpdENvbW1hbmQ+IGNvbW1hbmQoKmJhY2spOworICAgICAgICBVbmRvTWFuYWdlclN0
YWNrOjppdGVyYXRvciBiYWNrID0gLS1tX3JlZG9TdGFjay5lbmQoKTsKKyAgICAgICAgUmVmUHRy
PFVuZG9NYW5hZ2VyRW50cnk+IGVudHJ5KCpiYWNrKTsKICAgICAgICAgbV9yZWRvU3RhY2sucmVt
b3ZlKGJhY2spOwogCiAgICAgICAgIEFTU0VSVCghbV9pblJlZG8pOwogICAgICAgICBtX2luUmVk
byA9IHRydWU7Ci0gICAgICAgIGNvbW1hbmQtPnJlYXBwbHkoKTsKKyAgICAgICAgZW50cnktPnJl
YXBwbHkoKTsKICAgICAgICAgLy8gcmVhcHBseSB3aWxsIGNhbGwgdXMgYmFjayB0byBwdXNoIHRo
aXMgY29tbWFuZCBvbnRvIHRoZSB1bmRvIHN0YWNrLgogICAgICAgICBtX2luUmVkbyA9IGZhbHNl
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudElt
cGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGll
bnRJbXBsLmgJKHJldmlzaW9uIDEwMjgzNSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0VkaXRvckNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsMTAgKzY1LDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKFdlYkNvcmU6Ok5vZGUqLCBX
ZWJDb3JlOjpSYW5nZSosIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbik7CiAgICAgdmlydHVh
bCBib29sIHNob3VsZEluc2VydFRleHQoY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJDb3JlOjpSYW5n
ZSosIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbik7CiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZERlbGV0ZVJhbmdlKFdlYkNvcmU6OlJhbmdlKik7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZENo
YW5nZVNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqIGZyb21SYW5nZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJDb3JlOjpSYW5nZSogdG9SYW5nZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJDb3JlOjpFQWZm
aW5pdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBz
dGlsbFNlbGVjdGluZyk7CisgICAgdmlydHVhbCBib29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFu
Z2UoV2ViQ29yZTo6UmFuZ2UqIGZyb21SYW5nZSwgV2ViQ29yZTo6UmFuZ2UqIHRvUmFuZ2UsCisg
ICAgICAgIFdlYkNvcmU6OkVBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZyk7CiAgICAgdmly
dHVhbCBib29sIHNob3VsZEFwcGx5U3R5bGUoV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbios
IFdlYkNvcmU6OlJhbmdlKik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZE1vdmVSYW5nZUFmdGVy
RGVsZXRlKFdlYkNvcmU6OlJhbmdlKiwgV2ViQ29yZTo6UmFuZ2UqKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQmVnaW5FZGl0aW5nKCk7CkBAIC03Nyw4ICs3NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRTZWxlY3Rpb25UeXBl
c0ZvclBhc3RlYm9hcmQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yVW5k
byhQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPik7Ci0gICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyQ29tbWFuZEZvclJlZG8oUGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4pOwor
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JVbmRvKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6VW5kb01hbmFnZXJFbnRyeT4pOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRG
b3JSZWRvKFBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb01hbmFnZXJFbnRyeT4pOwogICAgIHZpcnR1
YWwgdm9pZCBjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpOwogICAgIHZpcnR1YWwgYm9vbCBjYW5D
b3B5Q3V0KFdlYkNvcmU6OkZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCBjYW5QYXN0ZShXZWJDb3JlOjpGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBj
b25zdDsKQEAgLTk4LDIxICs5NiwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRleHRE
aWRDaGFuZ2VJblRleHRBcmVhKFdlYkNvcmU6OkVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQg
aWdub3JlV29yZEluU3BlbGxEb2N1bWVudChjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHZpcnR1
YWwgdm9pZCBsZWFybldvcmQoY29uc3QgV1RGOjpTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
Y2hlY2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbWlzc3BlbGxpbmdMb2NhdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbWlzc3BlbGxpbmdM
ZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hh
ciosIGludCBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdU
Rjo6VmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCogYmFkR3JhbW1hckxlbmd0aCk7CisgICAgdmly
dHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgs
IGludCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50KiBtaXNzcGVsbGluZ0xlbmd0aCk7CisgICAg
dmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0
aCwgV1RGOjpWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLAorICAgICAgICBpbnQqIGJh
ZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKTsKICAgICB2aXJ0dWFsIFdU
Rjo6U3RyaW5nIGdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0
IFdURjo6U3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoR3Jh
bW1hclN0cmluZyhjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRh
aWwmKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29y
ZChjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBzaG93U3BlbGxpbmdVSShi
b29sIHNob3cpOwogICAgIHZpcnR1YWwgYm9vbCBzcGVsbGluZ1VJSXNTaG93aW5nKCk7Ci0gICAg
dmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFdURjo6U3RyaW5nJiB3b3JkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgY29u
dGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1RGOjpWZWN0b3I8V1RG
OjpTdHJpbmc+JiBndWVzc2VzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQo
Y29uc3QgV1RGOjpTdHJpbmcmIHdvcmQsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZXh0LCBXVEY6
OlZlY3RvcjxXVEY6OlN0cmluZz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0
SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRl
KGJvb2wgZW5hYmxlZCk7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5n
KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1h
c2ssIGNvbnN0IFdURjo6U3RyaW5nJik7CkBAIC0xMzQsOSArMTI2LDkgQEAgcHJpdmF0ZToKICAg
ICBXZWJWaWV3SW1wbCogbV93ZWJWaWV3OwogICAgIGJvb2wgbV9pblJlZG87CiAKLSAgICB0eXBl
ZGVmIERlcXVlPFJlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4gPiBFZGl0Q29tbWFuZFN0YWNr
OwotICAgIEVkaXRDb21tYW5kU3RhY2sgbV91bmRvU3RhY2s7Ci0gICAgRWRpdENvbW1hbmRTdGFj
ayBtX3JlZG9TdGFjazsKKyAgICB0eXBlZGVmIERlcXVlPFJlZlB0cjxXZWJDb3JlOjpVbmRvTWFu
YWdlckVudHJ5PiA+IFVuZG9NYW5hZ2VyU3RhY2s7CisgICAgVW5kb01hbmFnZXJTdGFjayBtX3Vu
ZG9TdGFjazsKKyAgICBVbmRvTWFuYWdlclN0YWNrIG1fcmVkb1N0YWNrOwogCiAgICAgLy8gVGhp
cyBmbGFnIGlzIHNldCB0byBmYWxzZSBpZiBzcGVsbCBjaGVjayBmb3IgdGhpcyBlZGl0b3IgaXMg
bWFudWFsbHkKICAgICAvLyB0dXJuZWQgb2ZmLiBUaGUgZGVmYXVsdCBzZXR0aW5nIGlzIFNwZWxs
Q2hlY2tBdXRvbWF0aWMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDI4OTcpCisr
KyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NyBAQAorMjAxMS0xMi0xNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAg
ICAgICBPbmx5IEVkaXRDb21tYW5kQ29tcG9zaXRpb24gc2hvdWxkIGltcGxlbWVudCB1bmFwcGx5
IGFuZCByZWFwcGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NDQ5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvckNsaWVudEVmbDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyk6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnJlZ2lzdGVyQ29tbWFuZEZvclJlZG8pOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjp1bmRvKToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudEVmbDo6cmVkbyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50RWZsLmg6CisKIDIwMTEtMTItMTQgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBDaGFuZ2UgZWZsIHN0eWxlIHZhcmlhYmxlIG5hbWUg
d2l0aCBXZWJLaXQgc3R5bGUgZm9yIGludGVybmFsIGZ1bmN0aW9ucy4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAko
cmV2aXNpb24gMTAyODM1KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkVkaXRvckNsaWVudEVmbC5oIgogCi0jaW5jbHVkZSAi
RWRpdENvbW1hbmQuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCkBAIC0zMyw2ICszMiw3IEBACiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiVW5kb01hbmFnZXJFbnRyeS5oIgogI2luY2x1ZGUg
IldpbmRvd3NLZXlib2FyZENvZGVzLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKIApAQCAt
MTYwLDE2ICsxNjAsMTYgQEAgdm9pZCBFZGl0b3JDbGllbnRFZmw6OmRpZFNldFNlbGVjdGlvblR5
cAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWdp
c3RlckNvbW1hbmRGb3JVbmRvKFdURjo6UGFzc1JlZlB0cjxFZGl0Q29tbWFuZD4gY29tbWFuZCkK
K3ZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKFdURjo6UGFzc1Jl
ZlB0cjxVbmRvTWFuYWdlckVudHJ5PiBlbnRyeSkKIHsKICAgICBpZiAoIW1faXNJblJlZG8pCiAg
ICAgICAgIHJlZG9TdGFjay5jbGVhcigpOwotICAgIHVuZG9TdGFjay5wcmVwZW5kKGNvbW1hbmQp
OworICAgIHVuZG9TdGFjay5wcmVwZW5kKGVudHJ5KTsKIH0KIAotdm9pZCBFZGl0b3JDbGllbnRF
Zmw6OnJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oV1RGOjpQYXNzUmVmUHRyPEVkaXRDb21tYW5kPiBj
b21tYW5kKQordm9pZCBFZGl0b3JDbGllbnRFZmw6OnJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oV1RG
OjpQYXNzUmVmUHRyPFVuZG9NYW5hZ2VyRW50cnk+IGVudHJ5KQogewotICAgIHJlZG9TdGFjay5w
cmVwZW5kKGNvbW1hbmQpOworICAgIHJlZG9TdGFjay5wcmVwZW5kKGVudHJ5KTsKIH0KIAogdm9p
ZCBFZGl0b3JDbGllbnRFZmw6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKQEAgLTIwMSwxOSAr
MjAxLDE5IEBAIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5SZWRvKCkgY29uc3QKIHZvaWQgRWRp
dG9yQ2xpZW50RWZsOjp1bmRvKCkKIHsKICAgICBpZiAoY2FuVW5kbygpKSB7Ci0gICAgICAgIFJl
ZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4gY29tbWFuZCA9IHVuZG9TdGFjay50YWtlRmlyc3Qo
KTsKLSAgICAgICAgY29tbWFuZC0+dW5hcHBseSgpOworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6
VW5kb01hbmFnZXJFbnRyeT4gZW50cnkgPSB1bmRvU3RhY2sudGFrZUZpcnN0KCk7CisgICAgICAg
IGVudHJ5LT51bmFwcGx5KCk7CiAgICAgfQogfQogCiB2b2lkIEVkaXRvckNsaWVudEVmbDo6cmVk
bygpCiB7CiAgICAgaWYgKGNhblJlZG8oKSkgewotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6RWRp
dENvbW1hbmQ+IGNvbW1hbmQgPSByZWRvU3RhY2sudGFrZUZpcnN0KCk7CisgICAgICAgIFJlZlB0
cjxXZWJDb3JlOjpVbmRvTWFuYWdlckVudHJ5PiBlbnRyeSA9IHJlZG9TdGFjay50YWtlRmlyc3Qo
KTsKIAogICAgICAgICBBU1NFUlQoIW1faXNJblJlZG8pOwogICAgICAgICBtX2lzSW5SZWRvID0g
dHJ1ZTsKLSAgICAgICAgY29tbWFuZC0+cmVhcHBseSgpOworICAgICAgICBlbnRyeS0+cmVhcHBs
eSgpOwogICAgICAgICBtX2lzSW5SZWRvID0gZmFsc2U7CiAgICAgfQogfQpJbmRleDogU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgJKHJl
dmlzaW9uIDEwMjgzNSkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw4ICs0Nyw4IEBAIGNsYXNzIFBhZ2U7
CiBjbGFzcyBFZGl0b3JDbGllbnRFZmwgOiBwdWJsaWMgRWRpdG9yQ2xpZW50LCBwdWJsaWMgVGV4
dENoZWNrZXJDbGllbnQgewogcHJvdGVjdGVkOgogICAgIGJvb2wgbV9pc0luUmVkbzsKLSAgICBX
VEY6OkRlcXVlPFdURjo6UmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiA+IHVuZG9TdGFjazsK
LSAgICBXVEY6OkRlcXVlPFdURjo6UmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiA+IHJlZG9T
dGFjazsKKyAgICBXVEY6OkRlcXVlPFdURjo6UmVmUHRyPFdlYkNvcmU6OlVuZG9NYW5hZ2VyRW50
cnk+ID4gdW5kb1N0YWNrOworICAgIFdURjo6RGVxdWU8V1RGOjpSZWZQdHI8V2ViQ29yZTo6VW5k
b01hbmFnZXJFbnRyeT4gPiByZWRvU3RhY2s7CiAKIHB1YmxpYzoKICAgICBFZGl0b3JDbGllbnRF
ZmwoRXZhc19PYmplY3QgKnZpZXcpOwpAQCAtODQsOCArODQsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpOwogCi0gICAgdmlydHVhbCB2
b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oV1RGOjpQYXNzUmVmUHRyPEVkaXRDb21tYW5kPik7
Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oV1RGOjpQYXNzUmVmUHRy
PEVkaXRDb21tYW5kPik7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8o
V1RGOjpQYXNzUmVmUHRyPFVuZG9NYW5hZ2VyRW50cnk+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJDb21tYW5kRm9yUmVkbyhXVEY6OlBhc3NSZWZQdHI8VW5kb01hbmFnZXJFbnRyeT4pOwog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpOwogCiAgICAgdmlydHVh
bCBib29sIGNhbkNvcHlDdXQoRnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDI4OTcpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0xMi0xNSAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBPbmx5IEVkaXRDb21tYW5k
Q29tcG9zaXRpb24gc2hvdWxkIGltcGxlbWVudCB1bmFwcGx5IGFuZCByZWFwcGx5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQ5MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50OjpyZWdp
c3RlckNvbW1hbmRGb3JVbmRvKToKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50OjpyZWdp
c3RlckNvbW1hbmRGb3JSZWRvKToKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50Ojp1bmRv
KToKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50OjpyZWRvKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaDoKKwogMjAxMS0xMi0xNCAgSmluZyBaaGFvICA8
amluZ3poYW9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE9wZW5pbmcgdHdvIHBvcHVwIG1lbnVz
IGJ5IGRpc3BhdGNoRXZlbnQoKSBtYWtlcyBwcm9ibGVtcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAkocmV2aXNp
b24gMTAyODM1KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAogCiAjaW5jbHVkZSAi
RGF0YU9iamVjdEd0ay5oIgogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oIgot
I2luY2x1ZGUgIkVkaXRDb21tYW5kLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgpAQCAtMzgsNiArMzcs
NyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkSGVscGVyLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiVW5kb01hbmFnZXJF
bnRyeS5oIgogI2luY2x1ZGUgIldlYktpdERPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJXZWJLaXRE
T01DU1NTdHlsZURlY2xhcmF0aW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTUhUTUxF
bGVtZW50UHJpdmF0ZS5oIgpAQCAtMzQ1LDE4ICszNDUsMTggQEAgdm9pZCBFZGl0b3JDbGllbnQ6
OmRpZFNldFNlbGVjdGlvblR5cGVzRgogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQg
RWRpdG9yQ2xpZW50OjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpFZGl0Q29tbWFuZD4gY29tbWFuZCkKK3ZvaWQgRWRpdG9yQ2xpZW50OjpyZWdpc3RlckNv
bW1hbmRGb3JVbmRvKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvTWFuYWdlckVudHJ5PiBl
bnRyeSkKIHsKICAgICBpZiAodW5kb1N0YWNrLnNpemUoKSA9PSBtYXhpbXVtVW5kb1N0YWNrRGVw
dGgpCiAgICAgICAgIHVuZG9TdGFjay5yZW1vdmVGaXJzdCgpOwogICAgIGlmICghbV9pc0luUmVk
bykKICAgICAgICAgcmVkb1N0YWNrLmNsZWFyKCk7Ci0gICAgdW5kb1N0YWNrLmFwcGVuZChjb21t
YW5kKTsKKyAgICB1bmRvU3RhY2suYXBwZW5kKGVudHJ5KTsKIH0KIAotdm9pZCBFZGl0b3JDbGll
bnQ6OnJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRD
b21tYW5kPiBjb21tYW5kKQordm9pZCBFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQ29tbWFuZEZvclJl
ZG8oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9NYW5hZ2VyRW50cnk+IGVudHJ5KQogewot
ICAgIHJlZG9TdGFjay5hcHBlbmQoY29tbWFuZCk7CisgICAgcmVkb1N0YWNrLmFwcGVuZChlbnRy
eSk7CiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50OjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCkBA
IC0zODgsMjMgKzM4OCwyMyBAQCBib29sIEVkaXRvckNsaWVudDo6Y2FuUmVkbygpIGNvbnN0CiB2
b2lkIEVkaXRvckNsaWVudDo6dW5kbygpCiB7CiAgICAgaWYgKGNhblVuZG8oKSkgewotICAgICAg
ICBSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+IGNvbW1hbmQoKigtLXVuZG9TdGFjay5lbmQo
KSkpOworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6VW5kb01hbmFnZXJFbnRyeT4gZW50cnkoKigt
LXVuZG9TdGFjay5lbmQoKSkpOwogICAgICAgICB1bmRvU3RhY2sucmVtb3ZlKC0tdW5kb1N0YWNr
LmVuZCgpKTsKICAgICAgICAgLy8gdW5hcHBseSB3aWxsIGNhbGwgdXMgYmFjayB0byBwdXNoIHRo
aXMgY29tbWFuZCBvbnRvIHRoZSByZWRvIHN0YWNrLgotICAgICAgICBjb21tYW5kLT51bmFwcGx5
KCk7CisgICAgICAgIGVudHJ5LT51bmFwcGx5KCk7CiAgICAgfQogfQogCiB2b2lkIEVkaXRvckNs
aWVudDo6cmVkbygpCiB7CiAgICAgaWYgKGNhblJlZG8oKSkgewotICAgICAgICBSZWZQdHI8V2Vi
Q29yZTo6RWRpdENvbW1hbmQ+IGNvbW1hbmQoKigtLXJlZG9TdGFjay5lbmQoKSkpOworICAgICAg
ICBSZWZQdHI8V2ViQ29yZTo6VW5kb01hbmFnZXJFbnRyeT4gZW50cnkoKigtLXJlZG9TdGFjay5l
bmQoKSkpOwogICAgICAgICByZWRvU3RhY2sucmVtb3ZlKC0tcmVkb1N0YWNrLmVuZCgpKTsKIAog
ICAgICAgICBBU1NFUlQoIW1faXNJblJlZG8pOwogICAgICAgICBtX2lzSW5SZWRvID0gdHJ1ZTsK
ICAgICAgICAgLy8gcmVhcHBseSB3aWxsIGNhbGwgdXMgYmFjayB0byBwdXNoIHRoaXMgY29tbWFu
ZCBvbnRvIHRoZSB1bmRvIHN0YWNrLgotICAgICAgICBjb21tYW5kLT5yZWFwcGx5KCk7CisgICAg
ICAgIGVudHJ5LT5yZWFwcGx5KCk7CiAgICAgICAgIG1faXNJblJlZG8gPSBmYWxzZTsKICAgICB9
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRH
dGsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRHdGsuaAkocmV2aXNpb24gMTAyODM1KQorKysgU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDggKzU4
LDggQEAgY2xhc3MgRWRpdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkVkaQogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgYm9vbCBtX2lzSW5SZWRvOwogCi0gICAgICAgIFdURjo6RGVxdWU8V1RG
OjpSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+ID4gdW5kb1N0YWNrOwotICAgICAgICBXVEY6
OkRlcXVlPFdURjo6UmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiA+IHJlZG9TdGFjazsKKyAg
ICAgICAgV1RGOjpEZXF1ZTxXVEY6OlJlZlB0cjxXZWJDb3JlOjpVbmRvTWFuYWdlckVudHJ5PiA+
IHVuZG9TdGFjazsKKyAgICAgICAgV1RGOjpEZXF1ZTxXVEY6OlJlZlB0cjxXZWJDb3JlOjpVbmRv
TWFuYWdlckVudHJ5PiA+IHJlZG9TdGFjazsKIAogICAgIHB1YmxpYzoKICAgICAgICAgRWRpdG9y
Q2xpZW50KFdlYktpdFdlYlZpZXcqKTsKQEAgLTEwNSw4ICsxMDUsOCBAQCBjbGFzcyBFZGl0b3JD
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RWRpCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0U2Vs
ZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlZ2lz
dGVyQ29tbWFuZEZvclVuZG8oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPik7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JSZWRvKFdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4pOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0
ZXJDb21tYW5kRm9yVW5kbyhXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb01hbmFnZXJFbnRy
eT4pOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhXVEY6OlBh
c3NSZWZQdHI8V2ViQ29yZTo6VW5kb01hbmFnZXJFbnRyeT4pOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgY2Fu
Q29weUN1dChXZWJDb3JlOjpGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdDsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjg5NykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDExLTEyLTE1ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE9ubHkgRWRpdENvbW1hbmRD
b21wb3NpdGlvbiBzaG91bGQgaW1wbGVtZW50IHVuYXBwbHkgYW5kIHJlYXBwbHkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NDkwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW06CisgICAgICAgICgtW1dlYlVuZG9NYW5hZ2VyRW50cnkgaW5pdFdpdGhVbmRvTWFuYWdl
ckVudHJ5Ol0pOgorICAgICAgICAoLVtXZWJVbmRvTWFuYWdlckVudHJ5IGRlYWxsb2NdKToKKyAg
ICAgICAgKCtbV2ViVW5kb01hbmFnZXJFbnRyeSBlbnRyeVdpdGhVbmRvTWFuYWdlckVudHJ5Ol0p
OgorICAgICAgICAoLVtXZWJVbmRvTWFuYWdlckVudHJ5IGVudHJ5XSk6CisgICAgICAgICgtW1dl
YkVkaXRvclVuZG9UYXJnZXQgdW5kb0VkaXRpbmc6XSk6CisgICAgICAgICgtW1dlYkVkaXRvclVu
ZG9UYXJnZXQgcmVkb0VkaXRpbmc6XSk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnJlZ2lz
dGVyQ29tbWFuZEZvclVuZG9PclJlZG8pOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpyZWdp
c3RlckNvbW1hbmRGb3JVbmRvKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJD
b21tYW5kRm9yUmVkbyk6CisKIDIwMTEtMTItMTQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgTWFjIGJ1aWxkIGZpeCBhZnRlciByMTAyODc0LgpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJ
KHJldmlzaW9uIDEwMjgzNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsOCArMTAwLDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihXZWJDb3JlOjpGcmFt
ZSopIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8o
UGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCByZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1h
bmQ+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yVW5kbyhQ
YXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9NYW5hZ2VyRW50cnk+KSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9N
YW5hZ2VyRW50cnk+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09w
ZXJhdGlvbnMoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5Db3B5Q3V0KFdlYkNv
cmU6OkZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0IE9WRVJSSURFOwpAQCAtMTQzLDcg
KzE0Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25S
ZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgT1ZFUlJJREU7CiAjZW5k
aWYKIHByaXZhdGU6Ci0gICAgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JVbmRvT3JSZWRvKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+LCBib29sIGlzUmVkbyk7CisgICAgdm9pZCByZWdp
c3RlckNvbW1hbmRGb3JVbmRvT3JSZWRvKFBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb01hbmFnZXJF
bnRyeT4sIGJvb2wgaXNSZWRvKTsKICAgICBXZWJFZGl0b3JDbGllbnQoKTsKIAogICAgIFdlYlZp
ZXcgKm1fd2ViVmlldzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHJldmlzaW9uIDEwMjgzNSkKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkod29ya2luZyBjb3B5
KQpAQCAtNTQsOCArNTQsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9BcmNoaXZlUmVzb3VyY2UuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRG
cmFnbWVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9FZGl0QWN0aW9uLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL0VkaXRDb21tYW5kLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxJbnB1dEVsZW1lbnQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxUZXh0
QXJlYUVsZW1lbnQuaD4KQEAgLTY0LDYgKzYyLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZv
cm1LZXlib2FyZEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU3RyaW5nLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1NwZWxsQ2hlY2tlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9VbmRvTWFu
YWdlckVudHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9y
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxydW50
aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KQEAgLTkzLDE3ICs5MiwxNyBAQCBzdGF0aWMgV2Vi
Vmlld0luc2VydEFjdGlvbiBraXQoRWRpdG9ySW5zCiBzdGF0aWMgY29uc3QgaW50IEludmFsaWRD
b3JyZWN0aW9uUGFuZWxUYWcgPSAwOwogCiAKLUBpbnRlcmZhY2UgV2ViRWRpdENvbW1hbmQgOiBO
U09iamVjdAorQGludGVyZmFjZSBXZWJVbmRvTWFuYWdlckVudHJ5IDogTlNPYmplY3QKIHsKLSAg
ICBSZWZQdHI8RWRpdENvbW1hbmQ+IG1fY29tbWFuZDsgICAKKyAgICBSZWZQdHI8VW5kb01hbmFn
ZXJFbnRyeT4gbV9lbnRyeTsgICAKIH0KIAotKyAoV2ViRWRpdENvbW1hbmQgKiljb21tYW5kV2l0
aEVkaXRDb21tYW5kOihQYXNzUmVmUHRyPEVkaXRDb21tYW5kPiljb21tYW5kOwotLSAoRWRpdENv
bW1hbmQgKiljb21tYW5kOworKyAoV2ViVW5kb01hbmFnZXJFbnRyeSAqKWVudHJ5V2l0aFVuZG9N
YW5hZ2VyRW50cnk6KFBhc3NSZWZQdHI8VW5kb01hbmFnZXJFbnRyeT4pZW50cnk7CistIChVbmRv
TWFuYWdlckVudHJ5ICopZW50cnk7CiAKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFdlYkVkaXRD
b21tYW5kCitAaW1wbGVtZW50YXRpb24gV2ViVW5kb01hbmFnZXJFbnRyeQogCiArICh2b2lkKWlu
aXRpYWxpemUKIHsKQEAgLTExMiwxOSArMTExLDE5IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAg
IFdlYkNvcmVPYmpDRmluYWxpemVPbk1haW5UaHJlYWQoc2VsZik7CiB9CiAKLS0gKGlkKWluaXRX
aXRoRWRpdENvbW1hbmQ6KFBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+KWNvbW1hbmQKKy0gKGlkKWlu
aXRXaXRoVW5kb01hbmFnZXJFbnRyeTooUGFzc1JlZlB0cjxVbmRvTWFuYWdlckVudHJ5PillbnRy
eQogewotICAgIEFTU0VSVChjb21tYW5kKTsKKyAgICBBU1NFUlQoZW50cnkpOwogICAgIHNlbGYg
PSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwotICAg
IG1fY29tbWFuZCA9IGNvbW1hbmQ7CisgICAgbV9lbnRyeSA9IGVudHJ5OwogICAgIHJldHVybiBz
ZWxmOwogfQogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBpZiAoV2ViQ29yZU9iakNTY2hlZHVs
ZURlYWxsb2NhdGVPbk1haW5UaHJlYWQoW1dlYkVkaXRDb21tYW5kIGNsYXNzXSwgc2VsZikpCisg
ICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRlT25NYWluVGhyZWFkKFtXZWJVbmRv
TWFuYWdlckVudHJ5IGNsYXNzXSwgc2VsZikpCiAgICAgICAgIHJldHVybjsKIAogICAgIFtzdXBl
ciBkZWFsbG9jXTsKQEAgLTEzNywxNCArMTM2LDE0IEBAIC0gKHZvaWQpZmluYWxpemUKICAgICBb
c3VwZXIgZmluYWxpemVdOwogfQogCi0rIChXZWJFZGl0Q29tbWFuZCAqKWNvbW1hbmRXaXRoRWRp
dENvbW1hbmQ6KFBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+KWNvbW1hbmQKKysgKFdlYlVuZG9NYW5h
Z2VyRW50cnkgKillbnRyeVdpdGhVbmRvTWFuYWdlckVudHJ5OihQYXNzUmVmUHRyPFVuZG9NYW5h
Z2VyRW50cnk+KWVudHJ5CiB7Ci0gICAgcmV0dXJuIFtbW1dlYkVkaXRDb21tYW5kIGFsbG9jXSBp
bml0V2l0aEVkaXRDb21tYW5kOmNvbW1hbmRdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW1tb
V2ViVW5kb01hbmFnZXJFbnRyeSBhbGxvY10gaW5pdFdpdGhVbmRvTWFuYWdlckVudHJ5OmVudHJ5
XSBhdXRvcmVsZWFzZV07CiB9CiAKLS0gKEVkaXRDb21tYW5kICopY29tbWFuZAorLSAoVW5kb01h
bmFnZXJFbnRyeSAqKWVudHJ5CiB7Ci0gICAgcmV0dXJuIG1fY29tbWFuZC5nZXQoKTsKKyAgICBy
ZXR1cm4gbV9lbnRyeS5nZXQoKTsKIH0KIAogQGVuZApAQCAtMTYyLDE0ICsxNjEsMTQgQEAgLSAo
dm9pZClyZWRvRWRpdGluZzooaWQpYXJnOwogCiAtICh2b2lkKXVuZG9FZGl0aW5nOihpZClhcmcK
IHsKLSAgICBBU1NFUlQoW2FyZyBpc0tpbmRPZkNsYXNzOltXZWJFZGl0Q29tbWFuZCBjbGFzc11d
KTsKLSAgICBbYXJnIGNvbW1hbmRdLT51bmFwcGx5KCk7CisgICAgQVNTRVJUKFthcmcgaXNLaW5k
T2ZDbGFzczpbV2ViVW5kb01hbmFnZXJFbnRyeSBjbGFzc11dKTsKKyAgICBbYXJnIGVudHJ5XS0+
dW5hcHBseSgpOwogfQogCiAtICh2b2lkKXJlZG9FZGl0aW5nOihpZClhcmcKIHsKLSAgICBBU1NF
UlQoW2FyZyBpc0tpbmRPZkNsYXNzOltXZWJFZGl0Q29tbWFuZCBjbGFzc11dKTsKLSAgICBbYXJn
IGNvbW1hbmRdLT5yZWFwcGx5KCk7CisgICAgQVNTRVJUKFthcmcgaXNLaW5kT2ZDbGFzczpbV2Vi
VW5kb01hbmFnZXJFbnRyeSBjbGFzc11dKTsKKyAgICBbYXJnIGVudHJ5XS0+cmVhcHBseSgpOwog
fQogCiBAZW5kCkBAIC01MTMsMjUgKzUxMiwyNSBAQCBzdGF0aWMgTlNTdHJpbmcqIHVuZG9OYW1l
Rm9yRWRpdEFjdGlvbihFCiAgICAgcmV0dXJuIG5pbDsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG9PclJlZG8oUGFzc1JlZlB0cjxFZGl0Q29tbWFuZD4g
Y21kLCBib29sIGlzUmVkbykKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckNvbW1hbmRG
b3JVbmRvT3JSZWRvKFBhc3NSZWZQdHI8VW5kb01hbmFnZXJFbnRyeT4gZW50cnksIGJvb2wgaXNS
ZWRvKQogewotICAgIEFTU0VSVChjbWQpOworICAgIEFTU0VSVChlbnRyeSk7CiAgICAgCiAgICAg
TlNVbmRvTWFuYWdlciAqdW5kb01hbmFnZXIgPSBbbV93ZWJWaWV3IHVuZG9NYW5hZ2VyXTsKLSAg
ICBOU1N0cmluZyAqYWN0aW9uTmFtZSA9IHVuZG9OYW1lRm9yRWRpdEFjdGlvbihjbWQtPmVkaXRp
bmdBY3Rpb24oKSk7Ci0gICAgV2ViRWRpdENvbW1hbmQgKmNvbW1hbmQgPSBbV2ViRWRpdENvbW1h
bmQgY29tbWFuZFdpdGhFZGl0Q29tbWFuZDpjbWRdOwotICAgIFt1bmRvTWFuYWdlciByZWdpc3Rl
clVuZG9XaXRoVGFyZ2V0Om1fdW5kb1RhcmdldC5nZXQoKSBzZWxlY3RvcjooaXNSZWRvID8gQHNl
bGVjdG9yKHJlZG9FZGl0aW5nOikgOiBAc2VsZWN0b3IodW5kb0VkaXRpbmc6KSkgb2JqZWN0OmNv
bW1hbmRdOworICAgIE5TU3RyaW5nICphY3Rpb25OYW1lID0gdW5kb05hbWVGb3JFZGl0QWN0aW9u
KGVudHJ5LT5lZGl0aW5nQWN0aW9uKCkpOworICAgIFdlYlVuZG9NYW5hZ2VyRW50cnkgKndlYkVu
dHJ5ID0gW1dlYlVuZG9NYW5hZ2VyRW50cnkgZW50cnlXaXRoVW5kb01hbmFnZXJFbnRyeTplbnRy
eV07CisgICAgW3VuZG9NYW5hZ2VyIHJlZ2lzdGVyVW5kb1dpdGhUYXJnZXQ6bV91bmRvVGFyZ2V0
LmdldCgpIHNlbGVjdG9yOihpc1JlZG8gPyBAc2VsZWN0b3IocmVkb0VkaXRpbmc6KSA6IEBzZWxl
Y3Rvcih1bmRvRWRpdGluZzopKSBvYmplY3Q6d2ViRW50cnldOwogICAgIGlmIChhY3Rpb25OYW1l
KQogICAgICAgICBbdW5kb01hbmFnZXIgc2V0QWN0aW9uTmFtZTphY3Rpb25OYW1lXTsKICAgICBt
X2hhdmVVbmRvUmVkb09wZXJhdGlvbnMgPSBZRVM7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKFBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+IGNtZCkKK3Zv
aWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKFBhc3NSZWZQdHI8VW5k
b01hbmFnZXJFbnRyeT4gY21kKQogewogICAgIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG9PclJlZG8o
Y21kLCBmYWxzZSk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckNvbW1hbmRG
b3JSZWRvKFBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+IGNtZCkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpyZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8VW5kb01hbmFnZXJFbnRyeT4gY21k
KQogewogICAgIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG9PclJlZG8oY21kLCB0cnVlKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDI4OTcpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDExLTEyLTE1ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE9ubHkgRWRpdENvbW1hbmRD
b21wb3NpdGlvbiBzaG91bGQgaW1wbGVtZW50IHVuYXBwbHkgYW5kIHJlYXBwbHkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NDkwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRWRpdENvbW1hbmRRdCBpcyB0
byBiZSByZW5hbWVkIHRvIFVuZG9NYW5hZ2VyRW50cnlRdCBpbiBhIGZvbGxvdyB1cCBwYXRjaC4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRDb21tYW5kUXQuY3BwOgorICAgICAgICAo
RWRpdENvbW1hbmRRdDo6RWRpdENvbW1hbmRRdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RWRpdENvbW1hbmRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpyZWdpc3RlckNvbW1hbmRG
b3JVbmRvKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpyZWdpc3RlckNvbW1h
bmRGb3JSZWRvKToKKwogMjAxMS0xMi0xNCAgSmluZyBaaGFvICA8amluZ3poYW9AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIE9wZW5pbmcgdHdvIHBvcHVwIG1lbnVzIGJ5IGRpc3BhdGNoRXZlbnQo
KSBtYWtlcyBwcm9ibGVtcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RWRpdENvbW1hbmRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9FZGl0Q29tbWFuZFF0LmNwcAkocmV2aXNpb24gMTAyODM1KQorKysgU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0Q29tbWFuZFF0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjMsMTQgKzIzLDE0IEBACiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogI2lmbmRlZiBR
VF9OT19VTkRPQ09NTUFORAotRWRpdENvbW1hbmRRdDo6RWRpdENvbW1hbmRRdChXVEY6OlJlZlB0
cjxFZGl0Q29tbWFuZD4gY21kLCBRVW5kb0NvbW1hbmQgKnBhcmVudCkKK0VkaXRDb21tYW5kUXQ6
OkVkaXRDb21tYW5kUXQoV1RGOjpSZWZQdHI8VW5kb01hbmFnZXJFbnRyeT4gY21kLCBRVW5kb0Nv
bW1hbmQgKnBhcmVudCkKICAgICA6IFFVbmRvQ29tbWFuZChwYXJlbnQpCiAgICAgLCBtX2NtZChj
bWQpCiAgICAgLCBtX2ZpcnN0KHRydWUpCiB7CiB9CiAjZWxzZQotRWRpdENvbW1hbmRRdDo6RWRp
dENvbW1hbmRRdChXVEY6OlJlZlB0cjxFZGl0Q29tbWFuZD4gY21kKQorRWRpdENvbW1hbmRRdDo6
RWRpdENvbW1hbmRRdChXVEY6OlJlZlB0cjxVbmRvTWFuYWdlckVudHJ5PiBjbWQpCiAgICAgOiBt
X2NtZChjbWQpCiAgICAgLCBtX2ZpcnN0KHRydWUpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0VkaXRDb21tYW5kUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRDb21tYW5kUXQuaAkocmV2aXNpb24gMTAyODM1KQor
KysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0Q29tbWFuZFF0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwLDcgKzIwLDcgQEAKICNpZm5kZWYgRWRpdENvbW1hbmRRdF9oCiAjZGVm
aW5lIEVkaXRDb21tYW5kUXRfaAogCi0jaW5jbHVkZSA8RWRpdENvbW1hbmQuaD4KKyNpbmNsdWRl
IDxVbmRvTWFuYWdlckVudHJ5Lmg+CiAjaW5jbHVkZSA8UVVuZG9Db21tYW5kPgogI2luY2x1ZGUg
PHFnbG9iYWwuaD4KIApAQCAtMzEsOSArMzEsOSBAQCBjbGFzcyBFZGl0Q29tbWFuZFF0CiB7CiAg
ICAgcHVibGljOgogI2lmbmRlZiBRVF9OT19VTkRPQ09NTUFORAotICAgICAgICBFZGl0Q29tbWFu
ZFF0KFdURjo6UmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiBjbWQsIFFVbmRvQ29tbWFuZCAq
cGFyZW50ID0gMCk7CisgICAgICAgIEVkaXRDb21tYW5kUXQoV1RGOjpSZWZQdHI8V2ViQ29yZTo6
VW5kb01hbmFnZXJFbnRyeT4gY21kLCBRVW5kb0NvbW1hbmQgKnBhcmVudCA9IDApOwogI2Vsc2UK
LSAgICAgICAgRWRpdENvbW1hbmRRdChXVEY6OlJlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4g
Y21kKTsKKyAgICAgICAgRWRpdENvbW1hbmRRdChXVEY6OlJlZlB0cjxXZWJDb3JlOjpVbmRvTWFu
YWdlckVudHJ5PiBjbWQpOwogI2VuZGlmCiAgICAgICAgIH5FZGl0Q29tbWFuZFF0KCk7CiAKQEAg
LTQxLDcgKzQxLDcgQEAgY2xhc3MgRWRpdENvbW1hbmRRdAogICAgICAgICB2b2lkIHVuZG8oKTsK
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5k
PiBtX2NtZDsKKyAgICAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6VW5kb01hbmFnZXJFbnRyeT4g
bV9jbWQ7CiAgICAgICAgIGJvb2wgbV9maXJzdDsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCShyZXZpc2lvbiAx
MDI4MzUpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM3LDE3ICsyMzcsMTcgQEAgYm9vbCBFZGl0b3JDbGll
bnRRdDo6c2VsZWN0V29yZEJlZm9yZU1lbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBF
ZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyhXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6RWRpdENvbW1hbmQ+IGNtZCkKK3ZvaWQgRWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVyQ29t
bWFuZEZvclVuZG8oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9NYW5hZ2VyRW50cnk+IGVu
dHJ5KQogewogI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICBGcmFtZSogZnJhbWUgPSBtX3Bh
Z2UtPmQtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAg
ICBpZiAobV9pblVuZG9SZWRvIHx8IChmcmFtZSAmJiAhZnJhbWUtPmVkaXRvcigpLT5sYXN0RWRp
dENvbW1hbmQoKSAvKiBIQUNLISEgRG9uJ3QgcmVjcmVhdGUgdW5kb3MgKi8pKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9wYWdlLT51bmRvU3RhY2soKS0+cHVzaChuZXcgRWRpdENvbW1hbmRRdChj
bWQpKTsKKyAgICBtX3BhZ2UtPnVuZG9TdGFjaygpLT5wdXNoKG5ldyBFZGl0Q29tbWFuZFF0KGVu
dHJ5KSk7CiAjZW5kaWYgLy8gUVRfTk9fVU5ET1NUQUNLCiB9CiAKLXZvaWQgRWRpdG9yQ2xpZW50
UXQ6OnJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRD
b21tYW5kPikKK3ZvaWQgRWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9NYW5hZ2VyRW50cnk+KQogewogfQogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDI4OTcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0xMi0xNSAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBPbmx5IEVkaXRDb21tYW5kQ29t
cG9zaXRpb24gc2hvdWxkIGltcGxlbWVudCB1bmFwcGx5IGFuZCByZWFwcGx5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQ5MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvclVuZG9Db21tYW5kOjpXZWJFZGl0
b3JVbmRvQ29tbWFuZCk6CisgICAgICAgIChXZWJFZGl0b3JVbmRvQ29tbWFuZDo6ZXhlY3V0ZSk6
CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8pOgorICAg
ICAgICAoV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckNvbW1hbmRGb3JSZWRvKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKwogMjAxMS0xMi0xNCAgSmluZyBa
aGFvICA8amluZ3poYW9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE9wZW5pbmcgdHdvIHBvcHVw
IG1lbnVzIGJ5IGRpc3BhdGNoRXZlbnQoKSBtYWtlcyBwcm9ibGVtcy4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAko
cmV2aXNpb24gMTAyODM1KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1
ZGUgIkRPTUNvcmVDbGFzc2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRWRpdENvbW1hbmQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9I
VE1MSW5wdXRFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KQEAgLTQz
LDYgKzQyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jh
bmdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VbmRvTWFuYWdlckVudHJ5Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Vc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VmlzaWJsZVNlbGVjdGlvbi5oPgogCkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OnRleHREaWRDaGFuZ2VJblRleAogY2xhc3MgV2ViRWRpdG9yVW5kb0NvbW1hbmQgOiBw
dWJsaWMgSVdlYlVuZG9Db21tYW5kCiB7CiBwdWJsaWM6Ci0gICAgV2ViRWRpdG9yVW5kb0NvbW1h
bmQoUGFzc1JlZlB0cjxFZGl0Q29tbWFuZD4gZWRpdENvbW1hbmQsIGJvb2wgaXNVbmRvKTsKKyAg
ICBXZWJFZGl0b3JVbmRvQ29tbWFuZChQYXNzUmVmUHRyPFVuZG9NYW5hZ2VyRW50cnk+LCBib29s
IGlzVW5kbyk7CiAgICAgdm9pZCBleGVjdXRlKCk7CiAKICAgICAvLyBJVW5rbm93bgpAQCAtNDM2
LDEyICs0MzYsMTIgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFVMT05HIG1fcmVmQ291bnQ7
Ci0gICAgUmVmUHRyPEVkaXRDb21tYW5kPiBtX2VkaXRDb21tYW5kOworICAgIFJlZlB0cjxVbmRv
TWFuYWdlckVudHJ5PiBtX2VudHJ5OwogICAgIGJvb2wgbV9pc1VuZG87CiB9OwogCi1XZWJFZGl0
b3JVbmRvQ29tbWFuZDo6V2ViRWRpdG9yVW5kb0NvbW1hbmQoUGFzc1JlZlB0cjxFZGl0Q29tbWFu
ZD4gZWRpdENvbW1hbmQsIGJvb2wgaXNVbmRvKQotICAgIDogbV9lZGl0Q29tbWFuZChlZGl0Q29t
bWFuZCkKK1dlYkVkaXRvclVuZG9Db21tYW5kOjpXZWJFZGl0b3JVbmRvQ29tbWFuZChQYXNzUmVm
UHRyPFVuZG9NYW5hZ2VyRW50cnk+IGVudHJ5LCBib29sIGlzVW5kbykKKyAgICA6IG1fZW50cnko
ZW50cnkpCiAgICAgLCBtX2lzVW5kbyhpc1VuZG8pIAogICAgICwgbV9yZWZDb3VudCgxKQogeyAK
QEAgLTQ1MCw5ICs0NTAsOSBAQCBXZWJFZGl0b3JVbmRvQ29tbWFuZDo6V2ViRWRpdG9yVW5kb0Nv
bW1hCiB2b2lkIFdlYkVkaXRvclVuZG9Db21tYW5kOjpleGVjdXRlKCkKIHsKICAgICBpZiAobV9p
c1VuZG8pCi0gICAgICAgIG1fZWRpdENvbW1hbmQtPnVuYXBwbHkoKTsKKyAgICAgICAgbV9lbnRy
eS0+dW5hcHBseSgpOwogICAgIGVsc2UKLSAgICAgICAgbV9lZGl0Q29tbWFuZC0+cmVhcHBseSgp
OworICAgICAgICBtX2VudHJ5LT5yZWFwcGx5KCk7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViRWRpdG9yVW5kb0NvbW1hbmQ6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2
b2lkKiogcHB2T2JqZWN0KQpAQCAtNTI3LDEyICs1MjcsMTIgQEAgc3RhdGljIFN0cmluZyB1bmRv
TmFtZUZvckVkaXRBY3Rpb24oRWRpdAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oUGFzc1JlZlB0cjxFZGl0Q29t
bWFuZD4gY29tbWFuZCkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckNvbW1hbmRGb3JV
bmRvKFBhc3NSZWZQdHI8VW5kb01hbmFnZXJFbnRyeT4gZW50cnkpCiB7CiAgICAgSVdlYlVJRGVs
ZWdhdGUqIHVpRGVsZWdhdGUgPSAwOwogICAgIGlmIChTVUNDRUVERUQobV93ZWJWaWV3LT51aURl
bGVnYXRlKCZ1aURlbGVnYXRlKSkpIHsKLSAgICAgICAgU3RyaW5nIGFjdGlvbk5hbWUgPSB1bmRv
TmFtZUZvckVkaXRBY3Rpb24oY29tbWFuZC0+ZWRpdGluZ0FjdGlvbigpKTsKLSAgICAgICAgV2Vi
RWRpdG9yVW5kb0NvbW1hbmQqIHVuZG9Db21tYW5kID0gbmV3IFdlYkVkaXRvclVuZG9Db21tYW5k
KGNvbW1hbmQsIHRydWUpOworICAgICAgICBTdHJpbmcgYWN0aW9uTmFtZSA9IHVuZG9OYW1lRm9y
RWRpdEFjdGlvbihlbnRyeS0+ZWRpdGluZ0FjdGlvbigpKTsKKyAgICAgICAgV2ViRWRpdG9yVW5k
b0NvbW1hbmQqIHVuZG9Db21tYW5kID0gbmV3IFdlYkVkaXRvclVuZG9Db21tYW5kKGVudHJ5LCB0
cnVlKTsKICAgICAgICAgaWYgKCF1bmRvQ29tbWFuZCkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgdWlEZWxlZ2F0ZS0+cmVnaXN0ZXJVbmRvV2l0aFRhcmdldChtX3VuZG9UYXJnZXQsIDAs
IHVuZG9Db21tYW5kKTsKQEAgLTU0MywxMSArNTQzLDExIEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpyZWdpc3RlckNvbW1hbmRGb3IKICAgICB9CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpy
ZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+IGNvbW1hbmQpCit2
b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPFVu
ZG9NYW5hZ2VyRW50cnk+IGVudHJ5KQogewogICAgIElXZWJVSURlbGVnYXRlKiB1aURlbGVnYXRl
ID0gMDsKICAgICBpZiAoU1VDQ0VFREVEKG1fd2ViVmlldy0+dWlEZWxlZ2F0ZSgmdWlEZWxlZ2F0
ZSkpKSB7Ci0gICAgICAgIFdlYkVkaXRvclVuZG9Db21tYW5kKiB1bmRvQ29tbWFuZCA9IG5ldyBX
ZWJFZGl0b3JVbmRvQ29tbWFuZChjb21tYW5kLCBmYWxzZSk7CisgICAgICAgIFdlYkVkaXRvclVu
ZG9Db21tYW5kKiB1bmRvQ29tbWFuZCA9IG5ldyBXZWJFZGl0b3JVbmRvQ29tbWFuZChlbnRyeSwg
ZmFsc2UpOwogICAgICAgICBpZiAoIXVuZG9Db21tYW5kKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB1aURlbGVnYXRlLT5yZWdpc3RlclVuZG9XaXRoVGFyZ2V0KG1fdW5kb1RhcmdldCwg
MCwgdW5kb0NvbW1hbmQpOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDEwMjgzNSkKKysrIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03NCw4ICs3NCw4IEBAIHB1YmxpYzoKICAgICBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5h
YmxlZCgpOwogICAgIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCk7CiAK
LSAgICB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oUGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0
Q29tbWFuZD4pOwotICAgIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPFdl
YkNvcmU6OkVkaXRDb21tYW5kPik7CisgICAgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JVbmRvKFBh
c3NSZWZQdHI8V2ViQ29yZTo6VW5kb01hbmFnZXJFbnRyeT4pOworICAgIHZvaWQgcmVnaXN0ZXJD
b21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9NYW5hZ2VyRW50cnk+KTsKICAg
ICB2b2lkIGNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCk7CiAKICAgICBib29sIGNhbkNvcHlDdXQo
V2ViQ29yZTo6RnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbmNlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNl
L0NoYW5nZUxvZwkocmV2aXNpb24gMTAyODk3KQorKysgU291cmNlL1dlYktpdC93aW5jZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMi0xNSAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBPbmx5IEVkaXRDb21tYW5kQ29t
cG9zaXRpb24gc2hvdWxkIGltcGxlbWVudCB1bmFwcGx5IGFuZCByZWFwcGx5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQ5MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50V2luQ0UuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRXaW5DRTo6
cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyk6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudFdp
bkNFOjpyZWdpc3RlckNvbW1hbmRGb3JSZWRvKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRXaW5DRS5oOgorCiAyMDExLTEyLTE0ICBKaW5nIFpoYW8gIDxqaW5nemhhb0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgT3BlbmluZyB0d28gcG9wdXAgbWVudXMgYnkgZGlzcGF0
Y2hFdmVudCgpIG1ha2VzIHByb2JsZW1zLgpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAJKHJldmlzaW9u
IDEwMjgzNSkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50V2luQ0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMSArMjQsMTEgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnRXaW5DRS5oIgogCi0jaW5jbHVkZSAi
RWRpdENvbW1hbmQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZl
bnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5
Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIlVuZG9NYW5hZ2VyRW50cnkuaCIKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTE0NCwxMiArMTQ0LDEy
IEBAIHZvaWQgRWRpdG9yQ2xpZW50V2luQ0U6OmRpZFNldFNlbGVjdGlvblQKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIEVkaXRvckNsaWVudFdpbkNFOjpyZWdpc3RlckNvbW1hbmRG
b3JVbmRvKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4gY29tbWFuZCkKK3Zv
aWQgRWRpdG9yQ2xpZW50V2luQ0U6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OlVuZG9NYW5hZ2VyRW50cnk+KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKLXZvaWQgRWRpdG9yQ2xpZW50V2luQ0U6OnJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiBjb21tYW5kKQordm9pZCBFZGl0b3JD
bGllbnRXaW5DRTo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6VW5kb01hbmFnZXJFbnRyeT4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudFdpbkNFLmgJKHJldmlzaW9uIDEwMjgzNSkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsOCAr
NjUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVi
b2FyZCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lz
dGVyQ29tbWFuZEZvclJlZG8oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPik7
CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6OlVuZG9NYW5hZ2VyRW50cnk+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJD
b21tYW5kRm9yUmVkbyhXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb01hbmFnZXJFbnRyeT4p
OwogICAgIHZpcnR1YWwgdm9pZCBjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpOwogCiAgICAgdmly
dHVhbCBib29sIGNhbkNvcHlDdXQoV2ViQ29yZTo6RnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkg
Y29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119401</attachid>
            <date>2011-12-15 02:19:04 -0800</date>
            <delta_ts>2011-12-16 13:15:39 -0800</delta_ts>
            <desc>Fixed Qt and Win builds</desc>
            <filename>bug-74490-20111215021903.patch</filename>
            <type>text/plain</type>
            <size>103301</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjg5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDExLTEyLTE1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE9ubHkgRWRpdENvbW1hbmRDb21w
b3NpdGlvbiBzaG91bGQgaW1wbGVtZW50IHVuYXBwbHkgYW5kIHJlYXBwbHkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NDkwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIG5ldyBhYnN0cmFj
dCBjbGFzcyBVbmRvTWFuYWdlckVudHJ5IHRvIHJlcGxhY2UgRWRpdENvbW1hbmQgZm9yIEVkaXRv
ckNsaWVudCwgYW5kIG1ha2UgRWRpdENvbW1hbmQKKyAgICAgICAgcHJpdmF0ZSB0byBXZWJDb3Jl
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogR05VbWFrZWZp
bGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjpjcmVhdGUpOiBUYWtlcyBFZGl0QWN0
aW9uIGluc3RlYWQgb2YgYm9vbGVhbiBmb3IgQ3JlYXRlTGlua0NvbW1hbmQuCisgICAgICAgIChX
ZWJDb3JlOjpFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjpFZGl0Q29tbWFuZENvbXBvc2l0aW9uKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjp1bmFwcGx5
KTogTW92ZWQgZnJvbSBFZGl0Q29tbWFuZDsgd2UgZG9uJ3QgaGF2ZSB0byBjYWxsIGlzVG9wTGV2
ZWxDb21tYW5kCisgICAgICAgIGFueW1vcmUgYmVjYXVzZSBFZGl0Q29tbWFuZENvbXBvc2l0aW9u
IGlzIGFsd2F5cyB0b3AtbGV2ZWwuIEluIGZhY3QsIHRoZSBvbmx5IHRoaW5nIHVuYXBwbHkvcmVh
cHBseSBkbworICAgICAgICBpbiBhZGRpdGlvbiB0byB3aGF0IGRvVW5hcHBseS9kb1JlYXBwbHkg
ZG8gZm9yIHN1Yi1sZXZlbCBjb21tYW5kcyBpcyBkaXNhYmxpbmcgYW5kIGVuYWJsaW5nIGRlbGV0
ZSBidXR0b24KKyAgICAgICAgYW5kIGRlZmluaW5nIGFuIGV2ZW50IHF1ZXVlIHNjb3BlLiBIb3dl
dmVyLCB0aGVzZSBjYW4gYmUgZG9uZSBhdCB0b3AtbGV2ZWwgY29tbWFuZCBhbnl3YXksIHNvIHdl
IG5vdyBvbmx5IGNhbGwKKyAgICAgICAgZG9BcHBseSBmb3Igc3ViLWxldmVsIGNvbW1hbmRzLgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6cmVhcHBseSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6c2V0U3RhcnRpbmdT
ZWxlY3Rpb24pOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRDb21tYW5kQ29tcG9zaXRp
b246OnNldEVuZGluZ1NlbGVjdGlvbik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlD
b21tYW5kKTogTW92ZWQgZnJvbSBFZGl0Q29tbWFuZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBv
c2l0ZUVkaXRDb21tYW5kOjphcHBseSk6IE1vdmVkIGZyb20gRWRpdENvbW1hbmQ7IGRvZXNuJ3Qg
Y2FsbCBpc1RvcExldmVsQ29tbWFuZCBmb3IgdGhlIHNhbWUgcmVhc29uLgorICAgICAgICAoV2Vi
Q29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmVuc3VyZUNvbXBvc2l0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjphcHBseUNvbW1hbmRUb0NvbXBvc2l0ZSk6
IENhbGwgZG9BcHBseSBpbnN0ZWFkIG9mIGFwcGx5IGZvciB0aGUgc2FtZSByZWFzb24uCisgICAg
ICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6d2FzQ3JlYXRlTGlua0NvbW1hbmQpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6c3RhcnRpbmdTZWxlY3Rpb24pOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRDb21tYW5kQ29tcG9zaXRpb246OmVuZGluZ1NlbGVj
dGlvbik6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvRWRpdENvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdENvbW1hbmQ6OnNldFN0YXJ0aW5nU2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRDb21tYW5kOjpzZXRFbmRpbmdTZWxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2ltcGxlRWRpdENvbW1hbmQ6OmRvUmVhcHBseSk6IE1vdmVkIGZyb20gRWRpdENvbW1h
bmQuCisgICAgICAgICogZWRpdGluZy9FZGl0Q29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcv
VW5kb01hbmFnZXJFbnRyeS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2Vy
RW50cnk6On5VbmRvTWFuYWdlckVudHJ5KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRz
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUVkaXRvckNsaWVudDo6c2hvdWxkSW5zZXJ0Tm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUVkaXRvckNsaWVudDo6ZGlkU2V0U2VsZWN0aW9u
VHlwZXNGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RWRpdG9yQ2xpZW50
OjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKTogVGFrZXMgVW5kb01hbmFnZXJFbnRyeSBpbnN0ZWFk
IG9mIEVkaXRDb21tYW5kLgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlFZGl0b3JDbGllbnQ6OnJl
Z2lzdGVyQ29tbWFuZEZvclJlZG8pOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVu
dC5oOgorCiAyMDExLTExLTAzICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBBIHNwaW4gYnV0dG9uIGNoYW5nZXMgdGhlIHZhbHVlIGluY29ycmVjdGx5IGlmIGl0
IGlzIGNsaWNrZWQgYWZ0ZXIgdG91Y2ggZXZlbnRzLgpJbmRleDogU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCShyZXZpc2lvbiAxMDI4MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xNTA4LDYgKzE1MDgsNyBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggXAogCVNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9N
YW5hZ2VyRW50cnkuaCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmxpbmtDb21tYW5kLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmxpbmtDb21tYW5kLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJl
dmlzaW9uIDEwMjgzNSkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29w
eSkKQEAgLTE3MjIsNiArMTcyMiw3IEBAIEhFQURFUlMgKz0gXAogICAgIGVkaXRpbmcvU3BsaXRU
ZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50Q29tbWFuZC5oIFwKICAgICBlZGl0aW5nL1RleHRJdGVy
YXRvci5oIFwKICAgICBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuaCBcCisgICAgZWRpdGluZy9VbmRv
TWFuYWdlckVudHJ5LmggXAogICAgIGVkaXRpbmcvVW5saW5rQ29tbWFuZC5oIFwKICAgICBlZGl0
aW5nL1Zpc2libGVQb3NpdGlvbi5oIFwKICAgICBlZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaCBc
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTAyODM1KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE1OCw4ICsxNTgsNiBAQCBf
X1pON1dlYkNvcmUxMHRvRG9jdW1lbnRFTjNKU0M3SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTExQml0
bWFwSW1hZ2VDMUVQN0NHSW1hZ2VQTlNfMTNJbWFnZU9ic2VydmVyRQogX19aTjdXZWJDb3JlMTFD
YWNoZWRGcmFtZTIzY2FjaGVkRnJhbWVQbGF0Zm9ybURhdGFFdgogX19aTjdXZWJDb3JlMTFDYWNo
ZWRGcmFtZTI2c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGFFTjNXVEYxMFBhc3NPd25QdHJJTlNf
MjNDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YUVFRQotX19aTjdXZWJDb3JlMTFFZGl0Q29tbWFuZDdy
ZWFwcGx5RXYKLV9fWk43V2ViQ29yZTExRWRpdENvbW1hbmQ3dW5hcHBseUV2CiBfX1pON1dlYkNv
cmUxMUZpbGVDaG9vc2VyMTBjaG9vc2VGaWxlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3Jl
MTFGaWxlQ2hvb3NlcjExY2hvb3NlRmlsZXNFUktOM1dURjZWZWN0b3JJTlMxXzZTdHJpbmdFTG0w
RUVFCiBfX1pON1dlYkNvcmUxMUZpbGVDaG9vc2VyRDFFdgpJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQko
cmV2aXNpb24gMTAyODM1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTc4LDYgKzI1NzgsNyBAQAogICAgICAgICAgICAgJ2VkaXRpbmcvVGV4dENo
ZWNraW5nSGVscGVyLmgnLAogICAgICAgICAgICAgJ2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCcs
CiAgICAgICAgICAgICAnZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCcsCisgICAgICAgICAgICAn
ZWRpdGluZy9VbmRvTWFuYWdlckVudHJ5LmgnLAogICAgICAgICAgICAgJ2VkaXRpbmcvVW5saW5r
Q29tbWFuZC5jcHAnLAogICAgICAgICAgICAgJ2VkaXRpbmcvVW5saW5rQ29tbWFuZC5oJywKICAg
ICAgICAgICAgICdlZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAnLApJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDEwMjgzNSkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC01MjkyMiw2ICs1MjkyMiwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxlZGl0aW5nXFVuZG9NYW5hZ2VyRW50cnkuaCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZWRpdGluZ1xV
bmxpbmtDb21tYW5kLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxMDI4MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMwMDMsMTQgKzMwMDMsMTQgQEAKIAkJOTMz
MDlEREEwOTlFNjQ5MjAwNTZFNTgxIC8qIEJyZWFrQmxvY2txdW90ZUNvbW1hbmQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMDlEOEIwOTlFNjQ5
MTAwNTZFNTgxIC8qIEJyZWFrQmxvY2txdW90ZUNvbW1hbmQuY3BwICovOyB9OwogCQk5MzMwOURE
QjA5OUU2NDkyMDA1NkU1ODEgLyogQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMDlEOEMwOTlFNjQ5MTAwNTZF
NTgxIC8qIEJyZWFrQmxvY2txdW90ZUNvbW1hbmQuaCAqLzsgfTsKIAkJOTMzMDlEREMwOTlFNjQ5
MjAwNTZFNTgxIC8qIENvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzA5RDhEMDk5RTY0OTEwMDU2RTU4MSAvKiBD
b21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgKi87IH07Ci0JCTkzMzA5REREMDk5RTY0OTIwMDU2RTU4
MSAvKiBDb21wb3NpdGVFZGl0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTMzMDlEOEUwOTlFNjQ5MTAwNTZFNTgxIC8qIENvbXBvc2l0ZUVk
aXRDb21tYW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJOTMzMDlEREQwOTlFNjQ5MjAwNTZFNTgxIC8qIENvbXBvc2l0ZUVkaXRDb21tYW5kLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzMwOUQ4RTA5
OUU2NDkxMDA1NkU1ODEgLyogQ29tcG9zaXRlRWRpdENvbW1hbmQuaCAqLzsgfTsKIAkJOTMzMDlE
REUwOTlFNjQ5MjAwNTZFNTgxIC8qIERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMDlEOEYwOTlFNjQ5
MTAwNTZFNTgxIC8qIERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwICovOyB9OwogCQk5MzMw
OURERjA5OUU2NDkyMDA1NkU1ODEgLyogRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMDlEOTAwOTlFNjQ5
MTAwNTZFNTgxIC8qIERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuaCAqLzsgfTsKIAkJOTMzMDlE
RTAwOTlFNjQ5MjAwNTZFNTgxIC8qIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMDlEOTEwOTlFNjQ5MTAw
NTZFNTgxIC8qIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwICovOyB9OwogCQk5MzMwOURFMTA5
OUU2NDkyMDA1NkU1ODEgLyogRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMDlEOTIwOTlFNjQ5MTAwNTZFNTgx
IC8qIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzMwOURFMjA5OUU2NDkyMDA1NkU1ODEgLyogRWRpdEFj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMz
MDlEOTMwOTlFNjQ5MTAwNTZFNTgxIC8qIEVkaXRBY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzMwOURFMzA5OUU2NDkyMDA1NkU1ODEg
LyogRWRpdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTMzMDlEOTQwOTlFNjQ5MTAwNTZFNTgxIC8qIEVkaXRDb21tYW5kLmNwcCAqLzsg
fTsKLQkJOTMzMDlERTQwOTlFNjQ5MjAwNTZFNTgxIC8qIEVkaXRDb21tYW5kLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzMwOUQ5NTA5OUU2NDkxMDA1
NkU1ODEgLyogRWRpdENvbW1hbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk5MzMwOURFNDA5OUU2NDkyMDA1NkU1ODEgLyogRWRpdENvbW1hbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzA5RDk1
MDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0Q29tbWFuZC5oICovOyB9OwogCQk5MzMwOURFNTA5OUU2
NDkyMDA1NkU1ODEgLyogSFRNTEludGVyY2hhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzA5RDk2MDk5RTY0OTEwMDU2RTU4MSAvKiBIVE1M
SW50ZXJjaGFuZ2UuY3BwICovOyB9OwogCQk5MzMwOURFNjA5OUU2NDkyMDA1NkU1ODEgLyogSFRN
TEludGVyY2hhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzMwOUQ5NzA5OUU2NDkxMDA1NkU1ODEgLyogSFRNTEludGVyY2hhbmdlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTMzMDlERTcwOTlF
NjQ5MjAwNTZFNTgxIC8qIGh0bWxlZGl0aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzA5RDk4MDk5RTY0OTEwMDU2RTU4MSAvKiBodG1sZWRp
dGluZy5jcHAgKi87IH07CkBAIC0zMzY1LDYgKzMzNjUsNyBAQAogCQk5OEVCMUY5NTEzMTNGRTA1
MDBEMEUxRUEgLyogTm90SW1wbGVtZW50ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk4RUIxRjk0MTMxM0ZFMDUwMEQwRTFFQSAvKiBOb3RJbXBsZW1l
bnRlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTlCMEZCMTkxMTQwREI1NzkwMDIyNTg4RiAvKiBIVFRQVmFsaWRhdGlvbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjBGQjE4RjE0MERCNTc5MDAy
MjU4OEYgLyogSFRUUFZhbGlkYXRpb24uY3BwICovOyB9OwogCQk5QjBGQjE5MjE0MERCNTc5MDAy
MjU4OEYgLyogSFRUUFZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDlCMEZCMTkwMTQwREI1NzkwMDIyNTg4RiAvKiBIVFRQVmFsaWRhdGlv
bi5oICovOyB9OworCQk5QjJEOEE3OTE0OTk3Q0NGMDBFQ0VGM0UgLyogVW5kb01hbmFnZXJFbnRy
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyRDhB
NzgxNDk5N0NDRjAwRUNFRjNFIC8qIFVuZG9NYW5hZ2VyRW50cnkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QjMyQ0RBOTEzREY3RkE5MDBGMzRE
MTMgLyogUmVuZGVyZWRQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUIzMkNEQTcxM0RGN0ZBOTAwRjM0RDEzIC8qIFJlbmRlcmVkUG9zaXRp
b24uaCAqLzsgfTsKIAkJOUIzMkNEQUExM0RGN0ZBOTAwRjM0RDEzIC8qIFJlbmRlcmVkUG9zaXRp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIz
MkNEQTgxM0RGN0ZBOTAwRjM0RDEzIC8qIFJlbmRlcmVkUG9zaXRpb24uY3BwICovOyB9OwogCQk5
QjM3NUVEQTE0NDc4QTAxMDBGM0NBRTUgLyogTWljcm9EYXRhSXRlbUxpc3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIzNzVFRDgxNDQ3OEEwMTAw
RjNDQUU1IC8qIE1pY3JvRGF0YUl0ZW1MaXN0LmNwcCAqLzsgfTsKQEAgLTEwNTg5LDYgKzEwNTkw
LDcgQEAKIAkJOThFQjFGOTQxMzEzRkUwNTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdEltcGxlbWVudGVkLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMEZCMThGMTQwREI1NzkwMDIyNTg4RiAvKiBIVFRQVmFs
aWRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVFRQVmFs
aWRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMEZCMTkwMTQwREI1
NzkwMDIyNTg4RiAvKiBIVFRQVmFsaWRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIVFRQVmFsaWRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
QjJEOEE3ODE0OTk3Q0NGMDBFQ0VGM0UgLyogVW5kb01hbmFnZXJFbnRyeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBVbmRvTWFuYWdlckVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTlCMkY3Q0Y3MTQ1NjIxMjAwMDdGOEI1MCAvKiBNaWNyb0RhdGFJdGVt
VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWljcm9EYXRh
SXRlbVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIyRjdDRjgxNDU2
MjEyMDAwN0Y4QjUwIC8qIE1pY3JvRGF0YUl0ZW1WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNaWNyb0RhdGFJdGVtVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOUIzMkNEQTcxM0RGN0ZBOTAwRjM0RDEzIC8qIFJlbmRlcmVkUG9zaXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyZWRQb3NpdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcwNjgsNiArMTcwNzAsNyBAQAogCQkJCTkzMzA5
RENEMDk5RTY0OTEwMDU2RTU4MSAvKiBUZXh0SXRlcmF0b3IuaCAqLywKIAkJCQk5MzMwOURDQTA5
OUU2NDkxMDA1NkU1ODEgLyogVHlwaW5nQ29tbWFuZC5jcHAgKi8sCiAJCQkJOTMzMDlEQ0IwOTlF
NjQ5MTAwNTZFNTgxIC8qIFR5cGluZ0NvbW1hbmQuaCAqLywKKwkJCQk5QjJEOEE3ODE0OTk3Q0NG
MDBFQ0VGM0UgLyogVW5kb01hbmFnZXJFbnRyeS5oICovLAogCQkJCUQwODZGRTk3MDlENTNBQUIw
MDVCQzc0RCAvKiBVbmxpbmtDb21tYW5kLmNwcCAqLywKIAkJCQlEMDg2RkU5NjA5RDUzQUFCMDA1
QkM3NEQgLyogVW5saW5rQ29tbWFuZC5oICovLAogCQkJCTkzMzA5RENFMDk5RTY0OTEwMDU2RTU4
MSAvKiB2aXNpYmxlX3VuaXRzLmNwcCAqLywKQEAgLTI0ODMwLDYgKzI0ODMzLDcgQEAKIAkJCQky
NkMxN0EzRTE0OTFEMkQ0MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY1ODBGQTMxNDk2OTM5MTAwRkI1QkQ4IC8qIFdlYlRpbGVDYWNoZUxheWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjU4MEZBRjE0OTgwMEQ0MDBGQjVCRDggLyogQW5pbWF0aW9uVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5QjJEOEE3OTE0OTk3Q0NGMDBFQ0VGM0UgLyog
VW5kb01hbmFnZXJFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkocmV2aXNpb24gMTAyODM1KQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFwcGVuZE5vZGVDb21tYW5k
LmgiCiAjaW5jbHVkZSAiQXBwbHlTdHlsZUNvbW1hbmQuaCIKKyNpbmNsdWRlICJEZWxldGVCdXR0
b25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5oIgog
I2luY2x1ZGUgIkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgpAQCAtNTIsNiArNTMsNyBAQAogI2luY2x1ZGUgIlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgi
CiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCisjaW5j
bHVkZSAiU2NvcGVkRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIlNldE5vZGVBdHRyaWJ1dGVDb21t
YW5kLmgiCiAjaW5jbHVkZSAiU3BsaXRFbGVtZW50Q29tbWFuZC5oIgogI2luY2x1ZGUgIlNwbGl0
VGV4dE5vZGVDb21tYW5kLmgiCkBAIC03MSwzNiArNzMsNjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogUGFzc1JlZlB0cjxFZGl0Q29tbWFuZENv
bXBvc2l0aW9uPiBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3Vt
ZW50LAotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHN0YXJ0aW5nU2VsZWN0aW9uLCBjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiBlbmRpbmdTZWxlY3Rpb24sIGJvb2wgd2FzQ3JlYXRlTGlua0Nv
bW1hbmQpCisgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc3RhcnRpbmdTZWxlY3Rpb24sIGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIGVuZGluZ1NlbGVjdGlvbiwgRWRpdEFjdGlvbiBlZGl0QWN0
aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgRWRpdENvbW1hbmRDb21wb3NpdGlvbihk
b2N1bWVudCwgc3RhcnRpbmdTZWxlY3Rpb24sIGVuZGluZ1NlbGVjdGlvbiwgd2FzQ3JlYXRlTGlu
a0NvbW1hbmQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVkaXRDb21tYW5kQ29tcG9zaXRp
b24oZG9jdW1lbnQsIHN0YXJ0aW5nU2VsZWN0aW9uLCBlbmRpbmdTZWxlY3Rpb24sIGVkaXRBY3Rp
b24pKTsKIH0KIAotRWRpdENvbW1hbmRDb21wb3NpdGlvbjo6RWRpdENvbW1hbmRDb21wb3NpdGlv
bihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHN0YXJ0aW5nU2Vs
ZWN0aW9uLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBlbmRpbmdTZWxlY3Rpb24sIGJvb2wgd2Fz
Q3JlYXRlTGlua0NvbW1hbmQpCi0gICAgOiBFZGl0Q29tbWFuZChkb2N1bWVudCwgc3RhcnRpbmdT
ZWxlY3Rpb24sIGVuZGluZ1NlbGVjdGlvbikKK0VkaXRDb21tYW5kQ29tcG9zaXRpb246OkVkaXRD
b21tYW5kQ29tcG9zaXRpb24oRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBzdGFydGluZ1NlbGVjdGlvbiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZW5kaW5nU2Vs
ZWN0aW9uLCBFZGl0QWN0aW9uIGVkaXRBY3Rpb24pCisgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50
KQorICAgICwgbV9zdGFydGluZ1NlbGVjdGlvbihzdGFydGluZ1NlbGVjdGlvbikKKyAgICAsIG1f
ZW5kaW5nU2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbikKICAgICAsIG1fc3RhcnRpbmdSb290RWRp
dGFibGVFbGVtZW50KHN0YXJ0aW5nU2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkKICAg
ICAsIG1fZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudChlbmRpbmdTZWxlY3Rpb24ucm9vdEVkaXRh
YmxlRWxlbWVudCgpKQotICAgICwgbV93YXNDcmVhdGVMaW5rQ29tbWFuZCh3YXNDcmVhdGVMaW5r
Q29tbWFuZCkKKyAgICAsIG1fZWRpdEFjdGlvbihlZGl0QWN0aW9uKQogewogfQogCi12b2lkIEVk
aXRDb21tYW5kQ29tcG9zaXRpb246OmRvQXBwbHkoKQordm9pZCBFZGl0Q29tbWFuZENvbXBvc2l0
aW9uOjp1bmFwcGx5KCkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KKyAgICBBU1NF
UlQobV9kb2N1bWVudCk7CisgICAgRnJhbWUqIGZyYW1lID0gbV9kb2N1bWVudC0+ZnJhbWUoKTsK
KyAgICBBU1NFUlQoZnJhbWUpOwogCi12b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRpb246OmRvVW5h
cHBseSgpCi17CisgICAgLy8gQ2hhbmdlcyB0byB0aGUgZG9jdW1lbnQgbWF5IGhhdmUgYmVlbiBt
YWRlIHNpbmNlIHRoZSBsYXN0IGVkaXRpbmcgb3BlcmF0aW9uIHRoYXQgcmVxdWlyZSBhIGxheW91
dCwgYXMgaW4gPHJkYXI6Ly9wcm9ibGVtLzU2NTg2MDM+LgorICAgIC8vIExvdyBsZXZlbCBvcGVy
YXRpb25zLCBsaWtlIFJlbW92ZU5vZGVDb21tYW5kLCBkb24ndCByZXF1aXJlIGEgbGF5b3V0IGJl
Y2F1c2UgdGhlIGhpZ2ggbGV2ZWwgb3BlcmF0aW9ucyB0aGF0IHVzZSB0aGVtIHBlcmZvcm0gb25l
CisgICAgLy8gaWYgb25lIGlzIG5lY2Vzc2FyeSAobGlrZSBmb3IgdGhlIGNyZWF0aW9uIG9mIFZp
c2libGVQb3NpdGlvbnMpLgorICAgIG1fZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cygpOworICAgIAorICAgIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIqIGRlbGV0
ZUJ1dHRvbkNvbnRyb2xsZXIgPSBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXIoKTsKKyAgICBkZWxldGVCdXR0b25Db250cm9sbGVyLT5kaXNhYmxlKCk7CiAgICAgc2l6ZV90
IHNpemUgPSBtX2NvbW1hbmRzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gc2l6ZTsgaSAh
PSAwOyAtLWkpCi0gICAgICAgIG1fY29tbWFuZHNbaSAtIDFdLT51bmFwcGx5KCk7CisgICAgICAg
IG1fY29tbWFuZHNbaSAtIDFdLT5kb1VuYXBwbHkoKTsKKyAgICBkZWxldGVCdXR0b25Db250cm9s
bGVyLT5lbmFibGUoKTsKKyAgICAKKyAgICBmcmFtZS0+ZWRpdG9yKCktPnVuYXBwbGllZEVkaXRp
bmcodGhpcyk7CiB9CiAKLXZvaWQgRWRpdENvbW1hbmRDb21wb3NpdGlvbjo6ZG9SZWFwcGx5KCkK
K3ZvaWQgRWRpdENvbW1hbmRDb21wb3NpdGlvbjo6cmVhcHBseSgpCiB7CisgICAgQVNTRVJUKG1f
ZG9jdW1lbnQpOworICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCk7CisgICAg
QVNTRVJUKGZyYW1lKTsKKworICAgIC8vIENoYW5nZXMgdG8gdGhlIGRvY3VtZW50IG1heSBoYXZl
IGJlZW4gbWFkZSBzaW5jZSB0aGUgbGFzdCBlZGl0aW5nIG9wZXJhdGlvbiB0aGF0IHJlcXVpcmUg
YSBsYXlvdXQsIGFzIGluIDxyZGFyOi8vcHJvYmxlbS81NjU4NjAzPi4KKyAgICAvLyBMb3cgbGV2
ZWwgb3BlcmF0aW9ucywgbGlrZSBSZW1vdmVOb2RlQ29tbWFuZCwgZG9uJ3QgcmVxdWlyZSBhIGxh
eW91dCBiZWNhdXNlIHRoZSBoaWdoIGxldmVsIG9wZXJhdGlvbnMgdGhhdCB1c2UgdGhlbSBwZXJm
b3JtIG9uZQorICAgIC8vIGlmIG9uZSBpcyBuZWNlc3NhcnkgKGxpa2UgZm9yIHRoZSBjcmVhdGlv
biBvZiBWaXNpYmxlUG9zaXRpb25zKS4KKyAgICBtX2RvY3VtZW50LT51cGRhdGVMYXlvdXRJZ25v
cmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKyAgICAKKyAgICBEZWxldGVCdXR0b25Db250cm9sbGVy
KiBkZWxldGVCdXR0b25Db250cm9sbGVyID0gZnJhbWUtPmVkaXRvcigpLT5kZWxldGVCdXR0b25D
b250cm9sbGVyKCk7CisgICAgZGVsZXRlQnV0dG9uQ29udHJvbGxlci0+ZGlzYWJsZSgpOwogICAg
IHNpemVfdCBzaXplID0gbV9jb21tYW5kcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgIT0gc2l6ZTsgKytpKQotICAgICAgICBtX2NvbW1hbmRzW2ldLT5yZWFwcGx5KCk7CisgICAg
ICAgIG1fY29tbWFuZHNbaV0tPmRvUmVhcHBseSgpOworICAgIGRlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXItPmVuYWJsZSgpOworICAgIAorICAgIGZyYW1lLT5lZGl0b3IoKS0+cmVhcHBsaWVkRWRpdGlu
Zyh0aGlzKTsKIH0KIAogdm9pZCBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjphcHBlbmQoU2ltcGxl
RWRpdENvbW1hbmQqIGNvbW1hbmQpCkBAIC0xMTAsMTMgKzEzNywxMyBAQCB2b2lkIEVkaXRDb21t
YW5kQ29tcG9zaXRpb246OmFwcGVuZChTaW1wCiAKIHZvaWQgRWRpdENvbW1hbmRDb21wb3NpdGlv
bjo6c2V0U3RhcnRpbmdTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9u
KQogewotICAgIEVkaXRDb21tYW5kOjpzZXRTdGFydGluZ1NlbGVjdGlvbihzZWxlY3Rpb24pOwor
ICAgIG1fc3RhcnRpbmdTZWxlY3Rpb24gPSBzZWxlY3Rpb247CiAgICAgbV9zdGFydGluZ1Jvb3RF
ZGl0YWJsZUVsZW1lbnQgPSBzZWxlY3Rpb24ucm9vdEVkaXRhYmxlRWxlbWVudCgpOwogfQogCiB2
b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRpb246OnNldEVuZGluZ1NlbGVjdGlvbihjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiB7Ci0gICAgRWRpdENvbW1hbmQ6OnNldEVuZGluZ1Nl
bGVjdGlvbihzZWxlY3Rpb24pOworICAgIG1fZW5kaW5nU2VsZWN0aW9uID0gc2VsZWN0aW9uOwog
ICAgIG1fZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudCA9IHNlbGVjdGlvbi5yb290RWRpdGFibGVF
bGVtZW50KCk7CiB9CiAKQEAgLTEyOSw2ICsxNTYsMTEgQEAgdm9pZCBFZGl0Q29tbWFuZENvbXBv
c2l0aW9uOjpnZXROb2Rlc0luQwogfQogI2VuZGlmCiAKK3ZvaWQgYXBwbHlDb21tYW5kKFBhc3NS
ZWZQdHI8Q29tcG9zaXRlRWRpdENvbW1hbmQ+IGNvbW1hbmQpCit7CisgICAgY29tbWFuZC0+YXBw
bHkoKTsKK30KKwogQ29tcG9zaXRlRWRpdENvbW1hbmQ6OkNvbXBvc2l0ZUVkaXRDb21tYW5kKERv
Y3VtZW50ICpkb2N1bWVudCkKICAgICA6IEVkaXRDb21tYW5kKGRvY3VtZW50KQogewpAQCAtMTM5
LDE0ICsxNzEsNDUgQEAgQ29tcG9zaXRlRWRpdENvbW1hbmQ6On5Db21wb3NpdGVFZGl0Q29tbQog
ICAgIEFTU0VSVChpc1RvcExldmVsQ29tbWFuZCgpIHx8ICFtX2NvbXBvc2l0aW9uKTsKIH0KIAot
dm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6ZG9VbmFwcGx5KCkKK3ZvaWQgQ29tcG9zaXRlRWRp
dENvbW1hbmQ6OmFwcGx5KCkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KKyAgICBp
ZiAoIWVuZGluZ1NlbGVjdGlvbigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkpIHsKKyAgICAg
ICAgc3dpdGNoIChlZGl0aW5nQWN0aW9uKCkpIHsKKyAgICAgICAgY2FzZSBFZGl0QWN0aW9uVHlw
aW5nOgorICAgICAgICBjYXNlIEVkaXRBY3Rpb25QYXN0ZToKKyAgICAgICAgY2FzZSBFZGl0QWN0
aW9uRHJhZzoKKyAgICAgICAgY2FzZSBFZGl0QWN0aW9uU2V0V3JpdGluZ0RpcmVjdGlvbjoKKyAg
ICAgICAgY2FzZSBFZGl0QWN0aW9uQ3V0OgorICAgICAgICBjYXNlIEVkaXRBY3Rpb25VbnNwZWNp
ZmllZDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICB9CisgICAgZW5zdXJlQ29tcG9zaXRpb24oKTsKIAotdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFu
ZDo6ZG9SZWFwcGx5KCkKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAvLyBDaGFu
Z2VzIHRvIHRoZSBkb2N1bWVudCBtYXkgaGF2ZSBiZWVuIG1hZGUgc2luY2UgdGhlIGxhc3QgZWRp
dGluZyBvcGVyYXRpb24gdGhhdCByZXF1aXJlIGEgbGF5b3V0LCBhcyBpbiA8cmRhcjovL3Byb2Js
ZW0vNTY1ODYwMz4uCisgICAgLy8gTG93IGxldmVsIG9wZXJhdGlvbnMsIGxpa2UgUmVtb3ZlTm9k
ZUNvbW1hbmQsIGRvbid0IHJlcXVpcmUgYSBsYXlvdXQgYmVjYXVzZSB0aGUgaGlnaCBsZXZlbCBv
cGVyYXRpb25zIHRoYXQgdXNlIHRoZW0gcGVyZm9ybSBvbmUKKyAgICAvLyBpZiBvbmUgaXMgbmVj
ZXNzYXJ5IChsaWtlIGZvciB0aGUgY3JlYXRpb24gb2YgVmlzaWJsZVBvc2l0aW9ucykuCisgICAg
QVNTRVJUKGRvY3VtZW50KCkpOworICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBl
bmRpbmdTdHlsZXNoZWV0cygpOworCisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJh
bWUoKTsKKyAgICBBU1NFUlQoZnJhbWUpOworICAgIHsKKyAgICAgICAgRXZlbnRRdWV1ZVNjb3Bl
IHNjb3BlOworICAgICAgICBEZWxldGVCdXR0b25Db250cm9sbGVyKiBkZWxldGVCdXR0b25Db250
cm9sbGVyID0gZnJhbWUtPmVkaXRvcigpLT5kZWxldGVCdXR0b25Db250cm9sbGVyKCk7CisgICAg
ICAgIGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXItPmRpc2FibGUoKTsKKyAgICAgICAgZG9BcHBseSgp
OworICAgICAgICBkZWxldGVCdXR0b25Db250cm9sbGVyLT5lbmFibGUoKTsKKyAgICB9CisKKyAg
ICAvLyBPbmx5IG5lZWQgdG8gY2FsbCBhcHBsaWVkRWRpdGluZyBmb3IgdG9wLWxldmVsIGNvbW1h
bmRzLAorICAgIC8vIGFuZCBUeXBpbmdDb21tYW5kcyBkbyBpdCBvbiB0aGVpciBvd24gKHNlZSBU
eXBpbmdDb21tYW5kOjp0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQpLgorICAgIGlmICghaXNUeXBp
bmdDb21tYW5kKCkpCisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbGllZEVkaXRpbmcodGhp
cyk7CisgICAgc2V0U2hvdWxkUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3IoZmFsc2UpOwog
fQogCiBFZGl0Q29tbWFuZENvbXBvc2l0aW9uKiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6ZW5zdXJl
Q29tcG9zaXRpb24oKQpAQCAtMTU1LDcgKzIxOCw3IEBAIEVkaXRDb21tYW5kQ29tcG9zaXRpb24q
IENvbXBvc2l0ZUVkaXRDb20KICAgICB3aGlsZSAoY29tbWFuZCAmJiBjb21tYW5kLT5wYXJlbnQo
KSkKICAgICAgICAgY29tbWFuZCA9IGNvbW1hbmQtPnBhcmVudCgpOwogICAgIGlmICghY29tbWFu
ZC0+bV9jb21wb3NpdGlvbikKLSAgICAgICAgY29tbWFuZC0+bV9jb21wb3NpdGlvbiA9IEVkaXRD
b21tYW5kQ29tcG9zaXRpb246OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydGluZ1NlbGVjdGlvbigp
LCBlbmRpbmdTZWxlY3Rpb24oKSwgaXNDcmVhdGVMaW5rQ29tbWFuZCgpKTsKKyAgICAgICAgY29t
bWFuZC0+bV9jb21wb3NpdGlvbiA9IEVkaXRDb21tYW5kQ29tcG9zaXRpb246OmNyZWF0ZShkb2N1
bWVudCgpLCBzdGFydGluZ1NlbGVjdGlvbigpLCBlbmRpbmdTZWxlY3Rpb24oKSwgZWRpdGluZ0Fj
dGlvbigpKTsKICAgICByZXR1cm4gY29tbWFuZC0+bV9jb21wb3NpdGlvbi5nZXQoKTsKIH0KIApA
QCAtMTkwLDcgKzI1Myw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmFwcGx5Q29tbWFu
ZFQKIHsKICAgICBSZWZQdHI8RWRpdENvbW1hbmQ+IGNvbW1hbmQgPSBwcnBDb21tYW5kOwogICAg
IGNvbW1hbmQtPnNldFBhcmVudCh0aGlzKTsKLSAgICBjb21tYW5kLT5hcHBseSgpOworICAgIGNv
bW1hbmQtPmRvQXBwbHkoKTsKICAgICBpZiAoY29tbWFuZC0+aXNTaW1wbGVFZGl0Q29tbWFuZCgp
KSB7CiAgICAgICAgIGNvbW1hbmQtPnNldFBhcmVudCgwKTsKICAgICAgICAgZW5zdXJlQ29tcG9z
aXRpb24oKS0+YXBwZW5kKHRvU2ltcGxlRWRpdENvbW1hbmQoY29tbWFuZC5nZXQoKSkpOwpAQCAt
MTk4LDIwICsyNjEsMTUgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwbHlDb21tYW5k
VAogICAgIG1fY29tbWFuZHMuYXBwZW5kKGNvbW1hbmQucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBD
b21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwbHlDb21tYW5kVG9Db21wb3NpdGUoUGFzc1JlZlB0cjxD
b21wb3NpdGVFZGl0Q29tbWFuZD4gcHJwQ29tbWFuZCwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
c2VsZWN0aW9uKQordm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwbHlDb21tYW5kVG9Db21w
b3NpdGUoUGFzc1JlZlB0cjxDb21wb3NpdGVFZGl0Q29tbWFuZD4gY29tbWFuZCwgY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogewotICAgIFJlZlB0cjxDb21wb3NpdGVFZGl0Q29t
bWFuZD4gY29tbWFuZCA9IHBycENvbW1hbmQ7CiAgICAgY29tbWFuZC0+c2V0UGFyZW50KHRoaXMp
OwogICAgIGlmIChzZWxlY3Rpb24gIT0gY29tbWFuZC0+ZW5kaW5nU2VsZWN0aW9uKCkpIHsKICAg
ICAgICAgY29tbWFuZC0+c2V0U3RhcnRpbmdTZWxlY3Rpb24oc2VsZWN0aW9uKTsKICAgICAgICAg
Y29tbWFuZC0+c2V0RW5kaW5nU2VsZWN0aW9uKHNlbGVjdGlvbik7CiAgICAgfQotICAgIGNvbW1h
bmQtPmFwcGx5KCk7Ci0gICAgaWYgKGNvbW1hbmQtPmlzU2ltcGxlRWRpdENvbW1hbmQoKSkgewot
ICAgICAgICBjb21tYW5kLT5zZXRQYXJlbnQoMCk7Ci0gICAgICAgIGVuc3VyZUNvbXBvc2l0aW9u
KCktPmFwcGVuZCh0b1NpbXBsZUVkaXRDb21tYW5kKGNvbW1hbmQuZ2V0KCkpKTsKLSAgICB9Ci0g
ICAgbV9jb21tYW5kcy5hcHBlbmQoY29tbWFuZC5yZWxlYXNlKCkpOworICAgIGNvbW1hbmQtPmRv
QXBwbHkoKTsKKyAgICBtX2NvbW1hbmRzLmFwcGVuZChjb21tYW5kKTsKIH0KIAogdm9pZCBDb21w
b3NpdGVFZGl0Q29tbWFuZDo6YXBwbHlTdHlsZShjb25zdCBFZGl0aW5nU3R5bGUqIHN0eWxlLCBF
ZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Nv
bXBvc2l0ZUVkaXRDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCShyZXZpc2lvbiAxMDI4MzUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkVkaXRDb21tYW5kLmgiCiAjaW5jbHVkZSAiQ1NTUHJv
cGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIlVuZG9NYW5hZ2VyRW50cnkuaCIKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDE2ICszOCwyMCBAQCBj
bGFzcyBIVE1MRWxlbWVudDsKIGNsYXNzIFN0eWxlZEVsZW1lbnQ7CiBjbGFzcyBUZXh0OwogCi1j
bGFzcyBFZGl0Q29tbWFuZENvbXBvc2l0aW9uIDogcHVibGljIEVkaXRDb21tYW5kIHsKK2NsYXNz
IEVkaXRDb21tYW5kQ29tcG9zaXRpb24gOiBwdWJsaWMgVW5kb01hbmFnZXJFbnRyeSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RWRpdENvbW1hbmRDb21wb3NpdGlvbj4gY3JlYXRl
KERvY3VtZW50KiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mLCBib29sIHdhc0NyZWF0ZUxpbmtDb21tYW5kKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxF
ZGl0Q29tbWFuZENvbXBvc2l0aW9uPiBjcmVhdGUoRG9jdW1lbnQqLCBjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIEVkaXRBY3Rpb24pOwogCi0gICAgdmly
dHVhbCB2b2lkIGRvQXBwbHkoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZG9VbmFwcGx5
KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRvUmVhcHBseSgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCB1bmFwcGx5KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlYXBw
bHkoKSBPVkVSUklERTsKKyAgICBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBtX2VkaXRBY3Rpb247IH0KICAgICB2b2lkIGFwcGVuZChTaW1wbGVFZGl0
Q29tbWFuZCopOwotICAgIGJvb2wgd2FzQ3JlYXRlTGlua0NvbW1hbmQoKSBjb25zdCB7IHJldHVy
biBtX3dhc0NyZWF0ZUxpbmtDb21tYW5kOyB9CisgICAgYm9vbCB3YXNDcmVhdGVMaW5rQ29tbWFu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZWRpdEFjdGlvbiA9PSBFZGl0QWN0aW9uQ3JlYXRlTGluazsg
fQogCisgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc3RhcnRpbmdTZWxlY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX3N0YXJ0aW5nU2VsZWN0aW9uOyB9CisgICAgY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYgZW5kaW5nU2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRpbmdTZWxlY3Rpb247
IH0KKyAgICB2b2lkIHNldFN0YXJ0aW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
KTsKKyAgICB2b2lkIHNldEVuZGluZ1NlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7
CiAgICAgRWxlbWVudCogc3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQuZ2V0KCk7IH0KICAgICBFbGVtZW50KiBl
bmRpbmdSb290RWRpdGFibGVFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbmRpbmdSb290RWRp
dGFibGVFbGVtZW50LmdldCgpOyB9CiAKQEAgLTU1LDIxICs2MCwyMiBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogcHJpdmF0ZToKLSAgICBFZGl0Q29tbWFuZENvbXBvc2l0aW9uKERvY3VtZW50KiwgY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgc3RhcnRpbmdTZWxlY3Rpb24sIGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mIGVuZGluZ1NlbGVjdGlvbiwgYm9vbCB3YXNDcmVhdGVMaW5rQ29tbWFuZCk7Ci0gICAg
dmlydHVhbCBib29sIGlzRWRpdENvbW1hbmRDb21wb3NpdGlvbigpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhcnRpbmdTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRFbmRp
bmdTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIE9WRVJSSURFOworICAgIEVkaXRD
b21tYW5kQ29tcG9zaXRpb24oRG9jdW1lbnQqLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzdGFy
dGluZ1NlbGVjdGlvbiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZW5kaW5nU2VsZWN0aW9uLCBF
ZGl0QWN0aW9uKTsKIAorICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKKyAgICBWaXNp
YmxlU2VsZWN0aW9uIG1fc3RhcnRpbmdTZWxlY3Rpb247CisgICAgVmlzaWJsZVNlbGVjdGlvbiBt
X2VuZGluZ1NlbGVjdGlvbjsKICAgICBWZWN0b3I8UmVmUHRyPFNpbXBsZUVkaXRDb21tYW5kPiA+
IG1fY29tbWFuZHM7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1fc3RhcnRpbmdSb290RWRpdGFibGVF
bGVtZW50OwogICAgIFJlZlB0cjxFbGVtZW50PiBtX2VuZGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQ7
Ci0gICAgYm9vbCBtX3dhc0NyZWF0ZUxpbmtDb21tYW5kOworICAgIEVkaXRBY3Rpb24gbV9lZGl0
QWN0aW9uOwogfTsKIAogY2xhc3MgQ29tcG9zaXRlRWRpdENvbW1hbmQgOiBwdWJsaWMgRWRpdENv
bW1hbmQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNvbXBvc2l0ZUVkaXRDb21tYW5kKCk7CiAK
KyAgICB2b2lkIGFwcGx5KCk7CiAgICAgYm9vbCBpc0ZpcnN0Q29tbWFuZChFZGl0Q29tbWFuZCog
Y29tbWFuZCkgeyByZXR1cm4gIW1fY29tbWFuZHMuaXNFbXB0eSgpICYmIG1fY29tbWFuZHMuZmly
c3QoKSA9PSBjb21tYW5kOyB9CiAgICAgRWRpdENvbW1hbmRDb21wb3NpdGlvbiogY29tcG9zaXRp
b24oKSB7IHJldHVybiBtX2NvbXBvc2l0aW9uLmdldCgpOyB9CiAgICAgRWRpdENvbW1hbmRDb21w
b3NpdGlvbiogZW5zdXJlQ29tcG9zaXRpb24oKTsKQEAgLTE2MCwyMCArMTY2LDEyIEBAIHByb3Rl
Y3RlZDoKICAgICBWZWN0b3I8UmVmUHRyPEVkaXRDb21tYW5kPiA+IG1fY29tbWFuZHM7CiAKIHBy
aXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGRvVW5hcHBseSgpOwotICAgIHZpcnR1YWwgdm9pZCBk
b1JlYXBwbHkoKTsKLQogICAgIGJvb2wgaXNDb21wb3NpdGVFZGl0Q29tbWFuZCgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFJlZlB0cjxFZGl0Q29tbWFuZENvbXBvc2l0
aW9uPiBtX2NvbXBvc2l0aW9uOwogfTsKLQotaW5saW5lIEVkaXRDb21tYW5kQ29tcG9zaXRpb24q
IHRvRWRpdENvbW1hbmRDb21wb3NpdGlvbihFZGl0Q29tbWFuZCogY29tbWFuZCkKLXsKLSAgICBB
U1NFUlQoY29tbWFuZCk7Ci0gICAgQVNTRVJUKGNvbW1hbmQtPmlzRWRpdENvbW1hbmRDb21wb3Np
dGlvbigpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWRpdENvbW1hbmRDb21wb3NpdGlvbio+
KGNvbW1hbmQpOwotfQorICAgIAordm9pZCBhcHBseUNvbW1hbmQoUGFzc1JlZlB0cjxDb21wb3Np
dGVFZGl0Q29tbWFuZD4pOwogCiBpbmxpbmUgQ29tcG9zaXRlRWRpdENvbW1hbmQqIHRvQ29tcG9z
aXRlRWRpdENvbW1hbmQoRWRpdENvbW1hbmQqIGNvbW1hbmQpCiB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcAkocmV2aXNpb24gMTAyODM1KQorKysgU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0
LDYgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJGcmFtZVNlbGVjdGlvbi5oIgotI2luY2x1ZGUgIlNjb3BlZEV2ZW50UXVldWUuaCIKICNp
bmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgogCkBA
IC02NCwxMDkgKzYzLDYgQEAgRWRpdENvbW1hbmQ6On5FZGl0Q29tbWFuZCgpCiB7CiB9CiAKLXZv
aWQgRWRpdENvbW1hbmQ6OmFwcGx5KCkKLXsKLSAgICBBU1NFUlQobV9kb2N1bWVudCk7Ci0gICAg
QVNTRVJUKG1fZG9jdW1lbnQtPmZyYW1lKCkpOwotIAotICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9j
dW1lbnQtPmZyYW1lKCk7Ci0gICAgCi0gICAgaWYgKGlzVG9wTGV2ZWxDb21tYW5kKCkpIHsKLSAg
ICAgICAgQVNTRVJUKGlzQ29tcG9zaXRlRWRpdENvbW1hbmQoKSk7Ci0gICAgICAgIGlmICghZW5k
aW5nU2VsZWN0aW9uKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkgewotICAgICAgICAgICAg
c3dpdGNoIChlZGl0aW5nQWN0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIEVkaXRBY3Rp
b25UeXBpbmc6Ci0gICAgICAgICAgICAgICAgY2FzZSBFZGl0QWN0aW9uUGFzdGU6Ci0gICAgICAg
ICAgICAgICAgY2FzZSBFZGl0QWN0aW9uRHJhZzoKLSAgICAgICAgICAgICAgICBjYXNlIEVkaXRB
Y3Rpb25TZXRXcml0aW5nRGlyZWN0aW9uOgotICAgICAgICAgICAgICAgIGNhc2UgRWRpdEFjdGlv
bkN1dDoKLSAgICAgICAgICAgICAgICBjYXNlIEVkaXRBY3Rpb25VbnNwZWNpZmllZDoKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICB0b0NvbXBvc2l0ZUVkaXRD
b21tYW5kKHRoaXMpLT5lbnN1cmVDb21wb3NpdGlvbigpOwotICAgIH0KLSAgICAKLSAgICAvLyBD
aGFuZ2VzIHRvIHRoZSBkb2N1bWVudCBtYXkgaGF2ZSBiZWVuIG1hZGUgc2luY2UgdGhlIGxhc3Qg
ZWRpdGluZyBvcGVyYXRpb24gdGhhdCAKLSAgICAvLyByZXF1aXJlIGEgbGF5b3V0LCBhcyBpbiA8
cmRhcjovL3Byb2JsZW0vNTY1ODYwMz4uICBMb3cgbGV2ZWwgb3BlcmF0aW9ucywgbGlrZSAKLSAg
ICAvLyBSZW1vdmVOb2RlQ29tbWFuZCwgZG9uJ3QgcmVxdWlyZSBhIGxheW91dCBiZWNhdXNlIHRo
ZSBoaWdoIGxldmVsIG9wZXJhdGlvbnMgdGhhdCAKLSAgICAvLyB1c2UgdGhlbSBwZXJmb3JtIG9u
ZSBpZiBvbmUgaXMgbmVjZXNzYXJ5IChsaWtlIGZvciB0aGUgY3JlYXRpb24gb2YgVmlzaWJsZVBv
c2l0aW9ucykuCi0gICAgaWYgKGlzVG9wTGV2ZWxDb21tYW5kKCkpCi0gICAgICAgIGRvY3VtZW50
KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwotCi0gICAgewotICAg
ICAgICBFdmVudFF1ZXVlU2NvcGUgc2NvcGU7Ci0gICAgICAgIERlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXIqIGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIgPSBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZUJ1dHRv
bkNvbnRyb2xsZXIoKTsKLSAgICAgICAgZGVsZXRlQnV0dG9uQ29udHJvbGxlci0+ZGlzYWJsZSgp
OwotICAgICAgICBkb0FwcGx5KCk7Ci0gICAgICAgIGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXItPmVu
YWJsZSgpOwotICAgIH0KLQotICAgIGlmIChpc1RvcExldmVsQ29tbWFuZCgpKSB7Ci0gICAgICAg
IEFTU0VSVChpc0NvbXBvc2l0ZUVkaXRDb21tYW5kKCkpOwotICAgICAgICBDb21wb3NpdGVFZGl0
Q29tbWFuZCogY29tbWFuZCA9IHRvQ29tcG9zaXRlRWRpdENvbW1hbmQodGhpcyk7Ci0gICAgICAg
IC8vIE9ubHkgbmVlZCB0byBjYWxsIGFwcGxpZWRFZGl0aW5nIGZvciB0b3AtbGV2ZWwgY29tbWFu
ZHMsIGFuZCBUeXBpbmdDb21tYW5kcyBkbyBpdCBvbiB0aGVpcgotICAgICAgICAvLyBvd24gKHNl
ZSBUeXBpbmdDb21tYW5kOjp0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQpLgotICAgICAgICBpZiAo
IWNvbW1hbmQtPmlzVHlwaW5nQ29tbWFuZCgpKQotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigp
LT5hcHBsaWVkRWRpdGluZyhjb21tYW5kKTsKLSAgICAgICAgY29tbWFuZC0+c2V0U2hvdWxkUmV0
YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3IoZmFsc2UpOwotICAgIH0KLX0KLQotdm9pZCBFZGl0
Q29tbWFuZDo6dW5hcHBseSgpCi17Ci0gICAgQVNTRVJUKG1fZG9jdW1lbnQpOwotICAgIEFTU0VS
VChtX2RvY3VtZW50LT5mcmFtZSgpKTsKLSAKLSAgICBGcmFtZSogZnJhbWUgPSBtX2RvY3VtZW50
LT5mcmFtZSgpOwotICAgIAotICAgIC8vIENoYW5nZXMgdG8gdGhlIGRvY3VtZW50IG1heSBoYXZl
IGJlZW4gbWFkZSBzaW5jZSB0aGUgbGFzdCBlZGl0aW5nIG9wZXJhdGlvbiB0aGF0IAotICAgIC8v
IHJlcXVpcmUgYSBsYXlvdXQsIGFzIGluIDxyZGFyOi8vcHJvYmxlbS81NjU4NjAzPi4gIExvdyBs
ZXZlbCBvcGVyYXRpb25zLCBsaWtlIAotICAgIC8vIFJlbW92ZU5vZGVDb21tYW5kLCBkb24ndCBy
ZXF1aXJlIGEgbGF5b3V0IGJlY2F1c2UgdGhlIGhpZ2ggbGV2ZWwgb3BlcmF0aW9ucyB0aGF0IAot
ICAgIC8vIHVzZSB0aGVtIHBlcmZvcm0gb25lIGlmIG9uZSBpcyBuZWNlc3NhcnkgKGxpa2UgZm9y
IHRoZSBjcmVhdGlvbiBvZiBWaXNpYmxlUG9zaXRpb25zKS4KLSAgICBpZiAoaXNUb3BMZXZlbENv
bW1hbmQoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0
eWxlc2hlZXRzKCk7Ci0gICAgCi0gICAgRGVsZXRlQnV0dG9uQ29udHJvbGxlciogZGVsZXRlQnV0
dG9uQ29udHJvbGxlciA9IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29udHJvbGxlcigp
OwotICAgIGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXItPmRpc2FibGUoKTsKLSAgICBkb1VuYXBwbHko
KTsKLSAgICBkZWxldGVCdXR0b25Db250cm9sbGVyLT5lbmFibGUoKTsKLQotICAgIGlmIChpc0Vk
aXRDb21tYW5kQ29tcG9zaXRpb24oKSkKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT51bmFwcGxp
ZWRFZGl0aW5nKHRvRWRpdENvbW1hbmRDb21wb3NpdGlvbih0aGlzKSk7Ci19Ci0KLXZvaWQgRWRp
dENvbW1hbmQ6OnJlYXBwbHkoKQotewotICAgIEFTU0VSVChtX2RvY3VtZW50KTsKLSAgICBBU1NF
UlQobV9kb2N1bWVudC0+ZnJhbWUoKSk7Ci0gCi0gICAgRnJhbWUqIGZyYW1lID0gbV9kb2N1bWVu
dC0+ZnJhbWUoKTsKLSAgICAKLSAgICAvLyBDaGFuZ2VzIHRvIHRoZSBkb2N1bWVudCBtYXkgaGF2
ZSBiZWVuIG1hZGUgc2luY2UgdGhlIGxhc3QgZWRpdGluZyBvcGVyYXRpb24gdGhhdCAKLSAgICAv
LyByZXF1aXJlIGEgbGF5b3V0LCBhcyBpbiA8cmRhcjovL3Byb2JsZW0vNTY1ODYwMz4uICBMb3cg
bGV2ZWwgb3BlcmF0aW9ucywgbGlrZSAKLSAgICAvLyBSZW1vdmVOb2RlQ29tbWFuZCwgZG9uJ3Qg
cmVxdWlyZSBhIGxheW91dCBiZWNhdXNlIHRoZSBoaWdoIGxldmVsIG9wZXJhdGlvbnMgdGhhdCAK
LSAgICAvLyB1c2UgdGhlbSBwZXJmb3JtIG9uZSBpZiBvbmUgaXMgbmVjZXNzYXJ5IChsaWtlIGZv
ciB0aGUgY3JlYXRpb24gb2YgVmlzaWJsZVBvc2l0aW9ucykuCi0gICAgaWYgKGlzVG9wTGV2ZWxD
b21tYW5kKCkpCi0gICAgICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cygpOwotCi0gICAgRGVsZXRlQnV0dG9uQ29udHJvbGxlciogZGVsZXRlQnV0dG9u
Q29udHJvbGxlciA9IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpOwot
ICAgIGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXItPmRpc2FibGUoKTsKLSAgICBkb1JlYXBwbHkoKTsK
LSAgICBkZWxldGVCdXR0b25Db250cm9sbGVyLT5lbmFibGUoKTsKLQotICAgIGlmIChpc0VkaXRD
b21tYW5kQ29tcG9zaXRpb24oKSkKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5yZWFwcGxpZWRF
ZGl0aW5nKHRvRWRpdENvbW1hbmRDb21wb3NpdGlvbih0aGlzKSk7Ci19Ci0KLXZvaWQgRWRpdENv
bW1hbmQ6OmRvUmVhcHBseSgpCi17Ci0gICAgZG9BcHBseSgpOwotfQotCiBFZGl0QWN0aW9uIEVk
aXRDb21tYW5kOjplZGl0aW5nQWN0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gRWRpdEFjdGlv
blVuc3BlY2lmaWVkOwpAQCAtMTg0LDcgKzgwLDcgQEAgdm9pZCBFZGl0Q29tbWFuZDo6c2V0U3Rh
cnRpbmdTZWxlY3Rpb24oYwogICAgIGZvciAoRWRpdENvbW1hbmQqIGNtZCA9IHRoaXM7IDsgY21k
ID0gY21kLT5tX3BhcmVudCkgewogICAgICAgICBpZiAoRWRpdENvbW1hbmRDb21wb3NpdGlvbiog
Y29tcG9zaXRpb24gPSBjb21wb3NpdGlvbklmUG9zc2libGUoY21kKSkgewogICAgICAgICAgICAg
QVNTRVJUKGNtZC0+aXNUb3BMZXZlbENvbW1hbmQoKSk7Ci0gICAgICAgICAgICBzdGF0aWNfY2Fz
dDxFZGl0Q29tbWFuZCo+KGNvbXBvc2l0aW9uKS0+c2V0U3RhcnRpbmdTZWxlY3Rpb24ocyk7Cisg
ICAgICAgICAgICBjb21wb3NpdGlvbi0+c2V0U3RhcnRpbmdTZWxlY3Rpb24ocyk7CiAgICAgICAg
IH0KICAgICAgICAgY21kLT5tX3N0YXJ0aW5nU2VsZWN0aW9uID0gczsKICAgICAgICAgaWYgKCFj
bWQtPm1fcGFyZW50IHx8IGNtZC0+bV9wYXJlbnQtPmlzRmlyc3RDb21tYW5kKGNtZCkpCkBAIC0x
OTcsNyArOTMsNyBAQCB2b2lkIEVkaXRDb21tYW5kOjpzZXRFbmRpbmdTZWxlY3Rpb24oY29uCiAg
ICAgZm9yIChFZGl0Q29tbWFuZCogY21kID0gdGhpczsgY21kOyBjbWQgPSBjbWQtPm1fcGFyZW50
KSB7CiAgICAgICAgIGlmIChFZGl0Q29tbWFuZENvbXBvc2l0aW9uKiBjb21wb3NpdGlvbiA9IGNv
bXBvc2l0aW9uSWZQb3NzaWJsZShjbWQpKSB7CiAgICAgICAgICAgICBBU1NFUlQoY21kLT5pc1Rv
cExldmVsQ29tbWFuZCgpKTsKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEVkaXRDb21tYW5kKj4o
Y29tcG9zaXRpb24pLT5zZXRFbmRpbmdTZWxlY3Rpb24ocyk7CisgICAgICAgICAgICBjb21wb3Np
dGlvbi0+c2V0RW5kaW5nU2VsZWN0aW9uKHMpOwogICAgICAgICB9CiAgICAgICAgIGNtZC0+bV9l
bmRpbmdTZWxlY3Rpb24gPSBzOwogICAgIH0KQEAgLTIxNCw2ICsxMTAsMTEgQEAgdm9pZCBFZGl0
Q29tbWFuZDo6c2V0UGFyZW50KENvbXBvc2l0ZUVkaQogICAgIH0KIH0KIAordm9pZCBTaW1wbGVF
ZGl0Q29tbWFuZDo6ZG9SZWFwcGx5KCkKK3sKKyAgICBkb0FwcGx5KCk7Cit9CisKICNpZm5kZWYg
TkRFQlVHCiB2b2lkIFNpbXBsZUVkaXRDb21tYW5kOjphZGROb2RlQW5kRGVzY2VuZGFudHMoTm9k
ZSogc3RhcnROb2RlLCBIYXNoU2V0PE5vZGUqPiYgbm9kZXMpCiB7CkBAIC0yMjIsOSArMTIzLDQg
QEAgdm9pZCBTaW1wbGVFZGl0Q29tbWFuZDo6YWRkTm9kZUFuZERlc2NlbgogfQogI2VuZGlmCiAK
LXZvaWQgYXBwbHlDb21tYW5kKFBhc3NSZWZQdHI8Q29tcG9zaXRlRWRpdENvbW1hbmQ+IGNvbW1h
bmQpCi17Ci0gICAgY29tbWFuZC0+YXBwbHkoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaAkocmV2aXNpb24gMTAyODM1
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NSwxMCArNDUsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFBhcmVudChDb21wb3Np
dGVFZGl0Q29tbWFuZCopOwogCi0gICAgdm9pZCBhcHBseSgpOwotICAgIHZvaWQgdW5hcHBseSgp
OwotICAgIHZvaWQgcmVhcHBseSgpOwotCiAgICAgdmlydHVhbCBFZGl0QWN0aW9uIGVkaXRpbmdB
Y3Rpb24oKSBjb25zdDsKIAogICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHN0YXJ0aW5nU2Vs
ZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydGluZ1NlbGVjdGlvbjsgfQpAQCAtNTksMzEg
KzU1LDI4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNFZGl0Q29tbWFuZENvbXBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzVG9wTGV2ZWxDb21tYW5k
KCkgY29uc3QgeyByZXR1cm4gIW1fcGFyZW50OyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgZG9BcHBs
eSgpID0gMDsKKwogcHJvdGVjdGVkOgogICAgIEVkaXRDb21tYW5kKERvY3VtZW50Kik7CiAgICAg
RWRpdENvbW1hbmQoRG9jdW1lbnQqLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYpOwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9kb2N1bWVudC5nZXQoKTsgfQogICAgIENvbXBvc2l0ZUVkaXRDb21tYW5kKiBwYXJlbnQo
KSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQotCi0gICAgdmlydHVhbCB2b2lkIHNldFN0YXJ0
aW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0RW5kaW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKKyAgICB2b2lkIHNl
dFN0YXJ0aW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKKyAgICB2b2lkIHNl
dEVuZGluZ1NlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CiAKIHByaXZhdGU6Ci0g
ICAgdmlydHVhbCB2b2lkIGRvQXBwbHkoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRvVW5hcHBs
eSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZG9SZWFwcGx5KCk7IC8vIGNhbGxzIGRvQXBwbHko
KQotCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFZpc2libGVTZWxlY3Rp
b24gbV9zdGFydGluZ1NlbGVjdGlvbjsKICAgICBWaXNpYmxlU2VsZWN0aW9uIG1fZW5kaW5nU2Vs
ZWN0aW9uOwogICAgIENvbXBvc2l0ZUVkaXRDb21tYW5kKiBtX3BhcmVudDsKLQotICAgIGZyaWVu
ZCB2b2lkIGFwcGx5Q29tbWFuZChQYXNzUmVmUHRyPENvbXBvc2l0ZUVkaXRDb21tYW5kPik7CiB9
OwogCiBjbGFzcyBTaW1wbGVFZGl0Q29tbWFuZCA6IHB1YmxpYyBFZGl0Q29tbWFuZCB7CiBwdWJs
aWM6CisgICAgdmlydHVhbCB2b2lkIGRvVW5hcHBseSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZG9SZWFwcGx5KCk7IC8vIGNhbGxzIGRvQXBwbHkoKQogCiAjaWZuZGVmIE5ERUJVRwogICAgIHZp
cnR1YWwgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYpID0gMDsKQEAgLTEw
Nyw4ICsxMDAsNiBAQCBpbmxpbmUgU2ltcGxlRWRpdENvbW1hbmQqIHRvU2ltcGxlRWRpdENvCiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFNpbXBsZUVkaXRDb21tYW5kKj4oY29tbWFuZCk7CiB9CiAK
LXZvaWQgYXBwbHlDb21tYW5kKFBhc3NSZWZQdHI8Q29tcG9zaXRlRWRpdENvbW1hbmQ+KTsKLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRWRpdENvbW1hbmRfaApJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlckVudHJ5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlckVudHJ5LmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyRW50cnkuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgVW5kb01hbmFnZXJFbnRyeV9oCisjZGVmaW5lIFVuZG9N
YW5hZ2VyRW50cnlfaAorCisjaW5jbHVkZSAiRWRpdEFjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVW5kb01hbmFnZXJF
bnRyeSA6IHB1YmxpYyBSZWZDb3VudGVkPFVuZG9NYW5hZ2VyRW50cnk+IHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5VbmRvTWFuYWdlckVudHJ5KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdW5h
cHBseSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhcHBseSgpID0gMDsKKyAgICB2aXJ0dWFs
IEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0ID0gMDsKK307CisKK30KKworI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiAxMDI4MzUp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0NSwyNyArNDQ1LDIxIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQmVn
aW5FZGl0aW5nKFJhbmdlKikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkRW5kRWRpdGluZyhSYW5nZSopIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IHNob3VsZEluc2VydE5vZGUoTm9kZSosIFJhbmdlKiwgRWRpdG9ySW5zZXJ0QWN0aW9uKSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIC8vICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShOb2Rl
KiwgUmFuZ2UqIHJlcGxhY2luZ1JhbmdlLCBXZWJWaWV3SW5zZXJ0QWN0aW9uKSB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYs
IFJhbmdlKiwgRWRpdG9ySW5zZXJ0QWN0aW9uKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFJhbmdlKiwgUmFuZ2UqLCBFQWZmaW5p
dHksIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXBw
bHlTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiwgUmFuZ2UqKSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShSYW5nZSosIFJhbmdl
KikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAvLyAgdmlydHVhbCBib29sIHNob3VsZENoYW5nZVR5
cGluZ1N0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIGZyb21TdHlsZSwgQ1NTU3R5bGVEZWNsYXJh
dGlvbiogdG9TdHlsZSkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAvLyAgdmlydHVhbCBib29sIGRv
Q29tbWFuZEJ5U2VsZWN0b3IoU0VMIHNlbGVjdG9yKSB7IHJldHVybiBmYWxzZTsgfQotICAgIC8v
CisKICAgICB2aXJ0dWFsIHZvaWQgZGlkQmVnaW5FZGl0aW5nKCkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZXNw
b25kVG9DaGFuZ2VkU2VsZWN0aW9uKEZyYW1lKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEVu
ZEVkaXRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0
ZWJvYXJkKCkgeyB9Ci0gICAgLy8gIHZpcnR1YWwgdm9pZCB3ZWJWaWV3RGlkQ2hhbmdlVHlwaW5n
U3R5bGU6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uIHsgfQotICAgIC8vICB2aXJ0dWFs
IHZvaWQgd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjooTlNOb3RpZmljYXRpb24gKilub3RpZmlj
YXRpb24geyB9Ci0gICAgLy8gIHZpcnR1YWwgTlNVbmRvTWFuYWdlciogdW5kb01hbmFnZXJGb3JX
ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyB7IHJldHVybiAwOyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgcmVnaXN0ZXJDb21tYW5kRm9yVW5kbyhQYXNzUmVmUHRyPEVkaXRDb21tYW5kPikgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oUGFzc1JlZlB0cjxFZGl0Q29t
bWFuZD4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JVbmRvKFBhc3NS
ZWZQdHI8VW5kb01hbmFnZXJFbnRyeT4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNv
bW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8VW5kb01hbmFnZXJFbnRyeT4pIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpIHsgfQogCiAgICAgdmlydHVhbCBib29s
IGNhbkNvcHlDdXQoRnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QgeyByZXR1cm4gZGVm
YXVsdFZhbHVlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9u
IDEwMjgzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJFZGl0b3JJbnNlcnRBY3Rpb24uaCIK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJUZXh0QWZmaW5pdHkuaCIKKyNpbmNs
dWRlICJVbmRvTWFuYWdlckVudHJ5LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTUzLDcgKzU0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwogY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNs
YXNzIERvY3VtZW50RnJhZ21lbnQ7Ci1jbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRvcjsK
IGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKQEAgLTk5LDggKzk5LDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCkgPSAwOwog
ICAgIAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JVbmRvKFBhc3NSZWZQdHI8
RWRpdENvbW1hbmQ+KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclJl
ZG8oUGFzc1JlZlB0cjxFZGl0Q29tbWFuZD4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0
ZXJDb21tYW5kRm9yVW5kbyhQYXNzUmVmUHRyPFVuZG9NYW5hZ2VyRW50cnk+KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oUGFzc1JlZlB0cjxVbmRvTWFuYWdl
ckVudHJ5PikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygp
ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5Db3B5Q3V0KEZyYW1lKiwgYm9vbCBkZWZhdWx0
VmFsdWUpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjg5NykKKysrIFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisy
MDExLTEyLTE1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE9u
bHkgRWRpdENvbW1hbmRDb21wb3NpdGlvbiBzaG91bGQgaW1wbGVtZW50IHVuYXBwbHkgYW5kIHJl
YXBwbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0
NDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVu
YW1lZCBXZWJFZGl0Q29tbWFuZCB0byBXZWJVbmRvTWFuYWdlckVudHJ5IGFuZCBtYWRlIG5lY2Vz
c2FyeSBjaGFuZ2VzLgorICAgICAgICBFdmVyeXRoaW5nIG9uIFdlYlByb2Nlc3Mgc2lkZSBzaG91
bGQgaGF2ZSB0aGUgY29ycmVjdCBuYW1lIG5vdy4KKworICAgICAgICBOYW1lcyBpbiB0aGUgcHJv
eHkgYW5kIFVJUHJvY2VzcyBhcmUgdG8gYmUgdXBkYXRlZCBpbiBhIGZvbGxvdyB1cC4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckNvbW1hbmRG
b3JVbmRvKToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckNvbW1h
bmRGb3JSZWRvKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJFZGl0Q29tbWFuZC5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkVkaXRDb21tYW5k
Lmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp3ZWJVbmRvTWFuYWdlckVudHJ5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6YWRkV2ViVW5kb01hbmFnZXJFbnRyeSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlbW92ZVdlYkVkaXRDb21tYW5kKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6dW5hcHBseUVkaXRDb21tYW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVh
cHBseUVkaXRDb21tYW5kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVbmRvTWFuYWdlckVudHJ5LmNwcDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkVkaXRDb21t
YW5kLmNwcC4KKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVVbmRvTWFuYWdlckVudHJ5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVW5kb01hbmFnZXJFbnRyeTo6Y3JlYXRlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVW5kb01hbmFnZXJFbnRyeS5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRWRpdENvbW1hbmQuaC4KKyAgICAgICAg
KFdlYktpdDo6V2ViVW5kb01hbmFnZXJFbnRyeTo6ZW50cnkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVbmRvTWFuYWdlckVudHJ5OjplbnRyeUlEKToKKyAgICAgICAgKFdlYktpdDo6V2ViVW5kb01h
bmFnZXJFbnRyeTo6V2ViVW5kb01hbmFnZXJFbnRyeSk6CisgICAgICAgICogd2luL1dlYktpdDIu
dmNwcm9qOgorCiAyMDExLTEyLTE0ICBKaW5nIFpoYW8gIDxqaW5nemhhb0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgT3BlbmluZyB0d28gcG9wdXAgbWVudXMgYnkgZGlzcGF0Y2hFdmVudCgpIG1h
a2VzIHByb2JsZW1zLgpJbmRleDogU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwMjgzNSkK
KysrIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNzYs
NyArMzc2LDcgQEAgU0VUKFdlYktpdDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9U
aWxlZERyYXdpbmdBcmVhLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eS5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3Bw
Ci0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkVkaXRDb21tYW5kLmNwcAorICAgIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJVbmRvTWFuYWdlckVudHJ5LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAog
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAxMDI4MzUpCisrKyBTb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtODk5LDggKzg5OSw2IEBAIGxpYndl
YmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0kKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCBcCiAJU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcCBcCiAJU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmggXAotCVNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJFZGl0Q29tbWFuZC5jcHAgXAotCVNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJFZGl0Q29tbWFuZC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5jcHAgXApAQCAtOTExLDYgKzkwOSw4IEBAIGxpYndlYmtpdDJndGtf
QFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0kKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlVuZG9NYW5hZ2VyRW50cnkuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViVW5kb01hbmFnZXJFbnRyeS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAgXApJbmRleDogU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCShyZXZpc2lvbiAxMDI4MzUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0zNDksMTIgKzM0
OSwxMiBAQCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xs
ZXIuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmggXAogICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5oIFwKLSAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRWRpdENvbW1hbmQuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmggXAog
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaCBcCiAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggXAogICAgIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94
eS5oIFwKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVW5kb01hbmFnZXJFbnRyeS5oIFwKICAg
ICBXZWJQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5oIFwKICAgICBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaCBcCiAgICAgV2ViUHJvY2Vzcy9xdC9RdEJ1aWx0aW5CdW5kbGUuaCBcCkBA
IC02OTgsMTIgKzY5OCwxMiBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uv
VGlsZWREcmF3aW5nQXJlYS5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9y
d2FyZExpc3RQcm94eS5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVu
dS5jcHAgXAotICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJFZGl0Q29tbWFuZC5jcHAgXAogICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJJbnNwZWN0b3IuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
XAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHAgXAorICAgIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJVbmRvTWFuYWdlckVudHJ5LmNwcCBcCiAgICAgV2ViUHJvY2Vz
cy9XZWJQYWdlL3F0L1dlYkluc3BlY3RvclF0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdl
L3F0L0xheWVyVHJlZUhvc3RRdC5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9xdC9XZWJQ
YWdlUXQuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEwMjgzNSkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzAxLDgg
KzcwMSw4IEBACiAJCUJDOTYzRDZCMTEzREQxOTIwMDU3NEJFMiAvKiBXZWJQYWdlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTYzRDZBMTEzREQx
OTIwMDU3NEJFMiAvKiBXZWJQYWdlLmNwcCAqLzsgfTsKIAkJQkM5NjNENkUxMTNERDFBNTAwNTc0
QkUyIC8qIFdlYlBhZ2VNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzk2M0Q2RDExM0REMUE1MDA1NzRCRTIgLyogV2ViUGFnZU1hYy5tbSAqLzsg
fTsKIAkJQkM5QjM4QTExMEY1MzhCRTAwNDQzQTE1IC8qIFdlYkZyYW1lUHJveHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOUIzODlGMTBGNTM4QkUw
MDQ0M0ExNSAvKiBXZWJGcmFtZVByb3h5LmggKi87IH07Ci0JCUJDQTBFRjdGMTIzMzFFNzgwMDdE
M0NGQiAvKiBXZWJFZGl0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNBMEVGN0QxMjMzMUU3ODAwN0QzQ0ZCIC8qIFdlYkVkaXRDb21tYW5k
LmggKi87IH07Ci0JCUJDQTBFRjgwMTIzMzFFNzgwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EwRUY3
RTEyMzMxRTc4MDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmQuY3BwICovOyB9OworCQlCQ0EwRUY3
RjEyMzMxRTc4MDA3RDNDRkIgLyogV2ViVW5kb01hbmFnZXJFbnRyeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBMEVGN0QxMjMzMUU3ODAwN0QzQ0ZC
IC8qIFdlYlVuZG9NYW5hZ2VyRW50cnkuaCAqLzsgfTsKKwkJQkNBMEVGODAxMjMzMUU3ODAwN0Qz
Q0ZCIC8qIFdlYlVuZG9NYW5hZ2VyRW50cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBMEVGN0UxMjMzMUU3ODAwN0QzQ0ZCIC8qIFdlYlVuZG9N
YW5hZ2VyRW50cnkuY3BwICovOyB9OwogCQlCQ0EwRUY5RjEyMzMyNjQyMDA3RDNDRkIgLyogV2Vi
RWRpdENvbW1hbmRQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNBMEVGOUQxMjMzMjY0MjAwN0QzQ0ZCIC8qIFdlYkVkaXRDb21tYW5kUHJveHku
aCAqLzsgfTsKIAkJQkNBMEVGQTAxMjMzMjY0MjAwN0QzQ0ZCIC8qIFdlYkVkaXRDb21tYW5kUHJv
eHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNB
MEVGOUUxMjMzMjY0MjAwN0QzQ0ZCIC8qIFdlYkVkaXRDb21tYW5kUHJveHkuY3BwICovOyB9Owog
CQlCQ0EyODRENjE0OTJGMkM3MDAxRjkwNDIgLyogV0tDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBMjg0RDQxNDkyRjJDNzAwMUY5
MDQyIC8qIFdLQ29ubmVjdGlvbi5tbSAqLzsgfTsKQEAgLTE3MjYsOCArMTcyNiw4IEBACiAJCUJD
OTYzRDZBMTEzREQxOTIwMDU3NEJFMiAvKiBXZWJQYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzk2M0Q2RDExM0REMUE1MDA1NzRCRTIgLyogV2ViUGFnZU1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBhZ2VNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDOUIzODlGMTBGNTM4QkUwMDQ0M0ExNSAvKiBXZWJGcmFtZVBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZyYW1lUHJveHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNBMEVGN0QxMjMzMUU3ODAwN0QzQ0ZCIC8q
IFdlYkVkaXRDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkVk
aXRDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDQTBFRjdFMTIzMzFF
NzgwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJFZGl0Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJDQTBFRjdEMTIzMzFFNzgwMDdEM0NGQiAvKiBXZWJVbmRvTWFuYWdlckVudHJ5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVuZG9NYW5hZ2VyRW50cnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNBMEVGN0UxMjMzMUU3ODAwN0QzQ0ZCIC8q
IFdlYlVuZG9NYW5hZ2VyRW50cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViVW5kb01hbmFnZXJFbnRyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDQTBFRjlEMTIzMzI2NDIwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZFByb3h5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkVkaXRDb21tYW5kUHJveHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBMEVGOUUxMjMzMjY0MjAwN0QzQ0ZCIC8qIFdl
YkVkaXRDb21tYW5kUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViRWRpdENvbW1hbmRQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDQTI4NEQ0MTQ5MkYyQzcwMDFGOTA0MiAvKiBXS0Nvbm5lY3Rpb24ubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0Nvbm5lY3Rpb24ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yNzk5LDggKzI3OTksOCBAQAogCQkJCUJDNzJCOUY5MTFFNjQ3
NkIwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oICovLAogCQkJCTUxODcxQjU5
MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgKi8sCiAJCQkJNTE4NzFCNUEx
MjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmggKi8sCi0JCQkJQkNBMEVGN0UxMjMz
MUU3ODAwN0QzQ0ZCIC8qIFdlYkVkaXRDb21tYW5kLmNwcCAqLywKLQkJCQlCQ0EwRUY3RDEyMzMx
RTc4MDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmQuaCAqLywKKwkJCQlCQ0EwRUY3RTEyMzMxRTc4
MDA3RDNDRkIgLyogV2ViVW5kb01hbmFnZXJFbnRyeS5jcHAgKi8sCisJCQkJQkNBMEVGN0QxMjMz
MUU3ODAwN0QzQ0ZCIC8qIFdlYlVuZG9NYW5hZ2VyRW50cnkuaCAqLywKIAkJCQlCQzExMUFEQzEx
MkY1QjkzMDAzMzdCQUIgLyogV2ViRnJhbWUuY3BwICovLAogCQkJCUJDMDMyRDg5MTBGNDM3QTAw
MDU4QzE1QSAvKiBXZWJGcmFtZS5oICovLAogCQkJCTFDOEUyODFGMTI3NUQxNTQwMEJDN0JEMCAv
KiBXZWJJbnNwZWN0b3IuY3BwICovLApAQCAtMzkwMSw3ICszOTAxLDcgQEAKIAkJCQlCQ0IwQjBE
QzEyMzA1QTI1MDBCMTM0MUUgLyogV2ViQ29udGV4dFVzZXJNZXNzYWdlQ29kZXJzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0IwQjBERTEyMzA1QThDMDBCMTM0MUUgLyogSW5qZWN0ZWRCdW5kbGVV
c2VyTWVzc2FnZUNvZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCMEIwRTAxMjMwNUFCMTAw
QjEzNDFFIC8qIFVzZXJNZXNzYWdlQ29kZXJzLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQ0EwRUY3
RjEyMzMxRTc4MDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDQTBFRjdGMTIzMzFFNzgwMDdEM0NGQiAvKiBXZWJVbmRvTWFuYWdlckVudHJ5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0EwRUY5RjEyMzMyNjQyMDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmRQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzM0RENjgxMjM4NDY0NjAwMzYwRjNGIC8qIFdl
Yk51bWJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGNTAxMjExMjNFRDNCMzAwNTk1NUFFIC8q
IFRocmVhZExhdW5jaGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTQ1NTAsNyArNDU1MCw3IEBACiAJ
CQkJQkM5MEExRDcxMjJERDY2QTAwQ0M4QzUwIC8qIFdlYlVSTFJlc3BvbnNlTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNCMEFEMzMxMjJGMjg1ODAwQjEzNDFFIC8qIE11dGFibGVBcnJheS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0IwQUVFQTEyMkY1M0UzMDBCMTM0MUUgLyogTXV0YWJs
ZURpY3Rpb25hcnkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQkNBMEVGODAxMjMzMUU3ODAwN0Qz
Q0ZCIC8qIFdlYkVkaXRDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDQTBFRjgwMTIz
MzFFNzgwMDdEM0NGQiAvKiBXZWJVbmRvTWFuYWdlckVudHJ5LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDQTBFRkEwMTIzMzI2NDIwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZFByb3h5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDRjUwMTIyMTIzRUQzQjMwMDU5NTVBRSAvKiBUaHJlYWRMYXVu
Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Y1MDFCNDEyM0VGNjAyMDA1OTU1QUUgLyog
VGhyZWFkTGF1bmNoZXJNYWMubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAJKHJldmlzaW9uIDEwMjgzNSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
NyArMzUsNiBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Fy
Y2hpdmVSZXNvdXJjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRGcmFnbWVudC5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvRWRpdENvbW1hbmQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3Vz
Q29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lVmlldy5oPgpAQCAtNDYsNiArNDUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1RleHRJdGVyYXRvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVW5kb01hbmFnZXJFbnRyeS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0yMjAsMjEgKzIyMCwyMSBAQCB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6ZGlkU2V0U2VsZWN0aW9uVHlwCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oUGFzc1JlZlB0cjxF
ZGl0Q29tbWFuZD4gY29tbWFuZCkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckNvbW1h
bmRGb3JVbmRvKFBhc3NSZWZQdHI8VW5kb01hbmFnZXJFbnRyeT4gZW50cnkpCiB7CiAgICAgLy8g
RklYTUU6IEFkZCBhc3NlcnRpb24gdGhhdCB0aGUgY29tbWFuZCBiZWluZyByZWFwcGxpZWQgaXMg
dGhlIHNhbWUgY29tbWFuZCB0aGF0IGlzCiAgICAgLy8gYmVpbmcgcGFzc2VkIHRvIHVzLgogICAg
IGlmIChtX3BhZ2UtPmlzSW5SZWRvKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxX
ZWJFZGl0Q29tbWFuZD4gd2ViQ29tbWFuZCA9IFdlYkVkaXRDb21tYW5kOjpjcmVhdGUoY29tbWFu
ZCk7Ci0gICAgbV9wYWdlLT5hZGRXZWJFZGl0Q29tbWFuZCh3ZWJDb21tYW5kLT5jb21tYW5kSUQo
KSwgd2ViQ29tbWFuZC5nZXQoKSk7Ci0gICAgdWludDMyX3QgZWRpdEFjdGlvbiA9IHN0YXRpY19j
YXN0PHVpbnQzMl90Pih3ZWJDb21tYW5kLT5jb21tYW5kKCktPmVkaXRpbmdBY3Rpb24oKSk7Cisg
ICAgUmVmUHRyPFdlYlVuZG9NYW5hZ2VyRW50cnk+IHdlYkVudHJ5ID0gV2ViVW5kb01hbmFnZXJF
bnRyeTo6Y3JlYXRlKGVudHJ5KTsKKyAgICBtX3BhZ2UtPmFkZFdlYlVuZG9NYW5hZ2VyRW50cnko
d2ViRW50cnktPmVudHJ5SUQoKSwgd2ViRW50cnkuZ2V0KCkpOworICAgIHVpbnQzMl90IGVkaXRB
Y3Rpb24gPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4od2ViRW50cnktPmVudHJ5KCktPmVkaXRpbmdB
Y3Rpb24oKSk7CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVn
aXN0ZXJFZGl0Q29tbWFuZEZvclVuZG8od2ViQ29tbWFuZC0+Y29tbWFuZElEKCksIGVkaXRBY3Rp
b24pKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJF
ZGl0Q29tbWFuZEZvclVuZG8od2ViRW50cnktPmVudHJ5SUQoKSwgZWRpdEFjdGlvbikpOwogfQog
Ci12b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRy
PEVkaXRDb21tYW5kPikKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckNvbW1hbmRGb3JS
ZWRvKFBhc3NSZWZQdHI8VW5kb01hbmFnZXJFbnRyeT4pCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAkocmV2aXNpb24gMTAyODM1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjks
OCArNjksOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRTZWxlY3Rpb25U
eXBlc0ZvclBhc3RlYm9hcmQoKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJDb21tYW5kRm9yVW5kbyhQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oUGFzc1JlZlB0
cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckNvbW1hbmRGb3JVbmRvKFBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb01hbmFnZXJFbnRyeT4p
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6VW5kb01hbmFnZXJFbnRyeT4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBi
b29sIGNhbkNvcHlDdXQoV2ViQ29yZTo6RnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3Qg
T1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRWRp
dENvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJFZGl0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDEwMjgzNSkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJFZGl0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJFZGl0Q29tbWFuZC5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RhdGljIHVp
bnQ2NF90IGdlbmVyYXRlQ29tbWFuZElEKCkKLXsKLSAgICBzdGF0aWMgdWludDY0X3QgdW5pcXVl
Q29tbWFuZElEID0gMTsKLSAgICByZXR1cm4gdW5pcXVlQ29tbWFuZElEKys7Ci19Ci0KLVBhc3NS
ZWZQdHI8V2ViRWRpdENvbW1hbmQ+IFdlYkVkaXRDb21tYW5kOjpjcmVhdGUoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpFZGl0Q29tbWFuZD4gY29tbWFuZCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYkVkaXRDb21tYW5kKGNvbW1hbmQsIGdlbmVyYXRlQ29tbWFuZElEKCkpKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRWRpdENvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRWRpdENvbW1hbmQuaAkocmV2aXNpb24gMTAyODM1KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkVkaXRDb21tYW5kLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViRWRpdENvbW1hbmRf
aAotI2RlZmluZSBXZWJFZGl0Q29tbWFuZF9oCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0VkaXRDb21t
YW5kLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJFZGl0Q29tbWFuZCA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYkVkaXRDb21tYW5kPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8V2ViRWRpdENvbW1hbmQ+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21t
YW5kPik7Ci0KLSAgICBXZWJDb3JlOjpFZGl0Q29tbWFuZCogY29tbWFuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29tbWFuZC5nZXQoKTsgfQotICAgIHVpbnQ2NF90IGNvbW1hbmRJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29tbWFuZElEOyB9Ci0KLXByaXZhdGU6Ci0gICAgV2ViRWRpdENvbW1hbmQoUGFz
c1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4gY29tbWFuZCwgdWludDY0X3QgY29tbWFuZElE
KQotICAgICAgICA6IG1fY29tbWFuZChjb21tYW5kKQotICAgICAgICAsIG1fY29tbWFuZElEKGNv
bW1hbmRJRCkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5k
PiBtX2NvbW1hbmQ7Ci0gICAgdWludDY0X3QgbV9jb21tYW5kSUQ7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkVkaXRDb21tYW5kX2gKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDEwMjgz
NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjA1OSwzOCArMjA1OSwzOCBAQCB2b2lkIFdlYlBhZ2U6OndpbGxQZXJm
b3JtTG9hZERyYWdEZXN0aW5hCiAgICAgbV9zYW5kYm94RXh0ZW5zaW9uVHJhY2tlci53aWxsUGVy
Zm9ybUxvYWREcmFnRGVzdGluYXRpb25BY3Rpb24obV9wZW5kaW5nRHJvcFNhbmRib3hFeHRlbnNp
b24ucmVsZWFzZSgpKTsKIH0KIAotV2ViRWRpdENvbW1hbmQqIFdlYlBhZ2U6OndlYkVkaXRDb21t
YW5kKHVpbnQ2NF90IGNvbW1hbmRJRCkKK1dlYlVuZG9NYW5hZ2VyRW50cnkqIFdlYlBhZ2U6Ondl
YlVuZG9NYW5hZ2VyRW50cnkodWludDY0X3QgZW50cnlJRCkKIHsKLSAgICByZXR1cm4gbV9lZGl0
Q29tbWFuZE1hcC5nZXQoY29tbWFuZElEKS5nZXQoKTsKKyAgICByZXR1cm4gbV91bmRvTWFuYWdl
ckVudHJ5TWFwLmdldChlbnRyeUlEKS5nZXQoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjphZGRXZWJF
ZGl0Q29tbWFuZCh1aW50NjRfdCBjb21tYW5kSUQsIFdlYkVkaXRDb21tYW5kKiBjb21tYW5kKQor
dm9pZCBXZWJQYWdlOjphZGRXZWJVbmRvTWFuYWdlckVudHJ5KHVpbnQ2NF90IGVudHJ5SUQsIFdl
YlVuZG9NYW5hZ2VyRW50cnkqIGVudHJ5KQogewotICAgIG1fZWRpdENvbW1hbmRNYXAuc2V0KGNv
bW1hbmRJRCwgY29tbWFuZCk7CisgICAgbV91bmRvTWFuYWdlckVudHJ5TWFwLnNldChlbnRyeUlE
LCBlbnRyeSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVtb3ZlV2ViRWRpdENvbW1hbmQodWludDY0
X3QgY29tbWFuZElEKQordm9pZCBXZWJQYWdlOjpyZW1vdmVXZWJFZGl0Q29tbWFuZCh1aW50NjRf
dCBlbnRyeUlEKQogewotICAgIG1fZWRpdENvbW1hbmRNYXAucmVtb3ZlKGNvbW1hbmRJRCk7Cisg
ICAgbV91bmRvTWFuYWdlckVudHJ5TWFwLnJlbW92ZShlbnRyeUlEKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjp1bmFwcGx5RWRpdENvbW1hbmQodWludDY0X3QgY29tbWFuZElEKQordm9pZCBXZWJQYWdl
Ojp1bmFwcGx5RWRpdENvbW1hbmQodWludDY0X3QgZW50cnlJRCkKIHsKLSAgICBXZWJFZGl0Q29t
bWFuZCogY29tbWFuZCA9IHdlYkVkaXRDb21tYW5kKGNvbW1hbmRJRCk7Ci0gICAgaWYgKCFjb21t
YW5kKQorICAgIFdlYlVuZG9NYW5hZ2VyRW50cnkqIGVudHJ5ID0gd2ViVW5kb01hbmFnZXJFbnRy
eShlbnRyeUlEKTsKKyAgICBpZiAoIWVudHJ5KQogICAgICAgICByZXR1cm47CiAKLSAgICBjb21t
YW5kLT5jb21tYW5kKCktPnVuYXBwbHkoKTsKKyAgICBlbnRyeS0+ZW50cnkoKS0+dW5hcHBseSgp
OwogfQogCi12b2lkIFdlYlBhZ2U6OnJlYXBwbHlFZGl0Q29tbWFuZCh1aW50NjRfdCBjb21tYW5k
SUQpCit2b2lkIFdlYlBhZ2U6OnJlYXBwbHlFZGl0Q29tbWFuZCh1aW50NjRfdCBlbnRyeUlEKQog
ewotICAgIFdlYkVkaXRDb21tYW5kKiBjb21tYW5kID0gd2ViRWRpdENvbW1hbmQoY29tbWFuZElE
KTsKLSAgICBpZiAoIWNvbW1hbmQpCisgICAgV2ViVW5kb01hbmFnZXJFbnRyeSogZW50cnkgPSB3
ZWJVbmRvTWFuYWdlckVudHJ5KGVudHJ5SUQpOworICAgIGlmICghZW50cnkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1faXNJblJlZG8gPSB0cnVlOwotICAgIGNvbW1hbmQtPmNvbW1hbmQoKS0+
cmVhcHBseSgpOworICAgIGVudHJ5LT5lbnRyeSgpLT5yZWFwcGx5KCk7CiAgICAgbV9pc0luUmVk
byA9IGZhbHNlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgJKHJldmlzaW9uIDEwMjgzNSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAKICNp
bmNsdWRlICJQbHVnaW4uaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVk
ZSAiU2hhcmVhYmxlQml0bWFwLmgiCi0jaW5jbHVkZSAiV2ViRWRpdENvbW1hbmQuaCIKKyNpbmNs
dWRlICJXZWJVbmRvTWFuYWdlckVudHJ5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxv
YWRlclR5cGVzLmg+CkBAIC0xOTEsOCArMTkxLDggQEAgcHVibGljOgogICAgIFdlYkNvcmU6Oklu
dFJlY3Qgd2luZG93UmVzaXplclJlY3QoKSBjb25zdDsKICAgICBXZWJDb3JlOjpLZXlib2FyZFVJ
TW9kZSBrZXlib2FyZFVJTW9kZSgpOwogCi0gICAgV2ViRWRpdENvbW1hbmQqIHdlYkVkaXRDb21t
YW5kKHVpbnQ2NF90KTsKLSAgICB2b2lkIGFkZFdlYkVkaXRDb21tYW5kKHVpbnQ2NF90LCBXZWJF
ZGl0Q29tbWFuZCopOworICAgIFdlYlVuZG9NYW5hZ2VyRW50cnkqIHdlYlVuZG9NYW5hZ2VyRW50
cnkodWludDY0X3QpOworICAgIHZvaWQgYWRkV2ViVW5kb01hbmFnZXJFbnRyeSh1aW50NjRfdCwg
V2ViVW5kb01hbmFnZXJFbnRyeSopOwogICAgIHZvaWQgcmVtb3ZlV2ViRWRpdENvbW1hbmQodWlu
dDY0X3QpOwogICAgIGJvb2wgaXNJblJlZG8oKSBjb25zdCB7IHJldHVybiBtX2lzSW5SZWRvOyB9
CiAKQEAgLTY2MSw3ICs2NjEsNyBAQCBwcml2YXRlOgogICAgIAogICAgIFJ1bkxvb3A6OlRpbWVy
PFdlYlBhZ2U+IG1fc2V0Q2FuU3RhcnRNZWRpYVRpbWVyOwogCi0gICAgSGFzaE1hcDx1aW50NjRf
dCwgUmVmUHRyPFdlYkVkaXRDb21tYW5kPiA+IG1fZWRpdENvbW1hbmRNYXA7CisgICAgSGFzaE1h
cDx1aW50NjRfdCwgUmVmUHRyPFdlYlVuZG9NYW5hZ2VyRW50cnk+ID4gbV91bmRvTWFuYWdlckVu
dHJ5TWFwOwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3dpbmRvd1Jlc2l6ZXJTaXplOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVW5kb01hbmFnZXJFbnRy
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlVuZG9NYW5hZ2VyRW50cnkuY3BwCShyZXZpc2lvbiAxMDI4MzUpCShmcm9tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJFZGl0Q29tbWFuZC5jcHA6MTAyODM1KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVuZG9NYW5hZ2VyRW50cnkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViRWRpdENvbW1hbmQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUNvbW1hbmRJRCgpCit7CisgICAgc3RhdGljIHVp
bnQ2NF90IHVuaXF1ZUNvbW1hbmRJRCA9IDE7CisgICAgcmV0dXJuIHVuaXF1ZUNvbW1hbmRJRCsr
OworfQorCitQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kPiBXZWJFZGl0Q29tbWFuZDo6Y3JlYXRl
KFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+IGNvbW1hbmQpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJFZGl0Q29tbWFuZChjb21tYW5kLCBnZW5lcmF0ZUNvbW1hbmRJRCgp
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlVuZG9NYW5hZ2VyRW50cnkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVbmRvTWFuYWdlckVudHJ5LmNwcAko
cmV2aXNpb24gMTAyODM1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlVuZG9NYW5hZ2VyRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxOSArMjQsMTkgQEAK
ICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViRWRpdENvbW1hbmQuaCIK
KyNpbmNsdWRlICJXZWJVbmRvTWFuYWdlckVudHJ5LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1zdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVDb21tYW5kSUQoKQorc3RhdGljIHVpbnQ2NF90IGdl
bmVyYXRlVW5kb01hbmFnZXJFbnRyeSgpCiB7Ci0gICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZUNv
bW1hbmRJRCA9IDE7Ci0gICAgcmV0dXJuIHVuaXF1ZUNvbW1hbmRJRCsrOworICAgIHN0YXRpYyB1
aW50NjRfdCB1bmlxdWVFbnRyeUlEID0gMTsKKyAgICByZXR1cm4gdW5pcXVlRW50cnlJRCsrOwog
fQogCi1QYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kPiBXZWJFZGl0Q29tbWFuZDo6Y3JlYXRlKFBh
c3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+IGNvbW1hbmQpCitQYXNzUmVmUHRyPFdlYlVu
ZG9NYW5hZ2VyRW50cnk+IFdlYlVuZG9NYW5hZ2VyRW50cnk6OmNyZWF0ZShQYXNzUmVmUHRyPFdl
YkNvcmU6OlVuZG9NYW5hZ2VyRW50cnk+IGVudHJ5KQogewotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgV2ViRWRpdENvbW1hbmQoY29tbWFuZCwgZ2VuZXJhdGVDb21tYW5kSUQoKSkpOworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViVW5kb01hbmFnZXJFbnRyeShlbnRyeSwgZ2VuZXJhdGVVbmRv
TWFuYWdlckVudHJ5KCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVW5kb01hbmFnZXJFbnRyeS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVbmRvTWFuYWdl
ckVudHJ5LmgJKHJldmlzaW9uIDEwMjgzNSkJKGZyb20gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkVkaXRDb21tYW5kLmg6MTAyODM1KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlVuZG9NYW5hZ2VyRW50cnkuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJFZGl0Q29tbWFuZF9oCisjZGVm
aW5lIFdlYkVkaXRDb21tYW5kX2gKKworI2luY2x1ZGUgPFdlYkNvcmUvRWRpdENvbW1hbmQuaD4K
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkVkaXRDb21tYW5kIDogcHVibGljIFJlZkNv
dW50ZWQ8V2ViRWRpdENvbW1hbmQ+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxX
ZWJFZGl0Q29tbWFuZD4gY3JlYXRlKFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KTsK
KworICAgIFdlYkNvcmU6OkVkaXRDb21tYW5kKiBjb21tYW5kKCkgY29uc3QgeyByZXR1cm4gbV9j
b21tYW5kLmdldCgpOyB9CisgICAgdWludDY0X3QgY29tbWFuZElEKCkgY29uc3QgeyByZXR1cm4g
bV9jb21tYW5kSUQ7IH0KKworcHJpdmF0ZToKKyAgICBXZWJFZGl0Q29tbWFuZChQYXNzUmVmUHRy
PFdlYkNvcmU6OkVkaXRDb21tYW5kPiBjb21tYW5kLCB1aW50NjRfdCBjb21tYW5kSUQpCisgICAg
ICAgIDogbV9jb21tYW5kKGNvbW1hbmQpCisgICAgICAgICwgbV9jb21tYW5kSUQoY29tbWFuZElE
KQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+IG1fY29t
bWFuZDsKKyAgICB1aW50NjRfdCBtX2NvbW1hbmRJRDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gV2ViRWRpdENvbW1hbmRfaApJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVuZG9NYW5hZ2VyRW50cnkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVW5kb01hbmFnZXJFbnRyeS5oCShy
ZXZpc2lvbiAxMDI4MzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
VW5kb01hbmFnZXJFbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywzMSArMjMsMzEgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkVkaXRD
b21tYW5kX2gKLSNkZWZpbmUgV2ViRWRpdENvbW1hbmRfaAorI2lmbmRlZiBXZWJVbmRvTWFuYWdl
ckVudHJ5X2gKKyNkZWZpbmUgV2ViVW5kb01hbmFnZXJFbnRyeV9oCiAKLSNpbmNsdWRlIDxXZWJD
b3JlL0VkaXRDb21tYW5kLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VbmRvTWFuYWdlckVudHJ5Lmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJFZGl0Q29tbWFuZCA6IHB1YmxpYyBSZWZD
b3VudGVkPFdlYkVkaXRDb21tYW5kPiB7CitjbGFzcyBXZWJVbmRvTWFuYWdlckVudHJ5IDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViVW5kb01hbmFnZXJFbnRyeT4gewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kPiBjcmVhdGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpF
ZGl0Q29tbWFuZD4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlVuZG9NYW5hZ2VyRW50cnk+
IGNyZWF0ZShQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9NYW5hZ2VyRW50cnk+KTsKIAotICAgIFdl
YkNvcmU6OkVkaXRDb21tYW5kKiBjb21tYW5kKCkgY29uc3QgeyByZXR1cm4gbV9jb21tYW5kLmdl
dCgpOyB9Ci0gICAgdWludDY0X3QgY29tbWFuZElEKCkgY29uc3QgeyByZXR1cm4gbV9jb21tYW5k
SUQ7IH0KKyAgICBXZWJDb3JlOjpVbmRvTWFuYWdlckVudHJ5KiBlbnRyeSgpIGNvbnN0IHsgcmV0
dXJuIG1fZW50cnkuZ2V0KCk7IH0KKyAgICB1aW50NjRfdCBlbnRyeUlEKCkgY29uc3QgeyByZXR1
cm4gbV9lbnRyeUlEOyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViRWRpdENvbW1hbmQoUGFzc1JlZlB0
cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4gY29tbWFuZCwgdWludDY0X3QgY29tbWFuZElEKQotICAg
ICAgICA6IG1fY29tbWFuZChjb21tYW5kKQotICAgICAgICAsIG1fY29tbWFuZElEKGNvbW1hbmRJ
RCkKKyAgICBXZWJVbmRvTWFuYWdlckVudHJ5KFBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb01hbmFn
ZXJFbnRyeT4gZW50cnksIHVpbnQ2NF90IGVudHJ5SUQpCisgICAgICAgIDogbV9lbnRyeShlbnRy
eSkKKyAgICAgICAgLCBtX2VudHJ5SUQoZW50cnlJRCkKICAgICB7CiAgICAgfQogCi0gICAgUmVm
UHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiBtX2NvbW1hbmQ7Ci0gICAgdWludDY0X3QgbV9jb21t
YW5kSUQ7CisgICAgUmVmUHRyPFdlYkNvcmU6OlVuZG9NYW5hZ2VyRW50cnk+IG1fZW50cnk7Cisg
ICAgdWludDY0X3QgbV9lbnRyeUlEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCShyZXZpc2lvbiAxMDI4MzUpCisrKyBTb3VyY2Uv
V2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTIwMzgsMTQgKzIw
MzgsNiBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0
aD0iLi5cV2ViUHJvY2Vzc1xXZWJQYWdlXFdlYkVkaXRDb21tYW5kLmNwcCIKLQkJCQkJPgotCQkJ
CTwvRmlsZT4KLQkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2Vi
UGFnZVxXZWJFZGl0Q29tbWFuZC5oIgotCQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCiAJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xXZWJQYWdlXFdlYkZyYW1lLmNwcCIKIAkJ
CQkJPgogCQkJCTwvRmlsZT4KQEAgLTIwOTMsNiArMjA4NSwxNCBAQAogCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXFdlYlByb2Nlc3NcV2ViUGFnZVxXZWJQYWdlR3JvdXBQcm94eS5oIgogCQkJCQk+CiAJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xX
ZWJQYWdlXFdlYlVuZG9NYW5hZ2VyRW50cnkuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xXZWJQYWdlXFdlYlVuZG9N
YW5hZ2VyRW50cnkuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KIAkJCQk8RmlsdGVyCiAJCQkJCU5h
bWU9IndpbiIKIAkJCQkJPgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDEwMjg5NykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMTItMTUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgT25seSBFZGl0Q29tbWFuZENvbXBvc2l0aW9uIHNob3VsZCBp
bXBsZW1lbnQgdW5hcHBseSBhbmQgcmVhcHBseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHNyYy9FZGl0b3JDbGllbnRJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RWRpdG9yQ2xpZW50SW1wbDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyk6CisgICAg
ICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudEltcGw6OnJlZ2lzdGVyQ29tbWFuZEZvclJlZG8pOgor
ICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRJbXBsOjp1bmRvKToKKyAgICAgICAgKFdlYktp
dDo6RWRpdG9yQ2xpZW50SW1wbDo6cmVkbyk6CisgICAgICAgICogc3JjL0VkaXRvckNsaWVudElt
cGwuaDoKKwogMjAxMS0xMi0xNCAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBEYXRhYmFzZU9ic2VydmVyIG5lZWRzIHRocmVhZHNhZmUgZml4
ZXMgYW5kIG90aGVyIGNsZWFuLXVwLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RWRpdG9yQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDEwMjgzNSkKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50SW1wbC5oIgogCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFZGl0Q29tbWFuZC5oIgogI2luY2x1ZGUgIkVkaXRv
ci5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIK
QEAgLTQxLDYgKzQwLDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUg
IlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlNwZWxsQ2hlY2tlci5oIgorI2luY2x1ZGUgIlVu
ZG9NYW5hZ2VyRW50cnkuaCIKIAogI2luY2x1ZGUgIkRPTVV0aWxpdGllc1ByaXZhdGUuaCIKICNp
bmNsdWRlICJXZWJBdXRvZmlsbENsaWVudC5oIgpAQCAtMjg4LDE4ICsyODgsMTggQEAgdm9pZCBF
ZGl0b3JDbGllbnRJbXBsOjpkaWRTZXRTZWxlY3Rpb25UeQogewogfQogCi12b2lkIEVkaXRvckNs
aWVudEltcGw6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oUGFzc1JlZlB0cjxFZGl0Q29tbWFuZD4g
Y29tbWFuZCkKK3ZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyhQ
YXNzUmVmUHRyPFVuZG9NYW5hZ2VyRW50cnk+IGVudHJ5KQogewogICAgIGlmIChtX3VuZG9TdGFj
ay5zaXplKCkgPT0gbWF4aW11bVVuZG9TdGFja0RlcHRoKQogICAgICAgICBtX3VuZG9TdGFjay5y
ZW1vdmVGaXJzdCgpOyAvLyBkcm9wIG9sZGVzdCBpdGVtIG9mZiB0aGUgZmFyIGVuZAogICAgIGlm
ICghbV9pblJlZG8pCiAgICAgICAgIG1fcmVkb1N0YWNrLmNsZWFyKCk7Ci0gICAgbV91bmRvU3Rh
Y2suYXBwZW5kKGNvbW1hbmQpOworICAgIG1fdW5kb1N0YWNrLmFwcGVuZChlbnRyeSk7CiB9CiAK
LXZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRy
PEVkaXRDb21tYW5kPiBjb21tYW5kKQordm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZWdpc3RlckNv
bW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8VW5kb01hbmFnZXJFbnRyeT4gZW50cnkpCiB7Ci0gICAg
bV9yZWRvU3RhY2suYXBwZW5kKGNvbW1hbmQpOworICAgIG1fcmVkb1N0YWNrLmFwcGVuZChlbnRy
eSk7CiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMo
KQpAQCAtMzM1LDEwICszMzUsMTAgQEAgYm9vbCBFZGl0b3JDbGllbnRJbXBsOjpjYW5SZWRvKCkg
Y29uc3QKIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6dW5kbygpCiB7CiAgICAgaWYgKGNhblVuZG8o
KSkgewotICAgICAgICBFZGl0Q29tbWFuZFN0YWNrOjppdGVyYXRvciBiYWNrID0gLS1tX3VuZG9T
dGFjay5lbmQoKTsKLSAgICAgICAgUmVmUHRyPEVkaXRDb21tYW5kPiBjb21tYW5kKCpiYWNrKTsK
KyAgICAgICAgVW5kb01hbmFnZXJTdGFjazo6aXRlcmF0b3IgYmFjayA9IC0tbV91bmRvU3RhY2su
ZW5kKCk7CisgICAgICAgIFJlZlB0cjxVbmRvTWFuYWdlckVudHJ5PiBlbnRyeSgqYmFjayk7CiAg
ICAgICAgIG1fdW5kb1N0YWNrLnJlbW92ZShiYWNrKTsKLSAgICAgICAgY29tbWFuZC0+dW5hcHBs
eSgpOworICAgICAgICBlbnRyeS0+dW5hcHBseSgpOwogICAgICAgICAvLyB1bmFwcGx5IHdpbGwg
Y2FsbCB1cyBiYWNrIHRvIHB1c2ggdGhpcyBjb21tYW5kIG9udG8gdGhlIHJlZG8gc3RhY2suCiAg
ICAgfQogfQpAQCAtMzQ2LDEzICszNDYsMTMgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjp1bmRv
KCkKIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVkbygpCiB7CiAgICAgaWYgKGNhblJlZG8oKSkg
ewotICAgICAgICBFZGl0Q29tbWFuZFN0YWNrOjppdGVyYXRvciBiYWNrID0gLS1tX3JlZG9TdGFj
ay5lbmQoKTsKLSAgICAgICAgUmVmUHRyPEVkaXRDb21tYW5kPiBjb21tYW5kKCpiYWNrKTsKKyAg
ICAgICAgVW5kb01hbmFnZXJTdGFjazo6aXRlcmF0b3IgYmFjayA9IC0tbV9yZWRvU3RhY2suZW5k
KCk7CisgICAgICAgIFJlZlB0cjxVbmRvTWFuYWdlckVudHJ5PiBlbnRyeSgqYmFjayk7CiAgICAg
ICAgIG1fcmVkb1N0YWNrLnJlbW92ZShiYWNrKTsKIAogICAgICAgICBBU1NFUlQoIW1faW5SZWRv
KTsKICAgICAgICAgbV9pblJlZG8gPSB0cnVlOwotICAgICAgICBjb21tYW5kLT5yZWFwcGx5KCk7
CisgICAgICAgIGVudHJ5LT5yZWFwcGx5KCk7CiAgICAgICAgIC8vIHJlYXBwbHkgd2lsbCBjYWxs
IHVzIGJhY2sgdG8gcHVzaCB0aGlzIGNvbW1hbmQgb250byB0aGUgdW5kbyBzdGFjay4KICAgICAg
ICAgbV9pblJlZG8gPSBmYWxzZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9FZGl0b3JDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAxMDI4MzUpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY1LDEwICs2NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0Tm9k
ZShXZWJDb3JlOjpOb2RlKiwgV2ViQ29yZTo6UmFuZ2UqLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRB
Y3Rpb24pOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnRUZXh0KGNvbnN0IFdURjo6U3Ry
aW5nJiwgV2ViQ29yZTo6UmFuZ2UqLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pOwogICAg
IHZpcnR1YWwgYm9vbCBzaG91bGREZWxldGVSYW5nZShXZWJDb3JlOjpSYW5nZSopOwotICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYkNvcmU6OlJhbmdlKiBmcm9t
UmFuZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViQ29y
ZTo6UmFuZ2UqIHRvUmFuZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViQ29yZTo6RUFmZmluaXR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgc3RpbGxTZWxlY3RpbmcpOworICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYkNvcmU6OlJhbmdlKiBmcm9tUmFuZ2UsIFdlYkNvcmU6
OlJhbmdlKiB0b1JhbmdlLAorICAgICAgICBXZWJDb3JlOjpFQWZmaW5pdHksIGJvb2wgc3RpbGxT
ZWxlY3RpbmcpOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBcHBseVN0eWxlKFdlYkNvcmU6OkNT
U1N0eWxlRGVjbGFyYXRpb24qLCBXZWJDb3JlOjpSYW5nZSopOwogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShXZWJDb3JlOjpSYW5nZSosIFdlYkNvcmU6OlJhbmdl
Kik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRWRpdGluZygpOwpAQCAtNzcsOCArNzUsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyQ29tbWFuZEZvclVuZG8oUGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4pOwot
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6RWRpdENvbW1hbmQ+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yVW5k
byhQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9NYW5hZ2VyRW50cnk+KTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9NYW5hZ2Vy
RW50cnk+KTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKICAg
ICB2aXJ0dWFsIGJvb2wgY2FuQ29weUN1dChXZWJDb3JlOjpGcmFtZSosIGJvb2wgZGVmYXVsdFZh
bHVlKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUGFzdGUoV2ViQ29yZTo6RnJhbWUqLCBi
b29sIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CkBAIC05OCwyMSArOTYsMTUgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShXZWJDb3JlOjpFbGVtZW50Kik7
CiAgICAgdmlydHVhbCB2b2lkIGlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQoY29uc3QgV1RGOjpT
dHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgbGVhcm5Xb3JkKGNvbnN0IFdURjo6U3RyaW5nJik7
Ci0gICAgdmlydHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciosIGlu
dCBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG1p
c3NwZWxsaW5nTG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQqIG1pc3NwZWxsaW5nTGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFy
T2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXVEY6OlZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogYmFkR3JhbW1hckxvY2F0
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIGJhZEdyYW1t
YXJMZW5ndGgpOworICAgIHZpcnR1YWwgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3Qg
VUNoYXIqLCBpbnQgbGVuZ3RoLCBpbnQqIG1pc3NwZWxsaW5nTG9jYXRpb24sIGludCogbWlzc3Bl
bGxpbmdMZW5ndGgpOworICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25z
dCBVQ2hhciosIGludCBsZW5ndGgsIFdURjo6VmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+
JiwKKyAgICAgICAgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0
aCk7CiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JN
aXNzcGVsbGVkV29yZChjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBX
ZWJDb3JlOjpHcmFtbWFyRGV0YWlsJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5n
VUlXaXRoTWlzc3BlbGxlZFdvcmQoY29uc3QgV1RGOjpTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2hvd1NwZWxsaW5nVUkoYm9vbCBzaG93KTsKICAgICB2aXJ0dWFsIGJvb2wgc3BlbGxpbmdV
SUlzU2hvd2luZygpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBX
VEY6OlN0cmluZyYgd29yZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgV1RGOjpTdHJpbmcmIGNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgZ3Vlc3Nlcyk7CisgICAgdmlydHVhbCB2b2lk
IGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFdURjo6U3RyaW5nJiB3b3JkLCBjb25zdCBXVEY6OlN0
cmluZyYgY29udGV4dCwgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVzc2VzKTsKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwogICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6
OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpOwpAQCAtMTM0LDkgKzEy
Niw5IEBAIHByaXZhdGU6CiAgICAgV2ViVmlld0ltcGwqIG1fd2ViVmlldzsKICAgICBib29sIG1f
aW5SZWRvOwogCi0gICAgdHlwZWRlZiBEZXF1ZTxSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+
ID4gRWRpdENvbW1hbmRTdGFjazsKLSAgICBFZGl0Q29tbWFuZFN0YWNrIG1fdW5kb1N0YWNrOwot
ICAgIEVkaXRDb21tYW5kU3RhY2sgbV9yZWRvU3RhY2s7CisgICAgdHlwZWRlZiBEZXF1ZTxSZWZQ
dHI8V2ViQ29yZTo6VW5kb01hbmFnZXJFbnRyeT4gPiBVbmRvTWFuYWdlclN0YWNrOworICAgIFVu
ZG9NYW5hZ2VyU3RhY2sgbV91bmRvU3RhY2s7CisgICAgVW5kb01hbmFnZXJTdGFjayBtX3JlZG9T
dGFjazsKIAogICAgIC8vIFRoaXMgZmxhZyBpcyBzZXQgdG8gZmFsc2UgaWYgc3BlbGwgY2hlY2sg
Zm9yIHRoaXMgZWRpdG9yIGlzIG1hbnVhbGx5CiAgICAgLy8gdHVybmVkIG9mZi4gVGhlIGRlZmF1
bHQgc2V0dGluZyBpcyBTcGVsbENoZWNrQXV0b21hdGljLgpJbmRleDogU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwko
cmV2aXNpb24gMTAyODk3KQorKysgU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMTItMTUgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgT25seSBFZGl0Q29tbWFuZENvbXBvc2l0aW9uIHNob3Vs
ZCBpbXBsZW1lbnQgdW5hcHBseSBhbmQgcmVhcHBseQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnJlZ2lzdGVyQ29tbWFuZEZv
clVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpyZWdpc3RlckNvbW1h
bmRGb3JSZWRvKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6dW5kbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnJlZG8pOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oOgorCiAyMDExLTEyLTE0ICBHeXV5b3VuZyBLaW0g
IDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gQ2hhbmdlIGVmbCBz
dHlsZSB2YXJpYWJsZSBuYW1lIHdpdGggV2ViS2l0IHN0eWxlIGZvciBpbnRlcm5hbCBmdW5jdGlv
bnMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRF
ZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDEwMjgzNSkKKysrIFNvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDcgKzIzLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnRF
ZmwuaCIKIAotI2luY2x1ZGUgIkVkaXRDb21tYW5kLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAj
aW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgpAQCAt
MzMsNiArMzIsNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlVuZG9NYW5hZ2Vy
RW50cnkuaCIKICNpbmNsdWRlICJXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIgogI2luY2x1ZGUgImV3
a19wcml2YXRlLmgiCiAKQEAgLTE2MCwxNiArMTYwLDE2IEBAIHZvaWQgRWRpdG9yQ2xpZW50RWZs
OjpkaWRTZXRTZWxlY3Rpb25UeXAKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEVk
aXRvckNsaWVudEVmbDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyhXVEY6OlBhc3NSZWZQdHI8RWRp
dENvbW1hbmQ+IGNvbW1hbmQpCit2b2lkIEVkaXRvckNsaWVudEVmbDo6cmVnaXN0ZXJDb21tYW5k
Rm9yVW5kbyhXVEY6OlBhc3NSZWZQdHI8VW5kb01hbmFnZXJFbnRyeT4gZW50cnkpCiB7CiAgICAg
aWYgKCFtX2lzSW5SZWRvKQogICAgICAgICByZWRvU3RhY2suY2xlYXIoKTsKLSAgICB1bmRvU3Rh
Y2sucHJlcGVuZChjb21tYW5kKTsKKyAgICB1bmRvU3RhY2sucHJlcGVuZChlbnRyeSk7CiB9CiAK
LXZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWdpc3RlckNvbW1hbmRGb3JSZWRvKFdURjo6UGFzc1Jl
ZlB0cjxFZGl0Q29tbWFuZD4gY29tbWFuZCkKK3ZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWdpc3Rl
ckNvbW1hbmRGb3JSZWRvKFdURjo6UGFzc1JlZlB0cjxVbmRvTWFuYWdlckVudHJ5PiBlbnRyeSkK
IHsKLSAgICByZWRvU3RhY2sucHJlcGVuZChjb21tYW5kKTsKKyAgICByZWRvU3RhY2sucHJlcGVu
ZChlbnRyeSk7CiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpjbGVhclVuZG9SZWRvT3BlcmF0
aW9ucygpCkBAIC0yMDEsMTkgKzIwMSwxOSBAQCBib29sIEVkaXRvckNsaWVudEVmbDo6Y2FuUmVk
bygpIGNvbnN0CiB2b2lkIEVkaXRvckNsaWVudEVmbDo6dW5kbygpCiB7CiAgICAgaWYgKGNhblVu
ZG8oKSkgewotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+IGNvbW1hbmQgPSB1
bmRvU3RhY2sudGFrZUZpcnN0KCk7Ci0gICAgICAgIGNvbW1hbmQtPnVuYXBwbHkoKTsKKyAgICAg
ICAgUmVmUHRyPFdlYkNvcmU6OlVuZG9NYW5hZ2VyRW50cnk+IGVudHJ5ID0gdW5kb1N0YWNrLnRh
a2VGaXJzdCgpOworICAgICAgICBlbnRyeS0+dW5hcHBseSgpOwogICAgIH0KIH0KIAogdm9pZCBF
ZGl0b3JDbGllbnRFZmw6OnJlZG8oKQogewogICAgIGlmIChjYW5SZWRvKCkpIHsKLSAgICAgICAg
UmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiBjb21tYW5kID0gcmVkb1N0YWNrLnRha2VGaXJz
dCgpOworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6VW5kb01hbmFnZXJFbnRyeT4gZW50cnkgPSBy
ZWRvU3RhY2sudGFrZUZpcnN0KCk7CiAKICAgICAgICAgQVNTRVJUKCFtX2lzSW5SZWRvKTsKICAg
ICAgICAgbV9pc0luUmVkbyA9IHRydWU7Ci0gICAgICAgIGNvbW1hbmQtPnJlYXBwbHkoKTsKKyAg
ICAgICAgZW50cnktPnJlYXBwbHkoKTsKICAgICAgICAgbV9pc0luUmVkbyA9IGZhbHNlOwogICAg
IH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEVmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEVmbC5oCShyZXZpc2lvbiAxMDI4MzUpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsOCAr
NDcsOCBAQCBjbGFzcyBQYWdlOwogY2xhc3MgRWRpdG9yQ2xpZW50RWZsIDogcHVibGljIEVkaXRv
ckNsaWVudCwgcHVibGljIFRleHRDaGVja2VyQ2xpZW50IHsKIHByb3RlY3RlZDoKICAgICBib29s
IG1faXNJblJlZG87Ci0gICAgV1RGOjpEZXF1ZTxXVEY6OlJlZlB0cjxXZWJDb3JlOjpFZGl0Q29t
bWFuZD4gPiB1bmRvU3RhY2s7Ci0gICAgV1RGOjpEZXF1ZTxXVEY6OlJlZlB0cjxXZWJDb3JlOjpF
ZGl0Q29tbWFuZD4gPiByZWRvU3RhY2s7CisgICAgV1RGOjpEZXF1ZTxXVEY6OlJlZlB0cjxXZWJD
b3JlOjpVbmRvTWFuYWdlckVudHJ5PiA+IHVuZG9TdGFjazsKKyAgICBXVEY6OkRlcXVlPFdURjo6
UmVmUHRyPFdlYkNvcmU6OlVuZG9NYW5hZ2VyRW50cnk+ID4gcmVkb1N0YWNrOwogCiBwdWJsaWM6
CiAgICAgRWRpdG9yQ2xpZW50RWZsKEV2YXNfT2JqZWN0ICp2aWV3KTsKQEAgLTg0LDggKzg0LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQo
KTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JVbmRvKFdURjo6UGFzc1Jl
ZlB0cjxFZGl0Q29tbWFuZD4pOwotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JS
ZWRvKFdURjo6UGFzc1JlZlB0cjxFZGl0Q29tbWFuZD4pOworICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckNvbW1hbmRGb3JVbmRvKFdURjo6UGFzc1JlZlB0cjxVbmRvTWFuYWdlckVudHJ5Pik7Cisg
ICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oV1RGOjpQYXNzUmVmUHRyPFVu
ZG9NYW5hZ2VyRW50cnk+KTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlv
bnMoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5Db3B5Q3V0KEZyYW1lKiwgYm9vbCBkZWZhdWx0
VmFsdWUpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMTAyODk3KQorKysg
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMTItMTUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgT25seSBFZGl0Q29tbWFuZENvbXBvc2l0aW9uIHNob3VsZCBpbXBsZW1lbnQgdW5hcHBseSBh
bmQgcmVhcHBseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzQ0OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkVkaXRvckNsaWVudDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyk6CisgICAgICAgIChXZWJLaXQ6
OkVkaXRvckNsaWVudDo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyk6CisgICAgICAgIChXZWJLaXQ6
OkVkaXRvckNsaWVudDo6dW5kbyk6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudDo6cmVk
byk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmg6CisKIDIwMTEt
MTItMTQgIEppbmcgWmhhbyAgPGppbmd6aGFvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBPcGVu
aW5nIHR3byBwb3B1cCBtZW51cyBieSBkaXNwYXRjaEV2ZW50KCkgbWFrZXMgcHJvYmxlbXMuCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEd0ay5jcHAJKHJldmlzaW9uIDEwMjgzNSkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2
LDYgQEAKIAogI2luY2x1ZGUgIkRhdGFPYmplY3RHdGsuaCIKICNpbmNsdWRlICJEdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGsuaCIKLSNpbmNsdWRlICJFZGl0Q29tbWFuZC5oIgogI2luY2x1ZGUgIkVk
aXRvci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xs
ZXIuaCIKQEAgLTM4LDYgKzM3LDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFz
dGVib2FyZEhlbHBlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgorI2lu
Y2x1ZGUgIlVuZG9NYW5hZ2VyRW50cnkuaCIKICNpbmNsdWRlICJXZWJLaXRET01CaW5kaW5nLmgi
CiAjaW5jbHVkZSAiV2ViS2l0RE9NQ1NTU3R5bGVEZWNsYXJhdGlvblByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXRET01IVE1MRWxlbWVudFByaXZhdGUuaCIKQEAgLTM0NSwxOCArMzQ1LDE4IEBA
IHZvaWQgRWRpdG9yQ2xpZW50OjpkaWRTZXRTZWxlY3Rpb25UeXBlc0YKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIEVkaXRvckNsaWVudDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyhX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+IGNvbW1hbmQpCit2b2lkIEVkaXRv
ckNsaWVudDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyhXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
VW5kb01hbmFnZXJFbnRyeT4gZW50cnkpCiB7CiAgICAgaWYgKHVuZG9TdGFjay5zaXplKCkgPT0g
bWF4aW11bVVuZG9TdGFja0RlcHRoKQogICAgICAgICB1bmRvU3RhY2sucmVtb3ZlRmlyc3QoKTsK
ICAgICBpZiAoIW1faXNJblJlZG8pCiAgICAgICAgIHJlZG9TdGFjay5jbGVhcigpOwotICAgIHVu
ZG9TdGFjay5hcHBlbmQoY29tbWFuZCk7CisgICAgdW5kb1N0YWNrLmFwcGVuZChlbnRyeSk7CiB9
CiAKLXZvaWQgRWRpdG9yQ2xpZW50OjpyZWdpc3RlckNvbW1hbmRGb3JSZWRvKFdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4gY29tbWFuZCkKK3ZvaWQgRWRpdG9yQ2xpZW50Ojpy
ZWdpc3RlckNvbW1hbmRGb3JSZWRvKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvTWFuYWdl
ckVudHJ5PiBlbnRyeSkKIHsKLSAgICByZWRvU3RhY2suYXBwZW5kKGNvbW1hbmQpOworICAgIHJl
ZG9TdGFjay5hcHBlbmQoZW50cnkpOwogfQogCiB2b2lkIEVkaXRvckNsaWVudDo6Y2xlYXJVbmRv
UmVkb09wZXJhdGlvbnMoKQpAQCAtMzg4LDIzICszODgsMjMgQEAgYm9vbCBFZGl0b3JDbGllbnQ6
OmNhblJlZG8oKSBjb25zdAogdm9pZCBFZGl0b3JDbGllbnQ6OnVuZG8oKQogewogICAgIGlmIChj
YW5VbmRvKCkpIHsKLSAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiBjb21tYW5k
KCooLS11bmRvU3RhY2suZW5kKCkpKTsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlVuZG9NYW5h
Z2VyRW50cnk+IGVudHJ5KCooLS11bmRvU3RhY2suZW5kKCkpKTsKICAgICAgICAgdW5kb1N0YWNr
LnJlbW92ZSgtLXVuZG9TdGFjay5lbmQoKSk7CiAgICAgICAgIC8vIHVuYXBwbHkgd2lsbCBjYWxs
IHVzIGJhY2sgdG8gcHVzaCB0aGlzIGNvbW1hbmQgb250byB0aGUgcmVkbyBzdGFjay4KLSAgICAg
ICAgY29tbWFuZC0+dW5hcHBseSgpOworICAgICAgICBlbnRyeS0+dW5hcHBseSgpOwogICAgIH0K
IH0KIAogdm9pZCBFZGl0b3JDbGllbnQ6OnJlZG8oKQogewogICAgIGlmIChjYW5SZWRvKCkpIHsK
LSAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiBjb21tYW5kKCooLS1yZWRvU3Rh
Y2suZW5kKCkpKTsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlVuZG9NYW5hZ2VyRW50cnk+IGVu
dHJ5KCooLS1yZWRvU3RhY2suZW5kKCkpKTsKICAgICAgICAgcmVkb1N0YWNrLnJlbW92ZSgtLXJl
ZG9TdGFjay5lbmQoKSk7CiAKICAgICAgICAgQVNTRVJUKCFtX2lzSW5SZWRvKTsKICAgICAgICAg
bV9pc0luUmVkbyA9IHRydWU7CiAgICAgICAgIC8vIHJlYXBwbHkgd2lsbCBjYWxsIHVzIGJhY2sg
dG8gcHVzaCB0aGlzIGNvbW1hbmQgb250byB0aGUgdW5kbyBzdGFjay4KLSAgICAgICAgY29tbWFu
ZC0+cmVhcHBseSgpOworICAgICAgICBlbnRyeS0+cmVhcHBseSgpOwogICAgICAgICBtX2lzSW5S
ZWRvID0gZmFsc2U7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgJKHJldmlzaW9uIDEwMjgzNSkKKysrIFNv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oCSh3b3JraW5n
IGNvcHkpCkBAIC01OCw4ICs1OCw4IEBAIGNsYXNzIEVkaXRvckNsaWVudCA6IHB1YmxpYyBXZWJD
b3JlOjpFZGkKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGJvb2wgbV9pc0luUmVkbzsKIAotICAg
ICAgICBXVEY6OkRlcXVlPFdURjo6UmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiA+IHVuZG9T
dGFjazsKLSAgICAgICAgV1RGOjpEZXF1ZTxXVEY6OlJlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFu
ZD4gPiByZWRvU3RhY2s7CisgICAgICAgIFdURjo6RGVxdWU8V1RGOjpSZWZQdHI8V2ViQ29yZTo6
VW5kb01hbmFnZXJFbnRyeT4gPiB1bmRvU3RhY2s7CisgICAgICAgIFdURjo6RGVxdWU8V1RGOjpS
ZWZQdHI8V2ViQ29yZTo6VW5kb01hbmFnZXJFbnRyeT4gPiByZWRvU3RhY2s7CiAKICAgICBwdWJs
aWM6CiAgICAgICAgIEVkaXRvckNsaWVudChXZWJLaXRXZWJWaWV3Kik7CkBAIC0xMDUsOCArMTA1
LDggQEAgY2xhc3MgRWRpdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkVkaQogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpOwogCi0gICAgICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JVbmRvKFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpFZGl0Q29tbWFuZD4pOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb21tYW5k
Rm9yUmVkbyhXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6OlVuZG9NYW5hZ2VyRW50cnk+KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29t
bWFuZEZvclJlZG8oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9NYW5hZ2VyRW50cnk+KTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCk7CiAKICAgICAg
ICAgdmlydHVhbCBib29sIGNhbkNvcHlDdXQoV2ViQ29yZTo6RnJhbWUqLCBib29sIGRlZmF1bHRW
YWx1ZSkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDI4OTcpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBA
QAorMjAxMS0xMi0xNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAg
ICBPbmx5IEVkaXRDb21tYW5kQ29tcG9zaXRpb24gc2hvdWxkIGltcGxlbWVudCB1bmFwcGx5IGFu
ZCByZWFwcGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NDQ5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoLVtXZWJVbmRvTWFuYWdlckVudHJ5
IGluaXRXaXRoVW5kb01hbmFnZXJFbnRyeTpdKToKKyAgICAgICAgKC1bV2ViVW5kb01hbmFnZXJF
bnRyeSBkZWFsbG9jXSk6CisgICAgICAgICgrW1dlYlVuZG9NYW5hZ2VyRW50cnkgZW50cnlXaXRo
VW5kb01hbmFnZXJFbnRyeTpdKToKKyAgICAgICAgKC1bV2ViVW5kb01hbmFnZXJFbnRyeSBlbnRy
eV0pOgorICAgICAgICAoLVtXZWJFZGl0b3JVbmRvVGFyZ2V0IHVuZG9FZGl0aW5nOl0pOgorICAg
ICAgICAoLVtXZWJFZGl0b3JVbmRvVGFyZ2V0IHJlZG9FZGl0aW5nOl0pOgorICAgICAgICAoV2Vi
RWRpdG9yQ2xpZW50OjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvT3JSZWRvKToKKyAgICAgICAgKFdl
YkVkaXRvckNsaWVudDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyk6CisgICAgICAgIChXZWJFZGl0
b3JDbGllbnQ6OnJlZ2lzdGVyQ29tbWFuZEZvclJlZG8pOgorCiAyMDExLTEyLTE0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1hYyBidWlsZCBmaXggYWZ0ZXIg
cjEwMjg3NC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCShyZXZpc2lvbiAxMDI4MzUpCisrKyBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAw
LDggKzEwMCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENv
bnRlbnRzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRTZWxl
Y3Rpb24oV2ViQ29yZTo6RnJhbWUqKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckNvbW1hbmRGb3JVbmRvKFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRy
PFdlYkNvcmU6OkVkaXRDb21tYW5kPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lz
dGVyQ29tbWFuZEZvclVuZG8oUGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvTWFuYWdlckVudHJ5Pikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpVbmRvTWFuYWdlckVudHJ5PikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJv
b2wgY2FuQ29weUN1dChXZWJDb3JlOjpGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdCBP
VkVSUklERTsKQEAgLTE0Myw3ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJp
bmcpIE9WRVJSSURFOwogI2VuZGlmCiBwcml2YXRlOgotICAgIHZvaWQgcmVnaXN0ZXJDb21tYW5k
Rm9yVW5kb09yUmVkbyhQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiwgYm9vbCBpc1Jl
ZG8pOworICAgIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yVW5kb09yUmVkbyhQYXNzUmVmUHRyPFdl
YkNvcmU6OlVuZG9NYW5hZ2VyRW50cnk+LCBib29sIGlzUmVkbyk7CiAgICAgV2ViRWRpdG9yQ2xp
ZW50KCk7CiAKICAgICBXZWJWaWV3ICptX3dlYlZpZXc7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCShyZXZpc2lvbiAx
MDI4MzUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTU0LDggKzU0LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUv
QXJjaGl2ZVJlc291cmNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0RvY3VtZW50RnJhZ21lbnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRWRpdEFjdGlv
bi5oPgotI2ltcG9ydCA8V2ViQ29yZS9FZGl0Q29tbWFuZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9I
VE1MSW5wdXRFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9IVE1MVGV4dEFyZWFFbGVtZW50Lmg+CkBAIC02NCw2ICs2Miw3IEBACiAjaW1w
b3J0IDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Q
bGF0Zm9ybVN0cmluZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TcGVsbENoZWNrZXIuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvVW5kb01hbmFnZXJFbnRyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Vc2VyVHlw
aW5nR2VzdHVyZUluZGljYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJh
cy5oPgogI2ltcG9ydCA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CkBAIC05MywxNyAr
OTIsMTcgQEAgc3RhdGljIFdlYlZpZXdJbnNlcnRBY3Rpb24ga2l0KEVkaXRvcklucwogc3RhdGlj
IGNvbnN0IGludCBJbnZhbGlkQ29ycmVjdGlvblBhbmVsVGFnID0gMDsKIAogCi1AaW50ZXJmYWNl
IFdlYkVkaXRDb21tYW5kIDogTlNPYmplY3QKK0BpbnRlcmZhY2UgV2ViVW5kb01hbmFnZXJFbnRy
eSA6IE5TT2JqZWN0CiB7Ci0gICAgUmVmUHRyPEVkaXRDb21tYW5kPiBtX2NvbW1hbmQ7ICAgCisg
ICAgUmVmUHRyPFVuZG9NYW5hZ2VyRW50cnk+IG1fZW50cnk7ICAgCiB9CiAKLSsgKFdlYkVkaXRD
b21tYW5kICopY29tbWFuZFdpdGhFZGl0Q29tbWFuZDooUGFzc1JlZlB0cjxFZGl0Q29tbWFuZD4p
Y29tbWFuZDsKLS0gKEVkaXRDb21tYW5kICopY29tbWFuZDsKKysgKFdlYlVuZG9NYW5hZ2VyRW50
cnkgKillbnRyeVdpdGhVbmRvTWFuYWdlckVudHJ5OihQYXNzUmVmUHRyPFVuZG9NYW5hZ2VyRW50
cnk+KWVudHJ5OworLSAoVW5kb01hbmFnZXJFbnRyeSAqKWVudHJ5OwogCiBAZW5kCiAKLUBpbXBs
ZW1lbnRhdGlvbiBXZWJFZGl0Q29tbWFuZAorQGltcGxlbWVudGF0aW9uIFdlYlVuZG9NYW5hZ2Vy
RW50cnkKIAogKyAodm9pZClpbml0aWFsaXplCiB7CkBAIC0xMTIsMTkgKzExMSwxOSBAQCArICh2
b2lkKWluaXRpYWxpemUKICAgICBXZWJDb3JlT2JqQ0ZpbmFsaXplT25NYWluVGhyZWFkKHNlbGYp
OwogfQogCi0tIChpZClpbml0V2l0aEVkaXRDb21tYW5kOihQYXNzUmVmUHRyPEVkaXRDb21tYW5k
Piljb21tYW5kCistIChpZClpbml0V2l0aFVuZG9NYW5hZ2VyRW50cnk6KFBhc3NSZWZQdHI8VW5k
b01hbmFnZXJFbnRyeT4pZW50cnkKIHsKLSAgICBBU1NFUlQoY29tbWFuZCk7CisgICAgQVNTRVJU
KGVudHJ5KTsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICBtX2NvbW1hbmQgPSBjb21tYW5kOworICAgIG1fZW50cnkgPSBl
bnRyeTsKICAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgaWYg
KFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRlT25NYWluVGhyZWFkKFtXZWJFZGl0Q29tbWFu
ZCBjbGFzc10sIHNlbGYpKQorICAgIGlmIChXZWJDb3JlT2JqQ1NjaGVkdWxlRGVhbGxvY2F0ZU9u
TWFpblRocmVhZChbV2ViVW5kb01hbmFnZXJFbnRyeSBjbGFzc10sIHNlbGYpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBbc3VwZXIgZGVhbGxvY107CkBAIC0xMzcsMTQgKzEzNiwxNCBAQCAtICh2
b2lkKWZpbmFsaXplCiAgICAgW3N1cGVyIGZpbmFsaXplXTsKIH0KIAotKyAoV2ViRWRpdENvbW1h
bmQgKiljb21tYW5kV2l0aEVkaXRDb21tYW5kOihQYXNzUmVmUHRyPEVkaXRDb21tYW5kPiljb21t
YW5kCisrIChXZWJVbmRvTWFuYWdlckVudHJ5ICopZW50cnlXaXRoVW5kb01hbmFnZXJFbnRyeToo
UGFzc1JlZlB0cjxVbmRvTWFuYWdlckVudHJ5PillbnRyeQogewotICAgIHJldHVybiBbW1tXZWJF
ZGl0Q29tbWFuZCBhbGxvY10gaW5pdFdpdGhFZGl0Q29tbWFuZDpjb21tYW5kXSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIFtbW1dlYlVuZG9NYW5hZ2VyRW50cnkgYWxsb2NdIGluaXRXaXRoVW5k
b01hbmFnZXJFbnRyeTplbnRyeV0gYXV0b3JlbGVhc2VdOwogfQogCi0tIChFZGl0Q29tbWFuZCAq
KWNvbW1hbmQKKy0gKFVuZG9NYW5hZ2VyRW50cnkgKillbnRyeQogewotICAgIHJldHVybiBtX2Nv
bW1hbmQuZ2V0KCk7CisgICAgcmV0dXJuIG1fZW50cnkuZ2V0KCk7CiB9CiAKIEBlbmQKQEAgLTE2
MiwxNCArMTYxLDE0IEBAIC0gKHZvaWQpcmVkb0VkaXRpbmc6KGlkKWFyZzsKIAogLSAodm9pZCl1
bmRvRWRpdGluZzooaWQpYXJnCiB7Ci0gICAgQVNTRVJUKFthcmcgaXNLaW5kT2ZDbGFzczpbV2Vi
RWRpdENvbW1hbmQgY2xhc3NdXSk7Ci0gICAgW2FyZyBjb21tYW5kXS0+dW5hcHBseSgpOworICAg
IEFTU0VSVChbYXJnIGlzS2luZE9mQ2xhc3M6W1dlYlVuZG9NYW5hZ2VyRW50cnkgY2xhc3NdXSk7
CisgICAgW2FyZyBlbnRyeV0tPnVuYXBwbHkoKTsKIH0KIAogLSAodm9pZClyZWRvRWRpdGluZzoo
aWQpYXJnCiB7Ci0gICAgQVNTRVJUKFthcmcgaXNLaW5kT2ZDbGFzczpbV2ViRWRpdENvbW1hbmQg
Y2xhc3NdXSk7Ci0gICAgW2FyZyBjb21tYW5kXS0+cmVhcHBseSgpOworICAgIEFTU0VSVChbYXJn
IGlzS2luZE9mQ2xhc3M6W1dlYlVuZG9NYW5hZ2VyRW50cnkgY2xhc3NdXSk7CisgICAgW2FyZyBl
bnRyeV0tPnJlYXBwbHkoKTsKIH0KIAogQGVuZApAQCAtNTEzLDI1ICs1MTIsMjUgQEAgc3RhdGlj
IE5TU3RyaW5nKiB1bmRvTmFtZUZvckVkaXRBY3Rpb24oRQogICAgIHJldHVybiBuaWw7CiB9CiAK
LXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvT3JSZWRvKFBhc3NS
ZWZQdHI8RWRpdENvbW1hbmQ+IGNtZCwgYm9vbCBpc1JlZG8pCit2b2lkIFdlYkVkaXRvckNsaWVu
dDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kb09yUmVkbyhQYXNzUmVmUHRyPFVuZG9NYW5hZ2VyRW50
cnk+IGVudHJ5LCBib29sIGlzUmVkbykKIHsKLSAgICBBU1NFUlQoY21kKTsKKyAgICBBU1NFUlQo
ZW50cnkpOwogICAgIAogICAgIE5TVW5kb01hbmFnZXIgKnVuZG9NYW5hZ2VyID0gW21fd2ViVmll
dyB1bmRvTWFuYWdlcl07Ci0gICAgTlNTdHJpbmcgKmFjdGlvbk5hbWUgPSB1bmRvTmFtZUZvckVk
aXRBY3Rpb24oY21kLT5lZGl0aW5nQWN0aW9uKCkpOwotICAgIFdlYkVkaXRDb21tYW5kICpjb21t
YW5kID0gW1dlYkVkaXRDb21tYW5kIGNvbW1hbmRXaXRoRWRpdENvbW1hbmQ6Y21kXTsKLSAgICBb
dW5kb01hbmFnZXIgcmVnaXN0ZXJVbmRvV2l0aFRhcmdldDptX3VuZG9UYXJnZXQuZ2V0KCkgc2Vs
ZWN0b3I6KGlzUmVkbyA/IEBzZWxlY3RvcihyZWRvRWRpdGluZzopIDogQHNlbGVjdG9yKHVuZG9F
ZGl0aW5nOikpIG9iamVjdDpjb21tYW5kXTsKKyAgICBOU1N0cmluZyAqYWN0aW9uTmFtZSA9IHVu
ZG9OYW1lRm9yRWRpdEFjdGlvbihlbnRyeS0+ZWRpdGluZ0FjdGlvbigpKTsKKyAgICBXZWJVbmRv
TWFuYWdlckVudHJ5ICp3ZWJFbnRyeSA9IFtXZWJVbmRvTWFuYWdlckVudHJ5IGVudHJ5V2l0aFVu
ZG9NYW5hZ2VyRW50cnk6ZW50cnldOworICAgIFt1bmRvTWFuYWdlciByZWdpc3RlclVuZG9XaXRo
VGFyZ2V0Om1fdW5kb1RhcmdldC5nZXQoKSBzZWxlY3RvcjooaXNSZWRvID8gQHNlbGVjdG9yKHJl
ZG9FZGl0aW5nOikgOiBAc2VsZWN0b3IodW5kb0VkaXRpbmc6KSkgb2JqZWN0OndlYkVudHJ5XTsK
ICAgICBpZiAoYWN0aW9uTmFtZSkKICAgICAgICAgW3VuZG9NYW5hZ2VyIHNldEFjdGlvbk5hbWU6
YWN0aW9uTmFtZV07CiAgICAgbV9oYXZlVW5kb1JlZG9PcGVyYXRpb25zID0gWUVTOwogfQogCi12
b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyhQYXNzUmVmUHRyPEVk
aXRDb21tYW5kPiBjbWQpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJDb21tYW5kRm9y
VW5kbyhQYXNzUmVmUHRyPFVuZG9NYW5hZ2VyRW50cnk+IGNtZCkKIHsKICAgICByZWdpc3RlckNv
bW1hbmRGb3JVbmRvT3JSZWRvKGNtZCwgZmFsc2UpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVu
dDo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPEVkaXRDb21tYW5kPiBjbWQpCit2
b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPFVu
ZG9NYW5hZ2VyRW50cnk+IGNtZCkKIHsKICAgICByZWdpc3RlckNvbW1hbmRGb3JVbmRvT3JSZWRv
KGNtZCwgdHJ1ZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gMTAyODk3KQorKysg
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBA
QAorMjAxMS0xMi0xNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAg
ICBPbmx5IEVkaXRDb21tYW5kQ29tcG9zaXRpb24gc2hvdWxkIGltcGxlbWVudCB1bmFwcGx5IGFu
ZCByZWFwcGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NDQ5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEVkaXRDb21tYW5kUXQgaXMgdG8gYmUgcmVuYW1lZCB0byBVbmRvTWFuYWdlckVudHJ5UXQgaW4g
YSBmb2xsb3cgdXAgcGF0Y2guCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0Q29tbWFu
ZFF0LmNwcDoKKyAgICAgICAgKEVkaXRDb21tYW5kUXQ6OkVkaXRDb21tYW5kUXQpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRDb21tYW5kUXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRR
dDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRRdDo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyk6CisKIDIwMTEtMTItMTQgIEppbmcgWmhhbyAg
PGppbmd6aGFvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBPcGVuaW5nIHR3byBwb3B1cCBtZW51
cyBieSBkaXNwYXRjaEV2ZW50KCkgbWFrZXMgcHJvYmxlbXMuCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRDb21tYW5kUXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdENvbW1hbmRRdC5jcHAJKHJldmlzaW9uIDEw
MjgzNSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdENvbW1hbmRRdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE0ICsyMywxNCBAQAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKICNpZm5kZWYgUVRfTk9fVU5ET0NPTU1BTkQKLUVkaXRDb21tYW5kUXQ6OkVkaXRD
b21tYW5kUXQoV1RGOjpSZWZQdHI8RWRpdENvbW1hbmQ+IGNtZCwgUVVuZG9Db21tYW5kICpwYXJl
bnQpCitFZGl0Q29tbWFuZFF0OjpFZGl0Q29tbWFuZFF0KFdURjo6UmVmUHRyPFVuZG9NYW5hZ2Vy
RW50cnk+IGNtZCwgUVVuZG9Db21tYW5kICpwYXJlbnQpCiAgICAgOiBRVW5kb0NvbW1hbmQocGFy
ZW50KQogICAgICwgbV9jbWQoY21kKQogICAgICwgbV9maXJzdCh0cnVlKQogewogfQogI2Vsc2UK
LUVkaXRDb21tYW5kUXQ6OkVkaXRDb21tYW5kUXQoV1RGOjpSZWZQdHI8RWRpdENvbW1hbmQ+IGNt
ZCkKK0VkaXRDb21tYW5kUXQ6OkVkaXRDb21tYW5kUXQoV1RGOjpSZWZQdHI8VW5kb01hbmFnZXJF
bnRyeT4gY21kKQogICAgIDogbV9jbWQoY21kKQogICAgICwgbV9maXJzdCh0cnVlKQogewpJbmRl
eDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0Q29tbWFuZFF0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0Q29tbWFuZFF0LmgJ
KHJldmlzaW9uIDEwMjgzNSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRp
dENvbW1hbmRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAjaWZuZGVmIEVk
aXRDb21tYW5kUXRfaAogI2RlZmluZSBFZGl0Q29tbWFuZFF0X2gKIAotI2luY2x1ZGUgPEVkaXRD
b21tYW5kLmg+CisjaW5jbHVkZSA8VW5kb01hbmFnZXJFbnRyeS5oPgogI2luY2x1ZGUgPFFVbmRv
Q29tbWFuZD4KICNpbmNsdWRlIDxxZ2xvYmFsLmg+CiAKQEAgLTMxLDkgKzMxLDkgQEAgY2xhc3Mg
RWRpdENvbW1hbmRRdAogewogICAgIHB1YmxpYzoKICNpZm5kZWYgUVRfTk9fVU5ET0NPTU1BTkQK
LSAgICAgICAgRWRpdENvbW1hbmRRdChXVEY6OlJlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4g
Y21kLCBRVW5kb0NvbW1hbmQgKnBhcmVudCA9IDApOworICAgICAgICBFZGl0Q29tbWFuZFF0KFdU
Rjo6UmVmUHRyPFdlYkNvcmU6OlVuZG9NYW5hZ2VyRW50cnk+IGNtZCwgUVVuZG9Db21tYW5kICpw
YXJlbnQgPSAwKTsKICNlbHNlCi0gICAgICAgIEVkaXRDb21tYW5kUXQoV1RGOjpSZWZQdHI8V2Vi
Q29yZTo6RWRpdENvbW1hbmQ+IGNtZCk7CisgICAgICAgIEVkaXRDb21tYW5kUXQoV1RGOjpSZWZQ
dHI8V2ViQ29yZTo6VW5kb01hbmFnZXJFbnRyeT4gY21kKTsKICNlbmRpZgogICAgICAgICB+RWRp
dENvbW1hbmRRdCgpOwogCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEVkaXRDb21tYW5kUXQKICAg
ICAgICAgdm9pZCB1bmRvKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBXVEY6OlJlZlB0cjxX
ZWJDb3JlOjpFZGl0Q29tbWFuZD4gbV9jbWQ7CisgICAgICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6
OlVuZG9NYW5hZ2VyRW50cnk+IG1fY21kOwogICAgICAgICBib29sIG1fZmlyc3Q7CiB9OwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFF0LmNwcAkocmV2aXNpb24gMTAyODM1KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNywxNyArMjM3LDE3
IEBAIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OnNlbGVjdFdvcmRCZWZvcmVNZW4KICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgRWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8o
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiBjbWQpCit2b2lkIEVkaXRvckNs
aWVudFF0OjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpV
bmRvTWFuYWdlckVudHJ5PiBlbnRyeSkKIHsKICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAg
RnJhbWUqIGZyYW1lID0gbV9wYWdlLT5kLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNl
ZE9yTWFpbkZyYW1lKCk7CiAgICAgaWYgKG1faW5VbmRvUmVkbyB8fCAoZnJhbWUgJiYgIWZyYW1l
LT5lZGl0b3IoKS0+bGFzdEVkaXRDb21tYW5kKCkgLyogSEFDSyEhIERvbid0IHJlY3JlYXRlIHVu
ZG9zICovKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcGFnZS0+dW5kb1N0YWNrKCktPnB1c2go
bmV3IEVkaXRDb21tYW5kUXQoY21kKSk7CisgICAgbV9wYWdlLT51bmRvU3RhY2soKS0+cHVzaChu
ZXcgRWRpdENvbW1hbmRRdChlbnRyeSkpOwogI2VuZGlmIC8vIFFUX05PX1VORE9TVEFDSwogfQog
Ci12b2lkIEVkaXRvckNsaWVudFF0OjpyZWdpc3RlckNvbW1hbmRGb3JSZWRvKFdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4pCit2b2lkIEVkaXRvckNsaWVudFF0OjpyZWdpc3Rl
ckNvbW1hbmRGb3JSZWRvKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvTWFuYWdlckVudHJ5
PikKIHsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50UXQuaAkocmV2aXNpb24gMTAyODM1KQorKysgU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw4ICs3
NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJv
YXJkKCk7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oUGFz
c1JlZlB0cjxFZGl0Q29tbWFuZD4pOwotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRG
b3JSZWRvKFBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0
ZXJDb21tYW5kRm9yVW5kbyhQYXNzUmVmUHRyPFVuZG9NYW5hZ2VyRW50cnk+KTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPFVuZG9NYW5hZ2VyRW50
cnk+KTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBjYW5Db3B5Q3V0KEZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0
OwpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTAyODk3KQorKysgU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMTIt
MTUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgT25seSBFZGl0
Q29tbWFuZENvbXBvc2l0aW9uIHNob3VsZCBpbXBsZW1lbnQgdW5hcHBseSBhbmQgcmVhcHBseQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0OTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JVbmRvQ29tbWFu
ZDo6V2ViRWRpdG9yVW5kb0NvbW1hbmQpOgorICAgICAgICAoV2ViRWRpdG9yVW5kb0NvbW1hbmQ6
OmV4ZWN1dGUpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckNvbW1hbmRGb3JV
bmRvKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisKIDIwMTEtMTIt
MTQgIEppbmcgWmhhbyAgPGppbmd6aGFvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBPcGVuaW5n
IHR3byBwb3B1cCBtZW51cyBieSBkaXNwYXRjaEV2ZW50KCkgbWFrZXMgcHJvYmxlbXMuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAJKHJldmlzaW9uIDEwMjgzNSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDYg
QEAKICNpbmNsdWRlICJET01Db3JlQ2xhc3Nlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmlu
Zy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Vk
aXRDb21tYW5kLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRWxlbWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSFRNTElucHV0RWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE5hbWVz
Lmg+CkBAIC00Myw2ICs0Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SYW5nZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVW5kb01hbmFnZXJFbnRyeS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24uaD4KIApAQCAtNDI2LDcgKzQyNiw3IEBAIHZvaWQg
V2ViRWRpdG9yQ2xpZW50Ojp0ZXh0RGlkQ2hhbmdlSW5UZXgKIGNsYXNzIFdlYkVkaXRvclVuZG9D
b21tYW5kIDogcHVibGljIElXZWJVbmRvQ29tbWFuZAogewogcHVibGljOgotICAgIFdlYkVkaXRv
clVuZG9Db21tYW5kKFBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+IGVkaXRDb21tYW5kLCBib29sIGlz
VW5kbyk7CisgICAgV2ViRWRpdG9yVW5kb0NvbW1hbmQoUGFzc1JlZlB0cjxVbmRvTWFuYWdlckVu
dHJ5PiwgYm9vbCBpc1VuZG8pOwogICAgIHZvaWQgZXhlY3V0ZSgpOwogCiAgICAgLy8gSVVua25v
d24KQEAgLTQzNiwxMiArNDM2LDEyIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBVTE9ORyBt
X3JlZkNvdW50OwotICAgIFJlZlB0cjxFZGl0Q29tbWFuZD4gbV9lZGl0Q29tbWFuZDsKKyAgICBS
ZWZQdHI8VW5kb01hbmFnZXJFbnRyeT4gbV9lbnRyeTsKICAgICBib29sIG1faXNVbmRvOwogfTsK
IAotV2ViRWRpdG9yVW5kb0NvbW1hbmQ6OldlYkVkaXRvclVuZG9Db21tYW5kKFBhc3NSZWZQdHI8
RWRpdENvbW1hbmQ+IGVkaXRDb21tYW5kLCBib29sIGlzVW5kbykKLSAgICA6IG1fZWRpdENvbW1h
bmQoZWRpdENvbW1hbmQpCitXZWJFZGl0b3JVbmRvQ29tbWFuZDo6V2ViRWRpdG9yVW5kb0NvbW1h
bmQoUGFzc1JlZlB0cjxVbmRvTWFuYWdlckVudHJ5PiBlbnRyeSwgYm9vbCBpc1VuZG8pCisgICAg
OiBtX2VudHJ5KGVudHJ5KQogICAgICwgbV9pc1VuZG8oaXNVbmRvKSAKICAgICAsIG1fcmVmQ291
bnQoMSkKIHsgCkBAIC00NTAsOSArNDUwLDkgQEAgV2ViRWRpdG9yVW5kb0NvbW1hbmQ6OldlYkVk
aXRvclVuZG9Db21tYQogdm9pZCBXZWJFZGl0b3JVbmRvQ29tbWFuZDo6ZXhlY3V0ZSgpCiB7CiAg
ICAgaWYgKG1faXNVbmRvKQotICAgICAgICBtX2VkaXRDb21tYW5kLT51bmFwcGx5KCk7CisgICAg
ICAgIG1fZW50cnktPnVuYXBwbHkoKTsKICAgICBlbHNlCi0gICAgICAgIG1fZWRpdENvbW1hbmQt
PnJlYXBwbHkoKTsKKyAgICAgICAgbV9lbnRyeS0+cmVhcHBseSgpOwogfQogCiBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkVkaXRvclVuZG9Db21tYW5kOjpRdWVyeUludGVyZmFjZShSRUZJ
SUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKQEAgLTUyNywxMiArNTI3LDEyIEBAIHN0YXRpYyBT
dHJpbmcgdW5kb05hbWVGb3JFZGl0QWN0aW9uKEVkaXQKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9
CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKFBhc3NSZWZQ
dHI8RWRpdENvbW1hbmQ+IGNvbW1hbmQpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJD
b21tYW5kRm9yVW5kbyhQYXNzUmVmUHRyPFVuZG9NYW5hZ2VyRW50cnk+IGVudHJ5KQogewogICAg
IElXZWJVSURlbGVnYXRlKiB1aURlbGVnYXRlID0gMDsKICAgICBpZiAoU1VDQ0VFREVEKG1fd2Vi
Vmlldy0+dWlEZWxlZ2F0ZSgmdWlEZWxlZ2F0ZSkpKSB7Ci0gICAgICAgIFN0cmluZyBhY3Rpb25O
YW1lID0gdW5kb05hbWVGb3JFZGl0QWN0aW9uKGNvbW1hbmQtPmVkaXRpbmdBY3Rpb24oKSk7Ci0g
ICAgICAgIFdlYkVkaXRvclVuZG9Db21tYW5kKiB1bmRvQ29tbWFuZCA9IG5ldyBXZWJFZGl0b3JV
bmRvQ29tbWFuZChjb21tYW5kLCB0cnVlKTsKKyAgICAgICAgU3RyaW5nIGFjdGlvbk5hbWUgPSB1
bmRvTmFtZUZvckVkaXRBY3Rpb24oZW50cnktPmVkaXRpbmdBY3Rpb24oKSk7CisgICAgICAgIFdl
YkVkaXRvclVuZG9Db21tYW5kKiB1bmRvQ29tbWFuZCA9IG5ldyBXZWJFZGl0b3JVbmRvQ29tbWFu
ZChlbnRyeSwgdHJ1ZSk7CiAgICAgICAgIGlmICghdW5kb0NvbW1hbmQpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIHVpRGVsZWdhdGUtPnJlZ2lzdGVyVW5kb1dpdGhUYXJnZXQobV91bmRv
VGFyZ2V0LCAwLCB1bmRvQ29tbWFuZCk7CkBAIC01NDMsMTEgKzU0MywxMSBAQCB2b2lkIFdlYkVk
aXRvckNsaWVudDo6cmVnaXN0ZXJDb21tYW5kRm9yCiAgICAgfQogfQogCi12b2lkIFdlYkVkaXRv
ckNsaWVudDo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPEVkaXRDb21tYW5kPiBj
b21tYW5kKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oUGFz
c1JlZlB0cjxVbmRvTWFuYWdlckVudHJ5PiBlbnRyeSkKIHsKICAgICBJV2ViVUlEZWxlZ2F0ZSog
dWlEZWxlZ2F0ZSA9IDA7CiAgICAgaWYgKFNVQ0NFRURFRChtX3dlYlZpZXctPnVpRGVsZWdhdGUo
JnVpRGVsZWdhdGUpKSkgewotICAgICAgICBXZWJFZGl0b3JVbmRvQ29tbWFuZCogdW5kb0NvbW1h
bmQgPSBuZXcgV2ViRWRpdG9yVW5kb0NvbW1hbmQoY29tbWFuZCwgZmFsc2UpOworICAgICAgICBX
ZWJFZGl0b3JVbmRvQ29tbWFuZCogdW5kb0NvbW1hbmQgPSBuZXcgV2ViRWRpdG9yVW5kb0NvbW1h
bmQoZW50cnksIGZhbHNlKTsKICAgICAgICAgaWYgKCF1bmRvQ29tbWFuZCkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgdWlEZWxlZ2F0ZS0+cmVnaXN0ZXJVbmRvV2l0aFRhcmdldChtX3Vu
ZG9UYXJnZXQsIDAsIHVuZG9Db21tYW5kKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCShyZXZpc2lvbiAxMDI4MzUpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNzQsOCArNzQsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQoKTsKICAgICBib29sIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5h
YmxlZCgpOwogCi0gICAgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JVbmRvKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6RWRpdENvbW1hbmQ+KTsKLSAgICB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oUGFz
c1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4pOworICAgIHZvaWQgcmVnaXN0ZXJDb21tYW5k
Rm9yVW5kbyhQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9NYW5hZ2VyRW50cnk+KTsKKyAgICB2b2lk
IHJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oUGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvTWFuYWdlckVu
dHJ5Pik7CiAgICAgdm9pZCBjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpOwogCiAgICAgYm9vbCBj
YW5Db3B5Q3V0KFdlYkNvcmU6OkZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0OwpJbmRl
eDogU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93aW5jZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjg5NykKKysrIFNvdXJjZS9XZWJLaXQv
d2luY2UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTIt
MTUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgT25seSBFZGl0
Q29tbWFuZENvbXBvc2l0aW9uIHNob3VsZCBpbXBsZW1lbnQgdW5hcHBseSBhbmQgcmVhcHBseQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0OTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xp
ZW50V2luQ0U6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8pOgorICAgICAgICAoV2ViS2l0OjpFZGl0
b3JDbGllbnRXaW5DRTo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaDoKKwogMjAxMS0xMi0xNCAgSmluZyBaaGFvICA8
amluZ3poYW9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE9wZW5pbmcgdHdvIHBvcHVwIG1lbnVz
IGJ5IGRpc3BhdGNoRXZlbnQoKSBtYWtlcyBwcm9ibGVtcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
d2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuY3Bw
CShyZXZpc2lvbiAxMDI4MzUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFdpbkNFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTEgKzI0LDExIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50V2luQ0UuaCIKIAot
I2luY2x1ZGUgIkVkaXRDb21tYW5kLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJL
ZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJVbmRvTWFuYWdlckVudHJ5LmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xNDQs
MTIgKzE0NCwxMiBAQCB2b2lkIEVkaXRvckNsaWVudFdpbkNFOjpkaWRTZXRTZWxlY3Rpb25UCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBFZGl0b3JDbGllbnRXaW5DRTo6cmVnaXN0
ZXJDb21tYW5kRm9yVW5kbyhXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+IGNv
bW1hbmQpCit2b2lkIEVkaXRvckNsaWVudFdpbkNFOjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvTWFuYWdlckVudHJ5PikKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIEVkaXRvckNsaWVudFdpbkNFOjpyZWdpc3RlckNvbW1hbmRG
b3JSZWRvKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4gY29tbWFuZCkKK3Zv
aWQgRWRpdG9yQ2xpZW50V2luQ0U6OnJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OlVuZG9NYW5hZ2VyRW50cnk+KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFdpbkNFLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRXaW5DRS5oCShyZXZpc2lvbiAxMDI4MzUpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY1LDggKzY1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRTZWxlY3Rpb25UeXBl
c0ZvclBhc3RlYm9hcmQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JV
bmRvKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4pOwotICAgIHZpcnR1YWwg
dm9pZCByZWdpc3RlckNvbW1hbmRGb3JSZWRvKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0
Q29tbWFuZD4pOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JVbmRvKFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvTWFuYWdlckVudHJ5Pik7CisgICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9NYW5h
Z2VyRW50cnk+KTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsK
IAogICAgIHZpcnR1YWwgYm9vbCBjYW5Db3B5Q3V0KFdlYkNvcmU6OkZyYW1lKiwgYm9vbCBkZWZh
dWx0VmFsdWUpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119659</attachid>
            <date>2011-12-16 13:15:47 -0800</date>
            <delta_ts>2011-12-16 13:18:01 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-74490-20111216131546.patch</filename>
            <type>text/plain</type>
            <size>101776</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzA3MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDExLTEyLTE2ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE9ubHkgRWRpdENvbW1hbmRDb21w
b3NpdGlvbiBzaG91bGQgaW1wbGVtZW50IHVuYXBwbHkgYW5kIHJlYXBwbHkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NDkwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgSW50cm9kdWNlIG5ldyBhYnN0cmFjdCBj
bGFzcyBVbmRvU3RlcCB0byByZXBsYWNlIEVkaXRDb21tYW5kIGZvciBFZGl0b3JDbGllbnQsIGFu
ZCBtYWtlIEVkaXRDb21tYW5kCisgICAgICAgIHByaXZhdGUgdG8gV2ViQ29yZS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6Y3JlYXRlKTogVGFrZXMgRWRpdEFjdGlvbiBpbnN0ZWFk
IG9mIGJvb2xlYW4gZm9yIENyZWF0ZUxpbmtDb21tYW5kLgorICAgICAgICAoV2ViQ29yZTo6RWRp
dENvbW1hbmRDb21wb3NpdGlvbjo6RWRpdENvbW1hbmRDb21wb3NpdGlvbik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6dW5hcHBseSk6IE1vdmVkIGZy
b20gRWRpdENvbW1hbmQ7IHdlIGRvbid0IGhhdmUgdG8gY2FsbCBpc1RvcExldmVsQ29tbWFuZAor
ICAgICAgICBhbnltb3JlIGJlY2F1c2UgRWRpdENvbW1hbmRDb21wb3NpdGlvbiBpcyBhbHdheXMg
dG9wLWxldmVsLiBJbiBmYWN0LCB0aGUgb25seSB0aGluZyB1bmFwcGx5L3JlYXBwbHkgZG8KKyAg
ICAgICAgaW4gYWRkaXRpb24gdG8gd2hhdCBkb1VuYXBwbHkvZG9SZWFwcGx5IGRvIGZvciBzdWIt
bGV2ZWwgY29tbWFuZHMgaXMgZGlzYWJsaW5nIGFuZCBlbmFibGluZyBkZWxldGUgYnV0dG9uCisg
ICAgICAgIGFuZCBkZWZpbmluZyBhbiBldmVudCBxdWV1ZSBzY29wZS4gSG93ZXZlciwgdGhlc2Ug
Y2FuIGJlIGRvbmUgYXQgdG9wLWxldmVsIGNvbW1hbmQgYW55d2F5LCBzbyB3ZSBub3cgb25seSBj
YWxsCisgICAgICAgIGRvQXBwbHkgZm9yIHN1Yi1sZXZlbCBjb21tYW5kcy4KKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRDb21tYW5kQ29tcG9zaXRpb246OnJlYXBwbHkpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRDb21tYW5kQ29tcG9zaXRpb246OnNldFN0YXJ0aW5nU2VsZWN0aW9uKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjpzZXRFbmRp
bmdTZWxlY3Rpb24pOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5Q29tbWFuZCk6IE1v
dmVkIGZyb20gRWRpdENvbW1hbmQuCisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29t
bWFuZDo6YXBwbHkpOiBNb3ZlZCBmcm9tIEVkaXRDb21tYW5kOyBkb2Vzbid0IGNhbGwgaXNUb3BM
ZXZlbENvbW1hbmQgZm9yIHRoZSBzYW1lIHJlYXNvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBv
c2l0ZUVkaXRDb21tYW5kOjplbnN1cmVDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwbHlDb21tYW5kVG9Db21wb3NpdGUpOiBDYWxsIGRvQXBw
bHkgaW5zdGVhZCBvZiBhcHBseSBmb3IgdGhlIHNhbWUgcmVhc29uLgorICAgICAgICAqIGVkaXRp
bmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRDb21tYW5k
Q29tcG9zaXRpb246Ondhc0NyZWF0ZUxpbmtDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRDb21tYW5kQ29tcG9zaXRpb246OnN0YXJ0aW5nU2VsZWN0aW9uKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjplbmRpbmdTZWxlY3Rpb24pOiBBZGRl
ZC4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRDb21tYW5kOjpzZXRTdGFydGluZ1NlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0Q29tbWFuZDo6c2V0RW5kaW5nU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBs
ZUVkaXRDb21tYW5kOjpkb1JlYXBwbHkpOiBNb3ZlZCBmcm9tIEVkaXRDb21tYW5kLgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdENvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL1VuZG9TdGVwLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VW5kb1N0ZXA6On5VbmRvU3RlcCk6CisgICAgICAg
ICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlFZGl0b3JD
bGllbnQ6OnNob3VsZEluc2VydE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlFZGl0b3JD
bGllbnQ6OmRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJD
b3JlOjpFbXB0eUVkaXRvckNsaWVudDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyk6IFRha2VzIFVu
ZG9TdGVwIGluc3RlYWQgb2YgRWRpdENvbW1hbmQuCisgICAgICAgIChXZWJDb3JlOjpFbXB0eUVk
aXRvckNsaWVudDo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyk6IERpdHRvLgorICAgICAgICAqIHBh
Z2UvRWRpdG9yQ2xpZW50Lmg6CisKIDIwMTEtMTItMTYgIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdh
bm92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBTY3JvbGwgbm9uLXZpc2libGUgZWRpdCBjb250
cm9scyBhbmQgY2FyZXQgaW50byB0aGUgY2VudGVyIG9mIHRoZSB2aWV3IHdoZW4gc3RhcnRpbmcg
dHlwaW5nLgpJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDMw
NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTEwLDYgKzE1MTAsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlw
aW5nQ29tbWFuZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9TdGVwLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVW5saW5rQ29tbWFuZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5s
aW5rQ29tbWFuZC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5j
cHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMDMwNzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xNzI2LDYgKzE3MjYsNyBAQCBIRUFERVJT
ICs9IFwKICAgICBlZGl0aW5nL1NwbGl0VGV4dE5vZGVDb250YWluaW5nRWxlbWVudENvbW1hbmQu
aCBcCiAgICAgZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBcCiAgICAgZWRpdGluZy9UeXBpbmdDb21t
YW5kLmggXAorICAgIGVkaXRpbmcvVW5kb1N0ZXAuaCBcCiAgICAgZWRpdGluZy9VbmxpbmtDb21t
YW5kLmggXAogICAgIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmggXAogICAgIGVkaXRpbmcvVmlz
aWJsZVNlbGVjdGlvbi5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMDMw
NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAt
MTU3LDggKzE1Nyw2IEBAIF9fWk43V2ViQ29yZTEwdG9Eb2N1bWVudEVOM0pTQzdKU1ZhbHVlRQog
X19aTjdXZWJDb3JlMTFCaXRtYXBJbWFnZUMxRVA3Q0dJbWFnZVBOU18xM0ltYWdlT2JzZXJ2ZXJF
CiBfX1pON1dlYkNvcmUxMUNhY2hlZEZyYW1lMjNjYWNoZWRGcmFtZVBsYXRmb3JtRGF0YUV2CiBf
X1pON1dlYkNvcmUxMUNhY2hlZEZyYW1lMjZzZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YUVOM1dU
RjEwUGFzc093blB0cklOU18yM0NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhRUVFCi1fX1pON1dlYkNv
cmUxMUVkaXRDb21tYW5kN3JlYXBwbHlFdgotX19aTjdXZWJDb3JlMTFFZGl0Q29tbWFuZDd1bmFw
cGx5RXYKIF9fWk43V2ViQ29yZTExRmlsZUNob29zZXIxMGNob29zZUZpbGVFUktOM1dURjZTdHJp
bmdFCiBfX1pON1dlYkNvcmUxMUZpbGVDaG9vc2VyMTFjaG9vc2VGaWxlc0VSS04zV1RGNlZlY3Rv
cklOUzFfNlN0cmluZ0VMbTBFRUUKIF9fWk43V2ViQ29yZTExRmlsZUNob29zZXJEMUV2CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMDMwNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTI1NzgsNiArMjU3OCw3IEBACiAgICAgICAgICAg
ICAnZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaCcsCiAgICAgICAgICAgICAnZWRpdGluZy9U
ZXh0SXRlcmF0b3IuY3BwJywKICAgICAgICAgICAgICdlZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3Bw
JywKKyAgICAgICAgICAgICdlZGl0aW5nL1VuZG9TdGVwLmgnLAogICAgICAgICAgICAgJ2VkaXRp
bmcvVW5saW5rQ29tbWFuZC5jcHAnLAogICAgICAgICAgICAgJ2VkaXRpbmcvVW5saW5rQ29tbWFu
ZC5oJywKICAgICAgICAgICAgICdlZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAnLApJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9u
IDEwMzA3MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC01NTMwNiw2ICs1NTMwNiwxMCBAQAogCQkJCT4KIAkJCTwvRmls
ZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxlZGl0aW5nXFVuZG9TdGVwLmgiCisJ
CQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdc
VW5saW5rQ29tbWFuZC5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTAzMDczKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMDEyLDE0ICszMDEyLDE0IEBACiAJCTkz
MzA5RERBMDk5RTY0OTIwMDU2RTU4MSAvKiBCcmVha0Jsb2NrcXVvdGVDb21tYW5kLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzA5RDhCMDk5RTY0
OTEwMDU2RTU4MSAvKiBCcmVha0Jsb2NrcXVvdGVDb21tYW5kLmNwcCAqLzsgfTsKIAkJOTMzMDlE
REIwOTlFNjQ5MjAwNTZFNTgxIC8qIEJyZWFrQmxvY2txdW90ZUNvbW1hbmQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzA5RDhDMDk5RTY0OTEwMDU2
RTU4MSAvKiBCcmVha0Jsb2NrcXVvdGVDb21tYW5kLmggKi87IH07CiAJCTkzMzA5RERDMDk5RTY0
OTIwMDU2RTU4MSAvKiBDb21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzMwOUQ4RDA5OUU2NDkxMDA1NkU1ODEgLyog
Q29tcG9zaXRlRWRpdENvbW1hbmQuY3BwICovOyB9OwotCQk5MzMwOURERDA5OUU2NDkyMDA1NkU1
ODEgLyogQ29tcG9zaXRlRWRpdENvbW1hbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzA5RDhFMDk5RTY0OTEwMDU2RTU4MSAvKiBDb21wb3NpdGVF
ZGl0Q29tbWFuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTkzMzA5REREMDk5RTY0OTIwMDU2RTU4MSAvKiBDb21wb3NpdGVFZGl0Q29tbWFuZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMDlEOEUw
OTlFNjQ5MTAwNTZFNTgxIC8qIENvbXBvc2l0ZUVkaXRDb21tYW5kLmggKi87IH07CiAJCTkzMzA5
RERFMDk5RTY0OTIwMDU2RTU4MSAvKiBEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzA5RDhGMDk5RTY0
OTEwMDU2RTU4MSAvKiBEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmNwcCAqLzsgfTsKIAkJOTMz
MDlEREYwOTlFNjQ5MjAwNTZFNTgxIC8qIERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzA5RDkwMDk5RTY0
OTEwMDU2RTU4MSAvKiBEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmggKi87IH07CiAJCTkzMzA5
REUwMDk5RTY0OTIwMDU2RTU4MSAvKiBEZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzA5RDkxMDk5RTY0OTEw
MDU2RTU4MSAvKiBEZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcCAqLzsgfTsKIAkJOTMzMDlERTEw
OTlFNjQ5MjAwNTZFNTgxIC8qIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzA5RDkyMDk5RTY0OTEwMDU2RTU4
MSAvKiBEZWxldGVTZWxlY3Rpb25Db21tYW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTMzMDlERTIwOTlFNjQ5MjAwNTZFNTgxIC8qIEVkaXRB
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
MzA5RDkzMDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0QWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTMzMDlERTMwOTlFNjQ5MjAwNTZFNTgx
IC8qIEVkaXRDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzMzA5RDk0MDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0Q29tbWFuZC5jcHAgKi87
IH07Ci0JCTkzMzA5REU0MDk5RTY0OTIwMDU2RTU4MSAvKiBFZGl0Q29tbWFuZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMDlEOTUwOTlFNjQ5MTAw
NTZFNTgxIC8qIEVkaXRDb21tYW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJOTMzMDlERTQwOTlFNjQ5MjAwNTZFNTgxIC8qIEVkaXRDb21tYW5k
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzMwOUQ5
NTA5OUU2NDkxMDA1NkU1ODEgLyogRWRpdENvbW1hbmQuaCAqLzsgfTsKIAkJOTMzMDlERTUwOTlF
NjQ5MjAwNTZFNTgxIC8qIEhUTUxJbnRlcmNoYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzMwOUQ5NjA5OUU2NDkxMDA1NkU1ODEgLyogSFRN
TEludGVyY2hhbmdlLmNwcCAqLzsgfTsKIAkJOTMzMDlERTYwOTlFNjQ5MjAwNTZFNTgxIC8qIEhU
TUxJbnRlcmNoYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTMzMDlEOTcwOTlFNjQ5MTAwNTZFNTgxIC8qIEhUTUxJbnRlcmNoYW5nZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzMzA5REU3MDk5
RTY0OTIwMDU2RTU4MSAvKiBodG1sZWRpdGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzMwOUQ5ODA5OUU2NDkxMDA1NkU1ODEgLyogaHRtbGVk
aXRpbmcuY3BwICovOyB9OwpAQCAtMzM3NCw2ICszMzc0LDcgQEAKIAkJOThFQjFGOTUxMzEzRkUw
NTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OEVCMUY5NDEzMTNGRTA1MDBEMEUxRUEgLyogTm90SW1wbGVt
ZW50ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5QjBGQjE5MTE0MERCNTc5MDAyMjU4OEYgLyogSFRUUFZhbGlkYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwRkIxOEYxNDBEQjU3OTAw
MjI1ODhGIC8qIEhUVFBWYWxpZGF0aW9uLmNwcCAqLzsgfTsKIAkJOUIwRkIxOTIxNDBEQjU3OTAw
MjI1ODhGIC8qIEhUVFBWYWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5QjBGQjE5MDE0MERCNTc5MDAyMjU4OEYgLyogSFRUUFZhbGlkYXRp
b24uaCAqLzsgfTsKKwkJOUIyRDhBNzkxNDk5N0NDRjAwRUNFRjNFIC8qIFVuZG9TdGVwLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjJEOEE3ODE0OTk3
Q0NGMDBFQ0VGM0UgLyogVW5kb1N0ZXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk5QjMyQ0RBOTEzREY3RkE5MDBGMzREMTMgLyogUmVuZGVyZWRQ
b3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OUIzMkNEQTcxM0RGN0ZBOTAwRjM0RDEzIC8qIFJlbmRlcmVkUG9zaXRpb24uaCAqLzsgfTsKIAkJ
OUIzMkNEQUExM0RGN0ZBOTAwRjM0RDEzIC8qIFJlbmRlcmVkUG9zaXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIzMkNEQTgxM0RGN0ZBOTAw
RjM0RDEzIC8qIFJlbmRlcmVkUG9zaXRpb24uY3BwICovOyB9OwogCQk5QjM3NUVEQTE0NDc4QTAx
MDBGM0NBRTUgLyogTWljcm9EYXRhSXRlbUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIzNzVFRDgxNDQ3OEEwMTAwRjNDQUU1IC8qIE1pY3Jv
RGF0YUl0ZW1MaXN0LmNwcCAqLzsgfTsKQEAgLTEwNjEwLDYgKzEwNjExLDcgQEAKIAkJOThFQjFG
OTQxMzEzRkUwNTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE5vdEltcGxlbWVudGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlCMEZCMThGMTQwREI1NzkwMDIyNTg4RiAvKiBIVFRQVmFsaWRhdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVFRQVmFsaWRhdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMEZCMTkwMTQwREI1NzkwMDIyNTg4RiAvKiBI
VFRQVmFsaWRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVFRQVmFs
aWRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjJEOEE3ODE0OTk3Q0NG
MDBFQ0VGM0UgLyogVW5kb1N0ZXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VW5kb1N0ZXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIyRjdDRjcxNDU2MjEy
MDAwN0Y4QjUwIC8qIE1pY3JvRGF0YUl0ZW1WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNaWNyb0RhdGFJdGVtVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5QjJGN0NGODE0NTYyMTIwMDA3RjhCNTAgLyogTWljcm9EYXRhSXRlbVZh
bHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1pY3JvRGF0YUl0ZW1WYWx1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjMyQ0RBNzEzREY3RkE5MDBGMzRE
MTMgLyogUmVuZGVyZWRQb3NpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW5kZXJlZFBvc2l0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzEw
OCw2ICsxNzExMCw3IEBACiAJCQkJOTMzMDlEQ0QwOTlFNjQ5MTAwNTZFNTgxIC8qIFRleHRJdGVy
YXRvci5oICovLAogCQkJCTkzMzA5RENBMDk5RTY0OTEwMDU2RTU4MSAvKiBUeXBpbmdDb21tYW5k
LmNwcCAqLywKIAkJCQk5MzMwOURDQjA5OUU2NDkxMDA1NkU1ODEgLyogVHlwaW5nQ29tbWFuZC5o
ICovLAorCQkJCTlCMkQ4QTc4MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5oICovLAogCQkJ
CUQwODZGRTk3MDlENTNBQUIwMDVCQzc0RCAvKiBVbmxpbmtDb21tYW5kLmNwcCAqLywKIAkJCQlE
MDg2RkU5NjA5RDUzQUFCMDA1QkM3NEQgLyogVW5saW5rQ29tbWFuZC5oICovLAogCQkJCTkzMzA5
RENFMDk5RTY0OTEwMDU2RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmNwcCAqLywKQEAgLTI0NjIxLDYg
KzI0NjI0LDcgQEAKIAkJCQk5MzMwOUUxQTA5OUU2NDkyMDA1NkU1ODEgLyogVHlwaW5nQ29tbWFu
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNEUwQTQ0RUZDNzAwRjk5MkUwIC8qIFVJRXZl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjRGMEE0NEVGQzcwMEY5OTJFMCAvKiBVSUV2
ZW50V2l0aEtleVN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5QjJEOEE3OTE0OTk3Q0NGMDBF
Q0VGM0UgLyogVW5kb1N0ZXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NjNFMjAxMTM0MzQxMjAw
MDI3NDkyNiAvKiBVbmljb2RlQmlkaS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBNEQwRDAw
NkMxRDAwRUY2RjI2IC8qIFVuaWNvZGVSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBRkNG
QTUwREFGMjlBMzAwRjVGNTVDIC8qIFVuaXRCZXppZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHJl
dmlzaW9uIDEwMzA3MykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJB
cHBlbmROb2RlQ29tbWFuZC5oIgogI2luY2x1ZGUgIkFwcGx5U3R5bGVDb21tYW5kLmgiCisjaW5j
bHVkZSAiRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkRlbGV0ZUZyb21UZXh0
Tm9kZUNvbW1hbmQuaCIKICNpbmNsdWRlICJEZWxldGVTZWxlY3Rpb25Db21tYW5kLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKQEAgLTUyLDYgKzUzLDcgQEAKICNpbmNsdWRlICJSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZC5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVGV4dC5oIgorI2luY2x1ZGUgIlNjb3BlZEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJTZXRO
b2RlQXR0cmlidXRlQ29tbWFuZC5oIgogI2luY2x1ZGUgIlNwbGl0RWxlbWVudENvbW1hbmQuaCIK
ICNpbmNsdWRlICJTcGxpdFRleHROb2RlQ29tbWFuZC5oIgpAQCAtNzEsMzYgKzczLDYxIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIFBhc3NSZWZQ
dHI8RWRpdENvbW1hbmRDb21wb3NpdGlvbj4gRWRpdENvbW1hbmRDb21wb3NpdGlvbjo6Y3JlYXRl
KERvY3VtZW50KiBkb2N1bWVudCwKLSAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzdGFydGlu
Z1NlbGVjdGlvbiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZW5kaW5nU2VsZWN0aW9uLCBib29s
IHdhc0NyZWF0ZUxpbmtDb21tYW5kKQorICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHN0YXJ0
aW5nU2VsZWN0aW9uLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBlbmRpbmdTZWxlY3Rpb24sIEVk
aXRBY3Rpb24gZWRpdEFjdGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVkaXRDb21t
YW5kQ29tcG9zaXRpb24oZG9jdW1lbnQsIHN0YXJ0aW5nU2VsZWN0aW9uLCBlbmRpbmdTZWxlY3Rp
b24sIHdhc0NyZWF0ZUxpbmtDb21tYW5kKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFZGl0
Q29tbWFuZENvbXBvc2l0aW9uKGRvY3VtZW50LCBzdGFydGluZ1NlbGVjdGlvbiwgZW5kaW5nU2Vs
ZWN0aW9uLCBlZGl0QWN0aW9uKSk7CiB9CiAKLUVkaXRDb21tYW5kQ29tcG9zaXRpb246OkVkaXRD
b21tYW5kQ29tcG9zaXRpb24oRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBzdGFydGluZ1NlbGVjdGlvbiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZW5kaW5nU2Vs
ZWN0aW9uLCBib29sIHdhc0NyZWF0ZUxpbmtDb21tYW5kKQotICAgIDogRWRpdENvbW1hbmQoZG9j
dW1lbnQsIHN0YXJ0aW5nU2VsZWN0aW9uLCBlbmRpbmdTZWxlY3Rpb24pCitFZGl0Q29tbWFuZENv
bXBvc2l0aW9uOjpFZGl0Q29tbWFuZENvbXBvc2l0aW9uKERvY3VtZW50KiBkb2N1bWVudCwgY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgc3RhcnRpbmdTZWxlY3Rpb24sIGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mIGVuZGluZ1NlbGVjdGlvbiwgRWRpdEFjdGlvbiBlZGl0QWN0aW9uKQorICAgIDogbV9k
b2N1bWVudChkb2N1bWVudCkKKyAgICAsIG1fc3RhcnRpbmdTZWxlY3Rpb24oc3RhcnRpbmdTZWxl
Y3Rpb24pCisgICAgLCBtX2VuZGluZ1NlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24pCiAgICAgLCBt
X3N0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudChzdGFydGluZ1NlbGVjdGlvbi5yb290RWRpdGFi
bGVFbGVtZW50KCkpCiAgICAgLCBtX2VuZGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoZW5kaW5nU2Vs
ZWN0aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkKLSAgICAsIG1fd2FzQ3JlYXRlTGlua0NvbW1h
bmQod2FzQ3JlYXRlTGlua0NvbW1hbmQpCisgICAgLCBtX2VkaXRBY3Rpb24oZWRpdEFjdGlvbikK
IHsKIH0KIAotdm9pZCBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjpkb0FwcGx5KCkKK3ZvaWQgRWRp
dENvbW1hbmRDb21wb3NpdGlvbjo6dW5hcHBseSgpCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19CisgICAgQVNTRVJUKG1fZG9jdW1lbnQpOworICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9j
dW1lbnQtPmZyYW1lKCk7CisgICAgQVNTRVJUKGZyYW1lKTsKIAotdm9pZCBFZGl0Q29tbWFuZENv
bXBvc2l0aW9uOjpkb1VuYXBwbHkoKQoteworICAgIC8vIENoYW5nZXMgdG8gdGhlIGRvY3VtZW50
IG1heSBoYXZlIGJlZW4gbWFkZSBzaW5jZSB0aGUgbGFzdCBlZGl0aW5nIG9wZXJhdGlvbiB0aGF0
IHJlcXVpcmUgYSBsYXlvdXQsIGFzIGluIDxyZGFyOi8vcHJvYmxlbS81NjU4NjAzPi4KKyAgICAv
LyBMb3cgbGV2ZWwgb3BlcmF0aW9ucywgbGlrZSBSZW1vdmVOb2RlQ29tbWFuZCwgZG9uJ3QgcmVx
dWlyZSBhIGxheW91dCBiZWNhdXNlIHRoZSBoaWdoIGxldmVsIG9wZXJhdGlvbnMgdGhhdCB1c2Ug
dGhlbSBwZXJmb3JtIG9uZQorICAgIC8vIGlmIG9uZSBpcyBuZWNlc3NhcnkgKGxpa2UgZm9yIHRo
ZSBjcmVhdGlvbiBvZiBWaXNpYmxlUG9zaXRpb25zKS4KKyAgICBtX2RvY3VtZW50LT51cGRhdGVM
YXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKyAgICAKKyAgICBEZWxldGVCdXR0b25D
b250cm9sbGVyKiBkZWxldGVCdXR0b25Db250cm9sbGVyID0gZnJhbWUtPmVkaXRvcigpLT5kZWxl
dGVCdXR0b25Db250cm9sbGVyKCk7CisgICAgZGVsZXRlQnV0dG9uQ29udHJvbGxlci0+ZGlzYWJs
ZSgpOwogICAgIHNpemVfdCBzaXplID0gbV9jb21tYW5kcy5zaXplKCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IHNpemU7IGkgIT0gMDsgLS1pKQotICAgICAgICBtX2NvbW1hbmRzW2kgLSAxXS0+dW5h
cHBseSgpOworICAgICAgICBtX2NvbW1hbmRzW2kgLSAxXS0+ZG9VbmFwcGx5KCk7CisgICAgZGVs
ZXRlQnV0dG9uQ29udHJvbGxlci0+ZW5hYmxlKCk7CisgICAgCisgICAgZnJhbWUtPmVkaXRvcigp
LT51bmFwcGxpZWRFZGl0aW5nKHRoaXMpOwogfQogCi12b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRp
b246OmRvUmVhcHBseSgpCit2b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRpb246OnJlYXBwbHkoKQog
eworICAgIEFTU0VSVChtX2RvY3VtZW50KTsKKyAgICBGcmFtZSogZnJhbWUgPSBtX2RvY3VtZW50
LT5mcmFtZSgpOworICAgIEFTU0VSVChmcmFtZSk7CisKKyAgICAvLyBDaGFuZ2VzIHRvIHRoZSBk
b2N1bWVudCBtYXkgaGF2ZSBiZWVuIG1hZGUgc2luY2UgdGhlIGxhc3QgZWRpdGluZyBvcGVyYXRp
b24gdGhhdCByZXF1aXJlIGEgbGF5b3V0LCBhcyBpbiA8cmRhcjovL3Byb2JsZW0vNTY1ODYwMz4u
CisgICAgLy8gTG93IGxldmVsIG9wZXJhdGlvbnMsIGxpa2UgUmVtb3ZlTm9kZUNvbW1hbmQsIGRv
bid0IHJlcXVpcmUgYSBsYXlvdXQgYmVjYXVzZSB0aGUgaGlnaCBsZXZlbCBvcGVyYXRpb25zIHRo
YXQgdXNlIHRoZW0gcGVyZm9ybSBvbmUKKyAgICAvLyBpZiBvbmUgaXMgbmVjZXNzYXJ5IChsaWtl
IGZvciB0aGUgY3JlYXRpb24gb2YgVmlzaWJsZVBvc2l0aW9ucykuCisgICAgbV9kb2N1bWVudC0+
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgCisgICAgRGVsZXRl
QnV0dG9uQ29udHJvbGxlciogZGVsZXRlQnV0dG9uQ29udHJvbGxlciA9IGZyYW1lLT5lZGl0b3Io
KS0+ZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpOworICAgIGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIt
PmRpc2FibGUoKTsKICAgICBzaXplX3Qgc2l6ZSA9IG1fY29tbWFuZHMuc2l6ZSgpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpICE9IHNpemU7ICsraSkKLSAgICAgICAgbV9jb21tYW5kc1tpXS0+
cmVhcHBseSgpOworICAgICAgICBtX2NvbW1hbmRzW2ldLT5kb1JlYXBwbHkoKTsKKyAgICBkZWxl
dGVCdXR0b25Db250cm9sbGVyLT5lbmFibGUoKTsKKyAgICAKKyAgICBmcmFtZS0+ZWRpdG9yKCkt
PnJlYXBwbGllZEVkaXRpbmcodGhpcyk7CiB9CiAKIHZvaWQgRWRpdENvbW1hbmRDb21wb3NpdGlv
bjo6YXBwZW5kKFNpbXBsZUVkaXRDb21tYW5kKiBjb21tYW5kKQpAQCAtMTEwLDEzICsxMzcsMTMg
QEAgdm9pZCBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjphcHBlbmQoU2ltcAogCiB2b2lkIEVkaXRD
b21tYW5kQ29tcG9zaXRpb246OnNldFN0YXJ0aW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mIHNlbGVjdGlvbikKIHsKLSAgICBFZGl0Q29tbWFuZDo6c2V0U3RhcnRpbmdTZWxlY3Rp
b24oc2VsZWN0aW9uKTsKKyAgICBtX3N0YXJ0aW5nU2VsZWN0aW9uID0gc2VsZWN0aW9uOwogICAg
IG1fc3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50ID0gc2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVs
ZW1lbnQoKTsKIH0KIAogdm9pZCBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjpzZXRFbmRpbmdTZWxl
Y3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogewotICAgIEVkaXRDb21t
YW5kOjpzZXRFbmRpbmdTZWxlY3Rpb24oc2VsZWN0aW9uKTsKKyAgICBtX2VuZGluZ1NlbGVjdGlv
biA9IHNlbGVjdGlvbjsKICAgICBtX2VuZGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQgPSBzZWxlY3Rp
b24ucm9vdEVkaXRhYmxlRWxlbWVudCgpOwogfQogCkBAIC0xMjksNiArMTU2LDExIEBAIHZvaWQg
RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6Z2V0Tm9kZXNJbkMKIH0KICNlbmRpZgogCit2b2lkIGFw
cGx5Q29tbWFuZChQYXNzUmVmUHRyPENvbXBvc2l0ZUVkaXRDb21tYW5kPiBjb21tYW5kKQorewor
ICAgIGNvbW1hbmQtPmFwcGx5KCk7Cit9CisKIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpDb21wb3Np
dGVFZGl0Q29tbWFuZChEb2N1bWVudCAqZG9jdW1lbnQpCiAgICAgOiBFZGl0Q29tbWFuZChkb2N1
bWVudCkKIHsKQEAgLTEzOSwxNCArMTcxLDQ1IEBAIENvbXBvc2l0ZUVkaXRDb21tYW5kOjp+Q29t
cG9zaXRlRWRpdENvbW0KICAgICBBU1NFUlQoaXNUb3BMZXZlbENvbW1hbmQoKSB8fCAhbV9jb21w
b3NpdGlvbik7CiB9CiAKLXZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmRvVW5hcHBseSgpCit2
b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjphcHBseSgpCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci19CisgICAgaWYgKCFlbmRpbmdTZWxlY3Rpb24oKS5pc0NvbnRlbnRSaWNobHlFZGl0
YWJsZSgpKSB7CisgICAgICAgIHN3aXRjaCAoZWRpdGluZ0FjdGlvbigpKSB7CisgICAgICAgIGNh
c2UgRWRpdEFjdGlvblR5cGluZzoKKyAgICAgICAgY2FzZSBFZGl0QWN0aW9uUGFzdGU6CisgICAg
ICAgIGNhc2UgRWRpdEFjdGlvbkRyYWc6CisgICAgICAgIGNhc2UgRWRpdEFjdGlvblNldFdyaXRp
bmdEaXJlY3Rpb246CisgICAgICAgIGNhc2UgRWRpdEFjdGlvbkN1dDoKKyAgICAgICAgY2FzZSBF
ZGl0QWN0aW9uVW5zcGVjaWZpZWQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgfQorICAgIGVuc3VyZUNvbXBvc2l0aW9uKCk7CiAKLXZvaWQgQ29t
cG9zaXRlRWRpdENvbW1hbmQ6OmRvUmVhcHBseSgpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgLy8gQ2hhbmdlcyB0byB0aGUgZG9jdW1lbnQgbWF5IGhhdmUgYmVlbiBtYWRlIHNp
bmNlIHRoZSBsYXN0IGVkaXRpbmcgb3BlcmF0aW9uIHRoYXQgcmVxdWlyZSBhIGxheW91dCwgYXMg
aW4gPHJkYXI6Ly9wcm9ibGVtLzU2NTg2MDM+LgorICAgIC8vIExvdyBsZXZlbCBvcGVyYXRpb25z
LCBsaWtlIFJlbW92ZU5vZGVDb21tYW5kLCBkb24ndCByZXF1aXJlIGEgbGF5b3V0IGJlY2F1c2Ug
dGhlIGhpZ2ggbGV2ZWwgb3BlcmF0aW9ucyB0aGF0IHVzZSB0aGVtIHBlcmZvcm0gb25lCisgICAg
Ly8gaWYgb25lIGlzIG5lY2Vzc2FyeSAobGlrZSBmb3IgdGhlIGNyZWF0aW9uIG9mIFZpc2libGVQ
b3NpdGlvbnMpLgorICAgIEFTU0VSVChkb2N1bWVudCgpKTsKKyAgICBkb2N1bWVudCgpLT51cGRh
dGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKworICAgIEZyYW1lKiBmcmFtZSA9
IGRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgQVNTRVJUKGZyYW1lKTsKKyAgICB7CisgICAgICAg
IEV2ZW50UXVldWVTY29wZSBzY29wZTsKKyAgICAgICAgRGVsZXRlQnV0dG9uQ29udHJvbGxlciog
ZGVsZXRlQnV0dG9uQ29udHJvbGxlciA9IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29u
dHJvbGxlcigpOworICAgICAgICBkZWxldGVCdXR0b25Db250cm9sbGVyLT5kaXNhYmxlKCk7Cisg
ICAgICAgIGRvQXBwbHkoKTsKKyAgICAgICAgZGVsZXRlQnV0dG9uQ29udHJvbGxlci0+ZW5hYmxl
KCk7CisgICAgfQorCisgICAgLy8gT25seSBuZWVkIHRvIGNhbGwgYXBwbGllZEVkaXRpbmcgZm9y
IHRvcC1sZXZlbCBjb21tYW5kcywKKyAgICAvLyBhbmQgVHlwaW5nQ29tbWFuZHMgZG8gaXQgb24g
dGhlaXIgb3duIChzZWUgVHlwaW5nQ29tbWFuZDo6dHlwaW5nQWRkZWRUb09wZW5Db21tYW5kKS4K
KyAgICBpZiAoIWlzVHlwaW5nQ29tbWFuZCgpKQorICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmFw
cGxpZWRFZGl0aW5nKHRoaXMpOworICAgIHNldFNob3VsZFJldGFpbkF1dG9jb3JyZWN0aW9uSW5k
aWNhdG9yKGZhbHNlKTsKIH0KIAogRWRpdENvbW1hbmRDb21wb3NpdGlvbiogQ29tcG9zaXRlRWRp
dENvbW1hbmQ6OmVuc3VyZUNvbXBvc2l0aW9uKCkKQEAgLTE1NSw3ICsyMTgsNyBAQCBFZGl0Q29t
bWFuZENvbXBvc2l0aW9uKiBDb21wb3NpdGVFZGl0Q29tCiAgICAgd2hpbGUgKGNvbW1hbmQgJiYg
Y29tbWFuZC0+cGFyZW50KCkpCiAgICAgICAgIGNvbW1hbmQgPSBjb21tYW5kLT5wYXJlbnQoKTsK
ICAgICBpZiAoIWNvbW1hbmQtPm1fY29tcG9zaXRpb24pCi0gICAgICAgIGNvbW1hbmQtPm1fY29t
cG9zaXRpb24gPSBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3Rh
cnRpbmdTZWxlY3Rpb24oKSwgZW5kaW5nU2VsZWN0aW9uKCksIGlzQ3JlYXRlTGlua0NvbW1hbmQo
KSk7CisgICAgICAgIGNvbW1hbmQtPm1fY29tcG9zaXRpb24gPSBFZGl0Q29tbWFuZENvbXBvc2l0
aW9uOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRpbmdTZWxlY3Rpb24oKSwgZW5kaW5nU2VsZWN0
aW9uKCksIGVkaXRpbmdBY3Rpb24oKSk7CiAgICAgcmV0dXJuIGNvbW1hbmQtPm1fY29tcG9zaXRp
b24uZ2V0KCk7CiB9CiAKQEAgLTE5MCw3ICsyNTMsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21t
YW5kOjphcHBseUNvbW1hbmRUCiB7CiAgICAgUmVmUHRyPEVkaXRDb21tYW5kPiBjb21tYW5kID0g
cHJwQ29tbWFuZDsKICAgICBjb21tYW5kLT5zZXRQYXJlbnQodGhpcyk7Ci0gICAgY29tbWFuZC0+
YXBwbHkoKTsKKyAgICBjb21tYW5kLT5kb0FwcGx5KCk7CiAgICAgaWYgKGNvbW1hbmQtPmlzU2lt
cGxlRWRpdENvbW1hbmQoKSkgewogICAgICAgICBjb21tYW5kLT5zZXRQYXJlbnQoMCk7CiAgICAg
ICAgIGVuc3VyZUNvbXBvc2l0aW9uKCktPmFwcGVuZCh0b1NpbXBsZUVkaXRDb21tYW5kKGNvbW1h
bmQuZ2V0KCkpKTsKQEAgLTE5OCwyMCArMjYxLDE1IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1h
bmQ6OmFwcGx5Q29tbWFuZFQKICAgICBtX2NvbW1hbmRzLmFwcGVuZChjb21tYW5kLnJlbGVhc2Uo
KSk7CiB9CiAKLXZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmFwcGx5Q29tbWFuZFRvQ29tcG9z
aXRlKFBhc3NSZWZQdHI8Q29tcG9zaXRlRWRpdENvbW1hbmQ+IHBycENvbW1hbmQsIGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKK3ZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmFw
cGx5Q29tbWFuZFRvQ29tcG9zaXRlKFBhc3NSZWZQdHI8Q29tcG9zaXRlRWRpdENvbW1hbmQ+IGNv
bW1hbmQsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKIHsKLSAgICBSZWZQdHI8
Q29tcG9zaXRlRWRpdENvbW1hbmQ+IGNvbW1hbmQgPSBwcnBDb21tYW5kOwogICAgIGNvbW1hbmQt
PnNldFBhcmVudCh0aGlzKTsKICAgICBpZiAoc2VsZWN0aW9uICE9IGNvbW1hbmQtPmVuZGluZ1Nl
bGVjdGlvbigpKSB7CiAgICAgICAgIGNvbW1hbmQtPnNldFN0YXJ0aW5nU2VsZWN0aW9uKHNlbGVj
dGlvbik7CiAgICAgICAgIGNvbW1hbmQtPnNldEVuZGluZ1NlbGVjdGlvbihzZWxlY3Rpb24pOwog
ICAgIH0KLSAgICBjb21tYW5kLT5hcHBseSgpOwotICAgIGlmIChjb21tYW5kLT5pc1NpbXBsZUVk
aXRDb21tYW5kKCkpIHsKLSAgICAgICAgY29tbWFuZC0+c2V0UGFyZW50KDApOwotICAgICAgICBl
bnN1cmVDb21wb3NpdGlvbigpLT5hcHBlbmQodG9TaW1wbGVFZGl0Q29tbWFuZChjb21tYW5kLmdl
dCgpKSk7Ci0gICAgfQotICAgIG1fY29tbWFuZHMuYXBwZW5kKGNvbW1hbmQucmVsZWFzZSgpKTsK
KyAgICBjb21tYW5kLT5kb0FwcGx5KCk7CisgICAgbV9jb21tYW5kcy5hcHBlbmQoY29tbWFuZCk7
CiB9CiAKIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmFwcGx5U3R5bGUoY29uc3QgRWRpdGlu
Z1N0eWxlKiBzdHlsZSwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKQpJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAkocmV2aXNpb24gMTAzMDcz
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJFZGl0Q29tbWFuZC5oIgog
I2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRlICJVbmRvU3RlcC5oIgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsMTYgKzM4
LDIwIEBAIGNsYXNzIEhUTUxFbGVtZW50OwogY2xhc3MgU3R5bGVkRWxlbWVudDsKIGNsYXNzIFRl
eHQ7CiAKLWNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb24gOiBwdWJsaWMgRWRpdENvbW1hbmQg
eworY2xhc3MgRWRpdENvbW1hbmRDb21wb3NpdGlvbiA6IHB1YmxpYyBVbmRvU3RlcCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RWRpdENvbW1hbmRDb21wb3NpdGlvbj4gY3JlYXRl
KERvY3VtZW50KiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mLCBib29sIHdhc0NyZWF0ZUxpbmtDb21tYW5kKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxF
ZGl0Q29tbWFuZENvbXBvc2l0aW9uPiBjcmVhdGUoRG9jdW1lbnQqLCBjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIEVkaXRBY3Rpb24pOwogCi0gICAgdmly
dHVhbCB2b2lkIGRvQXBwbHkoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZG9VbmFwcGx5
KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRvUmVhcHBseSgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCB1bmFwcGx5KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlYXBw
bHkoKSBPVkVSUklERTsKKyAgICBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBtX2VkaXRBY3Rpb247IH0KICAgICB2b2lkIGFwcGVuZChTaW1wbGVFZGl0
Q29tbWFuZCopOwotICAgIGJvb2wgd2FzQ3JlYXRlTGlua0NvbW1hbmQoKSBjb25zdCB7IHJldHVy
biBtX3dhc0NyZWF0ZUxpbmtDb21tYW5kOyB9CisgICAgYm9vbCB3YXNDcmVhdGVMaW5rQ29tbWFu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZWRpdEFjdGlvbiA9PSBFZGl0QWN0aW9uQ3JlYXRlTGluazsg
fQogCisgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc3RhcnRpbmdTZWxlY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX3N0YXJ0aW5nU2VsZWN0aW9uOyB9CisgICAgY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYgZW5kaW5nU2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRpbmdTZWxlY3Rpb247
IH0KKyAgICB2b2lkIHNldFN0YXJ0aW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
KTsKKyAgICB2b2lkIHNldEVuZGluZ1NlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7
CiAgICAgRWxlbWVudCogc3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQuZ2V0KCk7IH0KICAgICBFbGVtZW50KiBl
bmRpbmdSb290RWRpdGFibGVFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbmRpbmdSb290RWRp
dGFibGVFbGVtZW50LmdldCgpOyB9CiAKQEAgLTU1LDIxICs2MCwyMiBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogcHJpdmF0ZToKLSAgICBFZGl0Q29tbWFuZENvbXBvc2l0aW9uKERvY3VtZW50KiwgY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgc3RhcnRpbmdTZWxlY3Rpb24sIGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mIGVuZGluZ1NlbGVjdGlvbiwgYm9vbCB3YXNDcmVhdGVMaW5rQ29tbWFuZCk7Ci0gICAg
dmlydHVhbCBib29sIGlzRWRpdENvbW1hbmRDb21wb3NpdGlvbigpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhcnRpbmdTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRFbmRp
bmdTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIE9WRVJSSURFOworICAgIEVkaXRD
b21tYW5kQ29tcG9zaXRpb24oRG9jdW1lbnQqLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzdGFy
dGluZ1NlbGVjdGlvbiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZW5kaW5nU2VsZWN0aW9uLCBF
ZGl0QWN0aW9uKTsKIAorICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKKyAgICBWaXNp
YmxlU2VsZWN0aW9uIG1fc3RhcnRpbmdTZWxlY3Rpb247CisgICAgVmlzaWJsZVNlbGVjdGlvbiBt
X2VuZGluZ1NlbGVjdGlvbjsKICAgICBWZWN0b3I8UmVmUHRyPFNpbXBsZUVkaXRDb21tYW5kPiA+
IG1fY29tbWFuZHM7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1fc3RhcnRpbmdSb290RWRpdGFibGVF
bGVtZW50OwogICAgIFJlZlB0cjxFbGVtZW50PiBtX2VuZGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQ7
Ci0gICAgYm9vbCBtX3dhc0NyZWF0ZUxpbmtDb21tYW5kOworICAgIEVkaXRBY3Rpb24gbV9lZGl0
QWN0aW9uOwogfTsKIAogY2xhc3MgQ29tcG9zaXRlRWRpdENvbW1hbmQgOiBwdWJsaWMgRWRpdENv
bW1hbmQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNvbXBvc2l0ZUVkaXRDb21tYW5kKCk7CiAK
KyAgICB2b2lkIGFwcGx5KCk7CiAgICAgYm9vbCBpc0ZpcnN0Q29tbWFuZChFZGl0Q29tbWFuZCog
Y29tbWFuZCkgeyByZXR1cm4gIW1fY29tbWFuZHMuaXNFbXB0eSgpICYmIG1fY29tbWFuZHMuZmly
c3QoKSA9PSBjb21tYW5kOyB9CiAgICAgRWRpdENvbW1hbmRDb21wb3NpdGlvbiogY29tcG9zaXRp
b24oKSB7IHJldHVybiBtX2NvbXBvc2l0aW9uLmdldCgpOyB9CiAgICAgRWRpdENvbW1hbmRDb21w
b3NpdGlvbiogZW5zdXJlQ29tcG9zaXRpb24oKTsKQEAgLTE2MSwyMCArMTY3LDEyIEBAIHByb3Rl
Y3RlZDoKICAgICBWZWN0b3I8UmVmUHRyPEVkaXRDb21tYW5kPiA+IG1fY29tbWFuZHM7CiAKIHBy
aXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGRvVW5hcHBseSgpOwotICAgIHZpcnR1YWwgdm9pZCBk
b1JlYXBwbHkoKTsKLQogICAgIGJvb2wgaXNDb21wb3NpdGVFZGl0Q29tbWFuZCgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFJlZlB0cjxFZGl0Q29tbWFuZENvbXBvc2l0
aW9uPiBtX2NvbXBvc2l0aW9uOwogfTsKLQotaW5saW5lIEVkaXRDb21tYW5kQ29tcG9zaXRpb24q
IHRvRWRpdENvbW1hbmRDb21wb3NpdGlvbihFZGl0Q29tbWFuZCogY29tbWFuZCkKLXsKLSAgICBB
U1NFUlQoY29tbWFuZCk7Ci0gICAgQVNTRVJUKGNvbW1hbmQtPmlzRWRpdENvbW1hbmRDb21wb3Np
dGlvbigpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWRpdENvbW1hbmRDb21wb3NpdGlvbio+
KGNvbW1hbmQpOwotfQorICAgIAordm9pZCBhcHBseUNvbW1hbmQoUGFzc1JlZlB0cjxDb21wb3Np
dGVFZGl0Q29tbWFuZD4pOwogCiBpbmxpbmUgQ29tcG9zaXRlRWRpdENvbW1hbmQqIHRvQ29tcG9z
aXRlRWRpdENvbW1hbmQoRWRpdENvbW1hbmQqIGNvbW1hbmQpCiB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcAkocmV2aXNpb24gMTAzMDczKQorKysgU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0
LDYgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJGcmFtZVNlbGVjdGlvbi5oIgotI2luY2x1ZGUgIlNjb3BlZEV2ZW50UXVldWUuaCIKICNp
bmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgogCkBA
IC02NCwxMDkgKzYzLDYgQEAgRWRpdENvbW1hbmQ6On5FZGl0Q29tbWFuZCgpCiB7CiB9CiAKLXZv
aWQgRWRpdENvbW1hbmQ6OmFwcGx5KCkKLXsKLSAgICBBU1NFUlQobV9kb2N1bWVudCk7Ci0gICAg
QVNTRVJUKG1fZG9jdW1lbnQtPmZyYW1lKCkpOwotIAotICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9j
dW1lbnQtPmZyYW1lKCk7Ci0gICAgCi0gICAgaWYgKGlzVG9wTGV2ZWxDb21tYW5kKCkpIHsKLSAg
ICAgICAgQVNTRVJUKGlzQ29tcG9zaXRlRWRpdENvbW1hbmQoKSk7Ci0gICAgICAgIGlmICghZW5k
aW5nU2VsZWN0aW9uKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkgewotICAgICAgICAgICAg
c3dpdGNoIChlZGl0aW5nQWN0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIEVkaXRBY3Rp
b25UeXBpbmc6Ci0gICAgICAgICAgICAgICAgY2FzZSBFZGl0QWN0aW9uUGFzdGU6Ci0gICAgICAg
ICAgICAgICAgY2FzZSBFZGl0QWN0aW9uRHJhZzoKLSAgICAgICAgICAgICAgICBjYXNlIEVkaXRB
Y3Rpb25TZXRXcml0aW5nRGlyZWN0aW9uOgotICAgICAgICAgICAgICAgIGNhc2UgRWRpdEFjdGlv
bkN1dDoKLSAgICAgICAgICAgICAgICBjYXNlIEVkaXRBY3Rpb25VbnNwZWNpZmllZDoKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICB0b0NvbXBvc2l0ZUVkaXRD
b21tYW5kKHRoaXMpLT5lbnN1cmVDb21wb3NpdGlvbigpOwotICAgIH0KLSAgICAKLSAgICAvLyBD
aGFuZ2VzIHRvIHRoZSBkb2N1bWVudCBtYXkgaGF2ZSBiZWVuIG1hZGUgc2luY2UgdGhlIGxhc3Qg
ZWRpdGluZyBvcGVyYXRpb24gdGhhdCAKLSAgICAvLyByZXF1aXJlIGEgbGF5b3V0LCBhcyBpbiA8
cmRhcjovL3Byb2JsZW0vNTY1ODYwMz4uICBMb3cgbGV2ZWwgb3BlcmF0aW9ucywgbGlrZSAKLSAg
ICAvLyBSZW1vdmVOb2RlQ29tbWFuZCwgZG9uJ3QgcmVxdWlyZSBhIGxheW91dCBiZWNhdXNlIHRo
ZSBoaWdoIGxldmVsIG9wZXJhdGlvbnMgdGhhdCAKLSAgICAvLyB1c2UgdGhlbSBwZXJmb3JtIG9u
ZSBpZiBvbmUgaXMgbmVjZXNzYXJ5IChsaWtlIGZvciB0aGUgY3JlYXRpb24gb2YgVmlzaWJsZVBv
c2l0aW9ucykuCi0gICAgaWYgKGlzVG9wTGV2ZWxDb21tYW5kKCkpCi0gICAgICAgIGRvY3VtZW50
KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwotCi0gICAgewotICAg
ICAgICBFdmVudFF1ZXVlU2NvcGUgc2NvcGU7Ci0gICAgICAgIERlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXIqIGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIgPSBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZUJ1dHRv
bkNvbnRyb2xsZXIoKTsKLSAgICAgICAgZGVsZXRlQnV0dG9uQ29udHJvbGxlci0+ZGlzYWJsZSgp
OwotICAgICAgICBkb0FwcGx5KCk7Ci0gICAgICAgIGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXItPmVu
YWJsZSgpOwotICAgIH0KLQotICAgIGlmIChpc1RvcExldmVsQ29tbWFuZCgpKSB7Ci0gICAgICAg
IEFTU0VSVChpc0NvbXBvc2l0ZUVkaXRDb21tYW5kKCkpOwotICAgICAgICBDb21wb3NpdGVFZGl0
Q29tbWFuZCogY29tbWFuZCA9IHRvQ29tcG9zaXRlRWRpdENvbW1hbmQodGhpcyk7Ci0gICAgICAg
IC8vIE9ubHkgbmVlZCB0byBjYWxsIGFwcGxpZWRFZGl0aW5nIGZvciB0b3AtbGV2ZWwgY29tbWFu
ZHMsIGFuZCBUeXBpbmdDb21tYW5kcyBkbyBpdCBvbiB0aGVpcgotICAgICAgICAvLyBvd24gKHNl
ZSBUeXBpbmdDb21tYW5kOjp0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQpLgotICAgICAgICBpZiAo
IWNvbW1hbmQtPmlzVHlwaW5nQ29tbWFuZCgpKQotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigp
LT5hcHBsaWVkRWRpdGluZyhjb21tYW5kKTsKLSAgICAgICAgY29tbWFuZC0+c2V0U2hvdWxkUmV0
YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3IoZmFsc2UpOwotICAgIH0KLX0KLQotdm9pZCBFZGl0
Q29tbWFuZDo6dW5hcHBseSgpCi17Ci0gICAgQVNTRVJUKG1fZG9jdW1lbnQpOwotICAgIEFTU0VS
VChtX2RvY3VtZW50LT5mcmFtZSgpKTsKLSAKLSAgICBGcmFtZSogZnJhbWUgPSBtX2RvY3VtZW50
LT5mcmFtZSgpOwotICAgIAotICAgIC8vIENoYW5nZXMgdG8gdGhlIGRvY3VtZW50IG1heSBoYXZl
IGJlZW4gbWFkZSBzaW5jZSB0aGUgbGFzdCBlZGl0aW5nIG9wZXJhdGlvbiB0aGF0IAotICAgIC8v
IHJlcXVpcmUgYSBsYXlvdXQsIGFzIGluIDxyZGFyOi8vcHJvYmxlbS81NjU4NjAzPi4gIExvdyBs
ZXZlbCBvcGVyYXRpb25zLCBsaWtlIAotICAgIC8vIFJlbW92ZU5vZGVDb21tYW5kLCBkb24ndCBy
ZXF1aXJlIGEgbGF5b3V0IGJlY2F1c2UgdGhlIGhpZ2ggbGV2ZWwgb3BlcmF0aW9ucyB0aGF0IAot
ICAgIC8vIHVzZSB0aGVtIHBlcmZvcm0gb25lIGlmIG9uZSBpcyBuZWNlc3NhcnkgKGxpa2UgZm9y
IHRoZSBjcmVhdGlvbiBvZiBWaXNpYmxlUG9zaXRpb25zKS4KLSAgICBpZiAoaXNUb3BMZXZlbENv
bW1hbmQoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0
eWxlc2hlZXRzKCk7Ci0gICAgCi0gICAgRGVsZXRlQnV0dG9uQ29udHJvbGxlciogZGVsZXRlQnV0
dG9uQ29udHJvbGxlciA9IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29udHJvbGxlcigp
OwotICAgIGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXItPmRpc2FibGUoKTsKLSAgICBkb1VuYXBwbHko
KTsKLSAgICBkZWxldGVCdXR0b25Db250cm9sbGVyLT5lbmFibGUoKTsKLQotICAgIGlmIChpc0Vk
aXRDb21tYW5kQ29tcG9zaXRpb24oKSkKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT51bmFwcGxp
ZWRFZGl0aW5nKHRvRWRpdENvbW1hbmRDb21wb3NpdGlvbih0aGlzKSk7Ci19Ci0KLXZvaWQgRWRp
dENvbW1hbmQ6OnJlYXBwbHkoKQotewotICAgIEFTU0VSVChtX2RvY3VtZW50KTsKLSAgICBBU1NF
UlQobV9kb2N1bWVudC0+ZnJhbWUoKSk7Ci0gCi0gICAgRnJhbWUqIGZyYW1lID0gbV9kb2N1bWVu
dC0+ZnJhbWUoKTsKLSAgICAKLSAgICAvLyBDaGFuZ2VzIHRvIHRoZSBkb2N1bWVudCBtYXkgaGF2
ZSBiZWVuIG1hZGUgc2luY2UgdGhlIGxhc3QgZWRpdGluZyBvcGVyYXRpb24gdGhhdCAKLSAgICAv
LyByZXF1aXJlIGEgbGF5b3V0LCBhcyBpbiA8cmRhcjovL3Byb2JsZW0vNTY1ODYwMz4uICBMb3cg
bGV2ZWwgb3BlcmF0aW9ucywgbGlrZSAKLSAgICAvLyBSZW1vdmVOb2RlQ29tbWFuZCwgZG9uJ3Qg
cmVxdWlyZSBhIGxheW91dCBiZWNhdXNlIHRoZSBoaWdoIGxldmVsIG9wZXJhdGlvbnMgdGhhdCAK
LSAgICAvLyB1c2UgdGhlbSBwZXJmb3JtIG9uZSBpZiBvbmUgaXMgbmVjZXNzYXJ5IChsaWtlIGZv
ciB0aGUgY3JlYXRpb24gb2YgVmlzaWJsZVBvc2l0aW9ucykuCi0gICAgaWYgKGlzVG9wTGV2ZWxD
b21tYW5kKCkpCi0gICAgICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cygpOwotCi0gICAgRGVsZXRlQnV0dG9uQ29udHJvbGxlciogZGVsZXRlQnV0dG9u
Q29udHJvbGxlciA9IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpOwot
ICAgIGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXItPmRpc2FibGUoKTsKLSAgICBkb1JlYXBwbHkoKTsK
LSAgICBkZWxldGVCdXR0b25Db250cm9sbGVyLT5lbmFibGUoKTsKLQotICAgIGlmIChpc0VkaXRD
b21tYW5kQ29tcG9zaXRpb24oKSkKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5yZWFwcGxpZWRF
ZGl0aW5nKHRvRWRpdENvbW1hbmRDb21wb3NpdGlvbih0aGlzKSk7Ci19Ci0KLXZvaWQgRWRpdENv
bW1hbmQ6OmRvUmVhcHBseSgpCi17Ci0gICAgZG9BcHBseSgpOwotfQotCiBFZGl0QWN0aW9uIEVk
aXRDb21tYW5kOjplZGl0aW5nQWN0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gRWRpdEFjdGlv
blVuc3BlY2lmaWVkOwpAQCAtMTg0LDcgKzgwLDcgQEAgdm9pZCBFZGl0Q29tbWFuZDo6c2V0U3Rh
cnRpbmdTZWxlY3Rpb24oYwogICAgIGZvciAoRWRpdENvbW1hbmQqIGNtZCA9IHRoaXM7IDsgY21k
ID0gY21kLT5tX3BhcmVudCkgewogICAgICAgICBpZiAoRWRpdENvbW1hbmRDb21wb3NpdGlvbiog
Y29tcG9zaXRpb24gPSBjb21wb3NpdGlvbklmUG9zc2libGUoY21kKSkgewogICAgICAgICAgICAg
QVNTRVJUKGNtZC0+aXNUb3BMZXZlbENvbW1hbmQoKSk7Ci0gICAgICAgICAgICBzdGF0aWNfY2Fz
dDxFZGl0Q29tbWFuZCo+KGNvbXBvc2l0aW9uKS0+c2V0U3RhcnRpbmdTZWxlY3Rpb24ocyk7Cisg
ICAgICAgICAgICBjb21wb3NpdGlvbi0+c2V0U3RhcnRpbmdTZWxlY3Rpb24ocyk7CiAgICAgICAg
IH0KICAgICAgICAgY21kLT5tX3N0YXJ0aW5nU2VsZWN0aW9uID0gczsKICAgICAgICAgaWYgKCFj
bWQtPm1fcGFyZW50IHx8IGNtZC0+bV9wYXJlbnQtPmlzRmlyc3RDb21tYW5kKGNtZCkpCkBAIC0x
OTcsNyArOTMsNyBAQCB2b2lkIEVkaXRDb21tYW5kOjpzZXRFbmRpbmdTZWxlY3Rpb24oY29uCiAg
ICAgZm9yIChFZGl0Q29tbWFuZCogY21kID0gdGhpczsgY21kOyBjbWQgPSBjbWQtPm1fcGFyZW50
KSB7CiAgICAgICAgIGlmIChFZGl0Q29tbWFuZENvbXBvc2l0aW9uKiBjb21wb3NpdGlvbiA9IGNv
bXBvc2l0aW9uSWZQb3NzaWJsZShjbWQpKSB7CiAgICAgICAgICAgICBBU1NFUlQoY21kLT5pc1Rv
cExldmVsQ29tbWFuZCgpKTsKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEVkaXRDb21tYW5kKj4o
Y29tcG9zaXRpb24pLT5zZXRFbmRpbmdTZWxlY3Rpb24ocyk7CisgICAgICAgICAgICBjb21wb3Np
dGlvbi0+c2V0RW5kaW5nU2VsZWN0aW9uKHMpOwogICAgICAgICB9CiAgICAgICAgIGNtZC0+bV9l
bmRpbmdTZWxlY3Rpb24gPSBzOwogICAgIH0KQEAgLTIxNCw2ICsxMTAsMTEgQEAgdm9pZCBFZGl0
Q29tbWFuZDo6c2V0UGFyZW50KENvbXBvc2l0ZUVkaQogICAgIH0KIH0KIAordm9pZCBTaW1wbGVF
ZGl0Q29tbWFuZDo6ZG9SZWFwcGx5KCkKK3sKKyAgICBkb0FwcGx5KCk7Cit9CisKICNpZm5kZWYg
TkRFQlVHCiB2b2lkIFNpbXBsZUVkaXRDb21tYW5kOjphZGROb2RlQW5kRGVzY2VuZGFudHMoTm9k
ZSogc3RhcnROb2RlLCBIYXNoU2V0PE5vZGUqPiYgbm9kZXMpCiB7CkBAIC0yMjIsOSArMTIzLDQg
QEAgdm9pZCBTaW1wbGVFZGl0Q29tbWFuZDo6YWRkTm9kZUFuZERlc2NlbgogfQogI2VuZGlmCiAK
LXZvaWQgYXBwbHlDb21tYW5kKFBhc3NSZWZQdHI8Q29tcG9zaXRlRWRpdENvbW1hbmQ+IGNvbW1h
bmQpCi17Ci0gICAgY29tbWFuZC0+YXBwbHkoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaAkocmV2aXNpb24gMTAzMDcz
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NSwxMCArNDUsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFBhcmVudChDb21wb3Np
dGVFZGl0Q29tbWFuZCopOwogCi0gICAgdm9pZCBhcHBseSgpOwotICAgIHZvaWQgdW5hcHBseSgp
OwotICAgIHZvaWQgcmVhcHBseSgpOwotCiAgICAgdmlydHVhbCBFZGl0QWN0aW9uIGVkaXRpbmdB
Y3Rpb24oKSBjb25zdDsKIAogICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHN0YXJ0aW5nU2Vs
ZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydGluZ1NlbGVjdGlvbjsgfQpAQCAtNTksMzEg
KzU1LDI4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNFZGl0Q29tbWFuZENvbXBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzVG9wTGV2ZWxDb21tYW5k
KCkgY29uc3QgeyByZXR1cm4gIW1fcGFyZW50OyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgZG9BcHBs
eSgpID0gMDsKKwogcHJvdGVjdGVkOgogICAgIEVkaXRDb21tYW5kKERvY3VtZW50Kik7CiAgICAg
RWRpdENvbW1hbmQoRG9jdW1lbnQqLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYpOwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9kb2N1bWVudC5nZXQoKTsgfQogICAgIENvbXBvc2l0ZUVkaXRDb21tYW5kKiBwYXJlbnQo
KSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQotCi0gICAgdmlydHVhbCB2b2lkIHNldFN0YXJ0
aW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0RW5kaW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKKyAgICB2b2lkIHNl
dFN0YXJ0aW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKKyAgICB2b2lkIHNl
dEVuZGluZ1NlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CiAKIHByaXZhdGU6Ci0g
ICAgdmlydHVhbCB2b2lkIGRvQXBwbHkoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRvVW5hcHBs
eSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZG9SZWFwcGx5KCk7IC8vIGNhbGxzIGRvQXBwbHko
KQotCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFZpc2libGVTZWxlY3Rp
b24gbV9zdGFydGluZ1NlbGVjdGlvbjsKICAgICBWaXNpYmxlU2VsZWN0aW9uIG1fZW5kaW5nU2Vs
ZWN0aW9uOwogICAgIENvbXBvc2l0ZUVkaXRDb21tYW5kKiBtX3BhcmVudDsKLQotICAgIGZyaWVu
ZCB2b2lkIGFwcGx5Q29tbWFuZChQYXNzUmVmUHRyPENvbXBvc2l0ZUVkaXRDb21tYW5kPik7CiB9
OwogCiBjbGFzcyBTaW1wbGVFZGl0Q29tbWFuZCA6IHB1YmxpYyBFZGl0Q29tbWFuZCB7CiBwdWJs
aWM6CisgICAgdmlydHVhbCB2b2lkIGRvVW5hcHBseSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZG9SZWFwcGx5KCk7IC8vIGNhbGxzIGRvQXBwbHkoKQogCiAjaWZuZGVmIE5ERUJVRwogICAgIHZp
cnR1YWwgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYpID0gMDsKQEAgLTEw
Nyw4ICsxMDAsNiBAQCBpbmxpbmUgU2ltcGxlRWRpdENvbW1hbmQqIHRvU2ltcGxlRWRpdENvCiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFNpbXBsZUVkaXRDb21tYW5kKj4oY29tbWFuZCk7CiB9CiAK
LXZvaWQgYXBwbHlDb21tYW5kKFBhc3NSZWZQdHI8Q29tcG9zaXRlRWRpdENvbW1hbmQ+KTsKLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRWRpdENvbW1hbmRfaApJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvU3RlcC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVW5kb1N0ZXAuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVW5kb1N0ZXAuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
VW5kb1N0ZXBfaAorI2RlZmluZSBVbmRvU3RlcF9oCisKKyNpbmNsdWRlICJFZGl0QWN0aW9uLmgi
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBVbmRvU3RlcCA6IHB1YmxpYyBSZWZDb3VudGVkPFVuZG9TdGVwPiB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+VW5kb1N0ZXAoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB1bmFwcGx5KCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFwcGx5KCkgPSAwOworICAgIHZpcnR1YWwgRWRpdEFj
dGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3QgPSAwOworfTsKKworfQorCisjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDEwMzA3MykKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDQ2
LDI3ICs0NDYsMjEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRCZWdpbkVkaXRp
bmcoUmFuZ2UqKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmRF
ZGl0aW5nKFJhbmdlKikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
SW5zZXJ0Tm9kZShOb2RlKiwgUmFuZ2UqLCBFZGl0b3JJbnNlcnRBY3Rpb24pIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgLy8gIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKE5vZGUqLCBSYW5n
ZSogcmVwbGFjaW5nUmFuZ2UsIFdlYlZpZXdJbnNlcnRBY3Rpb24pIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIHNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgUmFuZ2Uq
LCBFZGl0b3JJbnNlcnRBY3Rpb24pIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoUmFuZ2UqLCBSYW5nZSosIEVBZmZpbml0eSwgYm9v
bCkgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBcHBseVN0eWxl
KENTU1N0eWxlRGVjbGFyYXRpb24qLCBSYW5nZSopIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBib29sIHNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKFJhbmdlKiwgUmFuZ2UqKSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIC8vICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2hhbmdlVHlwaW5nU3R5
bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogZnJvbVN0eWxlLCBDU1NTdHlsZURlY2xhcmF0aW9uKiB0
b1N0eWxlKSB7IHJldHVybiBmYWxzZTsgfQotICAgIC8vICB2aXJ0dWFsIGJvb2wgZG9Db21tYW5k
QnlTZWxlY3RvcihTRUwgc2VsZWN0b3IpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgLy8KKwogICAg
IHZpcnR1YWwgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVz
cG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0No
YW5nZWRTZWxlY3Rpb24oRnJhbWUqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGlu
ZygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQo
KSB7IH0KLSAgICAvLyAgdmlydHVhbCB2b2lkIHdlYlZpZXdEaWRDaGFuZ2VUeXBpbmdTdHlsZToo
TlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24geyB9Ci0gICAgLy8gIHZpcnR1YWwgdm9pZCB3
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbiB7
IH0KLSAgICAvLyAgdmlydHVhbCBOU1VuZG9NYW5hZ2VyKiB1bmRvTWFuYWdlckZvcldlYlZpZXc6
KFdlYlZpZXcgKil3ZWJWaWV3IHsgcmV0dXJuIDA7IH0KIAotICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckNvbW1hbmRGb3JVbmRvKFBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+KSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPEVkaXRDb21tYW5kPikg
eyB9CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oUGFzc1JlZlB0cjxV
bmRvU3RlcD4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBh
c3NSZWZQdHI8VW5kb1N0ZXA+KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09w
ZXJhdGlvbnMoKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBjYW5Db3B5Q3V0KEZyYW1lKiwgYm9v
bCBkZWZhdWx0VmFsdWUpIGNvbnN0IHsgcmV0dXJuIGRlZmF1bHRWYWx1ZTsgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0VkaXRvckNsaWVudC5oCShyZXZpc2lvbiAxMDMwNzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0VkaXRvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiRWRpdG9ySW5zZXJ0QWN0aW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CiAjaW5jbHVkZSAiVGV4dEFmZmluaXR5LmgiCisjaW5jbHVkZSAiVW5kb1N0ZXAuaCIKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNTMsNyAr
NTQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBcmNoaXZlUmVzb3VyY2U7CiBjbGFz
cyBDU1NTdHlsZURlY2xhcmF0aW9uOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKLWNsYXNzIEVk
aXRDb21tYW5kOwogY2xhc3MgRWRpdG9yOwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwpA
QCAtOTksOCArOTksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRTZWxlY3Rpb25U
eXBlc0ZvclBhc3RlYm9hcmQoKSA9IDA7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVy
Q29tbWFuZEZvclVuZG8oUGFzc1JlZlB0cjxFZGl0Q29tbWFuZD4pID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPEVkaXRDb21tYW5kPikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JVbmRvKFBhc3NSZWZQdHI8VW5k
b1N0ZXA+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oUGFz
c1JlZlB0cjxVbmRvU3RlcD4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09w
ZXJhdGlvbnMoKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29weUN1dChGcmFtZSosIGJv
b2wgZGVmYXVsdFZhbHVlKSBjb25zdCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDMw
NzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw0MSBAQAorMjAxMS0xMi0xNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBPbmx5IEVkaXRDb21tYW5kQ29tcG9zaXRpb24gc2hvdWxkIGltcGxlbWVudCB1bmFw
cGx5IGFuZCByZWFwcGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NDQ5MAorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAg
ICAgIFJlbmFtZWQgV2ViRWRpdENvbW1hbmQgdG8gV2ViVW5kb1N0ZXAgYW5kIG1hZGUgbmVjZXNz
YXJ5IGNoYW5nZXMuCisgICAgICAgIEV2ZXJ5dGhpbmcgb24gV2ViUHJvY2VzcyBzaWRlIHNob3Vs
ZCBoYXZlIHRoZSBjb3JyZWN0IG5hbWUgbm93LgorCisgICAgICAgIE5hbWVzIGluIHRoZSBwcm94
eSBhbmQgVUlQcm9jZXNzIGFyZSB0byBiZSB1cGRhdGVkIGluIGEgZm9sbG93IHVwLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAg
ICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQ29tbWFuZEZv
clVuZG8pOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQ29tbWFu
ZEZvclJlZG8pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkVkaXRDb21tYW5kLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRWRpdENvbW1hbmQu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OndlYlVuZG9TdGVwKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6YWRkV2ViVW5kb1N0ZXApOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZW1v
dmVXZWJFZGl0Q29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVuYXBwbHlFZGl0
Q29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlYXBwbHlFZGl0Q29tbWFuZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViVW5kb1N0ZXAuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRWRpdENvbW1hbmQuY3BwLgorICAgICAgICAoV2ViS2l0
OjpnZW5lcmF0ZVVuZG9TdGVwKToKKyAgICAgICAgKFdlYktpdDo6V2ViVW5kb1N0ZXA6OmNyZWF0
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVuZG9TdGVwLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJFZGl0Q29tbWFuZC5oLgor
ICAgICAgICAoV2ViS2l0OjpXZWJVbmRvU3RlcDo6ZW50cnkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVbmRvU3RlcDo6ZW50cnlJRCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVuZG9TdGVwOjpXZWJV
bmRvU3RlcCk6CisgICAgICAgICogd2luL1dlYktpdDIudmNwcm9qOgorCiAyMDExLTEyLTE2ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RL
XSBVc2UgYml0IGZpZWxkIGZvciBib29sIG1lbWJlcnMgb2YgV2ViS2l0V2luZG93UHJvcGVydGll
c1ByaXZhdGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDMwNzMpCisrKyBT
b3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzc2LDcgKzM3
Niw3IEBAIFNFVChXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvVGlsZWRE
cmF3aW5nQXJlYS5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0
UHJveHkuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcAotICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJFZGl0Q29tbWFuZC5jcHAKKyAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViVW5kb1N0ZXAuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCiAgICAgV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcApJbmRleDogU291cmNlL1dl
YktpdDIvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvR05VbWFr
ZWZpbGUuYW0JKHJldmlzaW9uIDEwMzA3MykKKysrIFNvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
LmFtCSh3b3JraW5nIGNvcHkpCkBAIC05MDYsOCArOTA2LDYgQEAgbGlid2Via2l0Mmd0a19AV0VC
S0lUR1RLX0FQSV9NQUpPUl9WRVJTSQogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuaCBcCi0JU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkVkaXRDb21tYW5kLmNwcCBcCi0JU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkVkaXRDb21tYW5kLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yLmNwcCBcCkBAIC05MTgsNiArOTE2LDggQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQ
SV9NQUpPUl9WRVJTSQogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
R3JvdXBQcm94eS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlR3JvdXBQcm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVW5kb1N0ZXAu
Y3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVW5kb1N0ZXAuaCBc
CiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3Bw
IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5o
IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIFwKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVGFy
Z2V0LnByaQkocmV2aXNpb24gMTAzMDczKQorKysgU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQko
d29ya2luZyBjb3B5KQpAQCAtMzQ5LDEyICszNDksMTIgQEAgSEVBREVSUyArPSBcCiAgICAgV2Vi
UHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFn
ZS9QYWdlT3ZlcmxheS5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUu
aCBcCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkVkaXRDb21tYW5kLmggXAogICAgIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5z
cGVjdG9yLmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lci5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIFwKICAgICBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuaCBcCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlVuZG9TdGVwLmggXAogICAgIFdlYlByb2Nlc3MvV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNz
LmggXAogICAgIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIFwKICAgICBXZWJQcm9jZXNzL3F0L1F0
QnVpbHRpbkJ1bmRsZS5oIFwKQEAgLTY5OCwxMiArNjk4LDEyIEBAIFNPVVJDRVMgKz0gXAogICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9UaWxlZERyYXdpbmdBcmVhLmNwcCBcCiAgICAgV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcCBcCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkVk
aXRDb21tYW5kLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBcCiAg
ICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAgXAogICAgIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgXAogICAgIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91
cFByb3h5LmNwcCBcCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVuZG9TdGVwLmNwcCBcCiAg
ICAgV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYkluc3BlY3RvclF0LmNwcCBcCiAgICAgV2ViUHJv
Y2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2Vi
UGFnZS9xdC9XZWJQYWdlUXQuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEwMzA3MykKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNzAxLDggKzcwMSw4IEBACiAJCUJDOTYzRDZCMTEzREQxOTIwMDU3NEJFMiAvKiBXZWJQ
YWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
OTYzRDZBMTEzREQxOTIwMDU3NEJFMiAvKiBXZWJQYWdlLmNwcCAqLzsgfTsKIAkJQkM5NjNENkUx
MTNERDFBNTAwNTc0QkUyIC8qIFdlYlBhZ2VNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk2M0Q2RDExM0REMUE1MDA1NzRCRTIgLyogV2ViUGFn
ZU1hYy5tbSAqLzsgfTsKIAkJQkM5QjM4QTExMEY1MzhCRTAwNDQzQTE1IC8qIFdlYkZyYW1lUHJv
eHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOUIz
ODlGMTBGNTM4QkUwMDQ0M0ExNSAvKiBXZWJGcmFtZVByb3h5LmggKi87IH07Ci0JCUJDQTBFRjdG
MTIzMzFFNzgwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBMEVGN0QxMjMzMUU3ODAwN0QzQ0ZCIC8qIFdl
YkVkaXRDb21tYW5kLmggKi87IH07Ci0JCUJDQTBFRjgwMTIzMzFFNzgwMDdEM0NGQiAvKiBXZWJF
ZGl0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0EwRUY3RTEyMzMxRTc4MDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmQuY3BwICovOyB9
OworCQlCQ0EwRUY3RjEyMzMxRTc4MDA3RDNDRkIgLyogV2ViVW5kb1N0ZXAuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTBFRjdEMTIzMzFFNzgwMDdE
M0NGQiAvKiBXZWJVbmRvU3RlcC5oICovOyB9OworCQlCQ0EwRUY4MDEyMzMxRTc4MDA3RDNDRkIg
LyogV2ViVW5kb1N0ZXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNBMEVGN0UxMjMzMUU3ODAwN0QzQ0ZCIC8qIFdlYlVuZG9TdGVwLmNwcCAqLzsg
fTsKIAkJQkNBMEVGOUYxMjMzMjY0MjAwN0QzQ0ZCIC8qIFdlYkVkaXRDb21tYW5kUHJveHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTBFRjlEMTIz
MzI2NDIwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZFByb3h5LmggKi87IH07CiAJCUJDQTBFRkEw
MTIzMzI2NDIwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZFByb3h5LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTBFRjlFMTIzMzI2NDIwMDdEM0NG
QiAvKiBXZWJFZGl0Q29tbWFuZFByb3h5LmNwcCAqLzsgfTsKIAkJQkNBMjg0RDYxNDkyRjJDNzAw
MUY5MDQyIC8qIFdLQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDQTI4NEQ0MTQ5MkYyQzcwMDFGOTA0MiAvKiBXS0Nvbm5lY3Rpb24u
bW0gKi87IH07CkBAIC0xNzI2LDggKzE3MjYsOCBAQAogCQlCQzk2M0Q2QTExM0REMTkyMDA1NzRC
RTIgLyogV2ViUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM5NjNENkQxMTNERDFB
NTAwNTc0QkUyIC8qIFdlYlBhZ2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJQYWdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzlCMzg5RjEwRjUzOEJFMDA0NDNBMTUgLyogV2ViRnJhbWVQcm94eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJGcmFtZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUJDQTBFRjdEMTIzMzFFNzgwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJFZGl0Q29tbWFuZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0EwRUY3RTEyMzMxRTc4MDA3RDNDRkIgLyogV2ViRWRp
dENvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViRWRp
dENvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0EwRUY3RDEyMzMx
RTc4MDA3RDNDRkIgLyogV2ViVW5kb1N0ZXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViVW5kb1N0ZXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNBMEVG
N0UxMjMzMUU3ODAwN0QzQ0ZCIC8qIFdlYlVuZG9TdGVwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVuZG9TdGVwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkNBMEVGOUQxMjMzMjY0MjAwN0QzQ0ZCIC8qIFdlYkVkaXRDb21tYW5kUHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRWRpdENvbW1hbmRQcm94eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0EwRUY5RTEyMzMyNjQyMDA3RDNDRkIg
LyogV2ViRWRpdENvbW1hbmRQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJFZGl0Q29tbWFuZFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkNBMjg0RDQxNDkyRjJDNzAwMUY5MDQyIC8qIFdLQ29ubmVjdGlvbi5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLQ29ubmVjdGlvbi5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3OTksOCArMjc5OSw4IEBACiAJCQkJQkM3MkI5Rjkx
MUU2NDc2QjAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmggKi8sCiAJCQkJNTE4
NzFCNTkxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmNwcCAqLywKIAkJCQk1MTg3
MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCAqLywKLQkJCQlCQ0EwRUY3
RTEyMzMxRTc4MDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmQuY3BwICovLAotCQkJCUJDQTBFRjdE
MTIzMzFFNzgwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZC5oICovLAorCQkJCUJDQTBFRjdFMTIz
MzFFNzgwMDdEM0NGQiAvKiBXZWJVbmRvU3RlcC5jcHAgKi8sCisJCQkJQkNBMEVGN0QxMjMzMUU3
ODAwN0QzQ0ZCIC8qIFdlYlVuZG9TdGVwLmggKi8sCiAJCQkJQkMxMTFBREMxMTJGNUI5MzAwMzM3
QkFCIC8qIFdlYkZyYW1lLmNwcCAqLywKIAkJCQlCQzAzMkQ4OTEwRjQzN0EwMDA1OEMxNUEgLyog
V2ViRnJhbWUuaCAqLywKIAkJCQkxQzhFMjgxRjEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVj
dG9yLmNwcCAqLywKQEAgLTM5MDEsNyArMzkwMSw3IEBACiAJCQkJQkNCMEIwREMxMjMwNUEyNTAw
QjEzNDFFIC8qIFdlYkNvbnRleHRVc2VyTWVzc2FnZUNvZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNCMEIwREUxMjMwNUE4QzAwQjEzNDFFIC8qIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VD
b2RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjBCMEUwMTIzMDVBQjEwMEIxMzQxRSAvKiBV
c2VyTWVzc2FnZUNvZGVycy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkNBMEVGN0YxMjMzMUU3ODAw
N0QzQ0ZCIC8qIFdlYkVkaXRDb21tYW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0EwRUY3RjEy
MzMxRTc4MDA3RDNDRkIgLyogV2ViVW5kb1N0ZXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQTBF
RjlGMTIzMzI2NDIwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZFByb3h5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzMzREQ2ODEyMzg0NjQ2MDAzNjBGM0YgLyogV2ViTnVtYmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0Y1MDEyMTEyM0VEM0IzMDA1OTU1QUUgLyogVGhyZWFkTGF1bmNoZXIuaCBp
biBIZWFkZXJzICovLApAQCAtNDU1MCw3ICs0NTUwLDcgQEAKIAkJCQlCQzkwQTFENzEyMkRENjZB
MDBDQzhDNTAgLyogV2ViVVJMUmVzcG9uc2VNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0Iw
QUQzMzEyMkYyODU4MDBCMTM0MUUgLyogTXV0YWJsZUFycmF5LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDQjBBRUVBMTIyRjUzRTMwMEIxMzQxRSAvKiBNdXRhYmxlRGljdGlvbmFyeS5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQlCQ0EwRUY4MDEyMzMxRTc4MDA3RDNDRkIgLyogV2ViRWRpdENvbW1h
bmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkNBMEVGODAxMjMzMUU3ODAwN0QzQ0ZCIC8qIFdl
YlVuZG9TdGVwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQTBFRkEwMTIzMzI2NDIwMDdEM0NG
QiAvKiBXZWJFZGl0Q29tbWFuZFByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRjUwMTIy
MTIzRUQzQjMwMDU5NTVBRSAvKiBUaHJlYWRMYXVuY2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQ0Y1MDFCNDEyM0VGNjAyMDA1OTU1QUUgLyogVGhyZWFkTGF1bmNoZXJNYWMubW0gaW4gU291
cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHJldmlzaW9uIDEwMzA3MykK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FyY2hpdmVSZXNvdXJjZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRG9jdW1lbnRGcmFnbWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRWRpdENvbW1h
bmQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgpAQCAtNDYsNiAr
NDUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvVW5kb1N0ZXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJUeXBpbmdHZXN0
dXJlSW5kaWNhdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMjIwLDIxICsy
MjAsMjEgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpZFNldFNlbGVjdGlvblR5cAogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckNvbW1h
bmRGb3JVbmRvKFBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+IGNvbW1hbmQpCit2b2lkIFdlYkVkaXRv
ckNsaWVudDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyhQYXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVw
KQogewogICAgIC8vIEZJWE1FOiBBZGQgYXNzZXJ0aW9uIHRoYXQgdGhlIGNvbW1hbmQgYmVpbmcg
cmVhcHBsaWVkIGlzIHRoZSBzYW1lIGNvbW1hbmQgdGhhdCBpcwogICAgIC8vIGJlaW5nIHBhc3Nl
ZCB0byB1cy4KICAgICBpZiAobV9wYWdlLT5pc0luUmVkbygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSZWZQdHI8V2ViRWRpdENvbW1hbmQ+IHdlYkNvbW1hbmQgPSBXZWJFZGl0Q29tbWFuZDo6
Y3JlYXRlKGNvbW1hbmQpOwotICAgIG1fcGFnZS0+YWRkV2ViRWRpdENvbW1hbmQod2ViQ29tbWFu
ZC0+Y29tbWFuZElEKCksIHdlYkNvbW1hbmQuZ2V0KCkpOwotICAgIHVpbnQzMl90IGVkaXRBY3Rp
b24gPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4od2ViQ29tbWFuZC0+Y29tbWFuZCgpLT5lZGl0aW5n
QWN0aW9uKCkpOworICAgIFJlZlB0cjxXZWJVbmRvU3RlcD4gd2ViU3RlcCA9IFdlYlVuZG9TdGVw
OjpjcmVhdGUoc3RlcCk7CisgICAgbV9wYWdlLT5hZGRXZWJVbmRvU3RlcCh3ZWJTdGVwLT5zdGVw
SUQoKSwgd2ViU3RlcC5nZXQoKSk7CisgICAgdWludDMyX3QgZWRpdEFjdGlvbiA9IHN0YXRpY19j
YXN0PHVpbnQzMl90Pih3ZWJTdGVwLT5zdGVwKCktPmVkaXRpbmdBY3Rpb24oKSk7CiAKLSAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJFZGl0Q29tbWFuZEZv
clVuZG8od2ViQ29tbWFuZC0+Y29tbWFuZElEKCksIGVkaXRBY3Rpb24pKTsKKyAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJFZGl0Q29tbWFuZEZvclVuZG8o
d2ViU3RlcC0+c3RlcElEKCksIGVkaXRBY3Rpb24pKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OnJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oUGFzc1JlZlB0cjxFZGl0Q29tbWFuZD4pCit2b2lk
IFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPFVuZG9T
dGVwPikKIHsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCShyZXZpc2lvbiAxMDMwNzMp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw4ICs2OSw4IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpIE9WRVJSSURF
OwogICAgIAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JVbmRvKFBhc3NSZWZQ
dHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oUGFzc1JlZlB0
cjxXZWJDb3JlOjpVbmRvU3RlcD4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rl
ckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+KSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKSBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBjYW5Db3B5Q3V0KFdlYkNvcmU6OkZyYW1lKiwgYm9vbCBkZWZhdWx0
VmFsdWUpIGNvbnN0IE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkVkaXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRWRpdENvbW1hbmQuY3BwCShyZXZpc2lvbiAxMDMwNzMpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRWRpdENvbW1hbmQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiV2ViRWRpdENvbW1hbmQuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLXN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUNvbW1hbmRJRCgpCi17Ci0gICAgc3RhdGljIHVp
bnQ2NF90IHVuaXF1ZUNvbW1hbmRJRCA9IDE7Ci0gICAgcmV0dXJuIHVuaXF1ZUNvbW1hbmRJRCsr
OwotfQotCi1QYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kPiBXZWJFZGl0Q29tbWFuZDo6Y3JlYXRl
KFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+IGNvbW1hbmQpCi17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJFZGl0Q29tbWFuZChjb21tYW5kLCBnZW5lcmF0ZUNvbW1hbmRJRCgp
KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkVkaXRDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkVkaXRDb21tYW5kLmgJKHJldmlzaW9uIDEwMzA3
MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJFZGl0Q29tbWFuZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdl
YkVkaXRDb21tYW5kX2gKLSNkZWZpbmUgV2ViRWRpdENvbW1hbmRfaAotCi0jaW5jbHVkZSA8V2Vi
Q29yZS9FZGl0Q29tbWFuZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViRWRpdENv
bW1hbmQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJFZGl0Q29tbWFuZD4gewotcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kPiBjcmVhdGUoUGFzc1JlZlB0cjxXZWJD
b3JlOjpFZGl0Q29tbWFuZD4pOwotCi0gICAgV2ViQ29yZTo6RWRpdENvbW1hbmQqIGNvbW1hbmQo
KSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmQuZ2V0KCk7IH0KLSAgICB1aW50NjRfdCBjb21tYW5k
SUQoKSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmRJRDsgfQotCi1wcml2YXRlOgotICAgIFdlYkVk
aXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+IGNvbW1hbmQsIHVpbnQ2
NF90IGNvbW1hbmRJRCkKLSAgICAgICAgOiBtX2NvbW1hbmQoY29tbWFuZCkKLSAgICAgICAgLCBt
X2NvbW1hbmRJRChjb21tYW5kSUQpCi0gICAgewotICAgIH0KLQotICAgIFJlZlB0cjxXZWJDb3Jl
OjpFZGl0Q29tbWFuZD4gbV9jb21tYW5kOwotICAgIHVpbnQ2NF90IG1fY29tbWFuZElEOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJFZGl0Q29tbWFuZF9oCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShy
ZXZpc2lvbiAxMDMwNzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNjAsMzggKzIwNjAsMzggQEAgdm9pZCBXZWJQ
YWdlOjp3aWxsUGVyZm9ybUxvYWREcmFnRGVzdGluYQogICAgIG1fc2FuZGJveEV4dGVuc2lvblRy
YWNrZXIud2lsbFBlcmZvcm1Mb2FkRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKG1fcGVuZGluZ0Ryb3BT
YW5kYm94RXh0ZW5zaW9uLnJlbGVhc2UoKSk7CiB9CiAKLVdlYkVkaXRDb21tYW5kKiBXZWJQYWdl
Ojp3ZWJFZGl0Q29tbWFuZCh1aW50NjRfdCBjb21tYW5kSUQpCitXZWJVbmRvU3RlcCogV2ViUGFn
ZTo6d2ViVW5kb1N0ZXAodWludDY0X3Qgc3RlcElEKQogewotICAgIHJldHVybiBtX2VkaXRDb21t
YW5kTWFwLmdldChjb21tYW5kSUQpLmdldCgpOworICAgIHJldHVybiBtX3VuZG9TdGVwTWFwLmdl
dChzdGVwSUQpLmdldCgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmFkZFdlYkVkaXRDb21tYW5kKHVp
bnQ2NF90IGNvbW1hbmRJRCwgV2ViRWRpdENvbW1hbmQqIGNvbW1hbmQpCit2b2lkIFdlYlBhZ2U6
OmFkZFdlYlVuZG9TdGVwKHVpbnQ2NF90IHN0ZXBJRCwgV2ViVW5kb1N0ZXAqIGVudHJ5KQogewot
ICAgIG1fZWRpdENvbW1hbmRNYXAuc2V0KGNvbW1hbmRJRCwgY29tbWFuZCk7CisgICAgbV91bmRv
U3RlcE1hcC5zZXQoc3RlcElELCBlbnRyeSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVtb3ZlV2Vi
RWRpdENvbW1hbmQodWludDY0X3QgY29tbWFuZElEKQordm9pZCBXZWJQYWdlOjpyZW1vdmVXZWJF
ZGl0Q29tbWFuZCh1aW50NjRfdCBzdGVwSUQpCiB7Ci0gICAgbV9lZGl0Q29tbWFuZE1hcC5yZW1v
dmUoY29tbWFuZElEKTsKKyAgICBtX3VuZG9TdGVwTWFwLnJlbW92ZShzdGVwSUQpOwogfQogCi12
b2lkIFdlYlBhZ2U6OnVuYXBwbHlFZGl0Q29tbWFuZCh1aW50NjRfdCBjb21tYW5kSUQpCit2b2lk
IFdlYlBhZ2U6OnVuYXBwbHlFZGl0Q29tbWFuZCh1aW50NjRfdCBzdGVwSUQpCiB7Ci0gICAgV2Vi
RWRpdENvbW1hbmQqIGNvbW1hbmQgPSB3ZWJFZGl0Q29tbWFuZChjb21tYW5kSUQpOwotICAgIGlm
ICghY29tbWFuZCkKKyAgICBXZWJVbmRvU3RlcCogc3RlcCA9IHdlYlVuZG9TdGVwKHN0ZXBJRCk7
CisgICAgaWYgKCFzdGVwKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb21tYW5kLT5jb21tYW5k
KCktPnVuYXBwbHkoKTsKKyAgICBzdGVwLT5zdGVwKCktPnVuYXBwbHkoKTsKIH0KIAotdm9pZCBX
ZWJQYWdlOjpyZWFwcGx5RWRpdENvbW1hbmQodWludDY0X3QgY29tbWFuZElEKQordm9pZCBXZWJQ
YWdlOjpyZWFwcGx5RWRpdENvbW1hbmQodWludDY0X3Qgc3RlcElEKQogewotICAgIFdlYkVkaXRD
b21tYW5kKiBjb21tYW5kID0gd2ViRWRpdENvbW1hbmQoY29tbWFuZElEKTsKLSAgICBpZiAoIWNv
bW1hbmQpCisgICAgV2ViVW5kb1N0ZXAqIHN0ZXAgPSB3ZWJVbmRvU3RlcChzdGVwSUQpOworICAg
IGlmICghc3RlcCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pc0luUmVkbyA9IHRydWU7Ci0g
ICAgY29tbWFuZC0+Y29tbWFuZCgpLT5yZWFwcGx5KCk7CisgICAgc3RlcC0+c3RlcCgpLT5yZWFw
cGx5KCk7CiAgICAgbV9pc0luUmVkbyA9IGZhbHNlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDEwMzA3MykKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDcgKzQ0LDcgQEAKICNpbmNsdWRlICJQbHVnaW4uaCIKICNpbmNsdWRlICJTYW5kYm94
RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCi0jaW5jbHVkZSAiV2Vi
RWRpdENvbW1hbmQuaCIKKyNpbmNsdWRlICJXZWJVbmRvU3RlcC5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvRHJhZ0RhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgpAQCAtMTkxLDggKzE5MSw4IEBAIHB1YmxpYzoKICAg
ICBXZWJDb3JlOjpJbnRSZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3Q7CiAgICAgV2ViQ29y
ZTo6S2V5Ym9hcmRVSU1vZGUga2V5Ym9hcmRVSU1vZGUoKTsKIAotICAgIFdlYkVkaXRDb21tYW5k
KiB3ZWJFZGl0Q29tbWFuZCh1aW50NjRfdCk7Ci0gICAgdm9pZCBhZGRXZWJFZGl0Q29tbWFuZCh1
aW50NjRfdCwgV2ViRWRpdENvbW1hbmQqKTsKKyAgICBXZWJVbmRvU3RlcCogd2ViVW5kb1N0ZXAo
dWludDY0X3QpOworICAgIHZvaWQgYWRkV2ViVW5kb1N0ZXAodWludDY0X3QsIFdlYlVuZG9TdGVw
Kik7CiAgICAgdm9pZCByZW1vdmVXZWJFZGl0Q29tbWFuZCh1aW50NjRfdCk7CiAgICAgYm9vbCBp
c0luUmVkbygpIGNvbnN0IHsgcmV0dXJuIG1faXNJblJlZG87IH0KIApAQCAtNjYyLDcgKzY2Miw3
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgUnVuTG9vcDo6VGltZXI8V2ViUGFnZT4gbV9zZXRDYW5T
dGFydE1lZGlhVGltZXI7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViRWRpdENv
bW1hbmQ+ID4gbV9lZGl0Q29tbWFuZE1hcDsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
V2ViVW5kb1N0ZXA+ID4gbV91bmRvU3RlcE1hcDsKIAogICAgIFdlYkNvcmU6OkludFNpemUgbV93
aW5kb3dSZXNpemVyU2l6ZTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlVuZG9TdGVwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViVW5kb1N0ZXAuY3BwCShyZXZpc2lvbiAxMDMwNzMpCShmcm9tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJFZGl0Q29tbWFuZC5jcHA6MTAzMDczKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVuZG9TdGVwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYkVkaXRDb21tYW5kLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVDb21tYW5kSUQoKQoreworICAgIHN0YXRpYyB1aW50
NjRfdCB1bmlxdWVDb21tYW5kSUQgPSAxOworICAgIHJldHVybiB1bmlxdWVDb21tYW5kSUQrKzsK
K30KKworUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZD4gV2ViRWRpdENvbW1hbmQ6OmNyZWF0ZShQ
YXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiBjb21tYW5kKQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViRWRpdENvbW1hbmQoY29tbWFuZCwgZ2VuZXJhdGVDb21tYW5kSUQoKSkp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJVbmRvU3RlcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVuZG9TdGVwLmNwcAkocmV2aXNpb24gMTAzMDczKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVuZG9TdGVwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjQsMTkgKzI0LDE5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldlYkVkaXRDb21tYW5kLmgiCisjaW5jbHVkZSAiV2ViVW5kb1N0ZXAuaCIK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUNvbW1hbmRJ
RCgpCitzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVVbmRvU3RlcCgpCiB7Ci0gICAgc3RhdGljIHVp
bnQ2NF90IHVuaXF1ZUNvbW1hbmRJRCA9IDE7Ci0gICAgcmV0dXJuIHVuaXF1ZUNvbW1hbmRJRCsr
OworICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVFbnRyeUlEID0gMTsKKyAgICByZXR1cm4gdW5p
cXVlRW50cnlJRCsrOwogfQogCi1QYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kPiBXZWJFZGl0Q29t
bWFuZDo6Y3JlYXRlKFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+IGNvbW1hbmQpCitQ
YXNzUmVmUHRyPFdlYlVuZG9TdGVwPiBXZWJVbmRvU3RlcDo6Y3JlYXRlKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6VW5kb1N0ZXA+IHN0ZXApCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJFZGl0
Q29tbWFuZChjb21tYW5kLCBnZW5lcmF0ZUNvbW1hbmRJRCgpKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJVbmRvU3RlcChzdGVwLCBnZW5lcmF0ZVVuZG9TdGVwKCkpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViVW5kb1N0ZXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViVW5kb1N0ZXAuaAkocmV2aXNpb24gMTAzMDczKQkoZnJvbSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRWRpdENvbW1hbmQuaDoxMDMwNzMpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVW5kb1N0ZXAuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJFZGl0Q29tbWFuZF9o
CisjZGVmaW5lIFdlYkVkaXRDb21tYW5kX2gKKworI2luY2x1ZGUgPFdlYkNvcmUvRWRpdENvbW1h
bmQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkVkaXRDb21tYW5kIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViRWRpdENvbW1hbmQ+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXZWJFZGl0Q29tbWFuZD4gY3JlYXRlKFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1h
bmQ+KTsKKworICAgIFdlYkNvcmU6OkVkaXRDb21tYW5kKiBjb21tYW5kKCkgY29uc3QgeyByZXR1
cm4gbV9jb21tYW5kLmdldCgpOyB9CisgICAgdWludDY0X3QgY29tbWFuZElEKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb21tYW5kSUQ7IH0KKworcHJpdmF0ZToKKyAgICBXZWJFZGl0Q29tbWFuZChQYXNz
UmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiBjb21tYW5kLCB1aW50NjRfdCBjb21tYW5kSUQp
CisgICAgICAgIDogbV9jb21tYW5kKGNvbW1hbmQpCisgICAgICAgICwgbV9jb21tYW5kSUQoY29t
bWFuZElEKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+
IG1fY29tbWFuZDsKKyAgICB1aW50NjRfdCBtX2NvbW1hbmRJRDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRWRpdENvbW1hbmRfaApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVuZG9TdGVwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVuZG9TdGVwLmgJKHJldmlzaW9uIDEw
MzA3MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVbmRvU3RlcC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMywzMSArMjMsMzEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkVkaXRDb21tYW5kX2gKLSNkZWZpbmUg
V2ViRWRpdENvbW1hbmRfaAorI2lmbmRlZiBXZWJVbmRvU3RlcF9oCisjZGVmaW5lIFdlYlVuZG9T
dGVwX2gKIAotI2luY2x1ZGUgPFdlYkNvcmUvRWRpdENvbW1hbmQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1VuZG9TdGVwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJFZGl0Q29tbWFu
ZCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkVkaXRDb21tYW5kPiB7CitjbGFzcyBXZWJVbmRvU3Rl
cCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlVuZG9TdGVwPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmQ+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYkNvcmU6OkVk
aXRDb21tYW5kPik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViVW5kb1N0ZXA+IGNyZWF0ZShQ
YXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPik7CiAKLSAgICBXZWJDb3JlOjpFZGl0Q29tbWFu
ZCogY29tbWFuZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29tbWFuZC5nZXQoKTsgfQotICAgIHVpbnQ2
NF90IGNvbW1hbmRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fY29tbWFuZElEOyB9CisgICAgV2ViQ29y
ZTo6VW5kb1N0ZXAqIHN0ZXAoKSBjb25zdCB7IHJldHVybiBtX3N0ZXAuZ2V0KCk7IH0KKyAgICB1
aW50NjRfdCBzdGVwSUQoKSBjb25zdCB7IHJldHVybiBtX3N0ZXBJRDsgfQogCiBwcml2YXRlOgot
ICAgIFdlYkVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+IGNvbW1h
bmQsIHVpbnQ2NF90IGNvbW1hbmRJRCkKLSAgICAgICAgOiBtX2NvbW1hbmQoY29tbWFuZCkKLSAg
ICAgICAgLCBtX2NvbW1hbmRJRChjb21tYW5kSUQpCisgICAgV2ViVW5kb1N0ZXAoUGFzc1JlZlB0
cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCwgdWludDY0X3Qgc3RlcElEKQorICAgICAgICA6IG1f
c3RlcChzdGVwKQorICAgICAgICAsIG1fc3RlcElEKHN0ZXBJRCkKICAgICB7CiAgICAgfQogCi0g
ICAgUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiBtX2NvbW1hbmQ7Ci0gICAgdWludDY0X3Qg
bV9jb21tYW5kSUQ7CisgICAgUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiBtX3N0ZXA7CisgICAg
dWludDY0X3QgbV9zdGVwSUQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHJldmlzaW9uIDEwMzA3MykKKysrIFNvdXJjZS9XZWJL
aXQyL3dpbi9XZWJLaXQyLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjAzOCwxNCArMjAzOCw2
IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxXZWJQcm9jZXNzXFdlYlBhZ2VcV2ViRWRpdENvbW1hbmQuY3BwIgotCQkJCQk+Ci0JCQkJPC9G
aWxlPgotCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xXZWJQYWdl
XFdlYkVkaXRDb21tYW5kLmgiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYlBhZ2VcV2ViRnJhbWUuY3BwIgogCQkJCQk+
CiAJCQkJPC9GaWxlPgpAQCAtMjA5Myw2ICsyMDg1LDE0IEBACiAJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cV2ViUHJvY2Vzc1xXZWJQYWdlXFdlYlBhZ2VHcm91cFByb3h5LmgiCiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYlBh
Z2VcV2ViVW5kb1N0ZXAuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xXZWJQYWdlXFdlYlVuZG9TdGVwLmgiCisJCQkJ
CT4KKwkJCQk8L0ZpbGU+CiAJCQkJPEZpbHRlcgogCQkJCQlOYW1lPSJ3aW4iCiAJCQkJCT4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDMwNzMpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBA
CisyMDExLTEyLTE2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IE9ubHkgRWRpdENvbW1hbmRDb21wb3NpdGlvbiBzaG91bGQgaW1wbGVtZW50IHVuYXBwbHkgYW5k
IHJlYXBwbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc0NDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgKiBz
cmMvRWRpdG9yQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudElt
cGw6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8pOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGll
bnRJbXBsOjpyZWdpc3RlckNvbW1hbmRGb3JSZWRvKToKKyAgICAgICAgKFdlYktpdDo6RWRpdG9y
Q2xpZW50SW1wbDo6dW5kbyk6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudEltcGw6OnJl
ZG8pOgorICAgICAgICAqIHNyYy9FZGl0b3JDbGllbnRJbXBsLmg6CisKIDIwMTEtMTItMTUgIFN0
ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRW5hYmxl
IENTU19GSUxURVJTIGluIENocm9taXVtLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDEwMzA3MykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50SW1wbC5oIgogCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFZGl0Q29tbWFuZC5oIgogI2luY2x1ZGUgIkVk
aXRvci5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKQEAgLTQxLDYgKzQwLDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1
ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlNwZWxsQ2hlY2tlci5oIgorI2luY2x1ZGUg
IlVuZG9TdGVwLmgiCiAKICNpbmNsdWRlICJET01VdGlsaXRpZXNQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiV2ViQXV0b2ZpbGxDbGllbnQuaCIKQEAgLTI4OCwxOCArMjg4LDE4IEBAIHZvaWQgRWRpdG9y
Q2xpZW50SW1wbDo6ZGlkU2V0U2VsZWN0aW9uVHkKIHsKIH0KIAotdm9pZCBFZGl0b3JDbGllbnRJ
bXBsOjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKFBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+IGNvbW1h
bmQpCit2b2lkIEVkaXRvckNsaWVudEltcGw6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oUGFzc1Jl
ZlB0cjxVbmRvU3RlcD4gc3RlcCkKIHsKICAgICBpZiAobV91bmRvU3RhY2suc2l6ZSgpID09IG1h
eGltdW1VbmRvU3RhY2tEZXB0aCkKICAgICAgICAgbV91bmRvU3RhY2sucmVtb3ZlRmlyc3QoKTsg
Ly8gZHJvcCBvbGRlc3QgaXRlbSBvZmYgdGhlIGZhciBlbmQKICAgICBpZiAoIW1faW5SZWRvKQog
ICAgICAgICBtX3JlZG9TdGFjay5jbGVhcigpOwotICAgIG1fdW5kb1N0YWNrLmFwcGVuZChjb21t
YW5kKTsKKyAgICBtX3VuZG9TdGFjay5hcHBlbmQoc3RlcCk7CiB9CiAKLXZvaWQgRWRpdG9yQ2xp
ZW50SW1wbDo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPEVkaXRDb21tYW5kPiBj
b21tYW5kKQordm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBh
c3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7Ci0gICAgbV9yZWRvU3RhY2suYXBwZW5kKGNvbW1h
bmQpOworICAgIG1fcmVkb1N0YWNrLmFwcGVuZChzdGVwKTsKIH0KIAogdm9pZCBFZGl0b3JDbGll
bnRJbXBsOjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCkBAIC0zMzUsMTAgKzMzNSwxMCBAQCBi
b29sIEVkaXRvckNsaWVudEltcGw6OmNhblJlZG8oKSBjb25zdAogdm9pZCBFZGl0b3JDbGllbnRJ
bXBsOjp1bmRvKCkKIHsKICAgICBpZiAoY2FuVW5kbygpKSB7Ci0gICAgICAgIEVkaXRDb21tYW5k
U3RhY2s6Oml0ZXJhdG9yIGJhY2sgPSAtLW1fdW5kb1N0YWNrLmVuZCgpOwotICAgICAgICBSZWZQ
dHI8RWRpdENvbW1hbmQ+IGNvbW1hbmQoKmJhY2spOworICAgICAgICBVbmRvTWFuYWdlclN0YWNr
OjppdGVyYXRvciBiYWNrID0gLS1tX3VuZG9TdGFjay5lbmQoKTsKKyAgICAgICAgUmVmUHRyPFVu
ZG9TdGVwPiBzdGVwKCpiYWNrKTsKICAgICAgICAgbV91bmRvU3RhY2sucmVtb3ZlKGJhY2spOwot
ICAgICAgICBjb21tYW5kLT51bmFwcGx5KCk7CisgICAgICAgIHN0ZXAtPnVuYXBwbHkoKTsKICAg
ICAgICAgLy8gdW5hcHBseSB3aWxsIGNhbGwgdXMgYmFjayB0byBwdXNoIHRoaXMgY29tbWFuZCBv
bnRvIHRoZSByZWRvIHN0YWNrLgogICAgIH0KIH0KQEAgLTM0NiwxMyArMzQ2LDEzIEBAIHZvaWQg
RWRpdG9yQ2xpZW50SW1wbDo6dW5kbygpCiB2b2lkIEVkaXRvckNsaWVudEltcGw6OnJlZG8oKQog
ewogICAgIGlmIChjYW5SZWRvKCkpIHsKLSAgICAgICAgRWRpdENvbW1hbmRTdGFjazo6aXRlcmF0
b3IgYmFjayA9IC0tbV9yZWRvU3RhY2suZW5kKCk7Ci0gICAgICAgIFJlZlB0cjxFZGl0Q29tbWFu
ZD4gY29tbWFuZCgqYmFjayk7CisgICAgICAgIFVuZG9NYW5hZ2VyU3RhY2s6Oml0ZXJhdG9yIGJh
Y2sgPSAtLW1fcmVkb1N0YWNrLmVuZCgpOworICAgICAgICBSZWZQdHI8VW5kb1N0ZXA+IHN0ZXAo
KmJhY2spOwogICAgICAgICBtX3JlZG9TdGFjay5yZW1vdmUoYmFjayk7CiAKICAgICAgICAgQVNT
RVJUKCFtX2luUmVkbyk7CiAgICAgICAgIG1faW5SZWRvID0gdHJ1ZTsKLSAgICAgICAgY29tbWFu
ZC0+cmVhcHBseSgpOworICAgICAgICBzdGVwLT5yZWFwcGx5KCk7CiAgICAgICAgIC8vIHJlYXBw
bHkgd2lsbCBjYWxsIHVzIGJhY2sgdG8gcHVzaCB0aGlzIGNvbW1hbmQgb250byB0aGUgdW5kbyBz
dGFjay4KICAgICAgICAgbV9pblJlZG8gPSBmYWxzZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAxMDMwNzMp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY1LDEwICs2NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkSW5zZXJ0Tm9kZShXZWJDb3JlOjpOb2RlKiwgV2ViQ29yZTo6UmFuZ2UqLCBXZWJDb3JlOjpF
ZGl0b3JJbnNlcnRBY3Rpb24pOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnRUZXh0KGNv
bnN0IFdURjo6U3RyaW5nJiwgV2ViQ29yZTo6UmFuZ2UqLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRB
Y3Rpb24pOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWxldGVSYW5nZShXZWJDb3JlOjpSYW5n
ZSopOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYkNvcmU6
OlJhbmdlKiBmcm9tUmFuZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViQ29yZTo6UmFuZ2UqIHRvUmFuZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6RUFmZmluaXR5LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3RpbGxTZWxlY3RpbmcpOworICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYkNvcmU6OlJhbmdlKiBmcm9tUmFu
Z2UsIFdlYkNvcmU6OlJhbmdlKiB0b1JhbmdlLAorICAgICAgICBXZWJDb3JlOjpFQWZmaW5pdHks
IGJvb2wgc3RpbGxTZWxlY3RpbmcpOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBcHBseVN0eWxl
KFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb24qLCBXZWJDb3JlOjpSYW5nZSopOwogICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShXZWJDb3JlOjpSYW5nZSosIFdl
YkNvcmU6OlJhbmdlKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRWRpdGluZygpOwpAQCAt
NzcsOCArNzUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCk7Ci0gICAgdmly
dHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oUGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0
Q29tbWFuZD4pOwotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJD
b21tYW5kRm9yVW5kbyhQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPik7CisgICAgdmlydHVh
bCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oUGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3Rl
cD4pOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpOwogICAgIHZp
cnR1YWwgYm9vbCBjYW5Db3B5Q3V0KFdlYkNvcmU6OkZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUp
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5QYXN0ZShXZWJDb3JlOjpGcmFtZSosIGJvb2wg
ZGVmYXVsdFZhbHVlKSBjb25zdDsKQEAgLTk4LDIxICs5NiwxNSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHRleHREaWRDaGFuZ2VJblRleHRBcmVhKFdlYkNvcmU6OkVsZW1lbnQqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgaWdub3JlV29yZEluU3BlbGxEb2N1bWVudChjb25zdCBXVEY6OlN0cmlu
ZyYpOwogICAgIHZpcnR1YWwgdm9pZCBsZWFybldvcmQoY29uc3QgV1RGOjpTdHJpbmcmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgY2hlY2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxl
bmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbWlzc3Bl
bGxpbmdMb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCogbWlzc3BlbGxpbmdMZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0
cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdURjo6VmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogYmFkR3JhbW1hckxl
bmd0aCk7CisgICAgdmlydHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hh
ciosIGludCBsZW5ndGgsIGludCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50KiBtaXNzcGVsbGlu
Z0xlbmd0aCk7CisgICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVD
aGFyKiwgaW50IGxlbmd0aCwgV1RGOjpWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLAor
ICAgICAgICBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKTsK
ICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3Nw
ZWxsZWRXb3JkKGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNw
ZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdlYkNv
cmU6OkdyYW1tYXJEZXRhaWwmKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdp
dGhNaXNzcGVsbGVkV29yZChjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBz
aG93U3BlbGxpbmdVSShib29sIHNob3cpOwogICAgIHZpcnR1YWwgYm9vbCBzcGVsbGluZ1VJSXNT
aG93aW5nKCk7Ci0gICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFdURjo6
U3RyaW5nJiB3b3JkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBX
VEY6OlN0cmluZyYgY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVzc2VzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
R3Vlc3Nlc0ZvcldvcmQoY29uc3QgV1RGOjpTdHJpbmcmIHdvcmQsIGNvbnN0IFdURjo6U3RyaW5n
JiBjb250ZXh0LCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1
YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJ
bnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4
dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJik7CkBAIC0xMzQsOSArMTI2LDkg
QEAgcHJpdmF0ZToKICAgICBXZWJWaWV3SW1wbCogbV93ZWJWaWV3OwogICAgIGJvb2wgbV9pblJl
ZG87CiAKLSAgICB0eXBlZGVmIERlcXVlPFJlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4gPiBF
ZGl0Q29tbWFuZFN0YWNrOwotICAgIEVkaXRDb21tYW5kU3RhY2sgbV91bmRvU3RhY2s7Ci0gICAg
RWRpdENvbW1hbmRTdGFjayBtX3JlZG9TdGFjazsKKyAgICB0eXBlZGVmIERlcXVlPFJlZlB0cjxX
ZWJDb3JlOjpVbmRvU3RlcD4gPiBVbmRvTWFuYWdlclN0YWNrOworICAgIFVuZG9NYW5hZ2VyU3Rh
Y2sgbV91bmRvU3RhY2s7CisgICAgVW5kb01hbmFnZXJTdGFjayBtX3JlZG9TdGFjazsKIAogICAg
IC8vIFRoaXMgZmxhZyBpcyBzZXQgdG8gZmFsc2UgaWYgc3BlbGwgY2hlY2sgZm9yIHRoaXMgZWRp
dG9yIGlzIG1hbnVhbGx5CiAgICAgLy8gdHVybmVkIG9mZi4gVGhlIGRlZmF1bHQgc2V0dGluZyBp
cyBTcGVsbENoZWNrQXV0b21hdGljLgpJbmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gMTAz
MDczKQorKysgU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTEtMTItMTYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgT25seSBFZGl0Q29tbWFuZENvbXBvc2l0aW9uIHNob3VsZCBpbXBsZW1lbnQg
dW5hcHBseSBhbmQgcmVhcHBseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzQ0OTAKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8pOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpyZWdpc3RlckNvbW1hbmRGb3JSZWRvKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6dW5kbyk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3JDbGllbnRFZmw6OnJlZG8pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEVmbC5oOgorCiAyMDExLTEyLTE1ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJv
QHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFtFRkxdIENsZWFuIHVwIGFuZCByZWZhY3RvciB0
aGUgbWVtb3J5IGNhY2hlIGZ1bmN0aW9ucyBpbiBld2tfc2V0dGluZ3MuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAJ
KHJldmlzaW9uIDEwMzA3MykKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDYgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnRFZmwuaCIKIAotI2luY2x1ZGUg
IkVkaXRDb21tYW5kLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgpAQCAtMzMsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlVuZG9TdGVwLmgiCiAjaW5jbHVkZSAiV2luZG93
c0tleWJvYXJkQ29kZXMuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogCkBAIC0xNjAsMTYg
KzE2MCwxNiBAQCB2b2lkIEVkaXRvckNsaWVudEVmbDo6ZGlkU2V0U2VsZWN0aW9uVHlwCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBFZGl0b3JDbGllbnRFZmw6OnJlZ2lzdGVyQ29t
bWFuZEZvclVuZG8oV1RGOjpQYXNzUmVmUHRyPEVkaXRDb21tYW5kPiBjb21tYW5kKQordm9pZCBF
ZGl0b3JDbGllbnRFZmw6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oV1RGOjpQYXNzUmVmUHRyPFVu
ZG9TdGVwPiBzdGVwKQogewogICAgIGlmICghbV9pc0luUmVkbykKICAgICAgICAgcmVkb1N0YWNr
LmNsZWFyKCk7Ci0gICAgdW5kb1N0YWNrLnByZXBlbmQoY29tbWFuZCk7CisgICAgdW5kb1N0YWNr
LnByZXBlbmQoc3RlcCk7CiB9CiAKLXZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWdpc3RlckNvbW1h
bmRGb3JSZWRvKFdURjo6UGFzc1JlZlB0cjxFZGl0Q29tbWFuZD4gY29tbWFuZCkKK3ZvaWQgRWRp
dG9yQ2xpZW50RWZsOjpyZWdpc3RlckNvbW1hbmRGb3JSZWRvKFdURjo6UGFzc1JlZlB0cjxVbmRv
U3RlcD4gc3RlcCkKIHsKLSAgICByZWRvU3RhY2sucHJlcGVuZChjb21tYW5kKTsKKyAgICByZWRv
U3RhY2sucHJlcGVuZChzdGVwKTsKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRFZmw6OmNsZWFyVW5k
b1JlZG9PcGVyYXRpb25zKCkKQEAgLTIwMSwxOSArMjAxLDE5IEBAIGJvb2wgRWRpdG9yQ2xpZW50
RWZsOjpjYW5SZWRvKCkgY29uc3QKIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjp1bmRvKCkKIHsKICAg
ICBpZiAoY2FuVW5kbygpKSB7Ci0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4g
Y29tbWFuZCA9IHVuZG9TdGFjay50YWtlRmlyc3QoKTsKLSAgICAgICAgY29tbWFuZC0+dW5hcHBs
eSgpOworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXAgPSB1bmRvU3RhY2su
dGFrZUZpcnN0KCk7CisgICAgICAgIHN0ZXAtPnVuYXBwbHkoKTsKICAgICB9CiB9CiAKIHZvaWQg
RWRpdG9yQ2xpZW50RWZsOjpyZWRvKCkKIHsKICAgICBpZiAoY2FuUmVkbygpKSB7Ci0gICAgICAg
IFJlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4gY29tbWFuZCA9IHJlZG9TdGFjay50YWtlRmly
c3QoKTsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiBzdGVwID0gcmVkb1N0YWNr
LnRha2VGaXJzdCgpOwogCiAgICAgICAgIEFTU0VSVCghbV9pc0luUmVkbyk7CiAgICAgICAgIG1f
aXNJblJlZG8gPSB0cnVlOwotICAgICAgICBjb21tYW5kLT5yZWFwcGx5KCk7CisgICAgICAgIHN0
ZXAtPnJlYXBwbHkoKTsKICAgICAgICAgbV9pc0luUmVkbyA9IGZhbHNlOwogICAgIH0KIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEVmbC5oCShyZXZpc2lvbiAxMDMwNzMpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRFZmwuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsOCArNDcsOCBAQCBj
bGFzcyBQYWdlOwogY2xhc3MgRWRpdG9yQ2xpZW50RWZsIDogcHVibGljIEVkaXRvckNsaWVudCwg
cHVibGljIFRleHRDaGVja2VyQ2xpZW50IHsKIHByb3RlY3RlZDoKICAgICBib29sIG1faXNJblJl
ZG87Ci0gICAgV1RGOjpEZXF1ZTxXVEY6OlJlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4gPiB1
bmRvU3RhY2s7Ci0gICAgV1RGOjpEZXF1ZTxXVEY6OlJlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFu
ZD4gPiByZWRvU3RhY2s7CisgICAgV1RGOjpEZXF1ZTxXVEY6OlJlZlB0cjxXZWJDb3JlOjpVbmRv
U3RlcD4gPiB1bmRvU3RhY2s7CisgICAgV1RGOjpEZXF1ZTxXVEY6OlJlZlB0cjxXZWJDb3JlOjpV
bmRvU3RlcD4gPiByZWRvU3RhY2s7CiAKIHB1YmxpYzoKICAgICBFZGl0b3JDbGllbnRFZmwoRXZh
c19PYmplY3QgKnZpZXcpOwpAQCAtODQsOCArODQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyQ29tbWFuZEZvclVuZG8oV1RGOjpQYXNzUmVmUHRyPEVkaXRDb21tYW5kPik7Ci0gICAg
dmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oV1RGOjpQYXNzUmVmUHRyPEVkaXRD
b21tYW5kPik7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oV1RGOjpQ
YXNzUmVmUHRyPFVuZG9TdGVwPik7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZv
clJlZG8oV1RGOjpQYXNzUmVmUHRyPFVuZG9TdGVwPik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFy
VW5kb1JlZG9PcGVyYXRpb25zKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29weUN1dChGcmFt
ZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlz
aW9uIDEwMzA3MykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE3IEBACisyMDExLTEyLTE2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgorCisgICAgICAgIE9ubHkgRWRpdENvbW1hbmRDb21wb3NpdGlvbiBzaG91bGQgaW1w
bGVtZW50IHVuYXBwbHkgYW5kIHJlYXBwbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc0NDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlk
ZWwuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8pOgorICAg
ICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQ29tbWFuZEZvclJlZG8pOgorICAg
ICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OnVuZG8pOgorICAgICAgICAoV2ViS2l0OjpFZGl0
b3JDbGllbnQ6OnJlZG8pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0
ay5oOgorCiAyMDExLTEyLTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1RLXSBVcGRhdGUgTkVXUyBhbmQgY29uZmlndXJlLmFjIGZvciAx
LjcuMyByZWxlYXNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDEwMzA3MykKKysrIFNvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDYgQEAKIAogI2luY2x1ZGUgIkRhdGFPYmplY3RHdGsuaCIKICNpbmNs
dWRlICJEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaCIKLSNpbmNsdWRlICJFZGl0Q29tbWFuZC5o
IgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRl
ICJGb2N1c0NvbnRyb2xsZXIuaCIKQEAgLTM4LDYgKzM3LDcgQEAKICNpbmNsdWRlICJQYWdlLmgi
CiAjaW5jbHVkZSAiUGFzdGVib2FyZEhlbHBlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9h
cmRFdmVudC5oIgorI2luY2x1ZGUgIlVuZG9TdGVwLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NQmlu
ZGluZy5oIgogI2luY2x1ZGUgIldlYktpdERPTUNTU1N0eWxlRGVjbGFyYXRpb25Qcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0RE9NSFRNTEVsZW1lbnRQcml2YXRlLmgiCkBAIC0zNDUsMTggKzM0
NSwxOCBAQCB2b2lkIEVkaXRvckNsaWVudDo6ZGlkU2V0U2VsZWN0aW9uVHlwZXNGCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQ29tbWFuZEZv
clVuZG8oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiBjb21tYW5kKQordm9p
ZCBFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oV1RGOjpQYXNzUmVmUHRyPFdl
YkNvcmU6OlVuZG9TdGVwPiBzdGVwKQogewogICAgIGlmICh1bmRvU3RhY2suc2l6ZSgpID09IG1h
eGltdW1VbmRvU3RhY2tEZXB0aCkKICAgICAgICAgdW5kb1N0YWNrLnJlbW92ZUZpcnN0KCk7CiAg
ICAgaWYgKCFtX2lzSW5SZWRvKQogICAgICAgICByZWRvU3RhY2suY2xlYXIoKTsKLSAgICB1bmRv
U3RhY2suYXBwZW5kKGNvbW1hbmQpOworICAgIHVuZG9TdGFjay5hcHBlbmQoc3RlcCk7CiB9CiAK
LXZvaWQgRWRpdG9yQ2xpZW50OjpyZWdpc3RlckNvbW1hbmRGb3JSZWRvKFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4gY29tbWFuZCkKK3ZvaWQgRWRpdG9yQ2xpZW50OjpyZWdp
c3RlckNvbW1hbmRGb3JSZWRvKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3Rl
cCkKIHsKLSAgICByZWRvU3RhY2suYXBwZW5kKGNvbW1hbmQpOworICAgIHJlZG9TdGFjay5hcHBl
bmQoc3RlcCk7CiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50OjpjbGVhclVuZG9SZWRvT3BlcmF0aW9u
cygpCkBAIC0zODgsMjMgKzM4OCwyMyBAQCBib29sIEVkaXRvckNsaWVudDo6Y2FuUmVkbygpIGNv
bnN0CiB2b2lkIEVkaXRvckNsaWVudDo6dW5kbygpCiB7CiAgICAgaWYgKGNhblVuZG8oKSkgewot
ICAgICAgICBSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+IGNvbW1hbmQoKigtLXVuZG9TdGFj
ay5lbmQoKSkpOworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXAoKigtLXVu
ZG9TdGFjay5lbmQoKSkpOwogICAgICAgICB1bmRvU3RhY2sucmVtb3ZlKC0tdW5kb1N0YWNrLmVu
ZCgpKTsKICAgICAgICAgLy8gdW5hcHBseSB3aWxsIGNhbGwgdXMgYmFjayB0byBwdXNoIHRoaXMg
Y29tbWFuZCBvbnRvIHRoZSByZWRvIHN0YWNrLgotICAgICAgICBjb21tYW5kLT51bmFwcGx5KCk7
CisgICAgICAgIHN0ZXAtPnVuYXBwbHkoKTsKICAgICB9CiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50
OjpyZWRvKCkKIHsKICAgICBpZiAoY2FuUmVkbygpKSB7Ci0gICAgICAgIFJlZlB0cjxXZWJDb3Jl
OjpFZGl0Q29tbWFuZD4gY29tbWFuZCgqKC0tcmVkb1N0YWNrLmVuZCgpKSk7CisgICAgICAgIFJl
ZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCgqKC0tcmVkb1N0YWNrLmVuZCgpKSk7CiAgICAg
ICAgIHJlZG9TdGFjay5yZW1vdmUoLS1yZWRvU3RhY2suZW5kKCkpOwogCiAgICAgICAgIEFTU0VS
VCghbV9pc0luUmVkbyk7CiAgICAgICAgIG1faXNJblJlZG8gPSB0cnVlOwogICAgICAgICAvLyBy
ZWFwcGx5IHdpbGwgY2FsbCB1cyBiYWNrIHRvIHB1c2ggdGhpcyBjb21tYW5kIG9udG8gdGhlIHVu
ZG8gc3RhY2suCi0gICAgICAgIGNvbW1hbmQtPnJlYXBwbHkoKTsKKyAgICAgICAgc3RlcC0+cmVh
cHBseSgpOwogICAgICAgICBtX2lzSW5SZWRvID0gZmFsc2U7CiAgICAgfQogfQpJbmRleDogU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgJ
KHJldmlzaW9uIDEwMzA3MykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw4ICs1OCw4IEBAIGNsYXNzIEVk
aXRvckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpFZGkKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IGJvb2wgbV9pc0luUmVkbzsKIAotICAgICAgICBXVEY6OkRlcXVlPFdURjo6UmVmUHRyPFdlYkNv
cmU6OkVkaXRDb21tYW5kPiA+IHVuZG9TdGFjazsKLSAgICAgICAgV1RGOjpEZXF1ZTxXVEY6OlJl
ZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4gPiByZWRvU3RhY2s7CisgICAgICAgIFdURjo6RGVx
dWU8V1RGOjpSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+ID4gdW5kb1N0YWNrOworICAgICAgICBX
VEY6OkRlcXVlPFdURjo6UmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiA+IHJlZG9TdGFjazsKIAog
ICAgIHB1YmxpYzoKICAgICAgICAgRWRpdG9yQ2xpZW50KFdlYktpdFdlYlZpZXcqKTsKQEAgLTEw
NSw4ICsxMDUsOCBAQCBjbGFzcyBFZGl0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RWRpCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCk7CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rl
ckNvbW1hbmRGb3JSZWRvKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4pOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yVW5kbyhXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6VW5kb1N0ZXA+KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29t
bWFuZEZvclJlZG8oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPik7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpOwogCiAgICAgICAgIHZpcnR1
YWwgYm9vbCBjYW5Db3B5Q3V0KFdlYkNvcmU6OkZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNv
bnN0OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMDczKQorKysgU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEt
MTItMTYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgT25seSBF
ZGl0Q29tbWFuZENvbXBvc2l0aW9uIHNob3VsZCBpbXBsZW1lbnQgdW5hcHBseSBhbmQgcmVhcHBs
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0OTAK
KworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbToKKyAgICAgICAgKC1bV2ViVW5kb1N0ZXAgaW5pdFdpdGhVbmRvU3RlcDpd
KToKKyAgICAgICAgKC1bV2ViVW5kb1N0ZXAgZGVhbGxvY10pOgorICAgICAgICAoK1tXZWJVbmRv
U3RlcCBzdGVwV2l0aFVuZG9TdGVwOl0pOgorICAgICAgICAoLVtXZWJVbmRvU3RlcCBzdGVwXSk6
CisgICAgICAgICgtW1dlYkVkaXRvclVuZG9UYXJnZXQgdW5kb0VkaXRpbmc6XSk6CisgICAgICAg
ICgtW1dlYkVkaXRvclVuZG9UYXJnZXQgcmVkb0VkaXRpbmc6XSk6CisgICAgICAgIChXZWJFZGl0
b3JDbGllbnQ6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG9PclJlZG8pOgorICAgICAgICAoV2ViRWRp
dG9yQ2xpZW50OjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKToKKyAgICAgICAgKFdlYkVkaXRvckNs
aWVudDo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyk6CisKIDIwMTEtMTItMTQgIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFjIGJ1aWxkIGZpeCBhZnRlciByMTAy
ODc0LgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDEwMzA3MykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsOCAr
MTAwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVu
dHMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlv
bihXZWJDb3JlOjpGcmFtZSopIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVy
Q29tbWFuZEZvclVuZG8oUGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4pIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6RWRpdENvbW1hbmQ+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJD
b21tYW5kRm9yVW5kbyhQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oUGFzc1JlZlB0cjxXZWJDb3Jl
OjpVbmRvU3RlcD4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhclVuZG9SZWRvT3Bl
cmF0aW9ucygpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGNhbkNvcHlDdXQoV2ViQ29y
ZTo6RnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QgT1ZFUlJJREU7CkBAIC0xNDMsNyAr
MTQzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJl
c3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vk
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKSBPVkVSUklERTsKICNlbmRp
ZgogcHJpdmF0ZToKLSAgICB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG9PclJlZG8oUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4sIGJvb2wgaXNSZWRvKTsKKyAgICB2b2lkIHJlZ2lz
dGVyQ29tbWFuZEZvclVuZG9PclJlZG8oUGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4sIGJv
b2wgaXNSZWRvKTsKICAgICBXZWJFZGl0b3JDbGllbnQoKTsKIAogICAgIFdlYlZpZXcgKm1fd2Vi
VmlldzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQubW0JKHJldmlzaW9uIDEwMzA3MykKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNTQs
OCArNTQsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9BcmNoaXZlUmVzb3VyY2UuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRGcmFnbWVudC5o
PgotI2ltcG9ydCA8V2ViQ29yZS9FZGl0QWN0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0VkaXRD
b21tYW5kLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxJbnB1dEVsZW1lbnQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxUZXh0QXJlYUVsZW1l
bnQuaD4KQEAgLTY0LDYgKzYyLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU3RyaW5nLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1NwZWxsQ2hlY2tlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9VbmRvU3RlcC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Vc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8cnVudGltZS9Jbml0aWFsaXplVGhy
ZWFkaW5nLmg+CkBAIC05MywxNyArOTIsMTcgQEAgc3RhdGljIFdlYlZpZXdJbnNlcnRBY3Rpb24g
a2l0KEVkaXRvcklucwogc3RhdGljIGNvbnN0IGludCBJbnZhbGlkQ29ycmVjdGlvblBhbmVsVGFn
ID0gMDsKIAogCi1AaW50ZXJmYWNlIFdlYkVkaXRDb21tYW5kIDogTlNPYmplY3QKK0BpbnRlcmZh
Y2UgV2ViVW5kb1N0ZXAgOiBOU09iamVjdAogewotICAgIFJlZlB0cjxFZGl0Q29tbWFuZD4gbV9j
b21tYW5kOyAgIAorICAgIFJlZlB0cjxVbmRvU3RlcD4gbV9zdGVwOyAgIAogfQogCi0rIChXZWJF
ZGl0Q29tbWFuZCAqKWNvbW1hbmRXaXRoRWRpdENvbW1hbmQ6KFBhc3NSZWZQdHI8RWRpdENvbW1h
bmQ+KWNvbW1hbmQ7Ci0tIChFZGl0Q29tbWFuZCAqKWNvbW1hbmQ7CisrIChXZWJVbmRvU3RlcCAq
KXN0ZXBXaXRoVW5kb1N0ZXA6KFBhc3NSZWZQdHI8VW5kb1N0ZXA+KXN0ZXA7CistIChVbmRvU3Rl
cCAqKXN0ZXA7CiAKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFdlYkVkaXRDb21tYW5kCitAaW1w
bGVtZW50YXRpb24gV2ViVW5kb1N0ZXAKIAogKyAodm9pZClpbml0aWFsaXplCiB7CkBAIC0xMTIs
MTkgKzExMSwxOSBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICBXZWJDb3JlT2JqQ0ZpbmFsaXpl
T25NYWluVGhyZWFkKHNlbGYpOwogfQogCi0tIChpZClpbml0V2l0aEVkaXRDb21tYW5kOihQYXNz
UmVmUHRyPEVkaXRDb21tYW5kPiljb21tYW5kCistIChpZClpbml0V2l0aFVuZG9TdGVwOihQYXNz
UmVmUHRyPFVuZG9TdGVwPilzdGVwCiB7Ci0gICAgQVNTRVJUKGNvbW1hbmQpOworICAgIEFTU0VS
VChzdGVwKTsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICBtX2NvbW1hbmQgPSBjb21tYW5kOworICAgIG1fc3RlcCA9IHN0
ZXA7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIGlmIChX
ZWJDb3JlT2JqQ1NjaGVkdWxlRGVhbGxvY2F0ZU9uTWFpblRocmVhZChbV2ViRWRpdENvbW1hbmQg
Y2xhc3NdLCBzZWxmKSkKKyAgICBpZiAoV2ViQ29yZU9iakNTY2hlZHVsZURlYWxsb2NhdGVPbk1h
aW5UaHJlYWQoW1dlYlVuZG9TdGVwIGNsYXNzXSwgc2VsZikpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFtzdXBlciBkZWFsbG9jXTsKQEAgLTEzNywxNCArMTM2LDE0IEBAIC0gKHZvaWQpZmluYWxp
emUKICAgICBbc3VwZXIgZmluYWxpemVdOwogfQogCi0rIChXZWJFZGl0Q29tbWFuZCAqKWNvbW1h
bmRXaXRoRWRpdENvbW1hbmQ6KFBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+KWNvbW1hbmQKKysgKFdl
YlVuZG9TdGVwICopc3RlcFdpdGhVbmRvU3RlcDooUGFzc1JlZlB0cjxVbmRvU3RlcD4pc3RlcAog
ewotICAgIHJldHVybiBbW1tXZWJFZGl0Q29tbWFuZCBhbGxvY10gaW5pdFdpdGhFZGl0Q29tbWFu
ZDpjb21tYW5kXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFtbW1dlYlVuZG9TdGVwIGFsbG9j
XSBpbml0V2l0aFVuZG9TdGVwOnN0ZXBdIGF1dG9yZWxlYXNlXTsKIH0KIAotLSAoRWRpdENvbW1h
bmQgKiljb21tYW5kCistIChVbmRvU3RlcCAqKXN0ZXAKIHsKLSAgICByZXR1cm4gbV9jb21tYW5k
LmdldCgpOworICAgIHJldHVybiBtX3N0ZXAuZ2V0KCk7CiB9CiAKIEBlbmQKQEAgLTE2MiwxNCAr
MTYxLDE0IEBAIC0gKHZvaWQpcmVkb0VkaXRpbmc6KGlkKWFyZzsKIAogLSAodm9pZCl1bmRvRWRp
dGluZzooaWQpYXJnCiB7Ci0gICAgQVNTRVJUKFthcmcgaXNLaW5kT2ZDbGFzczpbV2ViRWRpdENv
bW1hbmQgY2xhc3NdXSk7Ci0gICAgW2FyZyBjb21tYW5kXS0+dW5hcHBseSgpOworICAgIEFTU0VS
VChbYXJnIGlzS2luZE9mQ2xhc3M6W1dlYlVuZG9TdGVwIGNsYXNzXV0pOworICAgIFthcmcgc3Rl
cF0tPnVuYXBwbHkoKTsKIH0KIAogLSAodm9pZClyZWRvRWRpdGluZzooaWQpYXJnCiB7Ci0gICAg
QVNTRVJUKFthcmcgaXNLaW5kT2ZDbGFzczpbV2ViRWRpdENvbW1hbmQgY2xhc3NdXSk7Ci0gICAg
W2FyZyBjb21tYW5kXS0+cmVhcHBseSgpOworICAgIEFTU0VSVChbYXJnIGlzS2luZE9mQ2xhc3M6
W1dlYlVuZG9TdGVwIGNsYXNzXV0pOworICAgIFthcmcgc3RlcF0tPnJlYXBwbHkoKTsKIH0KIAog
QGVuZApAQCAtNTEzLDI1ICs1MTIsMjUgQEAgc3RhdGljIE5TU3RyaW5nKiB1bmRvTmFtZUZvckVk
aXRBY3Rpb24oRQogICAgIHJldHVybiBuaWw7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpy
ZWdpc3RlckNvbW1hbmRGb3JVbmRvT3JSZWRvKFBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+IGNtZCwg
Ym9vbCBpc1JlZG8pCit2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5k
b09yUmVkbyhQYXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVwLCBib29sIGlzUmVkbykKIHsKLSAgICBB
U1NFUlQoY21kKTsKKyAgICBBU1NFUlQoc3RlcCk7CiAgICAgCiAgICAgTlNVbmRvTWFuYWdlciAq
dW5kb01hbmFnZXIgPSBbbV93ZWJWaWV3IHVuZG9NYW5hZ2VyXTsKLSAgICBOU1N0cmluZyAqYWN0
aW9uTmFtZSA9IHVuZG9OYW1lRm9yRWRpdEFjdGlvbihjbWQtPmVkaXRpbmdBY3Rpb24oKSk7Ci0g
ICAgV2ViRWRpdENvbW1hbmQgKmNvbW1hbmQgPSBbV2ViRWRpdENvbW1hbmQgY29tbWFuZFdpdGhF
ZGl0Q29tbWFuZDpjbWRdOwotICAgIFt1bmRvTWFuYWdlciByZWdpc3RlclVuZG9XaXRoVGFyZ2V0
Om1fdW5kb1RhcmdldC5nZXQoKSBzZWxlY3RvcjooaXNSZWRvID8gQHNlbGVjdG9yKHJlZG9FZGl0
aW5nOikgOiBAc2VsZWN0b3IodW5kb0VkaXRpbmc6KSkgb2JqZWN0OmNvbW1hbmRdOworICAgIE5T
U3RyaW5nICphY3Rpb25OYW1lID0gdW5kb05hbWVGb3JFZGl0QWN0aW9uKHN0ZXAtPmVkaXRpbmdB
Y3Rpb24oKSk7CisgICAgV2ViVW5kb1N0ZXAgKndlYkVudHJ5ID0gW1dlYlVuZG9TdGVwIHN0ZXBX
aXRoVW5kb1N0ZXA6c3RlcF07CisgICAgW3VuZG9NYW5hZ2VyIHJlZ2lzdGVyVW5kb1dpdGhUYXJn
ZXQ6bV91bmRvVGFyZ2V0LmdldCgpIHNlbGVjdG9yOihpc1JlZG8gPyBAc2VsZWN0b3IocmVkb0Vk
aXRpbmc6KSA6IEBzZWxlY3Rvcih1bmRvRWRpdGluZzopKSBvYmplY3Q6d2ViRW50cnldOwogICAg
IGlmIChhY3Rpb25OYW1lKQogICAgICAgICBbdW5kb01hbmFnZXIgc2V0QWN0aW9uTmFtZTphY3Rp
b25OYW1lXTsKICAgICBtX2hhdmVVbmRvUmVkb09wZXJhdGlvbnMgPSBZRVM7CiB9CiAKLXZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKFBhc3NSZWZQdHI8RWRpdENv
bW1hbmQ+IGNtZCkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckNvbW1hbmRGb3JVbmRv
KFBhc3NSZWZQdHI8VW5kb1N0ZXA+IGNtZCkKIHsKICAgICByZWdpc3RlckNvbW1hbmRGb3JVbmRv
T3JSZWRvKGNtZCwgZmFsc2UpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJD
b21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPEVkaXRDb21tYW5kPiBjbWQpCit2b2lkIFdlYkVkaXRv
ckNsaWVudDo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPFVuZG9TdGVwPiBjbWQp
CiB7CiAgICAgcmVnaXN0ZXJDb21tYW5kRm9yVW5kb09yUmVkbyhjbWQsIHRydWUpOwogfQpJbmRl
eDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzA3MykKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMTItMTYgIFJ5b3N1
a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgT25seSBFZGl0Q29tbWFuZENv
bXBvc2l0aW9uIHNob3VsZCBpbXBsZW1lbnQgdW5hcHBseSBhbmQgcmVhcHBseQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0OTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBFZGl0Q29tbWFuZFF0IGlzIHRvIGJl
IHJlbmFtZWQgdG8gVW5kb1N0ZXBRdCBpbiBhIGZvbGxvdyB1cCBwYXRjaC4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0VkaXRDb21tYW5kUXQuY3BwOgorICAgICAgICAoRWRpdENvbW1hbmRR
dDo6RWRpdENvbW1hbmRRdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdENvbW1hbmRR
dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpyZWdpc3RlckNvbW1hbmRGb3JSZWRvKToK
KwogMjAxMS0xMi0xNCAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5j
b20+CiAKICAgICAgICAgW1F0XSBHZXQgcmlkIG9mIGxheWVyaW5nIHZpb2xhdGlvbiBpbiBQbHVn
aW5WaWV3UXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdENvbW1h
bmRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9F
ZGl0Q29tbWFuZFF0LmNwcAkocmV2aXNpb24gMTAzMDczKQorKysgU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9FZGl0Q29tbWFuZFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTQg
KzIzLDE0IEBACiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogI2lmbmRlZiBRVF9OT19VTkRP
Q09NTUFORAotRWRpdENvbW1hbmRRdDo6RWRpdENvbW1hbmRRdChXVEY6OlJlZlB0cjxFZGl0Q29t
bWFuZD4gY21kLCBRVW5kb0NvbW1hbmQgKnBhcmVudCkKK0VkaXRDb21tYW5kUXQ6OkVkaXRDb21t
YW5kUXQoV1RGOjpSZWZQdHI8VW5kb1N0ZXA+IGNtZCwgUVVuZG9Db21tYW5kICpwYXJlbnQpCiAg
ICAgOiBRVW5kb0NvbW1hbmQocGFyZW50KQogICAgICwgbV9jbWQoY21kKQogICAgICwgbV9maXJz
dCh0cnVlKQogewogfQogI2Vsc2UKLUVkaXRDb21tYW5kUXQ6OkVkaXRDb21tYW5kUXQoV1RGOjpS
ZWZQdHI8RWRpdENvbW1hbmQ+IGNtZCkKK0VkaXRDb21tYW5kUXQ6OkVkaXRDb21tYW5kUXQoV1RG
OjpSZWZQdHI8VW5kb1N0ZXA+IGNtZCkKICAgICA6IG1fY21kKGNtZCkKICAgICAsIG1fZmlyc3Qo
dHJ1ZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdENvbW1h
bmRRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRp
dENvbW1hbmRRdC5oCShyZXZpc2lvbiAxMDMwNzMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0VkaXRDb21tYW5kUXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsOSArMjAsMTAg
QEAKICNpZm5kZWYgRWRpdENvbW1hbmRRdF9oCiAjZGVmaW5lIEVkaXRDb21tYW5kUXRfaAogCi0j
aW5jbHVkZSA8RWRpdENvbW1hbmQuaD4KKyNpbmNsdWRlIDxVbmRvU3RlcC5oPgogI2luY2x1ZGUg
PFFVbmRvQ29tbWFuZD4KICNpbmNsdWRlIDxxZ2xvYmFsLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogCiBjbGFzcyBFZGl0Q29tbWFuZFF0CiAjaWZuZGVmIFFUX05PX1VORE9DT01NQU5ECkBA
IC0zMSw5ICszMiw5IEBAIGNsYXNzIEVkaXRDb21tYW5kUXQKIHsKICAgICBwdWJsaWM6CiAjaWZu
ZGVmIFFUX05PX1VORE9DT01NQU5ECi0gICAgICAgIEVkaXRDb21tYW5kUXQoV1RGOjpSZWZQdHI8
V2ViQ29yZTo6RWRpdENvbW1hbmQ+IGNtZCwgUVVuZG9Db21tYW5kICpwYXJlbnQgPSAwKTsKKyAg
ICAgICAgRWRpdENvbW1hbmRRdChXVEY6OlJlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gY21kLCBR
VW5kb0NvbW1hbmQgKnBhcmVudCA9IDApOwogI2Vsc2UKLSAgICAgICAgRWRpdENvbW1hbmRRdChX
VEY6OlJlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4gY21kKTsKKyAgICAgICAgRWRpdENvbW1h
bmRRdChXVEY6OlJlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gY21kKTsKICNlbmRpZgogICAgICAg
ICB+RWRpdENvbW1hbmRRdCgpOwogCkBAIC00MSw3ICs0Miw3IEBAIGNsYXNzIEVkaXRDb21tYW5k
UXQKICAgICAgICAgdm9pZCB1bmRvKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBXVEY6OlJl
ZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4gbV9jbWQ7CisgICAgICAgIFdURjo6UmVmUHRyPFdl
YkNvcmU6OlVuZG9TdGVwPiBtX2NtZDsKICAgICAgICAgYm9vbCBtX2ZpcnN0OwogfTsKIApJbmRl
eDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRR
dC5jcHAJKHJldmlzaW9uIDEwMzA3MykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsMTcgKzIzNywxNyBA
QCBib29sIEVkaXRvckNsaWVudFF0OjpzZWxlY3RXb3JkQmVmb3JlTWVuCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIEVkaXRvckNsaWVudFF0OjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4gY21kKQordm9pZCBFZGl0b3JDbGll
bnRRdDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyhXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5k
b1N0ZXA+IHN0ZXApCiB7CiAjaWZuZGVmIFFUX05PX1VORE9TVEFDSwogICAgIEZyYW1lKiBmcmFt
ZSA9IG1fcGFnZS0+ZC0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpOwogICAgIGlmIChtX2luVW5kb1JlZG8gfHwgKGZyYW1lICYmICFmcmFtZS0+ZWRpdG9yKCkt
Pmxhc3RFZGl0Q29tbWFuZCgpIC8qIEhBQ0shISBEb24ndCByZWNyZWF0ZSB1bmRvcyAqLykpCiAg
ICAgICAgIHJldHVybjsKLSAgICBtX3BhZ2UtPnVuZG9TdGFjaygpLT5wdXNoKG5ldyBFZGl0Q29t
bWFuZFF0KGNtZCkpOworICAgIG1fcGFnZS0+dW5kb1N0YWNrKCktPnB1c2gobmV3IEVkaXRDb21t
YW5kUXQoc3RlcCkpOwogI2VuZGlmIC8vIFFUX05PX1VORE9TVEFDSwogfQogCi12b2lkIEVkaXRv
ckNsaWVudFF0OjpyZWdpc3RlckNvbW1hbmRGb3JSZWRvKFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpFZGl0Q29tbWFuZD4pCit2b2lkIEVkaXRvckNsaWVudFF0OjpyZWdpc3RlckNvbW1hbmRGb3JS
ZWRvKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4pCiB7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmgJKHJl
dmlzaW9uIDEwMzA3MykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50UXQuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsOCArNzQsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpOwogICAgIAotICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JVbmRvKFBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPEVk
aXRDb21tYW5kPik7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oUGFz
c1JlZlB0cjxVbmRvU3RlcD4pOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JS
ZWRvKFBhc3NSZWZQdHI8VW5kb1N0ZXA+KTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVk
b09wZXJhdGlvbnMoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5Db3B5Q3V0KEZyYW1lKiwgYm9v
bCBkZWZhdWx0VmFsdWUpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTAz
MDczKQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTEtMTItMTYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgT25seSBFZGl0Q29tbWFuZENvbXBvc2l0aW9uIHNob3VsZCBpbXBsZW1lbnQg
dW5hcHBseSBhbmQgcmVhcHBseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzQ0OTAKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJFZGl0b3JVbmRvQ29tbWFuZDo6V2ViRWRpdG9yVW5kb0NvbW1hbmQpOgorICAgICAgICAoV2Vi
RWRpdG9yVW5kb0NvbW1hbmQ6OmV4ZWN1dGUpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojpy
ZWdpc3RlckNvbW1hbmRGb3JVbmRvKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6cmVnaXN0
ZXJDb21tYW5kRm9yUmVkbyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lmg6CisKIDIwMTEtMTItMTQgIEppbmcgWmhhbyAgPGppbmd6aGFvQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBPcGVuaW5nIHR3byBwb3B1cCBtZW51cyBieSBkaXNwYXRjaEV2ZW50KCkgbWFr
ZXMgcHJvYmxlbXMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHJldmlzaW9uIDEwMzA3MykKKysrIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJET01Db3JlQ2xhc3Nlcy5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0VkaXRDb21tYW5kLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRWxl
bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTElucHV0RWxlbWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSFRNTE5hbWVzLmg+CkBAIC00Myw2ICs0Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2
ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SYW5nZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVW5k
b1N0ZXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9WaXNpYmxlU2VsZWN0aW9uLmg+CiAKQEAgLTQyNiw3ICs0MjYs
NyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dGV4dERpZENoYW5nZUluVGV4CiBjbGFzcyBXZWJF
ZGl0b3JVbmRvQ29tbWFuZCA6IHB1YmxpYyBJV2ViVW5kb0NvbW1hbmQKIHsKIHB1YmxpYzoKLSAg
ICBXZWJFZGl0b3JVbmRvQ29tbWFuZChQYXNzUmVmUHRyPEVkaXRDb21tYW5kPiBlZGl0Q29tbWFu
ZCwgYm9vbCBpc1VuZG8pOworICAgIFdlYkVkaXRvclVuZG9Db21tYW5kKFBhc3NSZWZQdHI8VW5k
b1N0ZXA+LCBib29sIGlzVW5kbyk7CiAgICAgdm9pZCBleGVjdXRlKCk7CiAKICAgICAvLyBJVW5r
bm93bgpAQCAtNDM2LDEyICs0MzYsMTIgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFVMT05H
IG1fcmVmQ291bnQ7Ci0gICAgUmVmUHRyPEVkaXRDb21tYW5kPiBtX2VkaXRDb21tYW5kOworICAg
IFJlZlB0cjxVbmRvU3RlcD4gbV9zdGVwOwogICAgIGJvb2wgbV9pc1VuZG87CiB9OwogCi1XZWJF
ZGl0b3JVbmRvQ29tbWFuZDo6V2ViRWRpdG9yVW5kb0NvbW1hbmQoUGFzc1JlZlB0cjxFZGl0Q29t
bWFuZD4gZWRpdENvbW1hbmQsIGJvb2wgaXNVbmRvKQotICAgIDogbV9lZGl0Q29tbWFuZChlZGl0
Q29tbWFuZCkKK1dlYkVkaXRvclVuZG9Db21tYW5kOjpXZWJFZGl0b3JVbmRvQ29tbWFuZChQYXNz
UmVmUHRyPFVuZG9TdGVwPiBzdGVwLCBib29sIGlzVW5kbykKKyAgICA6IG1fc3RlcChzdGVwKQog
ICAgICwgbV9pc1VuZG8oaXNVbmRvKSAKICAgICAsIG1fcmVmQ291bnQoMSkKIHsgCkBAIC00NTAs
OSArNDUwLDkgQEAgV2ViRWRpdG9yVW5kb0NvbW1hbmQ6OldlYkVkaXRvclVuZG9Db21tYQogdm9p
ZCBXZWJFZGl0b3JVbmRvQ29tbWFuZDo6ZXhlY3V0ZSgpCiB7CiAgICAgaWYgKG1faXNVbmRvKQot
ICAgICAgICBtX2VkaXRDb21tYW5kLT51bmFwcGx5KCk7CisgICAgICAgIG1fc3RlcC0+dW5hcHBs
eSgpOwogICAgIGVsc2UKLSAgICAgICAgbV9lZGl0Q29tbWFuZC0+cmVhcHBseSgpOworICAgICAg
ICBtX3N0ZXAtPnJlYXBwbHkoKTsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJF
ZGl0b3JVbmRvQ29tbWFuZDo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZP
YmplY3QpCkBAIC01MjcsMTIgKzUyNywxMiBAQCBzdGF0aWMgU3RyaW5nIHVuZG9OYW1lRm9yRWRp
dEFjdGlvbihFZGl0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12b2lkIFdlYkVkaXRvckNs
aWVudDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyhQYXNzUmVmUHRyPEVkaXRDb21tYW5kPiBjb21t
YW5kKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oUGFzc1Jl
ZlB0cjxVbmRvU3RlcD4gc3RlcCkKIHsKICAgICBJV2ViVUlEZWxlZ2F0ZSogdWlEZWxlZ2F0ZSA9
IDA7CiAgICAgaWYgKFNVQ0NFRURFRChtX3dlYlZpZXctPnVpRGVsZWdhdGUoJnVpRGVsZWdhdGUp
KSkgewotICAgICAgICBTdHJpbmcgYWN0aW9uTmFtZSA9IHVuZG9OYW1lRm9yRWRpdEFjdGlvbihj
b21tYW5kLT5lZGl0aW5nQWN0aW9uKCkpOwotICAgICAgICBXZWJFZGl0b3JVbmRvQ29tbWFuZCog
dW5kb0NvbW1hbmQgPSBuZXcgV2ViRWRpdG9yVW5kb0NvbW1hbmQoY29tbWFuZCwgdHJ1ZSk7Cisg
ICAgICAgIFN0cmluZyBhY3Rpb25OYW1lID0gdW5kb05hbWVGb3JFZGl0QWN0aW9uKHN0ZXAtPmVk
aXRpbmdBY3Rpb24oKSk7CisgICAgICAgIFdlYkVkaXRvclVuZG9Db21tYW5kKiB1bmRvQ29tbWFu
ZCA9IG5ldyBXZWJFZGl0b3JVbmRvQ29tbWFuZChzdGVwLCB0cnVlKTsKICAgICAgICAgaWYgKCF1
bmRvQ29tbWFuZCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdWlEZWxlZ2F0ZS0+cmVn
aXN0ZXJVbmRvV2l0aFRhcmdldChtX3VuZG9UYXJnZXQsIDAsIHVuZG9Db21tYW5kKTsKQEAgLTU0
MywxMSArNTQzLDExIEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckNvbW1hbmRGb3IK
ICAgICB9CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckNvbW1hbmRGb3JSZWRv
KFBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+IGNvbW1hbmQpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6
cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVwKQogewogICAg
IElXZWJVSURlbGVnYXRlKiB1aURlbGVnYXRlID0gMDsKICAgICBpZiAoU1VDQ0VFREVEKG1fd2Vi
Vmlldy0+dWlEZWxlZ2F0ZSgmdWlEZWxlZ2F0ZSkpKSB7Ci0gICAgICAgIFdlYkVkaXRvclVuZG9D
b21tYW5kKiB1bmRvQ29tbWFuZCA9IG5ldyBXZWJFZGl0b3JVbmRvQ29tbWFuZChjb21tYW5kLCBm
YWxzZSk7CisgICAgICAgIFdlYkVkaXRvclVuZG9Db21tYW5kKiB1bmRvQ29tbWFuZCA9IG5ldyBX
ZWJFZGl0b3JVbmRvQ29tbWFuZChzdGVwLCBmYWxzZSk7CiAgICAgICAgIGlmICghdW5kb0NvbW1h
bmQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHVpRGVsZWdhdGUtPnJlZ2lzdGVyVW5k
b1dpdGhUYXJnZXQobV91bmRvVGFyZ2V0LCAwLCB1bmRvQ29tbWFuZCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2
aXNpb24gMTAzMDczKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDggKzc0LDggQEAgcHVibGljOgogICAg
IGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7CiAgICAgYm9vbCBpc1NlbGVjdFRyYWls
aW5nV2hpdGVzcGFjZUVuYWJsZWQoKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yVW5k
byhQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPik7Ci0gICAgdm9pZCByZWdpc3RlckNv
bW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KTsKKyAgICB2b2lk
IHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oUGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4pOwor
ICAgIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9T
dGVwPik7CiAgICAgdm9pZCBjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpOwogCiAgICAgYm9vbCBj
YW5Db3B5Q3V0KFdlYkNvcmU6OkZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0OwpJbmRl
eDogU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93aW5jZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzA3MykKKysrIFNvdXJjZS9XZWJLaXQv
d2luY2UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTIt
MTYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgT25seSBFZGl0
Q29tbWFuZENvbXBvc2l0aW9uIHNob3VsZCBpbXBsZW1lbnQgdW5hcHBseSBhbmQgcmVhcHBseQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0OTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50
V2luQ0U6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8pOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JD
bGllbnRXaW5DRTo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaDoKKwogMjAxMS0xMi0xNCAgSmluZyBaaGFvICA8amlu
Z3poYW9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE9wZW5pbmcgdHdvIHBvcHVwIG1lbnVzIGJ5
IGRpc3BhdGNoRXZlbnQoKSBtYWtlcyBwcm9ibGVtcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
Y2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuY3BwCShy
ZXZpc2lvbiAxMDMwNzMpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFdpbkNFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTEgKzI0LDExIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50V2luQ0UuaCIKIAotI2lu
Y2x1ZGUgIkVkaXRDb21tYW5kLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJLZXli
b2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybUtleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJVbmRvU3RlcC5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMTQ0LDEyICsxNDQsMTIg
QEAgdm9pZCBFZGl0b3JDbGllbnRXaW5DRTo6ZGlkU2V0U2VsZWN0aW9uVAogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKLXZvaWQgRWRpdG9yQ2xpZW50V2luQ0U6OnJlZ2lzdGVyQ29tbWFuZEZv
clVuZG8oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiBjb21tYW5kKQordm9p
ZCBFZGl0b3JDbGllbnRXaW5DRTo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyhXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6VW5kb1N0ZXA+KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZv
aWQgRWRpdG9yQ2xpZW50V2luQ0U6OnJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiBjb21tYW5kKQordm9pZCBFZGl0b3JDbGllbnRXaW5D
RTo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0
ZXA+KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5oCShyZXZp
c2lvbiAxMDMwNzMpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudFdpbkNFLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDggKzY1LDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKTsKIAotICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JVbmRvKFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpFZGl0Q29tbWFuZD4pOwotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JSZWRv
KFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4pOworICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlckNvbW1hbmRGb3JVbmRvKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3Rl
cD4pOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JSZWRvKFdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4pOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhclVuZG9SZWRv
T3BlcmF0aW9ucygpOwogCiAgICAgdmlydHVhbCBib29sIGNhbkNvcHlDdXQoV2ViQ29yZTo6RnJh
bWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3Q7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>