<?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>57789</bug_id>
          
          <creation_ts>2011-04-04 14:23:16 -0700</creation_ts>
          <short_desc>Move eventqueue from Document to ScriptExecutionContext so that it can be accessed from workers</short_desc>
          <delta_ts>2011-10-27 16:23:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>60299</dependson>
    
    <dependson>61231</dependson>
          <blocked>56787</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="David Grogan">dgrogan</reporter>
          <assigned_to name="David Grogan">dgrogan</assigned_to>
          <cc>ajwong</cc>
    
    <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>dimich</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>levin</cc>
    
    <cc>mihaip</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>379075</commentid>
    <comment_count>0</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-04-04 14:23:16 -0700</bug_when>
    <thetext>Move eventqueue from Document to ScriptExecutionContext so that it can be accessed from workers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379092</commentid>
    <comment_count>1</comment_count>
      <attachid>88133</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-04-04 14:42:36 -0700</bug_when>
    <thetext>Created attachment 88133
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379095</commentid>
    <comment_count>2</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-04-04 14:47:35 -0700</bug_when>
    <thetext>Mihai, I&apos;m adding you because jorlow mentioned he&apos;d discussed this with you.  Feel free to pass it on to someone else if you don&apos;t want to do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379098</commentid>
    <comment_count>3</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-04-04 14:50:50 -0700</bug_when>
    <thetext>Will take a look, but Alexey probably has opinions too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379118</commentid>
    <comment_count>4</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-04-04 15:13:01 -0700</bug_when>
    <thetext>Attachment 88133 did not build on qt:
Build output: http://queues.webkit.org/results/8336031</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379125</commentid>
    <comment_count>5</comment_count>
      <attachid>88141</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-04-04 15:17:23 -0700</bug_when>
    <thetext>Created attachment 88141
Fix typo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379209</commentid>
    <comment_count>6</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-04 16:44:47 -0700</bug_when>
    <thetext>Wow that was r+&apos;ed quickly.... I guess we didn&apos;t really want other comments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379214</commentid>
    <comment_count>7</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-04-04 16:47:33 -0700</bug_when>
    <thetext>Comments still welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379229</commentid>
    <comment_count>8</comment_count>
      <attachid>88141</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-04 17:00:01 -0700</bug_when>
    <thetext>Comment on attachment 88141
Fix typo

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

&gt; Source/WebCore/ChangeLog:5
&gt; +        Move event queue from Document to ScriptExecutionContext so that it can be accessed from workers

This is what you are doing but a better comment answers why.

&gt; Source/WebCore/ChangeLog:8
&gt; +        Change EventQueue to lazily construct m_eventQueueTimer.

This looks like it should be a function level comment.

&gt; Source/WebCore/ChangeLog:14
&gt; +        No new tests, just a refactoring.

The refactoring seems odd given that EventQueue has all of this handling for Node which aren&apos;t available in Workers.

The member variable m_nodesWithQueuedScrollEvents; and the method enqueueScrollEvent are not applicable to Workers.

&gt; Source/WebCore/ChangeLog:17
&gt; +        (WebCore::Document::Document):

function level comments are encouraged in WebKit.  See other well written ChangeLog entries.

&gt; Source/WebCore/dom/EventQueue.cpp:-23
&gt; - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 

Unnecessary whitespace changes are discouraged.

&gt; Source/WebCore/dom/EventQueue.cpp:-47
&gt; -    EventQueue* m_eventQueue;    

Unnecessary whitespace changes are discouraged.

&gt; Source/WebCore/dom/EventQueue.cpp:68
&gt; +        m_pendingEventTimer = adoptPtr(new EventQueueTimer(this, m_scriptExecutionContext));

It looks like you are moving this from EventQueue, but calling adoptPtr directly is a bad sign.

The constructor should be hidden and expose a static create method.

&gt; Source/WebCore/dom/EventQueue.cpp:93
&gt; +    if (m_queuedEvents.isEmpty() &amp;&amp; m_pendingEventTimer)

How can you have an event in the queue but no timer?

&gt; Source/WebCore/dom/EventQueue.cpp:100
&gt; +    ASSERT(m_pendingEventTimer);

Why was this assert added? (Good to comment in ChangeLog about this.)

&gt; Source/WebCore/dom/ScriptExecutionContext.h:59
&gt; +    class EventQueue;

This is out of order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379274</commentid>
    <comment_count>9</comment_count>
      <attachid>88141</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-04-04 18:30:14 -0700</bug_when>
    <thetext>Comment on attachment 88141
Fix typo

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

&gt;&gt; Source/WebCore/ChangeLog:5
&gt;&gt; +        Move event queue from Document to ScriptExecutionContext so that it can be accessed from workers
&gt; 
&gt; This is what you are doing but a better comment answers why.

The idea was

What: Move event queue from Document to ScriptExecutionContext
Why: so that it can be accessed from workers

Though I now added that _IndexedDB_ needs to access it from workers.

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        Change EventQueue to lazily construct m_eventQueueTimer.
&gt; 
&gt; This looks like it should be a function level comment.

Moved.

&gt;&gt; Source/WebCore/ChangeLog:14
&gt;&gt; +        No new tests, just a refactoring.
&gt; 
&gt; The refactoring seems odd given that EventQueue has all of this handling for Node which aren&apos;t available in Workers.
&gt; 
&gt; The member variable m_nodesWithQueuedScrollEvents; and the method enqueueScrollEvent are not applicable to Workers.

Yeah, that&apos;s awkward, I didn&apos;t realize those weren&apos;t applicable to workers though it seems obvious in hindsight.  I&apos;ll either move the scroll stuff to Document or, more likely, to a subclass of EventQueue that is instantiated in Document.  Or any other suggestion you have.

&gt;&gt; Source/WebCore/dom/EventQueue.cpp:-23
&gt;&gt; - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
&gt; 
&gt; Unnecessary whitespace changes are discouraged.

Didn&apos;t realize.

&gt;&gt; Source/WebCore/dom/EventQueue.cpp:68
&gt;&gt; +        m_pendingEventTimer = adoptPtr(new EventQueueTimer(this, m_scriptExecutionContext));
&gt; 
&gt; It looks like you are moving this from EventQueue, but calling adoptPtr directly is a bad sign.
&gt; 
&gt; The constructor should be hidden and expose a static create method.

Moved.

&gt;&gt; Source/WebCore/dom/EventQueue.cpp:93
&gt;&gt; +    if (m_queuedEvents.isEmpty() &amp;&amp; m_pendingEventTimer)
&gt; 
&gt; How can you have an event in the queue but no timer?

You can&apos;t.  This function could be called before any events are enqueued though.

&gt;&gt; Source/WebCore/dom/EventQueue.cpp:100
&gt;&gt; +    ASSERT(m_pendingEventTimer);
&gt; 
&gt; Why was this assert added? (Good to comment in ChangeLog about this.)

Because I think this function can&apos;t be called when m_pendingEventTimer is null.  Such an occurrence indicates a logic failure that I want to know about.  Granted, the next ASSERT would fail but the message produced by this one would be clearer.

&gt;&gt; Source/WebCore/dom/ScriptExecutionContext.h:59
&gt;&gt; +    class EventQueue;
&gt; 
&gt; This is out of order.

fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379276</commentid>
    <comment_count>10</comment_count>
      <attachid>88177</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-04-04 18:33:14 -0700</bug_when>
    <thetext>Created attachment 88177
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379615</commentid>
    <comment_count>11</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2011-04-05 09:08:56 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 88141 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88141&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/ChangeLog:5
&gt; &gt;&gt; +        Move event queue from Document to ScriptExecutionContext so that it can be accessed from workers
&gt; &gt; 
&gt; &gt; This is what you are doing but a better comment answers why.
&gt; 
&gt; The idea was
&gt; 
&gt; What: Move event queue from Document to ScriptExecutionContext
&gt; Why: so that it can be accessed from workers
&gt; 
&gt; Though I now added that _IndexedDB_ needs to access it from workers.

It doesn&apos;t answer David&apos;s question I think. Yes, IndexedDB currently uses this event queue on Document.

However, Workers (unlike Document) already have their own event (task) queue which they completely control. It is not clear why do we need another generic queue in addition to that. Having 2 queues will sooner or later cause problems with ordering of tasks, termination, suspension and other things that all require some control on how queues operate.

I think there is a bigger design question here, I understand you are omving some code from Document to Worker but it doesn&apos;t always mean the code should be just copied. &quot;Why&quot; would have to include some thought on why existing mechanisms are not adequate and can&apos;t be improved, for example.

I&apos;m going to r- the patch for now as it&apos;s not clear why exactly it is needed. It very well might be, but there is no good explanation at least.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379641</commentid>
    <comment_count>12</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-05 09:31:33 -0700</bug_when>
    <thetext>
Also, this issue isn&apos;t addressed in the patch. (I&apos;m reluctant to let it go through because without this because then the motivation to clean it up goes away. Maybe it should be a pre-step to this patch.)

&gt;&gt; Source/WebCore/ChangeLog:14
&gt;&gt; +        No new tests, just a refactoring.
&gt; 
&gt; The refactoring seems odd given that EventQueue has all of this handling for Node which aren&apos;t available in Workers.
&gt; 
&gt; The member variable m_nodesWithQueuedScrollEvents; and the method enqueueScrollEvent are not applicable to Workers.

Yeah, that&apos;s awkward, I didn&apos;t realize those weren&apos;t applicable to workers though it seems obvious in hindsight.  I&apos;ll either move the scroll stuff to Document or, more likely, to a subclass of EventQueue that is instantiated in Document.  Or any other suggestion you have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379645</commentid>
    <comment_count>13</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-04-05 09:33:15 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Yeah, that&apos;s awkward, I didn&apos;t realize those weren&apos;t applicable to workers though it seems obvious in hindsight.  I&apos;ll either move the scroll stuff to Document or, more likely, to a subclass of EventQueue that is instantiated in Document.  Or any other suggestion you have.

I don&apos;t think moving them into Document is a good idea, it&apos;s already got too many methods and members. A DocumentEventQueue subclass seems like the most reasonable thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379654</commentid>
    <comment_count>14</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-04-05 09:40:40 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Also, this issue isn&apos;t addressed in the patch. (I&apos;m reluctant to let it go through because without this because then the motivation to clean it up goes away.

Of course.  I was waiting to see if you wanted to express opinions.

&gt; Maybe it should be a pre-step to this patch.)

Is that what you&apos;d prefer?

&gt; 
&gt; &gt;&gt; Source/WebCore/ChangeLog:14
&gt; &gt;&gt; +        No new tests, just a refactoring.
&gt; &gt; 
&gt; &gt; The refactoring seems odd given that EventQueue has all of this handling for Node which aren&apos;t available in Workers.
&gt; &gt; 
&gt; &gt; The member variable m_nodesWithQueuedScrollEvents; and the method enqueueScrollEvent are not applicable to Workers.
&gt; 
&gt; Yeah, that&apos;s awkward, I didn&apos;t realize those weren&apos;t applicable to workers though it seems obvious in hindsight.  I&apos;ll either move the scroll stuff to Document or, more likely, to a subclass of EventQueue that is instantiated in Document.  Or any other suggestion you have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379657</commentid>
    <comment_count>15</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-04-05 09:42:30 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #9)
&gt; &gt; (From update of attachment 88141 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88141&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/ChangeLog:5
&gt; &gt; &gt;&gt; +        Move event queue from Document to ScriptExecutionContext so that it can be accessed from workers
&gt; &gt; &gt; 
&gt; &gt; &gt; This is what you are doing but a better comment answers why.
&gt; &gt; 
&gt; &gt; The idea was
&gt; &gt; 
&gt; &gt; What: Move event queue from Document to ScriptExecutionContext
&gt; &gt; Why: so that it can be accessed from workers
&gt; &gt; 
&gt; &gt; Though I now added that _IndexedDB_ needs to access it from workers.
&gt; 
&gt; It doesn&apos;t answer David&apos;s question I think. Yes, IndexedDB currently uses this event queue on Document.
&gt; 
&gt; However, Workers (unlike Document) already have their own event (task) queue which they completely control. It is not clear why do we need another generic queue in addition to that. Having 2 queues will sooner or later cause problems with ordering of tasks, termination, suspension and other things that all require some control on how queues operate.
&gt; 
&gt; I think there is a bigger design question here, I understand you are omving some code from Document to Worker but it doesn&apos;t always mean the code should be just copied. &quot;Why&quot; would have to include some thought on why existing mechanisms are not adequate and can&apos;t be improved, for example.
&gt; 
&gt; I&apos;m going to r- the patch for now as it&apos;s not clear why exactly it is needed. It very well might be, but there is no good explanation at least.

That&apos;s reasonable.  Thanks for all the info.  I&apos;ll look into the worker-specific event queue and try to determine if this new one is necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379751</commentid>
    <comment_count>16</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-05 11:12:44 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #12)
&gt; &gt; Also, this issue isn&apos;t addressed in the patch. (I&apos;m reluctant to let it go through because without this because then the motivation to clean it up goes away.
&gt; 
&gt; Of course.  I was waiting to see if you wanted to express opinions.
&gt; 
&gt; &gt; Maybe it should be a pre-step to this patch.)
&gt; 
&gt; Is that what you&apos;d prefer?
Yes. Smaller patches are easier to review in general. So when something can be separated out easily, it is nice to make it a separate patch. Based on past experience, a small patch get through faster than a larger patch (with better quality -- though the overall time may be slower for a few smaller patches vs a large one).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379791</commentid>
    <comment_count>17</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2011-04-05 12:07:07 -0700</bug_when>
    <thetext>Looking at things like a tight &apos;dispatchEvent()&apos; loop in EventQueue::pendingEventTimerFired(), I feel even more hesitation that this is the right move for Workers. For example, that loop will need to interact with a message loop of the Worker to figure out when to stop (perhaps looking at WorkerContext-&gt;isClosing())

We probably just need to post async events to the main Worker&apos;s MessageLoop as Tasks, rather then have a separate mechanism for queuing/dispatching storage events. We already dispatch XHR, File API, SQL DB, MessagePort and other events using this mechanism.

That would also help avoid refactoring scrolling and other Document-level implementation out of the EventQueue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379809</commentid>
    <comment_count>18</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-05 12:48:39 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Looking at things like a tight &apos;dispatchEvent()&apos; loop in EventQueue::pendingEventTimerFired(), I feel even more hesitation that this is the right move for Workers. For example, that loop will need to interact with a message loop of the Worker to figure out when to stop (perhaps looking at WorkerContext-&gt;isClosing())
&gt; 
&gt; We probably just need to post async events to the main Worker&apos;s MessageLoop as Tasks, rather then have a separate mechanism for queuing/dispatching storage events. We already dispatch XHR, File API, SQL DB, MessagePort and other events using this mechanism.
&gt; 
&gt; That would also help avoid refactoring scrolling and other Document-level implementation out of the EventQueue.

Note that the task mechanism is already in ScriptExecutionContext (so it is usable from both Workers and Documents).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380069</commentid>
    <comment_count>19</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-04-05 20:02:45 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Looking at things like a tight &apos;dispatchEvent()&apos; loop in EventQueue::pendingEventTimerFired(), I feel even more hesitation that this is the right move for Workers. For example, that loop will need to interact with a message loop of the Worker to figure out when to stop (perhaps looking at WorkerContext-&gt;isClosing())
&gt; 
&gt; We probably just need to post async events to the main Worker&apos;s MessageLoop as Tasks, rather then have a separate mechanism for queuing/dispatching storage events.

I&apos;m going to pursue this but will need to add something like ScriptExecutionContext::cancelTask to get the functionality provided by EventQueue::cancelEvent.

&gt; We already dispatch XHR, File API, SQL DB, MessagePort and other events using this mechanism.
&gt; 
&gt; That would also help avoid refactoring scrolling and other Document-level implementation out of the EventQueue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380080</commentid>
    <comment_count>20</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-04-05 20:45:37 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; We probably just need to post async events to the main Worker&apos;s MessageLoop as Tasks, rather then have a separate mechanism for queuing/dispatching storage events.
&gt; 
&gt; I&apos;m going to pursue this but will need to add something like ScriptExecutionContext::cancelTask to get the functionality provided by EventQueue::cancelEvent.

I wasn&apos;t actually aware of the ScriptExecutionTask functionality when I added EventQueue, you may want to consider re-implementing EventQueue as a wrapper around it that (assuming it provides the same guarantees, e.g. suspend/resume that it gets via DOMTimer/ActiveDOMObject)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380086</commentid>
    <comment_count>21</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-05 20:51:44 -0700</bug_when>
    <thetext>Events and tasks aren&apos;t DOM objects, so they shouldn&apos;t be stopped when ActiveDOMObject is suspended. They need a separate mechanism.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381507</commentid>
    <comment_count>22</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2011-04-07 11:16:20 -0700</bug_when>
    <thetext>If Events are posted as Tasks into WorkerRunLoop, they will follow the same rules as other Tasks that are already there. FWIW, Workers do not have suspend/resume semantics at the moment, so the corresponding behavior for them can be solved later, when and if this functionality is added. There are more places in workers code that will have to address suspension if it is to be implemented, most likely on WorkerRunLoop level.

The Workers do implement termination behavior however, which has a few scenarios distinct from Document:
- the page that spawned the worker closes
- the script on the page that spawned the worker calls worker.terminate()
- the script on the page that spawned the worker looses all references to it, including event handlers
- the worker calls close() inside itself
- there is a script error inside worker

For some of them, the exact sequence is determined by spec - for example, if there are 2 events A and B queued, but during A worker calls close(), that event handler completes but event B is never dispatched.

It is good to have tests on new async events in those termination scenarios.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391317</commentid>
    <comment_count>23</comment_count>
      <attachid>90828</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-04-22 18:51:40 -0700</bug_when>
    <thetext>Created attachment 90828
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391318</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-22 18:54:29 -0700</bug_when>
    <thetext>Attachment 90828 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:10:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:11:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 4 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391319</commentid>
    <comment_count>25</comment_count>
      <attachid>90828</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-04-22 18:54:59 -0700</bug_when>
    <thetext>Comment on attachment 90828
Patch

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

This isn&apos;t complete yet but I&apos;m hoping to get some feedback before I go further, in case I totally missed the boat.

&gt; Source/WebCore/dom/WorkerEventQueue.cpp:57
&gt; +        if (eventTarget-&gt;toDOMWindow())

Can this happen in a worker?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391320</commentid>
    <comment_count>26</comment_count>
      <attachid>90828</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-04-22 18:55:26 -0700</bug_when>
    <thetext>Comment on attachment 90828
Patch

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

This isn&apos;t complete yet but I&apos;m hoping to get some feedback before I go further, in case I totally missed the boat.

&gt;&gt; Source/WebCore/dom/WorkerEventQueue.cpp:57
&gt;&gt; +        if (eventTarget-&gt;toDOMWindow())
&gt; 
&gt; Can this happen in a worker?

Can this happen in a worker?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391329</commentid>
    <comment_count>27</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-04-22 19:10:42 -0700</bug_when>
    <thetext>Attachment 90828 did not build on qt:
Build output: http://queues.webkit.org/results/8498574</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391339</commentid>
    <comment_count>28</comment_count>
      <attachid>90831</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-04-22 19:27:11 -0700</bug_when>
    <thetext>Created attachment 90831
fix style and build problems</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391344</commentid>
    <comment_count>29</comment_count>
      <attachid>90833</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-04-22 19:50:47 -0700</bug_when>
    <thetext>Created attachment 90833
manual upload that includes all files

webkit-patch and git weren&apos;t playing nicely wrt EventQueue.cpp and DocumentEventQueue.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391356</commentid>
    <comment_count>30</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-04-22 20:13:53 -0700</bug_when>
    <thetext>Attachment 90833 did not build on qt:
Build output: http://queues.webkit.org/results/8503021</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391369</commentid>
    <comment_count>31</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-22 20:37:13 -0700</bug_when>
    <thetext>Attachment 90833 did not build on win:
Build output: http://queues.webkit.org/results/8493710</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391449</commentid>
    <comment_count>32</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-04-23 07:30:09 -0700</bug_when>
    <thetext>Attachment 90833 did not build on gtk:
Build output: http://queues.webkit.org/results/8497731</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394148</commentid>
    <comment_count>33</comment_count>
      <attachid>91416</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-04-27 20:19:45 -0700</bug_when>
    <thetext>Created attachment 91416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394161</commentid>
    <comment_count>34</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-04-27 20:37:16 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; Created an attachment (id=91416) [details]
&gt; Patch

Dmitry, I think this is what we talked about the other day.

I get a couple of weird layout test failures, though, so I must be misunderstanding something.

If I run storage/domstorage/events/case-sensitive.html by itself it passes.  If I run it as part of a sequence, it fails with:
 Reset storage event list
 storageEventList = new Array()
 storage.foo = &apos;test&apos;
-PASS storageEventList.length is 0
+FAIL storageEventList.length should be 0. Was 1.
 storage.foo = &apos;TEST&apos;
-PASS storageEventList.length is 1
+FAIL storageEventList.length should be 1. Was 2.


storage/domstorage/events/documentURI.html has a similar failure under similar circumstances.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394690</commentid>
    <comment_count>35</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2011-04-28 13:07:25 -0700</bug_when>
    <thetext>(In reply to comment #34)

I think the tests in question are faulty (flaky). They assume that timer tasks (generated by setTimeout()) and storage event tasks are queued into the same UA task queue. However, the HTML spec specifically says the storage events use &quot;DOM manipulation&quot; task source and timer events use &quot;timer task&quot; task source.

(see http://dev.w3.org/html5/webstorage/#event-storage and http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html and search for &apos;source&apos;)

The task source (http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#task-source) specifically regulates whether or not the UA guarantees in-order execution - for the tasks in the same task source it is guaranteed that they will be executed in order, while between task sources it can be random.

The test contains the code below that will quickly exit w/o waiting for events to be dispatched if the timeout message is dispatched before the storage message is. Since timeouts are clamped at 10ms, the test can be really flakey.

storageEventList = new Array();
window.onstorage = function (e) {
    window.parent.storageEventList.push(e);
}

// do somethign with storage...
 runAfterStorageEvents(myCallback);

function runAfterStorageEvents(callback) {
    var currentCount = storageEventList.length;
    function onTimeout() {
        if (currentCount != storageEventList.length)
            runAfterStorageEvents(callback);
        else
            callback();
    }
    setTimeout(onTimeout, 0);  &lt;-- if this fires before onstorage event, there is no wait.
}

The runAfterStorageEvents() function has to be rewritten to wait for specified expected number of storage events, rather then for a delta in event count that happened to squeeze between timer callbacks.

Does it make sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394849</commentid>
    <comment_count>36</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-04-28 15:55:55 -0700</bug_when>
    <thetext>(In reply to comment #35)

This makes a bunch of sense.  I&apos;ll fix the tests.

1) Where can I find evidence of the task queue concept in our code?  My naive reading of our usage of MessageLoop suggests that there really is just one queue.

2) Which does this mean?
&gt; timeouts are clamped at 10ms
A timeout task specified to run after 0ms will wait at _most_ 10ms or at _least_ 10ms?

Thanks a lot for digging into this.

&gt; 
&gt; I think the tests in question are faulty (flaky). They assume that timer tasks (generated by setTimeout()) and storage event tasks are queued into the same UA task queue. However, the HTML spec specifically says the storage events use &quot;DOM manipulation&quot; task source and timer events use &quot;timer task&quot; task source.
&gt; 
&gt; (see http://dev.w3.org/html5/webstorage/#event-storage and http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html and search for &apos;source&apos;)
&gt; 
&gt; The task source (http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#task-source) specifically regulates whether or not the UA guarantees in-order execution - for the tasks in the same task source it is guaranteed that they will be executed in order, while between task sources it can be random.
&gt; 
&gt; The test contains the code below that will quickly exit w/o waiting for events to be dispatched if the timeout message is dispatched before the storage message is. Since timeouts are clamped at 10ms, the test can be really flakey.
&gt; 
&gt; storageEventList = new Array();
&gt; window.onstorage = function (e) {
&gt;     window.parent.storageEventList.push(e);
&gt; }
&gt; 
&gt; // do somethign with storage...
&gt;  runAfterStorageEvents(myCallback);
&gt; 
&gt; function runAfterStorageEvents(callback) {
&gt;     var currentCount = storageEventList.length;
&gt;     function onTimeout() {
&gt;         if (currentCount != storageEventList.length)
&gt;             runAfterStorageEvents(callback);
&gt;         else
&gt;             callback();
&gt;     }
&gt;     setTimeout(onTimeout, 0);  &lt;-- if this fires before onstorage event, there is no wait.
&gt; }
&gt; 
&gt; The runAfterStorageEvents() function has to be rewritten to wait for specified expected number of storage events, rather then for a delta in event count that happened to squeeze between timer callbacks.
&gt; 
&gt; Does it make sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394907</commentid>
    <comment_count>37</comment_count>
      <attachid>91416</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-04-28 16:41:49 -0700</bug_when>
    <thetext>Comment on attachment 91416
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

If this is purely a refactoring with no visible/testable functional changes, then please add a line in the ChangeLog saying that, instead of leaving this in.

&gt; Source/WebCore/dom/Document.cpp:1708
&gt; +//    m_eventQueue-&gt;cancelQueuedEvents();

Please don&apos;t leave in commented out code (assuming it&apos;s necessary to remove this line - why?)

&gt; Source/WebCore/dom/EventQueue.cpp:30
&gt; +#include &quot;CrossThreadTask.h&quot;

What do you use from this #include?

&gt; Source/WebCore/dom/EventQueue.cpp:67
&gt; +    void dispatchEvent(ScriptExecutionContext*, PassRefPtr&lt;Event&gt; event)

Add an empty newline between methods.

&gt; Source/WebCore/dom/EventQueue.cpp:84
&gt; +      , m_scrollEvent(scrollEvent)

Do you actually need this, or can you just check if the type is scroll event?

&gt; Source/WebCore/dom/EventQueue.cpp:102
&gt; +    m_scriptExecutionContext-&gt;postTask(EventDispatcherTask::create(event, isScrollEvent, this));

Does this have the same semantics as DOMTimer? Enqueued events in a document should not fire while modal dialogs are up (which DOMTimer gets as a side effect of being an ActiveDOMObject). fast/events/scroll-event-during-modal-dialog.html is a layout test that checks for this behavior.

&gt; Source/WebCore/dom/EventQueue.h:55
&gt; +    void removeScrollEvent(PassRefPtr&lt;Event&gt;);

This should be private.

&gt; Source/WebCore/dom/EventQueue.h:68
&gt; +    friend class EventQueueTimer;

This is no longer necessary, you&apos;re removed EventQueueTimer.

&gt; Source/WebCore/dom/EventQueue.h:69
&gt; +    class EventDispatcherTask;

Why is this forward declaration necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394940</commentid>
    <comment_count>38</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2011-04-28 17:02:27 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; (In reply to comment #35)
&gt; 
&gt; This makes a bunch of sense.  I&apos;ll fix the tests.
&gt; 
&gt; 1) Where can I find evidence of the task queue concept in our code?  My naive reading of our usage of MessageLoop suggests that there really is just one queue.

There are no explicit queues, but if you look at MainthreadMac.mm for exampel, you will see that timer events are scheduled via posting a new timer to the run loop, while other tasks are scheduled via [NSObject performSelector:onThread:]

this sort of creates 2 queues - one for timers and one for other events.

&gt; 
&gt; 2) Which does this mean?
&gt; &gt; timeouts are clamped at 10ms
&gt; A timeout task specified to run after 0ms will wait at _most_ 10ms or at _least_ 10ms?

at_least. See DOMTimer.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400999</commentid>
    <comment_count>39</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-05-09 19:27:48 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; (From update of attachment 91416 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=91416&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/EventQueue.cpp:102
&gt; &gt; +    m_scriptExecutionContext-&gt;postTask(EventDispatcherTask::create(event, isScrollEvent, this));
&gt; 
&gt; Does this have the same semantics as DOMTimer? Enqueued events in a document should not fire while modal dialogs are up (which DOMTimer gets as a side effect of being an ActiveDOMObject). fast/events/scroll-event-during-modal-dialog.html is a layout test that checks for this behavior.

fast/events/scroll-event-during-modal-dialog.html passes with this task-posting implementation; I suppose there&apos;s another mechanism that prevents the events from firing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401007</commentid>
    <comment_count>40</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-05-09 19:47:48 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #17)
&gt; I&apos;m going to pursue this but will need to add something like ScriptExecutionContext::cancelTask to get the functionality provided by EventQueue::cancelEvent.

ScriptExecutionContext::cancelTask should be straightforward for non-chromium ports: there&apos;s a cancelCallOnMainThread() implemented alongside callOnMainThread().

Chromium has no implementation for cancelCallOnMainThread(), though.  MessageLoop appears to not support such behavior.  Is there no way to cancel a task once it has been sent to MessageLoop::postTask() ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401736</commentid>
    <comment_count>41</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-05-10 20:23:45 -0700</bug_when>
    <thetext>(In reply to comment #40)
&gt; (In reply to comment #19)
&gt; &gt; (In reply to comment #17)
&gt; &gt; I&apos;m going to pursue this but will need to add something like ScriptExecutionContext::cancelTask to get the functionality provided by EventQueue::cancelEvent.
&gt; 
&gt; ScriptExecutionContext::cancelTask should be straightforward for non-chromium ports: there&apos;s a cancelCallOnMainThread() implemented alongside callOnMainThread().
&gt; 
&gt; Chromium has no implementation for cancelCallOnMainThread(), though.  MessageLoop appears to not support such behavior.  Is there no way to cancel a task once it has been sent to MessageLoop::postTask() ?

+ajwong as someone who&apos;s been monkeying around in message_loop lately.

Albert, can you shed any light on how difficult it would be to add something like MessageLoop::cancelTask()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402001</commentid>
    <comment_count>42</comment_count>
    <who name="Albert J. Wong">ajwong</who>
    <bug_when>2011-05-11 08:55:27 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; (In reply to comment #40)
&gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; (In reply to comment #17)
&gt; &gt; &gt; I&apos;m going to pursue this but will need to add something like ScriptExecutionContext::cancelTask to get the functionality provided by EventQueue::cancelEvent.
&gt; &gt; 
&gt; &gt; ScriptExecutionContext::cancelTask should be straightforward for non-chromium ports: there&apos;s a cancelCallOnMainThread() implemented alongside callOnMainThread().
&gt; &gt; 
&gt; &gt; Chromium has no implementation for cancelCallOnMainThread(), though.  MessageLoop appears to not support such behavior.  Is there no way to cancel a task once it has been sent to MessageLoop::postTask() ?
&gt; 
&gt; +ajwong as someone who&apos;s been monkeying around in message_loop lately.
&gt; 
&gt; Albert, can you shed any light on how difficult it would be to add something like MessageLoop::cancelTask()?

Putting it directly inside MessageLoop is fairly difficult.  I&apos;m also not 100% certain what the semantics should be.  Are you allowed to call cancelTask from a different thread from what the MessageLoop is using?  If so, what do you do if the task is currently executing?  Blocking isn&apos;t really a good idea...

In Chromium, for the single threaded case (where you know that the task is getting posted, canceled, and executed, all from the same thread), then the general solution is to use something like a ScopedRunnableMethodFactory where the deletion of the factory cancels all tasks that were created by it.  We&apos;re also going to soon add support for creating a task on a WeakPtr&lt;&gt; to an object so that when the WeakPtr is invalidated, the task will No-Op itself.  But this all only works sanely from the single threaded perspective.  I don&apos;t think anyone has solved multi-threaded cancelation yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403784</commentid>
    <comment_count>43</comment_count>
      <attachid>91416</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-05-13 13:13:52 -0700</bug_when>
    <thetext>Comment on attachment 91416
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        No new tests. (OOPS!)
&gt; 
&gt; If this is purely a refactoring with no visible/testable functional changes, then please add a line in the ChangeLog saying that, instead of leaving this in.

Done.

&gt;&gt; Source/WebCore/dom/Document.cpp:1708
&gt;&gt; +//    m_eventQueue-&gt;cancelQueuedEvents();
&gt; 
&gt; Please don&apos;t leave in commented out code (assuming it&apos;s necessary to remove this line - why?)

fixed

&gt;&gt; Source/WebCore/dom/EventQueue.cpp:30
&gt;&gt; +#include &quot;CrossThreadTask.h&quot;
&gt; 
&gt; What do you use from this #include?

Remnant of some stuff I&apos;m not using anymore.  Removed.

&gt;&gt; Source/WebCore/dom/EventQueue.cpp:67
&gt;&gt; +    void dispatchEvent(ScriptExecutionContext*, PassRefPtr&lt;Event&gt; event)
&gt; 
&gt; Add an empty newline between methods.

done

&gt;&gt; Source/WebCore/dom/EventQueue.cpp:84
&gt;&gt; +      , m_scrollEvent(scrollEvent)
&gt; 
&gt; Do you actually need this, or can you just check if the type is scroll event?

Nope, don&apos;t need it.  Changed.

&gt;&gt; Source/WebCore/dom/EventQueue.h:55
&gt;&gt; +    void removeScrollEvent(PassRefPtr&lt;Event&gt;);
&gt; 
&gt; This should be private.

done

&gt;&gt; Source/WebCore/dom/EventQueue.h:68
&gt;&gt; +    friend class EventQueueTimer;
&gt; 
&gt; This is no longer necessary, you&apos;re removed EventQueueTimer.

Removed.

&gt;&gt; Source/WebCore/dom/EventQueue.h:69
&gt;&gt; +    class EventDispatcherTask;
&gt; 
&gt; Why is this forward declaration necessary?

It wasn&apos;t. But it is necessary in the new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489856</commentid>
    <comment_count>44</comment_count>
      <attachid>112294</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-10-24 19:57:44 -0700</bug_when>
    <thetext>Created attachment 112294
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489858</commentid>
    <comment_count>45</comment_count>
      <attachid>112295</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-10-24 20:06:53 -0700</bug_when>
    <thetext>Created attachment 112295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489860</commentid>
    <comment_count>46</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-10-24 20:09:54 -0700</bug_when>
    <thetext>Dave L, could you take a look at this revived patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489897</commentid>
    <comment_count>47</comment_count>
      <attachid>112295</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-10-24 23:58:11 -0700</bug_when>
    <thetext>Comment on attachment 112295
Patch

Attachment 112295 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/10205846</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490277</commentid>
    <comment_count>48</comment_count>
      <attachid>112384</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-10-25 13:10:51 -0700</bug_when>
    <thetext>Created attachment 112384
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490534</commentid>
    <comment_count>49</comment_count>
      <attachid>112384</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-10-25 19:05:10 -0700</bug_when>
    <thetext>Comment on attachment 112384
Patch

Attachment 112384 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/10211404</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491158</commentid>
    <comment_count>50</comment_count>
      <attachid>112384</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-10-26 13:42:06 -0700</bug_when>
    <thetext>Comment on attachment 112384
Patch

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

Please fix the builds that failed and address the few issues that I had.

Thanks!

&gt; Source/WebCore/dom/Document.h:36
&gt; +#include &quot;DocumentEventQueue.h&quot;

Won&apos;t a fwd decl of DocumentEventQueue suffice (just as EventQueue did before)?

&gt; Source/WebCore/dom/DocumentEventQueue.h:57
&gt; +    void close();

Add virtual

&gt; Source/WebCore/workers/WorkerEventQueue.h:51
&gt; +    void close();

add virtual on all of these

&gt; Source/WebCore/workers/WorkerEventQueue.h:54
&gt; +    virtual void removeEvent(Event*);

Why is this virtual? (Who overrides it?)

Similarly why do we have a protected section? Who derives from this class?

If that happens in a later patch, perhaps add the virtual and protected then and for now leave this as private and the method as non-virtual.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491186</commentid>
    <comment_count>51</comment_count>
      <attachid>112594</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-10-26 14:36:21 -0700</bug_when>
    <thetext>Created attachment 112594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491188</commentid>
    <comment_count>52</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-10-26 14:39:24 -0700</bug_when>
    <thetext>(In reply to comment #50)
&gt; (From update of attachment 112384 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=112384&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.h:36
&gt; &gt; +#include &quot;DocumentEventQueue.h&quot;
&gt; 
&gt; Won&apos;t a fwd decl of DocumentEventQueue suffice (just as EventQueue did before)?

This doesn&apos;t appear to be addressed.

&gt; &gt; Source/WebCore/workers/WorkerEventQueue.h:54
&gt; &gt; +    virtual void removeEvent(Event*);
&gt; 
&gt; Why is this virtual? (Who overrides it?)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491208</commentid>
    <comment_count>53</comment_count>
      <attachid>112384</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-10-26 15:03:11 -0700</bug_when>
    <thetext>Comment on attachment 112384
Patch

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

&gt;&gt;&gt; Source/WebCore/dom/Document.h:36
&gt;&gt;&gt; +#include &quot;DocumentEventQueue.h&quot;
&gt;&gt; 
&gt;&gt; Won&apos;t a fwd decl of DocumentEventQueue suffice (just as EventQueue did before)?
&gt; 
&gt; This doesn&apos;t appear to be addressed.

The problem is the covariant return type on eventQueue().  The compiler has to see that DocumentEventQueue inherits from EventQueue.

Can I forward-declare that relationship somehow?  clang didn&apos;t like my feeble attempts.

&gt;&gt;&gt; Source/WebCore/workers/WorkerEventQueue.h:54
&gt;&gt;&gt; +    virtual void removeEvent(Event*);
&gt;&gt; 
&gt;&gt; Why is this virtual? (Who overrides it?)
&gt;&gt; 
&gt;&gt; Similarly why do we have a protected section? Who derives from this class?
&gt;&gt; 
&gt;&gt; If that happens in a later patch, perhaps add the virtual and protected then and for now leave this as private and the method as non-virtual.
&gt; 
&gt; Ditto.

Nothing derives from this class, the protected section and virtual keyword are remnants from a previous patch, thanks for catching it.  (I just missed removing this &apos;virtual&apos; in the current patch, will re-upload.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491209</commentid>
    <comment_count>54</comment_count>
      <attachid>112594</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-10-26 15:06:28 -0700</bug_when>
    <thetext>Comment on attachment 112594
Patch

Looks good (especially when the &quot;virtual&quot; is removed in that one place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491234</commentid>
    <comment_count>55</comment_count>
      <attachid>112608</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-10-26 15:46:41 -0700</bug_when>
    <thetext>Created attachment 112608
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491560</commentid>
    <comment_count>56</comment_count>
      <attachid>112608</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-27 07:34:59 -0700</bug_when>
    <thetext>Comment on attachment 112608
Patch for landing

Rejecting attachment 112608 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
 -- saving rejects to file Source/WebCore/storage/IDBDatabase.cpp.rej
patching file Source/WebCore/storage/IDBRequest.cpp
patching file Source/WebCore/storage/IDBTransaction.cpp
patching file Source/WebCore/workers/WorkerContext.cpp
patching file Source/WebCore/workers/WorkerContext.h
patching file Source/WebCore/workers/WorkerEventQueue.cpp
patching file Source/WebCore/workers/WorkerEventQueue.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/10231142</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491799</commentid>
    <comment_count>57</comment_count>
      <attachid>112724</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-10-27 12:10:39 -0700</bug_when>
    <thetext>Created attachment 112724
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492063</commentid>
    <comment_count>58</comment_count>
      <attachid>112724</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-27 16:15:28 -0700</bug_when>
    <thetext>Comment on attachment 112724
Patch for landing

Clearing flags on attachment: 112724

Committed r98656: &lt;http://trac.webkit.org/changeset/98656&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492064</commentid>
    <comment_count>59</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-27 16:15:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492070</commentid>
    <comment_count>60</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-10-27 16:21:50 -0700</bug_when>
    <thetext>*** Bug 61231 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88133</attachid>
            <date>2011-04-04 14:42:36 -0700</date>
            <delta_ts>2011-04-04 15:16:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57789-20110404144235.patch</filename>
            <type>text/plain</type>
            <size>8235</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI4NjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2NWI2YjMxMDRkMjgwNWVh
NjQwZTZmNzEyOGM5NGY5NWJiNDRlN2MzLi4yN2UwZGVlNmFhM2IyYTk3OGJhZDg0M2MyZDY3ZThh
NThlMzc1NDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDQtMDQgIERhdmlk
IEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgZXZlbnQgcXVldWUgZnJvbSBEb2N1bWVudCB0
byBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHNvIHRoYXQgaXQgY2FuIGJlIGFjY2Vzc2VkIGZyb20g
d29ya2VycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTc3ODkKKworICAgICAgICBDaGFuZ2UgRXZlbnRRdWV1ZSB0byBsYXppbHkgY29uc3RydWN0IG1f
ZXZlbnRRdWV1ZVRpbWVyLgorICAgICAgICBDb25zdHJ1Y3RpbmcgRXZlbnRRdWV1ZVRpbWVyIHdp
dGggU2NyaXB0RXhlY3V0aW9uQ29udGV4dAorICAgICAgICB3b3VsZCBjYXVzZSBFdmVudFF1ZXVl
VGltZXIncyBhbmNlc3RvciBBY3RpdmVET01PYmplY3QgY29uc3RydWN0b3IgdG8KKyAgICAgICAg
Y2FsbCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpLCBhIHB1cmUg
dmlydHVhbCBtZXRob2QKKyAgICAgICAgdGhhdCB3b3VsZG4ndCB5ZXQgaGF2ZSB2dGFibGUgZW50
cmllcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGp1c3QgYSByZWZhY3RvcmluZy4KKworICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVucXVldWVXaW5kb3dFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5xdWV1ZURvY3VtZW50RXZlbnQpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9FdmVudFF1ZXVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50UXVldWU6OkV2ZW50UXVldWUpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UXVl
dWU6OmNhbmNlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UXVldWU6OnBlbmRpbmdF
dmVudFRpbWVyRmlyZWQpOgorICAgICAgICAqIGRvbS9FdmVudFF1ZXVlLmg6CisgICAgICAgICog
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgICogZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OmV2ZW50UXVldWUpOgorCiAyMDExLTA0LTA0ICBEYXZpZCBEb3J3aW4gIDxk
ZG9yd2luQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDUxNDQ3MDMyZTAwZjM2ZWQ2YmE1OWZiNGJiODMz
Mjk5NDcyYTBkNTYuLmI0NThmOTg2YjM2YzAzYjE1MmFhZGJjMzgzNWExNDM3ZTI5M2EzMDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDIwLDcgKzQyMCw2IEBAIERvY3VtZW50OjpEb2N1
bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlz
SFRNTCkKICAgICAsIG1fbm9ybWFsV29ybGRXcmFwcGVyQ2FjaGUoMCkKICNlbmRpZgogICAgICwg
bV91c2luZ0dlb2xvY2F0aW9uKGZhbHNlKQotICAgICwgbV9ldmVudFF1ZXVlKEV2ZW50UXVldWU6
OmNyZWF0ZSh0aGlzKSkKICNpZiBFTkFCTEUoV01MKQogICAgICwgbV9jb250YWluc1dNTENvbnRl
bnQoZmFsc2UpCiAjZW5kaWYKQEAgLTM1MzcsMTMgKzM1MzYsMTMgQEAgdm9pZCBEb2N1bWVudDo6
ZGlzcGF0Y2hXaW5kb3dMb2FkRXZlbnQoKQogdm9pZCBEb2N1bWVudDo6ZW5xdWV1ZVdpbmRvd0V2
ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewogICAgIGV2ZW50LT5zZXRUYXJnZXQoZG9t
V2luZG93KCkpOwotICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KGV2ZW50KTsKKyAgICBl
dmVudFF1ZXVlKCktPmVucXVldWVFdmVudChldmVudCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmVu
cXVldWVEb2N1bWVudEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewogICAgIGV2ZW50
LT5zZXRUYXJnZXQodGhpcyk7Ci0gICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQp
OworICAgIGV2ZW50UXVldWUoKS0+ZW5xdWV1ZUV2ZW50KGV2ZW50KTsKIH0KIAogUGFzc1JlZlB0
cjxFdmVudD4gRG9jdW1lbnQ6OmNyZWF0ZUV2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnRUeXBlLCBF
eGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggOGE4M2Q1OWU3OTNhYTQy
ZDg0ZDQ1ODM4Yzc1NDkwYjkwNTdjMGMxOC4uN2ViNzkwMzlmODM2ZjM1ZTQzZWJlMWFmNmZiM2Q4
OTZlNTM1YTM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTgwLDcgKzgwLDYgQEAgY2xhc3Mg
RWxlbWVudDsKIGNsYXNzIEVudGl0eVJlZmVyZW5jZTsKIGNsYXNzIEV2ZW50OwogY2xhc3MgRXZl
bnRMaXN0ZW5lcjsKLWNsYXNzIEV2ZW50UXVldWU7CiBjbGFzcyBGb3JtQXNzb2NpYXRlZEVsZW1l
bnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lVmlldzsKQEAgLTEwNzAsNyArMTA2OSw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIGVucXVldWVQYWdlc2hvd0V2ZW50KFBhZ2VzaG93RXZlbnRQZXJz
aXN0ZW5jZSk7CiAgICAgdm9pZCBlbnF1ZXVlSGFzaGNoYW5nZUV2ZW50KGNvbnN0IFN0cmluZyYg
b2xkVVJMLCBjb25zdCBTdHJpbmcmIG5ld1VSTCk7CiAgICAgdm9pZCBlbnF1ZXVlUG9wc3RhdGVF
dmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QpOwotICAg
IEV2ZW50UXVldWUqIGV2ZW50UXVldWUoKSBjb25zdCB7IHJldHVybiBtX2V2ZW50UXVldWUuZ2V0
KCk7IH0KIAogICAgIHZvaWQgYWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKE1lZGlhQ2FuU3RhcnRM
aXN0ZW5lciopOwogICAgIHZvaWQgcmVtb3ZlTWVkaWFDYW5TdGFydExpc3RlbmVyKE1lZGlhQ2Fu
U3RhcnRMaXN0ZW5lciopOwpAQCAtMTQwMiw4ICsxNDAwLDYgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgbV91c2luZ0dlb2xvY2F0aW9uOwogICAgIAotICAgIFJlZlB0cjxFdmVudFF1ZXVlPiBtX2V2
ZW50UXVldWU7Ci0KICNpZiBFTkFCTEUoV01MKQogICAgIGJvb2wgbV9jb250YWluc1dNTENvbnRl
bnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmNwcAppbmRleCA4ZTU0NGMxM2NjYjY0
OTJjMzQwMGQxODJlZDM4YzQzYjliMzc0N2M2Li5kOGVhNjEwYTYyNTdlYWUwZjFkMGRjYTlmOWVh
NjQ0YjY3OTNmMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuY3BwCkBAIC0yMCw3ICsyMCw3
IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICoKICAqLwogCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKSB7IG1fZXZlbnRRdWV1ZS0+cGVu
ZGluZ0V2ZW50VGltZXJGaXJlZCgpOyB9Ci0gICAgRXZlbnRRdWV1ZSogbV9ldmVudFF1ZXVlOyAg
ICAKKyAgICBFdmVudFF1ZXVlKiBtX2V2ZW50UXVldWU7CiB9OwogCiBQYXNzUmVmUHRyPEV2ZW50
UXVldWU+IEV2ZW50UXVldWU6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQpAQCAtNTIsOCArNTIsOSBAQCBQYXNzUmVmUHRyPEV2ZW50UXVldWU+IEV2ZW50UXVldWU6OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgRXZlbnRRdWV1ZShjb250ZXh0KSk7CiB9CiAKLUV2ZW50UXVldWU6OkV2ZW50UXVldWUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLSAgICA6IG1fcGVuZGluZ0V2ZW50VGlt
ZXIoYWRvcHRQdHIobmV3IEV2ZW50UXVldWVUaW1lcih0aGlzLCBjb250ZXh0KSkpCitFIHZlbnRR
dWV1ZTo6RXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDog
bV9wZW5kaW5nRXZlbnRUaW1lcigwKQorICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNv
bnRleHQpCiB7CiB9CiAKQEAgLTYzLDYgKzY0LDggQEAgRXZlbnRRdWV1ZTo6fkV2ZW50UXVldWUo
KQogCiB2b2lkIEV2ZW50UXVldWU6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVu
dCkKIHsKKyAgICBpZiAoIW1fcGVuZGluZ0V2ZW50VGltZXIpCisgICAgICAgIG1fcGVuZGluZ0V2
ZW50VGltZXIgPSBhZG9wdFB0cihuZXcgRXZlbnRRdWV1ZVRpbWVyKHRoaXMsIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkpOwogICAgIEFTU0VSVChldmVudC0+dGFyZ2V0KCkpOwogICAgIGJvb2wg
d2FzQWRkZWQgPSBtX3F1ZXVlZEV2ZW50cy5hZGQoZXZlbnQpLnNlY29uZDsKICAgICBBU1NFUlRf
VU5VU0VEKHdhc0FkZGVkLCB3YXNBZGRlZCk7IC8vIEl0IHNob3VsZCBub3QgaGF2ZSBhbHJlYWR5
IGJlZW4gaW4gdGhlIGxpc3QuCkBAIC04NywxMyArOTAsMTQgQEAgYm9vbCBFdmVudFF1ZXVlOjpj
YW5jZWxFdmVudChFdmVudCogZXZlbnQpCiB7CiAgICAgYm9vbCBmb3VuZCA9IG1fcXVldWVkRXZl
bnRzLmNvbnRhaW5zKGV2ZW50KTsKICAgICBtX3F1ZXVlZEV2ZW50cy5yZW1vdmUoZXZlbnQpOwot
ICAgIGlmIChtX3F1ZXVlZEV2ZW50cy5pc0VtcHR5KCkpCisgICAgaWYgKG1fcXVldWVkRXZlbnRz
LmlzRW1wdHkoKSAmJiBtX3BlbmRpbmdFdmVudFRpbWVyKQogICAgICAgICBtX3BlbmRpbmdFdmVu
dFRpbWVyLT5zdG9wKCk7CiAgICAgcmV0dXJuIGZvdW5kOwogfQogCiB2b2lkIEV2ZW50UXVldWU6
OnBlbmRpbmdFdmVudFRpbWVyRmlyZWQoKQogeworICAgIEFTU0VSVChtX3BlbmRpbmdFdmVudFRp
bWVyKTsKICAgICBBU1NFUlQoIW1fcGVuZGluZ0V2ZW50VGltZXItPmlzQWN0aXZlKCkpOwogICAg
IEFTU0VSVCghbV9xdWV1ZWRFdmVudHMuaXNFbXB0eSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVl
LmgKaW5kZXggOTRiNmVhZjA0OGU5ZGM1MWRjMWMxMzJmYzA4ZGE3M2ZhYmE2OGQ4NC4uNDFhMTFk
MTAwMmMzMDY0YWNiZDEwN2FlMDExMWIzZWQ5MGJjZDFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50UXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1
ZS5oCkBAIC02Myw4ICs2Myw5IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPEV2ZW50UXVldWVUaW1l
cj4gbV9wZW5kaW5nRXZlbnRUaW1lcjsKICAgICBMaXN0SGFzaFNldDxSZWZQdHI8RXZlbnQ+ID4g
bV9xdWV1ZWRFdmVudHM7CiAgICAgSGFzaFNldDxOb2RlKj4gbV9ub2Rlc1dpdGhRdWV1ZWRTY3Jv
bGxFdmVudHM7Ci0gICAgCi0gICAgZnJpZW5kIGNsYXNzIEV2ZW50UXVldWVUaW1lcjsgICAgCisg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OworCisg
ICAgZnJpZW5kIGNsYXNzIEV2ZW50UXVldWVUaW1lcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCBiOWExZTkyNmVlMWY0NGZl
NzQ4NGNjZTBjNjM5YTBjZmY5NDc3Njk0Li41NWU5YjdiZmUxNzRmNGVjNDEwNjJmOTg5MWI3Mzdh
ZmE5MGU4MWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIKICNp
bmNsdWRlICJFcnJvckV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1
ZGUgIkV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkZp
bGVUaHJlYWQuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgpAQCAtOTIsNiArOTMsNyBAQCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKICNpZiBFTkFC
TEUoREFUQUJBU0UpCiAgICAgLCBtX2hhc09wZW5EYXRhYmFzZXMoZmFsc2UpCiAjZW5kaWYKKyAg
ICAsIG1fZXZlbnRRdWV1ZShFdmVudFF1ZXVlOjpjcmVhdGUodGhpcykpCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IDNiMzdmMGNhM2U1
OGM1YTY1YjVhMWExMmM1NGMwZjFkNTg2NTIzYzIuLjU2MDZiN2Y1M2I2Mzc5ZGZiYmEyN2QyNTk1
YTU1ODJiZTE1YWM1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaApAQCAtNTYsNiArNTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
RE9NVGltZXI7CiAgICAgY2xhc3MgRXZlbnRMaXN0ZW5lcjsKICAgICBjbGFzcyBFdmVudFRhcmdl
dDsKKyAgICBjbGFzcyBFdmVudFF1ZXVlOwogI2lmIEVOQUJMRShCTE9CKSB8fCBFTkFCTEUoRklM
RV9TWVNURU0pCiAgICAgY2xhc3MgRmlsZVRocmVhZDsKICNlbmRpZgpAQCAtMTE3LDYgKzExOCw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBkZXN0cm95ZWRNZXNzYWdlUG9y
dChNZXNzYWdlUG9ydCopOwogICAgICAgICBjb25zdCBIYXNoU2V0PE1lc3NhZ2VQb3J0Kj4mIG1l
c3NhZ2VQb3J0cygpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZVBvcnRzOyB9CiAKKyAgICAgICAg
RXZlbnRRdWV1ZSogZXZlbnRRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRRdWV1ZS5nZXQo
KTsgfQorCiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgICAgIHZvaWQgY3JlYXRlZERvbVVybChET01V
UkwqKTsKICAgICAgICAgdm9pZCBkZXN0cm95ZWREb21VcmwoRE9NVVJMKik7CkBAIC0yMDYsNiAr
MjA5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShCTE9CKSB8fCBFTkFCTEUo
RklMRV9TWVNURU0pCiAgICAgICAgIFJlZlB0cjxGaWxlVGhyZWFkPiBtX2ZpbGVUaHJlYWQ7CiAj
ZW5kaWYKKworICAgICAgICBSZWZQdHI8RXZlbnRRdWV1ZT4gbV9ldmVudFF1ZXVlOwogICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88141</attachid>
            <date>2011-04-04 15:17:23 -0700</date>
            <delta_ts>2011-04-04 18:33:11 -0700</delta_ts>
            <desc>Fix typo</desc>
            <filename>bug-57789-20110404151721.patch</filename>
            <type>text/plain</type>
            <size>8130</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI4NjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2NWI2YjMxMDRkMjgwNWVh
NjQwZTZmNzEyOGM5NGY5NWJiNDRlN2MzLi4yN2UwZGVlNmFhM2IyYTk3OGJhZDg0M2MyZDY3ZThh
NThlMzc1NDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDQtMDQgIERhdmlk
IEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgZXZlbnQgcXVldWUgZnJvbSBEb2N1bWVudCB0
byBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHNvIHRoYXQgaXQgY2FuIGJlIGFjY2Vzc2VkIGZyb20g
d29ya2VycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTc3ODkKKworICAgICAgICBDaGFuZ2UgRXZlbnRRdWV1ZSB0byBsYXppbHkgY29uc3RydWN0IG1f
ZXZlbnRRdWV1ZVRpbWVyLgorICAgICAgICBDb25zdHJ1Y3RpbmcgRXZlbnRRdWV1ZVRpbWVyIHdp
dGggU2NyaXB0RXhlY3V0aW9uQ29udGV4dAorICAgICAgICB3b3VsZCBjYXVzZSBFdmVudFF1ZXVl
VGltZXIncyBhbmNlc3RvciBBY3RpdmVET01PYmplY3QgY29uc3RydWN0b3IgdG8KKyAgICAgICAg
Y2FsbCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpLCBhIHB1cmUg
dmlydHVhbCBtZXRob2QKKyAgICAgICAgdGhhdCB3b3VsZG4ndCB5ZXQgaGF2ZSB2dGFibGUgZW50
cmllcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGp1c3QgYSByZWZhY3RvcmluZy4KKworICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVucXVldWVXaW5kb3dFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5xdWV1ZURvY3VtZW50RXZlbnQpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9FdmVudFF1ZXVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50UXVldWU6OkV2ZW50UXVldWUpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UXVl
dWU6OmNhbmNlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UXVldWU6OnBlbmRpbmdF
dmVudFRpbWVyRmlyZWQpOgorICAgICAgICAqIGRvbS9FdmVudFF1ZXVlLmg6CisgICAgICAgICog
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgICogZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OmV2ZW50UXVldWUpOgorCiAyMDExLTA0LTA0ICBEYXZpZCBEb3J3aW4gIDxk
ZG9yd2luQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDUxNDQ3MDMyZTAwZjM2ZWQ2YmE1OWZiNGJiODMz
Mjk5NDcyYTBkNTYuLmI0NThmOTg2YjM2YzAzYjE1MmFhZGJjMzgzNWExNDM3ZTI5M2EzMDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDIwLDcgKzQyMCw2IEBAIERvY3VtZW50OjpEb2N1
bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlz
SFRNTCkKICAgICAsIG1fbm9ybWFsV29ybGRXcmFwcGVyQ2FjaGUoMCkKICNlbmRpZgogICAgICwg
bV91c2luZ0dlb2xvY2F0aW9uKGZhbHNlKQotICAgICwgbV9ldmVudFF1ZXVlKEV2ZW50UXVldWU6
OmNyZWF0ZSh0aGlzKSkKICNpZiBFTkFCTEUoV01MKQogICAgICwgbV9jb250YWluc1dNTENvbnRl
bnQoZmFsc2UpCiAjZW5kaWYKQEAgLTM1MzcsMTMgKzM1MzYsMTMgQEAgdm9pZCBEb2N1bWVudDo6
ZGlzcGF0Y2hXaW5kb3dMb2FkRXZlbnQoKQogdm9pZCBEb2N1bWVudDo6ZW5xdWV1ZVdpbmRvd0V2
ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewogICAgIGV2ZW50LT5zZXRUYXJnZXQoZG9t
V2luZG93KCkpOwotICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KGV2ZW50KTsKKyAgICBl
dmVudFF1ZXVlKCktPmVucXVldWVFdmVudChldmVudCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmVu
cXVldWVEb2N1bWVudEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewogICAgIGV2ZW50
LT5zZXRUYXJnZXQodGhpcyk7Ci0gICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQp
OworICAgIGV2ZW50UXVldWUoKS0+ZW5xdWV1ZUV2ZW50KGV2ZW50KTsKIH0KIAogUGFzc1JlZlB0
cjxFdmVudD4gRG9jdW1lbnQ6OmNyZWF0ZUV2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnRUeXBlLCBF
eGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggOGE4M2Q1OWU3OTNhYTQy
ZDg0ZDQ1ODM4Yzc1NDkwYjkwNTdjMGMxOC4uN2ViNzkwMzlmODM2ZjM1ZTQzZWJlMWFmNmZiM2Q4
OTZlNTM1YTM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTgwLDcgKzgwLDYgQEAgY2xhc3Mg
RWxlbWVudDsKIGNsYXNzIEVudGl0eVJlZmVyZW5jZTsKIGNsYXNzIEV2ZW50OwogY2xhc3MgRXZl
bnRMaXN0ZW5lcjsKLWNsYXNzIEV2ZW50UXVldWU7CiBjbGFzcyBGb3JtQXNzb2NpYXRlZEVsZW1l
bnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lVmlldzsKQEAgLTEwNzAsNyArMTA2OSw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIGVucXVldWVQYWdlc2hvd0V2ZW50KFBhZ2VzaG93RXZlbnRQZXJz
aXN0ZW5jZSk7CiAgICAgdm9pZCBlbnF1ZXVlSGFzaGNoYW5nZUV2ZW50KGNvbnN0IFN0cmluZyYg
b2xkVVJMLCBjb25zdCBTdHJpbmcmIG5ld1VSTCk7CiAgICAgdm9pZCBlbnF1ZXVlUG9wc3RhdGVF
dmVudChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QpOwotICAg
IEV2ZW50UXVldWUqIGV2ZW50UXVldWUoKSBjb25zdCB7IHJldHVybiBtX2V2ZW50UXVldWUuZ2V0
KCk7IH0KIAogICAgIHZvaWQgYWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKE1lZGlhQ2FuU3RhcnRM
aXN0ZW5lciopOwogICAgIHZvaWQgcmVtb3ZlTWVkaWFDYW5TdGFydExpc3RlbmVyKE1lZGlhQ2Fu
U3RhcnRMaXN0ZW5lciopOwpAQCAtMTQwMiw4ICsxNDAwLDYgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgbV91c2luZ0dlb2xvY2F0aW9uOwogICAgIAotICAgIFJlZlB0cjxFdmVudFF1ZXVlPiBtX2V2
ZW50UXVldWU7Ci0KICNpZiBFTkFCTEUoV01MKQogICAgIGJvb2wgbV9jb250YWluc1dNTENvbnRl
bnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmNwcAppbmRleCA4ZTU0NGMxM2NjYjY0
OTJjMzQwMGQxODJlZDM4YzQzYjliMzc0N2M2Li43N2JiZjQzZGMwNTZkNDM2NWQ3ZGFmNDQ4NDRj
NTBmZDk4NTY0N2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuY3BwCkBAIC0yMCw3ICsyMCw3
IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICoKICAqLwogCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKSB7IG1fZXZlbnRRdWV1ZS0+cGVu
ZGluZ0V2ZW50VGltZXJGaXJlZCgpOyB9Ci0gICAgRXZlbnRRdWV1ZSogbV9ldmVudFF1ZXVlOyAg
ICAKKyAgICBFdmVudFF1ZXVlKiBtX2V2ZW50UXVldWU7CiB9OwogCiBQYXNzUmVmUHRyPEV2ZW50
UXVldWU+IEV2ZW50UXVldWU6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQpAQCAtNTMsNyArNTMsOCBAQCBQYXNzUmVmUHRyPEV2ZW50UXVldWU+IEV2ZW50UXVldWU6OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogfQogCiBFdmVudFF1ZXVlOjpF
dmVudFF1ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgOiBtX3BlbmRp
bmdFdmVudFRpbWVyKGFkb3B0UHRyKG5ldyBFdmVudFF1ZXVlVGltZXIodGhpcywgY29udGV4dCkp
KQorICAgIDogbV9wZW5kaW5nRXZlbnRUaW1lcigwKQorICAgICwgbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0KGNvbnRleHQpCiB7CiB9CiAKQEAgLTYzLDYgKzY0LDggQEAgRXZlbnRRdWV1ZTo6fkV2
ZW50UXVldWUoKQogCiB2b2lkIEV2ZW50UXVldWU6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2
ZW50PiBldmVudCkKIHsKKyAgICBpZiAoIW1fcGVuZGluZ0V2ZW50VGltZXIpCisgICAgICAgIG1f
cGVuZGluZ0V2ZW50VGltZXIgPSBhZG9wdFB0cihuZXcgRXZlbnRRdWV1ZVRpbWVyKHRoaXMsIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwogICAgIEFTU0VSVChldmVudC0+dGFyZ2V0KCkpOwog
ICAgIGJvb2wgd2FzQWRkZWQgPSBtX3F1ZXVlZEV2ZW50cy5hZGQoZXZlbnQpLnNlY29uZDsKICAg
ICBBU1NFUlRfVU5VU0VEKHdhc0FkZGVkLCB3YXNBZGRlZCk7IC8vIEl0IHNob3VsZCBub3QgaGF2
ZSBhbHJlYWR5IGJlZW4gaW4gdGhlIGxpc3QuCkBAIC04NywxMyArOTAsMTQgQEAgYm9vbCBFdmVu
dFF1ZXVlOjpjYW5jZWxFdmVudChFdmVudCogZXZlbnQpCiB7CiAgICAgYm9vbCBmb3VuZCA9IG1f
cXVldWVkRXZlbnRzLmNvbnRhaW5zKGV2ZW50KTsKICAgICBtX3F1ZXVlZEV2ZW50cy5yZW1vdmUo
ZXZlbnQpOwotICAgIGlmIChtX3F1ZXVlZEV2ZW50cy5pc0VtcHR5KCkpCisgICAgaWYgKG1fcXVl
dWVkRXZlbnRzLmlzRW1wdHkoKSAmJiBtX3BlbmRpbmdFdmVudFRpbWVyKQogICAgICAgICBtX3Bl
bmRpbmdFdmVudFRpbWVyLT5zdG9wKCk7CiAgICAgcmV0dXJuIGZvdW5kOwogfQogCiB2b2lkIEV2
ZW50UXVldWU6OnBlbmRpbmdFdmVudFRpbWVyRmlyZWQoKQogeworICAgIEFTU0VSVChtX3BlbmRp
bmdFdmVudFRpbWVyKTsKICAgICBBU1NFUlQoIW1fcGVuZGluZ0V2ZW50VGltZXItPmlzQWN0aXZl
KCkpOwogICAgIEFTU0VSVCghbV9xdWV1ZWRFdmVudHMuaXNFbXB0eSgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFF1ZXVlLmgKaW5kZXggOTRiNmVhZjA0OGU5ZGM1MWRjMWMxMzJmYzA4ZGE3M2ZhYmE2OGQ4
NC4uNDFhMTFkMTAwMmMzMDY0YWNiZDEwN2FlMDExMWIzZWQ5MGJjZDFiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRRdWV1ZS5oCkBAIC02Myw4ICs2Myw5IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPEV2ZW50
UXVldWVUaW1lcj4gbV9wZW5kaW5nRXZlbnRUaW1lcjsKICAgICBMaXN0SGFzaFNldDxSZWZQdHI8
RXZlbnQ+ID4gbV9xdWV1ZWRFdmVudHM7CiAgICAgSGFzaFNldDxOb2RlKj4gbV9ub2Rlc1dpdGhR
dWV1ZWRTY3JvbGxFdmVudHM7Ci0gICAgCi0gICAgZnJpZW5kIGNsYXNzIEV2ZW50UXVldWVUaW1l
cjsgICAgCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0OworCisgICAgZnJpZW5kIGNsYXNzIEV2ZW50UXVldWVUaW1lcjsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCBiOWExZTky
NmVlMWY0NGZlNzQ4NGNjZTBjNjM5YTBjZmY5NDc3Njk0Li41NWU5YjdiZmUxNzRmNGVjNDEwNjJm
OTg5MWI3MzdhZmE5MGU4MWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRGF0YWJhc2VUaHJl
YWQuaCIKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5o
IgorI2luY2x1ZGUgIkV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2lu
Y2x1ZGUgIkZpbGVUaHJlYWQuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgpAQCAtOTIsNiAr
OTMsNyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkK
ICNpZiBFTkFCTEUoREFUQUJBU0UpCiAgICAgLCBtX2hhc09wZW5EYXRhYmFzZXMoZmFsc2UpCiAj
ZW5kaWYKKyAgICAsIG1fZXZlbnRRdWV1ZShFdmVudFF1ZXVlOjpjcmVhdGUodGhpcykpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IDNi
MzdmMGNhM2U1OGM1YTY1YjVhMWExMmM1NGMwZjFkNTg2NTIzYzIuLjU2MDZiN2Y1M2I2Mzc5ZGZi
YmEyN2QyNTk1YTU1ODJiZTE1YWM1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaApAQCAtNTYsNiArNTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgY2xhc3MgRE9NVGltZXI7CiAgICAgY2xhc3MgRXZlbnRMaXN0ZW5lcjsKICAgICBjbGFzcyBF
dmVudFRhcmdldDsKKyAgICBjbGFzcyBFdmVudFF1ZXVlOwogI2lmIEVOQUJMRShCTE9CKSB8fCBF
TkFCTEUoRklMRV9TWVNURU0pCiAgICAgY2xhc3MgRmlsZVRocmVhZDsKICNlbmRpZgpAQCAtMTE3
LDYgKzExOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBkZXN0cm95ZWRN
ZXNzYWdlUG9ydChNZXNzYWdlUG9ydCopOwogICAgICAgICBjb25zdCBIYXNoU2V0PE1lc3NhZ2VQ
b3J0Kj4mIG1lc3NhZ2VQb3J0cygpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZVBvcnRzOyB9CiAK
KyAgICAgICAgRXZlbnRRdWV1ZSogZXZlbnRRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRR
dWV1ZS5nZXQoKTsgfQorCiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgICAgIHZvaWQgY3JlYXRlZERv
bVVybChET01VUkwqKTsKICAgICAgICAgdm9pZCBkZXN0cm95ZWREb21VcmwoRE9NVVJMKik7CkBA
IC0yMDYsNiArMjA5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShCTE9CKSB8
fCBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgICAgIFJlZlB0cjxGaWxlVGhyZWFkPiBtX2ZpbGVU
aHJlYWQ7CiAjZW5kaWYKKworICAgICAgICBSZWZQdHI8RXZlbnRRdWV1ZT4gbV9ldmVudFF1ZXVl
OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88177</attachid>
            <date>2011-04-04 18:33:14 -0700</date>
            <delta_ts>2011-04-22 18:51:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57789-20110404183313.patch</filename>
            <type>text/plain</type>
            <size>8154</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI4NjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2NWI2YjMxMDRkMjgwNWVh
NjQwZTZmNzEyOGM5NGY5NWJiNDRlN2MzLi5lOWVhMTc0ZTc4NzFmZDc5YjliNzAxNmJmNDNkNDVh
ZTliZGQxM2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDQtMDQgIERhdmlk
IEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgZXZlbnQgcXVldWUgZnJvbSBEb2N1bWVudCB0
byBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHNvIHRoYXQKKyAgICAgICAgSW5kZXhlZERCIGNhbiBh
Y2Nlc3MgaXQgZnJvbSB3b3JrZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTc3ODkKKworICAgICAgICBObyBuZXcgdGVzdHMsIGp1c3QgYSByZWZh
Y3RvcmluZy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVucXVl
dWVXaW5kb3dFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5xdWV1ZURvY3Vt
ZW50RXZlbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9FdmVu
dFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UXVldWU6OkV2ZW50UXVldWUpOgor
ICAgICAgICBDaGFuZ2UgRXZlbnRRdWV1ZSB0byBsYXppbHkgY29uc3RydWN0IG1fZXZlbnRRdWV1
ZVRpbWVyLgorICAgICAgICBDb25zdHJ1Y3RpbmcgRXZlbnRRdWV1ZVRpbWVyIHdpdGggU2NyaXB0
RXhlY3V0aW9uQ29udGV4dAorICAgICAgICB3b3VsZCBjYXVzZSBFdmVudFF1ZXVlVGltZXIncyBh
bmNlc3RvciBBY3RpdmVET01PYmplY3QgY29uc3RydWN0b3IgdG8KKyAgICAgICAgY2FsbCBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpLCBhIHB1cmUgdmlydHVhbCBt
ZXRob2QKKyAgICAgICAgdGhhdCB3b3VsZG4ndCB5ZXQgaGF2ZSB2dGFibGUgZW50cmllcy4KKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50UXVldWU6OmVucXVldWVFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudFF1ZXVlOjpjYW5jZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFF1
ZXVlOjpwZW5kaW5nRXZlbnRUaW1lckZpcmVkKTogb25seSBjaGFuZ2UgaXMgK0FTU0VSVChtX2V2
ZW50UXVldWVUaW1lcikKKyAgICAgICAgKiBkb20vRXZlbnRRdWV1ZS5oOgorICAgICAgICAqIGRv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAqIGRvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpldmVudFF1ZXVlKToKKwogMjAxMS0wNC0wNCAgRGF2aWQgRG9yd2luICA8ZGRv
cndpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA1MTQ0NzAzMmUwMGYzNmVkNmJhNTlmYjRiYjgzMzI5
OTQ3MmEwZDU2Li5iNDU4Zjk4NmIzNmMwM2IxNTJhYWRiYzM4MzVhMTQzN2UyOTNhMzA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQyMCw3ICs0MjAsNiBAQCBEb2N1bWVudDo6RG9jdW1l
bnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hU
TUwpCiAgICAgLCBtX25vcm1hbFdvcmxkV3JhcHBlckNhY2hlKDApCiAjZW5kaWYKICAgICAsIG1f
dXNpbmdHZW9sb2NhdGlvbihmYWxzZSkKLSAgICAsIG1fZXZlbnRRdWV1ZShFdmVudFF1ZXVlOjpj
cmVhdGUodGhpcykpCiAjaWYgRU5BQkxFKFdNTCkKICAgICAsIG1fY29udGFpbnNXTUxDb250ZW50
KGZhbHNlKQogI2VuZGlmCkBAIC0zNTM3LDEzICszNTM2LDEzIEBAIHZvaWQgRG9jdW1lbnQ6OmRp
c3BhdGNoV2luZG93TG9hZEV2ZW50KCkKIHZvaWQgRG9jdW1lbnQ6OmVucXVldWVXaW5kb3dFdmVu
dChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKICAgICBldmVudC0+c2V0VGFyZ2V0KGRvbVdp
bmRvdygpKTsKLSAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChldmVudCk7CisgICAgZXZl
bnRRdWV1ZSgpLT5lbnF1ZXVlRXZlbnQoZXZlbnQpOwogfQogCiB2b2lkIERvY3VtZW50OjplbnF1
ZXVlRG9jdW1lbnRFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKICAgICBldmVudC0+
c2V0VGFyZ2V0KHRoaXMpOwotICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KGV2ZW50KTsK
KyAgICBldmVudFF1ZXVlKCktPmVucXVldWVFdmVudChldmVudCk7CiB9CiAKIFBhc3NSZWZQdHI8
RXZlbnQ+IERvY3VtZW50OjpjcmVhdGVFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50VHlwZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDhhODNkNTllNzkzYWE0MmQ4
NGQ0NTgzOGM3NTQ5MGI5MDU3YzBjMTguLjdlYjc5MDM5ZjgzNmYzNWU0M2ViZTFhZjZmYjNkODk2
ZTUzNWEzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC04MCw3ICs4MCw2IEBAIGNsYXNzIEVs
ZW1lbnQ7CiBjbGFzcyBFbnRpdHlSZWZlcmVuY2U7CiBjbGFzcyBFdmVudDsKIGNsYXNzIEV2ZW50
TGlzdGVuZXI7Ci1jbGFzcyBFdmVudFF1ZXVlOwogY2xhc3MgRm9ybUFzc29jaWF0ZWRFbGVtZW50
OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZVZpZXc7CkBAIC0xMDcwLDcgKzEwNjksNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBlbnF1ZXVlUGFnZXNob3dFdmVudChQYWdlc2hvd0V2ZW50UGVyc2lz
dGVuY2UpOwogICAgIHZvaWQgZW5xdWV1ZUhhc2hjaGFuZ2VFdmVudChjb25zdCBTdHJpbmcmIG9s
ZFVSTCwgY29uc3QgU3RyaW5nJiBuZXdVUkwpOwogICAgIHZvaWQgZW5xdWV1ZVBvcHN0YXRlRXZl
bnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0KTsKLSAgICBF
dmVudFF1ZXVlKiBldmVudFF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFF1ZXVlLmdldCgp
OyB9CiAKICAgICB2b2lkIGFkZE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcihNZWRpYUNhblN0YXJ0TGlz
dGVuZXIqKTsKICAgICB2b2lkIHJlbW92ZU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcihNZWRpYUNhblN0
YXJ0TGlzdGVuZXIqKTsKQEAgLTE0MDIsOCArMTQwMCw2IEBAIHByaXZhdGU6CiAKICAgICBib29s
IG1fdXNpbmdHZW9sb2NhdGlvbjsKICAgICAKLSAgICBSZWZQdHI8RXZlbnRRdWV1ZT4gbV9ldmVu
dFF1ZXVlOwotCiAjaWYgRU5BQkxFKFdNTCkKICAgICBib29sIG1fY29udGFpbnNXTUxDb250ZW50
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5jcHAKaW5kZXggOGU1NDRjMTNjY2I2NDky
YzM0MDBkMTgyZWQzOGM0M2I5YjM3NDdjNi4uMWJmZTA4MmQwZjNkN2FhNDY1NmUxZDA1OTlkNjM4
YWQ3NzA0ZjliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmNwcApAQCAtMzgsMTEgKzM4LDE1
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEV2ZW50UXVldWVUaW1lciA6IHB1YmxpYyBT
dXNwZW5kYWJsZVRpbWVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFdmVudFF1ZXVlVGlt
ZXIpOwogcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEV2ZW50UXVldWVUaW1lcj4gY3Jl
YXRlKEV2ZW50UXVldWUqIGV2ZW50UXVldWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV2ZW50UXVldWVUaW1lcihl
dmVudFF1ZXVlLCBjb250ZXh0KSk7CisgICAgfQorCitwcml2YXRlOgogICAgIEV2ZW50UXVldWVU
aW1lcihFdmVudFF1ZXVlKiBldmVudFF1ZXVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQogICAgICAgICA6IFN1c3BlbmRhYmxlVGltZXIoY29udGV4dCkKICAgICAgICAgLCBtX2V2
ZW50UXVldWUoZXZlbnRRdWV1ZSkgeyB9Ci0KLXByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGZp
cmVkKCkgeyBtX2V2ZW50UXVldWUtPnBlbmRpbmdFdmVudFRpbWVyRmlyZWQoKTsgfQogICAgIEV2
ZW50UXVldWUqIG1fZXZlbnRRdWV1ZTsgICAgCiB9OwpAQCAtNTMsNyArNTcsOCBAQCBQYXNzUmVm
UHRyPEV2ZW50UXVldWU+IEV2ZW50UXVldWU6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQogfQogCiBFdmVudFF1ZXVlOjpFdmVudFF1ZXVlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQpCi0gICAgOiBtX3BlbmRpbmdFdmVudFRpbWVyKGFkb3B0UHRyKG5ldyBF
dmVudFF1ZXVlVGltZXIodGhpcywgY29udGV4dCkpKQorICAgIDogbV9wZW5kaW5nRXZlbnRUaW1l
cigwKQorICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCiB7CiB9CiAKQEAg
LTYzLDYgKzY4LDggQEAgRXZlbnRRdWV1ZTo6fkV2ZW50UXVldWUoKQogCiB2b2lkIEV2ZW50UXVl
dWU6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKKyAgICBpZiAoIW1f
cGVuZGluZ0V2ZW50VGltZXIpCisgICAgICAgIG1fcGVuZGluZ0V2ZW50VGltZXIgPSBFdmVudFF1
ZXVlVGltZXI6OmNyZWF0ZSh0aGlzLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAgIEFT
U0VSVChldmVudC0+dGFyZ2V0KCkpOwogICAgIGJvb2wgd2FzQWRkZWQgPSBtX3F1ZXVlZEV2ZW50
cy5hZGQoZXZlbnQpLnNlY29uZDsKICAgICBBU1NFUlRfVU5VU0VEKHdhc0FkZGVkLCB3YXNBZGRl
ZCk7IC8vIEl0IHNob3VsZCBub3QgaGF2ZSBhbHJlYWR5IGJlZW4gaW4gdGhlIGxpc3QuCkBAIC04
NywxMyArOTQsMTQgQEAgYm9vbCBFdmVudFF1ZXVlOjpjYW5jZWxFdmVudChFdmVudCogZXZlbnQp
CiB7CiAgICAgYm9vbCBmb3VuZCA9IG1fcXVldWVkRXZlbnRzLmNvbnRhaW5zKGV2ZW50KTsKICAg
ICBtX3F1ZXVlZEV2ZW50cy5yZW1vdmUoZXZlbnQpOwotICAgIGlmIChtX3F1ZXVlZEV2ZW50cy5p
c0VtcHR5KCkpCisgICAgaWYgKG1fcXVldWVkRXZlbnRzLmlzRW1wdHkoKSAmJiBtX3BlbmRpbmdF
dmVudFRpbWVyKQogICAgICAgICBtX3BlbmRpbmdFdmVudFRpbWVyLT5zdG9wKCk7CiAgICAgcmV0
dXJuIGZvdW5kOwogfQogCiB2b2lkIEV2ZW50UXVldWU6OnBlbmRpbmdFdmVudFRpbWVyRmlyZWQo
KQogeworICAgIEFTU0VSVChtX3BlbmRpbmdFdmVudFRpbWVyKTsKICAgICBBU1NFUlQoIW1fcGVu
ZGluZ0V2ZW50VGltZXItPmlzQWN0aXZlKCkpOwogICAgIEFTU0VSVCghbV9xdWV1ZWRFdmVudHMu
aXNFbXB0eSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmgKaW5kZXggOTRiNmVhZjA0OGU5ZGM1
MWRjMWMxMzJmYzA4ZGE3M2ZhYmE2OGQ4NC4uNDFhMTFkMTAwMmMzMDY0YWNiZDEwN2FlMDExMWIz
ZWQ5MGJjZDFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5oCkBAIC02Myw4ICs2Myw5IEBAIHBy
aXZhdGU6CiAgICAgT3duUHRyPEV2ZW50UXVldWVUaW1lcj4gbV9wZW5kaW5nRXZlbnRUaW1lcjsK
ICAgICBMaXN0SGFzaFNldDxSZWZQdHI8RXZlbnQ+ID4gbV9xdWV1ZWRFdmVudHM7CiAgICAgSGFz
aFNldDxOb2RlKj4gbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHM7Ci0gICAgCi0gICAgZnJp
ZW5kIGNsYXNzIEV2ZW50UXVldWVUaW1lcjsgICAgCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OworCisgICAgZnJpZW5kIGNsYXNzIEV2ZW50UXVl
dWVUaW1lcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcAppbmRleCBiOWExZTkyNmVlMWY0NGZlNzQ4NGNjZTBjNjM5YTBjZmY5NDc3Njk0
Li41NWU5YjdiZmUxNzRmNGVjNDEwNjJmOTg5MWI3MzdhZmE5MGU4MWJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCiAj
aW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIkV2ZW50UXVldWUuaCIKICNpbmNs
dWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkZpbGVUaHJlYWQuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUG9ydC5oIgpAQCAtOTIsNiArOTMsNyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAgICAgLCBtX2hh
c09wZW5EYXRhYmFzZXMoZmFsc2UpCiAjZW5kaWYKKyAgICAsIG1fZXZlbnRRdWV1ZShFdmVudFF1
ZXVlOjpjcmVhdGUodGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oCmluZGV4IDNiMzdmMGNhM2U1OGM1YTY1YjVhMWExMmM1NGMwZjFkNTg2
NTIzYzIuLmFkYjIwNmQ4ZWRhYTUyZjBmYzkyYTUyN2M4MDk3NTFmMzkxNDVlNGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtNTUsNiArNTUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICBjbGFzcyBET01UaW1lcjsKICAgICBj
bGFzcyBFdmVudExpc3RlbmVyOworICAgIGNsYXNzIEV2ZW50UXVldWU7CiAgICAgY2xhc3MgRXZl
bnRUYXJnZXQ7CiAjaWYgRU5BQkxFKEJMT0IpIHx8IEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICBj
bGFzcyBGaWxlVGhyZWFkOwpAQCAtMTE3LDYgKzExOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdm9pZCBkZXN0cm95ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9ydCopOwogICAgICAg
ICBjb25zdCBIYXNoU2V0PE1lc3NhZ2VQb3J0Kj4mIG1lc3NhZ2VQb3J0cygpIGNvbnN0IHsgcmV0
dXJuIG1fbWVzc2FnZVBvcnRzOyB9CiAKKyAgICAgICAgRXZlbnRRdWV1ZSogZXZlbnRRdWV1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRRdWV1ZS5nZXQoKTsgfQorCiAjaWYgRU5BQkxFKEJMT0Ip
CiAgICAgICAgIHZvaWQgY3JlYXRlZERvbVVybChET01VUkwqKTsKICAgICAgICAgdm9pZCBkZXN0
cm95ZWREb21VcmwoRE9NVVJMKik7CkBAIC0yMDYsNiArMjA5LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogI2lmIEVOQUJMRShCTE9CKSB8fCBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgICAgIFJl
ZlB0cjxGaWxlVGhyZWFkPiBtX2ZpbGVUaHJlYWQ7CiAjZW5kaWYKKworICAgICAgICBSZWZQdHI8
RXZlbnRRdWV1ZT4gbV9ldmVudFF1ZXVlOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90828</attachid>
            <date>2011-04-22 18:51:40 -0700</date>
            <delta_ts>2011-04-22 19:27:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57789-20110422185139.patch</filename>
            <type>text/plain</type>
            <size>31566</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQ3MDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MzUzMTVhMjUyMWQ3Njdm
MmMxMjVkYzc5NmQ2MWFhNDRkM2I0OTg2Li5kYWM5ZWRkOTQ0ZDMyMzYxZWZmYjA2MzdkNDBmMGFh
NTMwODdmMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTEtMDQtMjIgIERhdmlk
IEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgZXZlbnRxdWV1ZSBmcm9tIERvY3VtZW50IHRv
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgc28gdGhhdCBpdCBjYW4gYmUgYWNjZXNzZWQgZnJvbSB3
b3JrZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
Nzc4OQorCisJRXh0cmFjdCBpbnRlcmZhY2UgZnJvbSBFdmVudFF1ZXVlIGFuZCBjcmVhdGUgdHdv
IG5ldyBzdWJjbGFzc2VzOgorCURvY3VtZW50RXZlbnRRdWV1ZSBhbmQgV29ya2VyRXZlbnRRdWV1
ZS4gIERvY3VtZW50RXZlbnRRdWV1ZQorCWFkb3B0cyBtb3N0IG9mIHRoZSBpbXBsZW1lbnRhdGlv
biBvZiB0aGUgY3VycmVudCBFdmVudFF1ZXVlLgorCVdvcmtlckV2ZW50UXVldWUgcG9zdHMgdGFz
a3MgdG8gaXRzIHRocmVhZCdzIG1lc3NhZ2UgbG9vcC4KKworICAgICAgICBObyBuZXcgdGVzdHMu
IChPT1BTISkKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmVucXVldWVXaW5kb3dFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5xdWV1
ZURvY3VtZW50RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmV2ZW50UXVldWUp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmRvY3VtZW50RXZlbnRRdWV1ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkRGlzcGF0Y2hTY3JvbGxFdmVudFN5
bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlVGltZXI6
OkRvY3VtZW50RXZlbnRRdWV1ZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZl
bnRRdWV1ZVRpbWVyOjpmaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVl
dWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OkRvY3Vt
ZW50RXZlbnRRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6On5E
b2N1bWVudEV2ZW50UXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVl
OjplbnF1ZXVlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjpl
bnF1ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
RXZlbnRRdWV1ZTo6Y2FuY2VsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVu
dFF1ZXVlOjpjYW5jZWxRdWV1ZWRFdmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRF
dmVudFF1ZXVlOjpwZW5kaW5nRXZlbnRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50RXZlbnRRdWV1ZTo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50
RXZlbnRRdWV1ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5o
LgorICAgICAgICAqIGRvbS9FdmVudFF1ZXVlLmg6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFF1
ZXVlOjp+RXZlbnRRdWV1ZSk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aDoKKyAgICAgICAgKiBkb20vV29ya2VyRXZlbnRRdWV1ZS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckV2ZW50UXVldWU6OldvcmtlckV2ZW50UXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnREaXNwYXRjaGVyVGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0
Y2hlclRhc2s6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnREaXNwYXRj
aGVyVGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnREaXNwYXRjaGVy
VGFzazo6RXZlbnREaXNwYXRjaGVyVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJFdmVu
dFF1ZXVlOjplbnF1ZXVlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1
ZTo6Y2FuY2VsRXZlbnQpOgorICAgICAgICAqIGRvbS9Xb3JrZXJFdmVudFF1ZXVlLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmguCisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZW5kU2Ny
b2xsRXZlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsVG8pOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnNjcm9s
bFRvKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlOjpjbG9zZSk6CisgICAgICAgICogc3RvcmFnZS9JREJSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmFib3J0KToKKyAgICAgICAgKiBzdG9y
YWdlL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjplbnF1ZXVlRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0OjpXb3JrZXJDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OmV2ZW50UXVldWUpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyQ29udGV4dC5oOgorCiAyMDExLTA0LTE5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbmllbCBCYXRlcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCAwYmRiMDkwYjE0MWE0ZDUwZTkxNTVmNDIyM2Y4OGY0NjcwZDBmZDFlLi41N2E1ZGYz
NGI0OGQwN2Y5NWI4Nzk0NGEyMGIyODRmOTYzZjFlYTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0y
NDUxLDYgKzI0NTEsOCBAQAogICAgICAgICAgICAgJ2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50
LmNwcCcsCiAgICAgICAgICAgICAnZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuaCcsCiAgICAg
ICAgICAgICAnZG9tL0RvY3VtZW50LmNwcCcsCisgICAgICAgICAgICAnZG9tL0RvY3VtZW50RXZl
bnRRdWV1ZS5jcHAnLAorICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuaCcsCiAg
ICAgICAgICAgICAnZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwJywKICAgICAgICAgICAgICdkb20v
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCcsCiAgICAgICAgICAgICAnZG9tL0RvY3VtZW50
T3JkZXJlZE1hcC5jcHAnLApAQCAtMjQ3NCw3ICsyNDc2LDYgQEAKICAgICAgICAgICAgICdkb20v
RXZlbnREaXNwYXRjaGVyLmgnLAogICAgICAgICAgICAgJ2RvbS9FdmVudEV4Y2VwdGlvbi5oJywK
ICAgICAgICAgICAgICdkb20vRXZlbnROYW1lcy5jcHAnLAotICAgICAgICAgICAgJ2RvbS9FdmVu
dFF1ZXVlLmNwcCcsCiAgICAgICAgICAgICAnZG9tL0V2ZW50UXVldWUuaCcsCiAgICAgICAgICAg
ICAnZG9tL0V2ZW50VGFyZ2V0LmNwcCcsCiAgICAgICAgICAgICAnZG9tL0V4Y2VwdGlvbkJhc2Uu
Y3BwJywKQEAgLTI1OTQsNiArMjU5NSw4IEBACiAgICAgICAgICAgICAnZG9tL1doZWVsRXZlbnQu
aCcsCiAgICAgICAgICAgICAnZG9tL1dpbmRvd0V2ZW50Q29udGV4dC5jcHAnLAogICAgICAgICAg
ICAgJ2RvbS9XaW5kb3dFdmVudENvbnRleHQuaCcsCisgICAgICAgICAgICAnZG9tL1dvcmtlckV2
ZW50UXVldWUuY3BwJywKKyAgICAgICAgICAgICdkb20vV29ya2VyRXZlbnRRdWV1ZS5oJywKICAg
ICAgICAgICAgICdkb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwJywKICAgICAgICAgICAgICdkb20v
WE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCcsCiAgICAgICAgICAgICAnZG9tL1hNTERvY3Vt
ZW50UGFyc2VyUXQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDRiZmI3ZTI4OTgz
NDc4MzI4YThmMzcwZjdjMWQ0NmY4NmUxM2VjMDcuLjVhZmIwZDAyMDNmM2RjZWFkZTVjZmJlMWY2
Yzg5NTBjNzFiOWU1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTAsNiArNTAsNyBA
QAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRldmljZU1vdGlvbkV2ZW50Lmgi
CiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25FdmVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50
RXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJE
b2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgpA
QCAtNjIsNyArNjMsNiBAQAogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkV2
ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiRXZlbnRR
dWV1ZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGb2N1c0NvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCIKQEAgLTQxNiw3ICs0
MTYsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmws
IGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpCiAgICAgLCBtX3VzZXNWaWV3U291cmNlU3R5bGVz
KGZhbHNlKQogICAgICwgbV9zYXdFbGVtZW50c0luS25vd25OYW1lc3BhY2VzKGZhbHNlKQogICAg
ICwgbV91c2luZ0dlb2xvY2F0aW9uKGZhbHNlKQotICAgICwgbV9ldmVudFF1ZXVlKEV2ZW50UXVl
dWU6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fZG9jdW1lbnRFdmVudFF1ZXVlKERvY3VtZW50RXZl
bnRRdWV1ZTo6Y3JlYXRlKHRoaXMpKQogI2lmIEVOQUJMRShXTUwpCiAgICAgLCBtX2NvbnRhaW5z
V01MQ29udGVudChmYWxzZSkKICNlbmRpZgpAQCAtMTcwOSw3ICsxNzA5LDcgQEAgdm9pZCBEb2N1
bWVudDo6ZGV0YWNoKCkKIAogICAgIGNsZWFyQVhPYmplY3RDYWNoZSgpOwogICAgIHN0b3BBY3Rp
dmVET01PYmplY3RzKCk7Ci0gICAgbV9ldmVudFF1ZXVlLT5jYW5jZWxRdWV1ZWRFdmVudHMoKTsK
KyAgICBtX2RvY3VtZW50RXZlbnRRdWV1ZS0+Y2FuY2VsUXVldWVkRXZlbnRzKCk7CiAKICNpZiBF
TkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAgICAgLy8gRklYTUU6IGNvbnNpZGVyIHVz
aW5nIEFjdGl2ZURPTU9iamVjdC4KQEAgLTM0ODYsMTMgKzM0ODYsMTMgQEAgdm9pZCBEb2N1bWVu
dDo6ZGlzcGF0Y2hXaW5kb3dMb2FkRXZlbnQoKQogdm9pZCBEb2N1bWVudDo6ZW5xdWV1ZVdpbmRv
d0V2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewogICAgIGV2ZW50LT5zZXRUYXJnZXQo
ZG9tV2luZG93KCkpOwotICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KGV2ZW50KTsKKyAg
ICBtX2RvY3VtZW50RXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KGV2ZW50KTsKIH0KIAogdm9pZCBE
b2N1bWVudDo6ZW5xdWV1ZURvY3VtZW50RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiB7
CiAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKLSAgICBtX2V2ZW50UXVldWUtPmVucXVldWVF
dmVudChldmVudCk7CisgICAgbV9kb2N1bWVudEV2ZW50UXVldWUtPmVucXVldWVFdmVudChldmVu
dCk7CiB9CiAKIFBhc3NSZWZQdHI8RXZlbnQ+IERvY3VtZW50OjpjcmVhdGVFdmVudChjb25zdCBT
dHJpbmcmIGV2ZW50VHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC01MDA1LDQgKzUwMDUsOSBA
QCBQYXNzUmVmUHRyPFRvdWNoTGlzdD4gRG9jdW1lbnQ6OmNyZWF0ZVRvdWNoTGlzdChFeGNlcHRp
b25Db2RlJikgY29uc3QKIH0KICNlbmRpZgogCitFdmVudFF1ZXVlKiBEb2N1bWVudDo6ZXZlbnRR
dWV1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZG9jdW1lbnRFdmVudFF1ZXVlLmdldCgpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDE0NTlj
OTI1YzkwMmI2YmIyMzJmMmU1MjcwOTM3NmRjNGQ3NTZhZWQuLmRiMjIwZDlkZDA2YzY3ODk1YjMy
MjJhOWZjNWMzZTAwZTNlYzViYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC02NSw2ICs2NSw3
IEBAIGNsYXNzIERPTVNlbGVjdGlvbjsKIGNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIERhdGFiYXNl
OwogY2xhc3MgRGF0YWJhc2VUaHJlYWQ7CitjbGFzcyBEb2N1bWVudEV2ZW50UXVldWU7CiBjbGFz
cyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXI7CkBAIC03NSw3ICs3Niw2IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBFbnRpdHlSZWZlcmVuY2U7CiBjbGFzcyBFdmVudDsKIGNsYXNzIEV2ZW50TGlzdGVuZXI7Ci1j
bGFzcyBFdmVudFF1ZXVlOwogY2xhc3MgRm9ybUFzc29jaWF0ZWRFbGVtZW50OwogY2xhc3MgRnJh
bWU7CiBjbGFzcyBGcmFtZVZpZXc7CkBAIC0xMDM0LDcgKzEwMzQsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBlbnF1ZXVlUGFnZXNob3dFdmVudChQYWdlc2hvd0V2ZW50UGVyc2lzdGVuY2UpOwogICAg
IHZvaWQgZW5xdWV1ZUhhc2hjaGFuZ2VFdmVudChjb25zdCBTdHJpbmcmIG9sZFVSTCwgY29uc3Qg
U3RyaW5nJiBuZXdVUkwpOwogICAgIHZvaWQgZW5xdWV1ZVBvcHN0YXRlRXZlbnQoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0KTsKLSAgICBFdmVudFF1ZXVlKiBl
dmVudFF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFF1ZXVlLmdldCgpOyB9CisgICAgRG9j
dW1lbnRFdmVudFF1ZXVlKiBkb2N1bWVudEV2ZW50UXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rv
Y3VtZW50RXZlbnRRdWV1ZS5nZXQoKTsgfQorICAgIHZpcnR1YWwgRXZlbnRRdWV1ZSogZXZlbnRR
dWV1ZSgpIGNvbnN0OwogCiAgICAgdm9pZCBhZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIoTWVkaWFD
YW5TdGFydExpc3RlbmVyKik7CiAgICAgdm9pZCByZW1vdmVNZWRpYUNhblN0YXJ0TGlzdGVuZXIo
TWVkaWFDYW5TdGFydExpc3RlbmVyKik7CkBAIC0xMzQ5LDcgKzEzNTAsNyBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBtX3VzaW5nR2VvbG9jYXRpb247CiAgICAgCi0gICAgUmVmUHRyPEV2ZW50UXVl
dWU+IG1fZXZlbnRRdWV1ZTsKKyAgICBSZWZQdHI8RG9jdW1lbnRFdmVudFF1ZXVlPiBtX2RvY3Vt
ZW50RXZlbnRRdWV1ZTsKIAogI2lmIEVOQUJMRShXTUwpCiAgICAgYm9vbCBtX2NvbnRhaW5zV01M
Q29udGVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVl
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWZjZmNhZjk0MWFlN2YwYzRkNjg2ZDI5NzU4OGQ2ZTAzY2JiZTRhYgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCkBAIC0w
LDAgKzEsMTQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRG9jdW1lbnRFdmVudFF1ZXVlLmgiCisKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNs
dWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgorI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgorI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTdXNwZW5kYWJsZVRpbWVyLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK3N0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGREaXNw
YXRjaFNjcm9sbEV2ZW50U3luY2hyb25vdXNseShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAg
QVNTRVJUX0FSRyhkb2N1bWVudCwgZG9jdW1lbnQpOworICAgIHJldHVybiBhcHBsaWNhdGlvbklz
U2FmYXJpKCkgJiYgKGRvY3VtZW50LT51cmwoKS5wcm90b2NvbElzKCJmZWVkIikgfHwgZG9jdW1l
bnQtPnVybCgpLnByb3RvY29sSXMoImZlZWRzIikpOworfQorCitjbGFzcyBEb2N1bWVudEV2ZW50
UXVldWVUaW1lciA6IHB1YmxpYyBTdXNwZW5kYWJsZVRpbWVyIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShEb2N1bWVudEV2ZW50UXVldWVUaW1lcik7CitwdWJsaWM6CisgICAgRG9jdW1lbnRF
dmVudFF1ZXVlVGltZXIoRG9jdW1lbnRFdmVudFF1ZXVlKiBldmVudFF1ZXVlLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgICAgICA6IFN1c3BlbmRhYmxlVGltZXIoY29udGV4
dCkKKyAgICAgICAgLCBtX2V2ZW50UXVldWUoZXZlbnRRdWV1ZSkgeyB9CisKK3ByaXZhdGU6Cisg
ICAgdmlydHVhbCB2b2lkIGZpcmVkKCkgeyBtX2V2ZW50UXVldWUtPnBlbmRpbmdFdmVudFRpbWVy
RmlyZWQoKTsgfQorICAgIERvY3VtZW50RXZlbnRRdWV1ZSogbV9ldmVudFF1ZXVlOworfTsKKwor
UGFzc1JlZlB0cjxEb2N1bWVudEV2ZW50UXVldWU+IERvY3VtZW50RXZlbnRRdWV1ZTo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBEb2N1bWVudEV2ZW50UXVldWUoY29udGV4dCkpOworfQorCitEb2N1bWVudEV2ZW50UXVl
dWU6OkRvY3VtZW50RXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQor
ICAgIDogbV9wZW5kaW5nRXZlbnRUaW1lcihhZG9wdFB0cihuZXcgRG9jdW1lbnRFdmVudFF1ZXVl
VGltZXIodGhpcywgY29udGV4dCkpKQoreworfQorCitEb2N1bWVudEV2ZW50UXVldWU6On5Eb2N1
bWVudEV2ZW50UXVldWUoKQoreworfQorCit2b2lkIERvY3VtZW50RXZlbnRRdWV1ZTo6ZW5xdWV1
ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQoreworICAgIEFTU0VSVChldmVudC0+dGFy
Z2V0KCkpOworICAgIGJvb2wgd2FzQWRkZWQgPSBtX3F1ZXVlZEV2ZW50cy5hZGQoZXZlbnQpLnNl
Y29uZDsKKyAgICBBU1NFUlRfVU5VU0VEKHdhc0FkZGVkLCB3YXNBZGRlZCk7IC8vIEl0IHNob3Vs
ZCBub3QgaGF2ZSBhbHJlYWR5IGJlZW4gaW4gdGhlIGxpc3QuCisgICAgCisgICAgaWYgKCFtX3Bl
bmRpbmdFdmVudFRpbWVyLT5pc0FjdGl2ZSgpKQorICAgICAgICBtX3BlbmRpbmdFdmVudFRpbWVy
LT5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgRG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVl
T3JEaXNwYXRjaFNjcm9sbEV2ZW50KFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0LCBTY3JvbGxFdmVu
dFRhcmdldFR5cGUgdGFyZ2V0VHlwZSkKK3sKKyAgICAvLyBQZXIgdGhlIFczQyBDU1NPTSBWaWV3
IE1vZHVsZSwgc2Nyb2xsIGV2ZW50cyBmaXJlZCBhdCB0aGUgZG9jdW1lbnQgc2hvdWxkIGJ1YmJs
ZSwgb3RoZXJzIHNob3VsZCBub3QuCisgICAgYm9vbCBjYW5CdWJibGUgPSB0YXJnZXRUeXBlID09
IFNjcm9sbEV2ZW50RG9jdW1lbnRUYXJnZXQ7CisgICAgUmVmUHRyPEV2ZW50PiBzY3JvbGxFdmVu
dCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNjcm9sbEV2ZW50LCBjYW5CdWJibGUsIGZh
bHNlIC8qIG5vbiBjYW5jZWxsZWFibGUgKi8pOworICAgICAKKyAgICBpZiAoc2hvdWxkRGlzcGF0
Y2hTY3JvbGxFdmVudFN5bmNocm9ub3VzbHkodGFyZ2V0LT5kb2N1bWVudCgpKSkgeworICAgICAg
ICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoc2Nyb2xsRXZlbnQucmVsZWFzZSgpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHMu
YWRkKHRhcmdldC5nZXQoKSkuc2Vjb25kKQorICAgICAgICByZXR1cm47CisKKyAgICBzY3JvbGxF
dmVudC0+c2V0VGFyZ2V0KHRhcmdldCk7CisgICAgZW5xdWV1ZUV2ZW50KHNjcm9sbEV2ZW50LnJl
bGVhc2UoKSk7Cit9CisKK2Jvb2wgRG9jdW1lbnRFdmVudFF1ZXVlOjpjYW5jZWxFdmVudChFdmVu
dCogZXZlbnQpCit7CisgICAgYm9vbCBmb3VuZCA9IG1fcXVldWVkRXZlbnRzLmNvbnRhaW5zKGV2
ZW50KTsKKyAgICBtX3F1ZXVlZEV2ZW50cy5yZW1vdmUoZXZlbnQpOworICAgIGlmIChtX3F1ZXVl
ZEV2ZW50cy5pc0VtcHR5KCkpCisgICAgICAgIG1fcGVuZGluZ0V2ZW50VGltZXItPnN0b3AoKTsK
KyAgICByZXR1cm4gZm91bmQ7Cit9CisKK3ZvaWQgRG9jdW1lbnRFdmVudFF1ZXVlOjpjYW5jZWxR
dWV1ZWRFdmVudHMoKQoreworICAgIG1fcGVuZGluZ0V2ZW50VGltZXItPnN0b3AoKTsKKyAgICBt
X3F1ZXVlZEV2ZW50cy5jbGVhcigpOworfQorCit2b2lkIERvY3VtZW50RXZlbnRRdWV1ZTo6cGVu
ZGluZ0V2ZW50VGltZXJGaXJlZCgpCit7CisgICAgQVNTRVJUKCFtX3BlbmRpbmdFdmVudFRpbWVy
LT5pc0FjdGl2ZSgpKTsKKyAgICBBU1NFUlQoIW1fcXVldWVkRXZlbnRzLmlzRW1wdHkoKSk7CisK
KyAgICBtX25vZGVzV2l0aFF1ZXVlZFNjcm9sbEV2ZW50cy5jbGVhcigpOworCisgICAgLy8gSW5z
ZXJ0IGEgbWFya2VyIGZvciB3aGVyZSB3ZSBzaG91bGQgc3RvcC4KKyAgICBBU1NFUlQoIW1fcXVl
dWVkRXZlbnRzLmNvbnRhaW5zKDApKTsKKyAgICBib29sIHdhc0FkZGVkID0gbV9xdWV1ZWRFdmVu
dHMuYWRkKDApLnNlY29uZDsKKyAgICBBU1NFUlRfVU5VU0VEKHdhc0FkZGVkLCB3YXNBZGRlZCk7
IC8vIEl0IHNob3VsZCBub3QgaGF2ZSBhbHJlYWR5IGJlZW4gaW4gdGhlIGxpc3QuCisKKyAgICBS
ZWZQdHI8RG9jdW1lbnRFdmVudFF1ZXVlPiBwcm90ZWN0b3IodGhpcyk7CisKKyAgICB3aGlsZSAo
IW1fcXVldWVkRXZlbnRzLmlzRW1wdHkoKSkgeworICAgICAgICBMaXN0SGFzaFNldDxSZWZQdHI8
RXZlbnQ+ID46Oml0ZXJhdG9yIGl0ZXIgPSBtX3F1ZXVlZEV2ZW50cy5iZWdpbigpOworICAgICAg
ICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gKml0ZXI7CisgICAgICAgIG1fcXVldWVkRXZlbnRzLnJl
bW92ZShpdGVyKTsKKyAgICAgICAgaWYgKCFldmVudCkKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBkaXNwYXRjaEV2ZW50KGV2ZW50LmdldCgpKTsKKyAgICB9Cit9CisKK3ZvaWQgRG9jdW1l
bnRFdmVudFF1ZXVlOjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQorewor
ICAgIEV2ZW50VGFyZ2V0KiBldmVudFRhcmdldCA9IGV2ZW50LT50YXJnZXQoKTsKKyAgICBpZiAo
ZXZlbnRUYXJnZXQtPnRvRE9NV2luZG93KCkpCisgICAgICAgIGV2ZW50VGFyZ2V0LT50b0RPTVdp
bmRvdygpLT5kaXNwYXRjaEV2ZW50KGV2ZW50LCAwKTsKKyAgICBlbHNlCisgICAgICAgIGV2ZW50
VGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50RXZlbnRRdWV1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkN2Y4ZjlmNzIzZGRhZmE1MjY4MGM2OGZl
NWZkNjM4YzYyNzY5ODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRFdmVudFF1ZXVlLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lmbmRl
ZiBEb2N1bWVudEV2ZW50UXVldWVfaAorI2RlZmluZSBEb2N1bWVudEV2ZW50UXVldWVfaAorCisj
aW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVk
ZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIERvY3VtZW50RXZlbnRRdWV1ZVRpbWVyOworY2xhc3MgRXZlbnQ7
CitjbGFzcyBOb2RlOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworY2xhc3MgRG9j
dW1lbnRFdmVudFF1ZXVlIDogcHVibGljIEV2ZW50UXVldWUgeworcHVibGljOgorICAgIGVudW0g
U2Nyb2xsRXZlbnRUYXJnZXRUeXBlIHsKKyAgICAgICAgU2Nyb2xsRXZlbnREb2N1bWVudFRhcmdl
dCwKKyAgICAgICAgU2Nyb2xsRXZlbnRFbGVtZW50VGFyZ2V0CisgICAgfTsKKworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPERvY3VtZW50RXZlbnRRdWV1ZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKTsKKyAgICB+RG9jdW1lbnRFdmVudFF1ZXVlKCk7CisKKyAgICB2b2lkIGVucXVldWVF
dmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CisgICAgdm9pZCBlbnF1ZXVlT3JEaXNwYXRjaFNjcm9s
bEV2ZW50KFBhc3NSZWZQdHI8Tm9kZT4sIFNjcm9sbEV2ZW50VGFyZ2V0VHlwZSk7CisgICAgYm9v
bCBjYW5jZWxFdmVudChFdmVudCopOworICAgIHZvaWQgY2FuY2VsUXVldWVkRXZlbnRzKCk7CisK
K3ByaXZhdGU6CisgICAgZXhwbGljaXQgRG9jdW1lbnRFdmVudFF1ZXVlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKKworICAgIHZvaWQgcGVuZGluZ0V2ZW50VGltZXJGaXJlZCgpOworICAgIHZv
aWQgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CisKKyAgICBPd25QdHI8RG9jdW1l
bnRFdmVudFF1ZXVlVGltZXI+IG1fcGVuZGluZ0V2ZW50VGltZXI7CisgICAgTGlzdEhhc2hTZXQ8
UmVmUHRyPEV2ZW50PiA+IG1fcXVldWVkRXZlbnRzOworICAgIEhhc2hTZXQ8Tm9kZSo+IG1fbm9k
ZXNXaXRoUXVldWVkU2Nyb2xsRXZlbnRzOworICAgIAorICAgIGZyaWVuZCBjbGFzcyBEb2N1bWVu
dEV2ZW50UXVldWVUaW1lcjsKK307CisKK30KKworI2VuZGlmIC8vIERvY3VtZW50RXZlbnRRdWV1
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuaAppbmRleCAyY2IzOGY0OTBkMDFmMGM4ZTMwZDcxODk4
NGRmZjFkZGQ3MDQ2MGJjLi4wYjUzYTFkZGE0NmIyZmIxOWNlMjExMmQyNjVlMTk0MGE3NWRjNGI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmgKQEAgLTQyLDMwICs0MiwxMCBAQCBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwogCiBjbGFzcyBFdmVudFF1ZXVlIDogcHVibGljIFJlZkNvdW50
ZWQ8RXZlbnRRdWV1ZT4gewogcHVibGljOgotICAgIGVudW0gU2Nyb2xsRXZlbnRUYXJnZXRUeXBl
IHsKLSAgICAgICAgU2Nyb2xsRXZlbnREb2N1bWVudFRhcmdldCwKLSAgICAgICAgU2Nyb2xsRXZl
bnRFbGVtZW50VGFyZ2V0Ci0gICAgfTsKKyAgICB2aXJ0dWFsIH5FdmVudFF1ZXVlKCkgeyB9CiAK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxFdmVudFF1ZXVlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOwotICAgIH5FdmVudFF1ZXVlKCk7Ci0KLSAgICB2b2lkIGVucXVldWVFdmVudChQ
YXNzUmVmUHRyPEV2ZW50Pik7Ci0gICAgdm9pZCBlbnF1ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50
KFBhc3NSZWZQdHI8Tm9kZT4sIFNjcm9sbEV2ZW50VGFyZ2V0VHlwZSk7Ci0gICAgYm9vbCBjYW5j
ZWxFdmVudChFdmVudCopOwotICAgIHZvaWQgY2FuY2VsUXVldWVkRXZlbnRzKCk7Ci0KLXByaXZh
dGU6Ci0gICAgZXhwbGljaXQgRXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0K
LSAgICB2b2lkIHBlbmRpbmdFdmVudFRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIGRpc3BhdGNoRXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4pOwotCi0gICAgT3duUHRyPEV2ZW50UXVldWVUaW1lcj4gbV9w
ZW5kaW5nRXZlbnRUaW1lcjsKLSAgICBMaXN0SGFzaFNldDxSZWZQdHI8RXZlbnQ+ID4gbV9xdWV1
ZWRFdmVudHM7Ci0gICAgSGFzaFNldDxOb2RlKj4gbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVu
dHM7Ci0gICAgCi0gICAgZnJpZW5kIGNsYXNzIEV2ZW50UXVldWVUaW1lcjsgICAgCisgICAgdmly
dHVhbCB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PikgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBjYW5jZWxFdmVudChFdmVudCopID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IDg0MDc2OTk2ZWFkNzc2MmNhODA0
OTYyZGViN2M1YjdjZDgyYWUyYzMuLjg1YzdiODkwYTFlZTQ5ZTcxYjFkZDNiOTEyOTUyMGRlZWUy
NDhhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApA
QCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICBjbGFzcyBE
T01UaW1lcjsKICAgICBjbGFzcyBFdmVudExpc3RlbmVyOworICAgIGNsYXNzIEV2ZW50UXVldWU7
CiAgICAgY2xhc3MgRXZlbnRUYXJnZXQ7CiAjaWYgRU5BQkxFKEJMT0IpIHx8IEVOQUJMRShGSUxF
X1NZU1RFTSkKICAgICBjbGFzcyBGaWxlVGhyZWFkOwpAQCAtMTU5LDYgKzE2MCw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhZGp1c3RNaW5pbXVtVGltZXJJbnRlcnZhbChk
b3VibGUgb2xkTWluaW11bVRpbWVySW50ZXJ2YWwpOwogICAgICAgICB2aXJ0dWFsIGRvdWJsZSBt
aW5pbXVtVGltZXJJbnRlcnZhbCgpIGNvbnN0OwogCisgICAgICAgIHZpcnR1YWwgRXZlbnRRdWV1
ZSogZXZlbnRRdWV1ZSgpIGNvbnN0ID0gMDsKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgLy8g
RXhwbGljaXRseSBvdmVycmlkZSB0aGUgc2VjdXJpdHkgb3JpZ2luIGZvciB0aGlzIHNjcmlwdCBj
b250ZXh0LgogICAgICAgICAvLyBOb3RlOiBJdCBpcyBkYW5nZXJvdXMgdG8gY2hhbmdlIHRoZSBz
ZWN1cml0eSBvcmlnaW4gb2YgYSBzY3JpcHQgY29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1dvcmtlckV2ZW50UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1dvcmtl
ckV2ZW50UXVldWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2NzJiZmY1YzUxOTQ5YTczODA1ZjdlYjgwYWZi
OGQ3ZGUwMTk1ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV29ya2Vy
RXZlbnRRdWV1ZS5jcHAKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2VyRXZlbnRRdWV1ZS5oIgorCisjaW5jbHVkZSAiRE9N
V2luZG93LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlN1c3BlbmRhYmxl
VGltZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFdvcmtlckV2ZW50
UXVldWU+IFdvcmtlckV2ZW50UXVldWU6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV29ya2VyRXZlbnRRdWV1ZShjb250
ZXh0KSk7Cit9CisKK1dvcmtlckV2ZW50UXVldWU6OldvcmtlckV2ZW50UXVldWUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChj
b250ZXh0KQoreworfQorCitjbGFzcyBFdmVudERpc3BhdGNoZXJUYXNrIDogcHVibGljIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRy
PEV2ZW50RGlzcGF0Y2hlclRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRXZlbnREaXNwYXRjaGVyVGFzayhldmVu
dCkpOworICAgIH0KKyAgICB2b2lkIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZl
bnQpCisgICAgeworICAgICAgICBFdmVudFRhcmdldCogZXZlbnRUYXJnZXQgPSBldmVudC0+dGFy
Z2V0KCk7CisgICAgICAgIGlmIChldmVudFRhcmdldC0+dG9ET01XaW5kb3coKSkKKyAgICAgICAg
ICAgIGV2ZW50VGFyZ2V0LT50b0RPTVdpbmRvdygpLT5kaXNwYXRjaEV2ZW50KGV2ZW50LCAwKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXZlbnRUYXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZl
bnQpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopCisgICAgeworICAgICAgICBkaXNwYXRjaEV2ZW50KG1fZXZlbnQpOworICAgIH0K
K3ByaXZhdGU6CisgICAgRXZlbnREaXNwYXRjaGVyVGFzayhQYXNzUmVmUHRyPEV2ZW50PiBldmVu
dCkKKyAgICAgIDogbV9ldmVudChldmVudCkKKyAgICB7CisgICAgfQorICAgIFJlZlB0cjxFdmVu
dD4gbV9ldmVudDsKK307CisKK3ZvaWQgV29ya2VyRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KFBh
c3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQoreworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
cG9zdFRhc2soRXZlbnREaXNwYXRjaGVyVGFzazo6Y3JlYXRlKGV2ZW50KSk7Cit9CisKK2Jvb2wg
V29ya2VyRXZlbnRRdWV1ZTo6Y2FuY2VsRXZlbnQoRXZlbnQqIGV2ZW50KQoreworICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgYnkgcGx1bWJpbmcgdGhyb3VnaCB0byBNZXNzYWdlUXVldWU6OnJlbW92
ZUlmLgorICAgIHJldHVybiB0cnVlOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vV29ya2VyRXZlbnRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1dvcmtlckV2ZW50
UXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hYjYyNmRjNmU0ZmNiMWNiNzczMDhlNDUyZTc1ZDhlODYyNDEx
ZjhkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1dvcmtlckV2ZW50UXVl
dWUuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgV29ya2VyRXZlbnRR
dWV1ZV9oCisjZGVmaW5lIFdvcmtlckV2ZW50UXVldWVfaAorCisjaW5jbHVkZSAiRXZlbnRRdWV1
ZS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRXZlbnQ7CitjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OworCitjbGFzcyBXb3JrZXJFdmVudFF1ZXVlIDogcHVibGljIEV2ZW50UXVldWUg
eworcHVibGljOgorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V29ya2VyRXZlbnRRdWV1ZT4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBh
c3NSZWZQdHI8RXZlbnQ+KTsKKyAgICBib29sIGNhbmNlbEV2ZW50KEV2ZW50Kik7CisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgV29ya2VyRXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
OworfTsKKworfQorCisjZW5kaWYgLy8gV29ya2VyRXZlbnRRdWV1ZV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZjFmM2M5ZjFmZDVkMThlYjdiNjUzZDcwMjk5MDM3MWNj
MDYwYzBlOS4uNDdkZGEzMmM1YWFiNzhmNDAyNWY3NDQ2ZDcwMzdlZjE2MTM0NDAxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVk
ZSAiQ3Vyc29yLmgiCiAjaW5jbHVkZSAiQ3Vyc29yTGlzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiRHJhZ0NvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0j
aW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKQEAgLTI5ODksNyAr
Mjk4OSw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpzZW5kU2Nyb2xsRXZlbnQoKQogewogICAgIHNl
dEZyYW1lV2FzU2Nyb2xsZWRCeVVzZXIoKTsKICAgICBpZiAobV9mcmFtZS0+dmlldygpICYmIG1f
ZnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmV2ZW50UXVl
dWUoKS0+ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChtX2ZyYW1lLT5kb2N1bWVudCgpLCBF
dmVudFF1ZXVlOjpTY3JvbGxFdmVudERvY3VtZW50VGFyZ2V0KTsKKyAgICAgICAgbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFdmVudFF1ZXVlKCktPmVucXVldWVPckRpc3BhdGNoU2Nyb2xs
RXZlbnQobV9mcmFtZS0+ZG9jdW1lbnQoKSwgRG9jdW1lbnRFdmVudFF1ZXVlOjpTY3JvbGxFdmVu
dERvY3VtZW50VGFyZ2V0KTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OnNldEZyYW1lV2FzU2Ny
b2xsZWRCeVVzZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5k
ZXggNTdmMzA1Y2I1ZWJmY2I1MjhiOWZlNzYwODUzM2NkNWVhZmZjMDU2NC4uYTc3NmQ1MzdiNDUx
Y2Q2OWI3Y2VlNTUxNWEyOWMyMTVkMjY4M2Q1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCkBAIC01MCw4ICs1MCw4IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxl
Y3Rvci5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5j
bHVkZSAiRG9jdW1lbnRFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCi0j
aW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgogI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgpAQCAtMTQwNCw3
ICsxNDA0LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsVG8oaW50IHgsIGludCB5KQogICAg
ICAgICByZW5kZXJlcigpLT5yZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwg
cmVjdEZvclJlcGFpbnQpOwogCiAgICAgLy8gU2NoZWR1bGUgdGhlIHNjcm9sbCBET00gZXZlbnQu
Ci0gICAgcmVuZGVyZXIoKS0+bm9kZSgpLT5kb2N1bWVudCgpLT5ldmVudFF1ZXVlKCktPmVucXVl
dWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQocmVuZGVyZXIoKS0+bm9kZSgpLCBFdmVudFF1ZXVlOjpT
Y3JvbGxFdmVudEVsZW1lbnRUYXJnZXQpOworICAgIHJlbmRlcmVyKCktPm5vZGUoKS0+ZG9jdW1l
bnQoKS0+ZG9jdW1lbnRFdmVudFF1ZXVlKCktPmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQo
cmVuZGVyZXIoKS0+bm9kZSgpLCBEb2N1bWVudEV2ZW50UXVldWU6OlNjcm9sbEV2ZW50RWxlbWVu
dFRhcmdldCk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29u
c3QgSW50UmVjdCYgcmVjdCwgYm9vbCBzY3JvbGxUb0FuY2hvciwgY29uc3QgU2Nyb2xsQWxpZ25t
ZW50JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25ZKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IGQ3Nzk4ZDU3NTMzNDlmOTA5ZTU4
NmJlYzFkMTM0NzJjMDIzZTdhNzcuLmUwMTE1MTMwMzljODk1NTUwNTUzN2Q0Y2M1NDkzNjBjZGE1
ZmU0ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAg
LTMzLDggKzMzLDggQEAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQ1NT
U3R5bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1l
bnRFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCi0jaW5jbHVkZSAiRXZl
bnRRdWV1ZS5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCkBAIC02MTMsNyArNjEzLDcgQEAgdm9pZCBSZW5k
ZXJMaXN0Qm94OjpzY3JvbGxUbyhpbnQgbmV3T2Zmc2V0KQogCiAgICAgbV9pbmRleE9mZnNldCA9
IG5ld09mZnNldDsKICAgICByZXBhaW50KCk7Ci0gICAgbm9kZSgpLT5kb2N1bWVudCgpLT5ldmVu
dFF1ZXVlKCktPmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQobm9kZSgpLCBFdmVudFF1ZXVl
OjpTY3JvbGxFdmVudEVsZW1lbnRUYXJnZXQpOworICAgIG5vZGUoKS0+ZG9jdW1lbnQoKS0+ZG9j
dW1lbnRFdmVudFF1ZXVlKCktPmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQobm9kZSgpLCBE
b2N1bWVudEV2ZW50UXVldWU6OlNjcm9sbEV2ZW50RWxlbWVudFRhcmdldCk7CiB9CiAKIGludCBS
ZW5kZXJMaXN0Qm94OjppdGVtSGVpZ2h0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJE
YXRhYmFzZS5jcHAKaW5kZXggZDU0Yjk2OWExY2Y2ZWU2MWE0NmI3MDQzY2NjZDFjMGMyYzExYzY2
My4uMzY1ZjI3NzI3OTE1NzlkNTE1MjA1ZDQxOGQ2OTQxNzVhMGMwYmU1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKQEAgLTE0NSw4ICsxNDUsNyBAQCB2b2lkIElEQkRh
dGFiYXNlOjpjbG9zZSgpCiAgICAgaWYgKG1fbm9OZXdUcmFuc2FjdGlvbnMpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQo
KSk7Ci0gICAgRXZlbnRRdWV1ZSogZXZlbnRRdWV1ZSA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4o
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+ZXZlbnRRdWV1ZSgpOworICAgIEV2ZW50UXVldWUq
IGV2ZW50UXVldWUgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV2ZW50UXVldWUoKTsKICAg
ICAvLyBSZW1vdmUgYW55IHBlbmRpbmcgdmVyc2lvbmNoYW5nZSBldmVudHMgc2NoZWR1bGVkIHRv
IGZpcmUgb24gdGhpcwogICAgIC8vIGNvbm5lY3Rpb24uIFRoZXkgd291bGQgaGF2ZSBiZWVuIHNj
aGVkdWxlZCBieSB0aGUgYmFja2VuZCB3aGVuIGFub3RoZXIKICAgICAvLyBjb25uZWN0aW9uIGNh
bGxlZCBzZXRWZXJzaW9uLCBidXQgdGhlIGZyb250ZW5kIGNvbm5lY3Rpb24gaXMgYmVpbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCmluZGV4IGY4ZDgxOGEzNTFlYTE3MzhhOGRl
MWFkZTgwMTI2MGNiYzg0NzBmODQuLjNlMzFjOGJmYjM4NmI1ZjJiNTY0ZDA5ODc0MWFiY2Y2NTJi
OGFhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcApAQCAtMTUwLDggKzE1
MCw3IEBAIHZvaWQgSURCUmVxdWVzdDo6YWJvcnQoKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKTsKLSAg
ICBFdmVudFF1ZXVlKiBldmVudFF1ZXVlID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpLT5ldmVudFF1ZXVlKCk7CisgICAgRXZlbnRRdWV1ZSogZXZlbnRR
dWV1ZSA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZXZlbnRRdWV1ZSgpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9lbnF1ZXVlZEV2ZW50cy5zaXplKCk7ICsraSkgewogICAgICAg
ICBib29sIHJlbW92ZWQgPSBldmVudFF1ZXVlLT5jYW5jZWxFdmVudChtX2VucXVldWVkRXZlbnRz
W2ldLmdldCgpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCByZW1vdmVkKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggNzEwYmI3NjE3MzFl
NmJhNGIwMGQ2ZWVlZWE2MjM1ZTgyMDE5ZGNhMS4uZTk0NmNjZWY1ZjVhMTQ1OWI0NjEzNWU5N2U0
ODc3OTFkNGUzNTg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFu
c2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5j
cHAKQEAgLTE4Niw4ICsxODYsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjplbnF1ZXVlRXZlbnQo
UGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmlzRG9jdW1lbnQoKSk7Ci0gICAgRXZlbnRRdWV1ZSogZXZlbnRRdWV1ZSA9IHN0YXRpY19j
YXN0PERvY3VtZW50Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+ZXZlbnRRdWV1ZSgpOwor
ICAgIEV2ZW50UXVldWUqIGV2ZW50UXVldWUgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV2
ZW50UXVldWUoKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwogICAgIGV2ZW50UXVldWUt
PmVucXVldWVFdmVudChldmVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250
ZXh0LmNwcAppbmRleCBjMmZjZTVjNjlkM2VkYWEwYjE0MWZkNDBmODM3OGIyNzQwNTczYTUyLi5l
YWFjNGUzN2Q0M2MzMDgwMDdkOTAwY2NkNDY5NWJiMmJkZjM2ODQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJT
Y3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIldvcmtlckV2ZW50UXVldWUuaCIKICNpbmNsdWRl
ICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyTG9jYXRpb24u
aCIKICNpbmNsdWRlICJXb3JrZXJOYXZpZ2F0b3IuaCIKQEAgLTExMSw2ICsxMTIsNyBAQCBXb3Jr
ZXJDb250ZXh0OjpXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQsIFdvcmtlclRocgogICAgICwgbV93b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKG5l
dyBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKHRoaXMpKQogI2VuZGlmCiAgICAgLCBtX2Nsb3Np
bmcoZmFsc2UpCisgICAgLCBtX3dvcmtlckV2ZW50UXVldWUoV29ya2VyRXZlbnRRdWV1ZTo6Y3Jl
YXRlKHRoaXMpKQogewogICAgIHNldFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUodXJsKSk7CiB9CkBAIC00ODQsNiArNDg2LDExIEBAIHZvaWQgV29ya2VyQ29udGV4dDo6bm90
aWZ5T2JzZXJ2ZXJzT2ZTdG9wKCkKICAgICB9CiB9CiAKK0V2ZW50UXVldWUqIFdvcmtlckNvbnRl
eHQ6OmV2ZW50UXVldWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3dvcmtlckV2ZW50UXVldWUu
Z2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShX
T1JLRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAppbmRleCAwNzM3Njc5
MjkzZjExMzFkODZkYWUxOTIyZjMxYmVhMjMzNTQwNzgwLi4yYTRjYWFkOTFjNjYwY2MxYWI4OTNi
MjVjYWFkNjM0ZDFjZTA2MDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQu
aApAQCAtNTYsNiArNTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRmlsZVN5
c3RlbUNhbGxiYWNrOwogICAgIGNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlcjsKICAgICBjbGFzcyBT
Y2hlZHVsZWRBY3Rpb247CisgICAgY2xhc3MgV29ya2VyRXZlbnRRdWV1ZTsKICAgICBjbGFzcyBX
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOwogICAgIGNsYXNzIFdvcmtlckxvY2F0aW9uOwogICAg
IGNsYXNzIFdvcmtlck5hdmlnYXRvcjsKQEAgLTE2Nyw2ICsxNjgsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZvaWQgdW5yZWdpc3Rlck9ic2VydmVyKE9ic2VydmVyKik7CiAgICAg
ICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzT2ZTdG9wKCk7CiAKKyAgICAgICAgRXZlbnRRdWV1ZSog
ZXZlbnRRdWV1ZSgpIGNvbnN0OworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBXb3JrZXJDb250
ZXh0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmLCBXb3JrZXJUaHJlYWQqKTsKIApAQCAtMjA3
LDYgKzIxMCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRXZlbnRUYXJnZXREYXRh
IG1fZXZlbnRUYXJnZXREYXRhOwogCiAgICAgICAgIEhhc2hTZXQ8T2JzZXJ2ZXIqPiBtX3dvcmtl
ck9ic2VydmVyczsKKworICAgICAgICBSZWZQdHI8V29ya2VyRXZlbnRRdWV1ZT4gbV93b3JrZXJF
dmVudFF1ZXVlOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90831</attachid>
            <date>2011-04-22 19:27:11 -0700</date>
            <delta_ts>2011-04-22 19:50:47 -0700</delta_ts>
            <desc>fix style and build problems</desc>
            <filename>bug-57789-20110422192710.patch</filename>
            <type>text/plain</type>
            <size>26150</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQ3MDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MzUzMTVhMjUyMWQ3Njdm
MmMxMjVkYzc5NmQ2MWFhNDRkM2I0OTg2Li40NGUxMzBiNWQyNDQ0OWMzNTI1ZGY4ZjkyZmQzNmY2
ZmVlYTRmNjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTEtMDQtMjIgIERhdmlk
IEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgZXZlbnRxdWV1ZSBmcm9tIERvY3VtZW50IHRv
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgc28gdGhhdCBpdCBjYW4gYmUgYWNjZXNzZWQgZnJvbSB3
b3JrZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
Nzc4OQorCisgICAgICAgIEV4dHJhY3QgaW50ZXJmYWNlIGZyb20gRXZlbnRRdWV1ZSBhbmQgY3Jl
YXRlIHR3byBuZXcgc3ViY2xhc3NlczoKKyAgICAgICAgRG9jdW1lbnRFdmVudFF1ZXVlIGFuZCBX
b3JrZXJFdmVudFF1ZXVlLiAgRG9jdW1lbnRFdmVudFF1ZXVlCisgICAgICAgIGFkb3B0cyBtb3N0
IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgY3VycmVudCBFdmVudFF1ZXVlLgorICAgICAg
ICBXb3JrZXJFdmVudFF1ZXVlIHBvc3RzIHRhc2tzIHRvIGl0cyB0aHJlYWQncyBtZXNzYWdlIGxv
b3AuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV0YWNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjplbnF1ZXVlV2luZG93RXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVucXVldWVEb2N1bWVudEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpldmVudFF1ZXVlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpkb2N1bWVudEV2ZW50UXVldWUpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnNob3VsZERpc3BhdGNoU2Nyb2xsRXZlbnRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50RXZlbnRRdWV1ZVRpbWVyOjpEb2N1bWVudEV2ZW50UXVldWVUaW1lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWVUaW1lcjo6ZmlyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjpEb2N1bWVudEV2ZW50UXVldWUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjp+RG9jdW1lbnRFdmVudFF1ZXVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmNhbmNlbEV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6Y2FuY2VsUXVldWVkRXZlbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6cGVuZGluZ0V2ZW50VGltZXJG
aXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmRpc3BhdGNoRXZl
bnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuaC4KKyAgICAgICAgKiBkb20vRXZlbnRRdWV1ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRRdWV1ZTo6fkV2ZW50UXVldWUpOgorICAgICAgICAq
IGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICogZG9tL1dvcmtlckV2ZW50
UXVldWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJFdmVudFF1ZXVlOjpXb3JrZXJFdmVudFF1
ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hlclRhc2s6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudERpc3BhdGNoZXJUYXNrOjpkaXNwYXRjaEV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hlclRhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hlclRhc2s6OkV2ZW50RGlzcGF0Y2hlclRhc2spOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmNhbmNlbEV2ZW50KToKKyAgICAgICAgKiBk
b20vV29ya2VyRXZlbnRRdWV1ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRRdWV1ZS5oLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VuZFNjcm9sbEV2ZW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9s
bFRvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpzY3JvbGxUbyk6CisgICAgICAgICogc3RvcmFnZS9JREJE
YXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y2xvc2UpOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1
ZXN0OjphYm9ydCk6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4
dDo6V29ya2VyQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0OjpldmVu
dFF1ZXVlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuaDoKKwogMjAxMS0wNC0x
OSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYW5pZWwgQmF0ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMGJkYjA5MGIxNDFhNGQ1MGU5MTU1
ZjQyMjNmODhmNDY3MGQwZmQxZS4uNTdhNWRmMzRiNDhkMDdmOTViODc5NDRhMjBiMjg0Zjk2M2Yx
ZWEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjQ1MSw2ICsyNDUxLDggQEAKICAgICAgICAgICAg
ICdkb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9EZXZp
Y2VPcmllbnRhdGlvbkV2ZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudC5jcHAnLAor
ICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwJywKKyAgICAgICAgICAgICdk
b20vRG9jdW1lbnRFdmVudFF1ZXVlLmgnLAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudEZyYWdt
ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAn
LAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwJywKQEAgLTI0NzQsNyAr
MjQ3Niw2IEBACiAgICAgICAgICAgICAnZG9tL0V2ZW50RGlzcGF0Y2hlci5oJywKICAgICAgICAg
ICAgICdkb20vRXZlbnRFeGNlcHRpb24uaCcsCiAgICAgICAgICAgICAnZG9tL0V2ZW50TmFtZXMu
Y3BwJywKLSAgICAgICAgICAgICdkb20vRXZlbnRRdWV1ZS5jcHAnLAogICAgICAgICAgICAgJ2Rv
bS9FdmVudFF1ZXVlLmgnLAogICAgICAgICAgICAgJ2RvbS9FdmVudFRhcmdldC5jcHAnLAogICAg
ICAgICAgICAgJ2RvbS9FeGNlcHRpb25CYXNlLmNwcCcsCkBAIC0yNTk0LDYgKzI1OTUsOCBAQAog
ICAgICAgICAgICAgJ2RvbS9XaGVlbEV2ZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9XaW5kb3dF
dmVudENvbnRleHQuY3BwJywKICAgICAgICAgICAgICdkb20vV2luZG93RXZlbnRDb250ZXh0Lmgn
LAorICAgICAgICAgICAgJ2RvbS9Xb3JrZXJFdmVudFF1ZXVlLmNwcCcsCisgICAgICAgICAgICAn
ZG9tL1dvcmtlckV2ZW50UXVldWUuaCcsCiAgICAgICAgICAgICAnZG9tL1hNTERvY3VtZW50UGFy
c2VyLmNwcCcsCiAgICAgICAgICAgICAnZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAn
LAogICAgICAgICAgICAgJ2RvbS9YTUxEb2N1bWVudFBhcnNlclF0LmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCA0YmZiN2UyODk4MzQ3ODMyOGE4ZjM3MGY3YzFkNDZmODZlMTNlYzA3
Li41YWZiMGQwMjAzZjNkY2VhZGU1Y2ZiZTFmNmM4OTUwYzcxYjllNTAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNp
bmNsdWRlICJEZXZpY2VNb3Rpb25FdmVudC5oIgogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9u
RXZlbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJEb2N1
bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCIKQEAgLTYyLDcgKzYzLDYgQEAKICNpbmNsdWRlICJF
dmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgotI2luY2x1ZGUgIkV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9ybUFzc29j
aWF0ZWRFbGVtZW50LmgiCkBAIC00MTYsNyArNDE2LDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZy
YW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQog
ICAgICwgbV91c2VzVmlld1NvdXJjZVN0eWxlcyhmYWxzZSkKICAgICAsIG1fc2F3RWxlbWVudHNJ
bktub3duTmFtZXNwYWNlcyhmYWxzZSkKICAgICAsIG1fdXNpbmdHZW9sb2NhdGlvbihmYWxzZSkK
LSAgICAsIG1fZXZlbnRRdWV1ZShFdmVudFF1ZXVlOjpjcmVhdGUodGhpcykpCisgICAgLCBtX2Rv
Y3VtZW50RXZlbnRRdWV1ZShEb2N1bWVudEV2ZW50UXVldWU6OmNyZWF0ZSh0aGlzKSkKICNpZiBF
TkFCTEUoV01MKQogICAgICwgbV9jb250YWluc1dNTENvbnRlbnQoZmFsc2UpCiAjZW5kaWYKQEAg
LTE3MDksNyArMTcwOSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRldGFjaCgpCiAKICAgICBjbGVhckFY
T2JqZWN0Q2FjaGUoKTsKICAgICBzdG9wQWN0aXZlRE9NT2JqZWN0cygpOwotICAgIG1fZXZlbnRR
dWV1ZS0+Y2FuY2VsUXVldWVkRXZlbnRzKCk7CisgICAgbV9kb2N1bWVudEV2ZW50UXVldWUtPmNh
bmNlbFF1ZXVlZEV2ZW50cygpOwogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
KQogICAgIC8vIEZJWE1FOiBjb25zaWRlciB1c2luZyBBY3RpdmVET01PYmplY3QuCkBAIC0zNDg2
LDEzICszNDg2LDEzIEBAIHZvaWQgRG9jdW1lbnQ6OmRpc3BhdGNoV2luZG93TG9hZEV2ZW50KCkK
IHZvaWQgRG9jdW1lbnQ6OmVucXVldWVXaW5kb3dFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVu
dCkKIHsKICAgICBldmVudC0+c2V0VGFyZ2V0KGRvbVdpbmRvdygpKTsKLSAgICBtX2V2ZW50UXVl
dWUtPmVucXVldWVFdmVudChldmVudCk7CisgICAgbV9kb2N1bWVudEV2ZW50UXVldWUtPmVucXVl
dWVFdmVudChldmVudCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmVucXVldWVEb2N1bWVudEV2ZW50
KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7
Ci0gICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQpOworICAgIG1fZG9jdW1lbnRF
dmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQpOwogfQogCiBQYXNzUmVmUHRyPEV2ZW50PiBE
b2N1bWVudDo6Y3JlYXRlRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudFR5cGUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQpAQCAtNTAwNSw0ICs1MDA1LDkgQEAgUGFzc1JlZlB0cjxUb3VjaExpc3Q+IERvY3Vt
ZW50OjpjcmVhdGVUb3VjaExpc3QoRXhjZXB0aW9uQ29kZSYpIGNvbnN0CiB9CiAjZW5kaWYKIAor
RXZlbnRRdWV1ZSogRG9jdW1lbnQ6OmV2ZW50UXVldWUoKSBjb25zdAoreworICAgIHJldHVybiBt
X2RvY3VtZW50RXZlbnRRdWV1ZS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAppbmRleCAxNDU5YzkyNWM5MDJiNmJiMjMyZjJlNTI3MDkzNzZkYzRk
NzU2YWVkLi5kYjIyMGQ5ZGQwNmM2Nzg5NWIzMjIyYTlmYzVjM2UwMGUzZWM1YmFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaApAQCAtNjUsNiArNjUsNyBAQCBjbGFzcyBET01TZWxlY3Rpb247CiBjbGFz
cyBET01XaW5kb3c7CiBjbGFzcyBEYXRhYmFzZTsKIGNsYXNzIERhdGFiYXNlVGhyZWFkOworY2xh
c3MgRG9jdW1lbnRFdmVudFF1ZXVlOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERv
Y3VtZW50TG9hZGVyOwogY2xhc3MgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOwpAQCAtNzUsNyAr
NzYsNiBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgRW50aXR5UmVmZXJlbmNlOwogY2xhc3MgRXZl
bnQ7CiBjbGFzcyBFdmVudExpc3RlbmVyOwotY2xhc3MgRXZlbnRRdWV1ZTsKIGNsYXNzIEZvcm1B
c3NvY2lhdGVkRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVWaWV3OwpAQCAtMTAz
NCw3ICsxMDM0LDggQEAgcHVibGljOgogICAgIHZvaWQgZW5xdWV1ZVBhZ2VzaG93RXZlbnQoUGFn
ZXNob3dFdmVudFBlcnNpc3RlbmNlKTsKICAgICB2b2lkIGVucXVldWVIYXNoY2hhbmdlRXZlbnQo
Y29uc3QgU3RyaW5nJiBvbGRVUkwsIGNvbnN0IFN0cmluZyYgbmV3VVJMKTsKICAgICB2b2lkIGVu
cXVldWVQb3BzdGF0ZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0
ZU9iamVjdCk7Ci0gICAgRXZlbnRRdWV1ZSogZXZlbnRRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZXZlbnRRdWV1ZS5nZXQoKTsgfQorICAgIERvY3VtZW50RXZlbnRRdWV1ZSogZG9jdW1lbnRFdmVu
dFF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudEV2ZW50UXVldWUuZ2V0KCk7IH0KKyAg
ICB2aXJ0dWFsIEV2ZW50UXVldWUqIGV2ZW50UXVldWUoKSBjb25zdDsKIAogICAgIHZvaWQgYWRk
TWVkaWFDYW5TdGFydExpc3RlbmVyKE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciopOwogICAgIHZvaWQg
cmVtb3ZlTWVkaWFDYW5TdGFydExpc3RlbmVyKE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciopOwpAQCAt
MTM0OSw3ICsxMzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV91c2luZ0dlb2xvY2F0aW9u
OwogICAgIAotICAgIFJlZlB0cjxFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7CisgICAgUmVmUHRy
PERvY3VtZW50RXZlbnRRdWV1ZT4gbV9kb2N1bWVudEV2ZW50UXVldWU7CiAKICNpZiBFTkFCTEUo
V01MKQogICAgIGJvb2wgbV9jb250YWluc1dNTENvbnRlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRFdmVudFF1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ3ZjhmOWY3MjNkZGFmYTUyNjgwYzY4ZmU1
ZmQ2MzhjNjI3Njk4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudEV2ZW50UXVldWUuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVm
IERvY3VtZW50RXZlbnRRdWV1ZV9oCisjZGVmaW5lIERvY3VtZW50RXZlbnRRdWV1ZV9oCisKKyNp
bmNsdWRlICJFdmVudFF1ZXVlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRl
IDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgRG9jdW1lbnRFdmVudFF1ZXVlVGltZXI7CitjbGFzcyBFdmVudDsK
K2NsYXNzIE5vZGU7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFzcyBEb2N1
bWVudEV2ZW50UXVldWUgOiBwdWJsaWMgRXZlbnRRdWV1ZSB7CitwdWJsaWM6CisgICAgZW51bSBT
Y3JvbGxFdmVudFRhcmdldFR5cGUgeworICAgICAgICBTY3JvbGxFdmVudERvY3VtZW50VGFyZ2V0
LAorICAgICAgICBTY3JvbGxFdmVudEVsZW1lbnRUYXJnZXQKKyAgICB9OworCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8RG9jdW1lbnRFdmVudFF1ZXVlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopOworICAgIH5Eb2N1bWVudEV2ZW50UXVldWUoKTsKKworICAgIHZvaWQgZW5xdWV1ZUV2
ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKKyAgICB2b2lkIGVucXVldWVPckRpc3BhdGNoU2Nyb2xs
RXZlbnQoUGFzc1JlZlB0cjxOb2RlPiwgU2Nyb2xsRXZlbnRUYXJnZXRUeXBlKTsKKyAgICBib29s
IGNhbmNlbEV2ZW50KEV2ZW50Kik7CisgICAgdm9pZCBjYW5jZWxRdWV1ZWRFdmVudHMoKTsKKwor
cHJpdmF0ZToKKyAgICBleHBsaWNpdCBEb2N1bWVudEV2ZW50UXVldWUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOworCisgICAgdm9pZCBwZW5kaW5nRXZlbnRUaW1lckZpcmVkKCk7CisgICAgdm9p
ZCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKKworICAgIE93blB0cjxEb2N1bWVu
dEV2ZW50UXVldWVUaW1lcj4gbV9wZW5kaW5nRXZlbnRUaW1lcjsKKyAgICBMaXN0SGFzaFNldDxS
ZWZQdHI8RXZlbnQ+ID4gbV9xdWV1ZWRFdmVudHM7CisgICAgSGFzaFNldDxOb2RlKj4gbV9ub2Rl
c1dpdGhRdWV1ZWRTY3JvbGxFdmVudHM7CisgICAgCisgICAgZnJpZW5kIGNsYXNzIERvY3VtZW50
RXZlbnRRdWV1ZVRpbWVyOworfTsKKworfQorCisjZW5kaWYgLy8gRG9jdW1lbnRFdmVudFF1ZXVl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5oCmluZGV4IDJjYjM4ZjQ5MGQwMWYwYzhlMzBkNzE4OTg0
ZGZmMWRkZDcwNDYwYmMuLjBiNTNhMWRkYTQ2YjJmYjE5Y2UyMTEyZDI2NWUxOTQwYTc1ZGM0YjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuaApAQCAtNDIsMzAgKzQyLDEwIEBAIGNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIEV2ZW50UXVldWUgOiBwdWJsaWMgUmVmQ291bnRl
ZDxFdmVudFF1ZXVlPiB7CiBwdWJsaWM6Ci0gICAgZW51bSBTY3JvbGxFdmVudFRhcmdldFR5cGUg
ewotICAgICAgICBTY3JvbGxFdmVudERvY3VtZW50VGFyZ2V0LAotICAgICAgICBTY3JvbGxFdmVu
dEVsZW1lbnRUYXJnZXQKLSAgICB9OworICAgIHZpcnR1YWwgfkV2ZW50UXVldWUoKSB7IH0KIAot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50UXVldWU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7Ci0gICAgfkV2ZW50UXVldWUoKTsKLQotICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBh
c3NSZWZQdHI8RXZlbnQ+KTsKLSAgICB2b2lkIGVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQo
UGFzc1JlZlB0cjxOb2RlPiwgU2Nyb2xsRXZlbnRUYXJnZXRUeXBlKTsKLSAgICBib29sIGNhbmNl
bEV2ZW50KEV2ZW50Kik7Ci0gICAgdm9pZCBjYW5jZWxRdWV1ZWRFdmVudHMoKTsKLQotcHJpdmF0
ZToKLSAgICBleHBsaWNpdCBFdmVudFF1ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLQot
ICAgIHZvaWQgcGVuZGluZ0V2ZW50VGltZXJGaXJlZCgpOwotICAgIHZvaWQgZGlzcGF0Y2hFdmVu
dChQYXNzUmVmUHRyPEV2ZW50Pik7Ci0KLSAgICBPd25QdHI8RXZlbnRRdWV1ZVRpbWVyPiBtX3Bl
bmRpbmdFdmVudFRpbWVyOwotICAgIExpc3RIYXNoU2V0PFJlZlB0cjxFdmVudD4gPiBtX3F1ZXVl
ZEV2ZW50czsKLSAgICBIYXNoU2V0PE5vZGUqPiBtX25vZGVzV2l0aFF1ZXVlZFNjcm9sbEV2ZW50
czsKLSAgICAKLSAgICBmcmllbmQgY2xhc3MgRXZlbnRRdWV1ZVRpbWVyOyAgICAKKyAgICB2aXJ0
dWFsIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KSA9IDA7CisgICAgdmlydHVh
bCBib29sIGNhbmNlbEV2ZW50KEV2ZW50KikgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggODQwNzY5OTZlYWQ3NzYyY2E4MDQ5
NjJkZWI3YzViN2NkODJhZTJjMy4uODVjN2I4OTBhMWVlNDllNzFiMWRkM2I5MTI5NTIwZGVlZTI0
OGE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBA
IC01NSw2ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgIGNsYXNzIERP
TVRpbWVyOwogICAgIGNsYXNzIEV2ZW50TGlzdGVuZXI7CisgICAgY2xhc3MgRXZlbnRRdWV1ZTsK
ICAgICBjbGFzcyBFdmVudFRhcmdldDsKICNpZiBFTkFCTEUoQkxPQikgfHwgRU5BQkxFKEZJTEVf
U1lTVEVNKQogICAgIGNsYXNzIEZpbGVUaHJlYWQ7CkBAIC0xNTksNiArMTYwLDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGFkanVzdE1pbmltdW1UaW1lckludGVydmFsKGRv
dWJsZSBvbGRNaW5pbXVtVGltZXJJbnRlcnZhbCk7CiAgICAgICAgIHZpcnR1YWwgZG91YmxlIG1p
bmltdW1UaW1lckludGVydmFsKCkgY29uc3Q7CiAKKyAgICAgICAgdmlydHVhbCBFdmVudFF1ZXVl
KiBldmVudFF1ZXVlKCkgY29uc3QgPSAwOworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICAvLyBF
eHBsaWNpdGx5IG92ZXJyaWRlIHRoZSBzZWN1cml0eSBvcmlnaW4gZm9yIHRoaXMgc2NyaXB0IGNv
bnRleHQuCiAgICAgICAgIC8vIE5vdGU6IEl0IGlzIGRhbmdlcm91cyB0byBjaGFuZ2UgdGhlIHNl
Y3VyaXR5IG9yaWdpbiBvZiBhIHNjcmlwdCBjb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vV29ya2VyRXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV29ya2Vy
RXZlbnRRdWV1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY3MmJmZjVjNTE5NDlhNzM4MDVmN2ViODBhZmI4
ZDdkZTAxOTVlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Xb3JrZXJF
dmVudFF1ZXVlLmNwcApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXb3JrZXJFdmVudFF1ZXVlLmgiCisKKyNpbmNsdWRlICJET01X
aW5kb3cuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU3VzcGVuZGFibGVU
aW1lci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8V29ya2VyRXZlbnRR
dWV1ZT4gV29ya2VyRXZlbnRRdWV1ZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXb3JrZXJFdmVudFF1ZXVlKGNvbnRl
eHQpKTsKK30KKworV29ya2VyRXZlbnRRdWV1ZTo6V29ya2VyRXZlbnRRdWV1ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNv
bnRleHQpCit7Cit9CisKK2NsYXNzIEV2ZW50RGlzcGF0Y2hlclRhc2sgOiBwdWJsaWMgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8
RXZlbnREaXNwYXRjaGVyVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFdmVudERpc3BhdGNoZXJUYXNrKGV2ZW50
KSk7CisgICAgfQorICAgIHZvaWQgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVu
dCkKKyAgICB7CisgICAgICAgIEV2ZW50VGFyZ2V0KiBldmVudFRhcmdldCA9IGV2ZW50LT50YXJn
ZXQoKTsKKyAgICAgICAgaWYgKGV2ZW50VGFyZ2V0LT50b0RPTVdpbmRvdygpKQorICAgICAgICAg
ICAgZXZlbnRUYXJnZXQtPnRvRE9NV2luZG93KCktPmRpc3BhdGNoRXZlbnQoZXZlbnQsIDApOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBldmVudFRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVu
dCk7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KikKKyAgICB7CisgICAgICAgIGRpc3BhdGNoRXZlbnQobV9ldmVudCk7CisgICAgfQor
cHJpdmF0ZToKKyAgICBFdmVudERpc3BhdGNoZXJUYXNrKFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50
KQorICAgICAgOiBtX2V2ZW50KGV2ZW50KQorICAgIHsKKyAgICB9CisgICAgUmVmUHRyPEV2ZW50
PiBtX2V2ZW50OworfTsKKwordm9pZCBXb3JrZXJFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4gZXZlbnQpCit7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5w
b3N0VGFzayhFdmVudERpc3BhdGNoZXJUYXNrOjpjcmVhdGUoZXZlbnQpKTsKK30KKworYm9vbCBX
b3JrZXJFdmVudFF1ZXVlOjpjYW5jZWxFdmVudChFdmVudCogZXZlbnQpCit7CisgICAgLy8gRklY
TUU6IEltcGxlbWVudCBieSBwbHVtYmluZyB0aHJvdWdoIHRvIE1lc3NhZ2VRdWV1ZTo6cmVtb3Zl
SWYuCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Xb3JrZXJFdmVudFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vV29ya2VyRXZlbnRR
dWV1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFiNjI2ZGM2ZTRmY2IxY2I3NzMwOGU0NTJlNzVkOGU4NjI0MTFm
OGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV29ya2VyRXZlbnRRdWV1
ZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBXb3JrZXJFdmVudFF1
ZXVlX2gKKyNkZWZpbmUgV29ya2VyRXZlbnRRdWV1ZV9oCisKKyNpbmNsdWRlICJFdmVudFF1ZXVl
LmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBFdmVudDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CisKK2NsYXNzIFdvcmtlckV2ZW50UXVldWUgOiBwdWJsaWMgRXZlbnRRdWV1ZSB7
CitwdWJsaWM6CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXb3JrZXJFdmVudFF1ZXVlPiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCisgICAgdm9pZCBlbnF1ZXVlRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4pOworICAgIGJvb2wgY2FuY2VsRXZlbnQoRXZlbnQqKTsKKworcHJpdmF0
ZToKKyAgICBleHBsaWNpdCBXb3JrZXJFdmVudFF1ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
Cit9OworCit9CisKKyNlbmRpZiAvLyBXb3JrZXJFdmVudFF1ZXVlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAppbmRleCBmMWYzYzlmMWZkNWQxOGViN2I2NTNkNzAyOTkwMzcxY2Mw
NjBjMGU5Li40N2RkYTMyYzVhYWI3OGY0MDI1Zjc0NDZkNzAzN2VmMTYxMzQ0MDEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbmNsdWRl
ICJDdXJzb3IuaCIKICNpbmNsdWRlICJDdXJzb3JMaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJEcmFnQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNp
bmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgpAQCAtMjk4OSw3ICsy
OTg5LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnNlbmRTY3JvbGxFdmVudCgpCiB7CiAgICAgc2V0
RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpOwogICAgIGlmIChtX2ZyYW1lLT52aWV3KCkgJiYgbV9m
cmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZXZlbnRRdWV1
ZSgpLT5lbnF1ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KG1fZnJhbWUtPmRvY3VtZW50KCksIEV2
ZW50UXVldWU6OlNjcm9sbEV2ZW50RG9jdW1lbnRUYXJnZXQpOworICAgICAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5kb2N1bWVudEV2ZW50UXVldWUoKS0+ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxF
dmVudChtX2ZyYW1lLT5kb2N1bWVudCgpLCBEb2N1bWVudEV2ZW50UXVldWU6OlNjcm9sbEV2ZW50
RG9jdW1lbnRUYXJnZXQpOwogfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6c2V0RnJhbWVXYXNTY3Jv
bGxlZEJ5VXNlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRl
eCA1N2YzMDVjYjVlYmZjYjUyOGI5ZmU3NjA4NTMzY2Q1ZWFmZmMwNTY0Li5hNzc2ZDUzN2I0NTFj
ZDY5YjdjZWU1NTE1YTI5YzIxNWQyNjgzZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKQEAgLTUwLDggKzUwLDggQEAKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVj
dG9yLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJEb2N1bWVudEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKLSNp
bmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludDNELmgiCiAjaW5jbHVk
ZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCkBAIC0xNDA0LDcg
KzE0MDQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxUbyhpbnQgeCwgaW50IHkpCiAgICAg
ICAgIHJlbmRlcmVyKCktPnJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBy
ZWN0Rm9yUmVwYWludCk7CiAKICAgICAvLyBTY2hlZHVsZSB0aGUgc2Nyb2xsIERPTSBldmVudC4K
LSAgICByZW5kZXJlcigpLT5ub2RlKCktPmRvY3VtZW50KCktPmV2ZW50UXVldWUoKS0+ZW5xdWV1
ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChyZW5kZXJlcigpLT5ub2RlKCksIEV2ZW50UXVldWU6OlNj
cm9sbEV2ZW50RWxlbWVudFRhcmdldCk7CisgICAgcmVuZGVyZXIoKS0+bm9kZSgpLT5kb2N1bWVu
dCgpLT5kb2N1bWVudEV2ZW50UXVldWUoKS0+ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChy
ZW5kZXJlcigpLT5ub2RlKCksIERvY3VtZW50RXZlbnRRdWV1ZTo6U2Nyb2xsRXZlbnRFbGVtZW50
VGFyZ2V0KTsKIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZShjb25z
dCBJbnRSZWN0JiByZWN0LCBib29sIHNjcm9sbFRvQW5jaG9yLCBjb25zdCBTY3JvbGxBbGlnbm1l
bnQmIGFsaWduWCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggZDc3OThkNTc1MzM0OWY5MDllNTg2
YmVjMWQxMzQ3MmMwMjNlN2E3Ny4uZTAxMTUxMzAzOWM4OTU1NTA1NTM3ZDRjYzU0OTM2MGNkYTVm
ZTRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAt
MzMsOCArMzMsOCBAQAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJDU1NT
dHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVu
dEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKLSNpbmNsdWRlICJFdmVu
dFF1ZXVlLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKQEAgLTYxMyw3ICs2MTMsNyBAQCB2b2lkIFJlbmRl
ckxpc3RCb3g6OnNjcm9sbFRvKGludCBuZXdPZmZzZXQpCiAKICAgICBtX2luZGV4T2Zmc2V0ID0g
bmV3T2Zmc2V0OwogICAgIHJlcGFpbnQoKTsKLSAgICBub2RlKCktPmRvY3VtZW50KCktPmV2ZW50
UXVldWUoKS0+ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChub2RlKCksIEV2ZW50UXVldWU6
OlNjcm9sbEV2ZW50RWxlbWVudFRhcmdldCk7CisgICAgbm9kZSgpLT5kb2N1bWVudCgpLT5kb2N1
bWVudEV2ZW50UXVldWUoKS0+ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChub2RlKCksIERv
Y3VtZW50RXZlbnRRdWV1ZTo6U2Nyb2xsRXZlbnRFbGVtZW50VGFyZ2V0KTsKIH0KIAogaW50IFJl
bmRlckxpc3RCb3g6Oml0ZW1IZWlnaHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRh
dGFiYXNlLmNwcAppbmRleCBkNTRiOTY5YTFjZjZlZTYxYTQ2YjcwNDNjY2NkMWMwYzJjMTFjNjYz
Li4zNjVmMjc3Mjc5MTU3OWQ1MTUyMDVkNDE4ZDY5NDE3NWEwYzBiZTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcApAQCAtMTQ1LDggKzE0NSw3IEBAIHZvaWQgSURCRGF0
YWJhc2U6OmNsb3NlKCkKICAgICBpZiAobV9ub05ld1RyYW5zYWN0aW9ucykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgp
KTsKLSAgICBFdmVudFF1ZXVlKiBldmVudFF1ZXVlID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5ldmVudFF1ZXVlKCk7CisgICAgRXZlbnRRdWV1ZSog
ZXZlbnRRdWV1ZSA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZXZlbnRRdWV1ZSgpOwogICAg
IC8vIFJlbW92ZSBhbnkgcGVuZGluZyB2ZXJzaW9uY2hhbmdlIGV2ZW50cyBzY2hlZHVsZWQgdG8g
ZmlyZSBvbiB0aGlzCiAgICAgLy8gY29ubmVjdGlvbi4gVGhleSB3b3VsZCBoYXZlIGJlZW4gc2No
ZWR1bGVkIGJ5IHRoZSBiYWNrZW5kIHdoZW4gYW5vdGhlcgogICAgIC8vIGNvbm5lY3Rpb24gY2Fs
bGVkIHNldFZlcnNpb24sIGJ1dCB0aGUgZnJvbnRlbmQgY29ubmVjdGlvbiBpcyBiZWluZwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKaW5kZXggZjhkODE4YTM1MWVhMTczOGE4ZGUx
YWRlODAxMjYwY2JjODQ3MGY4NC4uM2UzMWM4YmZiMzg2YjVmMmI1NjRkMDk4NzQxYWJjZjY1MmI4
YWEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCkBAIC0xNTAsOCArMTUw
LDcgQEAgdm9pZCBJREJSZXF1ZXN0OjphYm9ydCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpOwotICAg
IEV2ZW50UXVldWUqIGV2ZW50UXVldWUgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSktPmV2ZW50UXVldWUoKTsKKyAgICBFdmVudFF1ZXVlKiBldmVudFF1
ZXVlID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5ldmVudFF1ZXVlKCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2VucXVldWVkRXZlbnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IGJvb2wgcmVtb3ZlZCA9IGV2ZW50UXVldWUtPmNhbmNlbEV2ZW50KG1fZW5xdWV1ZWRFdmVudHNb
aV0uZ2V0KCkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWQsIHJlbW92ZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA3MTBiYjc2MTczMWU2
YmE0YjAwZDZlZWVlYTYyMzVlODIwMTlkY2ExLi5lOTQ2Y2NlZjVmNWExNDU5YjQ2MTM1ZTk3ZTQ4
Nzc5MWQ0ZTM1ODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5z
YWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNw
cApAQCAtMTg2LDggKzE4Niw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmVucXVldWVFdmVudChQ
YXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+aXNEb2N1bWVudCgpKTsKLSAgICBFdmVudFF1ZXVlKiBldmVudFF1ZXVlID0gc3RhdGljX2Nh
c3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5ldmVudFF1ZXVlKCk7Cisg
ICAgRXZlbnRRdWV1ZSogZXZlbnRRdWV1ZSA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZXZl
bnRRdWV1ZSgpOwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CiAgICAgZXZlbnRRdWV1ZS0+
ZW5xdWV1ZUV2ZW50KGV2ZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRl
eHQuY3BwCmluZGV4IGMyZmNlNWM2OWQzZWRhYTBiMTQxZmQ0MGY4Mzc4YjI3NDA1NzNhNTIuLmVh
YWM0ZTM3ZDQzYzMwODAwN2Q5MDBjY2Q0Njk1YmIyYmRmMzY4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIlNj
cmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiV29ya2VyRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUg
Ildvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrZXJMb2NhdGlvbi5o
IgogI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvci5oIgpAQCAtMTExLDYgKzExMiw3IEBAIFdvcmtl
ckNvbnRleHQ6OldvcmtlckNvbnRleHQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgV29ya2VyVGhyCiAgICAgLCBtX3dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIobmV3
IFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIodGhpcykpCiAjZW5kaWYKICAgICAsIG1fY2xvc2lu
ZyhmYWxzZSkKKyAgICAsIG1fd29ya2VyRXZlbnRRdWV1ZShXb3JrZXJFdmVudFF1ZXVlOjpjcmVh
dGUodGhpcykpCiB7CiAgICAgc2V0U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZSh1cmwpKTsKIH0KQEAgLTQ4NCw2ICs0ODYsMTEgQEAgdm9pZCBXb3JrZXJDb250ZXh0Ojpub3Rp
ZnlPYnNlcnZlcnNPZlN0b3AoKQogICAgIH0KIH0KIAorRXZlbnRRdWV1ZSogV29ya2VyQ29udGV4
dDo6ZXZlbnRRdWV1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd29ya2VyRXZlbnRRdWV1ZS5n
ZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdP
UktFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCmluZGV4IDA3Mzc2Nzky
OTNmMTEzMWQ4NmRhZTE5MjJmMzFiZWEyMzM1NDA3ODAuLjJhNGNhYWQ5MWM2NjBjYzFhYjg5M2Iy
NWNhYWQ2MzRkMWNlMDYwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5o
CkBAIC01Niw2ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBGaWxlU3lz
dGVtQ2FsbGJhY2s7CiAgICAgY2xhc3MgTm90aWZpY2F0aW9uQ2VudGVyOwogICAgIGNsYXNzIFNj
aGVkdWxlZEFjdGlvbjsKKyAgICBjbGFzcyBXb3JrZXJFdmVudFF1ZXVlOwogICAgIGNsYXNzIFdv
cmtlckluc3BlY3RvckNvbnRyb2xsZXI7CiAgICAgY2xhc3MgV29ya2VyTG9jYXRpb247CiAgICAg
Y2xhc3MgV29ya2VyTmF2aWdhdG9yOwpAQCAtMTY3LDYgKzE2OCw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCB1bnJlZ2lzdGVyT2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKICAgICAg
ICAgdm9pZCBub3RpZnlPYnNlcnZlcnNPZlN0b3AoKTsKIAorICAgICAgICBFdmVudFF1ZXVlKiBl
dmVudFF1ZXVlKCkgY29uc3Q7CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFdvcmtlckNvbnRl
eHQoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIFdvcmtlclRocmVhZCopOwogCkBAIC0yMDcs
NiArMjEwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBFdmVudFRhcmdldERhdGEg
bV9ldmVudFRhcmdldERhdGE7CiAKICAgICAgICAgSGFzaFNldDxPYnNlcnZlcio+IG1fd29ya2Vy
T2JzZXJ2ZXJzOworCisgICAgICAgIFJlZlB0cjxXb3JrZXJFdmVudFF1ZXVlPiBtX3dvcmtlckV2
ZW50UXVldWU7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90833</attachid>
            <date>2011-04-22 19:50:47 -0700</date>
            <delta_ts>2011-04-27 20:19:41 -0700</delta_ts>
            <desc>manual upload that includes all files</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>30626</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2MzUzMTVhMjUyMWQ3NjdmMmMxMjVkYzc5NmQ2MWFhNDRkM2I0OTg2Li40
NGUxMzBiNWQyNDQ0OWMzNTI1ZGY4ZjkyZmQzNmY2ZmVlYTRmNjVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNzAgQEAKKzIwMTEtMDQtMjIgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1v
dmUgZXZlbnRxdWV1ZSBmcm9tIERvY3VtZW50IHRvIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgc28g
dGhhdCBpdCBjYW4gYmUgYWNjZXNzZWQgZnJvbSB3b3JrZXJzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Nzc4OQorCisgICAgICAgIEV4dHJhY3QgaW50
ZXJmYWNlIGZyb20gRXZlbnRRdWV1ZSBhbmQgY3JlYXRlIHR3byBuZXcgc3ViY2xhc3NlczoKKyAg
ICAgICAgRG9jdW1lbnRFdmVudFF1ZXVlIGFuZCBXb3JrZXJFdmVudFF1ZXVlLiAgRG9jdW1lbnRF
dmVudFF1ZXVlCisgICAgICAgIGFkb3B0cyBtb3N0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0
aGUgY3VycmVudCBFdmVudFF1ZXVlLgorICAgICAgICBXb3JrZXJFdmVudFF1ZXVlIHBvc3RzIHRh
c2tzIHRvIGl0cyB0aHJlYWQncyBtZXNzYWdlIGxvb3AuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LiAoT09QUyEpCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjplbnF1ZXVlV2luZG93RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVucXVl
dWVEb2N1bWVudEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpldmVudFF1ZXVl
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpkb2N1bWVudEV2ZW50UXVldWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZERpc3BhdGNoU2Nyb2xsRXZlbnRT
eW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZVRpbWVy
OjpEb2N1bWVudEV2ZW50UXVldWVUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2
ZW50UXVldWVUaW1lcjo6ZmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1
ZXVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjpEb2N1
bWVudEV2ZW50UXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjp+
RG9jdW1lbnRFdmVudFF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1
ZTo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6
ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dEV2ZW50UXVldWU6OmNhbmNlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZl
bnRRdWV1ZTo6Y2FuY2VsUXVldWVkRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
RXZlbnRRdWV1ZTo6cGVuZGluZ0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudEV2ZW50UXVldWU6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dEV2ZW50UXVldWUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUu
aC4KKyAgICAgICAgKiBkb20vRXZlbnRRdWV1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRR
dWV1ZTo6fkV2ZW50UXVldWUpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
Lmg6CisgICAgICAgICogZG9tL1dvcmtlckV2ZW50UXVldWUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJFdmVudFF1ZXVlOjpXb3JrZXJFdmVudFF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50RGlzcGF0Y2hlclRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudERpc3Bh
dGNoZXJUYXNrOjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0
Y2hlclRhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hl
clRhc2s6OkV2ZW50RGlzcGF0Y2hlclRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZl
bnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVl
dWU6OmNhbmNlbEV2ZW50KToKKyAgICAgICAgKiBkb20vV29ya2VyRXZlbnRRdWV1ZS5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5oLgorICAgICAgICAqIHBhZ2Uv
RXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VuZFNj
cm9sbEV2ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFRvKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpzY3Jv
bGxUbyk6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjphYm9ydCk6CisgICAgICAgICogc3Rv
cmFnZS9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6V29ya2VyQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJDb250ZXh0OjpldmVudFF1ZXVlKToKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlckNvbnRleHQuaDoKKwogMjAxMS0wNC0xOSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW5pZWwgQmF0ZXMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggMGJkYjA5MGIxNDFhNGQ1MGU5MTU1ZjQyMjNmODhmNDY3MGQwZmQxZS4uNTdhNWRm
MzRiNDhkMDdmOTViODc5NDRhMjBiMjg0Zjk2M2YxZWEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MjQ1MSw2ICsyNDUxLDggQEAKICAgICAgICAgICAgICdkb20vRGV2aWNlT3JpZW50YXRpb25FdmVu
dC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmgnLAogICAg
ICAgICAgICAgJ2RvbS9Eb2N1bWVudC5jcHAnLAorICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudEV2
ZW50UXVldWUuY3BwJywKKyAgICAgICAgICAgICdkb20vRG9jdW1lbnRFdmVudFF1ZXVlLmgnLAog
ICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9t
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVu
dE9yZGVyZWRNYXAuY3BwJywKQEAgLTI0NzQsNyArMjQ3Niw2IEBACiAgICAgICAgICAgICAnZG9t
L0V2ZW50RGlzcGF0Y2hlci5oJywKICAgICAgICAgICAgICdkb20vRXZlbnRFeGNlcHRpb24uaCcs
CiAgICAgICAgICAgICAnZG9tL0V2ZW50TmFtZXMuY3BwJywKLSAgICAgICAgICAgICdkb20vRXZl
bnRRdWV1ZS5jcHAnLAogICAgICAgICAgICAgJ2RvbS9FdmVudFF1ZXVlLmgnLAogICAgICAgICAg
ICAgJ2RvbS9FdmVudFRhcmdldC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9FeGNlcHRpb25CYXNl
LmNwcCcsCkBAIC0yNTk0LDYgKzI1OTUsOCBAQAogICAgICAgICAgICAgJ2RvbS9XaGVlbEV2ZW50
LmgnLAogICAgICAgICAgICAgJ2RvbS9XaW5kb3dFdmVudENvbnRleHQuY3BwJywKICAgICAgICAg
ICAgICdkb20vV2luZG93RXZlbnRDb250ZXh0LmgnLAorICAgICAgICAgICAgJ2RvbS9Xb3JrZXJF
dmVudFF1ZXVlLmNwcCcsCisgICAgICAgICAgICAnZG9tL1dvcmtlckV2ZW50UXVldWUuaCcsCiAg
ICAgICAgICAgICAnZG9tL1hNTERvY3VtZW50UGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAnZG9t
L1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAnLAogICAgICAgICAgICAgJ2RvbS9YTUxEb2N1
bWVudFBhcnNlclF0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA0YmZiN2UyODk4
MzQ3ODMyOGE4ZjM3MGY3YzFkNDZmODZlMTNlYzA3Li41YWZiMGQwMjAzZjNkY2VhZGU1Y2ZiZTFm
NmM4OTUwYzcxYjllNTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUwLDYgKzUwLDcg
QEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEZXZpY2VNb3Rpb25FdmVudC5o
IgogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVu
dEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCIK
QEAgLTYyLDcgKzYzLDYgQEAKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJF
dmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkV2ZW50
UXVldWUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgiCkBAIC00MTYsNyAr
NDE2LDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJs
LCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAgICwgbV91c2VzVmlld1NvdXJjZVN0eWxl
cyhmYWxzZSkKICAgICAsIG1fc2F3RWxlbWVudHNJbktub3duTmFtZXNwYWNlcyhmYWxzZSkKICAg
ICAsIG1fdXNpbmdHZW9sb2NhdGlvbihmYWxzZSkKLSAgICAsIG1fZXZlbnRRdWV1ZShFdmVudFF1
ZXVlOjpjcmVhdGUodGhpcykpCisgICAgLCBtX2RvY3VtZW50RXZlbnRRdWV1ZShEb2N1bWVudEV2
ZW50UXVldWU6OmNyZWF0ZSh0aGlzKSkKICNpZiBFTkFCTEUoV01MKQogICAgICwgbV9jb250YWlu
c1dNTENvbnRlbnQoZmFsc2UpCiAjZW5kaWYKQEAgLTE3MDksNyArMTcwOSw3IEBAIHZvaWQgRG9j
dW1lbnQ6OmRldGFjaCgpCiAKICAgICBjbGVhckFYT2JqZWN0Q2FjaGUoKTsKICAgICBzdG9wQWN0
aXZlRE9NT2JqZWN0cygpOwotICAgIG1fZXZlbnRRdWV1ZS0+Y2FuY2VsUXVldWVkRXZlbnRzKCk7
CisgICAgbV9kb2N1bWVudEV2ZW50UXVldWUtPmNhbmNlbFF1ZXVlZEV2ZW50cygpOwogCiAjaWYg
RU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQogICAgIC8vIEZJWE1FOiBjb25zaWRlciB1
c2luZyBBY3RpdmVET01PYmplY3QuCkBAIC0zNDg2LDEzICszNDg2LDEzIEBAIHZvaWQgRG9jdW1l
bnQ6OmRpc3BhdGNoV2luZG93TG9hZEV2ZW50KCkKIHZvaWQgRG9jdW1lbnQ6OmVucXVldWVXaW5k
b3dFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKICAgICBldmVudC0+c2V0VGFyZ2V0
KGRvbVdpbmRvdygpKTsKLSAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChldmVudCk7Cisg
ICAgbV9kb2N1bWVudEV2ZW50UXVldWUtPmVucXVldWVFdmVudChldmVudCk7CiB9CiAKIHZvaWQg
RG9jdW1lbnQ6OmVucXVldWVEb2N1bWVudEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQog
ewogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7Ci0gICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVl
RXZlbnQoZXZlbnQpOworICAgIG1fZG9jdW1lbnRFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZl
bnQpOwogfQogCiBQYXNzUmVmUHRyPEV2ZW50PiBEb2N1bWVudDo6Y3JlYXRlRXZlbnQoY29uc3Qg
U3RyaW5nJiBldmVudFR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNTAwNSw0ICs1MDA1LDkg
QEAgUGFzc1JlZlB0cjxUb3VjaExpc3Q+IERvY3VtZW50OjpjcmVhdGVUb3VjaExpc3QoRXhjZXB0
aW9uQ29kZSYpIGNvbnN0CiB9CiAjZW5kaWYKIAorRXZlbnRRdWV1ZSogRG9jdW1lbnQ6OmV2ZW50
UXVldWUoKSBjb25zdAoreworICAgIHJldHVybiBtX2RvY3VtZW50RXZlbnRRdWV1ZS5nZXQoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAxNDU5
YzkyNWM5MDJiNmJiMjMyZjJlNTI3MDkzNzZkYzRkNzU2YWVkLi5kYjIyMGQ5ZGQwNmM2Nzg5NWIz
MjIyYTlmYzVjM2UwMGUzZWM1YmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNjUsNiArNjUs
NyBAQCBjbGFzcyBET01TZWxlY3Rpb247CiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBEYXRhYmFz
ZTsKIGNsYXNzIERhdGFiYXNlVGhyZWFkOworY2xhc3MgRG9jdW1lbnRFdmVudFF1ZXVlOwogY2xh
c3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyOwpAQCAtNzUsNyArNzYsNiBAQCBjbGFzcyBFbGVtZW50OwogY2xh
c3MgRW50aXR5UmVmZXJlbmNlOwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBFdmVudExpc3RlbmVyOwot
Y2xhc3MgRXZlbnRRdWV1ZTsKIGNsYXNzIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDsKIGNsYXNzIEZy
YW1lOwogY2xhc3MgRnJhbWVWaWV3OwpAQCAtMTAzNCw3ICsxMDM0LDggQEAgcHVibGljOgogICAg
IHZvaWQgZW5xdWV1ZVBhZ2VzaG93RXZlbnQoUGFnZXNob3dFdmVudFBlcnNpc3RlbmNlKTsKICAg
ICB2b2lkIGVucXVldWVIYXNoY2hhbmdlRXZlbnQoY29uc3QgU3RyaW5nJiBvbGRVUkwsIGNvbnN0
IFN0cmluZyYgbmV3VVJMKTsKICAgICB2b2lkIGVucXVldWVQb3BzdGF0ZUV2ZW50KFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCk7Ci0gICAgRXZlbnRRdWV1ZSog
ZXZlbnRRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRRdWV1ZS5nZXQoKTsgfQorICAgIERv
Y3VtZW50RXZlbnRRdWV1ZSogZG9jdW1lbnRFdmVudFF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9k
b2N1bWVudEV2ZW50UXVldWUuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIEV2ZW50UXVldWUqIGV2ZW50
UXVldWUoKSBjb25zdDsKIAogICAgIHZvaWQgYWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKE1lZGlh
Q2FuU3RhcnRMaXN0ZW5lciopOwogICAgIHZvaWQgcmVtb3ZlTWVkaWFDYW5TdGFydExpc3RlbmVy
KE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciopOwpAQCAtMTM0OSw3ICsxMzUwLDcgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgbV91c2luZ0dlb2xvY2F0aW9uOwogICAgIAotICAgIFJlZlB0cjxFdmVudFF1
ZXVlPiBtX2V2ZW50UXVldWU7CisgICAgUmVmUHRyPERvY3VtZW50RXZlbnRRdWV1ZT4gbV9kb2N1
bWVudEV2ZW50UXVldWU7CiAKICNpZiBFTkFCTEUoV01MKQogICAgIGJvb2wgbV9jb250YWluc1dN
TENvbnRlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcApzaW1pbGFyaXR5IGlu
ZGV4IDc4JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5jcHAKcmVu
YW1lIHRvIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCmluZGV4IDkw
ZjNlNWRlZGM3YzU4ZDlmMDE2MDU1MThhMjE4MDcxMDM3ZjdiOWIuLjFmY2ZjYWY5NDFhZTdmMGM0
ZDY4NmQyOTc1ODhkNmUwM2NiYmU0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVl
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNSw3ICsyNSw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkV2
ZW50UXVldWUuaCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuaCIKIAogI2luY2x1ZGUg
IkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCkBAIC00MywzMyArNDMsMzMgQEAg
c3RhdGljIGlubGluZSBib29sIHNob3VsZERpc3BhdGNoU2Nyb2xsRXZlbnRTeW5jaHJvbm91c2x5
KERvY3VtZW50KiBkb2N1bWVudCkKICAgICByZXR1cm4gYXBwbGljYXRpb25Jc1NhZmFyaSgpICYm
IChkb2N1bWVudC0+dXJsKCkucHJvdG9jb2xJcygiZmVlZCIpIHx8IGRvY3VtZW50LT51cmwoKS5w
cm90b2NvbElzKCJmZWVkcyIpKTsKIH0KIAotY2xhc3MgRXZlbnRRdWV1ZVRpbWVyIDogcHVibGlj
IFN1c3BlbmRhYmxlVGltZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEV2ZW50UXVldWVU
aW1lcik7CitjbGFzcyBEb2N1bWVudEV2ZW50UXVldWVUaW1lciA6IHB1YmxpYyBTdXNwZW5kYWJs
ZVRpbWVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEb2N1bWVudEV2ZW50UXVldWVUaW1l
cik7CiBwdWJsaWM6Ci0gICAgRXZlbnRRdWV1ZVRpbWVyKEV2ZW50UXVldWUqIGV2ZW50UXVldWUs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgRG9jdW1lbnRFdmVudFF1ZXVl
VGltZXIoRG9jdW1lbnRFdmVudFF1ZXVlKiBldmVudFF1ZXVlLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQogICAgICAgICA6IFN1c3BlbmRhYmxlVGltZXIoY29udGV4dCkKICAgICAg
ICAgLCBtX2V2ZW50UXVldWUoZXZlbnRRdWV1ZSkgeyB9CiAKIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIGZpcmVkKCkgeyBtX2V2ZW50UXVldWUtPnBlbmRpbmdFdmVudFRpbWVyRmlyZWQoKTsg
fQotICAgIEV2ZW50UXVldWUqIG1fZXZlbnRRdWV1ZTsgICAgCisgICAgRG9jdW1lbnRFdmVudFF1
ZXVlKiBtX2V2ZW50UXVldWU7CiB9OwogCi1QYXNzUmVmUHRyPEV2ZW50UXVldWU+IEV2ZW50UXVl
dWU6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorUGFzc1JlZlB0cjxE
b2N1bWVudEV2ZW50UXVldWU+IERvY3VtZW50RXZlbnRRdWV1ZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFdmVudFF1
ZXVlKGNvbnRleHQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IERvY3VtZW50RXZlbnRRdWV1
ZShjb250ZXh0KSk7CiB9CiAKLUV2ZW50UXVldWU6OkV2ZW50UXVldWUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKLSAgICA6IG1fcGVuZGluZ0V2ZW50VGltZXIoYWRvcHRQdHIobmV3
IEV2ZW50UXVldWVUaW1lcih0aGlzLCBjb250ZXh0KSkpCitEb2N1bWVudEV2ZW50UXVldWU6OkRv
Y3VtZW50RXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDog
bV9wZW5kaW5nRXZlbnRUaW1lcihhZG9wdFB0cihuZXcgRG9jdW1lbnRFdmVudFF1ZXVlVGltZXIo
dGhpcywgY29udGV4dCkpKQogewogfQogCi1FdmVudFF1ZXVlOjp+RXZlbnRRdWV1ZSgpCitEb2N1
bWVudEV2ZW50UXVldWU6On5Eb2N1bWVudEV2ZW50UXVldWUoKQogewogfQogCi12b2lkIEV2ZW50
UXVldWU6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKK3ZvaWQgRG9jdW1l
bnRFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiB7CiAg
ICAgQVNTRVJUKGV2ZW50LT50YXJnZXQoKSk7CiAgICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVk
RXZlbnRzLmFkZChldmVudCkuc2Vjb25kOwpAQCAtNzksNyArNzksNyBAQCB2b2lkIEV2ZW50UXVl
dWU6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICAgICAgbV9wZW5k
aW5nRXZlbnRUaW1lci0+c3RhcnRPbmVTaG90KDApOwogfQogCi12b2lkIEV2ZW50UXVldWU6OmVu
cXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQsIFNjcm9s
bEV2ZW50VGFyZ2V0VHlwZSB0YXJnZXRUeXBlKQordm9pZCBEb2N1bWVudEV2ZW50UXVldWU6OmVu
cXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQsIFNjcm9s
bEV2ZW50VGFyZ2V0VHlwZSB0YXJnZXRUeXBlKQogewogICAgIC8vIFBlciB0aGUgVzNDIENTU09N
IFZpZXcgTW9kdWxlLCBzY3JvbGwgZXZlbnRzIGZpcmVkIGF0IHRoZSBkb2N1bWVudCBzaG91bGQg
YnViYmxlLCBvdGhlcnMgc2hvdWxkIG5vdC4KICAgICBib29sIGNhbkJ1YmJsZSA9IHRhcmdldFR5
cGUgPT0gU2Nyb2xsRXZlbnREb2N1bWVudFRhcmdldDsKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBF
dmVudFF1ZXVlOjplbnF1ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KFBhc3NSZWZQdHI8Tm9kZT4g
dGFyZ2V0LCBTY3JvbGxFdmUKICAgICBlbnF1ZXVlRXZlbnQoc2Nyb2xsRXZlbnQucmVsZWFzZSgp
KTsKIH0KIAotYm9vbCBFdmVudFF1ZXVlOjpjYW5jZWxFdmVudChFdmVudCogZXZlbnQpCitib29s
IERvY3VtZW50RXZlbnRRdWV1ZTo6Y2FuY2VsRXZlbnQoRXZlbnQqIGV2ZW50KQogewogICAgIGJv
b2wgZm91bmQgPSBtX3F1ZXVlZEV2ZW50cy5jb250YWlucyhldmVudCk7CiAgICAgbV9xdWV1ZWRF
dmVudHMucmVtb3ZlKGV2ZW50KTsKQEAgLTEwNiwxMyArMTA2LDEzIEBAIGJvb2wgRXZlbnRRdWV1
ZTo6Y2FuY2VsRXZlbnQoRXZlbnQqIGV2ZW50KQogICAgIHJldHVybiBmb3VuZDsKIH0KIAotdm9p
ZCBFdmVudFF1ZXVlOjpjYW5jZWxRdWV1ZWRFdmVudHMoKQordm9pZCBEb2N1bWVudEV2ZW50UXVl
dWU6OmNhbmNlbFF1ZXVlZEV2ZW50cygpCiB7CiAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3Rv
cCgpOwogICAgIG1fcXVldWVkRXZlbnRzLmNsZWFyKCk7CiB9CiAKLXZvaWQgRXZlbnRRdWV1ZTo6
cGVuZGluZ0V2ZW50VGltZXJGaXJlZCgpCit2b2lkIERvY3VtZW50RXZlbnRRdWV1ZTo6cGVuZGlu
Z0V2ZW50VGltZXJGaXJlZCgpCiB7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdFdmVudFRpbWVyLT5p
c0FjdGl2ZSgpKTsKICAgICBBU1NFUlQoIW1fcXVldWVkRXZlbnRzLmlzRW1wdHkoKSk7CkBAIC0x
MjQsNyArMTI0LDcgQEAgdm9pZCBFdmVudFF1ZXVlOjpwZW5kaW5nRXZlbnRUaW1lckZpcmVkKCkK
ICAgICBib29sIHdhc0FkZGVkID0gbV9xdWV1ZWRFdmVudHMuYWRkKDApLnNlY29uZDsKICAgICBB
U1NFUlRfVU5VU0VEKHdhc0FkZGVkLCB3YXNBZGRlZCk7IC8vIEl0IHNob3VsZCBub3QgaGF2ZSBh
bHJlYWR5IGJlZW4gaW4gdGhlIGxpc3QuCiAKLSAgICBSZWZQdHI8RXZlbnRRdWV1ZT4gcHJvdGVj
dG9yKHRoaXMpOworICAgIFJlZlB0cjxEb2N1bWVudEV2ZW50UXVldWU+IHByb3RlY3Rvcih0aGlz
KTsKIAogICAgIHdoaWxlICghbV9xdWV1ZWRFdmVudHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIExp
c3RIYXNoU2V0PFJlZlB0cjxFdmVudD4gPjo6aXRlcmF0b3IgaXRlciA9IG1fcXVldWVkRXZlbnRz
LmJlZ2luKCk7CkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBFdmVudFF1ZXVlOjpwZW5kaW5nRXZl
bnRUaW1lckZpcmVkKCkKICAgICB9CiB9CiAKLXZvaWQgRXZlbnRRdWV1ZTo6ZGlzcGF0Y2hFdmVu
dChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKK3ZvaWQgRG9jdW1lbnRFdmVudFF1ZXVlOjpkaXNw
YXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewogICAgIEV2ZW50VGFyZ2V0KiBl
dmVudFRhcmdldCA9IGV2ZW50LT50YXJnZXQoKTsKICAgICBpZiAoZXZlbnRUYXJnZXQtPnRvRE9N
V2luZG93KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1
ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmQ3ZjhmOWY3MjNkZGFmYTUyNjgwYzY4ZmU1ZmQ2MzhjNjI3Njk4NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuaApAQCAtMCwwICsx
LDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIERvY3VtZW50RXZlbnRRdWV1ZV9oCisjZGVm
aW5lIERvY3VtZW50RXZlbnRRdWV1ZV9oCisKKyNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRG9jdW1lbnRF
dmVudFF1ZXVlVGltZXI7CitjbGFzcyBFdmVudDsKK2NsYXNzIE5vZGU7CitjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OworCitjbGFzcyBEb2N1bWVudEV2ZW50UXVldWUgOiBwdWJsaWMgRXZl
bnRRdWV1ZSB7CitwdWJsaWM6CisgICAgZW51bSBTY3JvbGxFdmVudFRhcmdldFR5cGUgeworICAg
ICAgICBTY3JvbGxFdmVudERvY3VtZW50VGFyZ2V0LAorICAgICAgICBTY3JvbGxFdmVudEVsZW1l
bnRUYXJnZXQKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnRFdmVudFF1
ZXVlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIH5Eb2N1bWVudEV2ZW50
UXVldWUoKTsKKworICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKKyAg
ICB2b2lkIGVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiwgU2Ny
b2xsRXZlbnRUYXJnZXRUeXBlKTsKKyAgICBib29sIGNhbmNlbEV2ZW50KEV2ZW50Kik7CisgICAg
dm9pZCBjYW5jZWxRdWV1ZWRFdmVudHMoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEb2N1
bWVudEV2ZW50UXVldWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCisgICAgdm9pZCBwZW5k
aW5nRXZlbnRUaW1lckZpcmVkKCk7CisgICAgdm9pZCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8
RXZlbnQ+KTsKKworICAgIE93blB0cjxEb2N1bWVudEV2ZW50UXVldWVUaW1lcj4gbV9wZW5kaW5n
RXZlbnRUaW1lcjsKKyAgICBMaXN0SGFzaFNldDxSZWZQdHI8RXZlbnQ+ID4gbV9xdWV1ZWRFdmVu
dHM7CisgICAgSGFzaFNldDxOb2RlKj4gbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHM7Cisg
ICAgCisgICAgZnJpZW5kIGNsYXNzIERvY3VtZW50RXZlbnRRdWV1ZVRpbWVyOworfTsKKworfQor
CisjZW5kaWYgLy8gRG9jdW1lbnRFdmVudFF1ZXVlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5oCmlu
ZGV4IDJjYjM4ZjQ5MGQwMWYwYzhlMzBkNzE4OTg0ZGZmMWRkZDcwNDYwYmMuLjBiNTNhMWRkYTQ2
YjJmYjE5Y2UyMTEyZDI2NWUxOTQwYTc1ZGM0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuaApA
QCAtNDIsMzAgKzQyLDEwIEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNz
IEV2ZW50UXVldWUgOiBwdWJsaWMgUmVmQ291bnRlZDxFdmVudFF1ZXVlPiB7CiBwdWJsaWM6Ci0g
ICAgZW51bSBTY3JvbGxFdmVudFRhcmdldFR5cGUgewotICAgICAgICBTY3JvbGxFdmVudERvY3Vt
ZW50VGFyZ2V0LAotICAgICAgICBTY3JvbGxFdmVudEVsZW1lbnRUYXJnZXQKLSAgICB9OworICAg
IHZpcnR1YWwgfkV2ZW50UXVldWUoKSB7IH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50
UXVldWU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0gICAgfkV2ZW50UXVldWUo
KTsKLQotICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKLSAgICB2b2lk
IGVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiwgU2Nyb2xsRXZl
bnRUYXJnZXRUeXBlKTsKLSAgICBib29sIGNhbmNlbEV2ZW50KEV2ZW50Kik7Ci0gICAgdm9pZCBj
YW5jZWxRdWV1ZWRFdmVudHMoKTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBFdmVudFF1ZXVl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLQotICAgIHZvaWQgcGVuZGluZ0V2ZW50VGltZXJG
aXJlZCgpOwotICAgIHZvaWQgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7Ci0KLSAg
ICBPd25QdHI8RXZlbnRRdWV1ZVRpbWVyPiBtX3BlbmRpbmdFdmVudFRpbWVyOwotICAgIExpc3RI
YXNoU2V0PFJlZlB0cjxFdmVudD4gPiBtX3F1ZXVlZEV2ZW50czsKLSAgICBIYXNoU2V0PE5vZGUq
PiBtX25vZGVzV2l0aFF1ZXVlZFNjcm9sbEV2ZW50czsKLSAgICAKLSAgICBmcmllbmQgY2xhc3Mg
RXZlbnRRdWV1ZVRpbWVyOyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NS
ZWZQdHI8RXZlbnQ+KSA9IDA7CisgICAgdmlydHVhbCBib29sIGNhbmNlbEV2ZW50KEV2ZW50Kikg
PSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgKaW5kZXggODQwNzY5OTZlYWQ3NzYyY2E4MDQ5NjJkZWI3YzViN2NkODJhZTJjMy4uODVjN2I4
OTBhMWVlNDllNzFiMWRkM2I5MTI5NTIwZGVlZTI0OGE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC01NSw2ICs1NSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICNlbmRpZgogICAgIGNsYXNzIERPTVRpbWVyOwogICAgIGNsYXNzIEV2ZW50TGlz
dGVuZXI7CisgICAgY2xhc3MgRXZlbnRRdWV1ZTsKICAgICBjbGFzcyBFdmVudFRhcmdldDsKICNp
ZiBFTkFCTEUoQkxPQikgfHwgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgIGNsYXNzIEZpbGVUaHJl
YWQ7CkBAIC0xNTksNiArMTYwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lk
IGFkanVzdE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSBvbGRNaW5pbXVtVGltZXJJbnRlcnZh
bCk7CiAgICAgICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKCkgY29uc3Q7
CiAKKyAgICAgICAgdmlydHVhbCBFdmVudFF1ZXVlKiBldmVudFF1ZXVlKCkgY29uc3QgPSAwOwor
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICAvLyBFeHBsaWNpdGx5IG92ZXJyaWRlIHRoZSBzZWN1
cml0eSBvcmlnaW4gZm9yIHRoaXMgc2NyaXB0IGNvbnRleHQuCiAgICAgICAgIC8vIE5vdGU6IEl0
IGlzIGRhbmdlcm91cyB0byBjaGFuZ2UgdGhlIHNlY3VyaXR5IG9yaWdpbiBvZiBhIHNjcmlwdCBj
b250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV29ya2VyRXZlbnRRdWV1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV29ya2VyRXZlbnRRdWV1ZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTY3MmJmZjVjNTE5NDlhNzM4MDVmN2ViODBhZmI4ZDdkZTAxOTVlNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Xb3JrZXJFdmVudFF1ZXVlLmNwcApAQCAtMCwwICsxLDg1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrZXJF
dmVudFF1ZXVlLmgiCisKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJFdmVudC5o
IgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCisjaW5jbHVkZSAiU3VzcGVuZGFibGVUaW1lci5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1Bhc3NSZWZQdHI8V29ya2VyRXZlbnRRdWV1ZT4gV29ya2VyRXZlbnRRdWV1ZTo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXb3JrZXJFdmVudFF1ZXVlKGNvbnRleHQpKTsKK30KKworV29ya2VyRXZlbnRRdWV1
ZTo6V29ya2VyRXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAg
IDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCit7Cit9CisKK2NsYXNzIEV2ZW50
RGlzcGF0Y2hlclRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8RXZlbnREaXNwYXRjaGVyVGFzaz4gY3JlYXRl
KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBFdmVudERpc3BhdGNoZXJUYXNrKGV2ZW50KSk7CisgICAgfQorICAgIHZvaWQgZGlzcGF0
Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKKyAgICB7CisgICAgICAgIEV2ZW50VGFy
Z2V0KiBldmVudFRhcmdldCA9IGV2ZW50LT50YXJnZXQoKTsKKyAgICAgICAgaWYgKGV2ZW50VGFy
Z2V0LT50b0RPTVdpbmRvdygpKQorICAgICAgICAgICAgZXZlbnRUYXJnZXQtPnRvRE9NV2luZG93
KCktPmRpc3BhdGNoRXZlbnQoZXZlbnQsIDApOworICAgICAgICBlbHNlCisgICAgICAgICAgICBl
dmVudFRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCk7CisgICAgfQorICAgIHZpcnR1YWwgdm9p
ZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKKyAgICB7CisgICAgICAgIGRp
c3BhdGNoRXZlbnQobV9ldmVudCk7CisgICAgfQorcHJpdmF0ZToKKyAgICBFdmVudERpc3BhdGNo
ZXJUYXNrKFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQorICAgICAgOiBtX2V2ZW50KGV2ZW50KQor
ICAgIHsKKyAgICB9CisgICAgUmVmUHRyPEV2ZW50PiBtX2V2ZW50OworfTsKKwordm9pZCBXb3Jr
ZXJFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCit7Cisg
ICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhFdmVudERpc3BhdGNoZXJUYXNr
OjpjcmVhdGUoZXZlbnQpKTsKK30KKworYm9vbCBXb3JrZXJFdmVudFF1ZXVlOjpjYW5jZWxFdmVu
dChFdmVudCogZXZlbnQpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBieSBwbHVtYmluZyB0
aHJvdWdoIHRvIE1lc3NhZ2VRdWV1ZTo6cmVtb3ZlSWYuCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Xb3JrZXJFdmVudFF1ZXVlLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vV29ya2VyRXZlbnRRdWV1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiNjI2ZGM2
ZTRmY2IxY2I3NzMwOGU0NTJlNzVkOGU4NjI0MTFmOGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vV29ya2VyRXZlbnRRdWV1ZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
CisgKi8KKworI2lmbmRlZiBXb3JrZXJFdmVudFF1ZXVlX2gKKyNkZWZpbmUgV29ya2VyRXZlbnRR
dWV1ZV9oCisKKyNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBFdmVudDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIFdvcmtlckV2
ZW50UXVldWUgOiBwdWJsaWMgRXZlbnRRdWV1ZSB7CitwdWJsaWM6CisKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXb3JrZXJFdmVudFF1ZXVlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OworCisgICAgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOworICAgIGJvb2wg
Y2FuY2VsRXZlbnQoRXZlbnQqKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBXb3JrZXJFdmVu
dFF1ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBXb3Jr
ZXJFdmVudFF1ZXVlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBmMWYz
YzlmMWZkNWQxOGViN2I2NTNkNzAyOTkwMzcxY2MwNjBjMGU5Li40N2RkYTMyYzVhYWI3OGY0MDI1
Zjc0NDZkNzAzN2VmMTYxMzQ0MDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbmNsdWRlICJDdXJzb3IuaCIKICNpbmNsdWRlICJDdXJz
b3JMaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50
UXVldWUuaCIKICNpbmNsdWRlICJEcmFnQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkVkaXRvci5o
IgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5j
bHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZv
Y3VzQ29udHJvbGxlci5oIgpAQCAtMjk4OSw3ICsyOTg5LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6
OnNlbmRTY3JvbGxFdmVudCgpCiB7CiAgICAgc2V0RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpOwog
ICAgIGlmIChtX2ZyYW1lLT52aWV3KCkgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAg
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZXZlbnRRdWV1ZSgpLT5lbnF1ZXVlT3JEaXNwYXRjaFNjcm9s
bEV2ZW50KG1fZnJhbWUtPmRvY3VtZW50KCksIEV2ZW50UXVldWU6OlNjcm9sbEV2ZW50RG9jdW1l
bnRUYXJnZXQpOworICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEV2ZW50UXVl
dWUoKS0+ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChtX2ZyYW1lLT5kb2N1bWVudCgpLCBE
b2N1bWVudEV2ZW50UXVldWU6OlNjcm9sbEV2ZW50RG9jdW1lbnRUYXJnZXQpOwogfQogCiB2b2lk
IEV2ZW50SGFuZGxlcjo6c2V0RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA1N2YzMDVjYjVlYmZjYjUyOGI5ZmU3NjA4
NTMzY2Q1ZWFmZmMwNTY0Li5hNzc2ZDUzN2I0NTFjZDY5YjdjZWU1NTE1YTI5YzIxNWQyNjgzZDU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTUwLDggKzUw
LDggQEAKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuaCIK
ICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKLSNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5j
bHVkZSAiRmxvYXRQb2ludDNELmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAi
Rm9jdXNDb250cm9sbGVyLmgiCkBAIC0xNDA0LDcgKzE0MDQsNyBAQCB2b2lkIFJlbmRlckxheWVy
OjpzY3JvbGxUbyhpbnQgeCwgaW50IHkpCiAgICAgICAgIHJlbmRlcmVyKCktPnJlcGFpbnRVc2lu
Z0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCByZWN0Rm9yUmVwYWludCk7CiAKICAgICAvLyBT
Y2hlZHVsZSB0aGUgc2Nyb2xsIERPTSBldmVudC4KLSAgICByZW5kZXJlcigpLT5ub2RlKCktPmRv
Y3VtZW50KCktPmV2ZW50UXVldWUoKS0+ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChyZW5k
ZXJlcigpLT5ub2RlKCksIEV2ZW50UXVldWU6OlNjcm9sbEV2ZW50RWxlbWVudFRhcmdldCk7Cisg
ICAgcmVuZGVyZXIoKS0+bm9kZSgpLT5kb2N1bWVudCgpLT5kb2N1bWVudEV2ZW50UXVldWUoKS0+
ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChyZW5kZXJlcigpLT5ub2RlKCksIERvY3VtZW50
RXZlbnRRdWV1ZTo6U2Nyb2xsRXZlbnRFbGVtZW50VGFyZ2V0KTsKIH0KIAogdm9pZCBSZW5kZXJM
YXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZShjb25zdCBJbnRSZWN0JiByZWN0LCBib29sIHNjcm9s
bFRvQW5jaG9yLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWCwgY29uc3QgU2Nyb2xsQWxp
Z25tZW50JiBhbGlnblkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5j
cHAKaW5kZXggZDc3OThkNTc1MzM0OWY5MDllNTg2YmVjMWQxMzQ3MmMwMjNlN2E3Ny4uZTAxMTUx
MzAzOWM4OTU1NTA1NTM3ZDRjYzU0OTM2MGNkYTVmZTRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtMzMsOCArMzMsOCBAQAogI2luY2x1ZGUgIkFY
T2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJF
dmVudEhhbmRsZXIuaCIKLSNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiRm9jdXND
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIK
QEAgLTYxMyw3ICs2MTMsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnNjcm9sbFRvKGludCBuZXdP
ZmZzZXQpCiAKICAgICBtX2luZGV4T2Zmc2V0ID0gbmV3T2Zmc2V0OwogICAgIHJlcGFpbnQoKTsK
LSAgICBub2RlKCktPmRvY3VtZW50KCktPmV2ZW50UXVldWUoKS0+ZW5xdWV1ZU9yRGlzcGF0Y2hT
Y3JvbGxFdmVudChub2RlKCksIEV2ZW50UXVldWU6OlNjcm9sbEV2ZW50RWxlbWVudFRhcmdldCk7
CisgICAgbm9kZSgpLT5kb2N1bWVudCgpLT5kb2N1bWVudEV2ZW50UXVldWUoKS0+ZW5xdWV1ZU9y
RGlzcGF0Y2hTY3JvbGxFdmVudChub2RlKCksIERvY3VtZW50RXZlbnRRdWV1ZTo6U2Nyb2xsRXZl
bnRFbGVtZW50VGFyZ2V0KTsKIH0KIAogaW50IFJlbmRlckxpc3RCb3g6Oml0ZW1IZWlnaHQoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcAppbmRleCBkNTRiOTY5YTFj
ZjZlZTYxYTQ2YjcwNDNjY2NkMWMwYzJjMTFjNjYzLi4zNjVmMjc3Mjc5MTU3OWQ1MTUyMDVkNDE4
ZDY5NDE3NWEwYzBiZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcApA
QCAtMTQ1LDggKzE0NSw3IEBAIHZvaWQgSURCRGF0YWJhc2U6OmNsb3NlKCkKICAgICBpZiAobV9u
b05ld1RyYW5zYWN0aW9ucykKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKTsKLSAgICBFdmVudFF1ZXVlKiBldmVudFF1
ZXVlID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5l
dmVudFF1ZXVlKCk7CisgICAgRXZlbnRRdWV1ZSogZXZlbnRRdWV1ZSA9IHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+ZXZlbnRRdWV1ZSgpOwogICAgIC8vIFJlbW92ZSBhbnkgcGVuZGluZyB2ZXJz
aW9uY2hhbmdlIGV2ZW50cyBzY2hlZHVsZWQgdG8gZmlyZSBvbiB0aGlzCiAgICAgLy8gY29ubmVj
dGlvbi4gVGhleSB3b3VsZCBoYXZlIGJlZW4gc2NoZWR1bGVkIGJ5IHRoZSBiYWNrZW5kIHdoZW4g
YW5vdGhlcgogICAgIC8vIGNvbm5lY3Rpb24gY2FsbGVkIHNldFZlcnNpb24sIGJ1dCB0aGUgZnJv
bnRlbmQgY29ubmVjdGlvbiBpcyBiZWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5j
cHAKaW5kZXggZjhkODE4YTM1MWVhMTczOGE4ZGUxYWRlODAxMjYwY2JjODQ3MGY4NC4uM2UzMWM4
YmZiMzg2YjVmMmI1NjRkMDk4NzQxYWJjZjY1MmI4YWEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQlJlcXVlc3QuY3BwCkBAIC0xNTAsOCArMTUwLDcgQEAgdm9pZCBJREJSZXF1ZXN0OjphYm9y
dCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc0RvY3VtZW50KCkpOwotICAgIEV2ZW50UXVldWUqIGV2ZW50UXVldWUgPSBz
dGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPmV2ZW50UXVl
dWUoKTsKKyAgICBFdmVudFF1ZXVlKiBldmVudFF1ZXVlID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5ldmVudFF1ZXVlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VucXVldWVk
RXZlbnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGJvb2wgcmVtb3ZlZCA9IGV2ZW50UXVldWUt
PmNhbmNlbEV2ZW50KG1fZW5xdWV1ZWRFdmVudHNbaV0uZ2V0KCkpOwogICAgICAgICBBU1NFUlRf
VU5VU0VEKHJlbW92ZWQsIHJlbW92ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5z
YWN0aW9uLmNwcAppbmRleCA3MTBiYjc2MTczMWU2YmE0YjAwZDZlZWVlYTYyMzVlODIwMTlkY2Ex
Li5lOTQ2Y2NlZjVmNWExNDU5YjQ2MTM1ZTk3ZTQ4Nzc5MWQ0ZTM1ODQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMTg2LDggKzE4Niw3IEBAIHZvaWQg
SURCVHJhbnNhY3Rpb246OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAg
ICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
QVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKTsKLSAgICBFdmVu
dFF1ZXVlKiBldmVudFF1ZXVlID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpLT5ldmVudFF1ZXVlKCk7CisgICAgRXZlbnRRdWV1ZSogZXZlbnRRdWV1ZSA9
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZXZlbnRRdWV1ZSgpOwogICAgIGV2ZW50LT5zZXRU
YXJnZXQodGhpcyk7CiAgICAgZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KGV2ZW50KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCmluZGV4IGMyZmNlNWM2OWQzZWRh
YTBiMTQxZmQ0MGY4Mzc4YjI3NDA1NzNhNTIuLmVhYWM0ZTM3ZDQzYzMwODAwN2Q5MDBjY2Q0Njk1
YmIyYmRmMzY4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcApA
QCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAi
V29ya2VyRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJXb3JrZXJMb2NhdGlvbi5oIgogI2luY2x1ZGUgIldvcmtlck5hdmlnYXRv
ci5oIgpAQCAtMTExLDYgKzExMiw3IEBAIFdvcmtlckNvbnRleHQ6OldvcmtlckNvbnRleHQoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV29ya2VyVGhyCiAgICAgLCBt
X3dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIobmV3IFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIo
dGhpcykpCiAjZW5kaWYKICAgICAsIG1fY2xvc2luZyhmYWxzZSkKKyAgICAsIG1fd29ya2VyRXZl
bnRRdWV1ZShXb3JrZXJFdmVudFF1ZXVlOjpjcmVhdGUodGhpcykpCiB7CiAgICAgc2V0U2VjdXJp
dHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpKTsKIH0KQEAgLTQ4NCw2ICs0ODYs
MTEgQEAgdm9pZCBXb3JrZXJDb250ZXh0Ojpub3RpZnlPYnNlcnZlcnNPZlN0b3AoKQogICAgIH0K
IH0KIAorRXZlbnRRdWV1ZSogV29ya2VyQ29udGV4dDo6ZXZlbnRRdWV1ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fd29ya2VyRXZlbnRRdWV1ZS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyQ29udGV4dC5oCmluZGV4IDA3Mzc2NzkyOTNmMTEzMWQ4NmRhZTE5MjJmMzFiZWEyMzM1
NDA3ODAuLjJhNGNhYWQ5MWM2NjBjYzFhYjg5M2IyNWNhYWQ2MzRkMWNlMDYwMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCkBAIC01Niw2ICs1Niw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBGaWxlU3lzdGVtQ2FsbGJhY2s7CiAgICAgY2xhc3MgTm90
aWZpY2F0aW9uQ2VudGVyOwogICAgIGNsYXNzIFNjaGVkdWxlZEFjdGlvbjsKKyAgICBjbGFzcyBX
b3JrZXJFdmVudFF1ZXVlOwogICAgIGNsYXNzIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI7CiAg
ICAgY2xhc3MgV29ya2VyTG9jYXRpb247CiAgICAgY2xhc3MgV29ya2VyTmF2aWdhdG9yOwpAQCAt
MTY3LDYgKzE2OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCB1bnJlZ2lz
dGVyT2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKICAgICAgICAgdm9pZCBub3RpZnlPYnNlcnZlcnNPZlN0
b3AoKTsKIAorICAgICAgICBFdmVudFF1ZXVlKiBldmVudFF1ZXVlKCkgY29uc3Q7CisKICAgICBw
cm90ZWN0ZWQ6CiAgICAgICAgIFdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYsIFdvcmtlclRocmVhZCopOwogCkBAIC0yMDcsNiArMjEwLDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CiAKICAgICAg
ICAgSGFzaFNldDxPYnNlcnZlcio+IG1fd29ya2VyT2JzZXJ2ZXJzOworCisgICAgICAgIFJlZlB0
cjxXb3JrZXJFdmVudFF1ZXVlPiBtX3dvcmtlckV2ZW50UXVldWU7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91416</attachid>
            <date>2011-04-27 20:19:45 -0700</date>
            <delta_ts>2011-10-24 19:57:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57789-20110427201944.patch</filename>
            <type>text/plain</type>
            <size>12167</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODUxMzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhYTc1MzBmYWU4ODFmYTZk
Y2Q5NjNmNGRmZTljMjk3YzllYTMzYWFiLi43OWRhYmFhZjYxNjE1NDAxMzYyNGI2ZTYyZTVjMWFl
Y2UyMmJkYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDQtMjcgIERhdmlk
IEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgZXZlbnRxdWV1ZSBmcm9tIERvY3VtZW50IHRv
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgc28gdGhhdCBpdCBjYW4gYmUgYWNjZXNzZWQgZnJvbSB3
b3JrZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
Nzc4OQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjplbnF1ZXVlV2luZG93RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVu
cXVldWVEb2N1bWVudEV2ZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KiBkb20vRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFF1ZXVlOjpFdmVu
dFF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlclRh
c2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFF1ZXVlOjpFdmVudERpc3BhdGNo
ZXJUYXNrOjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UXVldWU6OkV2
ZW50RGlzcGF0Y2hlclRhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
UXVldWU6OkV2ZW50RGlzcGF0Y2hlclRhc2s6OkV2ZW50RGlzcGF0Y2hlclRhc2spOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRRdWV1ZTo6cmVtb3ZlU2Nyb2xsRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
UXVldWU6OmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRRdWV1ZTo6Y2FuY2VsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRRdWV1ZTo6
Y2FuY2VsUXVldWVkRXZlbnRzKToKKyAgICAgICAgKiBkb20vRXZlbnRRdWV1ZS5oOgorICAgICAg
ICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAq
IGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpldmVudFF1ZXVlKToKKwogMjAxMS0wNC0yNyAgSmFtZXMgUm9iaW5z
b24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGgg
UnVzc2VsbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGEzNWM0NDU5YmQ3ZWI0MTcyYTIx
ZWIxYzljNzcyZWZjNTBjMTI5MzcuLmI4NWFhOTBmNDhjN2UzYjUzYTRlYmIwZDdmOTM4OTA5OTA1
ZmRmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDEzLDcgKzQxMyw2IEBAIERvY3Vt
ZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1M
LCBib29sIGlzSFRNTCkKICAgICAsIG1fdXNlc1ZpZXdTb3VyY2VTdHlsZXMoZmFsc2UpCiAgICAg
LCBtX3Nhd0VsZW1lbnRzSW5Lbm93bk5hbWVzcGFjZXMoZmFsc2UpCiAgICAgLCBtX3VzaW5nR2Vv
bG9jYXRpb24oZmFsc2UpCi0gICAgLCBtX2V2ZW50UXVldWUoRXZlbnRRdWV1ZTo6Y3JlYXRlKHRo
aXMpKQogI2lmIEVOQUJMRShXTUwpCiAgICAgLCBtX2NvbnRhaW5zV01MQ29udGVudChmYWxzZSkK
ICNlbmRpZgpAQCAtMTcwNiw3ICsxNzA1LDcgQEAgdm9pZCBEb2N1bWVudDo6ZGV0YWNoKCkKIAog
ICAgIGNsZWFyQVhPYmplY3RDYWNoZSgpOwogICAgIHN0b3BBY3RpdmVET01PYmplY3RzKCk7Ci0g
ICAgbV9ldmVudFF1ZXVlLT5jYW5jZWxRdWV1ZWRFdmVudHMoKTsKKy8vICAgIG1fZXZlbnRRdWV1
ZS0+Y2FuY2VsUXVldWVkRXZlbnRzKCk7CiAKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05f
RlJBTUUpCiAgICAgLy8gRklYTUU6IGNvbnNpZGVyIHVzaW5nIEFjdGl2ZURPTU9iamVjdC4KQEAg
LTM0ODMsMTMgKzM0ODIsMTMgQEAgdm9pZCBEb2N1bWVudDo6ZGlzcGF0Y2hXaW5kb3dMb2FkRXZl
bnQoKQogdm9pZCBEb2N1bWVudDo6ZW5xdWV1ZVdpbmRvd0V2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+
IGV2ZW50KQogewogICAgIGV2ZW50LT5zZXRUYXJnZXQoZG9tV2luZG93KCkpOwotICAgIG1fZXZl
bnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KGV2ZW50KTsKKyAgICBldmVudFF1ZXVlKCktPmVucXVldWVF
dmVudChldmVudCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmVucXVldWVEb2N1bWVudEV2ZW50KFBh
c3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7Ci0g
ICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoZXZlbnQpOworICAgIGV2ZW50UXVldWUoKS0+
ZW5xdWV1ZUV2ZW50KGV2ZW50KTsKIH0KIAogUGFzc1JlZlB0cjxFdmVudD4gRG9jdW1lbnQ6OmNy
ZWF0ZUV2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnRUeXBlLCBFeGNlcHRpb25Db2RlJiBlYykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggMTQ1OWM5MjVjOTAyYjZiYjIzMmYyZTUyNzA5Mzc2ZGM0ZDc1
NmFlZC4uZWJlMmI2YmEzYzk2ZTljYzYzZDg1Y2NhMTE5ZDEyYjU1YzNmNzY5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKQEAgLTc1LDcgKzc1LDYgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIEVudGl0
eVJlZmVyZW5jZTsKIGNsYXNzIEV2ZW50OwogY2xhc3MgRXZlbnRMaXN0ZW5lcjsKLWNsYXNzIEV2
ZW50UXVldWU7CiBjbGFzcyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNs
YXNzIEZyYW1lVmlldzsKQEAgLTEwMzQsNyArMTAzMyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGVu
cXVldWVQYWdlc2hvd0V2ZW50KFBhZ2VzaG93RXZlbnRQZXJzaXN0ZW5jZSk7CiAgICAgdm9pZCBl
bnF1ZXVlSGFzaGNoYW5nZUV2ZW50KGNvbnN0IFN0cmluZyYgb2xkVVJMLCBjb25zdCBTdHJpbmcm
IG5ld1VSTCk7CiAgICAgdm9pZCBlbnF1ZXVlUG9wc3RhdGVFdmVudChQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QpOwotICAgIEV2ZW50UXVldWUqIGV2ZW50UXVl
dWUoKSBjb25zdCB7IHJldHVybiBtX2V2ZW50UXVldWUuZ2V0KCk7IH0KIAogICAgIHZvaWQgYWRk
TWVkaWFDYW5TdGFydExpc3RlbmVyKE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciopOwogICAgIHZvaWQg
cmVtb3ZlTWVkaWFDYW5TdGFydExpc3RlbmVyKE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciopOwpAQCAt
MTM0OSw4ICsxMzQ3LDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV91c2luZ0dlb2xvY2F0aW9u
OwogICAgIAotICAgIFJlZlB0cjxFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7Ci0KICNpZiBFTkFC
TEUoV01MKQogICAgIGJvb2wgbV9jb250YWluc1dNTENvbnRlbnQ7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFF1ZXVlLmNwcAppbmRleCA5MGYzZTVkZWRjN2M1OGQ5ZjAxNjA1NTE4YTIxODA3MTAz
N2Y3YjliLi5iMjJmY2I1NTRiZDU0MTI2MzUwMzBiMzU0Y2Y0YTBiNTdiNWIxYmM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50UXVldWUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgogCisjaW5jbHVkZSAiQ3Jvc3NUaHJlYWRUYXNr
LmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJFdmVudC5oIgpAQCAtNDMsMjUgKzQ0LDEzIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91
bGREaXNwYXRjaFNjcm9sbEV2ZW50U3luY2hyb25vdXNseShEb2N1bWVudCogZG9jdW1lbnQpCiAg
ICAgcmV0dXJuIGFwcGxpY2F0aW9uSXNTYWZhcmkoKSAmJiAoZG9jdW1lbnQtPnVybCgpLnByb3Rv
Y29sSXMoImZlZWQiKSB8fCBkb2N1bWVudC0+dXJsKCkucHJvdG9jb2xJcygiZmVlZHMiKSk7CiB9
CiAKLWNsYXNzIEV2ZW50UXVldWVUaW1lciA6IHB1YmxpYyBTdXNwZW5kYWJsZVRpbWVyIHsKLSAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShFdmVudFF1ZXVlVGltZXIpOwotcHVibGljOgotICAgIEV2
ZW50UXVldWVUaW1lcihFdmVudFF1ZXVlKiBldmVudFF1ZXVlLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQotICAgICAgICA6IFN1c3BlbmRhYmxlVGltZXIoY29udGV4dCkKLSAgICAg
ICAgLCBtX2V2ZW50UXVldWUoZXZlbnRRdWV1ZSkgeyB9Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVh
bCB2b2lkIGZpcmVkKCkgeyBtX2V2ZW50UXVldWUtPnBlbmRpbmdFdmVudFRpbWVyRmlyZWQoKTsg
fQotICAgIEV2ZW50UXVldWUqIG1fZXZlbnRRdWV1ZTsgICAgCi19OwotCiBQYXNzUmVmUHRyPEV2
ZW50UXVldWU+IEV2ZW50UXVldWU6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXZlbnRRdWV1ZShjb250ZXh0KSk7CiB9
CiAKIEV2ZW50UXVldWU6OkV2ZW50UXVldWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKLSAgICA6IG1fcGVuZGluZ0V2ZW50VGltZXIoYWRvcHRQdHIobmV3IEV2ZW50UXVldWVUaW1l
cih0aGlzLCBjb250ZXh0KSkpCisgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4
dCkKIHsKIH0KIApAQCAtNjksMTQgKzU4LDQ4IEBAIEV2ZW50UXVldWU6On5FdmVudFF1ZXVlKCkK
IHsKIH0KIAotdm9pZCBFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4g
ZXZlbnQpCi17Ci0gICAgQVNTRVJUKGV2ZW50LT50YXJnZXQoKSk7Ci0gICAgYm9vbCB3YXNBZGRl
ZCA9IG1fcXVldWVkRXZlbnRzLmFkZChldmVudCkuc2Vjb25kOwotICAgIEFTU0VSVF9VTlVTRUQo
d2FzQWRkZWQsIHdhc0FkZGVkKTsgLy8gSXQgc2hvdWxkIG5vdCBoYXZlIGFscmVhZHkgYmVlbiBp
biB0aGUgbGlzdC4KK2NsYXNzIEV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlclRhc2sgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NPd25QdHI8RXZlbnREaXNwYXRjaGVyVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8RXZlbnQ+IGV2
ZW50LCBib29sIHNjcm9sbEV2ZW50LCBFdmVudFF1ZXVlKiBldmVudFF1ZXVlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFdmVudERpc3BhdGNoZXJUYXNrKGV2ZW50LCBzY3Jv
bGxFdmVudCwgZXZlbnRRdWV1ZSkpOworICAgIH0KKyAgICB2b2lkIGRpc3BhdGNoRXZlbnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQorICAgIHsKKyAg
ICAgICAgRXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0ID0gZXZlbnQtPnRhcmdldCgpOworICAgICAg
ICBpZiAoZXZlbnRUYXJnZXQtPnRvRE9NV2luZG93KCkpCisgICAgICAgICAgICBldmVudFRhcmdl
dC0+dG9ET01XaW5kb3coKS0+ZGlzcGF0Y2hFdmVudChldmVudCwgMCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGV2ZW50VGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKKyAgICB9Cisg
ICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCisgICAgeworICAgICAgICBpZiAobV9zY3JvbGxFdmVudCkKKyAgICAgICAgICAgIG1fZXZl
bnRRdWV1ZS0+cmVtb3ZlU2Nyb2xsRXZlbnQobV9ldmVudCk7CisgICAgICAgIGRpc3BhdGNoRXZl
bnQoY29udGV4dCwgbV9ldmVudCk7CisgICAgfQorcHJpdmF0ZToKKyAgICBFdmVudERpc3BhdGNo
ZXJUYXNrKFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBib29sIHNjcm9sbEV2ZW50LCBFdmVudFF1
ZXVlKiBldmVudFF1ZXVlKQorICAgICAgOiBtX2V2ZW50KGV2ZW50KQorICAgICAgLCBtX3Njcm9s
bEV2ZW50KHNjcm9sbEV2ZW50KQorICAgICAgLCBtX2V2ZW50UXVldWUoZXZlbnRRdWV1ZSkKKyAg
ICB7CisgICAgfQorICAgIFJlZlB0cjxFdmVudD4gbV9ldmVudDsKKyAgICBib29sIG1fc2Nyb2xs
RXZlbnQ7CisgICAgRXZlbnRRdWV1ZSogbV9ldmVudFF1ZXVlOworfTsKICAgICAKLSAgICBpZiAo
IW1fcGVuZGluZ0V2ZW50VGltZXItPmlzQWN0aXZlKCkpCi0gICAgICAgIG1fcGVuZGluZ0V2ZW50
VGltZXItPnN0YXJ0T25lU2hvdCgwKTsKK3ZvaWQgRXZlbnRRdWV1ZTo6cmVtb3ZlU2Nyb2xsRXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCit7CisgICAgRXZlbnRUYXJnZXQqIGV2ZW50VGFy
Z2V0ID0gZXZlbnQtPnRhcmdldCgpOworICAgIE5vZGUqIG5vZGUgPSBldmVudFRhcmdldC0+dG9O
b2RlKCk7CisgICAgbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHMucmVtb3ZlKG5vZGUpOwor
fQorCit2b2lkIEV2ZW50UXVldWU6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVu
dCwgYm9vbCBpc1Njcm9sbEV2ZW50KQoreworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
cG9zdFRhc2soRXZlbnREaXNwYXRjaGVyVGFzazo6Y3JlYXRlKGV2ZW50LCBpc1Njcm9sbEV2ZW50
LCB0aGlzKSk7CiB9CiAKIHZvaWQgRXZlbnRRdWV1ZTo6ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxF
dmVudChQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCwgU2Nyb2xsRXZlbnRUYXJnZXRUeXBlIHRhcmdl
dFR5cGUpCkBAIC05NCw1NSArMTE3LDE5IEBAIHZvaWQgRXZlbnRRdWV1ZTo6ZW5xdWV1ZU9yRGlz
cGF0Y2hTY3JvbGxFdmVudChQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCwgU2Nyb2xsRXZlCiAgICAg
ICAgIHJldHVybjsKIAogICAgIHNjcm9sbEV2ZW50LT5zZXRUYXJnZXQodGFyZ2V0KTsKLSAgICBl
bnF1ZXVlRXZlbnQoc2Nyb2xsRXZlbnQucmVsZWFzZSgpKTsKKyAgICBlbnF1ZXVlRXZlbnQoc2Ny
b2xsRXZlbnQucmVsZWFzZSgpLCAvKmlzU2Nyb2xsRXZlbnQqLyB0cnVlKTsKIH0KIAogYm9vbCBF
dmVudFF1ZXVlOjpjYW5jZWxFdmVudChFdmVudCogZXZlbnQpCiB7Ci0gICAgYm9vbCBmb3VuZCA9
IG1fcXVldWVkRXZlbnRzLmNvbnRhaW5zKGV2ZW50KTsKLSAgICBtX3F1ZXVlZEV2ZW50cy5yZW1v
dmUoZXZlbnQpOwotICAgIGlmIChtX3F1ZXVlZEV2ZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIG1f
cGVuZGluZ0V2ZW50VGltZXItPnN0b3AoKTsKLSAgICByZXR1cm4gZm91bmQ7CisgICAgLy8gRklY
TUU6IEltcGxlbWVudCB3aXRoIE1lc3NhZ2VRdWV1ZTo6cmVtb3ZlSWYuCisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHZvaWQgRXZlbnRRdWV1ZTo6Y2FuY2VsUXVldWVkRXZlbnRzKCkKIHsKLSAgICBt
X3BlbmRpbmdFdmVudFRpbWVyLT5zdG9wKCk7Ci0gICAgbV9xdWV1ZWRFdmVudHMuY2xlYXIoKTsK
LX0KLQotdm9pZCBFdmVudFF1ZXVlOjpwZW5kaW5nRXZlbnRUaW1lckZpcmVkKCkKLXsKLSAgICBB
U1NFUlQoIW1fcGVuZGluZ0V2ZW50VGltZXItPmlzQWN0aXZlKCkpOwotICAgIEFTU0VSVCghbV9x
dWV1ZWRFdmVudHMuaXNFbXB0eSgpKTsKLQotICAgIG1fbm9kZXNXaXRoUXVldWVkU2Nyb2xsRXZl
bnRzLmNsZWFyKCk7Ci0KLSAgICAvLyBJbnNlcnQgYSBtYXJrZXIgZm9yIHdoZXJlIHdlIHNob3Vs
ZCBzdG9wLgotICAgIEFTU0VSVCghbV9xdWV1ZWRFdmVudHMuY29udGFpbnMoMCkpOwotICAgIGJv
b2wgd2FzQWRkZWQgPSBtX3F1ZXVlZEV2ZW50cy5hZGQoMCkuc2Vjb25kOwotICAgIEFTU0VSVF9V
TlVTRUQod2FzQWRkZWQsIHdhc0FkZGVkKTsgLy8gSXQgc2hvdWxkIG5vdCBoYXZlIGFscmVhZHkg
YmVlbiBpbiB0aGUgbGlzdC4KLQotICAgIFJlZlB0cjxFdmVudFF1ZXVlPiBwcm90ZWN0b3IodGhp
cyk7Ci0KLSAgICB3aGlsZSAoIW1fcXVldWVkRXZlbnRzLmlzRW1wdHkoKSkgewotICAgICAgICBM
aXN0SGFzaFNldDxSZWZQdHI8RXZlbnQ+ID46Oml0ZXJhdG9yIGl0ZXIgPSBtX3F1ZXVlZEV2ZW50
cy5iZWdpbigpOwotICAgICAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gKml0ZXI7Ci0gICAgICAg
IG1fcXVldWVkRXZlbnRzLnJlbW92ZShpdGVyKTsKLSAgICAgICAgaWYgKCFldmVudCkKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBkaXNwYXRjaEV2ZW50KGV2ZW50LmdldCgpKTsKLSAgICB9
Ci19Ci0KLXZvaWQgRXZlbnRRdWV1ZTo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBl
dmVudCkKLXsKLSAgICBFdmVudFRhcmdldCogZXZlbnRUYXJnZXQgPSBldmVudC0+dGFyZ2V0KCk7
Ci0gICAgaWYgKGV2ZW50VGFyZ2V0LT50b0RPTVdpbmRvdygpKQotICAgICAgICBldmVudFRhcmdl
dC0+dG9ET01XaW5kb3coKS0+ZGlzcGF0Y2hFdmVudChldmVudCwgMCk7Ci0gICAgZWxzZQotICAg
ICAgICBldmVudFRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCk7CisgICAgLy8gRklYTUU6IEZp
Z3VyZSBvdXQgaG93IHRvIHByZXZlbnQgdGhlIG1lbW9yeSBsZWFrcyB0aGlzIHdhcyBpbnRyb2R1
Y2VkIHRvCisgICAgLy8gZml4LiBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01Nzk5NwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1
ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuaAppbmRleCAyY2IzOGY0OTBkMDFm
MGM4ZTMwZDcxODk4NGRmZjFkZGQ3MDQ2MGJjLi5iZjhjM2I0OWU3NDQxNWI4OGZjZmM0ZGQ1ZWY3
Mjc4YjNkOGVlMjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmgKQEAgLTUwLDggKzUwLDkgQEAg
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50UXVldWU+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7CiAgICAgfkV2ZW50UXVldWUoKTsKIAotICAgIHZvaWQgZW5xdWV1
ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKKyAgICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVm
UHRyPEV2ZW50PiwgYm9vbCBzY3JvbGxFdmVudCA9IGZhbHNlKTsKICAgICB2b2lkIGVucXVldWVP
ckRpc3BhdGNoU2Nyb2xsRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiwgU2Nyb2xsRXZlbnRUYXJnZXRU
eXBlKTsKKyAgICB2b2lkIHJlbW92ZVNjcm9sbEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAg
ICBib29sIGNhbmNlbEV2ZW50KEV2ZW50Kik7CiAgICAgdm9pZCBjYW5jZWxRdWV1ZWRFdmVudHMo
KTsKIApAQCAtNTksMTMgKzYwLDEzIEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRXZlbnRRdWV1
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICB2b2lkIHBlbmRpbmdFdmVudFRpbWVy
RmlyZWQoKTsKLSAgICB2b2lkIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogCi0g
ICAgT3duUHRyPEV2ZW50UXVldWVUaW1lcj4gbV9wZW5kaW5nRXZlbnRUaW1lcjsKICAgICBMaXN0
SGFzaFNldDxSZWZQdHI8RXZlbnQ+ID4gbV9xdWV1ZWRFdmVudHM7CiAgICAgSGFzaFNldDxOb2Rl
Kj4gbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHM7Ci0gICAgCi0gICAgZnJpZW5kIGNsYXNz
IEV2ZW50UXVldWVUaW1lcjsgICAgCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0OworCisgICAgZnJpZW5kIGNsYXNzIEV2ZW50UXVldWVUaW1lcjsK
KyAgICBjbGFzcyBFdmVudERpc3BhdGNoZXJUYXNrOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IDliNWRkNmZhZjdhNjFjYTAw
OTgwMTE5MTFiZTNjNTRlMjQ5ZjZhZmIuLmYzYmVjZDNjOGUxZGU4Y2IwM2VmN2NkMTY0MjRlYTFk
YWEwODdhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgogI2lu
Y2x1ZGUgIkVycm9yRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCisjaW5jbHVk
ZSAiRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRmls
ZVRocmVhZC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCkBAIC05Miw2ICs5Myw3IEBAIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogI2lmIEVOQUJM
RShEQVRBQkFTRSkKICAgICAsIG1faGFzT3BlbkRhdGFiYXNlcyhmYWxzZSkKICNlbmRpZgorICAg
ICwgbV9ldmVudFF1ZXVlKEV2ZW50UXVldWU6OmNyZWF0ZSh0aGlzKSkKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggODQwNzY5OTZlYWQ3
NzYyY2E4MDQ5NjJkZWI3YzViN2NkODJhZTJjMy4uODhlOTYxN2IxNmIwOGUwMjZhYTE5MWQ4YWY3
YjY3NDM0ZDg1YzI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oCkBAIC01NSw2ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAg
IGNsYXNzIERPTVRpbWVyOwogICAgIGNsYXNzIEV2ZW50TGlzdGVuZXI7CisgICAgY2xhc3MgRXZl
bnRRdWV1ZTsKICAgICBjbGFzcyBFdmVudFRhcmdldDsKICNpZiBFTkFCTEUoQkxPQikgfHwgRU5B
QkxFKEZJTEVfU1lTVEVNKQogICAgIGNsYXNzIEZpbGVUaHJlYWQ7CkBAIC0xMTcsNiArMTE4LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGRlc3Ryb3llZE1lc3NhZ2VQb3J0
KE1lc3NhZ2VQb3J0Kik7CiAgICAgICAgIGNvbnN0IEhhc2hTZXQ8TWVzc2FnZVBvcnQqPiYgbWVz
c2FnZVBvcnRzKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlUG9ydHM7IH0KIAorICAgICAgICBF
dmVudFF1ZXVlKiBldmVudFF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFF1ZXVlLmdldCgp
OyB9CisKICNpZiBFTkFCTEUoQkxPQikKICAgICAgICAgdm9pZCBjcmVhdGVkRG9tVXJsKERPTVVS
TCopOwogICAgICAgICB2b2lkIGRlc3Ryb3llZERvbVVybChET01VUkwqKTsKQEAgLTIwNiw2ICsy
MDksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKEJMT0IpIHx8IEVOQUJMRShG
SUxFX1NZU1RFTSkKICAgICAgICAgUmVmUHRyPEZpbGVUaHJlYWQ+IG1fZmlsZVRocmVhZDsKICNl
bmRpZgorCisgICAgICAgIFJlZlB0cjxFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7CiAgICAgfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112294</attachid>
            <date>2011-10-24 19:57:44 -0700</date>
            <delta_ts>2011-10-24 20:06:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57789-20111024195743.patch</filename>
            <type>text/plain</type>
            <size>47739</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTgzMTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyYjUwYzcyZjc4NzI0OTI2
NTI1YTgwZTVhOGMzMzM4Y2JmZGQyMTk5Li5jZDYyNDVhZmI5MjYzZjEzNDkwMDk5ZWExY2FmMzg1
ZmQ3NjU2Y2Y5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTEtMTAtMjQgIERhdmlk
IEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1vdmUgZXZlbnRxdWV1
ZSBmcm9tIERvY3VtZW50IHRvIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgc28gdGhhdCBpdCBjYW4g
YmUgYWNjZXNzZWQgZnJvbSB3b3JrZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01Nzc4OQorCisgICAgICAgIEV4dHJhY3QgaW50ZXJmYWNlIGZyb20g
RXZlbnRRdWV1ZSBhbmQgY3JlYXRlIHR3byBuZXcgc3ViY2xhc3NlczoKKyAgICAgICAgRG9jdW1l
bnRFdmVudFF1ZXVlIGFuZCBXb3JrZXJFdmVudFF1ZXVlLiAgRG9jdW1lbnRFdmVudFF1ZXVlIGlz
IHRoZQorICAgICAgICBvbGQgRXZlbnRRdWV1ZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHVzZXMgRE9N
VGltZXIoMCkgdG8gcG9zdCBhc3luYworICAgICAgICBldmVudHMuICBXb3JrZXJFdmVudFF1ZXVl
IHBvc3RzIGV2ZW50cyB0byBpdHMgdGhyZWFkJ3MgbWVzc2FnZSBsb29wLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtIEluZGV4
ZWREQiB3aWxsIHVzZSB0aGlzIGJ1dCBpc24ndCByZWFkeSB5ZXQuICBJIGRvbid0CisgICAgICAg
IGtub3cgb2YgYW55IG90aGVyIEFQSSBhdmFpbGFibGUgaW4gd29ya2VycyB0aGF0IEkgY2FuIHRl
c3QgdGhpcyB3aXRoLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9ET01BbGxJbk9uZS5j
cHA6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6ZXZlbnRRdWV1ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50RXZlbnRR
dWV1ZS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5jcHAu
CisgICAgICAgIChXZWJDb3JlOjpzaG91bGREaXNwYXRjaFNjcm9sbEV2ZW50U3luY2hyb25vdXNs
eSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWVUaW1lcjo6RG9jdW1lbnRF
dmVudFF1ZXVlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlVGlt
ZXI6OmZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6RG9jdW1lbnRFdmVudFF1
ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6fkRvY3VtZW50RXZl
bnRRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVPckRp
c3BhdGNoU2Nyb2xsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVl
OjpjYW5jZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmNs
b3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6cGVuZGluZ0V2ZW50
VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmRpc3Bh
dGNoRXZlbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuaC4KKyAgICAgICAgKiBkb20vRXZlbnRR
dWV1ZS5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
ICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOiBDaGFuZ2UgRXZlbnRRdWV1ZSB0byBEb2N1bWVudEV2
ZW50UXVldWUuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbmRTY3JvbGxFdmVu
dCk6IENoYW5nZSBFdmVudFF1ZXVlIHRvIERvY3VtZW50RXZlbnRRdWV1ZS4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnNjcm9sbFRvKTogQ2hhbmdlIEV2ZW50UXVldWUgdG8gRG9jdW1lbnRFdmVudFF1ZXVlLgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxpc3RCb3g6OnNjcm9sbFRvKTogQ2hhbmdlIEV2ZW50UXVldWUgdG8gRG9jdW1lbnRFdmVu
dFF1ZXVlLgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAqIHN0
b3JhZ2UvSURCUmVxdWVzdC5jcHA6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5j
cHA6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckNvbnRleHQ6OmV2ZW50UXVldWUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
Q29udGV4dC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OldvcmtlckV2ZW50UXVldWUpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6fldvcmtlckV2ZW50UXVldWUpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6RXZlbnREaXNwYXRjaGVyVGFzazo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlclRhc2s6
OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6RXZl
bnREaXNwYXRjaGVyVGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
RXZlbnRRdWV1ZTo6RXZlbnREaXNwYXRjaGVyVGFzazo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlclRhc2s6OkV2ZW50RGlzcGF0Y2hl
clRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6cmVtb3ZlRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmNhbmNlbEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmNsb3NlKToKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlckV2ZW50UXVldWUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVl
dWUuaC4KKwogMjAxMS0xMC0yNCAgTHVrZSBNYWNwaGVyc29uICAgPG1hY3BoZXJzb25AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04oODA4OTMpOiBIVE1MNSBzcGVjIHRha2VzIDJz
IGxvbmdlciB0byBsb2FkIGR1ZSB0byB0aW1lIHNwZW50IGluIENTU1N0eWxlU2VsZWN0b3IKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDE1ZjU5MGU1ZmU0MTNlMTY0NTMzMGMxMGM5
ODZiN2Q5MDM1OWIyMjYuLjY0ZWI2MGQ2ZGI1ZWZjODlkMGQ5MGFhZjU2ODRiYTQ0NGM3OTQwMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTE3MCw2ICsxMTcwLDggQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmggXAogCVNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVu
dFF1ZXVlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRNYXJrZXIuY3BwIFwKQEAgLTEyMTgsNyArMTIyMCw2IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBcCiAJU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0LmggXAotCVNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0V4Y2Vw
dGlvbkJhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQmFzZS5oIFwKQEAg
LTM4OTMsNiArMzg5NCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0LmggXAogCVNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dFByb3h5
LmggXAorCVNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggZmNhZmNiOWEwMjczZDc0NjYzZmFhZDI5MmRkNTkxN2E1MGUzZjZhNi4uZDdl
MGRjNDUyOTE5MzRlMTEyM2IwNjlkMTYxNjJmZGE5N2FkMWZlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtNTAyNiw2ICs1MDI2LDggQEAKICAgICAgICAgICAgICd3b3JrZXJzL1dvcmtlckNvbnRleHQu
Y3BwJywKICAgICAgICAgICAgICd3b3JrZXJzL1dvcmtlckNvbnRleHQuaCcsCiAgICAgICAgICAg
ICAnd29ya2Vycy9Xb3JrZXJDb250ZXh0UHJveHkuaCcsCisgICAgICAgICAgICAnd29ya2Vycy9X
b3JrZXJFdmVudFF1ZXVlLmNwcCcsCisgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJFdmVudFF1
ZXVlLmgnLAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaCcsCiAgICAg
ICAgICAgICAnd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAnLAogICAgICAgICAgICAgJ3dvcmtl
cnMvV29ya2VyTG9jYXRpb24uaCcsCkBAIC01MTgyLDYgKzUxODQsOCBAQAogICAgICAgICAgICAg
J2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL0Rldmlj
ZU9yaWVudGF0aW9uRXZlbnQuaCcsCiAgICAgICAgICAgICAnZG9tL0RvY3VtZW50LmNwcCcsCisg
ICAgICAgICAgICAnZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAnLAorICAgICAgICAgICAgJ2Rv
bS9Eb2N1bWVudEV2ZW50UXVldWUuaCcsCiAgICAgICAgICAgICAnZG9tL0RvY3VtZW50RnJhZ21l
bnQuY3BwJywKICAgICAgICAgICAgICdkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCcs
CiAgICAgICAgICAgICAnZG9tL0RvY3VtZW50TWFya2VyLmNwcCcsCkBAIC01MjA5LDcgKzUyMTMs
NiBAQAogICAgICAgICAgICAgJ2RvbS9FdmVudEV4Y2VwdGlvbi5oJywKICAgICAgICAgICAgICdk
b20vRXZlbnRMaXN0ZW5lck1hcC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9FdmVudE5hbWVzLmNw
cCcsCi0gICAgICAgICAgICAnZG9tL0V2ZW50UXVldWUuY3BwJywKICAgICAgICAgICAgICdkb20v
RXZlbnRRdWV1ZS5oJywKICAgICAgICAgICAgICdkb20vRXZlbnRUYXJnZXQuY3BwJywKICAgICAg
ICAgICAgICdkb20vRXhjZXB0aW9uQmFzZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA4MjM0ZGYz
YTBjN2MzMmI4MWIwYTgwOWJjMDNmMzliZDBhNWZlZTVlLi5jMmM0NTc0N2YxYmEzZGIyNDYxODg0
OWNhNzUzYzE2YTJlNWE5MWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
bworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtNDg0LDYgKzQ4NCw3IEBAIFNP
VVJDRVMgKz0gXAogICAgIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwIFwKICAg
ICBkb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAgXAogICAgIGRvbS9Eb2N1bWVudC5jcHAg
XAorICAgIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwIFwKICAgICBkb20vRG9jdW1lbnRGcmFn
bWVudC5jcHAgXAogICAgIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIFwKICAgICBk
b20vRG9jdW1lbnRNYXJrZXIuY3BwIFwKQEAgLTUwNiw3ICs1MDcsNiBAQCBTT1VSQ0VTICs9IFwK
ICAgICBkb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAgXAogICAgIGRvbS9FdmVudE5hbWVzLmNwcCBc
CiAgICAgZG9tL0V2ZW50VGFyZ2V0LmNwcCBcCi0gICAgZG9tL0V2ZW50UXVldWUuY3BwIFwKICAg
ICBkb20vRXhjZXB0aW9uQmFzZS5jcHAgXAogICAgIGRvbS9FeGNlcHRpb25Db2RlLmNwcCBcCiAg
ICAgZG9tL0V4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5jcHAgXApAQCAtMTU1Niw2ICsxNTU2LDcg
QEAgSEVBREVSUyArPSBcCiAgICAgZG9tL0V2ZW50RGlzcGF0Y2hNZWRpYXRvci5oIFwKICAgICBk
b20vRXZlbnRMaXN0ZW5lck1hcC5oIFwKICAgICBkb20vRXZlbnROYW1lcy5oIFwKKyAgICBkb20v
RXZlbnRRdWV1ZS5oIFwKICAgICBkb20vRXZlbnRUYXJnZXQuaCBcCiAgICAgZG9tL0V4Y2VwdGlv
bkJhc2UuaCBcCiAgICAgZG9tL0V4Y2VwdGlvbkNvZGUuaCBcCkBAIC0yNjExLDYgKzI2MTIsNyBA
QCBIRUFERVJTICs9IFwKICAgICB3b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5oIFwKICAg
ICB3b3JrZXJzL1NoYXJlZFdvcmtlci5oIFwKICAgICB3b3JrZXJzL1dvcmtlckNvbnRleHQuaCBc
CisgICAgd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmggXAogICAgIHdvcmtlcnMvV29ya2VyLmgg
XAogICAgIHdvcmtlcnMvV29ya2VyTG9jYXRpb24uaCBcCiAgICAgd29ya2Vycy9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5oIFwKQEAgLTMwMTUsNiArMzAxNyw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVO
QUJMRV9XT1JLRVJTPTEpIHsKICAgICAgICAgd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQu
Y3BwIFwKICAgICAgICAgd29ya2Vycy9Xb3JrZXIuY3BwIFwKICAgICAgICAgd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0LmNwcCBcCisgICAgICAgIHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAgXAog
ICAgICAgICB3b3JrZXJzL1dvcmtlckxvY2F0aW9uLmNwcCBcCiAgICAgICAgIHdvcmtlcnMvV29y
a2VyTWVzc2FnaW5nUHJveHkuY3BwIFwKICAgICAgICAgd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNw
cCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZTI2NTkwMzU2NGFmZmE5NGQ0ODI1MDM3ZmIwNjkwMmI4MWIzNDdjYS4uNDAxMDBl
YWVmZTdkMWNhYzA2M2E1MGJlOGIxNjg5NmZiZTFlNDY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjkxNCw3ICsyOTE0LDYg
QEAKIAkJOENBREYyQUQxMzVDN0IzNjAwOUVGNDNGIC8qIExldmVsREJJdGVyYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOENBREYyQTcxMzVDN0Iz
NjAwOUVGNDNGIC8qIExldmVsREJJdGVyYXRvci5oICovOyB9OwogCQk4Q0FERjJBRTEzNUM3QjM2
MDA5RUY0M0YgLyogTGV2ZWxEQlNsaWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4Q0FERjJBODEzNUM3QjM2MDA5RUY0M0YgLyogTGV2ZWxEQlNsaWNl
LmggKi87IH07CiAJCThGNjc1NjFCMTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RjY3NTYxOTEyODhC
MTdCMDA0N0FDQTMgLyogRXZlbnRRdWV1ZS5oICovOyB9OwotCQk4RjY3NTYxQzEyODhCMTdCMDA0
N0FDQTMgLyogRXZlbnRRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4RjY3NTYxQTEyODhCMTdCMDA0N0FDQTMgLyogRXZlbnRRdWV1ZS5jcHAg
Ki87IH07CiAJCThGQUM3NzREMTE5ODcyQ0IwMDE1QUU5NCAvKiBKU01haW5UaHJlYWRFeGVjU3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEY5
MzREODQxMTg5RjFFRTAwNTA4RDVEIC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAgKi87IH07
CiAJCTkwMDE3NzQwMTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwMDE3NzNE
MTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcCAqLzsgfTsKIAkJ
OTAwMTc3NDExMkUwMzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwMDE3NzNFMTJFMDM0
NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmggKi87IH07CkBAIC0xMDA0Niw3
ICsxMDA0NSw2IEBACiAJCThDQURGMkE3MTM1QzdCMzYwMDlFRjQzRiAvKiBMZXZlbERCSXRlcmF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGV2ZWxEQkl0ZXJhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThDQURGMkE4MTM1QzdCMzYwMDlFRjQzRiAv
KiBMZXZlbERCU2xpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGV2ZWxE
QlNsaWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThGNjc1NjE5MTI4OEIxN0Iw
MDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEV2ZW50UXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOEY2NzU2MUExMjg4
QjE3QjAwNDdBQ0EzIC8qIEV2ZW50UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRXZlbnRRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CThGOTM0RDgzMTE4OUYxRUUwMDUwOEQ1RCAvKiBKU01haW5UaHJlYWRFeGVjU3RhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThGOTM0RDg0MTE4OUYxRUUwMDUwOEQ1RCAvKiBK
U01haW5UaHJlYWRFeGVjU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTAwMTc3M0QxMkUwMzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gT0VTU3RhbmRhcmREZXJp
dmF0aXZlcy5jcHA7IHBhdGggPSBjYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDQ4Miw2ICsxMDQ4MCwxMCBAQAogCQlBMUUx
MTU0MzEzMDE1QzNEMDA1NEFDOEMgLyogRGlzdGFudExpZ2h0U291cmNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERpc3RhbnRMaWdodFNvdXJjZS5jcHA7IHBhdGgg
PSBmaWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUExRTExNTQ1MTMwMTVDNEUwMDU0QUM4QyAvKiBQb2ludExpZ2h0U291cmNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBvaW50TGlnaHRTb3VyY2UuY3Bw
OyBwYXRoID0gZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTFFMTE1NDcxMzAxNUM1RDAwNTRBQzhDIC8qIFNwb3RMaWdodFNvdXJjZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTcG90TGlnaHRTb3VyY2Uu
Y3BwOyBwYXRoID0gZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBM0JCNTlCRDE0NTY1MzA0MDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1
ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50RXZl
bnRRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQkI1OUJFMTQ1NjUz
MDQwMEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50UXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRG9jdW1lbnRFdmVudFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUEzQkI1OUMyMTQ1NjUzM0QwMEFDNTZGRSAvKiBXb3JrZXJFdmVudFF1ZXVlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdvcmtlckV2ZW50UXVldWUuY3Bw
OyBwYXRoID0gd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9IFNPVVJD
RV9ST09UOyB9OworCQlBM0JCNTlDMzE0NTY1MzNEMDBBQzU2RkUgLyogV29ya2VyRXZlbnRRdWV1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXb3JrZXJFdmVudFF1ZXVlLmg7
IHBhdGggPSB3b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OwogCQlBNDA5Qzk4MjExNkQwREREMDA3MTk3QkQgLyogQWNjZXNzaWJpbGl0eVByb2dy
ZXNzSW5kaWNhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE0MDlDOTgzMTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJ
bmRpY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0
eVByb2dyZXNzSW5kaWNhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE0MjI2
RTU5MTE2M0Q2NjcwMDhCODM5NyAvKiBKU0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwODE3LDYgKzIwODE5LDggQEAKIAkJRjUy
M0QzMjQwMkRFNDQ3ODAxODYzNUNBIC8qIGRvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJQTNCQjU5QzIxNDU2NTMzRDAwQUM1NkZFIC8qIFdvcmtlckV2
ZW50UXVldWUuY3BwICovLAorCQkJCUEzQkI1OUMzMTQ1NjUzM0QwMEFDNTZGRSAvKiBXb3JrZXJF
dmVudFF1ZXVlLmggKi8sCiAJCQkJRTFDNERFNkQwRUE3NUM2NTAwMjNDQ0Q2IC8qIEFjdGl2ZURP
TU9iamVjdC5jcHAgKi8sCiAJCQkJRTFDNERFNjgwRUE3NUMxRTAwMjNDQ0Q2IC8qIEFjdGl2ZURP
TU9iamVjdC5oICovLAogCQkJCUE4QzRBN0ZDMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyLmNwcCAq
LywKQEAgLTIwODk4LDYgKzIwOTAyLDggQEAKIAkJCQk1OUE4NUVBMzExOUQ2OEVDMDBERUYxRUYg
LyogRGV2aWNlT3JpZW50YXRpb25FdmVudC5oICovLAogCQkJCTU5QTg1RUFBMTE5RDdCNkUwMERF
RjFFRiAvKiBEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmlkbCAqLywKIAkJCQlBODE4NUYzNDA5NzY1
NzY1MDA1ODI2RDkgLyogRG9jdW1lbnQuY3BwICovLAorCQkJCUEzQkI1OUJEMTQ1NjUzMDQwMEFD
NTZGRSAvKiBEb2N1bWVudEV2ZW50UXVldWUuY3BwICovLAorCQkJCUEzQkI1OUJFMTQ1NjUzMDQw
MEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50UXVldWUuaCAqLywKIAkJCQlBODE4NUYzODA5NzY1NzY1
MDA1ODI2RDkgLyogRG9jdW1lbnQuaCAqLywKIAkJCQk2NTQ4RTI0ODA5RTFFMDREMDBBRjgwMjAg
LyogRG9jdW1lbnQuaWRsICovLAogCQkJCUE4MTg1RjM3MDk3NjU3NjUwMDU4MjZEOSAvKiBEb2N1
bWVudEZyYWdtZW50LmNwcCAqLywKQEAgLTIwOTYxLDcgKzIwOTY3LDYgQEAKIAkJCQlBRDQ0OTVG
MjE0MUZDMDg5MDA1NDFFREYgLyogRXZlbnRMaXN0ZW5lck1hcC5oICovLAogCQkJCTkzOTg4NUMx
MDhCN0UzRDEwMEU3MDdDNCAvKiBFdmVudE5hbWVzLmNwcCAqLywKIAkJCQk5Mzk4ODVDMjA4QjdF
M0QxMDBFNzA3QzQgLyogRXZlbnROYW1lcy5oICovLAotCQkJCThGNjc1NjFBMTI4OEIxN0IwMDQ3
QUNBMyAvKiBFdmVudFF1ZXVlLmNwcCAqLywKIAkJCQk4RjY3NTYxOTEyODhCMTdCMDA0N0FDQTMg
LyogRXZlbnRRdWV1ZS5oICovLAogCQkJCUUxMkVEQkU5MEIzMDhFMEIwMDI3MDRCNiAvKiBFdmVu
dFRhcmdldC5jcHAgKi8sCiAJCQkJRTEyRURCN0EwQjMwOEE3ODAwMjcwNEI2IC8qIEV2ZW50VGFy
Z2V0LmggKi8sCkBAIC0yNTQ2Miw3ICsyNTQ2Nyw2IEBACiAJCQkJQUQ0NDk1RjMxNDFGQzA4OTAw
NTQxRURGIC8qIEV2ZW50TGlzdGVuZXJNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNBMTlF
MDUwREMyNTU5NTAwNjVBOTk0IC8qIEV2ZW50TG9vcE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTkzOTg4NUMzMDhCN0UzRDEwMEU3MDdDNCAvKiBFdmVudE5hbWVzLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCThGNjc1NjFDMTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUwRkVGMzcyQjI3QzUzRUFDMUMxRkJFRSAvKiBFdmVudFNvdXJjZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFMTJFREJFQTBCMzA4RTBCMDAyNzA0QjYgLyogRXZlbnRUYXJn
ZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2MEQ4RjIwRDJBMTFFMDAwQjk5MThGIC8qIEV4
Y2VwdGlvbkJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRE9NQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNw
cAppbmRleCBmODI1ZGEwNzFjNTc2ODlmY2M5MmY4YmM0ZWZkYTAzYmEyZmM3Y2EyLi5mNzE4M2Ey
MjViNTAxMmMxYjY4NTBjODE1ZDNhNjc2MzFhZGJlNmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJ
bk9uZS5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNv
bnRyb2xsZXIuY3BwIgogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmNwcCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuY3BwIgog
I2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuY3BwIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2Vy
LmNwcCIKICNpbmNsdWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggYjNhNWFiMTUxYmIyODMxYTQzZGI0ZmFlOWIxN2I0OTgzZTBjZTJi
YS4uYjM2MzIwYzc2ZDMyM2Q3YzgwNTkyMzMyNDVkODE3OWJmYjljNjQyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRp
b24uaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5o
IgorI2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJh
Z21lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50
TWFya2VyQ29udHJvbGxlci5oIgpAQCAtNjAsNyArNjEsNiBAQAogI2luY2x1ZGUgIkV2ZW50SGFu
ZGxlci5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCi0jaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
ICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQuaCIKQEAgLTM4NSw3ICszODUsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZy
YW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpCiAgICAgLCBt
X2lzVmlld1NvdXJjZShmYWxzZSkKICAgICAsIG1fc2F3RWxlbWVudHNJbktub3duTmFtZXNwYWNl
cyhmYWxzZSkKICAgICAsIG1fdXNpbmdHZW9sb2NhdGlvbihmYWxzZSkKLSAgICAsIG1fZXZlbnRR
dWV1ZShFdmVudFF1ZXVlOjpjcmVhdGUodGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUoRG9jdW1l
bnRFdmVudFF1ZXVlOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3dlYWtSZWZlcmVuY2UoRG9jdW1l
bnRXZWFrUmVmZXJlbmNlOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2lkQXR0cmlidXRlTmFtZShp
ZEF0dHIpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRl
eCA3MjcwNWYwYjdkYmY4N2Y4MWQ4NjljNmFjZDE1NGJlZjRjN2VjNTU4Li45MmIwMDE4NTY0YjYy
YWQ0YjlmMDQ4OWI4MDA1Njc2NDc3MTQxMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkNvbGxlY3Rpb25UeXBlLmgiCiAjaW5jbHVkZSAiQ29sb3Iu
aCIKICNpbmNsdWRlICJET01UaW1lU3RhbXAuaCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVl
dWUuaCIKICNpbmNsdWRlICJEb2N1bWVudFRpbWluZy5oIgogI2luY2x1ZGUgIkljb25VUkwuaCIK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC04MSw3ICs4Miw2IEBAIGNsYXNzIEVsZW1lbnQ7CiBj
bGFzcyBFbnRpdHlSZWZlcmVuY2U7CiBjbGFzcyBFdmVudDsKIGNsYXNzIEV2ZW50TGlzdGVuZXI7
Ci1jbGFzcyBFdmVudFF1ZXVlOwogY2xhc3MgRm9udERhdGE7CiBjbGFzcyBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKQEAgLTEwMjYsNyArMTAyNiw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGVucXVldWVQYWdlc2hvd0V2ZW50KFBhZ2VzaG93RXZlbnRQZXJzaXN0ZW5jZSk7CiAg
ICAgdm9pZCBlbnF1ZXVlSGFzaGNoYW5nZUV2ZW50KGNvbnN0IFN0cmluZyYgb2xkVVJMLCBjb25z
dCBTdHJpbmcmIG5ld1VSTCk7CiAgICAgdm9pZCBlbnF1ZXVlUG9wc3RhdGVFdmVudChQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QpOwotICAgIEV2ZW50UXVldWUq
IGV2ZW50UXVldWUoKSBjb25zdCB7IHJldHVybiBtX2V2ZW50UXVldWUuZ2V0KCk7IH0KKyAgICB2
aXJ0dWFsIERvY3VtZW50RXZlbnRRdWV1ZSogZXZlbnRRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZXZlbnRRdWV1ZS5nZXQoKTsgfQogCiAgICAgdm9pZCBhZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIo
TWVkaWFDYW5TdGFydExpc3RlbmVyKik7CiAgICAgdm9pZCByZW1vdmVNZWRpYUNhblN0YXJ0TGlz
dGVuZXIoTWVkaWFDYW5TdGFydExpc3RlbmVyKik7CkBAIC0xMzY2LDcgKzEzNjYsNyBAQCBwcml2
YXRlOgogCiAgICAgYm9vbCBtX3VzaW5nR2VvbG9jYXRpb247CiAKLSAgICBSZWZQdHI8RXZlbnRR
dWV1ZT4gbV9ldmVudFF1ZXVlOworICAgIFJlZlB0cjxEb2N1bWVudEV2ZW50UXVldWU+IG1fZXZl
bnRRdWV1ZTsKIAogICAgIFJlZlB0cjxEb2N1bWVudFdlYWtSZWZlcmVuY2U+IG1fd2Vha1JlZmVy
ZW5jZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43ZWRmMjRmODhhNjY0NWJlNmRiOTJiYzZkYzU0YjE4MjQ3N2MwOWM1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKQEAgLTAs
MCArMSwxNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJEb2N1bWVudEV2ZW50UXVldWUuaCIKKworI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCisjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCisjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlN1c3BlbmRhYmxlVGltZXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorc3RhdGljIGlubGluZSBib29sIHNob3VsZERpc3Bh
dGNoU2Nyb2xsRXZlbnRTeW5jaHJvbm91c2x5KERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBB
U1NFUlRfQVJHKGRvY3VtZW50LCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGFwcGxpY2F0aW9uSXNT
YWZhcmkoKSAmJiAoZG9jdW1lbnQtPnVybCgpLnByb3RvY29sSXMoImZlZWQiKSB8fCBkb2N1bWVu
dC0+dXJsKCkucHJvdG9jb2xJcygiZmVlZHMiKSk7Cit9CisKK2NsYXNzIERvY3VtZW50RXZlbnRR
dWV1ZVRpbWVyIDogcHVibGljIFN1c3BlbmRhYmxlVGltZXIgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKERvY3VtZW50RXZlbnRRdWV1ZVRpbWVyKTsKK3B1YmxpYzoKKyAgICBEb2N1bWVudEV2
ZW50UXVldWVUaW1lcihEb2N1bWVudEV2ZW50UXVldWUqIGV2ZW50UXVldWUsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgICAgIDogU3VzcGVuZGFibGVUaW1lcihjb250ZXh0
KQorICAgICAgICAsIG1fZXZlbnRRdWV1ZShldmVudFF1ZXVlKSB7IH0KKworcHJpdmF0ZToKKyAg
ICB2aXJ0dWFsIHZvaWQgZmlyZWQoKSB7IG1fZXZlbnRRdWV1ZS0+cGVuZGluZ0V2ZW50VGltZXJG
aXJlZCgpOyB9CisgICAgRG9jdW1lbnRFdmVudFF1ZXVlKiBtX2V2ZW50UXVldWU7Cit9OworCitQ
YXNzUmVmUHRyPERvY3VtZW50RXZlbnRRdWV1ZT4gRG9jdW1lbnRFdmVudFF1ZXVlOjpjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IERvY3VtZW50RXZlbnRRdWV1ZShjb250ZXh0KSk7Cit9CisKK0RvY3VtZW50RXZlbnRRdWV1
ZTo6RG9jdW1lbnRFdmVudFF1ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisg
ICAgOiBtX3BlbmRpbmdFdmVudFRpbWVyKGFkb3B0UHRyKG5ldyBEb2N1bWVudEV2ZW50UXVldWVU
aW1lcih0aGlzLCBjb250ZXh0KSkpCisgICAgLCBtX2lzQ2xvc2VkKGZhbHNlKQoreworfQorCitE
b2N1bWVudEV2ZW50UXVldWU6On5Eb2N1bWVudEV2ZW50UXVldWUoKQoreworfQorCit2b2lkIERv
Y3VtZW50RXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQor
eworICAgIGlmIChtX2lzQ2xvc2VkKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoZXZl
bnQtPnRhcmdldCgpKTsKKyAgICBib29sIHdhc0FkZGVkID0gbV9xdWV1ZWRFdmVudHMuYWRkKGV2
ZW50KS5zZWNvbmQ7CisgICAgQVNTRVJUX1VOVVNFRCh3YXNBZGRlZCwgd2FzQWRkZWQpOyAvLyBJ
dCBzaG91bGQgbm90IGhhdmUgYWxyZWFkeSBiZWVuIGluIHRoZSBsaXN0LgorICAgIAorICAgIGlm
ICghbV9wZW5kaW5nRXZlbnRUaW1lci0+aXNBY3RpdmUoKSkKKyAgICAgICAgbV9wZW5kaW5nRXZl
bnRUaW1lci0+c3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIERvY3VtZW50RXZlbnRRdWV1ZTo6
ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCwgU2Ny
b2xsRXZlbnRUYXJnZXRUeXBlIHRhcmdldFR5cGUpCit7CisgICAgaWYgKCF0YXJnZXQtPmRvY3Vt
ZW50KCktPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6U0NST0xMX0xJU1RFTkVSKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgLy8gUGVyIHRoZSBXM0MgQ1NTT00gVmlldyBNb2R1bGUsIHNjcm9s
bCBldmVudHMgZmlyZWQgYXQgdGhlIGRvY3VtZW50IHNob3VsZCBidWJibGUsIG90aGVycyBzaG91
bGQgbm90LgorICAgIGJvb2wgY2FuQnViYmxlID0gdGFyZ2V0VHlwZSA9PSBTY3JvbGxFdmVudERv
Y3VtZW50VGFyZ2V0OworICAgIFJlZlB0cjxFdmVudD4gc2Nyb2xsRXZlbnQgPSBFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5zY3JvbGxFdmVudCwgY2FuQnViYmxlLCBmYWxzZSAvKiBub24gY2Fu
Y2VsbGVhYmxlICovKTsKKyAgICAgCisgICAgaWYgKHNob3VsZERpc3BhdGNoU2Nyb2xsRXZlbnRT
eW5jaHJvbm91c2x5KHRhcmdldC0+ZG9jdW1lbnQoKSkpIHsKKyAgICAgICAgdGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KHNjcm9sbEV2ZW50LnJlbGVhc2UoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoIW1fbm9kZXNXaXRoUXVldWVkU2Nyb2xsRXZlbnRzLmFkZCh0YXJnZXQuZ2V0
KCkpLnNlY29uZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2Nyb2xsRXZlbnQtPnNldFRhcmdl
dCh0YXJnZXQpOworICAgIGVucXVldWVFdmVudChzY3JvbGxFdmVudC5yZWxlYXNlKCkpOworfQor
Citib29sIERvY3VtZW50RXZlbnRRdWV1ZTo6Y2FuY2VsRXZlbnQoRXZlbnQqIGV2ZW50KQorewor
ICAgIGJvb2wgZm91bmQgPSBtX3F1ZXVlZEV2ZW50cy5jb250YWlucyhldmVudCk7CisgICAgbV9x
dWV1ZWRFdmVudHMucmVtb3ZlKGV2ZW50KTsKKyAgICBpZiAobV9xdWV1ZWRFdmVudHMuaXNFbXB0
eSgpKQorICAgICAgICBtX3BlbmRpbmdFdmVudFRpbWVyLT5zdG9wKCk7CisgICAgcmV0dXJuIGZv
dW5kOworfQorCit2b2lkIERvY3VtZW50RXZlbnRRdWV1ZTo6Y2xvc2UoKQoreworICAgIG1faXND
bG9zZWQgPSB0cnVlOworICAgIG1fcGVuZGluZ0V2ZW50VGltZXItPnN0b3AoKTsKKyAgICBtX3F1
ZXVlZEV2ZW50cy5jbGVhcigpOworfQorCit2b2lkIERvY3VtZW50RXZlbnRRdWV1ZTo6cGVuZGlu
Z0V2ZW50VGltZXJGaXJlZCgpCit7CisgICAgQVNTRVJUKCFtX3BlbmRpbmdFdmVudFRpbWVyLT5p
c0FjdGl2ZSgpKTsKKyAgICBBU1NFUlQoIW1fcXVldWVkRXZlbnRzLmlzRW1wdHkoKSk7CisKKyAg
ICBtX25vZGVzV2l0aFF1ZXVlZFNjcm9sbEV2ZW50cy5jbGVhcigpOworCisgICAgLy8gSW5zZXJ0
IGEgbWFya2VyIGZvciB3aGVyZSB3ZSBzaG91bGQgc3RvcC4KKyAgICBBU1NFUlQoIW1fcXVldWVk
RXZlbnRzLmNvbnRhaW5zKDApKTsKKyAgICBib29sIHdhc0FkZGVkID0gbV9xdWV1ZWRFdmVudHMu
YWRkKDApLnNlY29uZDsKKyAgICBBU1NFUlRfVU5VU0VEKHdhc0FkZGVkLCB3YXNBZGRlZCk7IC8v
IEl0IHNob3VsZCBub3QgaGF2ZSBhbHJlYWR5IGJlZW4gaW4gdGhlIGxpc3QuCisKKyAgICBSZWZQ
dHI8RG9jdW1lbnRFdmVudFF1ZXVlPiBwcm90ZWN0b3IodGhpcyk7CisKKyAgICB3aGlsZSAoIW1f
cXVldWVkRXZlbnRzLmlzRW1wdHkoKSkgeworICAgICAgICBMaXN0SGFzaFNldDxSZWZQdHI8RXZl
bnQ+ID46Oml0ZXJhdG9yIGl0ZXIgPSBtX3F1ZXVlZEV2ZW50cy5iZWdpbigpOworICAgICAgICBS
ZWZQdHI8RXZlbnQ+IGV2ZW50ID0gKml0ZXI7CisgICAgICAgIG1fcXVldWVkRXZlbnRzLnJlbW92
ZShpdGVyKTsKKyAgICAgICAgaWYgKCFldmVudCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBkaXNwYXRjaEV2ZW50KGV2ZW50LmdldCgpKTsKKyAgICB9Cit9CisKK3ZvaWQgRG9jdW1lbnRF
dmVudFF1ZXVlOjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQoreworICAg
IEV2ZW50VGFyZ2V0KiBldmVudFRhcmdldCA9IGV2ZW50LT50YXJnZXQoKTsKKyAgICBpZiAoZXZl
bnRUYXJnZXQtPnRvRE9NV2luZG93KCkpCisgICAgICAgIGV2ZW50VGFyZ2V0LT50b0RPTVdpbmRv
dygpLT5kaXNwYXRjaEV2ZW50KGV2ZW50LCAwKTsKKyAgICBlbHNlCisgICAgICAgIGV2ZW50VGFy
Z2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50RXZlbnRRdWV1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1ZWNhYTdlMWUzNDExMzRmZTBjMzU3MjczOTZm
YzkyNzEzNWFjYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRFdmVudFF1ZXVlLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lmbmRlZiBE
b2N1bWVudEV2ZW50UXVldWVfaAorI2RlZmluZSBEb2N1bWVudEV2ZW50UXVldWVfaAorCisjaW5j
bHVkZSAiRXZlbnRRdWV1ZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8
d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEV2ZW50OworY2xhc3MgRG9jdW1lbnRFdmVudFF1ZXVlVGltZXI7Citj
bGFzcyBOb2RlOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworY2xhc3MgRG9jdW1l
bnRFdmVudFF1ZXVlIDogcHVibGljIFJlZkNvdW50ZWQ8RG9jdW1lbnRFdmVudFF1ZXVlPiwgcHVi
bGljIEV2ZW50UXVldWUgeworcHVibGljOgorICAgIGVudW0gU2Nyb2xsRXZlbnRUYXJnZXRUeXBl
IHsKKyAgICAgICAgU2Nyb2xsRXZlbnREb2N1bWVudFRhcmdldCwKKyAgICAgICAgU2Nyb2xsRXZl
bnRFbGVtZW50VGFyZ2V0CisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50
RXZlbnRRdWV1ZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICB2aXJ0dWFs
IH5Eb2N1bWVudEV2ZW50UXVldWUoKTsKKworICAgIC8vIEV2ZW50UXVldWUKKyAgICB2aXJ0dWFs
IHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKKyAgICB2aXJ0dWFsIGJvb2wg
Y2FuY2VsRXZlbnQoRXZlbnQqKTsKKyAgICB2b2lkIGNsb3NlKCk7CisKKyAgICB2b2lkIGVucXVl
dWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiwgU2Nyb2xsRXZlbnRUYXJn
ZXRUeXBlKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEb2N1bWVudEV2ZW50UXVldWUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOworCisgICAgdm9pZCBwZW5kaW5nRXZlbnRUaW1lckZpcmVk
KCk7CisgICAgdm9pZCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKKworICAgIE93
blB0cjxEb2N1bWVudEV2ZW50UXVldWVUaW1lcj4gbV9wZW5kaW5nRXZlbnRUaW1lcjsKKyAgICBM
aXN0SGFzaFNldDxSZWZQdHI8RXZlbnQ+ID4gbV9xdWV1ZWRFdmVudHM7CisgICAgSGFzaFNldDxO
b2RlKj4gbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHM7CisgICAgYm9vbCBtX2lzQ2xvc2Vk
OworCisgICAgZnJpZW5kIGNsYXNzIERvY3VtZW50RXZlbnRRdWV1ZVRpbWVyOyAgICAKK307CisK
K30KKworI2VuZGlmIC8vIERvY3VtZW50RXZlbnRRdWV1ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1
ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZWUyNzcyMWY0MWI4Y2MwYzFi
ZGZlNTczYzI0ODJjZDk0OTVlN2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCi0KLSNpbmNsdWRlICJET01XaW5kb3cuaCIKLSNpbmNs
dWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkV2ZW50LmgiCi0jaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgotI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgotI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJTdXNwZW5kYWJsZVRpbWVyLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLXN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGREaXNw
YXRjaFNjcm9sbEV2ZW50U3luY2hyb25vdXNseShEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAg
QVNTRVJUX0FSRyhkb2N1bWVudCwgZG9jdW1lbnQpOwotICAgIHJldHVybiBhcHBsaWNhdGlvbklz
U2FmYXJpKCkgJiYgKGRvY3VtZW50LT51cmwoKS5wcm90b2NvbElzKCJmZWVkIikgfHwgZG9jdW1l
bnQtPnVybCgpLnByb3RvY29sSXMoImZlZWRzIikpOwotfQotCi1jbGFzcyBFdmVudFF1ZXVlVGlt
ZXIgOiBwdWJsaWMgU3VzcGVuZGFibGVUaW1lciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
RXZlbnRRdWV1ZVRpbWVyKTsKLXB1YmxpYzoKLSAgICBFdmVudFF1ZXVlVGltZXIoRXZlbnRRdWV1
ZSogZXZlbnRRdWV1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLSAgICAgICAg
OiBTdXNwZW5kYWJsZVRpbWVyKGNvbnRleHQpCi0gICAgICAgICwgbV9ldmVudFF1ZXVlKGV2ZW50
UXVldWUpIHsgfQotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpIHsgbV9ldmVu
dFF1ZXVlLT5wZW5kaW5nRXZlbnRUaW1lckZpcmVkKCk7IH0KLSAgICBFdmVudFF1ZXVlKiBtX2V2
ZW50UXVldWU7ICAgIAotfTsKLQotUGFzc1JlZlB0cjxFdmVudFF1ZXVlPiBFdmVudFF1ZXVlOjpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLXsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEV2ZW50UXVldWUoY29udGV4dCkpOwotfQotCi1FdmVudFF1ZXVlOjpFdmVudFF1
ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgOiBtX3BlbmRpbmdFdmVu
dFRpbWVyKGFkb3B0UHRyKG5ldyBFdmVudFF1ZXVlVGltZXIodGhpcywgY29udGV4dCkpKQotICAg
ICwgbV9pc0Nsb3NlZChmYWxzZSkKLXsKLX0KLQotRXZlbnRRdWV1ZTo6fkV2ZW50UXVldWUoKQot
ewotfQotCi12b2lkIEV2ZW50UXVldWU6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBl
dmVudCkKLXsKLSAgICBpZiAobV9pc0Nsb3NlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNT
RVJUKGV2ZW50LT50YXJnZXQoKSk7Ci0gICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVkRXZlbnRz
LmFkZChldmVudCkuc2Vjb25kOwotICAgIEFTU0VSVF9VTlVTRUQod2FzQWRkZWQsIHdhc0FkZGVk
KTsgLy8gSXQgc2hvdWxkIG5vdCBoYXZlIGFscmVhZHkgYmVlbiBpbiB0aGUgbGlzdC4KLSAgICAK
LSAgICBpZiAoIW1fcGVuZGluZ0V2ZW50VGltZXItPmlzQWN0aXZlKCkpCi0gICAgICAgIG1fcGVu
ZGluZ0V2ZW50VGltZXItPnN0YXJ0T25lU2hvdCgwKTsKLX0KLQotdm9pZCBFdmVudFF1ZXVlOjpl
bnF1ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0LCBTY3Jv
bGxFdmVudFRhcmdldFR5cGUgdGFyZ2V0VHlwZSkKLXsKLSAgICBpZiAoIXRhcmdldC0+ZG9jdW1l
bnQoKS0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpTQ1JPTExfTElTVEVORVIpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICAvLyBQZXIgdGhlIFczQyBDU1NPTSBWaWV3IE1vZHVsZSwgc2Nyb2xs
IGV2ZW50cyBmaXJlZCBhdCB0aGUgZG9jdW1lbnQgc2hvdWxkIGJ1YmJsZSwgb3RoZXJzIHNob3Vs
ZCBub3QuCi0gICAgYm9vbCBjYW5CdWJibGUgPSB0YXJnZXRUeXBlID09IFNjcm9sbEV2ZW50RG9j
dW1lbnRUYXJnZXQ7Ci0gICAgUmVmUHRyPEV2ZW50PiBzY3JvbGxFdmVudCA9IEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLnNjcm9sbEV2ZW50LCBjYW5CdWJibGUsIGZhbHNlIC8qIG5vbiBjYW5j
ZWxsZWFibGUgKi8pOwotICAgICAKLSAgICBpZiAoc2hvdWxkRGlzcGF0Y2hTY3JvbGxFdmVudFN5
bmNocm9ub3VzbHkodGFyZ2V0LT5kb2N1bWVudCgpKSkgewotICAgICAgICB0YXJnZXQtPmRpc3Bh
dGNoRXZlbnQoc2Nyb2xsRXZlbnQucmVsZWFzZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmICghbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHMuYWRkKHRhcmdldC5nZXQo
KSkuc2Vjb25kKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzY3JvbGxFdmVudC0+c2V0VGFyZ2V0
KHRhcmdldCk7Ci0gICAgZW5xdWV1ZUV2ZW50KHNjcm9sbEV2ZW50LnJlbGVhc2UoKSk7Ci19Ci0K
LWJvb2wgRXZlbnRRdWV1ZTo6Y2FuY2VsRXZlbnQoRXZlbnQqIGV2ZW50KQotewotICAgIGJvb2wg
Zm91bmQgPSBtX3F1ZXVlZEV2ZW50cy5jb250YWlucyhldmVudCk7Ci0gICAgbV9xdWV1ZWRFdmVu
dHMucmVtb3ZlKGV2ZW50KTsKLSAgICBpZiAobV9xdWV1ZWRFdmVudHMuaXNFbXB0eSgpKQotICAg
ICAgICBtX3BlbmRpbmdFdmVudFRpbWVyLT5zdG9wKCk7Ci0gICAgcmV0dXJuIGZvdW5kOwotfQot
Ci12b2lkIEV2ZW50UXVldWU6OmNsb3NlKCkKLXsKLSAgICBtX2lzQ2xvc2VkID0gdHJ1ZTsKLSAg
ICBtX3BlbmRpbmdFdmVudFRpbWVyLT5zdG9wKCk7Ci0gICAgbV9xdWV1ZWRFdmVudHMuY2xlYXIo
KTsKLX0KLQotdm9pZCBFdmVudFF1ZXVlOjpwZW5kaW5nRXZlbnRUaW1lckZpcmVkKCkKLXsKLSAg
ICBBU1NFUlQoIW1fcGVuZGluZ0V2ZW50VGltZXItPmlzQWN0aXZlKCkpOwotICAgIEFTU0VSVCgh
bV9xdWV1ZWRFdmVudHMuaXNFbXB0eSgpKTsKLQotICAgIG1fbm9kZXNXaXRoUXVldWVkU2Nyb2xs
RXZlbnRzLmNsZWFyKCk7Ci0KLSAgICAvLyBJbnNlcnQgYSBtYXJrZXIgZm9yIHdoZXJlIHdlIHNo
b3VsZCBzdG9wLgotICAgIEFTU0VSVCghbV9xdWV1ZWRFdmVudHMuY29udGFpbnMoMCkpOwotICAg
IGJvb2wgd2FzQWRkZWQgPSBtX3F1ZXVlZEV2ZW50cy5hZGQoMCkuc2Vjb25kOwotICAgIEFTU0VS
VF9VTlVTRUQod2FzQWRkZWQsIHdhc0FkZGVkKTsgLy8gSXQgc2hvdWxkIG5vdCBoYXZlIGFscmVh
ZHkgYmVlbiBpbiB0aGUgbGlzdC4KLQotICAgIFJlZlB0cjxFdmVudFF1ZXVlPiBwcm90ZWN0b3Io
dGhpcyk7Ci0KLSAgICB3aGlsZSAoIW1fcXVldWVkRXZlbnRzLmlzRW1wdHkoKSkgewotICAgICAg
ICBMaXN0SGFzaFNldDxSZWZQdHI8RXZlbnQ+ID46Oml0ZXJhdG9yIGl0ZXIgPSBtX3F1ZXVlZEV2
ZW50cy5iZWdpbigpOwotICAgICAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gKml0ZXI7Ci0gICAg
ICAgIG1fcXVldWVkRXZlbnRzLnJlbW92ZShpdGVyKTsKLSAgICAgICAgaWYgKCFldmVudCkKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBkaXNwYXRjaEV2ZW50KGV2ZW50LmdldCgpKTsKLSAg
ICB9Ci19Ci0KLXZvaWQgRXZlbnRRdWV1ZTo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50
PiBldmVudCkKLXsKLSAgICBFdmVudFRhcmdldCogZXZlbnRUYXJnZXQgPSBldmVudC0+dGFyZ2V0
KCk7Ci0gICAgaWYgKGV2ZW50VGFyZ2V0LT50b0RPTVdpbmRvdygpKQotICAgICAgICBldmVudFRh
cmdldC0+dG9ET01XaW5kb3coKS0+ZGlzcGF0Y2hFdmVudChldmVudCwgMCk7Ci0gICAgZWxzZQot
ICAgICAgICBldmVudFRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCk7Ci19Ci0KLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRRdWV1ZS5oCmluZGV4IGM5OTc5NzIwODFlZTVmMmFhYTU1ZWMwYWMwNjE0ZWQ0OWM5
ZTAxNTYuLmE2MTE5MDM3YTE4OWY3MTc1NzFhMjgwMDBjYjI4YTlmNGIzODJhOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50UXVldWUuaApAQCAtMjcsNDggKzI3LDIwIEBACiAjaWZuZGVmIEV2ZW50UXVldWVf
aAogI2RlZmluZSBFdmVudFF1ZXVlX2gKIAorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KLSNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBFdmVudDsKLWNsYXNzIEV2ZW50UXVldWVUaW1lcjsKLWNsYXNz
IE5vZGU7Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCi1jbGFzcyBFdmVudFF1ZXVl
IDogcHVibGljIFJlZkNvdW50ZWQ8RXZlbnRRdWV1ZT4geworY2xhc3MgRXZlbnRRdWV1ZSB7CiBw
dWJsaWM6Ci0gICAgZW51bSBTY3JvbGxFdmVudFRhcmdldFR5cGUgewotICAgICAgICBTY3JvbGxF
dmVudERvY3VtZW50VGFyZ2V0LAotICAgICAgICBTY3JvbGxFdmVudEVsZW1lbnRUYXJnZXQKLSAg
ICB9OwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8RXZlbnRRdWV1ZT4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKTsKLSAgICB+RXZlbnRRdWV1ZSgpOwotCi0gICAgdm9pZCBlbnF1ZXVl
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwotICAgIHZvaWQgZW5xdWV1ZU9yRGlzcGF0Y2hTY3Jv
bGxFdmVudChQYXNzUmVmUHRyPE5vZGU+LCBTY3JvbGxFdmVudFRhcmdldFR5cGUpOwotICAgIGJv
b2wgY2FuY2VsRXZlbnQoRXZlbnQqKTsKLQotICAgIC8vIFRoZSBhY2N1bXVsYXRlZCBhbmQgYWxs
IHRoZSBmdXR1cmUgZXZlbnRzIHdpbGwgYmUgZGlzY2FyZGVkLCBubyBldmVudHMgd2lsbCBiZSBk
aXNwYXRjaGVkIGFueW1vcmUuIAotICAgIHZvaWQgY2xvc2UoKTsKLQotcHJpdmF0ZToKLSAgICBl
eHBsaWNpdCBFdmVudFF1ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLQotICAgIHZvaWQg
cGVuZGluZ0V2ZW50VGltZXJGaXJlZCgpOwotICAgIHZvaWQgZGlzcGF0Y2hFdmVudChQYXNzUmVm
UHRyPEV2ZW50Pik7Ci0KLSAgICBPd25QdHI8RXZlbnRRdWV1ZVRpbWVyPiBtX3BlbmRpbmdFdmVu
dFRpbWVyOwotICAgIExpc3RIYXNoU2V0PFJlZlB0cjxFdmVudD4gPiBtX3F1ZXVlZEV2ZW50czsK
LSAgICBIYXNoU2V0PE5vZGUqPiBtX25vZGVzV2l0aFF1ZXVlZFNjcm9sbEV2ZW50czsKLSAgICBi
b29sIG1faXNDbG9zZWQ7Ci0KLSAgICBmcmllbmQgY2xhc3MgRXZlbnRRdWV1ZVRpbWVyOyAgICAK
KyAgICB2aXJ0dWFsIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KSA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGNhbmNlbEV2ZW50KEV2ZW50KikgPSAwOworICAgIC8vIFRoZSBhY2N1
bXVsYXRlZCBhbmQgYWxsIHRoZSBmdXR1cmUgZXZlbnRzIHdpbGwgYmUgZGlzY2FyZGVkLCBubyBl
dmVudHMgd2lsbCBiZSBkaXNwYXRjaGVkIGFueW1vcmUuCisgICAgdmlydHVhbCB2b2lkIGNsb3Nl
KCkgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKaW5kZXggZDQ0MmU2MjhiZmM3YTU2YzYxNzhjNWYzZGU3NzFmM2NmNzI3MGEyOC4uYzgx
YzU4YjA3MWNjYmNjNzc1YTliYTgxNTc3MzAwMmRhOTFjNGM2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC01Miw2ICs1Miw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBET01UaW1lcjsKICAgICBjbGFzcyBET01VUkw7CiAgICAg
Y2xhc3MgRXZlbnRMaXN0ZW5lcjsKKyAgICBjbGFzcyBFdmVudFF1ZXVlOwogICAgIGNsYXNzIEV2
ZW50VGFyZ2V0OwogICAgIGNsYXNzIE1lc3NhZ2VQb3J0OwogICAgIGNsYXNzIFNjcmlwdENhbGxT
dGFjazsKQEAgLTE3Miw2ICsxNzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgYWRqdXN0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG9sZE1pbmltdW1UaW1lckludGVy
dmFsKTsKICAgICAgICAgdmlydHVhbCBkb3VibGUgbWluaW11bVRpbWVySW50ZXJ2YWwoKSBjb25z
dDsKIAorICAgICAgICB2aXJ0dWFsIEV2ZW50UXVldWUqIGV2ZW50UXVldWUoKSBjb25zdCA9IDA7
CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIC8vIEV4cGxpY2l0bHkgb3ZlcnJpZGUgdGhlIHNl
Y3VyaXR5IG9yaWdpbiBmb3IgdGhpcyBzY3JpcHQgY29udGV4dC4KICAgICAgICAgLy8gTm90ZTog
SXQgaXMgZGFuZ2Vyb3VzIHRvIGNoYW5nZSB0aGUgc2VjdXJpdHkgb3JpZ2luIG9mIGEgc2NyaXB0
IGNvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBjZTY3NDRhNmY2
M2VmZTI1ODNlZWFlZWVmMDlkYTE2YzNjMzAwNTVkLi5hNWJjZjc3ZmUzY2JmMDk2NDIzZjhlZjll
Nzg2OThkODNkNWRkYmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0z
NCwxMSArMzQsMTEgQEAKICNpbmNsdWRlICJDdXJzb3IuaCIKICNpbmNsdWRlICJDdXJzb3JMaXN0
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUu
aCIKICNpbmNsdWRlICJEcmFnQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkRyYWdTdGF0ZS5oIgog
I2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJF
dmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgpAQCAtMzEwNyw3ICszMTA3LDcgQEAg
dm9pZCBFdmVudEhhbmRsZXI6OnNlbmRTY3JvbGxFdmVudCgpCiB7CiAgICAgc2V0RnJhbWVXYXNT
Y3JvbGxlZEJ5VXNlcigpOwogICAgIGlmIChtX2ZyYW1lLT52aWV3KCkgJiYgbV9mcmFtZS0+ZG9j
dW1lbnQoKSkKLSAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZXZlbnRRdWV1ZSgpLT5lbnF1
ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KG1fZnJhbWUtPmRvY3VtZW50KCksIEV2ZW50UXVldWU6
OlNjcm9sbEV2ZW50RG9jdW1lbnRUYXJnZXQpOworICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5ldmVudFF1ZXVlKCktPmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQobV9mcmFtZS0+ZG9j
dW1lbnQoKSwgRG9jdW1lbnRFdmVudFF1ZXVlOjpTY3JvbGxFdmVudERvY3VtZW50VGFyZ2V0KTsK
IH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OnNldEZyYW1lV2FzU2Nyb2xsZWRCeVVzZXIoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggYTEzM2ZjMTg5YWIzMGFi
NzNiOWE3YjE1ODIyMTNiN2JmNmM5NjQ0Mi4uZGQ2OGFiOTQxMzZmYTk2OTlkN2RlMDY5N2RlOTA1
NGQzM2VlZmVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBA
IC01MCw4ICs1MCw4IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUg
IkNocm9tZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRFdmVu
dFF1ZXVlLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCi0jaW5jbHVkZSAiRXZlbnRRdWV1
ZS5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgog
I2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgpAQCAtMTQ0Miw3ICsxNDQyLDcgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6c2Nyb2xsVG8oTGF5b3V0VW5pdCB4LCBMYXlvdXRVbml0IHkpCiAKICAgICAv
LyBTY2hlZHVsZSB0aGUgc2Nyb2xsIERPTSBldmVudC4KICAgICBpZiAocmVuZGVyZXIoKS0+bm9k
ZSgpKQotICAgICAgICByZW5kZXJlcigpLT5ub2RlKCktPmRvY3VtZW50KCktPmV2ZW50UXVldWUo
KS0+ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChyZW5kZXJlcigpLT5ub2RlKCksIEV2ZW50
UXVldWU6OlNjcm9sbEV2ZW50RWxlbWVudFRhcmdldCk7CisgICAgICAgIHJlbmRlcmVyKCktPm5v
ZGUoKS0+ZG9jdW1lbnQoKS0+ZXZlbnRRdWV1ZSgpLT5lbnF1ZXVlT3JEaXNwYXRjaFNjcm9sbEV2
ZW50KHJlbmRlcmVyKCktPm5vZGUoKSwgRG9jdW1lbnRFdmVudFF1ZXVlOjpTY3JvbGxFdmVudEVs
ZW1lbnRUYXJnZXQpOwogfQogCiB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxl
KGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YLCBj
b25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmNwcAppbmRleCBkZGY3OWMwZmI1ODU2NTAwZTQyNWU3MmZkY2E1MWNiNGE5
ZGFjMDQxLi4yMGEwMGI3ZTRlNWE1M2M3OWE0ZjIyZTYwNDBjYTFiZDVkMTI1MmM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC0zNCw4ICszNCw4IEBA
CiAjaW5jbHVkZSAiQ1NTRm9udFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rv
ci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRFdmVudFF1ZXVl
LmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCi0jaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgog
I2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lLmgiCkBAIC02MjIsNyArNjIyLDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94Ojpz
Y3JvbGxUbyhpbnQgbmV3T2Zmc2V0KQogCiAgICAgbV9pbmRleE9mZnNldCA9IG5ld09mZnNldDsK
ICAgICByZXBhaW50KCk7Ci0gICAgbm9kZSgpLT5kb2N1bWVudCgpLT5ldmVudFF1ZXVlKCktPmVu
cXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQobm9kZSgpLCBFdmVudFF1ZXVlOjpTY3JvbGxFdmVu
dEVsZW1lbnRUYXJnZXQpOworICAgIG5vZGUoKS0+ZG9jdW1lbnQoKS0+ZXZlbnRRdWV1ZSgpLT5l
bnF1ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KG5vZGUoKSwgRG9jdW1lbnRFdmVudFF1ZXVlOjpT
Y3JvbGxFdmVudEVsZW1lbnRUYXJnZXQpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckxpc3RCb3g6
Oml0ZW1IZWlnaHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcApp
bmRleCA3Yzk5ZDk3OWFjOGYzOTZiN2Y3ZThiMWY5M2IyYzY4OGVjZDY0YzI2Li45NmJmM2IzOTFl
ZGZlZWQ1ZWJlNzMzNmUzYTEzYzQzZjc0ODJmOTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkRhdGFiYXNlLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgi
CiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkV2ZW50UXVldWUuaCIKKyNpbmNs
dWRlICJEb2N1bWVudEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJJREJBbnkuaCIKICNpbmNsdWRl
ICJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9y
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAppbmRleCA2NDMwZDI1MTEyYzI1
M2FjMTEyODZhYzA5NTQ0NzZiYTA3MjUxYjI2Li5hMmE0MzAwZGIzOWIxNDJmMTViNzgxMDdjMWU0
Zjk4ZjgyMDU0Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKQEAgLTMy
LDEwICszMiwxMCBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJF
dmVudEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIklEQkN1cnNv
cldpdGhWYWx1ZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSURCRXZl
bnREaXNwYXRjaGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRy
YW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3Bw
CmluZGV4IDFhNGU3ZjMxNWE0ZWY3OGNjOWM4NmQyMGQ4NjkzMjhmNjhmODQ2ODUuLmNjYzgxYWU0
NWFjYzYyMjhiMjgyOTVlYWZmZWFhMjIzYzEzZGFiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0yOSw4ICsyOSw4IEBACiAjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50
RXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiRXZl
bnRRdWV1ZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJh
c2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJFdmVudERpc3BhdGNoZXIuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCmluZGV4IDAzZDQ4OGMzM2JmYWU4MDBmOTA0
ODgwOGZhYWFiMjNlMzZhM2VhMDYuLmM4N2Y3MTJiMTE3YjJhMTFkODI2ZjA2OTY5NDUyYWRiYTUw
ZGY4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcApAQCAtNTA2
LDYgKzUwNiwxMSBAQCB2b2lkIFdvcmtlckNvbnRleHQ6Om5vdGlmeU9ic2VydmVyc09mU3RvcCgp
CiAgICAgfQogfQogCitXb3JrZXJFdmVudFF1ZXVlKiBXb3JrZXJDb250ZXh0OjpldmVudFF1ZXVl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ldmVudFF1ZXVlLmdldCgpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKaW5kZXggYWM0NTc3YjIzNjFhY2Q3ZDkxNjU0MDcxM2Jl
M2EyNTk2ZWFlODJlZi4uNWZkZDQ3MmVhMWEwODZhY2U4YjNmZmI4OWNkNWIxZjdjYTBhZmVkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV29ya2VyRXZlbnRRdWV1
ZS5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0xMTAsNiArMTExLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8vIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQKICAgICAgICAgdmlydHVhbCB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2Fn
ZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3Rh
Y2s+KTsKKyAgICAgICAgdmlydHVhbCBXb3JrZXJFdmVudFF1ZXVlKiBldmVudFF1ZXVlKCkgY29u
c3Q7CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICAgICAgTm90aWZpY2F0aW9uQ2Vu
dGVyKiB3ZWJraXROb3RpZmljYXRpb25zKCkgY29uc3Q7CkBAIC0yMTIsNiArMjE0LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERh
dGE7CiAKICAgICAgICAgSGFzaFNldDxPYnNlcnZlcio+IG1fd29ya2VyT2JzZXJ2ZXJzOworCisg
ICAgICAgIE93blB0cjxXb3JrZXJFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7CiAgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZl
bnRRdWV1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGEzZWMwMTFiZTg5N2JlMjU4ZjZkODM1MWJjZWJjMDlh
YTI3MmJmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
RXZlbnRRdWV1ZS5jcHAKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrZXJFdmVudFF1ZXVlLmgiCisKKyNpbmNsdWRlICJE
T01XaW5kb3cuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisj
aW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPFdvcmtlckV2ZW50UXVldWU+
IFdvcmtlckV2ZW50UXVldWU6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgV29ya2VyRXZlbnRRdWV1ZShjb250ZXh0KSk7
Cit9CisKK1dvcmtlckV2ZW50UXVldWU6OldvcmtlckV2ZW50UXVldWUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKKyAgICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0
KQorICAgICwgbV9pc0Nsb3NlZChmYWxzZSkKK3sKK30KKworV29ya2VyRXZlbnRRdWV1ZTo6fldv
cmtlckV2ZW50UXVldWUoKQoreworICAgIGNsb3NlKCk7Cit9CisKK2NsYXNzIFdvcmtlckV2ZW50
UXVldWU6OkV2ZW50RGlzcGF0Y2hlclRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8RXZlbnREaXNwYXRjaGVy
VGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBXb3JrZXJFdmVudFF1ZXVlKiBl
dmVudFF1ZXVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFdmVudERpc3Bh
dGNoZXJUYXNrKGV2ZW50LCBldmVudFF1ZXVlKSk7CisgICAgfQorCisgICAgdm9pZCBkaXNwYXRj
aEV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkK
KyAgICB7CisgICAgICAgIGV2ZW50LT50YXJnZXQoKS0+ZGlzcGF0Y2hFdmVudChldmVudCk7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAobV9pc0NhbmNlbGxlZCkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgbV9ldmVudFF1ZXVlLT5yZW1vdmVFdmVudChtX2V2ZW50Lmdl
dCgpKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChjb250ZXh0LCBtX2V2ZW50KTsKKyAgICB9CisK
KyAgICB2b2lkIGNhbmNlbCgpCisgICAgeworICAgICAgICBtX2lzQ2FuY2VsbGVkID0gdHJ1ZTsK
KyAgICAgICAgbV9ldmVudC5jbGVhcigpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBFdmVudERp
c3BhdGNoZXJUYXNrKFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBXb3JrZXJFdmVudFF1ZXVlKiBl
dmVudFF1ZXVlKQorICAgICAgICA6IG1fZXZlbnQoZXZlbnQpCisgICAgICAgICwgbV9ldmVudFF1
ZXVlKGV2ZW50UXVldWUpCisgICAgICAgICwgbV9pc0NhbmNlbGxlZChmYWxzZSkKKyAgICB7Cisg
ICAgfQorCisgICAgUmVmUHRyPEV2ZW50PiBtX2V2ZW50OworICAgIFdvcmtlckV2ZW50UXVldWUq
IG1fZXZlbnRRdWV1ZTsKKyAgICBib29sIG1faXNDYW5jZWxsZWQ7Cit9OworCit2b2lkIFdvcmtl
ckV2ZW50UXVldWU6OnJlbW92ZUV2ZW50KEV2ZW50KiBldmVudCkKK3sKKyAgICBtX2V2ZW50VGFz
a01hcC5yZW1vdmUoZXZlbnQpOworfQorCit2b2lkIFdvcmtlckV2ZW50UXVldWU6OmVucXVldWVF
dmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCkKK3sKKyAgICBpZiAobV9pc0Nsb3NlZCkK
KyAgICAgICAgcmV0dXJuOworICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBwcnBFdmVudDsKKyAg
ICBPd25QdHI8RXZlbnREaXNwYXRjaGVyVGFzaz4gdGFzayA9IEV2ZW50RGlzcGF0Y2hlclRhc2s6
OmNyZWF0ZShldmVudCwgdGhpcyk7CisgICAgbV9ldmVudFRhc2tNYXAuYWRkKGV2ZW50LnJlbGVh
c2UoKSwgdGFzay5nZXQoKSk7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFz
ayh0YXNrLnJlbGVhc2UoKSk7Cit9CisKK2Jvb2wgV29ya2VyRXZlbnRRdWV1ZTo6Y2FuY2VsRXZl
bnQoRXZlbnQqIGV2ZW50KQoreworICAgIEV2ZW50RGlzcGF0Y2hlclRhc2sqIHRhc2sgPSBtX2V2
ZW50VGFza01hcC5nZXQoZXZlbnQpOworICAgIGlmICghdGFzaykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHRhc2stPmNhbmNlbCgpOworICAgIHJlbW92ZUV2ZW50KGV2ZW50KTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXb3JrZXJFdmVudFF1ZXVlOjpjbG9zZSgpCit7CisgICAg
bV9pc0Nsb3NlZCA9IHRydWU7CisgICAgZm9yIChFdmVudFRhc2tNYXA6Oml0ZXJhdG9yIGl0ID0g
bV9ldmVudFRhc2tNYXAuYmVnaW4oKTsgaXQgIT0gbV9ldmVudFRhc2tNYXAuZW5kKCk7ICsraXQp
IHsKKyAgICAgICAgRXZlbnREaXNwYXRjaGVyVGFzayogdGFzayA9IGl0LT5zZWNvbmQ7CisgICAg
ICAgIHRhc2stPmNhbmNlbCgpOworICAgIH0KKyAgICBtX2V2ZW50VGFza01hcC5jbGVhcigpOwor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVl
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdkMTNhYTM0NDg1ODFjZmEwNjc3MzhiNTBjNDdhM2I0MjU1NTViZGUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuaApAQCAtMCww
ICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIFdvcmtlckV2ZW50UXVldWVfaAorI2Rl
ZmluZSBXb3JrZXJFdmVudFF1ZXVlX2gKKworI2luY2x1ZGUgIkV2ZW50UXVldWUuaCIKKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEV2ZW50OworY2xhc3MgTm9kZTsKK2NsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIFdvcmtlckV2ZW50UXVldWUgOiBwdWJsaWMgUmVmQ291
bnRlZDxXb3JrZXJFdmVudFF1ZXVlPiwgcHVibGljIEV2ZW50UXVldWUgeworcHVibGljOgorCisg
ICAgc3RhdGljIFBhc3NPd25QdHI8V29ya2VyRXZlbnRRdWV1ZT4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqKTsKKyAgICB2aXJ0dWFsIH5Xb3JrZXJFdmVudFF1ZXVlKCk7CisKKyAgICAv
LyBFdmVudFF1ZXVlCisgICAgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwor
ICAgIGJvb2wgY2FuY2VsRXZlbnQoRXZlbnQqKTsKKyAgICB2b2lkIGNsb3NlKCk7CisKK3Byb3Rl
Y3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRXZlbnQoRXZlbnQqKTsKKyAgICBleHBsaWNp
dCBXb3JrZXJFdmVudFF1ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworcHJpdmF0ZToK
KyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Cisg
ICAgYm9vbCBtX2lzQ2xvc2VkOworCisgICAgY2xhc3MgRXZlbnREaXNwYXRjaGVyVGFzazsKKyAg
ICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEV2ZW50PiwgRXZlbnREaXNwYXRjaGVyVGFzayo+IEV2
ZW50VGFza01hcDsKKyAgICBFdmVudFRhc2tNYXAgbV9ldmVudFRhc2tNYXA7Cit9OworCit9CisK
KyNlbmRpZiAvLyBXb3JrZXJFdmVudFF1ZXVlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112295</attachid>
            <date>2011-10-24 20:06:53 -0700</date>
            <delta_ts>2011-10-25 13:10:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57789-20111024200652.patch</filename>
            <type>text/plain</type>
            <size>48766</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTgzMTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyYjUwYzcyZjc4NzI0OTI2
NTI1YTgwZTVhOGMzMzM4Y2JmZGQyMTk5Li5jZDYyNDVhZmI5MjYzZjEzNDkwMDk5ZWExY2FmMzg1
ZmQ3NjU2Y2Y5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTEtMTAtMjQgIERhdmlk
IEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1vdmUgZXZlbnRxdWV1
ZSBmcm9tIERvY3VtZW50IHRvIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgc28gdGhhdCBpdCBjYW4g
YmUgYWNjZXNzZWQgZnJvbSB3b3JrZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01Nzc4OQorCisgICAgICAgIEV4dHJhY3QgaW50ZXJmYWNlIGZyb20g
RXZlbnRRdWV1ZSBhbmQgY3JlYXRlIHR3byBuZXcgc3ViY2xhc3NlczoKKyAgICAgICAgRG9jdW1l
bnRFdmVudFF1ZXVlIGFuZCBXb3JrZXJFdmVudFF1ZXVlLiAgRG9jdW1lbnRFdmVudFF1ZXVlIGlz
IHRoZQorICAgICAgICBvbGQgRXZlbnRRdWV1ZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHVzZXMgRE9N
VGltZXIoMCkgdG8gcG9zdCBhc3luYworICAgICAgICBldmVudHMuICBXb3JrZXJFdmVudFF1ZXVl
IHBvc3RzIGV2ZW50cyB0byBpdHMgdGhyZWFkJ3MgbWVzc2FnZSBsb29wLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtIEluZGV4
ZWREQiB3aWxsIHVzZSB0aGlzIGJ1dCBpc24ndCByZWFkeSB5ZXQuICBJIGRvbid0CisgICAgICAg
IGtub3cgb2YgYW55IG90aGVyIEFQSSBhdmFpbGFibGUgaW4gd29ya2VycyB0aGF0IEkgY2FuIHRl
c3QgdGhpcyB3aXRoLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9ET01BbGxJbk9uZS5j
cHA6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6ZXZlbnRRdWV1ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50RXZlbnRR
dWV1ZS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5jcHAu
CisgICAgICAgIChXZWJDb3JlOjpzaG91bGREaXNwYXRjaFNjcm9sbEV2ZW50U3luY2hyb25vdXNs
eSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWVUaW1lcjo6RG9jdW1lbnRF
dmVudFF1ZXVlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlVGlt
ZXI6OmZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6RG9jdW1lbnRFdmVudFF1
ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6fkRvY3VtZW50RXZl
bnRRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVPckRp
c3BhdGNoU2Nyb2xsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVl
OjpjYW5jZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmNs
b3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6cGVuZGluZ0V2ZW50
VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmRpc3Bh
dGNoRXZlbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuaC4KKyAgICAgICAgKiBkb20vRXZlbnRR
dWV1ZS5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
ICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOiBDaGFuZ2UgRXZlbnRRdWV1ZSB0byBEb2N1bWVudEV2
ZW50UXVldWUuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbmRTY3JvbGxFdmVu
dCk6IENoYW5nZSBFdmVudFF1ZXVlIHRvIERvY3VtZW50RXZlbnRRdWV1ZS4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnNjcm9sbFRvKTogQ2hhbmdlIEV2ZW50UXVldWUgdG8gRG9jdW1lbnRFdmVudFF1ZXVlLgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxpc3RCb3g6OnNjcm9sbFRvKTogQ2hhbmdlIEV2ZW50UXVldWUgdG8gRG9jdW1lbnRFdmVu
dFF1ZXVlLgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAqIHN0
b3JhZ2UvSURCUmVxdWVzdC5jcHA6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5j
cHA6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckNvbnRleHQ6OmV2ZW50UXVldWUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
Q29udGV4dC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OldvcmtlckV2ZW50UXVldWUpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6fldvcmtlckV2ZW50UXVldWUpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6RXZlbnREaXNwYXRjaGVyVGFzazo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlclRhc2s6
OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6RXZl
bnREaXNwYXRjaGVyVGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
RXZlbnRRdWV1ZTo6RXZlbnREaXNwYXRjaGVyVGFzazo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlclRhc2s6OkV2ZW50RGlzcGF0Y2hl
clRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6cmVtb3ZlRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmNhbmNlbEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmNsb3NlKToKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlckV2ZW50UXVldWUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVl
dWUuaC4KKwogMjAxMS0xMC0yNCAgTHVrZSBNYWNwaGVyc29uICAgPG1hY3BoZXJzb25AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04oODA4OTMpOiBIVE1MNSBzcGVjIHRha2VzIDJz
IGxvbmdlciB0byBsb2FkIGR1ZSB0byB0aW1lIHNwZW50IGluIENTU1N0eWxlU2VsZWN0b3IKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggMzExMjdmOTk4NDc1Nzg5YzBkMmFiY2U5ZTM2NTcyZGE3NjU2
ZGFmNC4uMmRhMjU4MmZhYTYwZTNjMjA1YjRmMGJmYmFkMjI0OTRkMDlkOGYxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTUzMyw2ICs1MzMsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
ZG9tL0RvY3VtZW50LmNwcAogICAgIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCiAg
ICAgZG9tL0RvY3VtZW50TWFya2VyLmNwcAorICAgIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3Bw
CiAgICAgZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCiAgICAgZG9tL0RvY3VtZW50UGFyc2VyLmNw
cAogICAgIGRvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCkBAIC01NTIsNyArNTUzLDYgQEAgU0VU
KFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9FdmVudExpc3RlbmVyTWFwLmNwcAogICAgIGRvbS9F
dmVudE5hbWVzLmNwcAogICAgIGRvbS9FdmVudFRhcmdldC5jcHAKLSAgICBkb20vRXZlbnRRdWV1
ZS5jcHAKICAgICBkb20vRXhjZXB0aW9uQmFzZS5jcHAKICAgICBkb20vRXhjZXB0aW9uQ29kZS5j
cHAKICAgICBkb20vRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmNwcApAQCAtMjAxMyw2ICsyMDEz
LDcgQEAgSUYgKEVOQUJMRV9XT1JLRVJTKQogICAgICAgICB3b3JrZXJzL0RlZGljYXRlZFdvcmtl
clRocmVhZC5jcHAKICAgICAgICAgd29ya2Vycy9Xb3JrZXIuY3BwCiAgICAgICAgIHdvcmtlcnMv
V29ya2VyQ29udGV4dC5jcHAKKyAgICAgICAgd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcAog
ICAgICAgICB3b3JrZXJzL1dvcmtlckxvY2F0aW9uLmNwcAogICAgICAgICB3b3JrZXJzL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmNwcAogICAgICAgICB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAxNWY1OTBlNWZlNDEzZTE2NDUzMzBjMTBj
OTg2YjdkOTAzNTliMjI2Li42NGViNjBkNmRiNWVmYzg5ZDBkOTBhYWY1Njg0YmE0NDRjNzk0MDI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTExNzAsNiArMTE3MCw4IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZl
bnRRdWV1ZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuaCBc
CiAJU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50TWFya2VyLmNwcCBcCkBAIC0xMjE4LDcgKzEyMjAsNiBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9FeGNl
cHRpb25CYXNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkJhc2UuaCBcCkBA
IC0zODkzLDYgKzM4OTQsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHRQcm94
eS5oIFwKKwlTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuaCBcCiAJU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5o
IFwKIAlTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IGZjYWZjYjlhMDI3M2Q3NDY2M2ZhYWQyOTJkZDU5MTdhNTBlM2Y2YTYuLmQ3
ZTBkYzQ1MjkxOTM0ZTExMjNiMDY5ZDE2MTYyZmRhOTdhZDFmZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTUwMjYsNiArNTAyNiw4IEBACiAgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJDb250ZXh0
LmNwcCcsCiAgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgnLAogICAgICAgICAg
ICAgJ3dvcmtlcnMvV29ya2VyQ29udGV4dFByb3h5LmgnLAorICAgICAgICAgICAgJ3dvcmtlcnMv
V29ya2VyRXZlbnRRdWV1ZS5jcHAnLAorICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyRXZlbnRR
dWV1ZS5oJywKICAgICAgICAgICAgICd3b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgnLAogICAg
ICAgICAgICAgJ3dvcmtlcnMvV29ya2VyTG9jYXRpb24uY3BwJywKICAgICAgICAgICAgICd3b3Jr
ZXJzL1dvcmtlckxvY2F0aW9uLmgnLApAQCAtNTE4Miw2ICs1MTg0LDggQEAKICAgICAgICAgICAg
ICdkb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9EZXZp
Y2VPcmllbnRhdGlvbkV2ZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudC5jcHAnLAor
ICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwJywKKyAgICAgICAgICAgICdk
b20vRG9jdW1lbnRFdmVudFF1ZXVlLmgnLAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudEZyYWdt
ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAn
LAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudE1hcmtlci5jcHAnLApAQCAtNTIwOSw3ICs1MjEz
LDYgQEAKICAgICAgICAgICAgICdkb20vRXZlbnRFeGNlcHRpb24uaCcsCiAgICAgICAgICAgICAn
ZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwJywKICAgICAgICAgICAgICdkb20vRXZlbnROYW1lcy5j
cHAnLAotICAgICAgICAgICAgJ2RvbS9FdmVudFF1ZXVlLmNwcCcsCiAgICAgICAgICAgICAnZG9t
L0V2ZW50UXVldWUuaCcsCiAgICAgICAgICAgICAnZG9tL0V2ZW50VGFyZ2V0LmNwcCcsCiAgICAg
ICAgICAgICAnZG9tL0V4Y2VwdGlvbkJhc2UuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggODIzNGRm
M2EwYzdjMzJiODFiMGE4MDliYzAzZjM5YmQwYTVmZWU1ZS4uYzJjNDU3NDdmMWJhM2RiMjQ2MTg4
NDljYTc1M2MxNmEyZTVhOTFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTQ4NCw2ICs0ODQsNyBAQCBT
T1VSQ0VTICs9IFwKICAgICBkb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcCBcCiAg
ICAgZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwIFwKICAgICBkb20vRG9jdW1lbnQuY3Bw
IFwKKyAgICBkb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCBcCiAgICAgZG9tL0RvY3VtZW50RnJh
Z21lbnQuY3BwIFwKICAgICBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBcCiAgICAg
ZG9tL0RvY3VtZW50TWFya2VyLmNwcCBcCkBAIC01MDYsNyArNTA3LDYgQEAgU09VUkNFUyArPSBc
CiAgICAgZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwIFwKICAgICBkb20vRXZlbnROYW1lcy5jcHAg
XAogICAgIGRvbS9FdmVudFRhcmdldC5jcHAgXAotICAgIGRvbS9FdmVudFF1ZXVlLmNwcCBcCiAg
ICAgZG9tL0V4Y2VwdGlvbkJhc2UuY3BwIFwKICAgICBkb20vRXhjZXB0aW9uQ29kZS5jcHAgXAog
ICAgIGRvbS9FeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuY3BwIFwKQEAgLTE1NTYsNiArMTU1Niw3
IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9FdmVudERpc3BhdGNoTWVkaWF0b3IuaCBcCiAgICAg
ZG9tL0V2ZW50TGlzdGVuZXJNYXAuaCBcCiAgICAgZG9tL0V2ZW50TmFtZXMuaCBcCisgICAgZG9t
L0V2ZW50UXVldWUuaCBcCiAgICAgZG9tL0V2ZW50VGFyZ2V0LmggXAogICAgIGRvbS9FeGNlcHRp
b25CYXNlLmggXAogICAgIGRvbS9FeGNlcHRpb25Db2RlLmggXApAQCAtMjYxMSw2ICsyNjEyLDcg
QEAgSEVBREVSUyArPSBcCiAgICAgd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCBcCiAg
ICAgd29ya2Vycy9TaGFyZWRXb3JrZXIuaCBcCiAgICAgd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmgg
XAorICAgIHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oIFwKICAgICB3b3JrZXJzL1dvcmtlci5o
IFwKICAgICB3b3JrZXJzL1dvcmtlckxvY2F0aW9uLmggXAogICAgIHdvcmtlcnMvV29ya2VyTWVz
c2FnaW5nUHJveHkuaCBcCkBAIC0zMDE1LDYgKzMwMTcsNyBAQCBjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfV09SS0VSUz0xKSB7CiAgICAgICAgIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFk
LmNwcCBcCiAgICAgICAgIHdvcmtlcnMvV29ya2VyLmNwcCBcCiAgICAgICAgIHdvcmtlcnMvV29y
a2VyQ29udGV4dC5jcHAgXAorICAgICAgICB3b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwIFwK
ICAgICAgICAgd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAgXAogICAgICAgICB3b3JrZXJzL1dv
cmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBcCiAgICAgICAgIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGUyNjU5MDM1NjRhZmZhOTRkNDgyNTAzN2ZiMDY5MDJiODFiMzQ3Y2EuLjQwMTAw
ZWFlZmU3ZDFjYWMwNjNhNTBiZThiMTY4OTZmYmUxZTQ2ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI5MTQsNyArMjkxNCw2
IEBACiAJCThDQURGMkFEMTM1QzdCMzYwMDlFRjQzRiAvKiBMZXZlbERCSXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhDQURGMkE3MTM1QzdC
MzYwMDlFRjQzRiAvKiBMZXZlbERCSXRlcmF0b3IuaCAqLzsgfTsKIAkJOENBREYyQUUxMzVDN0Iz
NjAwOUVGNDNGIC8qIExldmVsREJTbGljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOENBREYyQTgxMzVDN0IzNjAwOUVGNDNGIC8qIExldmVsREJTbGlj
ZS5oICovOyB9OwogCQk4RjY3NTYxQjEyODhCMTdCMDA0N0FDQTMgLyogRXZlbnRRdWV1ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEY2NzU2MTkxMjg4
QjE3QjAwNDdBQ0EzIC8qIEV2ZW50UXVldWUuaCAqLzsgfTsKLQkJOEY2NzU2MUMxMjg4QjE3QjAw
NDdBQ0EzIC8qIEV2ZW50UXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOEY2NzU2MUExMjg4QjE3QjAwNDdBQ0EzIC8qIEV2ZW50UXVldWUuY3Bw
ICovOyB9OwogCQk4RkFDNzc0RDExOTg3MkNCMDAxNUFFOTQgLyogSlNNYWluVGhyZWFkRXhlY1N0
YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhG
OTM0RDg0MTE4OUYxRUUwMDUwOEQ1RCAvKiBKU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwICovOyB9
OwogCQk5MDAxNzc0MDEyRTAzNDc4MDA2NDg0NjIgLyogT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDAxNzcz
RDEyRTAzNDc4MDA2NDg0NjIgLyogT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHAgKi87IH07CiAJ
CTkwMDE3NzQxMTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDAxNzczRTEyRTAz
NDc4MDA2NDg0NjIgLyogT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oICovOyB9OwpAQCAtMTAwNDYs
NyArMTAwNDUsNiBAQAogCQk4Q0FERjJBNzEzNUM3QjM2MDA5RUY0M0YgLyogTGV2ZWxEQkl0ZXJh
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExldmVsREJJdGVyYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Q0FERjJBODEzNUM3QjM2MDA5RUY0M0Yg
LyogTGV2ZWxEQlNsaWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExldmVs
REJTbGljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4RjY3NTYxOTEyODhCMTdC
MDA0N0FDQTMgLyogRXZlbnRRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBFdmVudFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCThGNjc1NjFBMTI4
OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEV2ZW50UXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4RjkzNEQ4MzExODlGMUVFMDA1MDhENUQgLyogSlNNYWluVGhyZWFkRXhlY1N0YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4RjkzNEQ4NDExODlGMUVFMDA1MDhENUQgLyog
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkwMDE3NzNEMTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE9FU1N0YW5kYXJkRGVy
aXZhdGl2ZXMuY3BwOyBwYXRoID0gY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA0ODIsNiArMTA0ODAsMTAgQEAKIAkJQTFF
MTE1NDMxMzAxNUMzRDAwNTRBQzhDIC8qIERpc3RhbnRMaWdodFNvdXJjZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEaXN0YW50TGlnaHRTb3VyY2UuY3BwOyBwYXRo
ID0gZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBMUUxMTU0NTEzMDE1QzRFMDA1NEFDOEMgLyogUG9pbnRMaWdodFNvdXJjZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQb2ludExpZ2h0U291cmNlLmNw
cDsgcGF0aCA9IGZpbHRlcnMvUG9pbnRMaWdodFNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUExRTExNTQ3MTMwMTVDNUQwMDU0QUM4QyAvKiBTcG90TGlnaHRTb3VyY2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3BvdExpZ2h0U291cmNl
LmNwcDsgcGF0aCA9IGZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTNCQjU5QkQxNDU2NTMwNDAwQUM1NkZFIC8qIERvY3VtZW50RXZlbnRR
dWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudEV2
ZW50UXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0JCNTlCRTE0NTY1
MzA0MDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERvY3VtZW50RXZlbnRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBM0JCNTlDMjE0NTY1MzNEMDBBQzU2RkUgLyogV29ya2VyRXZlbnRRdWV1ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXb3JrZXJFdmVudFF1ZXVlLmNw
cDsgcGF0aCA9IHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSBTT1VS
Q0VfUk9PVDsgfTsKKwkJQTNCQjU5QzMxNDU2NTMzRDAwQUM1NkZFIC8qIFdvcmtlckV2ZW50UXVl
dWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV29ya2VyRXZlbnRRdWV1ZS5o
OyBwYXRoID0gd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKIAkJQTQwOUM5ODIxMTZEMERERDAwNzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9n
cmVzc0luZGljYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
Y2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNDA5Qzk4MzExNkQwREREMDA3MTk3QkQgLyogQWNjZXNzaWJpbGl0eVByb2dyZXNz
SW5kaWNhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxp
dHlQcm9ncmVzc0luZGljYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNDIy
NkU1OTExNjNENjY3MDA4QjgzOTcgLyogSlNIVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTFByb2dyZXNzRWxlbWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDgxNyw2ICsyMDgxOSw4IEBACiAJCUY1
MjNEMzI0MDJERTQ0NzgwMTg2MzVDQSAvKiBkb20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCUEzQkI1OUMyMTQ1NjUzM0QwMEFDNTZGRSAvKiBXb3JrZXJF
dmVudFF1ZXVlLmNwcCAqLywKKwkJCQlBM0JCNTlDMzE0NTY1MzNEMDBBQzU2RkUgLyogV29ya2Vy
RXZlbnRRdWV1ZS5oICovLAogCQkJCUUxQzRERTZEMEVBNzVDNjUwMDIzQ0NENiAvKiBBY3RpdmVE
T01PYmplY3QuY3BwICovLAogCQkJCUUxQzRERTY4MEVBNzVDMUUwMDIzQ0NENiAvKiBBY3RpdmVE
T01PYmplY3QuaCAqLywKIAkJCQlBOEM0QTdGQzA5RDU2MzI3MDAwM0FDOEQgLyogQXR0ci5jcHAg
Ki8sCkBAIC0yMDg5OCw2ICsyMDkwMiw4IEBACiAJCQkJNTlBODVFQTMxMTlENjhFQzAwREVGMUVG
IC8qIERldmljZU9yaWVudGF0aW9uRXZlbnQuaCAqLywKIAkJCQk1OUE4NUVBQTExOUQ3QjZFMDBE
RUYxRUYgLyogRGV2aWNlT3JpZW50YXRpb25FdmVudC5pZGwgKi8sCiAJCQkJQTgxODVGMzQwOTc2
NTc2NTAwNTgyNkQ5IC8qIERvY3VtZW50LmNwcCAqLywKKwkJCQlBM0JCNTlCRDE0NTY1MzA0MDBB
QzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCAqLywKKwkJCQlBM0JCNTlCRTE0NTY1MzA0
MDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmggKi8sCiAJCQkJQTgxODVGMzgwOTc2NTc2
NTAwNTgyNkQ5IC8qIERvY3VtZW50LmggKi8sCiAJCQkJNjU0OEUyNDgwOUUxRTA0RDAwQUY4MDIw
IC8qIERvY3VtZW50LmlkbCAqLywKIAkJCQlBODE4NUYzNzA5NzY1NzY1MDA1ODI2RDkgLyogRG9j
dW1lbnRGcmFnbWVudC5jcHAgKi8sCkBAIC0yMDk2MSw3ICsyMDk2Nyw2IEBACiAJCQkJQUQ0NDk1
RjIxNDFGQzA4OTAwNTQxRURGIC8qIEV2ZW50TGlzdGVuZXJNYXAuaCAqLywKIAkJCQk5Mzk4ODVD
MTA4QjdFM0QxMDBFNzA3QzQgLyogRXZlbnROYW1lcy5jcHAgKi8sCiAJCQkJOTM5ODg1QzIwOEI3
RTNEMTAwRTcwN0M0IC8qIEV2ZW50TmFtZXMuaCAqLywKLQkJCQk4RjY3NTYxQTEyODhCMTdCMDA0
N0FDQTMgLyogRXZlbnRRdWV1ZS5jcHAgKi8sCiAJCQkJOEY2NzU2MTkxMjg4QjE3QjAwNDdBQ0Ez
IC8qIEV2ZW50UXVldWUuaCAqLywKIAkJCQlFMTJFREJFOTBCMzA4RTBCMDAyNzA0QjYgLyogRXZl
bnRUYXJnZXQuY3BwICovLAogCQkJCUUxMkVEQjdBMEIzMDhBNzgwMDI3MDRCNiAvKiBFdmVudFRh
cmdldC5oICovLApAQCAtMjU0NjIsNyArMjU0NjcsNiBAQAogCQkJCUFENDQ5NUYzMTQxRkMwODkw
MDU0MUVERiAvKiBFdmVudExpc3RlbmVyTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDQTE5
RTA1MERDMjU1OTUwMDY1QTk5NCAvKiBFdmVudExvb3BNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk5Mzk4ODVDMzA4QjdFM0QxMDBFNzA3QzQgLyogRXZlbnROYW1lcy5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk4RjY3NTYxQzEyODhCMTdCMDA0N0FDQTMgLyogRXZlbnRRdWV1ZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFMEZFRjM3MkIyN0M1M0VBQzFDMUZCRUUgLyogRXZlbnRTb3VyY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyRURCRUEwQjMwOEUwQjAwMjcwNEI2IC8qIEV2ZW50VGFy
Z2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjBEOEYyMEQyQTExRTAwMEI5OTE4RiAvKiBF
eGNlcHRpb25CYXNlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RPTUFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5j
cHAKaW5kZXggZjgyNWRhMDcxYzU3Njg5ZmNjOTJmOGJjNGVmZGEwM2JhMmZjN2NhMi4uZjcxODNh
MjI1YjUwMTJjMWI2ODUwYzgxNWQzYTY3NjMxYWRiZTZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxs
SW5PbmUuY3BwCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyLmNwcCIKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcCIKICNp
bmNsdWRlICJEb2N1bWVudC5jcHAiCisjaW5jbHVkZSAiRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCIK
ICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmNwcCIKICNpbmNsdWRlICJEb2N1bWVudE1hcmtl
ci5jcHAiCiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCmluZGV4IGIzYTVhYjE1MWJiMjgzMWE0M2RiNGZhZTliMTdiNDk4M2UwY2Uy
YmEuLmIzNjMyMGM3NmQzMjNkN2M4MDU5MjMzMjQ1ZDgxNzliZmI5YzY0MmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0
aW9uLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMu
aCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJEb2N1bWVudEZy
YWdtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXIuaCIKQEAgLTYwLDcgKzYxLDYgQEAKICNpbmNsdWRlICJFdmVudEhh
bmRsZXIuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgotI2luY2x1ZGUgIkV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9ybUFzc29jaWF0ZWRF
bGVtZW50LmgiCkBAIC0zODUsNyArMzg1LDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBm
cmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAgICwg
bV9pc1ZpZXdTb3VyY2UoZmFsc2UpCiAgICAgLCBtX3Nhd0VsZW1lbnRzSW5Lbm93bk5hbWVzcGFj
ZXMoZmFsc2UpCiAgICAgLCBtX3VzaW5nR2VvbG9jYXRpb24oZmFsc2UpCi0gICAgLCBtX2V2ZW50
UXVldWUoRXZlbnRRdWV1ZTo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV9ldmVudFF1ZXVlKERvY3Vt
ZW50RXZlbnRRdWV1ZTo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV93ZWFrUmVmZXJlbmNlKERvY3Vt
ZW50V2Vha1JlZmVyZW5jZTo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9pZEF0dHJpYnV0ZU5hbWUo
aWRBdHRyKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5k
ZXggNzI3MDVmMGI3ZGJmODdmODFkODY5YzZhY2QxNTRiZWY0YzdlYzU1OC4uOTJiMDAxODU2NGI2
MmFkNGI5ZjA0ODliODAwNTY3NjQ3NzE0MTAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJDb2xsZWN0aW9uVHlwZS5oIgogI2luY2x1ZGUgIkNvbG9y
LmgiCiAjaW5jbHVkZSAiRE9NVGltZVN0YW1wLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRFdmVudFF1
ZXVlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaW1pbmcuaCIKICNpbmNsdWRlICJJY29uVVJMLmgi
CiAjaW5jbHVkZSAiSW50UmVjdC5oIgpAQCAtODEsNyArODIsNiBAQCBjbGFzcyBFbGVtZW50Owog
Y2xhc3MgRW50aXR5UmVmZXJlbmNlOwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBFdmVudExpc3RlbmVy
OwotY2xhc3MgRXZlbnRRdWV1ZTsKIGNsYXNzIEZvbnREYXRhOwogY2xhc3MgRm9ybUFzc29jaWF0
ZWRFbGVtZW50OwogY2xhc3MgRnJhbWU7CkBAIC0xMDI2LDcgKzEwMjYsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBlbnF1ZXVlUGFnZXNob3dFdmVudChQYWdlc2hvd0V2ZW50UGVyc2lzdGVuY2UpOwog
ICAgIHZvaWQgZW5xdWV1ZUhhc2hjaGFuZ2VFdmVudChjb25zdCBTdHJpbmcmIG9sZFVSTCwgY29u
c3QgU3RyaW5nJiBuZXdVUkwpOwogICAgIHZvaWQgZW5xdWV1ZVBvcHN0YXRlRXZlbnQoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0KTsKLSAgICBFdmVudFF1ZXVl
KiBldmVudFF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFF1ZXVlLmdldCgpOyB9CisgICAg
dmlydHVhbCBEb2N1bWVudEV2ZW50UXVldWUqIGV2ZW50UXVldWUoKSBjb25zdCB7IHJldHVybiBt
X2V2ZW50UXVldWUuZ2V0KCk7IH0KIAogICAgIHZvaWQgYWRkTWVkaWFDYW5TdGFydExpc3RlbmVy
KE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciopOwogICAgIHZvaWQgcmVtb3ZlTWVkaWFDYW5TdGFydExp
c3RlbmVyKE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciopOwpAQCAtMTM2Niw3ICsxMzY2LDcgQEAgcHJp
dmF0ZToKIAogICAgIGJvb2wgbV91c2luZ0dlb2xvY2F0aW9uOwogCi0gICAgUmVmUHRyPEV2ZW50
UXVldWU+IG1fZXZlbnRRdWV1ZTsKKyAgICBSZWZQdHI8RG9jdW1lbnRFdmVudFF1ZXVlPiBtX2V2
ZW50UXVldWU7CiAKICAgICBSZWZQdHI8RG9jdW1lbnRXZWFrUmVmZXJlbmNlPiBtX3dlYWtSZWZl
cmVuY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVl
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2VkZjI0Zjg4YTY2NDViZTZkYjkyYmM2ZGM1NGIxODI0NzdjMDljNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCkBAIC0w
LDAgKzEsMTU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRG9jdW1lbnRFdmVudFF1ZXVlLmgiCisKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNs
dWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgorI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgorI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTdXNwZW5kYWJsZVRpbWVyLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK3N0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGREaXNw
YXRjaFNjcm9sbEV2ZW50U3luY2hyb25vdXNseShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAg
QVNTRVJUX0FSRyhkb2N1bWVudCwgZG9jdW1lbnQpOworICAgIHJldHVybiBhcHBsaWNhdGlvbklz
U2FmYXJpKCkgJiYgKGRvY3VtZW50LT51cmwoKS5wcm90b2NvbElzKCJmZWVkIikgfHwgZG9jdW1l
bnQtPnVybCgpLnByb3RvY29sSXMoImZlZWRzIikpOworfQorCitjbGFzcyBEb2N1bWVudEV2ZW50
UXVldWVUaW1lciA6IHB1YmxpYyBTdXNwZW5kYWJsZVRpbWVyIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShEb2N1bWVudEV2ZW50UXVldWVUaW1lcik7CitwdWJsaWM6CisgICAgRG9jdW1lbnRF
dmVudFF1ZXVlVGltZXIoRG9jdW1lbnRFdmVudFF1ZXVlKiBldmVudFF1ZXVlLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgICAgICA6IFN1c3BlbmRhYmxlVGltZXIoY29udGV4
dCkKKyAgICAgICAgLCBtX2V2ZW50UXVldWUoZXZlbnRRdWV1ZSkgeyB9CisKK3ByaXZhdGU6Cisg
ICAgdmlydHVhbCB2b2lkIGZpcmVkKCkgeyBtX2V2ZW50UXVldWUtPnBlbmRpbmdFdmVudFRpbWVy
RmlyZWQoKTsgfQorICAgIERvY3VtZW50RXZlbnRRdWV1ZSogbV9ldmVudFF1ZXVlOworfTsKKwor
UGFzc1JlZlB0cjxEb2N1bWVudEV2ZW50UXVldWU+IERvY3VtZW50RXZlbnRRdWV1ZTo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBEb2N1bWVudEV2ZW50UXVldWUoY29udGV4dCkpOworfQorCitEb2N1bWVudEV2ZW50UXVl
dWU6OkRvY3VtZW50RXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQor
ICAgIDogbV9wZW5kaW5nRXZlbnRUaW1lcihhZG9wdFB0cihuZXcgRG9jdW1lbnRFdmVudFF1ZXVl
VGltZXIodGhpcywgY29udGV4dCkpKQorICAgICwgbV9pc0Nsb3NlZChmYWxzZSkKK3sKK30KKwor
RG9jdW1lbnRFdmVudFF1ZXVlOjp+RG9jdW1lbnRFdmVudFF1ZXVlKCkKK3sKK30KKwordm9pZCBE
b2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkK
K3sKKyAgICBpZiAobV9pc0Nsb3NlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKGV2
ZW50LT50YXJnZXQoKSk7CisgICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVkRXZlbnRzLmFkZChl
dmVudCkuc2Vjb25kOworICAgIEFTU0VSVF9VTlVTRUQod2FzQWRkZWQsIHdhc0FkZGVkKTsgLy8g
SXQgc2hvdWxkIG5vdCBoYXZlIGFscmVhZHkgYmVlbiBpbiB0aGUgbGlzdC4KKyAgICAKKyAgICBp
ZiAoIW1fcGVuZGluZ0V2ZW50VGltZXItPmlzQWN0aXZlKCkpCisgICAgICAgIG1fcGVuZGluZ0V2
ZW50VGltZXItPnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBEb2N1bWVudEV2ZW50UXVldWU6
OmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQsIFNj
cm9sbEV2ZW50VGFyZ2V0VHlwZSB0YXJnZXRUeXBlKQoreworICAgIGlmICghdGFyZ2V0LT5kb2N1
bWVudCgpLT5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OlNDUk9MTF9MSVNURU5FUikpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIFBlciB0aGUgVzNDIENTU09NIFZpZXcgTW9kdWxlLCBzY3Jv
bGwgZXZlbnRzIGZpcmVkIGF0IHRoZSBkb2N1bWVudCBzaG91bGQgYnViYmxlLCBvdGhlcnMgc2hv
dWxkIG5vdC4KKyAgICBib29sIGNhbkJ1YmJsZSA9IHRhcmdldFR5cGUgPT0gU2Nyb2xsRXZlbnRE
b2N1bWVudFRhcmdldDsKKyAgICBSZWZQdHI8RXZlbnQ+IHNjcm9sbEV2ZW50ID0gRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuc2Nyb2xsRXZlbnQsIGNhbkJ1YmJsZSwgZmFsc2UgLyogbm9uIGNh
bmNlbGxlYWJsZSAqLyk7CisgICAgIAorICAgIGlmIChzaG91bGREaXNwYXRjaFNjcm9sbEV2ZW50
U3luY2hyb25vdXNseSh0YXJnZXQtPmRvY3VtZW50KCkpKSB7CisgICAgICAgIHRhcmdldC0+ZGlz
cGF0Y2hFdmVudChzY3JvbGxFdmVudC5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKCFtX25vZGVzV2l0aFF1ZXVlZFNjcm9sbEV2ZW50cy5hZGQodGFyZ2V0Lmdl
dCgpKS5zZWNvbmQpCisgICAgICAgIHJldHVybjsKKworICAgIHNjcm9sbEV2ZW50LT5zZXRUYXJn
ZXQodGFyZ2V0KTsKKyAgICBlbnF1ZXVlRXZlbnQoc2Nyb2xsRXZlbnQucmVsZWFzZSgpKTsKK30K
KworYm9vbCBEb2N1bWVudEV2ZW50UXVldWU6OmNhbmNlbEV2ZW50KEV2ZW50KiBldmVudCkKK3sK
KyAgICBib29sIGZvdW5kID0gbV9xdWV1ZWRFdmVudHMuY29udGFpbnMoZXZlbnQpOworICAgIG1f
cXVldWVkRXZlbnRzLnJlbW92ZShldmVudCk7CisgICAgaWYgKG1fcXVldWVkRXZlbnRzLmlzRW1w
dHkoKSkKKyAgICAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3RvcCgpOworICAgIHJldHVybiBm
b3VuZDsKK30KKwordm9pZCBEb2N1bWVudEV2ZW50UXVldWU6OmNsb3NlKCkKK3sKKyAgICBtX2lz
Q2xvc2VkID0gdHJ1ZTsKKyAgICBtX3BlbmRpbmdFdmVudFRpbWVyLT5zdG9wKCk7CisgICAgbV9x
dWV1ZWRFdmVudHMuY2xlYXIoKTsKK30KKwordm9pZCBEb2N1bWVudEV2ZW50UXVldWU6OnBlbmRp
bmdFdmVudFRpbWVyRmlyZWQoKQoreworICAgIEFTU0VSVCghbV9wZW5kaW5nRXZlbnRUaW1lci0+
aXNBY3RpdmUoKSk7CisgICAgQVNTRVJUKCFtX3F1ZXVlZEV2ZW50cy5pc0VtcHR5KCkpOworCisg
ICAgbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHMuY2xlYXIoKTsKKworICAgIC8vIEluc2Vy
dCBhIG1hcmtlciBmb3Igd2hlcmUgd2Ugc2hvdWxkIHN0b3AuCisgICAgQVNTRVJUKCFtX3F1ZXVl
ZEV2ZW50cy5jb250YWlucygwKSk7CisgICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVkRXZlbnRz
LmFkZCgwKS5zZWNvbmQ7CisgICAgQVNTRVJUX1VOVVNFRCh3YXNBZGRlZCwgd2FzQWRkZWQpOyAv
LyBJdCBzaG91bGQgbm90IGhhdmUgYWxyZWFkeSBiZWVuIGluIHRoZSBsaXN0LgorCisgICAgUmVm
UHRyPERvY3VtZW50RXZlbnRRdWV1ZT4gcHJvdGVjdG9yKHRoaXMpOworCisgICAgd2hpbGUgKCFt
X3F1ZXVlZEV2ZW50cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPEV2
ZW50PiA+OjppdGVyYXRvciBpdGVyID0gbV9xdWV1ZWRFdmVudHMuYmVnaW4oKTsKKyAgICAgICAg
UmVmUHRyPEV2ZW50PiBldmVudCA9ICppdGVyOworICAgICAgICBtX3F1ZXVlZEV2ZW50cy5yZW1v
dmUoaXRlcik7CisgICAgICAgIGlmICghZXZlbnQpCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZGlzcGF0Y2hFdmVudChldmVudC5nZXQoKSk7CisgICAgfQorfQorCit2b2lkIERvY3VtZW50
RXZlbnRRdWV1ZTo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKK3sKKyAg
ICBFdmVudFRhcmdldCogZXZlbnRUYXJnZXQgPSBldmVudC0+dGFyZ2V0KCk7CisgICAgaWYgKGV2
ZW50VGFyZ2V0LT50b0RPTVdpbmRvdygpKQorICAgICAgICBldmVudFRhcmdldC0+dG9ET01XaW5k
b3coKS0+ZGlzcGF0Y2hFdmVudChldmVudCwgMCk7CisgICAgZWxzZQorICAgICAgICBldmVudFRh
cmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudEV2ZW50UXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NWVjYWE3ZTFlMzQxMTM0ZmUwYzM1NzI3Mzk2
ZmM5MjcxMzVhY2JjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50RXZlbnRRdWV1ZS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpZm5kZWYg
RG9jdW1lbnRFdmVudFF1ZXVlX2gKKyNkZWZpbmUgRG9jdW1lbnRFdmVudFF1ZXVlX2gKKworI2lu
Y2x1ZGUgIkV2ZW50UXVldWUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUg
PHd0Zi9MaXN0SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBFdmVudDsKK2NsYXNzIERvY3VtZW50RXZlbnRRdWV1ZVRpbWVyOwor
Y2xhc3MgTm9kZTsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIERvY3Vt
ZW50RXZlbnRRdWV1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPERvY3VtZW50RXZlbnRRdWV1ZT4sIHB1
YmxpYyBFdmVudFF1ZXVlIHsKK3B1YmxpYzoKKyAgICBlbnVtIFNjcm9sbEV2ZW50VGFyZ2V0VHlw
ZSB7CisgICAgICAgIFNjcm9sbEV2ZW50RG9jdW1lbnRUYXJnZXQsCisgICAgICAgIFNjcm9sbEV2
ZW50RWxlbWVudFRhcmdldAorICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVu
dEV2ZW50UXVldWU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgdmlydHVh
bCB+RG9jdW1lbnRFdmVudFF1ZXVlKCk7CisKKyAgICAvLyBFdmVudFF1ZXVlCisgICAgdmlydHVh
bCB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CisgICAgdmlydHVhbCBib29s
IGNhbmNlbEV2ZW50KEV2ZW50Kik7CisgICAgdm9pZCBjbG9zZSgpOworCisgICAgdm9pZCBlbnF1
ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KFBhc3NSZWZQdHI8Tm9kZT4sIFNjcm9sbEV2ZW50VGFy
Z2V0VHlwZSk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRG9jdW1lbnRFdmVudFF1ZXVlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworICAgIHZvaWQgcGVuZGluZ0V2ZW50VGltZXJGaXJl
ZCgpOworICAgIHZvaWQgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CisKKyAgICBP
d25QdHI8RG9jdW1lbnRFdmVudFF1ZXVlVGltZXI+IG1fcGVuZGluZ0V2ZW50VGltZXI7CisgICAg
TGlzdEhhc2hTZXQ8UmVmUHRyPEV2ZW50PiA+IG1fcXVldWVkRXZlbnRzOworICAgIEhhc2hTZXQ8
Tm9kZSo+IG1fbm9kZXNXaXRoUXVldWVkU2Nyb2xsRXZlbnRzOworICAgIGJvb2wgbV9pc0Nsb3Nl
ZDsKKworICAgIGZyaWVuZCBjbGFzcyBEb2N1bWVudEV2ZW50UXVldWVUaW1lcjsgICAgCit9Owor
Cit9CisKKyNlbmRpZiAvLyBEb2N1bWVudEV2ZW50UXVldWVfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVl
dWUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGVlMjc3MjFmNDFiOGNjMGMx
YmRmZTU3M2MyNDgyY2Q5NDk1ZTdkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDE1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgotCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCi0jaW5j
bHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKLSNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKLSNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU3VzcGVuZGFibGVUaW1lci5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1zdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkRGlz
cGF0Y2hTY3JvbGxFdmVudFN5bmNocm9ub3VzbHkoRG9jdW1lbnQqIGRvY3VtZW50KQotewotICAg
IEFTU0VSVF9BUkcoZG9jdW1lbnQsIGRvY3VtZW50KTsKLSAgICByZXR1cm4gYXBwbGljYXRpb25J
c1NhZmFyaSgpICYmIChkb2N1bWVudC0+dXJsKCkucHJvdG9jb2xJcygiZmVlZCIpIHx8IGRvY3Vt
ZW50LT51cmwoKS5wcm90b2NvbElzKCJmZWVkcyIpKTsKLX0KLQotY2xhc3MgRXZlbnRRdWV1ZVRp
bWVyIDogcHVibGljIFN1c3BlbmRhYmxlVGltZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEV2ZW50UXVldWVUaW1lcik7Ci1wdWJsaWM6Ci0gICAgRXZlbnRRdWV1ZVRpbWVyKEV2ZW50UXVl
dWUqIGV2ZW50UXVldWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgICAg
IDogU3VzcGVuZGFibGVUaW1lcihjb250ZXh0KQotICAgICAgICAsIG1fZXZlbnRRdWV1ZShldmVu
dFF1ZXVlKSB7IH0KLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKSB7IG1fZXZl
bnRRdWV1ZS0+cGVuZGluZ0V2ZW50VGltZXJGaXJlZCgpOyB9Ci0gICAgRXZlbnRRdWV1ZSogbV9l
dmVudFF1ZXVlOyAgICAKLX07Ci0KLVBhc3NSZWZQdHI8RXZlbnRRdWV1ZT4gRXZlbnRRdWV1ZTo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBFdmVudFF1ZXVlKGNvbnRleHQpKTsKLX0KLQotRXZlbnRRdWV1ZTo6RXZlbnRR
dWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAgIDogbV9wZW5kaW5nRXZl
bnRUaW1lcihhZG9wdFB0cihuZXcgRXZlbnRRdWV1ZVRpbWVyKHRoaXMsIGNvbnRleHQpKSkKLSAg
ICAsIG1faXNDbG9zZWQoZmFsc2UpCi17Ci19Ci0KLUV2ZW50UXVldWU6On5FdmVudFF1ZXVlKCkK
LXsKLX0KLQotdm9pZCBFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4g
ZXZlbnQpCi17Ci0gICAgaWYgKG1faXNDbG9zZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFT
U0VSVChldmVudC0+dGFyZ2V0KCkpOwotICAgIGJvb2wgd2FzQWRkZWQgPSBtX3F1ZXVlZEV2ZW50
cy5hZGQoZXZlbnQpLnNlY29uZDsKLSAgICBBU1NFUlRfVU5VU0VEKHdhc0FkZGVkLCB3YXNBZGRl
ZCk7IC8vIEl0IHNob3VsZCBub3QgaGF2ZSBhbHJlYWR5IGJlZW4gaW4gdGhlIGxpc3QuCi0gICAg
Ci0gICAgaWYgKCFtX3BlbmRpbmdFdmVudFRpbWVyLT5pc0FjdGl2ZSgpKQotICAgICAgICBtX3Bl
bmRpbmdFdmVudFRpbWVyLT5zdGFydE9uZVNob3QoMCk7Ci19Ci0KLXZvaWQgRXZlbnRRdWV1ZTo6
ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCwgU2Ny
b2xsRXZlbnRUYXJnZXRUeXBlIHRhcmdldFR5cGUpCi17Ci0gICAgaWYgKCF0YXJnZXQtPmRvY3Vt
ZW50KCktPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6U0NST0xMX0xJU1RFTkVSKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgLy8gUGVyIHRoZSBXM0MgQ1NTT00gVmlldyBNb2R1bGUsIHNjcm9s
bCBldmVudHMgZmlyZWQgYXQgdGhlIGRvY3VtZW50IHNob3VsZCBidWJibGUsIG90aGVycyBzaG91
bGQgbm90LgotICAgIGJvb2wgY2FuQnViYmxlID0gdGFyZ2V0VHlwZSA9PSBTY3JvbGxFdmVudERv
Y3VtZW50VGFyZ2V0OwotICAgIFJlZlB0cjxFdmVudD4gc2Nyb2xsRXZlbnQgPSBFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5zY3JvbGxFdmVudCwgY2FuQnViYmxlLCBmYWxzZSAvKiBub24gY2Fu
Y2VsbGVhYmxlICovKTsKLSAgICAgCi0gICAgaWYgKHNob3VsZERpc3BhdGNoU2Nyb2xsRXZlbnRT
eW5jaHJvbm91c2x5KHRhcmdldC0+ZG9jdW1lbnQoKSkpIHsKLSAgICAgICAgdGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KHNjcm9sbEV2ZW50LnJlbGVhc2UoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoIW1fbm9kZXNXaXRoUXVldWVkU2Nyb2xsRXZlbnRzLmFkZCh0YXJnZXQuZ2V0
KCkpLnNlY29uZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2Nyb2xsRXZlbnQtPnNldFRhcmdl
dCh0YXJnZXQpOwotICAgIGVucXVldWVFdmVudChzY3JvbGxFdmVudC5yZWxlYXNlKCkpOwotfQot
Ci1ib29sIEV2ZW50UXVldWU6OmNhbmNlbEV2ZW50KEV2ZW50KiBldmVudCkKLXsKLSAgICBib29s
IGZvdW5kID0gbV9xdWV1ZWRFdmVudHMuY29udGFpbnMoZXZlbnQpOwotICAgIG1fcXVldWVkRXZl
bnRzLnJlbW92ZShldmVudCk7Ci0gICAgaWYgKG1fcXVldWVkRXZlbnRzLmlzRW1wdHkoKSkKLSAg
ICAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3RvcCgpOwotICAgIHJldHVybiBmb3VuZDsKLX0K
LQotdm9pZCBFdmVudFF1ZXVlOjpjbG9zZSgpCi17Ci0gICAgbV9pc0Nsb3NlZCA9IHRydWU7Ci0g
ICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3RvcCgpOwotICAgIG1fcXVldWVkRXZlbnRzLmNsZWFy
KCk7Ci19Ci0KLXZvaWQgRXZlbnRRdWV1ZTo6cGVuZGluZ0V2ZW50VGltZXJGaXJlZCgpCi17Ci0g
ICAgQVNTRVJUKCFtX3BlbmRpbmdFdmVudFRpbWVyLT5pc0FjdGl2ZSgpKTsKLSAgICBBU1NFUlQo
IW1fcXVldWVkRXZlbnRzLmlzRW1wdHkoKSk7Ci0KLSAgICBtX25vZGVzV2l0aFF1ZXVlZFNjcm9s
bEV2ZW50cy5jbGVhcigpOwotCi0gICAgLy8gSW5zZXJ0IGEgbWFya2VyIGZvciB3aGVyZSB3ZSBz
aG91bGQgc3RvcC4KLSAgICBBU1NFUlQoIW1fcXVldWVkRXZlbnRzLmNvbnRhaW5zKDApKTsKLSAg
ICBib29sIHdhc0FkZGVkID0gbV9xdWV1ZWRFdmVudHMuYWRkKDApLnNlY29uZDsKLSAgICBBU1NF
UlRfVU5VU0VEKHdhc0FkZGVkLCB3YXNBZGRlZCk7IC8vIEl0IHNob3VsZCBub3QgaGF2ZSBhbHJl
YWR5IGJlZW4gaW4gdGhlIGxpc3QuCi0KLSAgICBSZWZQdHI8RXZlbnRRdWV1ZT4gcHJvdGVjdG9y
KHRoaXMpOwotCi0gICAgd2hpbGUgKCFtX3F1ZXVlZEV2ZW50cy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgTGlzdEhhc2hTZXQ8UmVmUHRyPEV2ZW50PiA+OjppdGVyYXRvciBpdGVyID0gbV9xdWV1ZWRF
dmVudHMuYmVnaW4oKTsKLSAgICAgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9ICppdGVyOwotICAg
ICAgICBtX3F1ZXVlZEV2ZW50cy5yZW1vdmUoaXRlcik7Ci0gICAgICAgIGlmICghZXZlbnQpCi0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGlzcGF0Y2hFdmVudChldmVudC5nZXQoKSk7Ci0g
ICAgfQotfQotCi12b2lkIEV2ZW50UXVldWU6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVu
dD4gZXZlbnQpCi17Ci0gICAgRXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0ID0gZXZlbnQtPnRhcmdl
dCgpOwotICAgIGlmIChldmVudFRhcmdldC0+dG9ET01XaW5kb3coKSkKLSAgICAgICAgZXZlbnRU
YXJnZXQtPnRvRE9NV2luZG93KCktPmRpc3BhdGNoRXZlbnQoZXZlbnQsIDApOwotICAgIGVsc2UK
LSAgICAgICAgZXZlbnRUYXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwotfQotCi19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50UXVldWUuaAppbmRleCBjOTk3OTcyMDgxZWU1ZjJhYWE1NWVjMGFjMDYxNGVkNDlj
OWUwMTU2Li5hNjExOTAzN2ExODlmNzE3NTcxYTI4MDAwY2IyOGE5ZjRiMzgyYTllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFF1ZXVlLmgKQEAgLTI3LDQ4ICsyNywyMCBAQAogI2lmbmRlZiBFdmVudFF1ZXVl
X2gKICNkZWZpbmUgRXZlbnRRdWV1ZV9oCiAKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+Ci0jaW5j
bHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRXZlbnQ7Ci1jbGFzcyBFdmVudFF1ZXVlVGltZXI7Ci1jbGFz
cyBOb2RlOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotY2xhc3MgRXZlbnRRdWV1
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEV2ZW50UXVldWU+IHsKK2NsYXNzIEV2ZW50UXVldWUgewog
cHVibGljOgotICAgIGVudW0gU2Nyb2xsRXZlbnRUYXJnZXRUeXBlIHsKLSAgICAgICAgU2Nyb2xs
RXZlbnREb2N1bWVudFRhcmdldCwKLSAgICAgICAgU2Nyb2xsRXZlbnRFbGVtZW50VGFyZ2V0Ci0g
ICAgfTsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50UXVldWU+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7Ci0gICAgfkV2ZW50UXVldWUoKTsKLQotICAgIHZvaWQgZW5xdWV1
ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKLSAgICB2b2lkIGVucXVldWVPckRpc3BhdGNoU2Ny
b2xsRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiwgU2Nyb2xsRXZlbnRUYXJnZXRUeXBlKTsKLSAgICBi
b29sIGNhbmNlbEV2ZW50KEV2ZW50Kik7Ci0KLSAgICAvLyBUaGUgYWNjdW11bGF0ZWQgYW5kIGFs
bCB0aGUgZnV0dXJlIGV2ZW50cyB3aWxsIGJlIGRpc2NhcmRlZCwgbm8gZXZlbnRzIHdpbGwgYmUg
ZGlzcGF0Y2hlZCBhbnltb3JlLiAKLSAgICB2b2lkIGNsb3NlKCk7Ci0KLXByaXZhdGU6Ci0gICAg
ZXhwbGljaXQgRXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0KLSAgICB2b2lk
IHBlbmRpbmdFdmVudFRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIGRpc3BhdGNoRXZlbnQoUGFzc1Jl
ZlB0cjxFdmVudD4pOwotCi0gICAgT3duUHRyPEV2ZW50UXVldWVUaW1lcj4gbV9wZW5kaW5nRXZl
bnRUaW1lcjsKLSAgICBMaXN0SGFzaFNldDxSZWZQdHI8RXZlbnQ+ID4gbV9xdWV1ZWRFdmVudHM7
Ci0gICAgSGFzaFNldDxOb2RlKj4gbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHM7Ci0gICAg
Ym9vbCBtX2lzQ2xvc2VkOwotCi0gICAgZnJpZW5kIGNsYXNzIEV2ZW50UXVldWVUaW1lcjsgICAg
CisgICAgdmlydHVhbCB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PikgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBjYW5jZWxFdmVudChFdmVudCopID0gMDsKKyAgICAvLyBUaGUgYWNj
dW11bGF0ZWQgYW5kIGFsbCB0aGUgZnV0dXJlIGV2ZW50cyB3aWxsIGJlIGRpc2NhcmRlZCwgbm8g
ZXZlbnRzIHdpbGwgYmUgZGlzcGF0Y2hlZCBhbnltb3JlLgorICAgIHZpcnR1YWwgdm9pZCBjbG9z
ZSgpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oCmluZGV4IGQ0NDJlNjI4YmZjN2E1NmM2MTc4YzVmM2RlNzcxZjNjZjcyNzBhMjguLmM4
MWM1OGIwNzFjY2JjYzc3NWE5YmE4MTU3NzMwMDJkYTkxYzRjNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtNTIsNiArNTIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRE9NVGltZXI7CiAgICAgY2xhc3MgRE9NVVJMOwogICAg
IGNsYXNzIEV2ZW50TGlzdGVuZXI7CisgICAgY2xhc3MgRXZlbnRRdWV1ZTsKICAgICBjbGFzcyBF
dmVudFRhcmdldDsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBTY3JpcHRDYWxs
U3RhY2s7CkBAIC0xNzIsNiArMTczLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIGFkanVzdE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSBvbGRNaW5pbXVtVGltZXJJbnRl
cnZhbCk7CiAgICAgICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKCkgY29u
c3Q7CiAKKyAgICAgICAgdmlydHVhbCBFdmVudFF1ZXVlKiBldmVudFF1ZXVlKCkgY29uc3QgPSAw
OworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICAvLyBFeHBsaWNpdGx5IG92ZXJyaWRlIHRoZSBz
ZWN1cml0eSBvcmlnaW4gZm9yIHRoaXMgc2NyaXB0IGNvbnRleHQuCiAgICAgICAgIC8vIE5vdGU6
IEl0IGlzIGRhbmdlcm91cyB0byBjaGFuZ2UgdGhlIHNlY3VyaXR5IG9yaWdpbiBvZiBhIHNjcmlw
dCBjb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggY2U2NzQ0YTZm
NjNlZmUyNTgzZWVhZWVlZjA5ZGExNmMzYzMwMDU1ZC4uYTViY2Y3N2ZlM2NiZjA5NjQyM2Y4ZWY5
ZTc4Njk4ZDgzZDVkZGJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAt
MzQsMTEgKzM0LDExIEBACiAjaW5jbHVkZSAiQ3Vyc29yLmgiCiAjaW5jbHVkZSAiQ3Vyc29yTGlz
dC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRFdmVudFF1ZXVl
LmgiCiAjaW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEcmFnU3RhdGUuaCIK
ICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAi
RXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKQEAgLTMxMDcsNyArMzEwNyw3IEBA
IHZvaWQgRXZlbnRIYW5kbGVyOjpzZW5kU2Nyb2xsRXZlbnQoKQogewogICAgIHNldEZyYW1lV2Fz
U2Nyb2xsZWRCeVVzZXIoKTsKICAgICBpZiAobV9mcmFtZS0+dmlldygpICYmIG1fZnJhbWUtPmRv
Y3VtZW50KCkpCi0gICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmV2ZW50UXVldWUoKS0+ZW5x
dWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChtX2ZyYW1lLT5kb2N1bWVudCgpLCBFdmVudFF1ZXVl
OjpTY3JvbGxFdmVudERvY3VtZW50VGFyZ2V0KTsKKyAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+ZXZlbnRRdWV1ZSgpLT5lbnF1ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KG1fZnJhbWUtPmRv
Y3VtZW50KCksIERvY3VtZW50RXZlbnRRdWV1ZTo6U2Nyb2xsRXZlbnREb2N1bWVudFRhcmdldCk7
CiB9CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpzZXRGcmFtZVdhc1Njcm9sbGVkQnlVc2VyKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGExMzNmYzE4OWFiMzBh
YjczYjlhN2IxNTgyMjEzYjdiZjZjOTY0NDIuLmRkNjhhYjk0MTM2ZmE5Njk5ZDdkZTA2OTdkZTkw
NTRkMzNlZWZlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApA
QCAtNTAsOCArNTAsOCBAQAogI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRl
ICJDaHJvbWUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50RXZl
bnRRdWV1ZS5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgotI2luY2x1ZGUgIkV2ZW50UXVl
dWUuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
ICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKQEAgLTE0NDIsNyArMTQ0Miw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnNjcm9sbFRvKExheW91dFVuaXQgeCwgTGF5b3V0VW5pdCB5KQogCiAgICAg
Ly8gU2NoZWR1bGUgdGhlIHNjcm9sbCBET00gZXZlbnQuCiAgICAgaWYgKHJlbmRlcmVyKCktPm5v
ZGUoKSkKLSAgICAgICAgcmVuZGVyZXIoKS0+bm9kZSgpLT5kb2N1bWVudCgpLT5ldmVudFF1ZXVl
KCktPmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQocmVuZGVyZXIoKS0+bm9kZSgpLCBFdmVu
dFF1ZXVlOjpTY3JvbGxFdmVudEVsZW1lbnRUYXJnZXQpOworICAgICAgICByZW5kZXJlcigpLT5u
b2RlKCktPmRvY3VtZW50KCktPmV2ZW50UXVldWUoKS0+ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxF
dmVudChyZW5kZXJlcigpLT5ub2RlKCksIERvY3VtZW50RXZlbnRRdWV1ZTo6U2Nyb2xsRXZlbnRF
bGVtZW50VGFyZ2V0KTsKIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJs
ZShjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWCwg
Y29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5jcHAKaW5kZXggZGRmNzljMGZiNTg1NjUwMGU0MjVlNzJmZGNhNTFjYjRh
OWRhYzA0MS4uMjBhMDBiN2U0ZTVhNTNjNzlhNGYyMmU2MDQwY2ExYmQ1ZDEyNTJjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtMzQsOCArMzQsOCBA
QAogI2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0
b3IuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1
ZS5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgotI2luY2x1ZGUgIkV2ZW50UXVldWUuaCIK
ICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNp
bmNsdWRlICJGcmFtZS5oIgpAQCAtNjIyLDcgKzYyMiw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6
c2Nyb2xsVG8oaW50IG5ld09mZnNldCkKIAogICAgIG1faW5kZXhPZmZzZXQgPSBuZXdPZmZzZXQ7
CiAgICAgcmVwYWludCgpOwotICAgIG5vZGUoKS0+ZG9jdW1lbnQoKS0+ZXZlbnRRdWV1ZSgpLT5l
bnF1ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KG5vZGUoKSwgRXZlbnRRdWV1ZTo6U2Nyb2xsRXZl
bnRFbGVtZW50VGFyZ2V0KTsKKyAgICBub2RlKCktPmRvY3VtZW50KCktPmV2ZW50UXVldWUoKS0+
ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChub2RlKCksIERvY3VtZW50RXZlbnRRdWV1ZTo6
U2Nyb2xsRXZlbnRFbGVtZW50VGFyZ2V0KTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJMaXN0Qm94
OjppdGVtSGVpZ2h0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAK
aW5kZXggN2M5OWQ5NzlhYzhmMzk2YjdmN2U4YjFmOTNiMmM2ODhlY2Q2NGMyNi4uOTZiZjNiMzkx
ZWRmZWVkNWViZTczMzZlM2ExM2M0M2Y3NDgyZjk3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJEYXRhYmFzZS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJJREJEYXRhYmFzZS5o
IgogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCisjaW5j
bHVkZSAiRG9jdW1lbnRFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiSURCQW55LmgiCiAjaW5jbHVk
ZSAiSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJv
ci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKaW5kZXggNjQzMGQyNTExMmMy
NTNhYzExMjg2YWMwOTU0NDc2YmEwNzI1MWIyNi4uYTJhNDMwMGRiMzliMTQyZjE1Yjc4MTA3YzFl
NGY5OGY4MjA1NGY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCkBAIC0z
MiwxMCArMzIsMTAgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAi
RXZlbnRFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJJREJDdXJz
b3JXaXRoVmFsdWUuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIklEQkV2
ZW50RGlzcGF0Y2hlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJU
cmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNw
cAppbmRleCAxYTRlN2YzMTVhNGVmNzhjYzljODZkMjBkODY5MzI4ZjY4Zjg0Njg1Li5jY2M4MWFl
NDVhY2M2MjI4YjI4Mjk1ZWFmZmVhYTIyM2MxM2RhYmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMjksOCArMjksOCBAQAogI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVu
dEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIkV2
ZW50UXVldWUuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIklEQkRhdGFi
YXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCRXZlbnREaXNwYXRjaGVyLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAppbmRleCAwM2Q0ODhjMzNiZmFlODAwZjkw
NDg4MDhmYWFhYjIzZTM2YTNlYTA2Li5jODdmNzEyYjExN2IyYTExZDgyNmYwNjk2OTQ1MmFkYmE1
MGRmOGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKQEAgLTUw
Niw2ICs1MDYsMTEgQEAgdm9pZCBXb3JrZXJDb250ZXh0Ojpub3RpZnlPYnNlcnZlcnNPZlN0b3Ao
KQogICAgIH0KIH0KIAorV29ya2VyRXZlbnRRdWV1ZSogV29ya2VyQ29udGV4dDo6ZXZlbnRRdWV1
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZXZlbnRRdWV1ZS5nZXQoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCmluZGV4IGFjNDU3N2IyMzYxYWNkN2Q5MTY1NDA3MTNi
ZTNhMjU5NmVhZTgyZWYuLjVmZGQ0NzJlYTFhMDg2YWNlOGIzZmZiODljZDViMWY3Y2EwYWZlZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldvcmtlckV2ZW50UXVl
dWUuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMTEwLDYgKzExMSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3Nh
Z2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0
YWNrPik7CisgICAgICAgIHZpcnR1YWwgV29ya2VyRXZlbnRRdWV1ZSogZXZlbnRRdWV1ZSgpIGNv
bnN0OwogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgICAgIE5vdGlmaWNhdGlvbkNl
bnRlciogd2Via2l0Tm90aWZpY2F0aW9ucygpIGNvbnN0OwpAQCAtMjEyLDYgKzIxNCw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXRE
YXRhOwogCiAgICAgICAgIEhhc2hTZXQ8T2JzZXJ2ZXIqPiBtX3dvcmtlck9ic2VydmVyczsKKwor
ICAgICAgICBPd25QdHI8V29ya2VyRXZlbnRRdWV1ZT4gbV9ldmVudFF1ZXVlOwogICAgIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2
ZW50UXVldWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhM2VjMDExYmU4OTdiZTI1OGY2ZDgzNTFiY2ViYzA5
YWEyNzJiZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckV2ZW50UXVldWUuY3BwCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2VyRXZlbnRRdWV1ZS5oIgorCisjaW5jbHVkZSAi
RE9NV2luZG93LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudC5oIgor
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxXb3JrZXJFdmVudFF1ZXVl
PiBXb3JrZXJFdmVudFF1ZXVlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdvcmtlckV2ZW50UXVldWUoY29udGV4dCkp
OworfQorCitXb3JrZXJFdmVudFF1ZXVlOjpXb3JrZXJFdmVudFF1ZXVlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4
dCkKKyAgICAsIG1faXNDbG9zZWQoZmFsc2UpCit7Cit9CisKK1dvcmtlckV2ZW50UXVldWU6On5X
b3JrZXJFdmVudFF1ZXVlKCkKK3sKKyAgICBjbG9zZSgpOworfQorCitjbGFzcyBXb3JrZXJFdmVu
dFF1ZXVlOjpFdmVudERpc3BhdGNoZXJUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2sgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEV2ZW50RGlzcGF0Y2hl
clRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgV29ya2VyRXZlbnRRdWV1ZSog
ZXZlbnRRdWV1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRXZlbnREaXNw
YXRjaGVyVGFzayhldmVudCwgZXZlbnRRdWV1ZSkpOworICAgIH0KKworICAgIHZvaWQgZGlzcGF0
Y2hFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQp
CisgICAgeworICAgICAgICBldmVudC0+dGFyZ2V0KCktPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKG1faXNDYW5jZWxsZWQpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIG1fZXZlbnRRdWV1ZS0+cmVtb3ZlRXZlbnQobV9ldmVudC5n
ZXQoKSk7CisgICAgICAgIGRpc3BhdGNoRXZlbnQoY29udGV4dCwgbV9ldmVudCk7CisgICAgfQor
CisgICAgdm9pZCBjYW5jZWwoKQorICAgIHsKKyAgICAgICAgbV9pc0NhbmNlbGxlZCA9IHRydWU7
CisgICAgICAgIG1fZXZlbnQuY2xlYXIoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRXZlbnRE
aXNwYXRjaGVyVGFzayhQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgV29ya2VyRXZlbnRRdWV1ZSog
ZXZlbnRRdWV1ZSkKKyAgICAgICAgOiBtX2V2ZW50KGV2ZW50KQorICAgICAgICAsIG1fZXZlbnRR
dWV1ZShldmVudFF1ZXVlKQorICAgICAgICAsIG1faXNDYW5jZWxsZWQoZmFsc2UpCisgICAgewor
ICAgIH0KKworICAgIFJlZlB0cjxFdmVudD4gbV9ldmVudDsKKyAgICBXb3JrZXJFdmVudFF1ZXVl
KiBtX2V2ZW50UXVldWU7CisgICAgYm9vbCBtX2lzQ2FuY2VsbGVkOworfTsKKwordm9pZCBXb3Jr
ZXJFdmVudFF1ZXVlOjpyZW1vdmVFdmVudChFdmVudCogZXZlbnQpCit7CisgICAgbV9ldmVudFRh
c2tNYXAucmVtb3ZlKGV2ZW50KTsKK30KKwordm9pZCBXb3JrZXJFdmVudFF1ZXVlOjplbnF1ZXVl
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCit7CisgICAgaWYgKG1faXNDbG9zZWQp
CisgICAgICAgIHJldHVybjsKKyAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gcHJwRXZlbnQ7Cisg
ICAgT3duUHRyPEV2ZW50RGlzcGF0Y2hlclRhc2s+IHRhc2sgPSBFdmVudERpc3BhdGNoZXJUYXNr
OjpjcmVhdGUoZXZlbnQsIHRoaXMpOworICAgIG1fZXZlbnRUYXNrTWFwLmFkZChldmVudC5yZWxl
YXNlKCksIHRhc2suZ2V0KCkpOworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRh
c2sodGFzay5yZWxlYXNlKCkpOworfQorCitib29sIFdvcmtlckV2ZW50UXVldWU6OmNhbmNlbEV2
ZW50KEV2ZW50KiBldmVudCkKK3sKKyAgICBFdmVudERpc3BhdGNoZXJUYXNrKiB0YXNrID0gbV9l
dmVudFRhc2tNYXAuZ2V0KGV2ZW50KTsKKyAgICBpZiAoIXRhc2spCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB0YXNrLT5jYW5jZWwoKTsKKyAgICByZW1vdmVFdmVudChldmVudCk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV29ya2VyRXZlbnRRdWV1ZTo6Y2xvc2UoKQoreworICAg
IG1faXNDbG9zZWQgPSB0cnVlOworICAgIGZvciAoRXZlbnRUYXNrTWFwOjppdGVyYXRvciBpdCA9
IG1fZXZlbnRUYXNrTWFwLmJlZ2luKCk7IGl0ICE9IG1fZXZlbnRUYXNrTWFwLmVuZCgpOyArK2l0
KSB7CisgICAgICAgIEV2ZW50RGlzcGF0Y2hlclRhc2sqIHRhc2sgPSBpdC0+c2Vjb25kOworICAg
ICAgICB0YXNrLT5jYW5jZWwoKTsKKyAgICB9CisgICAgbV9ldmVudFRhc2tNYXAuY2xlYXIoKTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1
ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43ZDEzYWEzNDQ4NTgxY2ZhMDY3NzM4YjUwYzQ3YTNiNDI1NTU1YmRlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgKQEAgLTAs
MCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lmbmRlZiBXb3JrZXJFdmVudFF1ZXVlX2gKKyNk
ZWZpbmUgV29ya2VyRXZlbnRRdWV1ZV9oCisKKyNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBFdmVudDsKK2NsYXNzIE5vZGU7CitjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OworCitjbGFzcyBXb3JrZXJFdmVudFF1ZXVlIDogcHVibGljIFJlZkNv
dW50ZWQ8V29ya2VyRXZlbnRRdWV1ZT4sIHB1YmxpYyBFdmVudFF1ZXVlIHsKK3B1YmxpYzoKKwor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFdvcmtlckV2ZW50UXVldWU+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0Kik7CisgICAgdmlydHVhbCB+V29ya2VyRXZlbnRRdWV1ZSgpOworCisgICAg
Ly8gRXZlbnRRdWV1ZQorICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsK
KyAgICBib29sIGNhbmNlbEV2ZW50KEV2ZW50Kik7CisgICAgdm9pZCBjbG9zZSgpOworCitwcm90
ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50KEV2ZW50Kik7CisgICAgZXhwbGlj
aXQgV29ya2VyRXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKK3ByaXZhdGU6
CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0Owor
ICAgIGJvb2wgbV9pc0Nsb3NlZDsKKworICAgIGNsYXNzIEV2ZW50RGlzcGF0Y2hlclRhc2s7Cisg
ICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxFdmVudD4sIEV2ZW50RGlzcGF0Y2hlclRhc2sqPiBF
dmVudFRhc2tNYXA7CisgICAgRXZlbnRUYXNrTWFwIG1fZXZlbnRUYXNrTWFwOworfTsKKworfQor
CisjZW5kaWYgLy8gV29ya2VyRXZlbnRRdWV1ZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112384</attachid>
            <date>2011-10-25 13:10:51 -0700</date>
            <delta_ts>2011-10-26 15:03:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57789-20111025131050.patch</filename>
            <type>text/plain</type>
            <size>48797</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTgzMTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyYjUwYzcyZjc4NzI0OTI2
NTI1YTgwZTVhOGMzMzM4Y2JmZGQyMTk5Li5jZDYyNDVhZmI5MjYzZjEzNDkwMDk5ZWExY2FmMzg1
ZmQ3NjU2Y2Y5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTEtMTAtMjQgIERhdmlk
IEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1vdmUgZXZlbnRxdWV1
ZSBmcm9tIERvY3VtZW50IHRvIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgc28gdGhhdCBpdCBjYW4g
YmUgYWNjZXNzZWQgZnJvbSB3b3JrZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01Nzc4OQorCisgICAgICAgIEV4dHJhY3QgaW50ZXJmYWNlIGZyb20g
RXZlbnRRdWV1ZSBhbmQgY3JlYXRlIHR3byBuZXcgc3ViY2xhc3NlczoKKyAgICAgICAgRG9jdW1l
bnRFdmVudFF1ZXVlIGFuZCBXb3JrZXJFdmVudFF1ZXVlLiAgRG9jdW1lbnRFdmVudFF1ZXVlIGlz
IHRoZQorICAgICAgICBvbGQgRXZlbnRRdWV1ZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHVzZXMgRE9N
VGltZXIoMCkgdG8gcG9zdCBhc3luYworICAgICAgICBldmVudHMuICBXb3JrZXJFdmVudFF1ZXVl
IHBvc3RzIGV2ZW50cyB0byBpdHMgdGhyZWFkJ3MgbWVzc2FnZSBsb29wLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtIEluZGV4
ZWREQiB3aWxsIHVzZSB0aGlzIGJ1dCBpc24ndCByZWFkeSB5ZXQuICBJIGRvbid0CisgICAgICAg
IGtub3cgb2YgYW55IG90aGVyIEFQSSBhdmFpbGFibGUgaW4gd29ya2VycyB0aGF0IEkgY2FuIHRl
c3QgdGhpcyB3aXRoLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9ET01BbGxJbk9uZS5j
cHA6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6ZXZlbnRRdWV1ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50RXZlbnRR
dWV1ZS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5jcHAu
CisgICAgICAgIChXZWJDb3JlOjpzaG91bGREaXNwYXRjaFNjcm9sbEV2ZW50U3luY2hyb25vdXNs
eSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWVUaW1lcjo6RG9jdW1lbnRF
dmVudFF1ZXVlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlVGlt
ZXI6OmZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6RG9jdW1lbnRFdmVudFF1
ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6fkRvY3VtZW50RXZl
bnRRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVPckRp
c3BhdGNoU2Nyb2xsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVl
OjpjYW5jZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmNs
b3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6cGVuZGluZ0V2ZW50
VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmRpc3Bh
dGNoRXZlbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuaC4KKyAgICAgICAgKiBkb20vRXZlbnRR
dWV1ZS5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
ICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOiBDaGFuZ2UgRXZlbnRRdWV1ZSB0byBEb2N1bWVudEV2
ZW50UXVldWUuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbmRTY3JvbGxFdmVu
dCk6IENoYW5nZSBFdmVudFF1ZXVlIHRvIERvY3VtZW50RXZlbnRRdWV1ZS4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnNjcm9sbFRvKTogQ2hhbmdlIEV2ZW50UXVldWUgdG8gRG9jdW1lbnRFdmVudFF1ZXVlLgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxpc3RCb3g6OnNjcm9sbFRvKTogQ2hhbmdlIEV2ZW50UXVldWUgdG8gRG9jdW1lbnRFdmVu
dFF1ZXVlLgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAqIHN0
b3JhZ2UvSURCUmVxdWVzdC5jcHA6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5j
cHA6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckNvbnRleHQ6OmV2ZW50UXVldWUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
Q29udGV4dC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OldvcmtlckV2ZW50UXVldWUpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6fldvcmtlckV2ZW50UXVldWUpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6RXZlbnREaXNwYXRjaGVyVGFzazo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlclRhc2s6
OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6RXZl
bnREaXNwYXRjaGVyVGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
RXZlbnRRdWV1ZTo6RXZlbnREaXNwYXRjaGVyVGFzazo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlclRhc2s6OkV2ZW50RGlzcGF0Y2hl
clRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6cmVtb3ZlRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmNhbmNlbEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmNsb3NlKToKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlckV2ZW50UXVldWUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVl
dWUuaC4KKwogMjAxMS0xMC0yNCAgTHVrZSBNYWNwaGVyc29uICAgPG1hY3BoZXJzb25AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04oODA4OTMpOiBIVE1MNSBzcGVjIHRha2VzIDJz
IGxvbmdlciB0byBsb2FkIGR1ZSB0byB0aW1lIHNwZW50IGluIENTU1N0eWxlU2VsZWN0b3IKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggMzExMjdmOTk4NDc1Nzg5YzBkMmFiY2U5ZTM2NTcyZGE3NjU2
ZGFmNC4uMmRhMjU4MmZhYTYwZTNjMjA1YjRmMGJmYmFkMjI0OTRkMDlkOGYxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTUzMyw2ICs1MzMsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
ZG9tL0RvY3VtZW50LmNwcAogICAgIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCiAg
ICAgZG9tL0RvY3VtZW50TWFya2VyLmNwcAorICAgIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3Bw
CiAgICAgZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCiAgICAgZG9tL0RvY3VtZW50UGFyc2VyLmNw
cAogICAgIGRvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCkBAIC01NTIsNyArNTUzLDYgQEAgU0VU
KFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9FdmVudExpc3RlbmVyTWFwLmNwcAogICAgIGRvbS9F
dmVudE5hbWVzLmNwcAogICAgIGRvbS9FdmVudFRhcmdldC5jcHAKLSAgICBkb20vRXZlbnRRdWV1
ZS5jcHAKICAgICBkb20vRXhjZXB0aW9uQmFzZS5jcHAKICAgICBkb20vRXhjZXB0aW9uQ29kZS5j
cHAKICAgICBkb20vRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmNwcApAQCAtMjAxMyw2ICsyMDEz
LDcgQEAgSUYgKEVOQUJMRV9XT1JLRVJTKQogICAgICAgICB3b3JrZXJzL0RlZGljYXRlZFdvcmtl
clRocmVhZC5jcHAKICAgICAgICAgd29ya2Vycy9Xb3JrZXIuY3BwCiAgICAgICAgIHdvcmtlcnMv
V29ya2VyQ29udGV4dC5jcHAKKyAgICAgICAgd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcAog
ICAgICAgICB3b3JrZXJzL1dvcmtlckxvY2F0aW9uLmNwcAogICAgICAgICB3b3JrZXJzL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmNwcAogICAgICAgICB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAxNWY1OTBlNWZlNDEzZTE2NDUzMzBjMTBj
OTg2YjdkOTAzNTliMjI2Li42NGViNjBkNmRiNWVmYzg5ZDBkOTBhYWY1Njg0YmE0NDRjNzk0MDI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTExNzAsNiArMTE3MCw4IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZl
bnRRdWV1ZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuaCBc
CiAJU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50TWFya2VyLmNwcCBcCkBAIC0xMjE4LDcgKzEyMjAsNiBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9FeGNl
cHRpb25CYXNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkJhc2UuaCBcCkBA
IC0zODkzLDYgKzM4OTQsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHRQcm94
eS5oIFwKKwlTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuaCBcCiAJU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5o
IFwKIAlTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IGZjYWZjYjlhMDI3M2Q3NDY2M2ZhYWQyOTJkZDU5MTdhNTBlM2Y2YTYuLmQ3
ZTBkYzQ1MjkxOTM0ZTExMjNiMDY5ZDE2MTYyZmRhOTdhZDFmZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTUwMjYsNiArNTAyNiw4IEBACiAgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJDb250ZXh0
LmNwcCcsCiAgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgnLAogICAgICAgICAg
ICAgJ3dvcmtlcnMvV29ya2VyQ29udGV4dFByb3h5LmgnLAorICAgICAgICAgICAgJ3dvcmtlcnMv
V29ya2VyRXZlbnRRdWV1ZS5jcHAnLAorICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyRXZlbnRR
dWV1ZS5oJywKICAgICAgICAgICAgICd3b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgnLAogICAg
ICAgICAgICAgJ3dvcmtlcnMvV29ya2VyTG9jYXRpb24uY3BwJywKICAgICAgICAgICAgICd3b3Jr
ZXJzL1dvcmtlckxvY2F0aW9uLmgnLApAQCAtNTE4Miw2ICs1MTg0LDggQEAKICAgICAgICAgICAg
ICdkb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9EZXZp
Y2VPcmllbnRhdGlvbkV2ZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudC5jcHAnLAor
ICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwJywKKyAgICAgICAgICAgICdk
b20vRG9jdW1lbnRFdmVudFF1ZXVlLmgnLAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudEZyYWdt
ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAn
LAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudE1hcmtlci5jcHAnLApAQCAtNTIwOSw3ICs1MjEz
LDYgQEAKICAgICAgICAgICAgICdkb20vRXZlbnRFeGNlcHRpb24uaCcsCiAgICAgICAgICAgICAn
ZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwJywKICAgICAgICAgICAgICdkb20vRXZlbnROYW1lcy5j
cHAnLAotICAgICAgICAgICAgJ2RvbS9FdmVudFF1ZXVlLmNwcCcsCiAgICAgICAgICAgICAnZG9t
L0V2ZW50UXVldWUuaCcsCiAgICAgICAgICAgICAnZG9tL0V2ZW50VGFyZ2V0LmNwcCcsCiAgICAg
ICAgICAgICAnZG9tL0V4Y2VwdGlvbkJhc2UuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggODIzNGRm
M2EwYzdjMzJiODFiMGE4MDliYzAzZjM5YmQwYTVmZWU1ZS4uYzJjNDU3NDdmMWJhM2RiMjQ2MTg4
NDljYTc1M2MxNmEyZTVhOTFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTQ4NCw2ICs0ODQsNyBAQCBT
T1VSQ0VTICs9IFwKICAgICBkb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcCBcCiAg
ICAgZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwIFwKICAgICBkb20vRG9jdW1lbnQuY3Bw
IFwKKyAgICBkb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCBcCiAgICAgZG9tL0RvY3VtZW50RnJh
Z21lbnQuY3BwIFwKICAgICBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBcCiAgICAg
ZG9tL0RvY3VtZW50TWFya2VyLmNwcCBcCkBAIC01MDYsNyArNTA3LDYgQEAgU09VUkNFUyArPSBc
CiAgICAgZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwIFwKICAgICBkb20vRXZlbnROYW1lcy5jcHAg
XAogICAgIGRvbS9FdmVudFRhcmdldC5jcHAgXAotICAgIGRvbS9FdmVudFF1ZXVlLmNwcCBcCiAg
ICAgZG9tL0V4Y2VwdGlvbkJhc2UuY3BwIFwKICAgICBkb20vRXhjZXB0aW9uQ29kZS5jcHAgXAog
ICAgIGRvbS9FeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuY3BwIFwKQEAgLTE1NTYsNiArMTU1Niw3
IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9FdmVudERpc3BhdGNoTWVkaWF0b3IuaCBcCiAgICAg
ZG9tL0V2ZW50TGlzdGVuZXJNYXAuaCBcCiAgICAgZG9tL0V2ZW50TmFtZXMuaCBcCisgICAgZG9t
L0V2ZW50UXVldWUuaCBcCiAgICAgZG9tL0V2ZW50VGFyZ2V0LmggXAogICAgIGRvbS9FeGNlcHRp
b25CYXNlLmggXAogICAgIGRvbS9FeGNlcHRpb25Db2RlLmggXApAQCAtMjYxMSw2ICsyNjEyLDcg
QEAgSEVBREVSUyArPSBcCiAgICAgd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCBcCiAg
ICAgd29ya2Vycy9TaGFyZWRXb3JrZXIuaCBcCiAgICAgd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmgg
XAorICAgIHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oIFwKICAgICB3b3JrZXJzL1dvcmtlci5o
IFwKICAgICB3b3JrZXJzL1dvcmtlckxvY2F0aW9uLmggXAogICAgIHdvcmtlcnMvV29ya2VyTWVz
c2FnaW5nUHJveHkuaCBcCkBAIC0zMDE1LDYgKzMwMTcsNyBAQCBjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfV09SS0VSUz0xKSB7CiAgICAgICAgIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFk
LmNwcCBcCiAgICAgICAgIHdvcmtlcnMvV29ya2VyLmNwcCBcCiAgICAgICAgIHdvcmtlcnMvV29y
a2VyQ29udGV4dC5jcHAgXAorICAgICAgICB3b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwIFwK
ICAgICAgICAgd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAgXAogICAgICAgICB3b3JrZXJzL1dv
cmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBcCiAgICAgICAgIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGUyNjU5MDM1NjRhZmZhOTRkNDgyNTAzN2ZiMDY5MDJiODFiMzQ3Y2EuLjQwMTAw
ZWFlZmU3ZDFjYWMwNjNhNTBiZThiMTY4OTZmYmUxZTQ2ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI5MTQsNyArMjkxNCw2
IEBACiAJCThDQURGMkFEMTM1QzdCMzYwMDlFRjQzRiAvKiBMZXZlbERCSXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhDQURGMkE3MTM1QzdC
MzYwMDlFRjQzRiAvKiBMZXZlbERCSXRlcmF0b3IuaCAqLzsgfTsKIAkJOENBREYyQUUxMzVDN0Iz
NjAwOUVGNDNGIC8qIExldmVsREJTbGljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOENBREYyQTgxMzVDN0IzNjAwOUVGNDNGIC8qIExldmVsREJTbGlj
ZS5oICovOyB9OwogCQk4RjY3NTYxQjEyODhCMTdCMDA0N0FDQTMgLyogRXZlbnRRdWV1ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEY2NzU2MTkxMjg4
QjE3QjAwNDdBQ0EzIC8qIEV2ZW50UXVldWUuaCAqLzsgfTsKLQkJOEY2NzU2MUMxMjg4QjE3QjAw
NDdBQ0EzIC8qIEV2ZW50UXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOEY2NzU2MUExMjg4QjE3QjAwNDdBQ0EzIC8qIEV2ZW50UXVldWUuY3Bw
ICovOyB9OwogCQk4RkFDNzc0RDExOTg3MkNCMDAxNUFFOTQgLyogSlNNYWluVGhyZWFkRXhlY1N0
YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhG
OTM0RDg0MTE4OUYxRUUwMDUwOEQ1RCAvKiBKU01haW5UaHJlYWRFeGVjU3RhdGUuY3BwICovOyB9
OwogCQk5MDAxNzc0MDEyRTAzNDc4MDA2NDg0NjIgLyogT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDAxNzcz
RDEyRTAzNDc4MDA2NDg0NjIgLyogT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHAgKi87IH07CiAJ
CTkwMDE3NzQxMTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDAxNzczRTEyRTAz
NDc4MDA2NDg0NjIgLyogT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oICovOyB9OwpAQCAtMTAwNDYs
NyArMTAwNDUsNiBAQAogCQk4Q0FERjJBNzEzNUM3QjM2MDA5RUY0M0YgLyogTGV2ZWxEQkl0ZXJh
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExldmVsREJJdGVyYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Q0FERjJBODEzNUM3QjM2MDA5RUY0M0Yg
LyogTGV2ZWxEQlNsaWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExldmVs
REJTbGljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4RjY3NTYxOTEyODhCMTdC
MDA0N0FDQTMgLyogRXZlbnRRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBFdmVudFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCThGNjc1NjFBMTI4
OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEV2ZW50UXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4RjkzNEQ4MzExODlGMUVFMDA1MDhENUQgLyogSlNNYWluVGhyZWFkRXhlY1N0YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4RjkzNEQ4NDExODlGMUVFMDA1MDhENUQgLyog
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkwMDE3NzNEMTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE9FU1N0YW5kYXJkRGVy
aXZhdGl2ZXMuY3BwOyBwYXRoID0gY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA0ODIsNiArMTA0ODAsMTAgQEAKIAkJQTFF
MTE1NDMxMzAxNUMzRDAwNTRBQzhDIC8qIERpc3RhbnRMaWdodFNvdXJjZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEaXN0YW50TGlnaHRTb3VyY2UuY3BwOyBwYXRo
ID0gZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBMUUxMTU0NTEzMDE1QzRFMDA1NEFDOEMgLyogUG9pbnRMaWdodFNvdXJjZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQb2ludExpZ2h0U291cmNlLmNw
cDsgcGF0aCA9IGZpbHRlcnMvUG9pbnRMaWdodFNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUExRTExNTQ3MTMwMTVDNUQwMDU0QUM4QyAvKiBTcG90TGlnaHRTb3VyY2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3BvdExpZ2h0U291cmNl
LmNwcDsgcGF0aCA9IGZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTNCQjU5QkQxNDU2NTMwNDAwQUM1NkZFIC8qIERvY3VtZW50RXZlbnRR
dWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudEV2
ZW50UXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0JCNTlCRTE0NTY1
MzA0MDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERvY3VtZW50RXZlbnRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBM0JCNTlDMjE0NTY1MzNEMDBBQzU2RkUgLyogV29ya2VyRXZlbnRRdWV1ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXb3JrZXJFdmVudFF1ZXVlLmNw
cDsgcGF0aCA9IHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSBTT1VS
Q0VfUk9PVDsgfTsKKwkJQTNCQjU5QzMxNDU2NTMzRDAwQUM1NkZFIC8qIFdvcmtlckV2ZW50UXVl
dWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV29ya2VyRXZlbnRRdWV1ZS5o
OyBwYXRoID0gd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKIAkJQTQwOUM5ODIxMTZEMERERDAwNzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9n
cmVzc0luZGljYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
Y2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNDA5Qzk4MzExNkQwREREMDA3MTk3QkQgLyogQWNjZXNzaWJpbGl0eVByb2dyZXNz
SW5kaWNhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxp
dHlQcm9ncmVzc0luZGljYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNDIy
NkU1OTExNjNENjY3MDA4QjgzOTcgLyogSlNIVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTFByb2dyZXNzRWxlbWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDgxNyw2ICsyMDgxOSw4IEBACiAJCUY1
MjNEMzI0MDJERTQ0NzgwMTg2MzVDQSAvKiBkb20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCUEzQkI1OUMyMTQ1NjUzM0QwMEFDNTZGRSAvKiBXb3JrZXJF
dmVudFF1ZXVlLmNwcCAqLywKKwkJCQlBM0JCNTlDMzE0NTY1MzNEMDBBQzU2RkUgLyogV29ya2Vy
RXZlbnRRdWV1ZS5oICovLAogCQkJCUUxQzRERTZEMEVBNzVDNjUwMDIzQ0NENiAvKiBBY3RpdmVE
T01PYmplY3QuY3BwICovLAogCQkJCUUxQzRERTY4MEVBNzVDMUUwMDIzQ0NENiAvKiBBY3RpdmVE
T01PYmplY3QuaCAqLywKIAkJCQlBOEM0QTdGQzA5RDU2MzI3MDAwM0FDOEQgLyogQXR0ci5jcHAg
Ki8sCkBAIC0yMDg5OCw2ICsyMDkwMiw4IEBACiAJCQkJNTlBODVFQTMxMTlENjhFQzAwREVGMUVG
IC8qIERldmljZU9yaWVudGF0aW9uRXZlbnQuaCAqLywKIAkJCQk1OUE4NUVBQTExOUQ3QjZFMDBE
RUYxRUYgLyogRGV2aWNlT3JpZW50YXRpb25FdmVudC5pZGwgKi8sCiAJCQkJQTgxODVGMzQwOTc2
NTc2NTAwNTgyNkQ5IC8qIERvY3VtZW50LmNwcCAqLywKKwkJCQlBM0JCNTlCRDE0NTY1MzA0MDBB
QzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCAqLywKKwkJCQlBM0JCNTlCRTE0NTY1MzA0
MDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmggKi8sCiAJCQkJQTgxODVGMzgwOTc2NTc2
NTAwNTgyNkQ5IC8qIERvY3VtZW50LmggKi8sCiAJCQkJNjU0OEUyNDgwOUUxRTA0RDAwQUY4MDIw
IC8qIERvY3VtZW50LmlkbCAqLywKIAkJCQlBODE4NUYzNzA5NzY1NzY1MDA1ODI2RDkgLyogRG9j
dW1lbnRGcmFnbWVudC5jcHAgKi8sCkBAIC0yMDk2MSw3ICsyMDk2Nyw2IEBACiAJCQkJQUQ0NDk1
RjIxNDFGQzA4OTAwNTQxRURGIC8qIEV2ZW50TGlzdGVuZXJNYXAuaCAqLywKIAkJCQk5Mzk4ODVD
MTA4QjdFM0QxMDBFNzA3QzQgLyogRXZlbnROYW1lcy5jcHAgKi8sCiAJCQkJOTM5ODg1QzIwOEI3
RTNEMTAwRTcwN0M0IC8qIEV2ZW50TmFtZXMuaCAqLywKLQkJCQk4RjY3NTYxQTEyODhCMTdCMDA0
N0FDQTMgLyogRXZlbnRRdWV1ZS5jcHAgKi8sCiAJCQkJOEY2NzU2MTkxMjg4QjE3QjAwNDdBQ0Ez
IC8qIEV2ZW50UXVldWUuaCAqLywKIAkJCQlFMTJFREJFOTBCMzA4RTBCMDAyNzA0QjYgLyogRXZl
bnRUYXJnZXQuY3BwICovLAogCQkJCUUxMkVEQjdBMEIzMDhBNzgwMDI3MDRCNiAvKiBFdmVudFRh
cmdldC5oICovLApAQCAtMjU0NjIsNyArMjU0NjcsNiBAQAogCQkJCUFENDQ5NUYzMTQxRkMwODkw
MDU0MUVERiAvKiBFdmVudExpc3RlbmVyTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDQTE5
RTA1MERDMjU1OTUwMDY1QTk5NCAvKiBFdmVudExvb3BNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk5Mzk4ODVDMzA4QjdFM0QxMDBFNzA3QzQgLyogRXZlbnROYW1lcy5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk4RjY3NTYxQzEyODhCMTdCMDA0N0FDQTMgLyogRXZlbnRRdWV1ZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFMEZFRjM3MkIyN0M1M0VBQzFDMUZCRUUgLyogRXZlbnRTb3VyY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyRURCRUEwQjMwOEUwQjAwMjcwNEI2IC8qIEV2ZW50VGFy
Z2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjBEOEYyMEQyQTExRTAwMEI5OTE4RiAvKiBF
eGNlcHRpb25CYXNlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RPTUFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5j
cHAKaW5kZXggZjgyNWRhMDcxYzU3Njg5ZmNjOTJmOGJjNGVmZGEwM2JhMmZjN2NhMi4uZjcxODNh
MjI1YjUwMTJjMWI2ODUwYzgxNWQzYTY3NjMxYWRiZTZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxs
SW5PbmUuY3BwCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyLmNwcCIKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcCIKICNp
bmNsdWRlICJEb2N1bWVudC5jcHAiCisjaW5jbHVkZSAiRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCIK
ICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmNwcCIKICNpbmNsdWRlICJEb2N1bWVudE1hcmtl
ci5jcHAiCiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCmluZGV4IGIzYTVhYjE1MWJiMjgzMWE0M2RiNGZhZTliMTdiNDk4M2UwY2Uy
YmEuLmIzNjMyMGM3NmQzMjNkN2M4MDU5MjMzMjQ1ZDgxNzliZmI5YzY0MmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0
aW9uLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMu
aCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJEb2N1bWVudEZy
YWdtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXIuaCIKQEAgLTYwLDcgKzYxLDYgQEAKICNpbmNsdWRlICJFdmVudEhh
bmRsZXIuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgotI2luY2x1ZGUgIkV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9ybUFzc29jaWF0ZWRF
bGVtZW50LmgiCkBAIC0zODUsNyArMzg1LDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBm
cmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAgICwg
bV9pc1ZpZXdTb3VyY2UoZmFsc2UpCiAgICAgLCBtX3Nhd0VsZW1lbnRzSW5Lbm93bk5hbWVzcGFj
ZXMoZmFsc2UpCiAgICAgLCBtX3VzaW5nR2VvbG9jYXRpb24oZmFsc2UpCi0gICAgLCBtX2V2ZW50
UXVldWUoRXZlbnRRdWV1ZTo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV9ldmVudFF1ZXVlKERvY3Vt
ZW50RXZlbnRRdWV1ZTo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV93ZWFrUmVmZXJlbmNlKERvY3Vt
ZW50V2Vha1JlZmVyZW5jZTo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9pZEF0dHJpYnV0ZU5hbWUo
aWRBdHRyKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5k
ZXggNzI3MDVmMGI3ZGJmODdmODFkODY5YzZhY2QxNTRiZWY0YzdlYzU1OC4uOTJiMDAxODU2NGI2
MmFkNGI5ZjA0ODliODAwNTY3NjQ3NzE0MTAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJDb2xsZWN0aW9uVHlwZS5oIgogI2luY2x1ZGUgIkNvbG9y
LmgiCiAjaW5jbHVkZSAiRE9NVGltZVN0YW1wLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRFdmVudFF1
ZXVlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaW1pbmcuaCIKICNpbmNsdWRlICJJY29uVVJMLmgi
CiAjaW5jbHVkZSAiSW50UmVjdC5oIgpAQCAtODEsNyArODIsNiBAQCBjbGFzcyBFbGVtZW50Owog
Y2xhc3MgRW50aXR5UmVmZXJlbmNlOwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBFdmVudExpc3RlbmVy
OwotY2xhc3MgRXZlbnRRdWV1ZTsKIGNsYXNzIEZvbnREYXRhOwogY2xhc3MgRm9ybUFzc29jaWF0
ZWRFbGVtZW50OwogY2xhc3MgRnJhbWU7CkBAIC0xMDI2LDcgKzEwMjYsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBlbnF1ZXVlUGFnZXNob3dFdmVudChQYWdlc2hvd0V2ZW50UGVyc2lzdGVuY2UpOwog
ICAgIHZvaWQgZW5xdWV1ZUhhc2hjaGFuZ2VFdmVudChjb25zdCBTdHJpbmcmIG9sZFVSTCwgY29u
c3QgU3RyaW5nJiBuZXdVUkwpOwogICAgIHZvaWQgZW5xdWV1ZVBvcHN0YXRlRXZlbnQoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0KTsKLSAgICBFdmVudFF1ZXVl
KiBldmVudFF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFF1ZXVlLmdldCgpOyB9CisgICAg
dmlydHVhbCBEb2N1bWVudEV2ZW50UXVldWUqIGV2ZW50UXVldWUoKSBjb25zdCB7IHJldHVybiBt
X2V2ZW50UXVldWUuZ2V0KCk7IH0KIAogICAgIHZvaWQgYWRkTWVkaWFDYW5TdGFydExpc3RlbmVy
KE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciopOwogICAgIHZvaWQgcmVtb3ZlTWVkaWFDYW5TdGFydExp
c3RlbmVyKE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciopOwpAQCAtMTM2Niw3ICsxMzY2LDcgQEAgcHJp
dmF0ZToKIAogICAgIGJvb2wgbV91c2luZ0dlb2xvY2F0aW9uOwogCi0gICAgUmVmUHRyPEV2ZW50
UXVldWU+IG1fZXZlbnRRdWV1ZTsKKyAgICBSZWZQdHI8RG9jdW1lbnRFdmVudFF1ZXVlPiBtX2V2
ZW50UXVldWU7CiAKICAgICBSZWZQdHI8RG9jdW1lbnRXZWFrUmVmZXJlbmNlPiBtX3dlYWtSZWZl
cmVuY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVl
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2VkZjI0Zjg4YTY2NDViZTZkYjkyYmM2ZGM1NGIxODI0NzdjMDljNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCkBAIC0w
LDAgKzEsMTU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRG9jdW1lbnRFdmVudFF1ZXVlLmgiCisKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNs
dWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgorI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgorI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTdXNwZW5kYWJsZVRpbWVyLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK3N0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGREaXNw
YXRjaFNjcm9sbEV2ZW50U3luY2hyb25vdXNseShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAg
QVNTRVJUX0FSRyhkb2N1bWVudCwgZG9jdW1lbnQpOworICAgIHJldHVybiBhcHBsaWNhdGlvbklz
U2FmYXJpKCkgJiYgKGRvY3VtZW50LT51cmwoKS5wcm90b2NvbElzKCJmZWVkIikgfHwgZG9jdW1l
bnQtPnVybCgpLnByb3RvY29sSXMoImZlZWRzIikpOworfQorCitjbGFzcyBEb2N1bWVudEV2ZW50
UXVldWVUaW1lciA6IHB1YmxpYyBTdXNwZW5kYWJsZVRpbWVyIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShEb2N1bWVudEV2ZW50UXVldWVUaW1lcik7CitwdWJsaWM6CisgICAgRG9jdW1lbnRF
dmVudFF1ZXVlVGltZXIoRG9jdW1lbnRFdmVudFF1ZXVlKiBldmVudFF1ZXVlLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgICAgICA6IFN1c3BlbmRhYmxlVGltZXIoY29udGV4
dCkKKyAgICAgICAgLCBtX2V2ZW50UXVldWUoZXZlbnRRdWV1ZSkgeyB9CisKK3ByaXZhdGU6Cisg
ICAgdmlydHVhbCB2b2lkIGZpcmVkKCkgeyBtX2V2ZW50UXVldWUtPnBlbmRpbmdFdmVudFRpbWVy
RmlyZWQoKTsgfQorICAgIERvY3VtZW50RXZlbnRRdWV1ZSogbV9ldmVudFF1ZXVlOworfTsKKwor
UGFzc1JlZlB0cjxEb2N1bWVudEV2ZW50UXVldWU+IERvY3VtZW50RXZlbnRRdWV1ZTo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBEb2N1bWVudEV2ZW50UXVldWUoY29udGV4dCkpOworfQorCitEb2N1bWVudEV2ZW50UXVl
dWU6OkRvY3VtZW50RXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQor
ICAgIDogbV9wZW5kaW5nRXZlbnRUaW1lcihhZG9wdFB0cihuZXcgRG9jdW1lbnRFdmVudFF1ZXVl
VGltZXIodGhpcywgY29udGV4dCkpKQorICAgICwgbV9pc0Nsb3NlZChmYWxzZSkKK3sKK30KKwor
RG9jdW1lbnRFdmVudFF1ZXVlOjp+RG9jdW1lbnRFdmVudFF1ZXVlKCkKK3sKK30KKwordm9pZCBE
b2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkK
K3sKKyAgICBpZiAobV9pc0Nsb3NlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKGV2
ZW50LT50YXJnZXQoKSk7CisgICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVkRXZlbnRzLmFkZChl
dmVudCkuc2Vjb25kOworICAgIEFTU0VSVF9VTlVTRUQod2FzQWRkZWQsIHdhc0FkZGVkKTsgLy8g
SXQgc2hvdWxkIG5vdCBoYXZlIGFscmVhZHkgYmVlbiBpbiB0aGUgbGlzdC4KKyAgICAKKyAgICBp
ZiAoIW1fcGVuZGluZ0V2ZW50VGltZXItPmlzQWN0aXZlKCkpCisgICAgICAgIG1fcGVuZGluZ0V2
ZW50VGltZXItPnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBEb2N1bWVudEV2ZW50UXVldWU6
OmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQsIFNj
cm9sbEV2ZW50VGFyZ2V0VHlwZSB0YXJnZXRUeXBlKQoreworICAgIGlmICghdGFyZ2V0LT5kb2N1
bWVudCgpLT5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OlNDUk9MTF9MSVNURU5FUikpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIFBlciB0aGUgVzNDIENTU09NIFZpZXcgTW9kdWxlLCBzY3Jv
bGwgZXZlbnRzIGZpcmVkIGF0IHRoZSBkb2N1bWVudCBzaG91bGQgYnViYmxlLCBvdGhlcnMgc2hv
dWxkIG5vdC4KKyAgICBib29sIGNhbkJ1YmJsZSA9IHRhcmdldFR5cGUgPT0gU2Nyb2xsRXZlbnRE
b2N1bWVudFRhcmdldDsKKyAgICBSZWZQdHI8RXZlbnQ+IHNjcm9sbEV2ZW50ID0gRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuc2Nyb2xsRXZlbnQsIGNhbkJ1YmJsZSwgZmFsc2UgLyogbm9uIGNh
bmNlbGxlYWJsZSAqLyk7CisgICAgIAorICAgIGlmIChzaG91bGREaXNwYXRjaFNjcm9sbEV2ZW50
U3luY2hyb25vdXNseSh0YXJnZXQtPmRvY3VtZW50KCkpKSB7CisgICAgICAgIHRhcmdldC0+ZGlz
cGF0Y2hFdmVudChzY3JvbGxFdmVudC5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKCFtX25vZGVzV2l0aFF1ZXVlZFNjcm9sbEV2ZW50cy5hZGQodGFyZ2V0Lmdl
dCgpKS5zZWNvbmQpCisgICAgICAgIHJldHVybjsKKworICAgIHNjcm9sbEV2ZW50LT5zZXRUYXJn
ZXQodGFyZ2V0KTsKKyAgICBlbnF1ZXVlRXZlbnQoc2Nyb2xsRXZlbnQucmVsZWFzZSgpKTsKK30K
KworYm9vbCBEb2N1bWVudEV2ZW50UXVldWU6OmNhbmNlbEV2ZW50KEV2ZW50KiBldmVudCkKK3sK
KyAgICBib29sIGZvdW5kID0gbV9xdWV1ZWRFdmVudHMuY29udGFpbnMoZXZlbnQpOworICAgIG1f
cXVldWVkRXZlbnRzLnJlbW92ZShldmVudCk7CisgICAgaWYgKG1fcXVldWVkRXZlbnRzLmlzRW1w
dHkoKSkKKyAgICAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3RvcCgpOworICAgIHJldHVybiBm
b3VuZDsKK30KKwordm9pZCBEb2N1bWVudEV2ZW50UXVldWU6OmNsb3NlKCkKK3sKKyAgICBtX2lz
Q2xvc2VkID0gdHJ1ZTsKKyAgICBtX3BlbmRpbmdFdmVudFRpbWVyLT5zdG9wKCk7CisgICAgbV9x
dWV1ZWRFdmVudHMuY2xlYXIoKTsKK30KKwordm9pZCBEb2N1bWVudEV2ZW50UXVldWU6OnBlbmRp
bmdFdmVudFRpbWVyRmlyZWQoKQoreworICAgIEFTU0VSVCghbV9wZW5kaW5nRXZlbnRUaW1lci0+
aXNBY3RpdmUoKSk7CisgICAgQVNTRVJUKCFtX3F1ZXVlZEV2ZW50cy5pc0VtcHR5KCkpOworCisg
ICAgbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHMuY2xlYXIoKTsKKworICAgIC8vIEluc2Vy
dCBhIG1hcmtlciBmb3Igd2hlcmUgd2Ugc2hvdWxkIHN0b3AuCisgICAgQVNTRVJUKCFtX3F1ZXVl
ZEV2ZW50cy5jb250YWlucygwKSk7CisgICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVkRXZlbnRz
LmFkZCgwKS5zZWNvbmQ7CisgICAgQVNTRVJUX1VOVVNFRCh3YXNBZGRlZCwgd2FzQWRkZWQpOyAv
LyBJdCBzaG91bGQgbm90IGhhdmUgYWxyZWFkeSBiZWVuIGluIHRoZSBsaXN0LgorCisgICAgUmVm
UHRyPERvY3VtZW50RXZlbnRRdWV1ZT4gcHJvdGVjdG9yKHRoaXMpOworCisgICAgd2hpbGUgKCFt
X3F1ZXVlZEV2ZW50cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPEV2
ZW50PiA+OjppdGVyYXRvciBpdGVyID0gbV9xdWV1ZWRFdmVudHMuYmVnaW4oKTsKKyAgICAgICAg
UmVmUHRyPEV2ZW50PiBldmVudCA9ICppdGVyOworICAgICAgICBtX3F1ZXVlZEV2ZW50cy5yZW1v
dmUoaXRlcik7CisgICAgICAgIGlmICghZXZlbnQpCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZGlzcGF0Y2hFdmVudChldmVudC5nZXQoKSk7CisgICAgfQorfQorCit2b2lkIERvY3VtZW50
RXZlbnRRdWV1ZTo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKK3sKKyAg
ICBFdmVudFRhcmdldCogZXZlbnRUYXJnZXQgPSBldmVudC0+dGFyZ2V0KCk7CisgICAgaWYgKGV2
ZW50VGFyZ2V0LT50b0RPTVdpbmRvdygpKQorICAgICAgICBldmVudFRhcmdldC0+dG9ET01XaW5k
b3coKS0+ZGlzcGF0Y2hFdmVudChldmVudCwgMCk7CisgICAgZWxzZQorICAgICAgICBldmVudFRh
cmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudEV2ZW50UXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NWVjYWE3ZTFlMzQxMTM0ZmUwYzM1NzI3Mzk2
ZmM5MjcxMzVhY2JjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50RXZlbnRRdWV1ZS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpZm5kZWYg
RG9jdW1lbnRFdmVudFF1ZXVlX2gKKyNkZWZpbmUgRG9jdW1lbnRFdmVudFF1ZXVlX2gKKworI2lu
Y2x1ZGUgIkV2ZW50UXVldWUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUg
PHd0Zi9MaXN0SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBFdmVudDsKK2NsYXNzIERvY3VtZW50RXZlbnRRdWV1ZVRpbWVyOwor
Y2xhc3MgTm9kZTsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIERvY3Vt
ZW50RXZlbnRRdWV1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPERvY3VtZW50RXZlbnRRdWV1ZT4sIHB1
YmxpYyBFdmVudFF1ZXVlIHsKK3B1YmxpYzoKKyAgICBlbnVtIFNjcm9sbEV2ZW50VGFyZ2V0VHlw
ZSB7CisgICAgICAgIFNjcm9sbEV2ZW50RG9jdW1lbnRUYXJnZXQsCisgICAgICAgIFNjcm9sbEV2
ZW50RWxlbWVudFRhcmdldAorICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVu
dEV2ZW50UXVldWU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgdmlydHVh
bCB+RG9jdW1lbnRFdmVudFF1ZXVlKCk7CisKKyAgICAvLyBFdmVudFF1ZXVlCisgICAgdmlydHVh
bCB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CisgICAgdmlydHVhbCBib29s
IGNhbmNlbEV2ZW50KEV2ZW50Kik7CisgICAgdm9pZCBjbG9zZSgpOworCisgICAgdm9pZCBlbnF1
ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KFBhc3NSZWZQdHI8Tm9kZT4sIFNjcm9sbEV2ZW50VGFy
Z2V0VHlwZSk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRG9jdW1lbnRFdmVudFF1ZXVlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworICAgIHZvaWQgcGVuZGluZ0V2ZW50VGltZXJGaXJl
ZCgpOworICAgIHZvaWQgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CisKKyAgICBP
d25QdHI8RG9jdW1lbnRFdmVudFF1ZXVlVGltZXI+IG1fcGVuZGluZ0V2ZW50VGltZXI7CisgICAg
TGlzdEhhc2hTZXQ8UmVmUHRyPEV2ZW50PiA+IG1fcXVldWVkRXZlbnRzOworICAgIEhhc2hTZXQ8
Tm9kZSo+IG1fbm9kZXNXaXRoUXVldWVkU2Nyb2xsRXZlbnRzOworICAgIGJvb2wgbV9pc0Nsb3Nl
ZDsKKworICAgIGZyaWVuZCBjbGFzcyBEb2N1bWVudEV2ZW50UXVldWVUaW1lcjsgICAgCit9Owor
Cit9CisKKyNlbmRpZiAvLyBEb2N1bWVudEV2ZW50UXVldWVfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVl
dWUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGVlMjc3MjFmNDFiOGNjMGMx
YmRmZTU3M2MyNDgyY2Q5NDk1ZTdkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDE1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgotCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCi0jaW5j
bHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKLSNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKLSNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU3VzcGVuZGFibGVUaW1lci5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1zdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkRGlz
cGF0Y2hTY3JvbGxFdmVudFN5bmNocm9ub3VzbHkoRG9jdW1lbnQqIGRvY3VtZW50KQotewotICAg
IEFTU0VSVF9BUkcoZG9jdW1lbnQsIGRvY3VtZW50KTsKLSAgICByZXR1cm4gYXBwbGljYXRpb25J
c1NhZmFyaSgpICYmIChkb2N1bWVudC0+dXJsKCkucHJvdG9jb2xJcygiZmVlZCIpIHx8IGRvY3Vt
ZW50LT51cmwoKS5wcm90b2NvbElzKCJmZWVkcyIpKTsKLX0KLQotY2xhc3MgRXZlbnRRdWV1ZVRp
bWVyIDogcHVibGljIFN1c3BlbmRhYmxlVGltZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEV2ZW50UXVldWVUaW1lcik7Ci1wdWJsaWM6Ci0gICAgRXZlbnRRdWV1ZVRpbWVyKEV2ZW50UXVl
dWUqIGV2ZW50UXVldWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgICAg
IDogU3VzcGVuZGFibGVUaW1lcihjb250ZXh0KQotICAgICAgICAsIG1fZXZlbnRRdWV1ZShldmVu
dFF1ZXVlKSB7IH0KLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKSB7IG1fZXZl
bnRRdWV1ZS0+cGVuZGluZ0V2ZW50VGltZXJGaXJlZCgpOyB9Ci0gICAgRXZlbnRRdWV1ZSogbV9l
dmVudFF1ZXVlOyAgICAKLX07Ci0KLVBhc3NSZWZQdHI8RXZlbnRRdWV1ZT4gRXZlbnRRdWV1ZTo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBFdmVudFF1ZXVlKGNvbnRleHQpKTsKLX0KLQotRXZlbnRRdWV1ZTo6RXZlbnRR
dWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAgIDogbV9wZW5kaW5nRXZl
bnRUaW1lcihhZG9wdFB0cihuZXcgRXZlbnRRdWV1ZVRpbWVyKHRoaXMsIGNvbnRleHQpKSkKLSAg
ICAsIG1faXNDbG9zZWQoZmFsc2UpCi17Ci19Ci0KLUV2ZW50UXVldWU6On5FdmVudFF1ZXVlKCkK
LXsKLX0KLQotdm9pZCBFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4g
ZXZlbnQpCi17Ci0gICAgaWYgKG1faXNDbG9zZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFT
U0VSVChldmVudC0+dGFyZ2V0KCkpOwotICAgIGJvb2wgd2FzQWRkZWQgPSBtX3F1ZXVlZEV2ZW50
cy5hZGQoZXZlbnQpLnNlY29uZDsKLSAgICBBU1NFUlRfVU5VU0VEKHdhc0FkZGVkLCB3YXNBZGRl
ZCk7IC8vIEl0IHNob3VsZCBub3QgaGF2ZSBhbHJlYWR5IGJlZW4gaW4gdGhlIGxpc3QuCi0gICAg
Ci0gICAgaWYgKCFtX3BlbmRpbmdFdmVudFRpbWVyLT5pc0FjdGl2ZSgpKQotICAgICAgICBtX3Bl
bmRpbmdFdmVudFRpbWVyLT5zdGFydE9uZVNob3QoMCk7Ci19Ci0KLXZvaWQgRXZlbnRRdWV1ZTo6
ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCwgU2Ny
b2xsRXZlbnRUYXJnZXRUeXBlIHRhcmdldFR5cGUpCi17Ci0gICAgaWYgKCF0YXJnZXQtPmRvY3Vt
ZW50KCktPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6U0NST0xMX0xJU1RFTkVSKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgLy8gUGVyIHRoZSBXM0MgQ1NTT00gVmlldyBNb2R1bGUsIHNjcm9s
bCBldmVudHMgZmlyZWQgYXQgdGhlIGRvY3VtZW50IHNob3VsZCBidWJibGUsIG90aGVycyBzaG91
bGQgbm90LgotICAgIGJvb2wgY2FuQnViYmxlID0gdGFyZ2V0VHlwZSA9PSBTY3JvbGxFdmVudERv
Y3VtZW50VGFyZ2V0OwotICAgIFJlZlB0cjxFdmVudD4gc2Nyb2xsRXZlbnQgPSBFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5zY3JvbGxFdmVudCwgY2FuQnViYmxlLCBmYWxzZSAvKiBub24gY2Fu
Y2VsbGVhYmxlICovKTsKLSAgICAgCi0gICAgaWYgKHNob3VsZERpc3BhdGNoU2Nyb2xsRXZlbnRT
eW5jaHJvbm91c2x5KHRhcmdldC0+ZG9jdW1lbnQoKSkpIHsKLSAgICAgICAgdGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KHNjcm9sbEV2ZW50LnJlbGVhc2UoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoIW1fbm9kZXNXaXRoUXVldWVkU2Nyb2xsRXZlbnRzLmFkZCh0YXJnZXQuZ2V0
KCkpLnNlY29uZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2Nyb2xsRXZlbnQtPnNldFRhcmdl
dCh0YXJnZXQpOwotICAgIGVucXVldWVFdmVudChzY3JvbGxFdmVudC5yZWxlYXNlKCkpOwotfQot
Ci1ib29sIEV2ZW50UXVldWU6OmNhbmNlbEV2ZW50KEV2ZW50KiBldmVudCkKLXsKLSAgICBib29s
IGZvdW5kID0gbV9xdWV1ZWRFdmVudHMuY29udGFpbnMoZXZlbnQpOwotICAgIG1fcXVldWVkRXZl
bnRzLnJlbW92ZShldmVudCk7Ci0gICAgaWYgKG1fcXVldWVkRXZlbnRzLmlzRW1wdHkoKSkKLSAg
ICAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3RvcCgpOwotICAgIHJldHVybiBmb3VuZDsKLX0K
LQotdm9pZCBFdmVudFF1ZXVlOjpjbG9zZSgpCi17Ci0gICAgbV9pc0Nsb3NlZCA9IHRydWU7Ci0g
ICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3RvcCgpOwotICAgIG1fcXVldWVkRXZlbnRzLmNsZWFy
KCk7Ci19Ci0KLXZvaWQgRXZlbnRRdWV1ZTo6cGVuZGluZ0V2ZW50VGltZXJGaXJlZCgpCi17Ci0g
ICAgQVNTRVJUKCFtX3BlbmRpbmdFdmVudFRpbWVyLT5pc0FjdGl2ZSgpKTsKLSAgICBBU1NFUlQo
IW1fcXVldWVkRXZlbnRzLmlzRW1wdHkoKSk7Ci0KLSAgICBtX25vZGVzV2l0aFF1ZXVlZFNjcm9s
bEV2ZW50cy5jbGVhcigpOwotCi0gICAgLy8gSW5zZXJ0IGEgbWFya2VyIGZvciB3aGVyZSB3ZSBz
aG91bGQgc3RvcC4KLSAgICBBU1NFUlQoIW1fcXVldWVkRXZlbnRzLmNvbnRhaW5zKDApKTsKLSAg
ICBib29sIHdhc0FkZGVkID0gbV9xdWV1ZWRFdmVudHMuYWRkKDApLnNlY29uZDsKLSAgICBBU1NF
UlRfVU5VU0VEKHdhc0FkZGVkLCB3YXNBZGRlZCk7IC8vIEl0IHNob3VsZCBub3QgaGF2ZSBhbHJl
YWR5IGJlZW4gaW4gdGhlIGxpc3QuCi0KLSAgICBSZWZQdHI8RXZlbnRRdWV1ZT4gcHJvdGVjdG9y
KHRoaXMpOwotCi0gICAgd2hpbGUgKCFtX3F1ZXVlZEV2ZW50cy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgTGlzdEhhc2hTZXQ8UmVmUHRyPEV2ZW50PiA+OjppdGVyYXRvciBpdGVyID0gbV9xdWV1ZWRF
dmVudHMuYmVnaW4oKTsKLSAgICAgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9ICppdGVyOwotICAg
ICAgICBtX3F1ZXVlZEV2ZW50cy5yZW1vdmUoaXRlcik7Ci0gICAgICAgIGlmICghZXZlbnQpCi0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGlzcGF0Y2hFdmVudChldmVudC5nZXQoKSk7Ci0g
ICAgfQotfQotCi12b2lkIEV2ZW50UXVldWU6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVu
dD4gZXZlbnQpCi17Ci0gICAgRXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0ID0gZXZlbnQtPnRhcmdl
dCgpOwotICAgIGlmIChldmVudFRhcmdldC0+dG9ET01XaW5kb3coKSkKLSAgICAgICAgZXZlbnRU
YXJnZXQtPnRvRE9NV2luZG93KCktPmRpc3BhdGNoRXZlbnQoZXZlbnQsIDApOwotICAgIGVsc2UK
LSAgICAgICAgZXZlbnRUYXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwotfQotCi19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50UXVldWUuaAppbmRleCBjOTk3OTcyMDgxZWU1ZjJhYWE1NWVjMGFjMDYxNGVkNDlj
OWUwMTU2Li4yZDI2YmUyYzdhYjUwNWMwNzEyNDEwMzhiZDg1YzIwM2FlY2EzOGNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFF1ZXVlLmgKQEAgLTI3LDQ4ICsyNywyMSBAQAogI2lmbmRlZiBFdmVudFF1ZXVl
X2gKICNkZWZpbmUgRXZlbnRRdWV1ZV9oCiAKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+Ci0jaW5j
bHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRXZlbnQ7Ci1jbGFzcyBFdmVudFF1ZXVlVGltZXI7Ci1jbGFz
cyBOb2RlOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotY2xhc3MgRXZlbnRRdWV1
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEV2ZW50UXVldWU+IHsKK2NsYXNzIEV2ZW50UXVldWUgewog
cHVibGljOgotICAgIGVudW0gU2Nyb2xsRXZlbnRUYXJnZXRUeXBlIHsKLSAgICAgICAgU2Nyb2xs
RXZlbnREb2N1bWVudFRhcmdldCwKLSAgICAgICAgU2Nyb2xsRXZlbnRFbGVtZW50VGFyZ2V0Ci0g
ICAgfTsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50UXVldWU+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7Ci0gICAgfkV2ZW50UXVldWUoKTsKLQotICAgIHZvaWQgZW5xdWV1
ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKLSAgICB2b2lkIGVucXVldWVPckRpc3BhdGNoU2Ny
b2xsRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiwgU2Nyb2xsRXZlbnRUYXJnZXRUeXBlKTsKLSAgICBi
b29sIGNhbmNlbEV2ZW50KEV2ZW50Kik7Ci0KLSAgICAvLyBUaGUgYWNjdW11bGF0ZWQgYW5kIGFs
bCB0aGUgZnV0dXJlIGV2ZW50cyB3aWxsIGJlIGRpc2NhcmRlZCwgbm8gZXZlbnRzIHdpbGwgYmUg
ZGlzcGF0Y2hlZCBhbnltb3JlLiAKLSAgICB2b2lkIGNsb3NlKCk7Ci0KLXByaXZhdGU6Ci0gICAg
ZXhwbGljaXQgRXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0KLSAgICB2b2lk
IHBlbmRpbmdFdmVudFRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIGRpc3BhdGNoRXZlbnQoUGFzc1Jl
ZlB0cjxFdmVudD4pOwotCi0gICAgT3duUHRyPEV2ZW50UXVldWVUaW1lcj4gbV9wZW5kaW5nRXZl
bnRUaW1lcjsKLSAgICBMaXN0SGFzaFNldDxSZWZQdHI8RXZlbnQ+ID4gbV9xdWV1ZWRFdmVudHM7
Ci0gICAgSGFzaFNldDxOb2RlKj4gbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHM7Ci0gICAg
Ym9vbCBtX2lzQ2xvc2VkOwotCi0gICAgZnJpZW5kIGNsYXNzIEV2ZW50UXVldWVUaW1lcjsgICAg
CisgICAgdmlydHVhbCB+RXZlbnRRdWV1ZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBlbnF1ZXVl
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuY2VsRXZl
bnQoRXZlbnQqKSA9IDA7CisgICAgLy8gVGhlIGFjY3VtdWxhdGVkIGFuZCBhbGwgdGhlIGZ1dHVy
ZSBldmVudHMgd2lsbCBiZSBkaXNjYXJkZWQsIG5vIGV2ZW50cyB3aWxsIGJlIGRpc3BhdGNoZWQg
YW55bW9yZS4KKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSA9IDA7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCBkNDQyZTYyOGJmYzdh
NTZjNjE3OGM1ZjNkZTc3MWYzY2Y3MjcwYTI4Li5jODFjNThiMDcxY2NiY2M3NzVhOWJhODE1Nzcz
MDAyZGE5MWM0YzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKQEAgLTUyLDYgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIERP
TVRpbWVyOwogICAgIGNsYXNzIERPTVVSTDsKICAgICBjbGFzcyBFdmVudExpc3RlbmVyOworICAg
IGNsYXNzIEV2ZW50UXVldWU7CiAgICAgY2xhc3MgRXZlbnRUYXJnZXQ7CiAgICAgY2xhc3MgTWVz
c2FnZVBvcnQ7CiAgICAgY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwpAQCAtMTcyLDYgKzE3Myw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhZGp1c3RNaW5pbXVtVGltZXJJbnRl
cnZhbChkb3VibGUgb2xkTWluaW11bVRpbWVySW50ZXJ2YWwpOwogICAgICAgICB2aXJ0dWFsIGRv
dWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCgpIGNvbnN0OwogCisgICAgICAgIHZpcnR1YWwgRXZl
bnRRdWV1ZSogZXZlbnRRdWV1ZSgpIGNvbnN0ID0gMDsKKwogICAgIHByb3RlY3RlZDoKICAgICAg
ICAgLy8gRXhwbGljaXRseSBvdmVycmlkZSB0aGUgc2VjdXJpdHkgb3JpZ2luIGZvciB0aGlzIHNj
cmlwdCBjb250ZXh0LgogICAgICAgICAvLyBOb3RlOiBJdCBpcyBkYW5nZXJvdXMgdG8gY2hhbmdl
IHRoZSBzZWN1cml0eSBvcmlnaW4gb2YgYSBzY3JpcHQgY29udGV4dApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCmluZGV4IGNlNjc0NGE2ZjYzZWZlMjU4M2VlYWVlZWYwOWRhMTZjM2Mz
MDA1NWQuLmE1YmNmNzdmZTNjYmYwOTY0MjNmOGVmOWU3ODY5OGQ4M2Q1ZGRiYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTM0LDExICszNCwxMSBAQAogI2luY2x1ZGUg
IkN1cnNvci5oIgogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgorI2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkRyYWdDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiRHJhZ1N0YXRlLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJG
bG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRm9jdXNDb250
cm9sbGVyLmgiCkBAIC0zMTA3LDcgKzMxMDcsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c2VuZFNj
cm9sbEV2ZW50KCkKIHsKICAgICBzZXRGcmFtZVdhc1Njcm9sbGVkQnlVc2VyKCk7CiAgICAgaWYg
KG1fZnJhbWUtPnZpZXcoKSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICBtX2ZyYW1l
LT5kb2N1bWVudCgpLT5ldmVudFF1ZXVlKCktPmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQo
bV9mcmFtZS0+ZG9jdW1lbnQoKSwgRXZlbnRRdWV1ZTo6U2Nyb2xsRXZlbnREb2N1bWVudFRhcmdl
dCk7CisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmV2ZW50UXVldWUoKS0+ZW5xdWV1ZU9y
RGlzcGF0Y2hTY3JvbGxFdmVudChtX2ZyYW1lLT5kb2N1bWVudCgpLCBEb2N1bWVudEV2ZW50UXVl
dWU6OlNjcm9sbEV2ZW50RG9jdW1lbnRUYXJnZXQpOwogfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6
c2V0RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcAppbmRleCBhMTMzZmMxODlhYjMwYWI3M2I5YTdiMTU4MjIxM2I3YmY2Yzk2NDQy
Li5kZDY4YWI5NDEzNmZhOTY5OWQ3ZGUwNjk3ZGU5MDU0ZDMzZWVmZWFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTUwLDggKzUwLDggQEAKICNpbmNsdWRl
ICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJFdmVu
dEhhbmRsZXIuaCIKLSNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2lu
dDNELmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVy
LmgiCkBAIC0xNDQyLDcgKzE0NDIsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxUbyhMYXlv
dXRVbml0IHgsIExheW91dFVuaXQgeSkKIAogICAgIC8vIFNjaGVkdWxlIHRoZSBzY3JvbGwgRE9N
IGV2ZW50LgogICAgIGlmIChyZW5kZXJlcigpLT5ub2RlKCkpCi0gICAgICAgIHJlbmRlcmVyKCkt
Pm5vZGUoKS0+ZG9jdW1lbnQoKS0+ZXZlbnRRdWV1ZSgpLT5lbnF1ZXVlT3JEaXNwYXRjaFNjcm9s
bEV2ZW50KHJlbmRlcmVyKCktPm5vZGUoKSwgRXZlbnRRdWV1ZTo6U2Nyb2xsRXZlbnRFbGVtZW50
VGFyZ2V0KTsKKyAgICAgICAgcmVuZGVyZXIoKS0+bm9kZSgpLT5kb2N1bWVudCgpLT5ldmVudFF1
ZXVlKCktPmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQocmVuZGVyZXIoKS0+bm9kZSgpLCBE
b2N1bWVudEV2ZW50UXVldWU6OlNjcm9sbEV2ZW50RWxlbWVudFRhcmdldCk7CiB9CiAKIHZvaWQg
UmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwg
Y29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxp
Z25ZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IGRk
Zjc5YzBmYjU4NTY1MDBlNDI1ZTcyZmRjYTUxY2I0YTlkYWMwNDEuLjIwYTAwYjdlNGU1YTUzYzc5
YTRmMjJlNjA0MGNhMWJkNWQxMjUyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEJveC5jcHAKQEAgLTM0LDggKzM0LDggQEAKICNpbmNsdWRlICJDU1NGb250U2VsZWN0
b3IuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJFdmVudEhhbmRs
ZXIuaCIKLSNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTYyMiw3
ICs2MjIsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnNjcm9sbFRvKGludCBuZXdPZmZzZXQpCiAK
ICAgICBtX2luZGV4T2Zmc2V0ID0gbmV3T2Zmc2V0OwogICAgIHJlcGFpbnQoKTsKLSAgICBub2Rl
KCktPmRvY3VtZW50KCktPmV2ZW50UXVldWUoKS0+ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVu
dChub2RlKCksIEV2ZW50UXVldWU6OlNjcm9sbEV2ZW50RWxlbWVudFRhcmdldCk7CisgICAgbm9k
ZSgpLT5kb2N1bWVudCgpLT5ldmVudFF1ZXVlKCktPmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZl
bnQobm9kZSgpLCBEb2N1bWVudEV2ZW50UXVldWU6OlNjcm9sbEV2ZW50RWxlbWVudFRhcmdldCk7
CiB9CiAKIExheW91dFVuaXQgUmVuZGVyTGlzdEJveDo6aXRlbUhlaWdodCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCmluZGV4IDdjOTlkOTc5YWM4ZjM5NmI3Zjdl
OGIxZjkzYjJjNjg4ZWNkNjRjMjYuLjk2YmYzYjM5MWVkZmVlZDVlYmU3MzM2ZTNhMTNjNDNmNzQ4
MmY5NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCkBAIC0yNyw3ICsy
Nyw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
Ci0jaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1ZS5o
IgogI2luY2x1ZGUgIklEQkFueS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bC5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlJlcXVlc3QuY3BwCmluZGV4IDY0MzBkMjUxMTJjMjUzYWMxMTI4NmFjMDk1NDQ3NmJhMDcyNTFi
MjYuLmEyYTQzMDBkYjM5YjE0MmYxNWI3ODEwN2MxZTRmOThmODIwNTRmODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcApAQCAtMzIsMTAgKzMyLDEwIEBACiAjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRv
Y3VtZW50RXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCiAjaW5jbHVk
ZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJF
dmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yV2l0aFZhbHVlLmgiCiAjaW5jbHVkZSAi
SURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJREJFdmVudERpc3BhdGNoZXIuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggMWE0ZTdmMzE1YTRlZjc4Y2M5
Yzg2ZDIwZDg2OTMyOGY2OGY4NDY4NS4uY2NjODFhZTQ1YWNjNjIyOGIyODI5NWVhZmZlYWEyMjNj
MTNkYWJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKQEAg
LTI5LDggKzI5LDggQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAi
RXZlbnRFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiSURC
RGF0YWJhc2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUg
IklEQkV2ZW50RGlzcGF0Y2hlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4
dC5jcHAKaW5kZXggMDNkNDg4YzMzYmZhZTgwMGY5MDQ4ODA4ZmFhYWIyM2UzNmEzZWEwNi4uYzg3
ZjcxMmIxMTdiMmExMWQ4MjZmMDY5Njk0NTJhZGJhNTBkZjhmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCkBAIC01MDYsNiArNTA2LDExIEBAIHZvaWQgV29ya2Vy
Q29udGV4dDo6bm90aWZ5T2JzZXJ2ZXJzT2ZTdG9wKCkKICAgICB9CiB9CiAKK1dvcmtlckV2ZW50
UXVldWUqIFdvcmtlckNvbnRleHQ6OmV2ZW50UXVldWUoKSBjb25zdAoreworICAgIHJldHVybiBt
X2V2ZW50UXVldWUuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaApp
bmRleCBhYzQ1NzdiMjM2MWFjZDdkOTE2NTQwNzEzYmUzYTI1OTZlYWU4MmVmLi41ZmRkNDcyZWEx
YTA4NmFjZThiM2ZmYjg5Y2Q1YjFmN2NhMGFmZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckNvbnRleHQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIK
ICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKKyNpbmNsdWRlICJXb3JrZXJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KQEAgLTExMCw2ICsxMTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgLy8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgICAgICB2aXJ0dWFsIHZvaWQg
YWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4pOworICAgICAgICB2aXJ0dWFsIFdv
cmtlckV2ZW50UXVldWUqIGV2ZW50UXVldWUoKSBjb25zdDsKIAogI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKQogICAgICAgICBOb3RpZmljYXRpb25DZW50ZXIqIHdlYmtpdE5vdGlmaWNhdGlvbnMo
KSBjb25zdDsKQEAgLTIxMiw2ICsyMTQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKIAogICAgICAgICBIYXNoU2V0PE9i
c2VydmVyKj4gbV93b3JrZXJPYnNlcnZlcnM7CisKKyAgICAgICAgT3duUHRyPFdvcmtlckV2ZW50
UXVldWU+IG1fZXZlbnRRdWV1ZTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
YTNlYzAxMWJlODk3YmUyNThmNmQ4MzUxYmNlYmMwOWFhMjcyYmYwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcApAQCAtMCwwICsx
LDEyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldv
cmtlckV2ZW50UXVldWUuaCIKKworI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1Bhc3NPd25QdHI8V29ya2VyRXZlbnRRdWV1ZT4gV29ya2VyRXZlbnRRdWV1ZTo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBXb3JrZXJFdmVudFF1ZXVlKGNvbnRleHQpKTsKK30KKworV29ya2VyRXZlbnRRdWV1ZTo6
V29ya2VyRXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDog
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCisgICAgLCBtX2lzQ2xvc2VkKGZhbHNl
KQoreworfQorCitXb3JrZXJFdmVudFF1ZXVlOjp+V29ya2VyRXZlbnRRdWV1ZSgpCit7CisgICAg
Y2xvc2UoKTsKK30KKworY2xhc3MgV29ya2VyRXZlbnRRdWV1ZTo6RXZlbnREaXNwYXRjaGVyVGFz
ayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc093blB0cjxFdmVudERpc3BhdGNoZXJUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxF
dmVudD4gZXZlbnQsIFdvcmtlckV2ZW50UXVldWUqIGV2ZW50UXVldWUpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IEV2ZW50RGlzcGF0Y2hlclRhc2soZXZlbnQsIGV2ZW50UXVl
dWUpKTsKKyAgICB9CisKKyAgICB2b2lkIGRpc3BhdGNoRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQorICAgIHsKKyAgICAgICAgZXZlbnQtPnRh
cmdldCgpLT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
cGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICB7CisgICAg
ICAgIGlmIChtX2lzQ2FuY2VsbGVkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2V2
ZW50UXVldWUtPnJlbW92ZUV2ZW50KG1fZXZlbnQuZ2V0KCkpOworICAgICAgICBkaXNwYXRjaEV2
ZW50KGNvbnRleHQsIG1fZXZlbnQpOworICAgIH0KKworICAgIHZvaWQgY2FuY2VsKCkKKyAgICB7
CisgICAgICAgIG1faXNDYW5jZWxsZWQgPSB0cnVlOworICAgICAgICBtX2V2ZW50LmNsZWFyKCk7
CisgICAgfQorCitwcml2YXRlOgorICAgIEV2ZW50RGlzcGF0Y2hlclRhc2soUGFzc1JlZlB0cjxF
dmVudD4gZXZlbnQsIFdvcmtlckV2ZW50UXVldWUqIGV2ZW50UXVldWUpCisgICAgICAgIDogbV9l
dmVudChldmVudCkKKyAgICAgICAgLCBtX2V2ZW50UXVldWUoZXZlbnRRdWV1ZSkKKyAgICAgICAg
LCBtX2lzQ2FuY2VsbGVkKGZhbHNlKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8RXZlbnQ+
IG1fZXZlbnQ7CisgICAgV29ya2VyRXZlbnRRdWV1ZSogbV9ldmVudFF1ZXVlOworICAgIGJvb2wg
bV9pc0NhbmNlbGxlZDsKK307CisKK3ZvaWQgV29ya2VyRXZlbnRRdWV1ZTo6cmVtb3ZlRXZlbnQo
RXZlbnQqIGV2ZW50KQoreworICAgIG1fZXZlbnRUYXNrTWFwLnJlbW92ZShldmVudCk7Cit9CisK
K3ZvaWQgV29ya2VyRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHBy
cEV2ZW50KQoreworICAgIGlmIChtX2lzQ2xvc2VkKQorICAgICAgICByZXR1cm47CisgICAgUmVm
UHRyPEV2ZW50PiBldmVudCA9IHBycEV2ZW50OworICAgIE93blB0cjxFdmVudERpc3BhdGNoZXJU
YXNrPiB0YXNrID0gRXZlbnREaXNwYXRjaGVyVGFzazo6Y3JlYXRlKGV2ZW50LCB0aGlzKTsKKyAg
ICBtX2V2ZW50VGFza01hcC5hZGQoZXZlbnQucmVsZWFzZSgpLCB0YXNrLmdldCgpKTsKKyAgICBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKHRhc2sucmVsZWFzZSgpKTsKK30KKwor
Ym9vbCBXb3JrZXJFdmVudFF1ZXVlOjpjYW5jZWxFdmVudChFdmVudCogZXZlbnQpCit7CisgICAg
RXZlbnREaXNwYXRjaGVyVGFzayogdGFzayA9IG1fZXZlbnRUYXNrTWFwLmdldChldmVudCk7Cisg
ICAgaWYgKCF0YXNrKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdGFzay0+Y2FuY2VsKCk7
CisgICAgcmVtb3ZlRXZlbnQoZXZlbnQpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFdv
cmtlckV2ZW50UXVldWU6OmNsb3NlKCkKK3sKKyAgICBtX2lzQ2xvc2VkID0gdHJ1ZTsKKyAgICBm
b3IgKEV2ZW50VGFza01hcDo6aXRlcmF0b3IgaXQgPSBtX2V2ZW50VGFza01hcC5iZWdpbigpOyBp
dCAhPSBtX2V2ZW50VGFza01hcC5lbmQoKTsgKytpdCkgeworICAgICAgICBFdmVudERpc3BhdGNo
ZXJUYXNrKiB0YXNrID0gaXQtPnNlY29uZDsKKyAgICAgICAgdGFzay0+Y2FuY2VsKCk7CisgICAg
fQorICAgIG1fZXZlbnRUYXNrTWFwLmNsZWFyKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2QxM2FhMzQ0ODU4MWNmYTA2Nzcz
OGI1MGM0N2EzYjQyNTU1NWJkZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisK
KyNpZm5kZWYgV29ya2VyRXZlbnRRdWV1ZV9oCisjZGVmaW5lIFdvcmtlckV2ZW50UXVldWVfaAor
CisjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRXZl
bnQ7CitjbGFzcyBOb2RlOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworY2xhc3Mg
V29ya2VyRXZlbnRRdWV1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlckV2ZW50UXVldWU+LCBw
dWJsaWMgRXZlbnRRdWV1ZSB7CitwdWJsaWM6CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxXb3Jr
ZXJFdmVudFF1ZXVlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHZpcnR1
YWwgfldvcmtlckV2ZW50UXVldWUoKTsKKworICAgIC8vIEV2ZW50UXVldWUKKyAgICB2b2lkIGVu
cXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CisgICAgYm9vbCBjYW5jZWxFdmVudChFdmVu
dCopOworICAgIHZvaWQgY2xvc2UoKTsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVFdmVudChFdmVudCopOworICAgIGV4cGxpY2l0IFdvcmtlckV2ZW50UXVldWUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopOworCitwcml2YXRlOgorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBib29sIG1faXNDbG9zZWQ7CisKKyAg
ICBjbGFzcyBFdmVudERpc3BhdGNoZXJUYXNrOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
RXZlbnQ+LCBFdmVudERpc3BhdGNoZXJUYXNrKj4gRXZlbnRUYXNrTWFwOworICAgIEV2ZW50VGFz
a01hcCBtX2V2ZW50VGFza01hcDsKK307CisKK30KKworI2VuZGlmIC8vIFdvcmtlckV2ZW50UXVl
dWVfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112594</attachid>
            <date>2011-10-26 14:36:21 -0700</date>
            <delta_ts>2011-10-26 15:46:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57789-20111026143620.patch</filename>
            <type>text/plain</type>
            <size>51566</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg1MTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiN2Y1YjQyYTc5ODVhMGY2
NGM1MWVlYzY2MTJmMjI5YTU3MWFkZTY2Li5mYjllNTE3MWMzOTc5N2YzMGEyMjNlZmY1ZjM3N2U1
MDA5OTA3ZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTEtMTAtMjQgIERhdmlk
IEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1vdmUgZXZlbnRxdWV1
ZSBmcm9tIERvY3VtZW50IHRvIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgc28gdGhhdCBpdCBjYW4g
YmUgYWNjZXNzZWQgZnJvbSB3b3JrZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01Nzc4OQorCisgICAgICAgIEV4dHJhY3QgaW50ZXJmYWNlIGZyb20g
RXZlbnRRdWV1ZSBhbmQgY3JlYXRlIHR3byBuZXcgc3ViY2xhc3NlczoKKyAgICAgICAgRG9jdW1l
bnRFdmVudFF1ZXVlIGFuZCBXb3JrZXJFdmVudFF1ZXVlLiAgRG9jdW1lbnRFdmVudFF1ZXVlIGlz
IHRoZQorICAgICAgICBvbGQgRXZlbnRRdWV1ZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHVzZXMgRE9N
VGltZXIoMCkgdG8gcG9zdCBhc3luYworICAgICAgICBldmVudHMuICBXb3JrZXJFdmVudFF1ZXVl
IHBvc3RzIGV2ZW50cyB0byBpdHMgdGhyZWFkJ3MgbWVzc2FnZSBsb29wLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtIEluZGV4
ZWREQiB3aWxsIHVzZSB0aGlzIGJ1dCBpc24ndCByZWFkeSB5ZXQuICBJIGRvbid0CisgICAgICAg
IGtub3cgb2YgYW55IG90aGVyIEFQSSBhdmFpbGFibGUgaW4gd29ya2VycyB0aGF0IEkgY2FuIHRl
c3QgdGhpcyB3aXRoLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9ET01BbGxJbk9uZS5j
cHA6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6ZXZlbnRRdWV1ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50RXZlbnRR
dWV1ZS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5jcHAu
CisgICAgICAgIChXZWJDb3JlOjpzaG91bGREaXNwYXRjaFNjcm9sbEV2ZW50U3luY2hyb25vdXNs
eSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWVUaW1lcjo6RG9jdW1lbnRF
dmVudFF1ZXVlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlVGlt
ZXI6OmZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6RG9jdW1lbnRFdmVudFF1
ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6fkRvY3VtZW50RXZl
bnRRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVPckRp
c3BhdGNoU2Nyb2xsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVl
OjpjYW5jZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmNs
b3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6cGVuZGluZ0V2ZW50
VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmRpc3Bh
dGNoRXZlbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuaC4KKyAgICAgICAgKiBkb20vRXZlbnRR
dWV1ZS5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
ICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOiBDaGFuZ2UgRXZlbnRRdWV1ZSB0byBEb2N1bWVudEV2
ZW50UXVldWUuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbmRTY3JvbGxFdmVu
dCk6IENoYW5nZSBFdmVudFF1ZXVlIHRvIERvY3VtZW50RXZlbnRRdWV1ZS4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnNjcm9sbFRvKTogQ2hhbmdlIEV2ZW50UXVldWUgdG8gRG9jdW1lbnRFdmVudFF1ZXVlLgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxpc3RCb3g6OnNjcm9sbFRvKTogQ2hhbmdlIEV2ZW50UXVldWUgdG8gRG9jdW1lbnRFdmVu
dFF1ZXVlLgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAqIHN0
b3JhZ2UvSURCUmVxdWVzdC5jcHA6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5j
cHA6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckNvbnRleHQ6OmV2ZW50UXVldWUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
Q29udGV4dC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OldvcmtlckV2ZW50UXVldWUpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6fldvcmtlckV2ZW50UXVldWUpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6RXZlbnREaXNwYXRjaGVyVGFzazo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlclRhc2s6
OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6RXZl
bnREaXNwYXRjaGVyVGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
RXZlbnRRdWV1ZTo6RXZlbnREaXNwYXRjaGVyVGFzazo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlclRhc2s6OkV2ZW50RGlzcGF0Y2hl
clRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6cmVtb3ZlRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmNhbmNlbEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmNsb3NlKToKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlckV2ZW50UXVldWUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVl
dWUuaC4KKwogMjAxMS0xMC0yNiAgQ2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgog
CiAgICAgICAgIEFkZCBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50IGFuZCBzZXRGb3JtYXQoKSBt
ZXRob2Qgc28gd2UgY2FuIGtub3cgYXVkaW8gc3RyZWFtIGZvcm1hdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCBhYzgxMDc4ZDM3YjBhMjE2MjJmZDBkOGRiNmU3MDgxYmVjYTY4ZmRhLi42OWFlZWQ0
NGE5OGVjYjAyMDJkOGUwZjlkZGE2ZGVlM2I2ODUyN2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTMzLDYgKzUzMyw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vRG9jdW1lbnQu
Y3BwCiAgICAgZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKICAgICBkb20vRG9jdW1l
bnRNYXJrZXIuY3BwCisgICAgZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKICAgICBkb20vRG9j
dW1lbnRGcmFnbWVudC5jcHAKICAgICBkb20vRG9jdW1lbnRQYXJzZXIuY3BwCiAgICAgZG9tL0Rv
Y3VtZW50T3JkZXJlZE1hcC5jcHAKQEAgLTU1Miw3ICs1NTMsNiBAQCBTRVQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCiAgICAgZG9tL0V2ZW50TmFtZXMuY3Bw
CiAgICAgZG9tL0V2ZW50VGFyZ2V0LmNwcAotICAgIGRvbS9FdmVudFF1ZXVlLmNwcAogICAgIGRv
bS9FeGNlcHRpb25CYXNlLmNwcAogICAgIGRvbS9FeGNlcHRpb25Db2RlLmNwcAogICAgIGRvbS9F
eGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuY3BwCkBAIC0yMDEzLDYgKzIwMTMsNyBAQCBJRiAoRU5B
QkxFX1dPUktFUlMpCiAgICAgICAgIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcAog
ICAgICAgICB3b3JrZXJzL1dvcmtlci5jcHAKICAgICAgICAgd29ya2Vycy9Xb3JrZXJDb250ZXh0
LmNwcAorICAgICAgICB3b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwCiAgICAgICAgIHdvcmtl
cnMvV29ya2VyTG9jYXRpb24uY3BwCiAgICAgICAgIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwCiAgICAgICAgIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IDM1MTE2MmQ2ZGZjMmVkZTc1NWYyMjExZTc2NjdiZjBmYTk5YjY1
YWIuLmZkMWJiZjViMGQ4ODVlZmRmNDhkZTc3YjM2ZDUyODhhNjE2OTcxY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTE3Miw2ICsxMTcyLDggQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRNYXJrZXIuY3BwIFwKQEAgLTEyMjAsNyArMTIyMiw2IEBAIHdlYmNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBcCiAJU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0Lmgg
XAotCVNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50UXVldWUuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkJhc2UuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQmFzZS5oIFwKQEAgLTM4OTUsNiArMzg5
Niw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmgg
XAogCVNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dFByb3h5LmggXAorCVNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXgg
MzdlYWViZjkwNzg4N2UyMTI4NzBlNTVjYTBjZjAyYzk1ODk0ODljMC4uOTBmNzVkNjAzZDk1YmE2
YzA5MTQ1MzQ1Zjc5NThlNWVmMWQxNzI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTAzMyw2ICs1
MDMzLDggQEAKICAgICAgICAgICAgICd3b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwJywKICAgICAg
ICAgICAgICd3b3JrZXJzL1dvcmtlckNvbnRleHQuaCcsCiAgICAgICAgICAgICAnd29ya2Vycy9X
b3JrZXJDb250ZXh0UHJveHkuaCcsCisgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJFdmVudFF1
ZXVlLmNwcCcsCisgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgnLAogICAg
ICAgICAgICAgJ3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaCcsCiAgICAgICAgICAgICAnd29y
a2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAnLAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyTG9j
YXRpb24uaCcsCkBAIC01MTg5LDYgKzUxOTEsOCBAQAogICAgICAgICAgICAgJ2RvbS9EZXZpY2VP
cmllbnRhdGlvbkV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL0RldmljZU9yaWVudGF0aW9u
RXZlbnQuaCcsCiAgICAgICAgICAgICAnZG9tL0RvY3VtZW50LmNwcCcsCisgICAgICAgICAgICAn
ZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAnLAorICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudEV2
ZW50UXVldWUuaCcsCiAgICAgICAgICAgICAnZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwJywKICAg
ICAgICAgICAgICdkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCcsCiAgICAgICAgICAg
ICAnZG9tL0RvY3VtZW50TWFya2VyLmNwcCcsCkBAIC01MjE2LDcgKzUyMjAsNiBAQAogICAgICAg
ICAgICAgJ2RvbS9FdmVudEV4Y2VwdGlvbi5oJywKICAgICAgICAgICAgICdkb20vRXZlbnRMaXN0
ZW5lck1hcC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9FdmVudE5hbWVzLmNwcCcsCi0gICAgICAg
ICAgICAnZG9tL0V2ZW50UXVldWUuY3BwJywKICAgICAgICAgICAgICdkb20vRXZlbnRRdWV1ZS5o
JywKICAgICAgICAgICAgICdkb20vRXZlbnRUYXJnZXQuY3BwJywKICAgICAgICAgICAgICdkb20v
RXhjZXB0aW9uQmFzZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA4MjM0ZGYzYTBjN2MzMmI4MWIw
YTgwOWJjMDNmMzliZDBhNWZlZTVlLi5jMmM0NTc0N2YxYmEzZGIyNDYxODg0OWNhNzUzYzE2YTJl
NWE5MWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtNDg0LDYgKzQ4NCw3IEBAIFNPVVJDRVMgKz0gXAog
ICAgIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwIFwKICAgICBkb20vRGV2aWNl
T3JpZW50YXRpb25FdmVudC5jcHAgXAogICAgIGRvbS9Eb2N1bWVudC5jcHAgXAorICAgIGRvbS9E
b2N1bWVudEV2ZW50UXVldWUuY3BwIFwKICAgICBkb20vRG9jdW1lbnRGcmFnbWVudC5jcHAgXAog
ICAgIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIFwKICAgICBkb20vRG9jdW1lbnRN
YXJrZXIuY3BwIFwKQEAgLTUwNiw3ICs1MDcsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vRXZl
bnRMaXN0ZW5lck1hcC5jcHAgXAogICAgIGRvbS9FdmVudE5hbWVzLmNwcCBcCiAgICAgZG9tL0V2
ZW50VGFyZ2V0LmNwcCBcCi0gICAgZG9tL0V2ZW50UXVldWUuY3BwIFwKICAgICBkb20vRXhjZXB0
aW9uQmFzZS5jcHAgXAogICAgIGRvbS9FeGNlcHRpb25Db2RlLmNwcCBcCiAgICAgZG9tL0V4Y2Vw
dGlvbkNvZGVQbGFjZWhvbGRlci5jcHAgXApAQCAtMTU1Niw2ICsxNTU2LDcgQEAgSEVBREVSUyAr
PSBcCiAgICAgZG9tL0V2ZW50RGlzcGF0Y2hNZWRpYXRvci5oIFwKICAgICBkb20vRXZlbnRMaXN0
ZW5lck1hcC5oIFwKICAgICBkb20vRXZlbnROYW1lcy5oIFwKKyAgICBkb20vRXZlbnRRdWV1ZS5o
IFwKICAgICBkb20vRXZlbnRUYXJnZXQuaCBcCiAgICAgZG9tL0V4Y2VwdGlvbkJhc2UuaCBcCiAg
ICAgZG9tL0V4Y2VwdGlvbkNvZGUuaCBcCkBAIC0yNjExLDYgKzI2MTIsNyBAQCBIRUFERVJTICs9
IFwKICAgICB3b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5oIFwKICAgICB3b3JrZXJzL1No
YXJlZFdvcmtlci5oIFwKICAgICB3b3JrZXJzL1dvcmtlckNvbnRleHQuaCBcCisgICAgd29ya2Vy
cy9Xb3JrZXJFdmVudFF1ZXVlLmggXAogICAgIHdvcmtlcnMvV29ya2VyLmggXAogICAgIHdvcmtl
cnMvV29ya2VyTG9jYXRpb24uaCBcCiAgICAgd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5o
IFwKQEAgLTMwMTUsNiArMzAxNyw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XT1JLRVJT
PTEpIHsKICAgICAgICAgd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwIFwKICAgICAg
ICAgd29ya2Vycy9Xb3JrZXIuY3BwIFwKICAgICAgICAgd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNw
cCBcCisgICAgICAgIHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAgXAogICAgICAgICB3b3Jr
ZXJzL1dvcmtlckxvY2F0aW9uLmNwcCBcCiAgICAgICAgIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5n
UHJveHkuY3BwIFwKICAgICAgICAgd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjIx
YTg5OTA2OWM5Nzc1M2NiMGFiZTU5MDkyNDE5ZjYxZTM3OGYxNi4uOWQ1MmExOGZhYWYxMDg2M2Zi
YTc5ODQ2MmZkMzFkNTI4N2I2ZDdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjkxMyw4ICsyOTEzLDcgQEAKIAkJOENBREYy
QUIxMzVDN0IzNjAwOUVGNDNGIC8qIExldmVsREJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOENBREYyQTUxMzVDN0IzNjAwOUVGNDNGIC8q
IExldmVsREJEYXRhYmFzZS5oICovOyB9OwogCQk4Q0FERjJBRDEzNUM3QjM2MDA5RUY0M0YgLyog
TGV2ZWxEQkl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4Q0FERjJBNzEzNUM3QjM2MDA5RUY0M0YgLyogTGV2ZWxEQkl0ZXJhdG9yLmggKi87
IH07CiAJCThDQURGMkFFMTM1QzdCMzYwMDlFRjQzRiAvKiBMZXZlbERCU2xpY2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhDQURGMkE4MTM1QzdCMzYw
MDlFRjQzRiAvKiBMZXZlbERCU2xpY2UuaCAqLzsgfTsKLQkJOEY2NzU2MUIxMjg4QjE3QjAwNDdB
Q0EzIC8qIEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDhGNjc1NjE5MTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggKi87IH07
Ci0JCThGNjc1NjFDMTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhGNjc1NjFBMTI4OEIxN0IwMDQ3
QUNBMyAvKiBFdmVudFF1ZXVlLmNwcCAqLzsgfTsKKwkJOEY2NzU2MUIxMjg4QjE3QjAwNDdBQ0Ez
IC8qIEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDhGNjc1NjE5MTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOEZBQzc3NEQxMTk4NzJD
QjAwMTVBRTk0IC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RjkzNEQ4NDExODlGMUVFMDA1MDhENUQgLyog
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcCAqLzsgfTsKIAkJOTAwMTc3NDAxMkUwMzQ3ODAwNjQ4
NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTAwMTc3M0QxMkUwMzQ3ODAwNjQ4NDYyIC8qIE9FU1N0
YW5kYXJkRGVyaXZhdGl2ZXMuY3BwICovOyB9OwogCQk5MDAxNzc0MTEyRTAzNDc4MDA2NDg0NjIg
LyogT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTAwMTc3M0UxMkUwMzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJk
RGVyaXZhdGl2ZXMuaCAqLzsgfTsKQEAgLTMzNDYsNiArMzM0NSw4IEBACiAJCUExRTExNTQ0MTMw
MTVDM0QwMDU0QUM4QyAvKiBEaXN0YW50TGlnaHRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFFMTE1NDMxMzAxNUMzRDAwNTRBQzhDIC8q
IERpc3RhbnRMaWdodFNvdXJjZS5jcHAgKi87IH07CiAJCUExRTExNTQ2MTMwMTVDNEUwMDU0QUM4
QyAvKiBQb2ludExpZ2h0U291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExRTExNTQ1MTMwMTVDNEUwMDU0QUM4QyAvKiBQb2ludExpZ2h0U291
cmNlLmNwcCAqLzsgfTsKIAkJQTFFMTE1NDgxMzAxNUM1RDAwNTRBQzhDIC8qIFNwb3RMaWdodFNv
dXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MUUxMTU0NzEzMDE1QzVEMDA1NEFDOEMgLyogU3BvdExpZ2h0U291cmNlLmNwcCAqLzsgfTsKKwkJ
QTNCQjU5RjMxNDU3QTQwRDAwQUM1NkZFIC8qIERvY3VtZW50RXZlbnRRdWV1ZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0JCNTlGMTE0NTdBNDBE
MDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCAqLzsgfTsKKwkJQTNCQjU5RjQxNDU3
QTQwRDAwQUM1NkZFIC8qIERvY3VtZW50RXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNCQjU5RjIxNDU3QTQwRDAwQUM1NkZFIC8qIERv
Y3VtZW50RXZlbnRRdWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUE0MDlDOTg0MTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nlc3NpYmlsaXR5UHJv
Z3Jlc3NJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTQwOUM5ODIxMTZEMERERDAwNzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9ncmVz
c0luZGljYXRvci5jcHAgKi87IH07CiAJCUE0MDlDOTg1MTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nl
c3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE0MDlDOTgzMTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nlc3NpYmls
aXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaCAqLzsgfTsKIAkJQTQyMjZFNUExMTYzRDY2NzAwOEI4Mzk3
IC8qIEpTSFRNTFByb2dyZXNzRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNDIyNkU1OTExNjNENjY3MDA4QjgzOTcgLyogSlNIVE1MUHJv
Z3Jlc3NFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTEwMDQ5LDcgKzEwMDUwLDYgQEAKIAkJOENBREYy
QTcxMzVDN0IzNjAwOUVGNDNGIC8qIExldmVsREJJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMZXZlbERCSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOENBREYyQTgxMzVDN0IzNjAwOUVGNDNGIC8qIExldmVsREJTbGljZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZXZlbERCU2xpY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOEY2NzU2MTkxMjg4QjE3QjAwNDdBQ0EzIC8qIEV2ZW50UXVldWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRRdWV1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk4RjY3NTYxQTEyODhCMTdCMDA0N0FDQTMgLyogRXZlbnRR
dWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudFF1ZXVl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEY5MzREODMxMTg5RjFFRTAwNTA4
RDVEIC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU01haW5UaHJlYWRFeGVjU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOEY5MzREODQxMTg5RjFFRTAwNTA4RDVEIC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01haW5UaHJlYWRFeGVj
U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MDAxNzczRDEyRTAzNDc4
MDA2NDg0NjIgLyogT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcDsgcGF0aCA9IGNh
bnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEwNDg3LDYgKzEwNDg3LDEwIEBACiAJCUExRTExNTQzMTMwMTVDM0QwMDU0QUM4QyAv
KiBEaXN0YW50TGlnaHRTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRGlzdGFudExpZ2h0U291cmNlLmNwcDsgcGF0aCA9IGZpbHRlcnMvRGlzdGFudExpZ2h0
U291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFFMTE1NDUxMzAxNUM0
RTAwNTRBQzhDIC8qIFBvaW50TGlnaHRTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gUG9pbnRMaWdodFNvdXJjZS5jcHA7IHBhdGggPSBmaWx0ZXJzL1BvaW50
TGlnaHRTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUUxMTU0NzEz
MDE1QzVEMDA1NEFDOEMgLyogU3BvdExpZ2h0U291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFNwb3RMaWdodFNvdXJjZS5jcHA7IHBhdGggPSBmaWx0ZXJzL1Nw
b3RMaWdodFNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQkI1OUQ4
MTQ1NzlGMDYwMEFDNTZGRSAvKiBXb3JrZXJFdmVudFF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdvcmtlckV2ZW50UXVldWUuY3BwOyBwYXRoID0gd29ya2Vy
cy9Xb3JrZXJFdmVudFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNC
QjU5RDkxNDU3OUYwNjAwQUM1NkZFIC8qIFdvcmtlckV2ZW50UXVldWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gV29ya2VyRXZlbnRRdWV1ZS5oOyBwYXRoID0gd29ya2Vycy9X
b3JrZXJFdmVudFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQkI1OUYx
MTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50UXVldWUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRFdmVudFF1ZXVlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNCQjU5RjIxNDU3QTQwRDAwQUM1NkZFIC8qIERvY3VtZW50
RXZlbnRRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudEV2
ZW50UXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTQwOUM5ODIxMTZEMERE
RDAwNzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNDA5Qzk4MzExNkQwREREMDA3
MTk3QkQgLyogQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNDIyNkU1OTExNjNENjY3MDA4QjgzOTcgLyogSlNI
VE1MUHJvZ3Jlc3NFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTSFRNTFByb2dyZXNzRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNDU1OCw2ICsxNDU2Miw4IEBACiAJCQkJMkU0MzQ2MzcwRjU0NkE4MjAwQjBGMUJBIC8q
IFdvcmtlckNvbnRleHQuaCAqLywKIAkJCQkyRTQzNDYzODBGNTQ2QTgyMDBCMEYxQkEgLyogV29y
a2VyQ29udGV4dC5pZGwgKi8sCiAJCQkJMkU0MzQ2MzkwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtl
ckNvbnRleHRQcm94eS5oICovLAorCQkJCUEzQkI1OUQ4MTQ1NzlGMDYwMEFDNTZGRSAvKiBXb3Jr
ZXJFdmVudFF1ZXVlLmNwcCAqLywKKwkJCQlBM0JCNTlEOTE0NTc5RjA2MDBBQzU2RkUgLyogV29y
a2VyRXZlbnRRdWV1ZS5oICovLAogCQkJCTE4RjgzMUI3MEZENDhDNzgwMEQ4QzU2QiAvKiBXb3Jr
ZXJMb2FkZXJQcm94eS5oICovLAogCQkJCTJFNDM0NjNBMEY1NDZBODIwMEIwRjFCQSAvKiBXb3Jr
ZXJMb2NhdGlvbi5jcHAgKi8sCiAJCQkJMkU0MzQ2M0IwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtl
ckxvY2F0aW9uLmggKi8sCkBAIC0yMDkwOCw2ICsyMDkxNCw4IEBACiAJCQkJQTgxODVGMzQwOTc2
NTc2NTAwNTgyNkQ5IC8qIERvY3VtZW50LmNwcCAqLywKIAkJCQlBODE4NUYzODA5NzY1NzY1MDA1
ODI2RDkgLyogRG9jdW1lbnQuaCAqLywKIAkJCQk2NTQ4RTI0ODA5RTFFMDREMDBBRjgwMjAgLyog
RG9jdW1lbnQuaWRsICovLAorCQkJCUEzQkI1OUYxMTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVu
dEV2ZW50UXVldWUuY3BwICovLAorCQkJCUEzQkI1OUYyMTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1
bWVudEV2ZW50UXVldWUuaCAqLywKIAkJCQlBODE4NUYzNzA5NzY1NzY1MDA1ODI2RDkgLyogRG9j
dW1lbnRGcmFnbWVudC5jcHAgKi8sCiAJCQkJQTgxODVGMzUwOTc2NTc2NTAwNTgyNkQ5IC8qIERv
Y3VtZW50RnJhZ21lbnQuaCAqLywKIAkJCQkxQTQ5NEVENTBBMTIzRjFBMDBGREFGQzEgLyogRG9j
dW1lbnRGcmFnbWVudC5pZGwgKi8sCkBAIC0yMDk2OSw3ICsyMDk3Nyw2IEBACiAJCQkJQUQ0NDk1
RjIxNDFGQzA4OTAwNTQxRURGIC8qIEV2ZW50TGlzdGVuZXJNYXAuaCAqLywKIAkJCQk5Mzk4ODVD
MTA4QjdFM0QxMDBFNzA3QzQgLyogRXZlbnROYW1lcy5jcHAgKi8sCiAJCQkJOTM5ODg1QzIwOEI3
RTNEMTAwRTcwN0M0IC8qIEV2ZW50TmFtZXMuaCAqLywKLQkJCQk4RjY3NTYxQTEyODhCMTdCMDA0
N0FDQTMgLyogRXZlbnRRdWV1ZS5jcHAgKi8sCiAJCQkJOEY2NzU2MTkxMjg4QjE3QjAwNDdBQ0Ez
IC8qIEV2ZW50UXVldWUuaCAqLywKIAkJCQlFMTJFREJFOTBCMzA4RTBCMDAyNzA0QjYgLyogRXZl
bnRUYXJnZXQuY3BwICovLAogCQkJCUUxMkVEQjdBMEIzMDhBNzgwMDI3MDRCNiAvKiBFdmVudFRh
cmdldC5oICovLApAQCAtMjE0NTgsNiArMjE0NjUsNyBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1
aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAo
CisJCQkJQTNCQjU5RjQxNDU3QTQwRDAwQUM1NkZFIC8qIERvY3VtZW50RXZlbnRRdWV1ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzEwNjAzNzAxNDMyN0QyRTAwQUJGNEJBIC8qIFdlYktpdENTU0Zp
bHRlclZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBODAwQzBBMTk1MTZFMDBBOEVGNUYg
LyogU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTgwMDcwQTE5NTE2RTAwQThF
RjVGIC8qIENTU1N0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLApAQCAtMjU0NzQsNyArMjU0ODIs
NiBAQAogCQkJCUFENDQ5NUYzMTQxRkMwODkwMDU0MUVERiAvKiBFdmVudExpc3RlbmVyTWFwLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFDQTE5RTA1MERDMjU1OTUwMDY1QTk5NCAvKiBFdmVudExv
b3BNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4ODVDMzA4QjdFM0QxMDBFNzA3QzQgLyog
RXZlbnROYW1lcy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk4RjY3NTYxQzEyODhCMTdCMDA0N0FD
QTMgLyogRXZlbnRRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMEZFRjM3MkIyN0M1M0VB
QzFDMUZCRUUgLyogRXZlbnRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyRURCRUEw
QjMwOEUwQjAwMjcwNEI2IC8qIEV2ZW50VGFyZ2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
NjBEOEYyMEQyQTExRTAwMEI5OTE4RiAvKiBFeGNlcHRpb25CYXNlLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMjczMzEsNiArMjczMzgsNyBAQAogCQkJCTk3NjY1MDRGMTQ0RkJGRkUwMEY2QkI1MSAv
KiBFdmVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTBFRTBERjUxNDRGODI1NTAw
RjgwQjBEIC8qIFdlYkdMRGVidWdSZW5kZXJlckluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTBFRTBERjcxNDRGODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdTaGFkZXJzLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUEzQkI1OUYzMTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50UXVl
dWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
QWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAppbmRleCBm
ODI1ZGEwNzFjNTc2ODlmY2M5MmY4YmM0ZWZkYTAzYmEyZmM3Y2EyLi5jZWFlZjA5ZTc3NTAxNWQ1
ODhmODgzMjlhMzllYTc5OGIwMTk4MWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RE9NQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAK
QEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIu
Y3BwIgogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmNwcCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuY3BwIgogI2luY2x1ZGUg
IkRvY3VtZW50RnJhZ21lbnQuY3BwIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyLmNwcCIKICNp
bmNsdWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIgpAQCAtNzMsNyArNzQsNiBAQAog
I2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hlci5jcHAiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lck1h
cC5jcHAiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5jcHAiCi0jaW5jbHVkZSAiRXZlbnRRdWV1ZS5j
cHAiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuY3BwIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkJhc2Uu
Y3BwIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
aW5kZXggZDkwZmYyMWRlZTBjNGI0ZDU4MWM2NTczNDlkZjU4Y2VkMDRhNmI3ZS4uOGZiM2YzZjlk
MzM1MzgyMjU0YTIzMTE2YTBkYTNmNTY5MDBlYzc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiRGV2aWNlTW90aW9uRXZlbnQuaCIKICNpbmNs
dWRlICJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEZXZpY2VPcmll
bnRhdGlvbkV2ZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRFdmVudFF1ZXVlLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCkBAIC02NCw3ICs2NSw2IEBACiAjaW5j
bHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZv
cm1Bc3NvY2lhdGVkRWxlbWVudC5oIgpAQCAtMzkwLDcgKzM5MCw3IEBAIERvY3VtZW50OjpEb2N1
bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlz
SFRNTCkKICAgICAsIG1faXNWaWV3U291cmNlKGZhbHNlKQogICAgICwgbV9zYXdFbGVtZW50c0lu
S25vd25OYW1lc3BhY2VzKGZhbHNlKQogICAgICwgbV91c2luZ0dlb2xvY2F0aW9uKGZhbHNlKQot
ICAgICwgbV9ldmVudFF1ZXVlKEV2ZW50UXVldWU6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fZXZl
bnRRdWV1ZShEb2N1bWVudEV2ZW50UXVldWU6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fd2Vha1Jl
ZmVyZW5jZShEb2N1bWVudFdlYWtSZWZlcmVuY2U6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1faWRB
dHRyaWJ1dGVOYW1lKGlkQXR0cikKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCmluZGV4IDJkNThjNWUwNDQ3Y2NlYjczZDU2NTFjOTZmYmU3Y2I4ZjE5Nzk5MjYu
LjQxNTNkNDczODVjYzc0NTVhZTcwYjIwOTBjZjgyMDcyZGVjNDY5MjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ29sbGVjdGlvblR5cGUuaCIKICNp
bmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkRPTVRpbWVTdGFtcC5oIgorI2luY2x1ZGUgIkRv
Y3VtZW50RXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCiAjaW5jbHVk
ZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTgxLDcgKzgyLDYgQEAgY2xh
c3MgRWxlbWVudDsKIGNsYXNzIEVudGl0eVJlZmVyZW5jZTsKIGNsYXNzIEV2ZW50OwogY2xhc3Mg
RXZlbnRMaXN0ZW5lcjsKLWNsYXNzIEV2ZW50UXVldWU7CiBjbGFzcyBGb250RGF0YTsKIGNsYXNz
IEZvcm1Bc3NvY2lhdGVkRWxlbWVudDsKIGNsYXNzIEZyYW1lOwpAQCAtMTAzMCw3ICsxMDMwLDcg
QEAgcHVibGljOgogICAgIHZvaWQgZW5xdWV1ZVBhZ2VzaG93RXZlbnQoUGFnZXNob3dFdmVudFBl
cnNpc3RlbmNlKTsKICAgICB2b2lkIGVucXVldWVIYXNoY2hhbmdlRXZlbnQoY29uc3QgU3RyaW5n
JiBvbGRVUkwsIGNvbnN0IFN0cmluZyYgbmV3VVJMKTsKICAgICB2b2lkIGVucXVldWVQb3BzdGF0
ZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCk7Ci0g
ICAgRXZlbnRRdWV1ZSogZXZlbnRRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRRdWV1ZS5n
ZXQoKTsgfQorICAgIHZpcnR1YWwgRG9jdW1lbnRFdmVudFF1ZXVlKiBldmVudFF1ZXVlKCkgY29u
c3QgeyByZXR1cm4gbV9ldmVudFF1ZXVlLmdldCgpOyB9CiAKICAgICB2b2lkIGFkZE1lZGlhQ2Fu
U3RhcnRMaXN0ZW5lcihNZWRpYUNhblN0YXJ0TGlzdGVuZXIqKTsKICAgICB2b2lkIHJlbW92ZU1l
ZGlhQ2FuU3RhcnRMaXN0ZW5lcihNZWRpYUNhblN0YXJ0TGlzdGVuZXIqKTsKQEAgLTEzNzAsNyAr
MTM3MCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fdXNpbmdHZW9sb2NhdGlvbjsKIAotICAg
IFJlZlB0cjxFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7CisgICAgUmVmUHRyPERvY3VtZW50RXZl
bnRRdWV1ZT4gbV9ldmVudFF1ZXVlOwogCiAgICAgUmVmUHRyPERvY3VtZW50V2Vha1JlZmVyZW5j
ZT4gbV93ZWFrUmVmZXJlbmNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVl
dWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdlZGYyNGY4OGE2NjQ1YmU2ZGI5MmJjNmRjNTRiMTgyNDc3YzA5
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1
ZXVlLmNwcApAQCAtMCwwICsxLDE1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1ZS5oIgorCisjaW5jbHVkZSAiRE9NV2lu
ZG93LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIK
KyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU3VzcGVuZGFi
bGVUaW1lci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitzdGF0aWMgaW5saW5lIGJv
b2wgc2hvdWxkRGlzcGF0Y2hTY3JvbGxFdmVudFN5bmNocm9ub3VzbHkoRG9jdW1lbnQqIGRvY3Vt
ZW50KQoreworICAgIEFTU0VSVF9BUkcoZG9jdW1lbnQsIGRvY3VtZW50KTsKKyAgICByZXR1cm4g
YXBwbGljYXRpb25Jc1NhZmFyaSgpICYmIChkb2N1bWVudC0+dXJsKCkucHJvdG9jb2xJcygiZmVl
ZCIpIHx8IGRvY3VtZW50LT51cmwoKS5wcm90b2NvbElzKCJmZWVkcyIpKTsKK30KKworY2xhc3Mg
RG9jdW1lbnRFdmVudFF1ZXVlVGltZXIgOiBwdWJsaWMgU3VzcGVuZGFibGVUaW1lciB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoRG9jdW1lbnRFdmVudFF1ZXVlVGltZXIpOworcHVibGljOgor
ICAgIERvY3VtZW50RXZlbnRRdWV1ZVRpbWVyKERvY3VtZW50RXZlbnRRdWV1ZSogZXZlbnRRdWV1
ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICAgICAgOiBTdXNwZW5kYWJs
ZVRpbWVyKGNvbnRleHQpCisgICAgICAgICwgbV9ldmVudFF1ZXVlKGV2ZW50UXVldWUpIHsgfQor
Citwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpIHsgbV9ldmVudFF1ZXVlLT5wZW5k
aW5nRXZlbnRUaW1lckZpcmVkKCk7IH0KKyAgICBEb2N1bWVudEV2ZW50UXVldWUqIG1fZXZlbnRR
dWV1ZTsKK307CisKK1Bhc3NSZWZQdHI8RG9jdW1lbnRFdmVudFF1ZXVlPiBEb2N1bWVudEV2ZW50
UXVldWU6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgRG9jdW1lbnRFdmVudFF1ZXVlKGNvbnRleHQpKTsKK30KKworRG9j
dW1lbnRFdmVudFF1ZXVlOjpEb2N1bWVudEV2ZW50UXVldWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkKKyAgICA6IG1fcGVuZGluZ0V2ZW50VGltZXIoYWRvcHRQdHIobmV3IERvY3Vt
ZW50RXZlbnRRdWV1ZVRpbWVyKHRoaXMsIGNvbnRleHQpKSkKKyAgICAsIG1faXNDbG9zZWQoZmFs
c2UpCit7Cit9CisKK0RvY3VtZW50RXZlbnRRdWV1ZTo6fkRvY3VtZW50RXZlbnRRdWV1ZSgpCit7
Cit9CisKK3ZvaWQgRG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxF
dmVudD4gZXZlbnQpCit7CisgICAgaWYgKG1faXNDbG9zZWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEFTU0VSVChldmVudC0+dGFyZ2V0KCkpOworICAgIGJvb2wgd2FzQWRkZWQgPSBtX3F1ZXVl
ZEV2ZW50cy5hZGQoZXZlbnQpLnNlY29uZDsKKyAgICBBU1NFUlRfVU5VU0VEKHdhc0FkZGVkLCB3
YXNBZGRlZCk7IC8vIEl0IHNob3VsZCBub3QgaGF2ZSBhbHJlYWR5IGJlZW4gaW4gdGhlIGxpc3Qu
CisgICAgCisgICAgaWYgKCFtX3BlbmRpbmdFdmVudFRpbWVyLT5pc0FjdGl2ZSgpKQorICAgICAg
ICBtX3BlbmRpbmdFdmVudFRpbWVyLT5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgRG9jdW1l
bnRFdmVudFF1ZXVlOjplbnF1ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KFBhc3NSZWZQdHI8Tm9k
ZT4gdGFyZ2V0LCBTY3JvbGxFdmVudFRhcmdldFR5cGUgdGFyZ2V0VHlwZSkKK3sKKyAgICBpZiAo
IXRhcmdldC0+ZG9jdW1lbnQoKS0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpTQ1JPTExfTElT
VEVORVIpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBQZXIgdGhlIFczQyBDU1NPTSBWaWV3
IE1vZHVsZSwgc2Nyb2xsIGV2ZW50cyBmaXJlZCBhdCB0aGUgZG9jdW1lbnQgc2hvdWxkIGJ1YmJs
ZSwgb3RoZXJzIHNob3VsZCBub3QuCisgICAgYm9vbCBjYW5CdWJibGUgPSB0YXJnZXRUeXBlID09
IFNjcm9sbEV2ZW50RG9jdW1lbnRUYXJnZXQ7CisgICAgUmVmUHRyPEV2ZW50PiBzY3JvbGxFdmVu
dCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNjcm9sbEV2ZW50LCBjYW5CdWJibGUsIGZh
bHNlIC8qIG5vbiBjYW5jZWxsZWFibGUgKi8pOworICAgICAKKyAgICBpZiAoc2hvdWxkRGlzcGF0
Y2hTY3JvbGxFdmVudFN5bmNocm9ub3VzbHkodGFyZ2V0LT5kb2N1bWVudCgpKSkgeworICAgICAg
ICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoc2Nyb2xsRXZlbnQucmVsZWFzZSgpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHMu
YWRkKHRhcmdldC5nZXQoKSkuc2Vjb25kKQorICAgICAgICByZXR1cm47CisKKyAgICBzY3JvbGxF
dmVudC0+c2V0VGFyZ2V0KHRhcmdldCk7CisgICAgZW5xdWV1ZUV2ZW50KHNjcm9sbEV2ZW50LnJl
bGVhc2UoKSk7Cit9CisKK2Jvb2wgRG9jdW1lbnRFdmVudFF1ZXVlOjpjYW5jZWxFdmVudChFdmVu
dCogZXZlbnQpCit7CisgICAgYm9vbCBmb3VuZCA9IG1fcXVldWVkRXZlbnRzLmNvbnRhaW5zKGV2
ZW50KTsKKyAgICBtX3F1ZXVlZEV2ZW50cy5yZW1vdmUoZXZlbnQpOworICAgIGlmIChtX3F1ZXVl
ZEV2ZW50cy5pc0VtcHR5KCkpCisgICAgICAgIG1fcGVuZGluZ0V2ZW50VGltZXItPnN0b3AoKTsK
KyAgICByZXR1cm4gZm91bmQ7Cit9CisKK3ZvaWQgRG9jdW1lbnRFdmVudFF1ZXVlOjpjbG9zZSgp
Cit7CisgICAgbV9pc0Nsb3NlZCA9IHRydWU7CisgICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3Rv
cCgpOworICAgIG1fcXVldWVkRXZlbnRzLmNsZWFyKCk7Cit9CisKK3ZvaWQgRG9jdW1lbnRFdmVu
dFF1ZXVlOjpwZW5kaW5nRXZlbnRUaW1lckZpcmVkKCkKK3sKKyAgICBBU1NFUlQoIW1fcGVuZGlu
Z0V2ZW50VGltZXItPmlzQWN0aXZlKCkpOworICAgIEFTU0VSVCghbV9xdWV1ZWRFdmVudHMuaXNF
bXB0eSgpKTsKKworICAgIG1fbm9kZXNXaXRoUXVldWVkU2Nyb2xsRXZlbnRzLmNsZWFyKCk7CisK
KyAgICAvLyBJbnNlcnQgYSBtYXJrZXIgZm9yIHdoZXJlIHdlIHNob3VsZCBzdG9wLgorICAgIEFT
U0VSVCghbV9xdWV1ZWRFdmVudHMuY29udGFpbnMoMCkpOworICAgIGJvb2wgd2FzQWRkZWQgPSBt
X3F1ZXVlZEV2ZW50cy5hZGQoMCkuc2Vjb25kOworICAgIEFTU0VSVF9VTlVTRUQod2FzQWRkZWQs
IHdhc0FkZGVkKTsgLy8gSXQgc2hvdWxkIG5vdCBoYXZlIGFscmVhZHkgYmVlbiBpbiB0aGUgbGlz
dC4KKworICAgIFJlZlB0cjxEb2N1bWVudEV2ZW50UXVldWU+IHByb3RlY3Rvcih0aGlzKTsKKwor
ICAgIHdoaWxlICghbV9xdWV1ZWRFdmVudHMuaXNFbXB0eSgpKSB7CisgICAgICAgIExpc3RIYXNo
U2V0PFJlZlB0cjxFdmVudD4gPjo6aXRlcmF0b3IgaXRlciA9IG1fcXVldWVkRXZlbnRzLmJlZ2lu
KCk7CisgICAgICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSAqaXRlcjsKKyAgICAgICAgbV9xdWV1
ZWRFdmVudHMucmVtb3ZlKGl0ZXIpOworICAgICAgICBpZiAoIWV2ZW50KQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQuZ2V0KCkpOworICAgIH0KK30KKwor
dm9pZCBEb2N1bWVudEV2ZW50UXVldWU6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4g
ZXZlbnQpCit7CisgICAgRXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0ID0gZXZlbnQtPnRhcmdldCgp
OworICAgIGlmIChldmVudFRhcmdldC0+dG9ET01XaW5kb3coKSkKKyAgICAgICAgZXZlbnRUYXJn
ZXQtPnRvRE9NV2luZG93KCktPmRpc3BhdGNoRXZlbnQoZXZlbnQsIDApOworICAgIGVsc2UKKyAg
ICAgICAgZXZlbnRUYXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYThkM2JmYjg0ZjYzNTEz
YTIwOWUwMWNmZWU1YmY5NTkyYzYzN2FmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAq
LworCisjaWZuZGVmIERvY3VtZW50RXZlbnRRdWV1ZV9oCisjZGVmaW5lIERvY3VtZW50RXZlbnRR
dWV1ZV9oCisKKyNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRXZlbnQ7CitjbGFzcyBEb2N1bWVudEV2ZW50
UXVldWVUaW1lcjsKK2NsYXNzIE5vZGU7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owor
CitjbGFzcyBEb2N1bWVudEV2ZW50UXVldWUgOiBwdWJsaWMgUmVmQ291bnRlZDxEb2N1bWVudEV2
ZW50UXVldWU+LCBwdWJsaWMgRXZlbnRRdWV1ZSB7CitwdWJsaWM6CisgICAgZW51bSBTY3JvbGxF
dmVudFRhcmdldFR5cGUgeworICAgICAgICBTY3JvbGxFdmVudERvY3VtZW50VGFyZ2V0LAorICAg
ICAgICBTY3JvbGxFdmVudEVsZW1lbnRUYXJnZXQKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8RG9jdW1lbnRFdmVudFF1ZXVlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OworICAgIHZpcnR1YWwgfkRvY3VtZW50RXZlbnRRdWV1ZSgpOworCisgICAgLy8gRXZlbnRRdWV1
ZQorICAgIHZpcnR1YWwgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOworICAg
IHZpcnR1YWwgYm9vbCBjYW5jZWxFdmVudChFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBjbG9z
ZSgpOworCisgICAgdm9pZCBlbnF1ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KFBhc3NSZWZQdHI8
Tm9kZT4sIFNjcm9sbEV2ZW50VGFyZ2V0VHlwZSk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQg
RG9jdW1lbnRFdmVudFF1ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworICAgIHZvaWQg
cGVuZGluZ0V2ZW50VGltZXJGaXJlZCgpOworICAgIHZvaWQgZGlzcGF0Y2hFdmVudChQYXNzUmVm
UHRyPEV2ZW50Pik7CisKKyAgICBPd25QdHI8RG9jdW1lbnRFdmVudFF1ZXVlVGltZXI+IG1fcGVu
ZGluZ0V2ZW50VGltZXI7CisgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPEV2ZW50PiA+IG1fcXVldWVk
RXZlbnRzOworICAgIEhhc2hTZXQ8Tm9kZSo+IG1fbm9kZXNXaXRoUXVldWVkU2Nyb2xsRXZlbnRz
OworICAgIGJvb2wgbV9pc0Nsb3NlZDsKKworICAgIGZyaWVuZCBjbGFzcyBEb2N1bWVudEV2ZW50
UXVldWVUaW1lcjsgICAgCit9OworCit9CisKKyNlbmRpZiAvLyBEb2N1bWVudEV2ZW50UXVldWVf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiMGVlMjc3MjFmNDFiOGNjMGMxYmRmZTU3M2MyNDgyY2Q5NDk1ZTdkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFF1ZXVlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICoKLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgotCi0jaW5jbHVk
ZSAiRE9NV2luZG93LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFdmVudC5o
IgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAi
U3VzcGVuZGFibGVUaW1lci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1zdGF0aWMg
aW5saW5lIGJvb2wgc2hvdWxkRGlzcGF0Y2hTY3JvbGxFdmVudFN5bmNocm9ub3VzbHkoRG9jdW1l
bnQqIGRvY3VtZW50KQotewotICAgIEFTU0VSVF9BUkcoZG9jdW1lbnQsIGRvY3VtZW50KTsKLSAg
ICByZXR1cm4gYXBwbGljYXRpb25Jc1NhZmFyaSgpICYmIChkb2N1bWVudC0+dXJsKCkucHJvdG9j
b2xJcygiZmVlZCIpIHx8IGRvY3VtZW50LT51cmwoKS5wcm90b2NvbElzKCJmZWVkcyIpKTsKLX0K
LQotY2xhc3MgRXZlbnRRdWV1ZVRpbWVyIDogcHVibGljIFN1c3BlbmRhYmxlVGltZXIgewotICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEV2ZW50UXVldWVUaW1lcik7Ci1wdWJsaWM6Ci0gICAgRXZl
bnRRdWV1ZVRpbWVyKEV2ZW50UXVldWUqIGV2ZW50UXVldWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCi0gICAgICAgIDogU3VzcGVuZGFibGVUaW1lcihjb250ZXh0KQotICAgICAg
ICAsIG1fZXZlbnRRdWV1ZShldmVudFF1ZXVlKSB7IH0KLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IHZvaWQgZmlyZWQoKSB7IG1fZXZlbnRRdWV1ZS0+cGVuZGluZ0V2ZW50VGltZXJGaXJlZCgpOyB9
Ci0gICAgRXZlbnRRdWV1ZSogbV9ldmVudFF1ZXVlOyAgICAKLX07Ci0KLVBhc3NSZWZQdHI8RXZl
bnRRdWV1ZT4gRXZlbnRRdWV1ZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFdmVudFF1ZXVlKGNvbnRleHQpKTsKLX0K
LQotRXZlbnRRdWV1ZTo6RXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQotICAgIDogbV9wZW5kaW5nRXZlbnRUaW1lcihhZG9wdFB0cihuZXcgRXZlbnRRdWV1ZVRpbWVy
KHRoaXMsIGNvbnRleHQpKSkKLSAgICAsIG1faXNDbG9zZWQoZmFsc2UpCi17Ci19Ci0KLUV2ZW50
UXVldWU6On5FdmVudFF1ZXVlKCkKLXsKLX0KLQotdm9pZCBFdmVudFF1ZXVlOjplbnF1ZXVlRXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCi17Ci0gICAgaWYgKG1faXNDbG9zZWQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIEFTU0VSVChldmVudC0+dGFyZ2V0KCkpOwotICAgIGJvb2wgd2Fz
QWRkZWQgPSBtX3F1ZXVlZEV2ZW50cy5hZGQoZXZlbnQpLnNlY29uZDsKLSAgICBBU1NFUlRfVU5V
U0VEKHdhc0FkZGVkLCB3YXNBZGRlZCk7IC8vIEl0IHNob3VsZCBub3QgaGF2ZSBhbHJlYWR5IGJl
ZW4gaW4gdGhlIGxpc3QuCi0gICAgCi0gICAgaWYgKCFtX3BlbmRpbmdFdmVudFRpbWVyLT5pc0Fj
dGl2ZSgpKQotICAgICAgICBtX3BlbmRpbmdFdmVudFRpbWVyLT5zdGFydE9uZVNob3QoMCk7Ci19
Ci0KLXZvaWQgRXZlbnRRdWV1ZTo6ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChQYXNzUmVm
UHRyPE5vZGU+IHRhcmdldCwgU2Nyb2xsRXZlbnRUYXJnZXRUeXBlIHRhcmdldFR5cGUpCi17Ci0g
ICAgaWYgKCF0YXJnZXQtPmRvY3VtZW50KCktPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6U0NS
T0xMX0xJU1RFTkVSKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gUGVyIHRoZSBXM0MgQ1NT
T00gVmlldyBNb2R1bGUsIHNjcm9sbCBldmVudHMgZmlyZWQgYXQgdGhlIGRvY3VtZW50IHNob3Vs
ZCBidWJibGUsIG90aGVycyBzaG91bGQgbm90LgotICAgIGJvb2wgY2FuQnViYmxlID0gdGFyZ2V0
VHlwZSA9PSBTY3JvbGxFdmVudERvY3VtZW50VGFyZ2V0OwotICAgIFJlZlB0cjxFdmVudD4gc2Ny
b2xsRXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zY3JvbGxFdmVudCwgY2FuQnVi
YmxlLCBmYWxzZSAvKiBub24gY2FuY2VsbGVhYmxlICovKTsKLSAgICAgCi0gICAgaWYgKHNob3Vs
ZERpc3BhdGNoU2Nyb2xsRXZlbnRTeW5jaHJvbm91c2x5KHRhcmdldC0+ZG9jdW1lbnQoKSkpIHsK
LSAgICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KHNjcm9sbEV2ZW50LnJlbGVhc2UoKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIW1fbm9kZXNXaXRoUXVldWVkU2Nyb2xs
RXZlbnRzLmFkZCh0YXJnZXQuZ2V0KCkpLnNlY29uZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
c2Nyb2xsRXZlbnQtPnNldFRhcmdldCh0YXJnZXQpOwotICAgIGVucXVldWVFdmVudChzY3JvbGxF
dmVudC5yZWxlYXNlKCkpOwotfQotCi1ib29sIEV2ZW50UXVldWU6OmNhbmNlbEV2ZW50KEV2ZW50
KiBldmVudCkKLXsKLSAgICBib29sIGZvdW5kID0gbV9xdWV1ZWRFdmVudHMuY29udGFpbnMoZXZl
bnQpOwotICAgIG1fcXVldWVkRXZlbnRzLnJlbW92ZShldmVudCk7Ci0gICAgaWYgKG1fcXVldWVk
RXZlbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3RvcCgpOwot
ICAgIHJldHVybiBmb3VuZDsKLX0KLQotdm9pZCBFdmVudFF1ZXVlOjpjbG9zZSgpCi17Ci0gICAg
bV9pc0Nsb3NlZCA9IHRydWU7Ci0gICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3RvcCgpOwotICAg
IG1fcXVldWVkRXZlbnRzLmNsZWFyKCk7Ci19Ci0KLXZvaWQgRXZlbnRRdWV1ZTo6cGVuZGluZ0V2
ZW50VGltZXJGaXJlZCgpCi17Ci0gICAgQVNTRVJUKCFtX3BlbmRpbmdFdmVudFRpbWVyLT5pc0Fj
dGl2ZSgpKTsKLSAgICBBU1NFUlQoIW1fcXVldWVkRXZlbnRzLmlzRW1wdHkoKSk7Ci0KLSAgICBt
X25vZGVzV2l0aFF1ZXVlZFNjcm9sbEV2ZW50cy5jbGVhcigpOwotCi0gICAgLy8gSW5zZXJ0IGEg
bWFya2VyIGZvciB3aGVyZSB3ZSBzaG91bGQgc3RvcC4KLSAgICBBU1NFUlQoIW1fcXVldWVkRXZl
bnRzLmNvbnRhaW5zKDApKTsKLSAgICBib29sIHdhc0FkZGVkID0gbV9xdWV1ZWRFdmVudHMuYWRk
KDApLnNlY29uZDsKLSAgICBBU1NFUlRfVU5VU0VEKHdhc0FkZGVkLCB3YXNBZGRlZCk7IC8vIEl0
IHNob3VsZCBub3QgaGF2ZSBhbHJlYWR5IGJlZW4gaW4gdGhlIGxpc3QuCi0KLSAgICBSZWZQdHI8
RXZlbnRRdWV1ZT4gcHJvdGVjdG9yKHRoaXMpOwotCi0gICAgd2hpbGUgKCFtX3F1ZXVlZEV2ZW50
cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPEV2ZW50PiA+OjppdGVy
YXRvciBpdGVyID0gbV9xdWV1ZWRFdmVudHMuYmVnaW4oKTsKLSAgICAgICAgUmVmUHRyPEV2ZW50
PiBldmVudCA9ICppdGVyOwotICAgICAgICBtX3F1ZXVlZEV2ZW50cy5yZW1vdmUoaXRlcik7Ci0g
ICAgICAgIGlmICghZXZlbnQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGlzcGF0Y2hF
dmVudChldmVudC5nZXQoKSk7Ci0gICAgfQotfQotCi12b2lkIEV2ZW50UXVldWU6OmRpc3BhdGNo
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCi17Ci0gICAgRXZlbnRUYXJnZXQqIGV2ZW50
VGFyZ2V0ID0gZXZlbnQtPnRhcmdldCgpOwotICAgIGlmIChldmVudFRhcmdldC0+dG9ET01XaW5k
b3coKSkKLSAgICAgICAgZXZlbnRUYXJnZXQtPnRvRE9NV2luZG93KCktPmRpc3BhdGNoRXZlbnQo
ZXZlbnQsIDApOwotICAgIGVsc2UKLSAgICAgICAgZXZlbnRUYXJnZXQtPmRpc3BhdGNoRXZlbnQo
ZXZlbnQpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1
ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuaAppbmRleCBjOTk3OTcyMDgxZWU1
ZjJhYWE1NWVjMGFjMDYxNGVkNDljOWUwMTU2Li4yZDI2YmUyYzdhYjUwNWMwNzEyNDEwMzhiZDg1
YzIwM2FlY2EzOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmgKQEAgLTI3LDQ4ICsyNywyMSBA
QAogI2lmbmRlZiBFdmVudFF1ZXVlX2gKICNkZWZpbmUgRXZlbnRRdWV1ZV9oCiAKKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3Rm
L0xpc3RIYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRXZlbnQ7Ci1jbGFzcyBF
dmVudFF1ZXVlVGltZXI7Ci1jbGFzcyBOb2RlOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKIAotY2xhc3MgRXZlbnRRdWV1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEV2ZW50UXVldWU+IHsK
K2NsYXNzIEV2ZW50UXVldWUgewogcHVibGljOgotICAgIGVudW0gU2Nyb2xsRXZlbnRUYXJnZXRU
eXBlIHsKLSAgICAgICAgU2Nyb2xsRXZlbnREb2N1bWVudFRhcmdldCwKLSAgICAgICAgU2Nyb2xs
RXZlbnRFbGVtZW50VGFyZ2V0Ci0gICAgfTsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50
UXVldWU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0gICAgfkV2ZW50UXVldWUo
KTsKLQotICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKLSAgICB2b2lk
IGVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiwgU2Nyb2xsRXZl
bnRUYXJnZXRUeXBlKTsKLSAgICBib29sIGNhbmNlbEV2ZW50KEV2ZW50Kik7Ci0KLSAgICAvLyBU
aGUgYWNjdW11bGF0ZWQgYW5kIGFsbCB0aGUgZnV0dXJlIGV2ZW50cyB3aWxsIGJlIGRpc2NhcmRl
ZCwgbm8gZXZlbnRzIHdpbGwgYmUgZGlzcGF0Y2hlZCBhbnltb3JlLiAKLSAgICB2b2lkIGNsb3Nl
KCk7Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgRXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7Ci0KLSAgICB2b2lkIHBlbmRpbmdFdmVudFRpbWVyRmlyZWQoKTsKLSAgICB2b2lk
IGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwotCi0gICAgT3duUHRyPEV2ZW50UXVl
dWVUaW1lcj4gbV9wZW5kaW5nRXZlbnRUaW1lcjsKLSAgICBMaXN0SGFzaFNldDxSZWZQdHI8RXZl
bnQ+ID4gbV9xdWV1ZWRFdmVudHM7Ci0gICAgSGFzaFNldDxOb2RlKj4gbV9ub2Rlc1dpdGhRdWV1
ZWRTY3JvbGxFdmVudHM7Ci0gICAgYm9vbCBtX2lzQ2xvc2VkOwotCi0gICAgZnJpZW5kIGNsYXNz
IEV2ZW50UXVldWVUaW1lcjsgICAgCisgICAgdmlydHVhbCB+RXZlbnRRdWV1ZSgpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgY2FuY2VsRXZlbnQoRXZlbnQqKSA9IDA7CisgICAgLy8gVGhlIGFjY3VtdWxh
dGVkIGFuZCBhbGwgdGhlIGZ1dHVyZSBldmVudHMgd2lsbCBiZSBkaXNjYXJkZWQsIG5vIGV2ZW50
cyB3aWxsIGJlIGRpc3BhdGNoZWQgYW55bW9yZS4KKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSA9
IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aAppbmRleCBlMTZmYWI1ODI5NzU1YmQ2ZmU3OTQ1MWVjNDE5ZTNmZDc0OWNmNzg2Li4yMTgzMDRh
NjA4OTI5Yzc4M2FlN2NkNTE3NzJiMDhhNzMwODExZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTUyLDYgKzUyLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIERPTVRpbWVyOwogICAgIGNsYXNzIERPTVVSTDsKICAgICBjbGFz
cyBFdmVudExpc3RlbmVyOworICAgIGNsYXNzIEV2ZW50UXVldWU7CiAgICAgY2xhc3MgRXZlbnRU
YXJnZXQ7CiAgICAgY2xhc3MgTWVzc2FnZVBvcnQ7CiAgICAgY2xhc3MgU2NyaXB0Q2FsbFN0YWNr
OwpAQCAtMTczLDYgKzE3NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBh
ZGp1c3RNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgb2xkTWluaW11bVRpbWVySW50ZXJ2YWwp
OwogICAgICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCgpIGNvbnN0Owog
CisgICAgICAgIHZpcnR1YWwgRXZlbnRRdWV1ZSogZXZlbnRRdWV1ZSgpIGNvbnN0ID0gMDsKKwog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgLy8gRXhwbGljaXRseSBvdmVycmlkZSB0aGUgc2VjdXJp
dHkgb3JpZ2luIGZvciB0aGlzIHNjcmlwdCBjb250ZXh0LgogICAgICAgICAvLyBOb3RlOiBJdCBp
cyBkYW5nZXJvdXMgdG8gY2hhbmdlIHRoZSBzZWN1cml0eSBvcmlnaW4gb2YgYSBzY3JpcHQgY29u
dGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGNlNjc0NGE2ZjYzZWZl
MjU4M2VlYWVlZWYwOWRhMTZjM2MzMDA1NWQuLmE1YmNmNzdmZTNjYmYwOTY0MjNmOGVmOWU3ODY5
OGQ4M2Q1ZGRiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTM0LDEx
ICszNCwxMSBAQAogI2luY2x1ZGUgIkN1cnNvci5oIgogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1ZS5oIgog
I2luY2x1ZGUgIkRyYWdDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRHJhZ1N0YXRlLmgiCiAjaW5j
bHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkV2ZW50
UXVldWUuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCkBAIC0zMTA3LDcgKzMxMDcsNyBAQCB2b2lk
IEV2ZW50SGFuZGxlcjo6c2VuZFNjcm9sbEV2ZW50KCkKIHsKICAgICBzZXRGcmFtZVdhc1Njcm9s
bGVkQnlVc2VyKCk7CiAgICAgaWYgKG1fZnJhbWUtPnZpZXcoKSAmJiBtX2ZyYW1lLT5kb2N1bWVu
dCgpKQotICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5ldmVudFF1ZXVlKCktPmVucXVldWVP
ckRpc3BhdGNoU2Nyb2xsRXZlbnQobV9mcmFtZS0+ZG9jdW1lbnQoKSwgRXZlbnRRdWV1ZTo6U2Ny
b2xsRXZlbnREb2N1bWVudFRhcmdldCk7CisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmV2
ZW50UXVldWUoKS0+ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChtX2ZyYW1lLT5kb2N1bWVu
dCgpLCBEb2N1bWVudEV2ZW50UXVldWU6OlNjcm9sbEV2ZW50RG9jdW1lbnRUYXJnZXQpOwogfQog
CiB2b2lkIEV2ZW50SGFuZGxlcjo6c2V0RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA1MTU2OGU1ZjhhMWE0MDMyMzI5
ZTNlMjI0MWNiNjhiMWRiYTNlNzQzLi43MDI2OTY0ZTgxMTRhZGY1MWE1YThmNDNmNmM0ZDc1Yzlj
Y2YzMmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTUw
LDggKzUwLDggQEAKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ2hy
b21lLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVl
dWUuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKLSNpbmNsdWRlICJFdmVudFF1ZXVlLmgi
CiAjaW5jbHVkZSAiRmxvYXRQb2ludDNELmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5j
bHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCkBAIC0xNDQyLDcgKzE0NDIsNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjpzY3JvbGxUbyhMYXlvdXRVbml0IHgsIExheW91dFVuaXQgeSkKIAogICAgIC8vIFNj
aGVkdWxlIHRoZSBzY3JvbGwgRE9NIGV2ZW50LgogICAgIGlmIChyZW5kZXJlcigpLT5ub2RlKCkp
Ci0gICAgICAgIHJlbmRlcmVyKCktPm5vZGUoKS0+ZG9jdW1lbnQoKS0+ZXZlbnRRdWV1ZSgpLT5l
bnF1ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KHJlbmRlcmVyKCktPm5vZGUoKSwgRXZlbnRRdWV1
ZTo6U2Nyb2xsRXZlbnRFbGVtZW50VGFyZ2V0KTsKKyAgICAgICAgcmVuZGVyZXIoKS0+bm9kZSgp
LT5kb2N1bWVudCgpLT5ldmVudFF1ZXVlKCktPmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQo
cmVuZGVyZXIoKS0+bm9kZSgpLCBEb2N1bWVudEV2ZW50UXVldWU6OlNjcm9sbEV2ZW50RWxlbWVu
dFRhcmdldCk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29u
c3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0
IFNjcm9sbEFsaWdubWVudCYgYWxpZ25ZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guY3BwCmluZGV4IGRkZjc5YzBmYjU4NTY1MDBlNDI1ZTcyZmRjYTUxY2I0YTlkYWMw
NDEuLjIwYTAwYjdlNGU1YTUzYzc5YTRmMjJlNjA0MGNhMWJkNWQxMjUyYzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTM0LDggKzM0LDggQEAKICNp
bmNsdWRlICJDU1NGb250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuaCIK
ICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKLSNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5j
bHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKQEAgLTYyMiw3ICs2MjIsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnNjcm9s
bFRvKGludCBuZXdPZmZzZXQpCiAKICAgICBtX2luZGV4T2Zmc2V0ID0gbmV3T2Zmc2V0OwogICAg
IHJlcGFpbnQoKTsKLSAgICBub2RlKCktPmRvY3VtZW50KCktPmV2ZW50UXVldWUoKS0+ZW5xdWV1
ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChub2RlKCksIEV2ZW50UXVldWU6OlNjcm9sbEV2ZW50RWxl
bWVudFRhcmdldCk7CisgICAgbm9kZSgpLT5kb2N1bWVudCgpLT5ldmVudFF1ZXVlKCktPmVucXVl
dWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQobm9kZSgpLCBEb2N1bWVudEV2ZW50UXVldWU6OlNjcm9s
bEV2ZW50RWxlbWVudFRhcmdldCk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyTGlzdEJveDo6aXRl
bUhlaWdodCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCmluZGV4
IDdjYmFmNWJmNTNjMmU0MmU3ZjMzZGNiNjZhMWJlYjE5MGYyNjEyNzMuLmE4ZDQ4NTNkY2Q5NTg1
Mjg1OWU3MTc3MGIxMGRlYTI4NWMxZGJhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0
YWJhc2UuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKIAog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgorI2luY2x1ZGUg
IkRvY3VtZW50RXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIklEQkFueS5oIgogI2luY2x1ZGUgIklE
QkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCmluZGV4IDkwYTYxZGE0MzFkN2ViNTU3
ZGIwOGUzNTY5NDdlMmE2OTBlMjkxNmIuLmY4ZmNjZThmZWY5YjU5ZjRjYmEyNTkyMjUwMTkzMDFm
YzBiZTU5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcApAQCAtMzIsMTAg
KzMyLDEwIEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJEb2N1
bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkV2ZW50
RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKLSNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yV2l0
aFZhbHVlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJREJFdmVudERp
c3BhdGNoZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNh
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKaW5k
ZXggNTk1OWYzOTE0OGE5YzM1NzRkNDg1NjMzYTBlODlmNmM3NTMxZjMzNC4uZjNkZTQzYTkyNDYy
MTQ2Y2MxYTBlOTA2YmM0N2JkNGVmMzBiYzc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJUcmFuc2FjdGlvbi5jcHAKQEAgLTI5LDggKzI5LDggQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRFdmVu
dFF1ZXVlLmgiCiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJFdmVudFF1
ZXVlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQkV2ZW50RGlzcGF0Y2hlci5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKaW5kZXggMDNkNDg4YzMzYmZhZTgwMGY5MDQ4ODA4
ZmFhYWIyM2UzNmEzZWEwNi4uYzg3ZjcxMmIxMTdiMmExMWQ4MjZmMDY5Njk0NTJhZGJhNTBkZjhm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCkBAIC01MDYsNiAr
NTA2LDExIEBAIHZvaWQgV29ya2VyQ29udGV4dDo6bm90aWZ5T2JzZXJ2ZXJzT2ZTdG9wKCkKICAg
ICB9CiB9CiAKK1dvcmtlckV2ZW50UXVldWUqIFdvcmtlckNvbnRleHQ6OmV2ZW50UXVldWUoKSBj
b25zdAoreworICAgIHJldHVybiBtX2V2ZW50UXVldWUuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnRleHQuaAppbmRleCBhYzQ1NzdiMjM2MWFjZDdkOTE2NTQwNzEzYmUzYTI1
OTZlYWU4MmVmLi41ZmRkNDcyZWExYTA4NmFjZThiM2ZmYjg5Y2Q1YjFmN2NhMGFmZWQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXb3JrZXJFdmVudFF1ZXVlLmgi
CiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTExMCw2ICsxMTEsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlw
ZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4p
OworICAgICAgICB2aXJ0dWFsIFdvcmtlckV2ZW50UXVldWUqIGV2ZW50UXVldWUoKSBjb25zdDsK
IAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgICAgICBOb3RpZmljYXRpb25DZW50ZXIq
IHdlYmtpdE5vdGlmaWNhdGlvbnMoKSBjb25zdDsKQEAgLTIxMiw2ICsyMTQsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsK
IAogICAgICAgICBIYXNoU2V0PE9ic2VydmVyKj4gbV93b3JrZXJPYnNlcnZlcnM7CisKKyAgICAg
ICAgT3duUHRyPFdvcmtlckV2ZW50UXVldWU+IG1fZXZlbnRRdWV1ZTsKICAgICB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckV2ZW50UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1
ZXVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44YTNlYzAxMWJlODk3YmUyNThmNmQ4MzUxYmNlYmMwOWFhMjcy
YmYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVu
dFF1ZXVlLmNwcApAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldvcmtlckV2ZW50UXVldWUuaCIKKworI2luY2x1ZGUgIkRPTVdp
bmRvdy5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8V29ya2VyRXZlbnRRdWV1ZT4gV29y
a2VyRXZlbnRRdWV1ZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7
CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJFdmVudFF1ZXVlKGNvbnRleHQpKTsKK30K
KworV29ya2VyRXZlbnRRdWV1ZTo6V29ya2VyRXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQorICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCisg
ICAgLCBtX2lzQ2xvc2VkKGZhbHNlKQoreworfQorCitXb3JrZXJFdmVudFF1ZXVlOjp+V29ya2Vy
RXZlbnRRdWV1ZSgpCit7CisgICAgY2xvc2UoKTsKK30KKworY2xhc3MgV29ya2VyRXZlbnRRdWV1
ZTo6RXZlbnREaXNwYXRjaGVyVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxFdmVudERpc3BhdGNoZXJUYXNr
PiBjcmVhdGUoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIFdvcmtlckV2ZW50UXVldWUqIGV2ZW50
UXVldWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV2ZW50RGlzcGF0Y2hl
clRhc2soZXZlbnQsIGV2ZW50UXVldWUpKTsKKyAgICB9CisKKyAgICB2b2lkIGRpc3BhdGNoRXZl
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQorICAg
IHsKKyAgICAgICAgZXZlbnQtPnRhcmdldCgpLT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKKyAgICB7CisgICAgICAgIGlmIChtX2lzQ2FuY2VsbGVkKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBtX2V2ZW50UXVldWUtPnJlbW92ZUV2ZW50KG1fZXZlbnQuZ2V0KCkp
OworICAgICAgICBkaXNwYXRjaEV2ZW50KGNvbnRleHQsIG1fZXZlbnQpOworICAgIH0KKworICAg
IHZvaWQgY2FuY2VsKCkKKyAgICB7CisgICAgICAgIG1faXNDYW5jZWxsZWQgPSB0cnVlOworICAg
ICAgICBtX2V2ZW50LmNsZWFyKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIEV2ZW50RGlzcGF0
Y2hlclRhc2soUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIFdvcmtlckV2ZW50UXVldWUqIGV2ZW50
UXVldWUpCisgICAgICAgIDogbV9ldmVudChldmVudCkKKyAgICAgICAgLCBtX2V2ZW50UXVldWUo
ZXZlbnRRdWV1ZSkKKyAgICAgICAgLCBtX2lzQ2FuY2VsbGVkKGZhbHNlKQorICAgIHsKKyAgICB9
CisKKyAgICBSZWZQdHI8RXZlbnQ+IG1fZXZlbnQ7CisgICAgV29ya2VyRXZlbnRRdWV1ZSogbV9l
dmVudFF1ZXVlOworICAgIGJvb2wgbV9pc0NhbmNlbGxlZDsKK307CisKK3ZvaWQgV29ya2VyRXZl
bnRRdWV1ZTo6cmVtb3ZlRXZlbnQoRXZlbnQqIGV2ZW50KQoreworICAgIG1fZXZlbnRUYXNrTWFw
LnJlbW92ZShldmVudCk7Cit9CisKK3ZvaWQgV29ya2VyRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50
KFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50KQoreworICAgIGlmIChtX2lzQ2xvc2VkKQorICAg
ICAgICByZXR1cm47CisgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IHBycEV2ZW50OworICAgIE93
blB0cjxFdmVudERpc3BhdGNoZXJUYXNrPiB0YXNrID0gRXZlbnREaXNwYXRjaGVyVGFzazo6Y3Jl
YXRlKGV2ZW50LCB0aGlzKTsKKyAgICBtX2V2ZW50VGFza01hcC5hZGQoZXZlbnQucmVsZWFzZSgp
LCB0YXNrLmdldCgpKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKHRh
c2sucmVsZWFzZSgpKTsKK30KKworYm9vbCBXb3JrZXJFdmVudFF1ZXVlOjpjYW5jZWxFdmVudChF
dmVudCogZXZlbnQpCit7CisgICAgRXZlbnREaXNwYXRjaGVyVGFzayogdGFzayA9IG1fZXZlbnRU
YXNrTWFwLmdldChldmVudCk7CisgICAgaWYgKCF0YXNrKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgdGFzay0+Y2FuY2VsKCk7CisgICAgcmVtb3ZlRXZlbnQoZXZlbnQpOworICAgIHJldHVy
biB0cnVlOworfQorCit2b2lkIFdvcmtlckV2ZW50UXVldWU6OmNsb3NlKCkKK3sKKyAgICBtX2lz
Q2xvc2VkID0gdHJ1ZTsKKyAgICBmb3IgKEV2ZW50VGFza01hcDo6aXRlcmF0b3IgaXQgPSBtX2V2
ZW50VGFza01hcC5iZWdpbigpOyBpdCAhPSBtX2V2ZW50VGFza01hcC5lbmQoKTsgKytpdCkgewor
ICAgICAgICBFdmVudERpc3BhdGNoZXJUYXNrKiB0YXNrID0gaXQtPnNlY29uZDsKKyAgICAgICAg
dGFzay0+Y2FuY2VsKCk7CisgICAgfQorICAgIG1fZXZlbnRUYXNrTWFwLmNsZWFyKCk7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODBlN2QyODY3MzU2M2RmZTk1Zjc3ZjdlZTAzMDU4ZWMxZjY0NTk2MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oCkBAIC0wLDAgKzEs
NjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKgorICovCisKKyNpZm5kZWYgV29ya2VyRXZlbnRRdWV1ZV9oCisjZGVmaW5l
IFdvcmtlckV2ZW50UXVldWVfaAorCisjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgRXZlbnQ7CitjbGFzcyBOb2RlOworY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKKworY2xhc3MgV29ya2VyRXZlbnRRdWV1ZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFdvcmtlckV2ZW50UXVldWU+LCBwdWJsaWMgRXZlbnRRdWV1ZSB7CitwdWJsaWM6CisKKyAgICBz
dGF0aWMgUGFzc093blB0cjxXb3JrZXJFdmVudFF1ZXVlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOworICAgIHZpcnR1YWwgfldvcmtlckV2ZW50UXVldWUoKTsKKworICAgIC8vIEV2
ZW50UXVldWUKKyAgICB2aXJ0dWFsIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+
KTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuY2VsRXZlbnQoRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZv
aWQgY2xvc2UoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBXb3JrZXJFdmVudFF1ZXVlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRXZlbnQoRXZl
bnQqKTsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKKyAgICBib29sIG1faXNDbG9zZWQ7CisKKyAgICBjbGFzcyBFdmVudERpc3BhdGNoZXJU
YXNrOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8RXZlbnQ+LCBFdmVudERpc3BhdGNoZXJU
YXNrKj4gRXZlbnRUYXNrTWFwOworICAgIEV2ZW50VGFza01hcCBtX2V2ZW50VGFza01hcDsKK307
CisKK30KKworI2VuZGlmIC8vIFdvcmtlckV2ZW50UXVldWVfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112608</attachid>
            <date>2011-10-26 15:46:41 -0700</date>
            <delta_ts>2011-10-27 12:10:35 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-57789-20111026154640.patch</filename>
            <type>text/plain</type>
            <size>51555</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg1MTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiN2Y1YjQyYTc5ODVhMGY2
NGM1MWVlYzY2MTJmMjI5YTU3MWFkZTY2Li5kZWFiMWU1MTRhM2NiMDYzOWRkN2U5MWYzNjAxNjBj
MTI4NTMzODI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTEtMTAtMjQgIERhdmlk
IEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1vdmUgZXZlbnRxdWV1
ZSBmcm9tIERvY3VtZW50IHRvIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgc28gdGhhdCBpdCBjYW4g
YmUgYWNjZXNzZWQgZnJvbSB3b3JrZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01Nzc4OQorCisgICAgICAgIEV4dHJhY3QgaW50ZXJmYWNlIGZyb20g
RXZlbnRRdWV1ZSBhbmQgY3JlYXRlIHR3byBuZXcgc3ViY2xhc3NlczoKKyAgICAgICAgRG9jdW1l
bnRFdmVudFF1ZXVlIGFuZCBXb3JrZXJFdmVudFF1ZXVlLiAgRG9jdW1lbnRFdmVudFF1ZXVlIGlz
IHRoZQorICAgICAgICBvbGQgRXZlbnRRdWV1ZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHVzZXMgRE9N
VGltZXIoMCkgdG8gcG9zdCBhc3luYworICAgICAgICBldmVudHMuICBXb3JrZXJFdmVudFF1ZXVl
IHBvc3RzIGV2ZW50cyB0byBpdHMgdGhyZWFkJ3MgbWVzc2FnZSBsb29wLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhdmlkIExldmluLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtIEluZGV4ZWRE
QiB3aWxsIHVzZSB0aGlzIGJ1dCBpc24ndCByZWFkeSB5ZXQuICBJIGRvbid0CisgICAgICAgIGtu
b3cgb2YgYW55IG90aGVyIEFQSSBhdmFpbGFibGUgaW4gd29ya2VycyB0aGF0IEkgY2FuIHRlc3Qg
dGhpcyB3aXRoLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9ET01BbGxJbk9uZS5jcHA6
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6ZXZlbnRRdWV1ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50RXZlbnRRdWV1
ZS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5jcHAuCisg
ICAgICAgIChXZWJDb3JlOjpzaG91bGREaXNwYXRjaFNjcm9sbEV2ZW50U3luY2hyb25vdXNseSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWVUaW1lcjo6RG9jdW1lbnRFdmVu
dFF1ZXVlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlVGltZXI6
OmZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6RG9jdW1lbnRFdmVudFF1ZXVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6fkRvY3VtZW50RXZlbnRR
dWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVPckRpc3Bh
dGNoU2Nyb2xsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjpj
YW5jZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmNsb3Nl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6cGVuZGluZ0V2ZW50VGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmRpc3BhdGNo
RXZlbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuaC4KKyAgICAgICAgKiBkb20vRXZlbnRRdWV1
ZS5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICog
cGFnZS9FdmVudEhhbmRsZXIuY3BwOiBDaGFuZ2UgRXZlbnRRdWV1ZSB0byBEb2N1bWVudEV2ZW50
UXVldWUuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbmRTY3JvbGxFdmVudCk6
IENoYW5nZSBFdmVudFF1ZXVlIHRvIERvY3VtZW50RXZlbnRRdWV1ZS4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNj
cm9sbFRvKTogQ2hhbmdlIEV2ZW50UXVldWUgdG8gRG9jdW1lbnRFdmVudFF1ZXVlLgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxpc3RCb3g6OnNjcm9sbFRvKTogQ2hhbmdlIEV2ZW50UXVldWUgdG8gRG9jdW1lbnRFdmVudFF1
ZXVlLgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAqIHN0b3Jh
Z2UvSURCUmVxdWVzdC5jcHA6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHA6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckNvbnRleHQ6OmV2ZW50UXVldWUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29u
dGV4dC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlckV2ZW50UXVldWU6OldvcmtlckV2ZW50UXVldWUpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6fldvcmtlckV2ZW50UXVldWUpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6RXZlbnREaXNwYXRjaGVyVGFzazo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlclRhc2s6OmRp
c3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6RXZlbnRE
aXNwYXRjaGVyVGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZl
bnRRdWV1ZTo6RXZlbnREaXNwYXRjaGVyVGFzazo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlclRhc2s6OkV2ZW50RGlzcGF0Y2hlclRh
c2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6cmVtb3ZlRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmNhbmNlbEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmNsb3NlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckV2ZW50UXVldWUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUu
aC4KKwogMjAxMS0xMC0yNiAgQ2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgogCiAg
ICAgICAgIEFkZCBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50IGFuZCBzZXRGb3JtYXQoKSBtZXRo
b2Qgc28gd2UgY2FuIGtub3cgYXVkaW8gc3RyZWFtIGZvcm1hdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBhYzgxMDc4ZDM3YjBhMjE2MjJmZDBkOGRiNmU3MDgxYmVjYTY4ZmRhLi42OWFlZWQ0NGE5
OGVjYjAyMDJkOGUwZjlkZGE2ZGVlM2I2ODUyN2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
NTMzLDYgKzUzMyw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vRG9jdW1lbnQuY3Bw
CiAgICAgZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKICAgICBkb20vRG9jdW1lbnRN
YXJrZXIuY3BwCisgICAgZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKICAgICBkb20vRG9jdW1l
bnRGcmFnbWVudC5jcHAKICAgICBkb20vRG9jdW1lbnRQYXJzZXIuY3BwCiAgICAgZG9tL0RvY3Vt
ZW50T3JkZXJlZE1hcC5jcHAKQEAgLTU1Miw3ICs1NTMsNiBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VT
CiAgICAgZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCiAgICAgZG9tL0V2ZW50TmFtZXMuY3BwCiAg
ICAgZG9tL0V2ZW50VGFyZ2V0LmNwcAotICAgIGRvbS9FdmVudFF1ZXVlLmNwcAogICAgIGRvbS9F
eGNlcHRpb25CYXNlLmNwcAogICAgIGRvbS9FeGNlcHRpb25Db2RlLmNwcAogICAgIGRvbS9FeGNl
cHRpb25Db2RlUGxhY2Vob2xkZXIuY3BwCkBAIC0yMDEzLDYgKzIwMTMsNyBAQCBJRiAoRU5BQkxF
X1dPUktFUlMpCiAgICAgICAgIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcAogICAg
ICAgICB3b3JrZXJzL1dvcmtlci5jcHAKICAgICAgICAgd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNw
cAorICAgICAgICB3b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwCiAgICAgICAgIHdvcmtlcnMv
V29ya2VyTG9jYXRpb24uY3BwCiAgICAgICAgIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHku
Y3BwCiAgICAgICAgIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCmluZGV4IDM1MTE2MmQ2ZGZjMmVkZTc1NWYyMjExZTc2NjdiZjBmYTk5YjY1YWIu
LmZkMWJiZjViMGQ4ODVlZmRmNDhkZTc3YjM2ZDUyODhhNjE2OTcxY2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQpAQCAtMTE3Miw2ICsxMTcyLDggQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRNYXJrZXIuY3BwIFwKQEAgLTEyMjAsNyArMTIyMiw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggXAot
CVNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50UXVldWUuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkJhc2UuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQmFzZS5oIFwKQEAgLTM4OTUsNiArMzg5Niw4
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmggXAog
CVNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dFByb3h5LmggXAorCVNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmggXAogCVNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMzdl
YWViZjkwNzg4N2UyMTI4NzBlNTVjYTBjZjAyYzk1ODk0ODljMC4uOTBmNzVkNjAzZDk1YmE2YzA5
MTQ1MzQ1Zjc5NThlNWVmMWQxNzI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTAzMyw2ICs1MDMz
LDggQEAKICAgICAgICAgICAgICd3b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwJywKICAgICAgICAg
ICAgICd3b3JrZXJzL1dvcmtlckNvbnRleHQuaCcsCiAgICAgICAgICAgICAnd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0UHJveHkuaCcsCisgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVl
LmNwcCcsCisgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgnLAogICAgICAg
ICAgICAgJ3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaCcsCiAgICAgICAgICAgICAnd29ya2Vy
cy9Xb3JrZXJMb2NhdGlvbi5jcHAnLAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyTG9jYXRp
b24uaCcsCkBAIC01MTg5LDYgKzUxOTEsOCBAQAogICAgICAgICAgICAgJ2RvbS9EZXZpY2VPcmll
bnRhdGlvbkV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL0RldmljZU9yaWVudGF0aW9uRXZl
bnQuaCcsCiAgICAgICAgICAgICAnZG9tL0RvY3VtZW50LmNwcCcsCisgICAgICAgICAgICAnZG9t
L0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAnLAorICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudEV2ZW50
UXVldWUuaCcsCiAgICAgICAgICAgICAnZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwJywKICAgICAg
ICAgICAgICdkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCcsCiAgICAgICAgICAgICAn
ZG9tL0RvY3VtZW50TWFya2VyLmNwcCcsCkBAIC01MjE2LDcgKzUyMjAsNiBAQAogICAgICAgICAg
ICAgJ2RvbS9FdmVudEV4Y2VwdGlvbi5oJywKICAgICAgICAgICAgICdkb20vRXZlbnRMaXN0ZW5l
ck1hcC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9FdmVudE5hbWVzLmNwcCcsCi0gICAgICAgICAg
ICAnZG9tL0V2ZW50UXVldWUuY3BwJywKICAgICAgICAgICAgICdkb20vRXZlbnRRdWV1ZS5oJywK
ICAgICAgICAgICAgICdkb20vRXZlbnRUYXJnZXQuY3BwJywKICAgICAgICAgICAgICdkb20vRXhj
ZXB0aW9uQmFzZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8g
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA4MjM0ZGYzYTBjN2MzMmI4MWIwYTgw
OWJjMDNmMzliZDBhNWZlZTVlLi5jMmM0NTc0N2YxYmEzZGIyNDYxODg0OWNhNzUzYzE2YTJlNWE5
MWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtNDg0LDYgKzQ4NCw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IGRvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwIFwKICAgICBkb20vRGV2aWNlT3Jp
ZW50YXRpb25FdmVudC5jcHAgXAogICAgIGRvbS9Eb2N1bWVudC5jcHAgXAorICAgIGRvbS9Eb2N1
bWVudEV2ZW50UXVldWUuY3BwIFwKICAgICBkb20vRG9jdW1lbnRGcmFnbWVudC5jcHAgXAogICAg
IGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIFwKICAgICBkb20vRG9jdW1lbnRNYXJr
ZXIuY3BwIFwKQEAgLTUwNiw3ICs1MDcsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vRXZlbnRM
aXN0ZW5lck1hcC5jcHAgXAogICAgIGRvbS9FdmVudE5hbWVzLmNwcCBcCiAgICAgZG9tL0V2ZW50
VGFyZ2V0LmNwcCBcCi0gICAgZG9tL0V2ZW50UXVldWUuY3BwIFwKICAgICBkb20vRXhjZXB0aW9u
QmFzZS5jcHAgXAogICAgIGRvbS9FeGNlcHRpb25Db2RlLmNwcCBcCiAgICAgZG9tL0V4Y2VwdGlv
bkNvZGVQbGFjZWhvbGRlci5jcHAgXApAQCAtMTU1Niw2ICsxNTU2LDcgQEAgSEVBREVSUyArPSBc
CiAgICAgZG9tL0V2ZW50RGlzcGF0Y2hNZWRpYXRvci5oIFwKICAgICBkb20vRXZlbnRMaXN0ZW5l
ck1hcC5oIFwKICAgICBkb20vRXZlbnROYW1lcy5oIFwKKyAgICBkb20vRXZlbnRRdWV1ZS5oIFwK
ICAgICBkb20vRXZlbnRUYXJnZXQuaCBcCiAgICAgZG9tL0V4Y2VwdGlvbkJhc2UuaCBcCiAgICAg
ZG9tL0V4Y2VwdGlvbkNvZGUuaCBcCkBAIC0yNjExLDYgKzI2MTIsNyBAQCBIRUFERVJTICs9IFwK
ICAgICB3b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5oIFwKICAgICB3b3JrZXJzL1NoYXJl
ZFdvcmtlci5oIFwKICAgICB3b3JrZXJzL1dvcmtlckNvbnRleHQuaCBcCisgICAgd29ya2Vycy9X
b3JrZXJFdmVudFF1ZXVlLmggXAogICAgIHdvcmtlcnMvV29ya2VyLmggXAogICAgIHdvcmtlcnMv
V29ya2VyTG9jYXRpb24uaCBcCiAgICAgd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oIFwK
QEAgLTMwMTUsNiArMzAxNyw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XT1JLRVJTPTEp
IHsKICAgICAgICAgd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwIFwKICAgICAgICAg
d29ya2Vycy9Xb3JrZXIuY3BwIFwKICAgICAgICAgd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcCBc
CisgICAgICAgIHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAgXAogICAgICAgICB3b3JrZXJz
L1dvcmtlckxvY2F0aW9uLmNwcCBcCiAgICAgICAgIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwIFwKICAgICAgICAgd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjIxYTg5
OTA2OWM5Nzc1M2NiMGFiZTU5MDkyNDE5ZjYxZTM3OGYxNi4uOWQ1MmExOGZhYWYxMDg2M2ZiYTc5
ODQ2MmZkMzFkNTI4N2I2ZDdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjkxMyw4ICsyOTEzLDcgQEAKIAkJOENBREYyQUIx
MzVDN0IzNjAwOUVGNDNGIC8qIExldmVsREJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOENBREYyQTUxMzVDN0IzNjAwOUVGNDNGIC8qIExl
dmVsREJEYXRhYmFzZS5oICovOyB9OwogCQk4Q0FERjJBRDEzNUM3QjM2MDA5RUY0M0YgLyogTGV2
ZWxEQkl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4Q0FERjJBNzEzNUM3QjM2MDA5RUY0M0YgLyogTGV2ZWxEQkl0ZXJhdG9yLmggKi87IH07
CiAJCThDQURGMkFFMTM1QzdCMzYwMDlFRjQzRiAvKiBMZXZlbERCU2xpY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhDQURGMkE4MTM1QzdCMzYwMDlF
RjQzRiAvKiBMZXZlbERCU2xpY2UuaCAqLzsgfTsKLQkJOEY2NzU2MUIxMjg4QjE3QjAwNDdBQ0Ez
IC8qIEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDhGNjc1NjE5MTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggKi87IH07Ci0J
CThGNjc1NjFDMTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhGNjc1NjFBMTI4OEIxN0IwMDQ3QUNB
MyAvKiBFdmVudFF1ZXVlLmNwcCAqLzsgfTsKKwkJOEY2NzU2MUIxMjg4QjE3QjAwNDdBQ0EzIC8q
IEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDhGNjc1NjE5MTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOEZBQzc3NEQxMTk4NzJDQjAw
MTVBRTk0IC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RjkzNEQ4NDExODlGMUVFMDA1MDhENUQgLyogSlNN
YWluVGhyZWFkRXhlY1N0YXRlLmNwcCAqLzsgfTsKIAkJOTAwMTc3NDAxMkUwMzQ3ODAwNjQ4NDYy
IC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTAwMTc3M0QxMkUwMzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5k
YXJkRGVyaXZhdGl2ZXMuY3BwICovOyB9OwogCQk5MDAxNzc0MTEyRTAzNDc4MDA2NDg0NjIgLyog
T0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTAwMTc3M0UxMkUwMzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVy
aXZhdGl2ZXMuaCAqLzsgfTsKQEAgLTMzNDYsNiArMzM0NSw4IEBACiAJCUExRTExNTQ0MTMwMTVD
M0QwMDU0QUM4QyAvKiBEaXN0YW50TGlnaHRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFFMTE1NDMxMzAxNUMzRDAwNTRBQzhDIC8qIERp
c3RhbnRMaWdodFNvdXJjZS5jcHAgKi87IH07CiAJCUExRTExNTQ2MTMwMTVDNEUwMDU0QUM4QyAv
KiBQb2ludExpZ2h0U291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExRTExNTQ1MTMwMTVDNEUwMDU0QUM4QyAvKiBQb2ludExpZ2h0U291cmNl
LmNwcCAqLzsgfTsKIAkJQTFFMTE1NDgxMzAxNUM1RDAwNTRBQzhDIC8qIFNwb3RMaWdodFNvdXJj
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUUx
MTU0NzEzMDE1QzVEMDA1NEFDOEMgLyogU3BvdExpZ2h0U291cmNlLmNwcCAqLzsgfTsKKwkJQTNC
QjU5RjMxNDU3QTQwRDAwQUM1NkZFIC8qIERvY3VtZW50RXZlbnRRdWV1ZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0JCNTlGMTE0NTdBNDBEMDBB
QzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCAqLzsgfTsKKwkJQTNCQjU5RjQxNDU3QTQw
RDAwQUM1NkZFIC8qIERvY3VtZW50RXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNCQjU5RjIxNDU3QTQwRDAwQUM1NkZFIC8qIERvY3Vt
ZW50RXZlbnRRdWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUE0MDlDOTg0MTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nlc3NpYmlsaXR5UHJvZ3Jl
c3NJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTQwOUM5ODIxMTZEMERERDAwNzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0lu
ZGljYXRvci5jcHAgKi87IH07CiAJCUE0MDlDOTg1MTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nlc3Np
YmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE0MDlDOTgzMTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nlc3NpYmlsaXR5
UHJvZ3Jlc3NJbmRpY2F0b3IuaCAqLzsgfTsKIAkJQTQyMjZFNUExMTYzRDY2NzAwOEI4Mzk3IC8q
IEpTSFRNTFByb2dyZXNzRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNDIyNkU1OTExNjNENjY3MDA4QjgzOTcgLyogSlNIVE1MUHJvZ3Jl
c3NFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTEwMDQ5LDcgKzEwMDUwLDYgQEAKIAkJOENBREYyQTcx
MzVDN0IzNjAwOUVGNDNGIC8qIExldmVsREJJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMZXZlbERCSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOENBREYyQTgxMzVDN0IzNjAwOUVGNDNGIC8qIExldmVsREJTbGljZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZXZlbERCU2xpY2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOEY2NzU2MTkxMjg4QjE3QjAwNDdBQ0EzIC8qIEV2ZW50UXVldWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRRdWV1ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk4RjY3NTYxQTEyODhCMTdCMDA0N0FDQTMgLyogRXZlbnRRdWV1
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudFF1ZXVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEY5MzREODMxMTg5RjFFRTAwNTA4RDVE
IC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU01haW5UaHJlYWRFeGVjU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOEY5MzREODQxMTg5RjFFRTAwNTA4RDVEIC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01haW5UaHJlYWRFeGVjU3Rh
dGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MDAxNzczRDEyRTAzNDc4MDA2
NDg0NjIgLyogT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcDsgcGF0aCA9IGNhbnZh
cy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTEwNDg3LDYgKzEwNDg3LDEwIEBACiAJCUExRTExNTQzMTMwMTVDM0QwMDU0QUM4QyAvKiBE
aXN0YW50TGlnaHRTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gRGlzdGFudExpZ2h0U291cmNlLmNwcDsgcGF0aCA9IGZpbHRlcnMvRGlzdGFudExpZ2h0U291
cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFFMTE1NDUxMzAxNUM0RTAw
NTRBQzhDIC8qIFBvaW50TGlnaHRTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gUG9pbnRMaWdodFNvdXJjZS5jcHA7IHBhdGggPSBmaWx0ZXJzL1BvaW50TGln
aHRTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUUxMTU0NzEzMDE1
QzVEMDA1NEFDOEMgLyogU3BvdExpZ2h0U291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFNwb3RMaWdodFNvdXJjZS5jcHA7IHBhdGggPSBmaWx0ZXJzL1Nwb3RM
aWdodFNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQkI1OUQ4MTQ1
NzlGMDYwMEFDNTZGRSAvKiBXb3JrZXJFdmVudFF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFdvcmtlckV2ZW50UXVldWUuY3BwOyBwYXRoID0gd29ya2Vycy9X
b3JrZXJFdmVudFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNCQjU5
RDkxNDU3OUYwNjAwQUM1NkZFIC8qIFdvcmtlckV2ZW50UXVldWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gV29ya2VyRXZlbnRRdWV1ZS5oOyBwYXRoID0gd29ya2Vycy9Xb3Jr
ZXJFdmVudFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQkI1OUYxMTQ1
N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRFdmVudFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTNCQjU5RjIxNDU3QTQwRDAwQUM1NkZFIC8qIERvY3VtZW50RXZl
bnRRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudEV2ZW50
UXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTQwOUM5ODIxMTZEMERERDAw
NzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNDA5Qzk4MzExNkQwREREMDA3MTk3
QkQgLyogQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNDIyNkU1OTExNjNENjY3MDA4QjgzOTcgLyogSlNIVE1M
UHJvZ3Jlc3NFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTSFRNTFByb2dyZXNzRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNDU1OCw2ICsxNDU2Miw4IEBACiAJCQkJMkU0MzQ2MzcwRjU0NkE4MjAwQjBGMUJBIC8qIFdv
cmtlckNvbnRleHQuaCAqLywKIAkJCQkyRTQzNDYzODBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
Q29udGV4dC5pZGwgKi8sCiAJCQkJMkU0MzQ2MzkwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckNv
bnRleHRQcm94eS5oICovLAorCQkJCUEzQkI1OUQ4MTQ1NzlGMDYwMEFDNTZGRSAvKiBXb3JrZXJF
dmVudFF1ZXVlLmNwcCAqLywKKwkJCQlBM0JCNTlEOTE0NTc5RjA2MDBBQzU2RkUgLyogV29ya2Vy
RXZlbnRRdWV1ZS5oICovLAogCQkJCTE4RjgzMUI3MEZENDhDNzgwMEQ4QzU2QiAvKiBXb3JrZXJM
b2FkZXJQcm94eS5oICovLAogCQkJCTJFNDM0NjNBMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJM
b2NhdGlvbi5jcHAgKi8sCiAJCQkJMkU0MzQ2M0IwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckxv
Y2F0aW9uLmggKi8sCkBAIC0yMDkwOCw2ICsyMDkxNCw4IEBACiAJCQkJQTgxODVGMzQwOTc2NTc2
NTAwNTgyNkQ5IC8qIERvY3VtZW50LmNwcCAqLywKIAkJCQlBODE4NUYzODA5NzY1NzY1MDA1ODI2
RDkgLyogRG9jdW1lbnQuaCAqLywKIAkJCQk2NTQ4RTI0ODA5RTFFMDREMDBBRjgwMjAgLyogRG9j
dW1lbnQuaWRsICovLAorCQkJCUEzQkI1OUYxMTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2
ZW50UXVldWUuY3BwICovLAorCQkJCUEzQkI1OUYyMTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVu
dEV2ZW50UXVldWUuaCAqLywKIAkJCQlBODE4NUYzNzA5NzY1NzY1MDA1ODI2RDkgLyogRG9jdW1l
bnRGcmFnbWVudC5jcHAgKi8sCiAJCQkJQTgxODVGMzUwOTc2NTc2NTAwNTgyNkQ5IC8qIERvY3Vt
ZW50RnJhZ21lbnQuaCAqLywKIAkJCQkxQTQ5NEVENTBBMTIzRjFBMDBGREFGQzEgLyogRG9jdW1l
bnRGcmFnbWVudC5pZGwgKi8sCkBAIC0yMDk2OSw3ICsyMDk3Nyw2IEBACiAJCQkJQUQ0NDk1RjIx
NDFGQzA4OTAwNTQxRURGIC8qIEV2ZW50TGlzdGVuZXJNYXAuaCAqLywKIAkJCQk5Mzk4ODVDMTA4
QjdFM0QxMDBFNzA3QzQgLyogRXZlbnROYW1lcy5jcHAgKi8sCiAJCQkJOTM5ODg1QzIwOEI3RTNE
MTAwRTcwN0M0IC8qIEV2ZW50TmFtZXMuaCAqLywKLQkJCQk4RjY3NTYxQTEyODhCMTdCMDA0N0FD
QTMgLyogRXZlbnRRdWV1ZS5jcHAgKi8sCiAJCQkJOEY2NzU2MTkxMjg4QjE3QjAwNDdBQ0EzIC8q
IEV2ZW50UXVldWUuaCAqLywKIAkJCQlFMTJFREJFOTBCMzA4RTBCMDAyNzA0QjYgLyogRXZlbnRU
YXJnZXQuY3BwICovLAogCQkJCUUxMkVEQjdBMEIzMDhBNzgwMDI3MDRCNiAvKiBFdmVudFRhcmdl
dC5oICovLApAQCAtMjE0NTgsNiArMjE0NjUsNyBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxk
UGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJ
CQkJQTNCQjU5RjQxNDU3QTQwRDAwQUM1NkZFIC8qIERvY3VtZW50RXZlbnRRdWV1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzEwNjAzNzAxNDMyN0QyRTAwQUJGNEJBIC8qIFdlYktpdENTU0ZpbHRl
clZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBODAwQzBBMTk1MTZFMDBBOEVGNUYgLyog
U3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTgwMDcwQTE5NTE2RTAwQThFRjVG
IC8qIENTU1N0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLApAQCAtMjU0NzQsNyArMjU0ODIsNiBA
QAogCQkJCUFENDQ5NUYzMTQxRkMwODkwMDU0MUVERiAvKiBFdmVudExpc3RlbmVyTWFwLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFDQTE5RTA1MERDMjU1OTUwMDY1QTk5NCAvKiBFdmVudExvb3BN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4ODVDMzA4QjdFM0QxMDBFNzA3QzQgLyogRXZl
bnROYW1lcy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk4RjY3NTYxQzEyODhCMTdCMDA0N0FDQTMg
LyogRXZlbnRRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMEZFRjM3MkIyN0M1M0VBQzFD
MUZCRUUgLyogRXZlbnRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyRURCRUEwQjMw
OEUwQjAwMjcwNEI2IC8qIEV2ZW50VGFyZ2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjBE
OEYyMEQyQTExRTAwMEI5OTE4RiAvKiBFeGNlcHRpb25CYXNlLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMjczMzEsNiArMjczMzgsNyBAQAogCQkJCTk3NjY1MDRGMTQ0RkJGRkUwMEY2QkI1MSAvKiBF
dmVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTBFRTBERjUxNDRGODI1NTAwRjgw
QjBEIC8qIFdlYkdMRGVidWdSZW5kZXJlckluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTBF
RTBERjcxNDRGODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdTaGFkZXJzLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUEzQkI1OUYzMTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50UXVldWUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxs
SW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAppbmRleCBmODI1
ZGEwNzFjNTc2ODlmY2M5MmY4YmM0ZWZkYTAzYmEyZmM3Y2EyLi5jZWFlZjA5ZTc3NTAxNWQ1ODhm
ODgzMjlhMzllYTc5OGIwMTk4MWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
QWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKQEAg
LTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3Bw
IgogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmNwcCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuY3BwIgogI2luY2x1ZGUgIkRv
Y3VtZW50RnJhZ21lbnQuY3BwIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyLmNwcCIKICNpbmNs
dWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIgpAQCAtNzMsNyArNzQsNiBAQAogI2lu
Y2x1ZGUgIkV2ZW50RGlzcGF0Y2hlci5jcHAiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lck1hcC5j
cHAiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5jcHAiCi0jaW5jbHVkZSAiRXZlbnRRdWV1ZS5jcHAi
CiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuY3BwIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkJhc2UuY3Bw
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5k
ZXggZDkwZmYyMWRlZTBjNGI0ZDU4MWM2NTczNDlkZjU4Y2VkMDRhNmI3ZS4uOGZiM2YzZjlkMzM1
MzgyMjU0YTIzMTE2YTBkYTNmNTY5MDBlYzc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiRGV2aWNlTW90aW9uRXZlbnQuaCIKICNpbmNsdWRl
ICJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEZXZpY2VPcmllbnRh
dGlvbkV2ZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCkBAIC02NCw3ICs2NSw2IEBACiAjaW5jbHVk
ZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZvcm1B
c3NvY2lhdGVkRWxlbWVudC5oIgpAQCAtMzkwLDcgKzM5MCw3IEBAIERvY3VtZW50OjpEb2N1bWVu
dChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRN
TCkKICAgICAsIG1faXNWaWV3U291cmNlKGZhbHNlKQogICAgICwgbV9zYXdFbGVtZW50c0luS25v
d25OYW1lc3BhY2VzKGZhbHNlKQogICAgICwgbV91c2luZ0dlb2xvY2F0aW9uKGZhbHNlKQotICAg
ICwgbV9ldmVudFF1ZXVlKEV2ZW50UXVldWU6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fZXZlbnRR
dWV1ZShEb2N1bWVudEV2ZW50UXVldWU6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fd2Vha1JlZmVy
ZW5jZShEb2N1bWVudFdlYWtSZWZlcmVuY2U6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1faWRBdHRy
aWJ1dGVOYW1lKGlkQXR0cikKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCmluZGV4IDJkNThjNWUwNDQ3Y2NlYjczZDU2NTFjOTZmYmU3Y2I4ZjE5Nzk5MjYuLjQx
NTNkNDczODVjYzc0NTVhZTcwYjIwOTBjZjgyMDcyZGVjNDY5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ29sbGVjdGlvblR5cGUuaCIKICNpbmNs
dWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkRPTVRpbWVTdGFtcC5oIgorI2luY2x1ZGUgIkRvY3Vt
ZW50RXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCiAjaW5jbHVkZSAi
SWNvblVSTC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTgxLDcgKzgyLDYgQEAgY2xhc3Mg
RWxlbWVudDsKIGNsYXNzIEVudGl0eVJlZmVyZW5jZTsKIGNsYXNzIEV2ZW50OwogY2xhc3MgRXZl
bnRMaXN0ZW5lcjsKLWNsYXNzIEV2ZW50UXVldWU7CiBjbGFzcyBGb250RGF0YTsKIGNsYXNzIEZv
cm1Bc3NvY2lhdGVkRWxlbWVudDsKIGNsYXNzIEZyYW1lOwpAQCAtMTAzMCw3ICsxMDMwLDcgQEAg
cHVibGljOgogICAgIHZvaWQgZW5xdWV1ZVBhZ2VzaG93RXZlbnQoUGFnZXNob3dFdmVudFBlcnNp
c3RlbmNlKTsKICAgICB2b2lkIGVucXVldWVIYXNoY2hhbmdlRXZlbnQoY29uc3QgU3RyaW5nJiBv
bGRVUkwsIGNvbnN0IFN0cmluZyYgbmV3VVJMKTsKICAgICB2b2lkIGVucXVldWVQb3BzdGF0ZUV2
ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCk7Ci0gICAg
RXZlbnRRdWV1ZSogZXZlbnRRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRRdWV1ZS5nZXQo
KTsgfQorICAgIHZpcnR1YWwgRG9jdW1lbnRFdmVudFF1ZXVlKiBldmVudFF1ZXVlKCkgY29uc3Qg
eyByZXR1cm4gbV9ldmVudFF1ZXVlLmdldCgpOyB9CiAKICAgICB2b2lkIGFkZE1lZGlhQ2FuU3Rh
cnRMaXN0ZW5lcihNZWRpYUNhblN0YXJ0TGlzdGVuZXIqKTsKICAgICB2b2lkIHJlbW92ZU1lZGlh
Q2FuU3RhcnRMaXN0ZW5lcihNZWRpYUNhblN0YXJ0TGlzdGVuZXIqKTsKQEAgLTEzNzAsNyArMTM3
MCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fdXNpbmdHZW9sb2NhdGlvbjsKIAotICAgIFJl
ZlB0cjxFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7CisgICAgUmVmUHRyPERvY3VtZW50RXZlbnRR
dWV1ZT4gbV9ldmVudFF1ZXVlOwogCiAgICAgUmVmUHRyPERvY3VtZW50V2Vha1JlZmVyZW5jZT4g
bV93ZWFrUmVmZXJlbmNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdlZGYyNGY4OGE2NjQ1YmU2ZGI5MmJjNmRjNTRiMTgyNDc3YzA5YzUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVl
LmNwcApAQCAtMCwwICsxLDE1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1ZS5oIgorCisjaW5jbHVkZSAiRE9NV2luZG93
LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKKyNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU3VzcGVuZGFibGVU
aW1lci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitzdGF0aWMgaW5saW5lIGJvb2wg
c2hvdWxkRGlzcGF0Y2hTY3JvbGxFdmVudFN5bmNocm9ub3VzbHkoRG9jdW1lbnQqIGRvY3VtZW50
KQoreworICAgIEFTU0VSVF9BUkcoZG9jdW1lbnQsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYXBw
bGljYXRpb25Jc1NhZmFyaSgpICYmIChkb2N1bWVudC0+dXJsKCkucHJvdG9jb2xJcygiZmVlZCIp
IHx8IGRvY3VtZW50LT51cmwoKS5wcm90b2NvbElzKCJmZWVkcyIpKTsKK30KKworY2xhc3MgRG9j
dW1lbnRFdmVudFF1ZXVlVGltZXIgOiBwdWJsaWMgU3VzcGVuZGFibGVUaW1lciB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoRG9jdW1lbnRFdmVudFF1ZXVlVGltZXIpOworcHVibGljOgorICAg
IERvY3VtZW50RXZlbnRRdWV1ZVRpbWVyKERvY3VtZW50RXZlbnRRdWV1ZSogZXZlbnRRdWV1ZSwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICAgICAgOiBTdXNwZW5kYWJsZVRp
bWVyKGNvbnRleHQpCisgICAgICAgICwgbV9ldmVudFF1ZXVlKGV2ZW50UXVldWUpIHsgfQorCitw
cml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpIHsgbV9ldmVudFF1ZXVlLT5wZW5kaW5n
RXZlbnRUaW1lckZpcmVkKCk7IH0KKyAgICBEb2N1bWVudEV2ZW50UXVldWUqIG1fZXZlbnRRdWV1
ZTsKK307CisKK1Bhc3NSZWZQdHI8RG9jdW1lbnRFdmVudFF1ZXVlPiBEb2N1bWVudEV2ZW50UXVl
dWU6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRG9jdW1lbnRFdmVudFF1ZXVlKGNvbnRleHQpKTsKK30KKworRG9jdW1l
bnRFdmVudFF1ZXVlOjpEb2N1bWVudEV2ZW50UXVldWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKKyAgICA6IG1fcGVuZGluZ0V2ZW50VGltZXIoYWRvcHRQdHIobmV3IERvY3VtZW50
RXZlbnRRdWV1ZVRpbWVyKHRoaXMsIGNvbnRleHQpKSkKKyAgICAsIG1faXNDbG9zZWQoZmFsc2Up
Cit7Cit9CisKK0RvY3VtZW50RXZlbnRRdWV1ZTo6fkRvY3VtZW50RXZlbnRRdWV1ZSgpCit7Cit9
CisKK3ZvaWQgRG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVu
dD4gZXZlbnQpCit7CisgICAgaWYgKG1faXNDbG9zZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IEFTU0VSVChldmVudC0+dGFyZ2V0KCkpOworICAgIGJvb2wgd2FzQWRkZWQgPSBtX3F1ZXVlZEV2
ZW50cy5hZGQoZXZlbnQpLnNlY29uZDsKKyAgICBBU1NFUlRfVU5VU0VEKHdhc0FkZGVkLCB3YXNB
ZGRlZCk7IC8vIEl0IHNob3VsZCBub3QgaGF2ZSBhbHJlYWR5IGJlZW4gaW4gdGhlIGxpc3QuCisg
ICAgCisgICAgaWYgKCFtX3BlbmRpbmdFdmVudFRpbWVyLT5pc0FjdGl2ZSgpKQorICAgICAgICBt
X3BlbmRpbmdFdmVudFRpbWVyLT5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgRG9jdW1lbnRF
dmVudFF1ZXVlOjplbnF1ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KFBhc3NSZWZQdHI8Tm9kZT4g
dGFyZ2V0LCBTY3JvbGxFdmVudFRhcmdldFR5cGUgdGFyZ2V0VHlwZSkKK3sKKyAgICBpZiAoIXRh
cmdldC0+ZG9jdW1lbnQoKS0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpTQ1JPTExfTElTVEVO
RVIpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBQZXIgdGhlIFczQyBDU1NPTSBWaWV3IE1v
ZHVsZSwgc2Nyb2xsIGV2ZW50cyBmaXJlZCBhdCB0aGUgZG9jdW1lbnQgc2hvdWxkIGJ1YmJsZSwg
b3RoZXJzIHNob3VsZCBub3QuCisgICAgYm9vbCBjYW5CdWJibGUgPSB0YXJnZXRUeXBlID09IFNj
cm9sbEV2ZW50RG9jdW1lbnRUYXJnZXQ7CisgICAgUmVmUHRyPEV2ZW50PiBzY3JvbGxFdmVudCA9
IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNjcm9sbEV2ZW50LCBjYW5CdWJibGUsIGZhbHNl
IC8qIG5vbiBjYW5jZWxsZWFibGUgKi8pOworICAgICAKKyAgICBpZiAoc2hvdWxkRGlzcGF0Y2hT
Y3JvbGxFdmVudFN5bmNocm9ub3VzbHkodGFyZ2V0LT5kb2N1bWVudCgpKSkgeworICAgICAgICB0
YXJnZXQtPmRpc3BhdGNoRXZlbnQoc2Nyb2xsRXZlbnQucmVsZWFzZSgpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmICghbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHMuYWRk
KHRhcmdldC5nZXQoKSkuc2Vjb25kKQorICAgICAgICByZXR1cm47CisKKyAgICBzY3JvbGxFdmVu
dC0+c2V0VGFyZ2V0KHRhcmdldCk7CisgICAgZW5xdWV1ZUV2ZW50KHNjcm9sbEV2ZW50LnJlbGVh
c2UoKSk7Cit9CisKK2Jvb2wgRG9jdW1lbnRFdmVudFF1ZXVlOjpjYW5jZWxFdmVudChFdmVudCog
ZXZlbnQpCit7CisgICAgYm9vbCBmb3VuZCA9IG1fcXVldWVkRXZlbnRzLmNvbnRhaW5zKGV2ZW50
KTsKKyAgICBtX3F1ZXVlZEV2ZW50cy5yZW1vdmUoZXZlbnQpOworICAgIGlmIChtX3F1ZXVlZEV2
ZW50cy5pc0VtcHR5KCkpCisgICAgICAgIG1fcGVuZGluZ0V2ZW50VGltZXItPnN0b3AoKTsKKyAg
ICByZXR1cm4gZm91bmQ7Cit9CisKK3ZvaWQgRG9jdW1lbnRFdmVudFF1ZXVlOjpjbG9zZSgpCit7
CisgICAgbV9pc0Nsb3NlZCA9IHRydWU7CisgICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3RvcCgp
OworICAgIG1fcXVldWVkRXZlbnRzLmNsZWFyKCk7Cit9CisKK3ZvaWQgRG9jdW1lbnRFdmVudFF1
ZXVlOjpwZW5kaW5nRXZlbnRUaW1lckZpcmVkKCkKK3sKKyAgICBBU1NFUlQoIW1fcGVuZGluZ0V2
ZW50VGltZXItPmlzQWN0aXZlKCkpOworICAgIEFTU0VSVCghbV9xdWV1ZWRFdmVudHMuaXNFbXB0
eSgpKTsKKworICAgIG1fbm9kZXNXaXRoUXVldWVkU2Nyb2xsRXZlbnRzLmNsZWFyKCk7CisKKyAg
ICAvLyBJbnNlcnQgYSBtYXJrZXIgZm9yIHdoZXJlIHdlIHNob3VsZCBzdG9wLgorICAgIEFTU0VS
VCghbV9xdWV1ZWRFdmVudHMuY29udGFpbnMoMCkpOworICAgIGJvb2wgd2FzQWRkZWQgPSBtX3F1
ZXVlZEV2ZW50cy5hZGQoMCkuc2Vjb25kOworICAgIEFTU0VSVF9VTlVTRUQod2FzQWRkZWQsIHdh
c0FkZGVkKTsgLy8gSXQgc2hvdWxkIG5vdCBoYXZlIGFscmVhZHkgYmVlbiBpbiB0aGUgbGlzdC4K
KworICAgIFJlZlB0cjxEb2N1bWVudEV2ZW50UXVldWU+IHByb3RlY3Rvcih0aGlzKTsKKworICAg
IHdoaWxlICghbV9xdWV1ZWRFdmVudHMuaXNFbXB0eSgpKSB7CisgICAgICAgIExpc3RIYXNoU2V0
PFJlZlB0cjxFdmVudD4gPjo6aXRlcmF0b3IgaXRlciA9IG1fcXVldWVkRXZlbnRzLmJlZ2luKCk7
CisgICAgICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSAqaXRlcjsKKyAgICAgICAgbV9xdWV1ZWRF
dmVudHMucmVtb3ZlKGl0ZXIpOworICAgICAgICBpZiAoIWV2ZW50KQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQuZ2V0KCkpOworICAgIH0KK30KKwordm9p
ZCBEb2N1bWVudEV2ZW50UXVldWU6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZl
bnQpCit7CisgICAgRXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0ID0gZXZlbnQtPnRhcmdldCgpOwor
ICAgIGlmIChldmVudFRhcmdldC0+dG9ET01XaW5kb3coKSkKKyAgICAgICAgZXZlbnRUYXJnZXQt
PnRvRE9NV2luZG93KCktPmRpc3BhdGNoRXZlbnQoZXZlbnQsIDApOworICAgIGVsc2UKKyAgICAg
ICAgZXZlbnRUYXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOworfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYThkM2JmYjg0ZjYzNTEzYTIw
OWUwMWNmZWU1YmY5NTkyYzYzN2FmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLwor
CisjaWZuZGVmIERvY3VtZW50RXZlbnRRdWV1ZV9oCisjZGVmaW5lIERvY3VtZW50RXZlbnRRdWV1
ZV9oCisKKyNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
KyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRXZlbnQ7CitjbGFzcyBEb2N1bWVudEV2ZW50UXVl
dWVUaW1lcjsKK2NsYXNzIE5vZGU7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitj
bGFzcyBEb2N1bWVudEV2ZW50UXVldWUgOiBwdWJsaWMgUmVmQ291bnRlZDxEb2N1bWVudEV2ZW50
UXVldWU+LCBwdWJsaWMgRXZlbnRRdWV1ZSB7CitwdWJsaWM6CisgICAgZW51bSBTY3JvbGxFdmVu
dFRhcmdldFR5cGUgeworICAgICAgICBTY3JvbGxFdmVudERvY3VtZW50VGFyZ2V0LAorICAgICAg
ICBTY3JvbGxFdmVudEVsZW1lbnRUYXJnZXQKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RG9jdW1lbnRFdmVudFF1ZXVlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwor
ICAgIHZpcnR1YWwgfkRvY3VtZW50RXZlbnRRdWV1ZSgpOworCisgICAgLy8gRXZlbnRRdWV1ZQor
ICAgIHZpcnR1YWwgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOworICAgIHZp
cnR1YWwgYm9vbCBjYW5jZWxFdmVudChFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgp
OworCisgICAgdm9pZCBlbnF1ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KFBhc3NSZWZQdHI8Tm9k
ZT4sIFNjcm9sbEV2ZW50VGFyZ2V0VHlwZSk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRG9j
dW1lbnRFdmVudFF1ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworICAgIHZvaWQgcGVu
ZGluZ0V2ZW50VGltZXJGaXJlZCgpOworICAgIHZvaWQgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRy
PEV2ZW50Pik7CisKKyAgICBPd25QdHI8RG9jdW1lbnRFdmVudFF1ZXVlVGltZXI+IG1fcGVuZGlu
Z0V2ZW50VGltZXI7CisgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPEV2ZW50PiA+IG1fcXVldWVkRXZl
bnRzOworICAgIEhhc2hTZXQ8Tm9kZSo+IG1fbm9kZXNXaXRoUXVldWVkU2Nyb2xsRXZlbnRzOwor
ICAgIGJvb2wgbV9pc0Nsb3NlZDsKKworICAgIGZyaWVuZCBjbGFzcyBEb2N1bWVudEV2ZW50UXVl
dWVUaW1lcjsgICAgCit9OworCit9CisKKyNlbmRpZiAvLyBEb2N1bWVudEV2ZW50UXVldWVfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50UXVldWUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBi
MGVlMjc3MjFmNDFiOGNjMGMxYmRmZTU3M2MyNDgyY2Q5NDk1ZTdkLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1
ZXVlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICoKLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgotCi0jaW5jbHVkZSAi
RE9NV2luZG93LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFdmVudC5oIgot
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVj
a3MuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU3Vz
cGVuZGFibGVUaW1lci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1zdGF0aWMgaW5s
aW5lIGJvb2wgc2hvdWxkRGlzcGF0Y2hTY3JvbGxFdmVudFN5bmNocm9ub3VzbHkoRG9jdW1lbnQq
IGRvY3VtZW50KQotewotICAgIEFTU0VSVF9BUkcoZG9jdW1lbnQsIGRvY3VtZW50KTsKLSAgICBy
ZXR1cm4gYXBwbGljYXRpb25Jc1NhZmFyaSgpICYmIChkb2N1bWVudC0+dXJsKCkucHJvdG9jb2xJ
cygiZmVlZCIpIHx8IGRvY3VtZW50LT51cmwoKS5wcm90b2NvbElzKCJmZWVkcyIpKTsKLX0KLQot
Y2xhc3MgRXZlbnRRdWV1ZVRpbWVyIDogcHVibGljIFN1c3BlbmRhYmxlVGltZXIgewotICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEV2ZW50UXVldWVUaW1lcik7Ci1wdWJsaWM6Ci0gICAgRXZlbnRR
dWV1ZVRpbWVyKEV2ZW50UXVldWUqIGV2ZW50UXVldWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCi0gICAgICAgIDogU3VzcGVuZGFibGVUaW1lcihjb250ZXh0KQotICAgICAgICAs
IG1fZXZlbnRRdWV1ZShldmVudFF1ZXVlKSB7IH0KLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZv
aWQgZmlyZWQoKSB7IG1fZXZlbnRRdWV1ZS0+cGVuZGluZ0V2ZW50VGltZXJGaXJlZCgpOyB9Ci0g
ICAgRXZlbnRRdWV1ZSogbV9ldmVudFF1ZXVlOyAgICAKLX07Ci0KLVBhc3NSZWZQdHI8RXZlbnRR
dWV1ZT4gRXZlbnRRdWV1ZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFdmVudFF1ZXVlKGNvbnRleHQpKTsKLX0KLQot
RXZlbnRRdWV1ZTo6RXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQot
ICAgIDogbV9wZW5kaW5nRXZlbnRUaW1lcihhZG9wdFB0cihuZXcgRXZlbnRRdWV1ZVRpbWVyKHRo
aXMsIGNvbnRleHQpKSkKLSAgICAsIG1faXNDbG9zZWQoZmFsc2UpCi17Ci19Ci0KLUV2ZW50UXVl
dWU6On5FdmVudFF1ZXVlKCkKLXsKLX0KLQotdm9pZCBFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQo
UGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCi17Ci0gICAgaWYgKG1faXNDbG9zZWQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIEFTU0VSVChldmVudC0+dGFyZ2V0KCkpOwotICAgIGJvb2wgd2FzQWRk
ZWQgPSBtX3F1ZXVlZEV2ZW50cy5hZGQoZXZlbnQpLnNlY29uZDsKLSAgICBBU1NFUlRfVU5VU0VE
KHdhc0FkZGVkLCB3YXNBZGRlZCk7IC8vIEl0IHNob3VsZCBub3QgaGF2ZSBhbHJlYWR5IGJlZW4g
aW4gdGhlIGxpc3QuCi0gICAgCi0gICAgaWYgKCFtX3BlbmRpbmdFdmVudFRpbWVyLT5pc0FjdGl2
ZSgpKQotICAgICAgICBtX3BlbmRpbmdFdmVudFRpbWVyLT5zdGFydE9uZVNob3QoMCk7Ci19Ci0K
LXZvaWQgRXZlbnRRdWV1ZTo6ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChQYXNzUmVmUHRy
PE5vZGU+IHRhcmdldCwgU2Nyb2xsRXZlbnRUYXJnZXRUeXBlIHRhcmdldFR5cGUpCi17Ci0gICAg
aWYgKCF0YXJnZXQtPmRvY3VtZW50KCktPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6U0NST0xM
X0xJU1RFTkVSKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gUGVyIHRoZSBXM0MgQ1NTT00g
VmlldyBNb2R1bGUsIHNjcm9sbCBldmVudHMgZmlyZWQgYXQgdGhlIGRvY3VtZW50IHNob3VsZCBi
dWJibGUsIG90aGVycyBzaG91bGQgbm90LgotICAgIGJvb2wgY2FuQnViYmxlID0gdGFyZ2V0VHlw
ZSA9PSBTY3JvbGxFdmVudERvY3VtZW50VGFyZ2V0OwotICAgIFJlZlB0cjxFdmVudD4gc2Nyb2xs
RXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zY3JvbGxFdmVudCwgY2FuQnViYmxl
LCBmYWxzZSAvKiBub24gY2FuY2VsbGVhYmxlICovKTsKLSAgICAgCi0gICAgaWYgKHNob3VsZERp
c3BhdGNoU2Nyb2xsRXZlbnRTeW5jaHJvbm91c2x5KHRhcmdldC0+ZG9jdW1lbnQoKSkpIHsKLSAg
ICAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KHNjcm9sbEV2ZW50LnJlbGVhc2UoKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIW1fbm9kZXNXaXRoUXVldWVkU2Nyb2xsRXZl
bnRzLmFkZCh0YXJnZXQuZ2V0KCkpLnNlY29uZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2Ny
b2xsRXZlbnQtPnNldFRhcmdldCh0YXJnZXQpOwotICAgIGVucXVldWVFdmVudChzY3JvbGxFdmVu
dC5yZWxlYXNlKCkpOwotfQotCi1ib29sIEV2ZW50UXVldWU6OmNhbmNlbEV2ZW50KEV2ZW50KiBl
dmVudCkKLXsKLSAgICBib29sIGZvdW5kID0gbV9xdWV1ZWRFdmVudHMuY29udGFpbnMoZXZlbnQp
OwotICAgIG1fcXVldWVkRXZlbnRzLnJlbW92ZShldmVudCk7Ci0gICAgaWYgKG1fcXVldWVkRXZl
bnRzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3RvcCgpOwotICAg
IHJldHVybiBmb3VuZDsKLX0KLQotdm9pZCBFdmVudFF1ZXVlOjpjbG9zZSgpCi17Ci0gICAgbV9p
c0Nsb3NlZCA9IHRydWU7Ci0gICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3RvcCgpOwotICAgIG1f
cXVldWVkRXZlbnRzLmNsZWFyKCk7Ci19Ci0KLXZvaWQgRXZlbnRRdWV1ZTo6cGVuZGluZ0V2ZW50
VGltZXJGaXJlZCgpCi17Ci0gICAgQVNTRVJUKCFtX3BlbmRpbmdFdmVudFRpbWVyLT5pc0FjdGl2
ZSgpKTsKLSAgICBBU1NFUlQoIW1fcXVldWVkRXZlbnRzLmlzRW1wdHkoKSk7Ci0KLSAgICBtX25v
ZGVzV2l0aFF1ZXVlZFNjcm9sbEV2ZW50cy5jbGVhcigpOwotCi0gICAgLy8gSW5zZXJ0IGEgbWFy
a2VyIGZvciB3aGVyZSB3ZSBzaG91bGQgc3RvcC4KLSAgICBBU1NFUlQoIW1fcXVldWVkRXZlbnRz
LmNvbnRhaW5zKDApKTsKLSAgICBib29sIHdhc0FkZGVkID0gbV9xdWV1ZWRFdmVudHMuYWRkKDAp
LnNlY29uZDsKLSAgICBBU1NFUlRfVU5VU0VEKHdhc0FkZGVkLCB3YXNBZGRlZCk7IC8vIEl0IHNo
b3VsZCBub3QgaGF2ZSBhbHJlYWR5IGJlZW4gaW4gdGhlIGxpc3QuCi0KLSAgICBSZWZQdHI8RXZl
bnRRdWV1ZT4gcHJvdGVjdG9yKHRoaXMpOwotCi0gICAgd2hpbGUgKCFtX3F1ZXVlZEV2ZW50cy5p
c0VtcHR5KCkpIHsKLSAgICAgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPEV2ZW50PiA+OjppdGVyYXRv
ciBpdGVyID0gbV9xdWV1ZWRFdmVudHMuYmVnaW4oKTsKLSAgICAgICAgUmVmUHRyPEV2ZW50PiBl
dmVudCA9ICppdGVyOwotICAgICAgICBtX3F1ZXVlZEV2ZW50cy5yZW1vdmUoaXRlcik7Ci0gICAg
ICAgIGlmICghZXZlbnQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGlzcGF0Y2hFdmVu
dChldmVudC5nZXQoKSk7Ci0gICAgfQotfQotCi12b2lkIEV2ZW50UXVldWU6OmRpc3BhdGNoRXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCi17Ci0gICAgRXZlbnRUYXJnZXQqIGV2ZW50VGFy
Z2V0ID0gZXZlbnQtPnRhcmdldCgpOwotICAgIGlmIChldmVudFRhcmdldC0+dG9ET01XaW5kb3co
KSkKLSAgICAgICAgZXZlbnRUYXJnZXQtPnRvRE9NV2luZG93KCktPmRpc3BhdGNoRXZlbnQoZXZl
bnQsIDApOwotICAgIGVsc2UKLSAgICAgICAgZXZlbnRUYXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZl
bnQpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuaAppbmRleCBjOTk3OTcyMDgxZWU1ZjJh
YWE1NWVjMGFjMDYxNGVkNDljOWUwMTU2Li4yZDI2YmUyYzdhYjUwNWMwNzEyNDEwMzhiZDg1YzIw
M2FlY2EzOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmgKQEAgLTI3LDQ4ICsyNywyMSBAQAog
I2lmbmRlZiBFdmVudFF1ZXVlX2gKICNkZWZpbmUgRXZlbnRRdWV1ZV9oCiAKKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL0xp
c3RIYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRXZlbnQ7Ci1jbGFzcyBFdmVu
dFF1ZXVlVGltZXI7Ci1jbGFzcyBOb2RlOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
IAotY2xhc3MgRXZlbnRRdWV1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEV2ZW50UXVldWU+IHsKK2Ns
YXNzIEV2ZW50UXVldWUgewogcHVibGljOgotICAgIGVudW0gU2Nyb2xsRXZlbnRUYXJnZXRUeXBl
IHsKLSAgICAgICAgU2Nyb2xsRXZlbnREb2N1bWVudFRhcmdldCwKLSAgICAgICAgU2Nyb2xsRXZl
bnRFbGVtZW50VGFyZ2V0Ci0gICAgfTsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50UXVl
dWU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0gICAgfkV2ZW50UXVldWUoKTsK
LQotICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKLSAgICB2b2lkIGVu
cXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiwgU2Nyb2xsRXZlbnRU
YXJnZXRUeXBlKTsKLSAgICBib29sIGNhbmNlbEV2ZW50KEV2ZW50Kik7Ci0KLSAgICAvLyBUaGUg
YWNjdW11bGF0ZWQgYW5kIGFsbCB0aGUgZnV0dXJlIGV2ZW50cyB3aWxsIGJlIGRpc2NhcmRlZCwg
bm8gZXZlbnRzIHdpbGwgYmUgZGlzcGF0Y2hlZCBhbnltb3JlLiAKLSAgICB2b2lkIGNsb3NlKCk7
Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgRXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7Ci0KLSAgICB2b2lkIHBlbmRpbmdFdmVudFRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIGRp
c3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwotCi0gICAgT3duUHRyPEV2ZW50UXVldWVU
aW1lcj4gbV9wZW5kaW5nRXZlbnRUaW1lcjsKLSAgICBMaXN0SGFzaFNldDxSZWZQdHI8RXZlbnQ+
ID4gbV9xdWV1ZWRFdmVudHM7Ci0gICAgSGFzaFNldDxOb2RlKj4gbV9ub2Rlc1dpdGhRdWV1ZWRT
Y3JvbGxFdmVudHM7Ci0gICAgYm9vbCBtX2lzQ2xvc2VkOwotCi0gICAgZnJpZW5kIGNsYXNzIEV2
ZW50UXVldWVUaW1lcjsgICAgCisgICAgdmlydHVhbCB+RXZlbnRRdWV1ZSgpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgY2FuY2VsRXZlbnQoRXZlbnQqKSA9IDA7CisgICAgLy8gVGhlIGFjY3VtdWxhdGVk
IGFuZCBhbGwgdGhlIGZ1dHVyZSBldmVudHMgd2lsbCBiZSBkaXNjYXJkZWQsIG5vIGV2ZW50cyB3
aWxsIGJlIGRpc3BhdGNoZWQgYW55bW9yZS4KKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSA9IDA7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApp
bmRleCBlMTZmYWI1ODI5NzU1YmQ2ZmU3OTQ1MWVjNDE5ZTNmZDc0OWNmNzg2Li4yMTgzMDRhNjA4
OTI5Yzc4M2FlN2NkNTE3NzJiMDhhNzMwODExZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTUyLDYgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIERPTVRpbWVyOwogICAgIGNsYXNzIERPTVVSTDsKICAgICBjbGFzcyBF
dmVudExpc3RlbmVyOworICAgIGNsYXNzIEV2ZW50UXVldWU7CiAgICAgY2xhc3MgRXZlbnRUYXJn
ZXQ7CiAgICAgY2xhc3MgTWVzc2FnZVBvcnQ7CiAgICAgY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwpA
QCAtMTczLDYgKzE3NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhZGp1
c3RNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgb2xkTWluaW11bVRpbWVySW50ZXJ2YWwpOwog
ICAgICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCgpIGNvbnN0OwogCisg
ICAgICAgIHZpcnR1YWwgRXZlbnRRdWV1ZSogZXZlbnRRdWV1ZSgpIGNvbnN0ID0gMDsKKwogICAg
IHByb3RlY3RlZDoKICAgICAgICAgLy8gRXhwbGljaXRseSBvdmVycmlkZSB0aGUgc2VjdXJpdHkg
b3JpZ2luIGZvciB0aGlzIHNjcmlwdCBjb250ZXh0LgogICAgICAgICAvLyBOb3RlOiBJdCBpcyBk
YW5nZXJvdXMgdG8gY2hhbmdlIHRoZSBzZWN1cml0eSBvcmlnaW4gb2YgYSBzY3JpcHQgY29udGV4
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGNlNjc0NGE2ZjYzZWZlMjU4
M2VlYWVlZWYwOWRhMTZjM2MzMDA1NWQuLmE1YmNmNzdmZTNjYmYwOTY0MjNmOGVmOWU3ODY5OGQ4
M2Q1ZGRiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTM0LDExICsz
NCwxMSBAQAogI2luY2x1ZGUgIkN1cnNvci5oIgogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1ZS5oIgogI2lu
Y2x1ZGUgIkRyYWdDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRHJhZ1N0YXRlLmgiCiAjaW5jbHVk
ZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkV2ZW50UXVl
dWUuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAj
aW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCkBAIC0zMTA3LDcgKzMxMDcsNyBAQCB2b2lkIEV2
ZW50SGFuZGxlcjo6c2VuZFNjcm9sbEV2ZW50KCkKIHsKICAgICBzZXRGcmFtZVdhc1Njcm9sbGVk
QnlVc2VyKCk7CiAgICAgaWYgKG1fZnJhbWUtPnZpZXcoKSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgp
KQotICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5ldmVudFF1ZXVlKCktPmVucXVldWVPckRp
c3BhdGNoU2Nyb2xsRXZlbnQobV9mcmFtZS0+ZG9jdW1lbnQoKSwgRXZlbnRRdWV1ZTo6U2Nyb2xs
RXZlbnREb2N1bWVudFRhcmdldCk7CisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmV2ZW50
UXVldWUoKS0+ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChtX2ZyYW1lLT5kb2N1bWVudCgp
LCBEb2N1bWVudEV2ZW50UXVldWU6OlNjcm9sbEV2ZW50RG9jdW1lbnRUYXJnZXQpOwogfQogCiB2
b2lkIEV2ZW50SGFuZGxlcjo6c2V0RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA1MTU2OGU1ZjhhMWE0MDMyMzI5ZTNl
MjI0MWNiNjhiMWRiYTNlNzQzLi43MDI2OTY0ZTgxMTRhZGY1MWE1YThmNDNmNmM0ZDc1YzljY2Yz
MmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTUwLDgg
KzUwLDggQEAKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ2hyb21l
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUu
aCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKLSNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCiAj
aW5jbHVkZSAiRmxvYXRQb2ludDNELmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVk
ZSAiRm9jdXNDb250cm9sbGVyLmgiCkBAIC0xNDQyLDcgKzE0NDIsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjpzY3JvbGxUbyhMYXlvdXRVbml0IHgsIExheW91dFVuaXQgeSkKIAogICAgIC8vIFNjaGVk
dWxlIHRoZSBzY3JvbGwgRE9NIGV2ZW50LgogICAgIGlmIChyZW5kZXJlcigpLT5ub2RlKCkpCi0g
ICAgICAgIHJlbmRlcmVyKCktPm5vZGUoKS0+ZG9jdW1lbnQoKS0+ZXZlbnRRdWV1ZSgpLT5lbnF1
ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KHJlbmRlcmVyKCktPm5vZGUoKSwgRXZlbnRRdWV1ZTo6
U2Nyb2xsRXZlbnRFbGVtZW50VGFyZ2V0KTsKKyAgICAgICAgcmVuZGVyZXIoKS0+bm9kZSgpLT5k
b2N1bWVudCgpLT5ldmVudFF1ZXVlKCktPmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQocmVu
ZGVyZXIoKS0+bm9kZSgpLCBEb2N1bWVudEV2ZW50UXVldWU6OlNjcm9sbEV2ZW50RWxlbWVudFRh
cmdldCk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3Qg
TGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNj
cm9sbEFsaWdubWVudCYgYWxpZ25ZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guY3BwCmluZGV4IGRkZjc5YzBmYjU4NTY1MDBlNDI1ZTcyZmRjYTUxY2I0YTlkYWMwNDEu
LjIwYTAwYjdlNGU1YTUzYzc5YTRmMjJlNjA0MGNhMWJkNWQxMjUyYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTM0LDggKzM0LDggQEAKICNpbmNs
dWRlICJDU1NGb250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuaCIKICNp
bmNsdWRlICJFdmVudEhhbmRsZXIuaCIKLSNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVk
ZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKQEAgLTYyMiw3ICs2MjIsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnNjcm9sbFRv
KGludCBuZXdPZmZzZXQpCiAKICAgICBtX2luZGV4T2Zmc2V0ID0gbmV3T2Zmc2V0OwogICAgIHJl
cGFpbnQoKTsKLSAgICBub2RlKCktPmRvY3VtZW50KCktPmV2ZW50UXVldWUoKS0+ZW5xdWV1ZU9y
RGlzcGF0Y2hTY3JvbGxFdmVudChub2RlKCksIEV2ZW50UXVldWU6OlNjcm9sbEV2ZW50RWxlbWVu
dFRhcmdldCk7CisgICAgbm9kZSgpLT5kb2N1bWVudCgpLT5ldmVudFF1ZXVlKCktPmVucXVldWVP
ckRpc3BhdGNoU2Nyb2xsRXZlbnQobm9kZSgpLCBEb2N1bWVudEV2ZW50UXVldWU6OlNjcm9sbEV2
ZW50RWxlbWVudFRhcmdldCk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyTGlzdEJveDo6aXRlbUhl
aWdodCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCmluZGV4IDdj
YmFmNWJmNTNjMmU0MmU3ZjMzZGNiNjZhMWJlYjE5MGYyNjEyNzMuLmE4ZDQ4NTNkY2Q5NTg1Mjg1
OWU3MTc3MGIxMGRlYTI4NWMxZGJhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJh
c2UuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKIAogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgorI2luY2x1ZGUgIkRv
Y3VtZW50RXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIklEQkFueS5oIgogI2luY2x1ZGUgIklEQkRh
dGFiYXNlQ2FsbGJhY2tzSW1wbC5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCmluZGV4IDkwYTYxZGE0MzFkN2ViNTU3ZGIw
OGUzNTY5NDdlMmE2OTBlMjkxNmIuLmY4ZmNjZThmZWY5YjU5ZjRjYmEyNTkyMjUwMTkzMDFmYzBi
ZTU5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcApAQCAtMzIsMTAgKzMy
LDEwIEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgorI2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkV2ZW50RXhj
ZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKLSNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yV2l0aFZh
bHVlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJREJFdmVudERpc3Bh
dGNoZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXgg
NTk1OWYzOTE0OGE5YzM1NzRkNDg1NjMzYTBlODlmNmM3NTMxZjMzNC4uZjNkZTQzYTkyNDYyMTQ2
Y2MxYTBlOTA2YmM0N2JkNGVmMzBiYzc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJU
cmFuc2FjdGlvbi5jcHAKQEAgLTI5LDggKzI5LDggQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRFdmVudFF1
ZXVlLmgiCiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJFdmVudFF1ZXVl
LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5oIgogI2luY2x1ZGUgIklEQkV2ZW50RGlzcGF0Y2hlci5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29udGV4dC5jcHAKaW5kZXggMDNkNDg4YzMzYmZhZTgwMGY5MDQ4ODA4ZmFh
YWIyM2UzNmEzZWEwNi4uYzg3ZjcxMmIxMTdiMmExMWQ4MjZmMDY5Njk0NTJhZGJhNTBkZjhmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCkBAIC01MDYsNiArNTA2
LDExIEBAIHZvaWQgV29ya2VyQ29udGV4dDo6bm90aWZ5T2JzZXJ2ZXJzT2ZTdG9wKCkKICAgICB9
CiB9CiAKK1dvcmtlckV2ZW50UXVldWUqIFdvcmtlckNvbnRleHQ6OmV2ZW50UXVldWUoKSBjb25z
dAoreworICAgIHJldHVybiBtX2V2ZW50UXVldWUuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckNvbnRleHQuaAppbmRleCBhYzQ1NzdiMjM2MWFjZDdkOTE2NTQwNzEzYmUzYTI1OTZl
YWU4MmVmLi41ZmRkNDcyZWExYTA4NmFjZThiM2ZmYjg5Y2Q1YjFmN2NhMGFmZWQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXb3JrZXJFdmVudFF1ZXVlLmgiCiAj
aW5jbHVkZSAiV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTExMCw2ICsxMTEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwg
TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4pOwor
ICAgICAgICB2aXJ0dWFsIFdvcmtlckV2ZW50UXVldWUqIGV2ZW50UXVldWUoKSBjb25zdDsKIAog
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgICAgICBOb3RpZmljYXRpb25DZW50ZXIqIHdl
YmtpdE5vdGlmaWNhdGlvbnMoKSBjb25zdDsKQEAgLTIxMiw2ICsyMTQsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKIAog
ICAgICAgICBIYXNoU2V0PE9ic2VydmVyKj4gbV93b3JrZXJPYnNlcnZlcnM7CisKKyAgICAgICAg
T3duUHRyPFdvcmtlckV2ZW50UXVldWU+IG1fZXZlbnRRdWV1ZTsKICAgICB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckV2ZW50UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44YTNlYzAxMWJlODk3YmUyNThmNmQ4MzUxYmNlYmMwOWFhMjcyYmYw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1
ZXVlLmNwcApAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldvcmtlckV2ZW50UXVldWUuaCIKKworI2luY2x1ZGUgIkRPTVdpbmRv
dy5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8V29ya2VyRXZlbnRRdWV1ZT4gV29ya2Vy
RXZlbnRRdWV1ZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJFdmVudFF1ZXVlKGNvbnRleHQpKTsKK30KKwor
V29ya2VyRXZlbnRRdWV1ZTo6V29ya2VyRXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQorICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCisgICAg
LCBtX2lzQ2xvc2VkKGZhbHNlKQoreworfQorCitXb3JrZXJFdmVudFF1ZXVlOjp+V29ya2VyRXZl
bnRRdWV1ZSgpCit7CisgICAgY2xvc2UoKTsKK30KKworY2xhc3MgV29ya2VyRXZlbnRRdWV1ZTo6
RXZlbnREaXNwYXRjaGVyVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxFdmVudERpc3BhdGNoZXJUYXNrPiBj
cmVhdGUoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIFdvcmtlckV2ZW50UXVldWUqIGV2ZW50UXVl
dWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV2ZW50RGlzcGF0Y2hlclRh
c2soZXZlbnQsIGV2ZW50UXVldWUpKTsKKyAgICB9CisKKyAgICB2b2lkIGRpc3BhdGNoRXZlbnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQorICAgIHsK
KyAgICAgICAgZXZlbnQtPnRhcmdldCgpLT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKKyAgICB7CisgICAgICAgIGlmIChtX2lzQ2FuY2VsbGVkKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBtX2V2ZW50UXVldWUtPnJlbW92ZUV2ZW50KG1fZXZlbnQuZ2V0KCkpOwor
ICAgICAgICBkaXNwYXRjaEV2ZW50KGNvbnRleHQsIG1fZXZlbnQpOworICAgIH0KKworICAgIHZv
aWQgY2FuY2VsKCkKKyAgICB7CisgICAgICAgIG1faXNDYW5jZWxsZWQgPSB0cnVlOworICAgICAg
ICBtX2V2ZW50LmNsZWFyKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIEV2ZW50RGlzcGF0Y2hl
clRhc2soUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIFdvcmtlckV2ZW50UXVldWUqIGV2ZW50UXVl
dWUpCisgICAgICAgIDogbV9ldmVudChldmVudCkKKyAgICAgICAgLCBtX2V2ZW50UXVldWUoZXZl
bnRRdWV1ZSkKKyAgICAgICAgLCBtX2lzQ2FuY2VsbGVkKGZhbHNlKQorICAgIHsKKyAgICB9CisK
KyAgICBSZWZQdHI8RXZlbnQ+IG1fZXZlbnQ7CisgICAgV29ya2VyRXZlbnRRdWV1ZSogbV9ldmVu
dFF1ZXVlOworICAgIGJvb2wgbV9pc0NhbmNlbGxlZDsKK307CisKK3ZvaWQgV29ya2VyRXZlbnRR
dWV1ZTo6cmVtb3ZlRXZlbnQoRXZlbnQqIGV2ZW50KQoreworICAgIG1fZXZlbnRUYXNrTWFwLnJl
bW92ZShldmVudCk7Cit9CisKK3ZvaWQgV29ya2VyRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KFBh
c3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50KQoreworICAgIGlmIChtX2lzQ2xvc2VkKQorICAgICAg
ICByZXR1cm47CisgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IHBycEV2ZW50OworICAgIE93blB0
cjxFdmVudERpc3BhdGNoZXJUYXNrPiB0YXNrID0gRXZlbnREaXNwYXRjaGVyVGFzazo6Y3JlYXRl
KGV2ZW50LCB0aGlzKTsKKyAgICBtX2V2ZW50VGFza01hcC5hZGQoZXZlbnQucmVsZWFzZSgpLCB0
YXNrLmdldCgpKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKHRhc2su
cmVsZWFzZSgpKTsKK30KKworYm9vbCBXb3JrZXJFdmVudFF1ZXVlOjpjYW5jZWxFdmVudChFdmVu
dCogZXZlbnQpCit7CisgICAgRXZlbnREaXNwYXRjaGVyVGFzayogdGFzayA9IG1fZXZlbnRUYXNr
TWFwLmdldChldmVudCk7CisgICAgaWYgKCF0YXNrKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgdGFzay0+Y2FuY2VsKCk7CisgICAgcmVtb3ZlRXZlbnQoZXZlbnQpOworICAgIHJldHVybiB0
cnVlOworfQorCit2b2lkIFdvcmtlckV2ZW50UXVldWU6OmNsb3NlKCkKK3sKKyAgICBtX2lzQ2xv
c2VkID0gdHJ1ZTsKKyAgICBmb3IgKEV2ZW50VGFza01hcDo6aXRlcmF0b3IgaXQgPSBtX2V2ZW50
VGFza01hcC5iZWdpbigpOyBpdCAhPSBtX2V2ZW50VGFza01hcC5lbmQoKTsgKytpdCkgeworICAg
ICAgICBFdmVudERpc3BhdGNoZXJUYXNrKiB0YXNrID0gaXQtPnNlY29uZDsKKyAgICAgICAgdGFz
ay0+Y2FuY2VsKCk7CisgICAgfQorICAgIG1fZXZlbnRUYXNrTWFwLmNsZWFyKCk7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Jk
MmE5YjQwN2ZiYzYwODBkMjMzMWNjNGRlZmRmNTMyOGEwMDcwZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oCkBAIC0wLDAgKzEsNjcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKgorICovCisKKyNpZm5kZWYgV29ya2VyRXZlbnRRdWV1ZV9oCisjZGVmaW5lIFdv
cmtlckV2ZW50UXVldWVfaAorCisjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgRXZlbnQ7CitjbGFzcyBOb2RlOworY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKKworY2xhc3MgV29ya2VyRXZlbnRRdWV1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdv
cmtlckV2ZW50UXVldWU+LCBwdWJsaWMgRXZlbnRRdWV1ZSB7CitwdWJsaWM6CisKKyAgICBzdGF0
aWMgUGFzc093blB0cjxXb3JrZXJFdmVudFF1ZXVlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopOworICAgIHZpcnR1YWwgfldvcmtlckV2ZW50UXVldWUoKTsKKworICAgIC8vIEV2ZW50
UXVldWUKKyAgICB2aXJ0dWFsIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsK
KyAgICB2aXJ0dWFsIGJvb2wgY2FuY2VsRXZlbnQoRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2UoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBXb3JrZXJFdmVudFF1ZXVlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICB2b2lkIHJlbW92ZUV2ZW50KEV2ZW50Kik7CisKKyAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAg
Ym9vbCBtX2lzQ2xvc2VkOworCisgICAgY2xhc3MgRXZlbnREaXNwYXRjaGVyVGFzazsKKyAgICB0
eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEV2ZW50PiwgRXZlbnREaXNwYXRjaGVyVGFzayo+IEV2ZW50
VGFza01hcDsKKyAgICBFdmVudFRhc2tNYXAgbV9ldmVudFRhc2tNYXA7Cit9OworCit9CisKKyNl
bmRpZiAvLyBXb3JrZXJFdmVudFF1ZXVlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112724</attachid>
            <date>2011-10-27 12:10:39 -0700</date>
            <delta_ts>2011-10-27 16:15:28 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-57789-20111027121038.patch</filename>
            <type>text/plain</type>
            <size>51453</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg2MTMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZTBhNDRmODBiYWIwOTA4
ZDJjZjgyMmRjYTI5MzRiMDY3NDJjMzgzLi5iZjJlNmFjMTU5NTBiNTRiMGZjYTY0YjllMzg1NmJh
MjRlNTA5YjQxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTEtMTAtMjQgIERhdmlk
IEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1vdmUgZXZlbnRxdWV1
ZSBmcm9tIERvY3VtZW50IHRvIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgc28gdGhhdCBpdCBjYW4g
YmUgYWNjZXNzZWQgZnJvbSB3b3JrZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01Nzc4OQorCisgICAgICAgIEV4dHJhY3QgaW50ZXJmYWNlIGZyb20g
RXZlbnRRdWV1ZSBhbmQgY3JlYXRlIHR3byBuZXcgc3ViY2xhc3NlczoKKyAgICAgICAgRG9jdW1l
bnRFdmVudFF1ZXVlIGFuZCBXb3JrZXJFdmVudFF1ZXVlLiAgRG9jdW1lbnRFdmVudFF1ZXVlIGlz
IHRoZQorICAgICAgICBvbGQgRXZlbnRRdWV1ZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHVzZXMgRE9N
VGltZXIoMCkgdG8gcG9zdCBhc3luYworICAgICAgICBldmVudHMuICBXb3JrZXJFdmVudFF1ZXVl
IHBvc3RzIGV2ZW50cyB0byBpdHMgdGhyZWFkJ3MgbWVzc2FnZSBsb29wLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhdmlkIExldmluLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtIEluZGV4ZWRE
QiB3aWxsIHVzZSB0aGlzIGJ1dCBpc24ndCByZWFkeSB5ZXQuICBJIGRvbid0CisgICAgICAgIGtu
b3cgb2YgYW55IG90aGVyIEFQSSBhdmFpbGFibGUgaW4gd29ya2VycyB0aGF0IEkgY2FuIHRlc3Qg
dGhpcyB3aXRoLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9ET01BbGxJbk9uZS5jcHA6
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6ZXZlbnRRdWV1ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50RXZlbnRRdWV1
ZS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5jcHAuCisg
ICAgICAgIChXZWJDb3JlOjpzaG91bGREaXNwYXRjaFNjcm9sbEV2ZW50U3luY2hyb25vdXNseSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWVUaW1lcjo6RG9jdW1lbnRFdmVu
dFF1ZXVlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlVGltZXI6
OmZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6RG9jdW1lbnRFdmVudFF1ZXVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6fkRvY3VtZW50RXZlbnRR
dWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVPckRpc3Bh
dGNoU2Nyb2xsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjpj
YW5jZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmNsb3Nl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6cGVuZGluZ0V2ZW50VGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmRpc3BhdGNo
RXZlbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuaC4KKyAgICAgICAgKiBkb20vRXZlbnRRdWV1
ZS5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICog
cGFnZS9FdmVudEhhbmRsZXIuY3BwOiBDaGFuZ2UgRXZlbnRRdWV1ZSB0byBEb2N1bWVudEV2ZW50
UXVldWUuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbmRTY3JvbGxFdmVudCk6
IENoYW5nZSBFdmVudFF1ZXVlIHRvIERvY3VtZW50RXZlbnRRdWV1ZS4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNj
cm9sbFRvKTogQ2hhbmdlIEV2ZW50UXVldWUgdG8gRG9jdW1lbnRFdmVudFF1ZXVlLgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxpc3RCb3g6OnNjcm9sbFRvKTogQ2hhbmdlIEV2ZW50UXVldWUgdG8gRG9jdW1lbnRFdmVudFF1
ZXVlLgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAqIHN0b3Jh
Z2UvSURCUmVxdWVzdC5jcHA6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHA6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckNvbnRleHQ6OmV2ZW50UXVldWUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29u
dGV4dC5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlckV2ZW50UXVldWU6OldvcmtlckV2ZW50UXVldWUpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6fldvcmtlckV2ZW50UXVldWUpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6RXZlbnREaXNwYXRjaGVyVGFzazo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlclRhc2s6OmRp
c3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6RXZlbnRE
aXNwYXRjaGVyVGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZl
bnRRdWV1ZTo6RXZlbnREaXNwYXRjaGVyVGFzazo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlclRhc2s6OkV2ZW50RGlzcGF0Y2hlclRh
c2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6cmVtb3ZlRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmNhbmNlbEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmNsb3NlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckV2ZW50UXVldWUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUu
aC4KKwogMjAxMS0xMC0yNyAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjk4NjEyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCBhYzgxMDc4ZDM3YjBhMjE2MjJmZDBkOGRiNmU3MDgxYmVjYTY4ZmRhLi42OWFlZWQ0NGE5OGVj
YjAyMDJkOGUwZjlkZGE2ZGVlM2I2ODUyN2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTMz
LDYgKzUzMyw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vRG9jdW1lbnQuY3BwCiAg
ICAgZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKICAgICBkb20vRG9jdW1lbnRNYXJr
ZXIuY3BwCisgICAgZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKICAgICBkb20vRG9jdW1lbnRG
cmFnbWVudC5jcHAKICAgICBkb20vRG9jdW1lbnRQYXJzZXIuY3BwCiAgICAgZG9tL0RvY3VtZW50
T3JkZXJlZE1hcC5jcHAKQEAgLTU1Miw3ICs1NTMsNiBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCiAgICAgZG9tL0V2ZW50TmFtZXMuY3BwCiAgICAg
ZG9tL0V2ZW50VGFyZ2V0LmNwcAotICAgIGRvbS9FdmVudFF1ZXVlLmNwcAogICAgIGRvbS9FeGNl
cHRpb25CYXNlLmNwcAogICAgIGRvbS9FeGNlcHRpb25Db2RlLmNwcAogICAgIGRvbS9FeGNlcHRp
b25Db2RlUGxhY2Vob2xkZXIuY3BwCkBAIC0yMDEzLDYgKzIwMTMsNyBAQCBJRiAoRU5BQkxFX1dP
UktFUlMpCiAgICAgICAgIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcAogICAgICAg
ICB3b3JrZXJzL1dvcmtlci5jcHAKICAgICAgICAgd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAor
ICAgICAgICB3b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwCiAgICAgICAgIHdvcmtlcnMvV29y
a2VyTG9jYXRpb24uY3BwCiAgICAgICAgIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3Bw
CiAgICAgICAgIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCmluZGV4IDExZjUxYjdiNzNhMDA3MmI1YzZkNjJlYWE0ZDhkNTcwMmMxZmQ3MjUuLjZj
ODQ4YzFiMWJmNmViNzU3MzY4MzAwNGU0MGEzYzFjM2JjNWQyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQpAQCAtMTE3Niw2ICsxMTc2LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50TWFya2VyQ29udHJvbGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRN
YXJrZXIuY3BwIFwKQEAgLTEyMjQsNyArMTIyNiw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggXAotCVNv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50UXVldWUuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkJhc2UuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQmFzZS5oIFwKQEAgLTM4OTksNiArMzkwMCw4IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250
ZXh0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmggXAogCVNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dFByb3h5LmggXAorCVNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRXZlbnRRdWV1ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMzdlYWVi
ZjkwNzg4N2UyMTI4NzBlNTVjYTBjZjAyYzk1ODk0ODljMC4uOTBmNzVkNjAzZDk1YmE2YzA5MTQ1
MzQ1Zjc5NThlNWVmMWQxNzI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTAzMyw2ICs1MDMzLDgg
QEAKICAgICAgICAgICAgICd3b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwJywKICAgICAgICAgICAg
ICd3b3JrZXJzL1dvcmtlckNvbnRleHQuaCcsCiAgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJD
b250ZXh0UHJveHkuaCcsCisgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNw
cCcsCisgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgnLAogICAgICAgICAg
ICAgJ3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaCcsCiAgICAgICAgICAgICAnd29ya2Vycy9X
b3JrZXJMb2NhdGlvbi5jcHAnLAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyTG9jYXRpb24u
aCcsCkBAIC01MTg5LDYgKzUxOTEsOCBAQAogICAgICAgICAgICAgJ2RvbS9EZXZpY2VPcmllbnRh
dGlvbkV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQu
aCcsCiAgICAgICAgICAgICAnZG9tL0RvY3VtZW50LmNwcCcsCisgICAgICAgICAgICAnZG9tL0Rv
Y3VtZW50RXZlbnRRdWV1ZS5jcHAnLAorICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudEV2ZW50UXVl
dWUuaCcsCiAgICAgICAgICAgICAnZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwJywKICAgICAgICAg
ICAgICdkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCcsCiAgICAgICAgICAgICAnZG9t
L0RvY3VtZW50TWFya2VyLmNwcCcsCkBAIC01MjE2LDcgKzUyMjAsNiBAQAogICAgICAgICAgICAg
J2RvbS9FdmVudEV4Y2VwdGlvbi5oJywKICAgICAgICAgICAgICdkb20vRXZlbnRMaXN0ZW5lck1h
cC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9FdmVudE5hbWVzLmNwcCcsCi0gICAgICAgICAgICAn
ZG9tL0V2ZW50UXVldWUuY3BwJywKICAgICAgICAgICAgICdkb20vRXZlbnRRdWV1ZS5oJywKICAg
ICAgICAgICAgICdkb20vRXZlbnRUYXJnZXQuY3BwJywKICAgICAgICAgICAgICdkb20vRXhjZXB0
aW9uQmFzZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA4MjM0ZGYzYTBjN2MzMmI4MWIwYTgwOWJj
MDNmMzliZDBhNWZlZTVlLi5jMmM0NTc0N2YxYmEzZGIyNDYxODg0OWNhNzUzYzE2YTJlNWE5MWVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnBybwpAQCAtNDg0LDYgKzQ4NCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGRv
bS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwIFwKICAgICBkb20vRGV2aWNlT3JpZW50
YXRpb25FdmVudC5jcHAgXAogICAgIGRvbS9Eb2N1bWVudC5jcHAgXAorICAgIGRvbS9Eb2N1bWVu
dEV2ZW50UXVldWUuY3BwIFwKICAgICBkb20vRG9jdW1lbnRGcmFnbWVudC5jcHAgXAogICAgIGRv
bS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIFwKICAgICBkb20vRG9jdW1lbnRNYXJrZXIu
Y3BwIFwKQEAgLTUwNiw3ICs1MDcsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vRXZlbnRMaXN0
ZW5lck1hcC5jcHAgXAogICAgIGRvbS9FdmVudE5hbWVzLmNwcCBcCiAgICAgZG9tL0V2ZW50VGFy
Z2V0LmNwcCBcCi0gICAgZG9tL0V2ZW50UXVldWUuY3BwIFwKICAgICBkb20vRXhjZXB0aW9uQmFz
ZS5jcHAgXAogICAgIGRvbS9FeGNlcHRpb25Db2RlLmNwcCBcCiAgICAgZG9tL0V4Y2VwdGlvbkNv
ZGVQbGFjZWhvbGRlci5jcHAgXApAQCAtMTU1Niw2ICsxNTU2LDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgZG9tL0V2ZW50RGlzcGF0Y2hNZWRpYXRvci5oIFwKICAgICBkb20vRXZlbnRMaXN0ZW5lck1h
cC5oIFwKICAgICBkb20vRXZlbnROYW1lcy5oIFwKKyAgICBkb20vRXZlbnRRdWV1ZS5oIFwKICAg
ICBkb20vRXZlbnRUYXJnZXQuaCBcCiAgICAgZG9tL0V4Y2VwdGlvbkJhc2UuaCBcCiAgICAgZG9t
L0V4Y2VwdGlvbkNvZGUuaCBcCkBAIC0yNjExLDYgKzI2MTIsNyBAQCBIRUFERVJTICs9IFwKICAg
ICB3b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5oIFwKICAgICB3b3JrZXJzL1NoYXJlZFdv
cmtlci5oIFwKICAgICB3b3JrZXJzL1dvcmtlckNvbnRleHQuaCBcCisgICAgd29ya2Vycy9Xb3Jr
ZXJFdmVudFF1ZXVlLmggXAogICAgIHdvcmtlcnMvV29ya2VyLmggXAogICAgIHdvcmtlcnMvV29y
a2VyTG9jYXRpb24uaCBcCiAgICAgd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oIFwKQEAg
LTMwMTUsNiArMzAxNyw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XT1JLRVJTPTEpIHsK
ICAgICAgICAgd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwIFwKICAgICAgICAgd29y
a2Vycy9Xb3JrZXIuY3BwIFwKICAgICAgICAgd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcCBcCisg
ICAgICAgIHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAgXAogICAgICAgICB3b3JrZXJzL1dv
cmtlckxvY2F0aW9uLmNwcCBcCiAgICAgICAgIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHku
Y3BwIFwKICAgICAgICAgd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjIxYTg5OTA2
OWM5Nzc1M2NiMGFiZTU5MDkyNDE5ZjYxZTM3OGYxNi4uOWQ1MmExOGZhYWYxMDg2M2ZiYTc5ODQ2
MmZkMzFkNTI4N2I2ZDdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjkxMyw4ICsyOTEzLDcgQEAKIAkJOENBREYyQUIxMzVD
N0IzNjAwOUVGNDNGIC8qIExldmVsREJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOENBREYyQTUxMzVDN0IzNjAwOUVGNDNGIC8qIExldmVs
REJEYXRhYmFzZS5oICovOyB9OwogCQk4Q0FERjJBRDEzNUM3QjM2MDA5RUY0M0YgLyogTGV2ZWxE
Qkl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4Q0FERjJBNzEzNUM3QjM2MDA5RUY0M0YgLyogTGV2ZWxEQkl0ZXJhdG9yLmggKi87IH07CiAJ
CThDQURGMkFFMTM1QzdCMzYwMDlFRjQzRiAvKiBMZXZlbERCU2xpY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhDQURGMkE4MTM1QzdCMzYwMDlFRjQz
RiAvKiBMZXZlbERCU2xpY2UuaCAqLzsgfTsKLQkJOEY2NzU2MUIxMjg4QjE3QjAwNDdBQ0EzIC8q
IEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDhGNjc1NjE5MTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggKi87IH07Ci0JCThG
Njc1NjFDMTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhGNjc1NjFBMTI4OEIxN0IwMDQ3QUNBMyAv
KiBFdmVudFF1ZXVlLmNwcCAqLzsgfTsKKwkJOEY2NzU2MUIxMjg4QjE3QjAwNDdBQ0EzIC8qIEV2
ZW50UXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDhGNjc1NjE5MTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOEZBQzc3NEQxMTk4NzJDQjAwMTVB
RTk0IC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RjkzNEQ4NDExODlGMUVFMDA1MDhENUQgLyogSlNNYWlu
VGhyZWFkRXhlY1N0YXRlLmNwcCAqLzsgfTsKIAkJOTAwMTc3NDAxMkUwMzQ3ODAwNjQ4NDYyIC8q
IE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTAwMTc3M0QxMkUwMzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJk
RGVyaXZhdGl2ZXMuY3BwICovOyB9OwogCQk5MDAxNzc0MTEyRTAzNDc4MDA2NDg0NjIgLyogT0VT
U3RhbmRhcmREZXJpdmF0aXZlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTAwMTc3M0UxMkUwMzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZh
dGl2ZXMuaCAqLzsgfTsKQEAgLTMzNDYsNiArMzM0NSw4IEBACiAJCUExRTExNTQ0MTMwMTVDM0Qw
MDU0QUM4QyAvKiBEaXN0YW50TGlnaHRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFFMTE1NDMxMzAxNUMzRDAwNTRBQzhDIC8qIERpc3Rh
bnRMaWdodFNvdXJjZS5jcHAgKi87IH07CiAJCUExRTExNTQ2MTMwMTVDNEUwMDU0QUM4QyAvKiBQ
b2ludExpZ2h0U291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExRTExNTQ1MTMwMTVDNEUwMDU0QUM4QyAvKiBQb2ludExpZ2h0U291cmNlLmNw
cCAqLzsgfTsKIAkJQTFFMTE1NDgxMzAxNUM1RDAwNTRBQzhDIC8qIFNwb3RMaWdodFNvdXJjZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUUxMTU0
NzEzMDE1QzVEMDA1NEFDOEMgLyogU3BvdExpZ2h0U291cmNlLmNwcCAqLzsgfTsKKwkJQTNCQjU5
RjMxNDU3QTQwRDAwQUM1NkZFIC8qIERvY3VtZW50RXZlbnRRdWV1ZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0JCNTlGMTE0NTdBNDBEMDBBQzU2
RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCAqLzsgfTsKKwkJQTNCQjU5RjQxNDU3QTQwRDAw
QUM1NkZFIC8qIERvY3VtZW50RXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTNCQjU5RjIxNDU3QTQwRDAwQUM1NkZFIC8qIERvY3VtZW50
RXZlbnRRdWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUE0MDlDOTg0MTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJ
bmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTQwOUM5ODIxMTZEMERERDAwNzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGlj
YXRvci5jcHAgKi87IH07CiAJCUE0MDlDOTg1MTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nlc3NpYmls
aXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE0MDlDOTgzMTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nlc3NpYmlsaXR5UHJv
Z3Jlc3NJbmRpY2F0b3IuaCAqLzsgfTsKIAkJQTQyMjZFNUExMTYzRDY2NzAwOEI4Mzk3IC8qIEpT
SFRNTFByb2dyZXNzRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNDIyNkU1OTExNjNENjY3MDA4QjgzOTcgLyogSlNIVE1MUHJvZ3Jlc3NF
bGVtZW50LmNwcCAqLzsgfTsKQEAgLTEwMDQ5LDcgKzEwMDUwLDYgQEAKIAkJOENBREYyQTcxMzVD
N0IzNjAwOUVGNDNGIC8qIExldmVsREJJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBMZXZlbERCSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOENBREYyQTgxMzVDN0IzNjAwOUVGNDNGIC8qIExldmVsREJTbGljZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMZXZlbERCU2xpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOEY2NzU2MTkxMjg4QjE3QjAwNDdBQ0EzIC8qIEV2ZW50UXVldWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRRdWV1ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk4RjY3NTYxQTEyODhCMTdCMDA0N0FDQTMgLyogRXZlbnRRdWV1ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudFF1ZXVlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEY5MzREODMxMTg5RjFFRTAwNTA4RDVEIC8q
IEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU01haW5UaHJlYWRFeGVjU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OEY5MzREODQxMTg5RjFFRTAwNTA4RDVEIC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01haW5UaHJlYWRFeGVjU3RhdGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MDAxNzczRDEyRTAzNDc4MDA2NDg0
NjIgLyogT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcDsgcGF0aCA9IGNhbnZhcy9P
RVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEwNDg3LDYgKzEwNDg3LDEwIEBACiAJCUExRTExNTQzMTMwMTVDM0QwMDU0QUM4QyAvKiBEaXN0
YW50TGlnaHRTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
RGlzdGFudExpZ2h0U291cmNlLmNwcDsgcGF0aCA9IGZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFFMTE1NDUxMzAxNUM0RTAwNTRB
QzhDIC8qIFBvaW50TGlnaHRTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gUG9pbnRMaWdodFNvdXJjZS5jcHA7IHBhdGggPSBmaWx0ZXJzL1BvaW50TGlnaHRT
b3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUUxMTU0NzEzMDE1QzVE
MDA1NEFDOEMgLyogU3BvdExpZ2h0U291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFNwb3RMaWdodFNvdXJjZS5jcHA7IHBhdGggPSBmaWx0ZXJzL1Nwb3RMaWdo
dFNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQkI1OUQ4MTQ1NzlG
MDYwMEFDNTZGRSAvKiBXb3JrZXJFdmVudFF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFdvcmtlckV2ZW50UXVldWUuY3BwOyBwYXRoID0gd29ya2Vycy9Xb3Jr
ZXJFdmVudFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNCQjU5RDkx
NDU3OUYwNjAwQUM1NkZFIC8qIFdvcmtlckV2ZW50UXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gV29ya2VyRXZlbnRRdWV1ZS5oOyBwYXRoID0gd29ya2Vycy9Xb3JrZXJF
dmVudFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQkI1OUYxMTQ1N0E0
MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRFdmVudFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTNCQjU5RjIxNDU3QTQwRDAwQUM1NkZFIC8qIERvY3VtZW50RXZlbnRR
dWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudEV2ZW50UXVl
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTQwOUM5ODIxMTZEMERERDAwNzE5
N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNDA5Qzk4MzExNkQwREREMDA3MTk3QkQg
LyogQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNDIyNkU1OTExNjNENjY3MDA4QjgzOTcgLyogSlNIVE1MUHJv
Z3Jlc3NFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
SFRNTFByb2dyZXNzRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NDU1OCw2ICsxNDU2Miw4IEBACiAJCQkJMkU0MzQ2MzcwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtl
ckNvbnRleHQuaCAqLywKIAkJCQkyRTQzNDYzODBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyQ29u
dGV4dC5pZGwgKi8sCiAJCQkJMkU0MzQ2MzkwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckNvbnRl
eHRQcm94eS5oICovLAorCQkJCUEzQkI1OUQ4MTQ1NzlGMDYwMEFDNTZGRSAvKiBXb3JrZXJFdmVu
dFF1ZXVlLmNwcCAqLywKKwkJCQlBM0JCNTlEOTE0NTc5RjA2MDBBQzU2RkUgLyogV29ya2VyRXZl
bnRRdWV1ZS5oICovLAogCQkJCTE4RjgzMUI3MEZENDhDNzgwMEQ4QzU2QiAvKiBXb3JrZXJMb2Fk
ZXJQcm94eS5oICovLAogCQkJCTJFNDM0NjNBMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJMb2Nh
dGlvbi5jcHAgKi8sCiAJCQkJMkU0MzQ2M0IwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckxvY2F0
aW9uLmggKi8sCkBAIC0yMDkwOCw2ICsyMDkxNCw4IEBACiAJCQkJQTgxODVGMzQwOTc2NTc2NTAw
NTgyNkQ5IC8qIERvY3VtZW50LmNwcCAqLywKIAkJCQlBODE4NUYzODA5NzY1NzY1MDA1ODI2RDkg
LyogRG9jdW1lbnQuaCAqLywKIAkJCQk2NTQ4RTI0ODA5RTFFMDREMDBBRjgwMjAgLyogRG9jdW1l
bnQuaWRsICovLAorCQkJCUEzQkI1OUYxMTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50
UXVldWUuY3BwICovLAorCQkJCUEzQkI1OUYyMTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2
ZW50UXVldWUuaCAqLywKIAkJCQlBODE4NUYzNzA5NzY1NzY1MDA1ODI2RDkgLyogRG9jdW1lbnRG
cmFnbWVudC5jcHAgKi8sCiAJCQkJQTgxODVGMzUwOTc2NTc2NTAwNTgyNkQ5IC8qIERvY3VtZW50
RnJhZ21lbnQuaCAqLywKIAkJCQkxQTQ5NEVENTBBMTIzRjFBMDBGREFGQzEgLyogRG9jdW1lbnRG
cmFnbWVudC5pZGwgKi8sCkBAIC0yMDk2OSw3ICsyMDk3Nyw2IEBACiAJCQkJQUQ0NDk1RjIxNDFG
QzA4OTAwNTQxRURGIC8qIEV2ZW50TGlzdGVuZXJNYXAuaCAqLywKIAkJCQk5Mzk4ODVDMTA4QjdF
M0QxMDBFNzA3QzQgLyogRXZlbnROYW1lcy5jcHAgKi8sCiAJCQkJOTM5ODg1QzIwOEI3RTNEMTAw
RTcwN0M0IC8qIEV2ZW50TmFtZXMuaCAqLywKLQkJCQk4RjY3NTYxQTEyODhCMTdCMDA0N0FDQTMg
LyogRXZlbnRRdWV1ZS5jcHAgKi8sCiAJCQkJOEY2NzU2MTkxMjg4QjE3QjAwNDdBQ0EzIC8qIEV2
ZW50UXVldWUuaCAqLywKIAkJCQlFMTJFREJFOTBCMzA4RTBCMDAyNzA0QjYgLyogRXZlbnRUYXJn
ZXQuY3BwICovLAogCQkJCUUxMkVEQjdBMEIzMDhBNzgwMDI3MDRCNiAvKiBFdmVudFRhcmdldC5o
ICovLApAQCAtMjE0NTgsNiArMjE0NjUsNyBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhh
c2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJ
QTNCQjU5RjQxNDU3QTQwRDAwQUM1NkZFIC8qIERvY3VtZW50RXZlbnRRdWV1ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzEwNjAzNzAxNDMyN0QyRTAwQUJGNEJBIC8qIFdlYktpdENTU0ZpbHRlclZh
bHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBODAwQzBBMTk1MTZFMDBBOEVGNUYgLyogU3R5
bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTgwMDcwQTE5NTE2RTAwQThFRjVGIC8q
IENTU1N0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLApAQCAtMjU0NzQsNyArMjU0ODIsNiBAQAog
CQkJCUFENDQ5NUYzMTQxRkMwODkwMDU0MUVERiAvKiBFdmVudExpc3RlbmVyTWFwLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFDQTE5RTA1MERDMjU1OTUwMDY1QTk5NCAvKiBFdmVudExvb3BNYWMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4ODVDMzA4QjdFM0QxMDBFNzA3QzQgLyogRXZlbnRO
YW1lcy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk4RjY3NTYxQzEyODhCMTdCMDA0N0FDQTMgLyog
RXZlbnRRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMEZFRjM3MkIyN0M1M0VBQzFDMUZC
RUUgLyogRXZlbnRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyRURCRUEwQjMwOEUw
QjAwMjcwNEI2IC8qIEV2ZW50VGFyZ2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjBEOEYy
MEQyQTExRTAwMEI5OTE4RiAvKiBFeGNlcHRpb25CYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MjczMzEsNiArMjczMzgsNyBAQAogCQkJCTk3NjY1MDRGMTQ0RkJGRkUwMEY2QkI1MSAvKiBFdmVu
dEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTBFRTBERjUxNDRGODI1NTAwRjgwQjBE
IC8qIFdlYkdMRGVidWdSZW5kZXJlckluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTBFRTBE
RjcxNDRGODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdTaGFkZXJzLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUEzQkI1OUYzMTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50UXVldWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5P
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAppbmRleCBmODI1ZGEw
NzFjNTc2ODlmY2M5MmY4YmM0ZWZkYTAzYmEyZmM3Y2EyLi5jZWFlZjA5ZTc3NTAxNWQ1ODhmODgz
MjlhMzllYTc5OGIwMTk4MWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxs
SW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKQEAgLTU2
LDYgKzU2LDcgQEAKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwIgog
I2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwIgogI2luY2x1ZGUgIkRvY3VtZW50
LmNwcCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuY3BwIgogI2luY2x1ZGUgIkRvY3Vt
ZW50RnJhZ21lbnQuY3BwIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyLmNwcCIKICNpbmNsdWRl
ICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIgpAQCAtNzMsNyArNzQsNiBAQAogI2luY2x1
ZGUgIkV2ZW50RGlzcGF0Y2hlci5jcHAiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lck1hcC5jcHAi
CiAjaW5jbHVkZSAiRXZlbnROYW1lcy5jcHAiCi0jaW5jbHVkZSAiRXZlbnRRdWV1ZS5jcHAiCiAj
aW5jbHVkZSAiRXZlbnRUYXJnZXQuY3BwIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkJhc2UuY3BwIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
ZDkwZmYyMWRlZTBjNGI0ZDU4MWM2NTczNDlkZjU4Y2VkMDRhNmI3ZS4uOGZiM2YzZjlkMzM1Mzgy
MjU0YTIzMTE2YTBkYTNmNTY5MDBlYzc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01
MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiRGV2aWNlTW90aW9uRXZlbnQuaCIKICNpbmNsdWRlICJE
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlv
bkV2ZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCkBAIC02NCw3ICs2NSw2IEBACiAjaW5jbHVkZSAi
RXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudC5oIgpAQCAtMzkwLDcgKzM5MCw3IEBAIERvY3VtZW50OjpEb2N1bWVudChG
cmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkK
ICAgICAsIG1faXNWaWV3U291cmNlKGZhbHNlKQogICAgICwgbV9zYXdFbGVtZW50c0luS25vd25O
YW1lc3BhY2VzKGZhbHNlKQogICAgICwgbV91c2luZ0dlb2xvY2F0aW9uKGZhbHNlKQotICAgICwg
bV9ldmVudFF1ZXVlKEV2ZW50UXVldWU6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1
ZShEb2N1bWVudEV2ZW50UXVldWU6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fd2Vha1JlZmVyZW5j
ZShEb2N1bWVudFdlYWtSZWZlcmVuY2U6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1faWRBdHRyaWJ1
dGVOYW1lKGlkQXR0cikKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCmluZGV4IDJkNThjNWUwNDQ3Y2NlYjczZDU2NTFjOTZmYmU3Y2I4ZjE5Nzk5MjYuLjQxNTNk
NDczODVjYzc0NTVhZTcwYjIwOTBjZjgyMDcyZGVjNDY5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ29sbGVjdGlvblR5cGUuaCIKICNpbmNsdWRl
ICJDb2xvci5oIgogI2luY2x1ZGUgIkRPTVRpbWVTdGFtcC5oIgorI2luY2x1ZGUgIkRvY3VtZW50
RXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCiAjaW5jbHVkZSAiSWNv
blVSTC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTgxLDcgKzgyLDYgQEAgY2xhc3MgRWxl
bWVudDsKIGNsYXNzIEVudGl0eVJlZmVyZW5jZTsKIGNsYXNzIEV2ZW50OwogY2xhc3MgRXZlbnRM
aXN0ZW5lcjsKLWNsYXNzIEV2ZW50UXVldWU7CiBjbGFzcyBGb250RGF0YTsKIGNsYXNzIEZvcm1B
c3NvY2lhdGVkRWxlbWVudDsKIGNsYXNzIEZyYW1lOwpAQCAtMTAzMCw3ICsxMDMwLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZW5xdWV1ZVBhZ2VzaG93RXZlbnQoUGFnZXNob3dFdmVudFBlcnNpc3Rl
bmNlKTsKICAgICB2b2lkIGVucXVldWVIYXNoY2hhbmdlRXZlbnQoY29uc3QgU3RyaW5nJiBvbGRV
UkwsIGNvbnN0IFN0cmluZyYgbmV3VVJMKTsKICAgICB2b2lkIGVucXVldWVQb3BzdGF0ZUV2ZW50
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCk7Ci0gICAgRXZl
bnRRdWV1ZSogZXZlbnRRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRRdWV1ZS5nZXQoKTsg
fQorICAgIHZpcnR1YWwgRG9jdW1lbnRFdmVudFF1ZXVlKiBldmVudFF1ZXVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9ldmVudFF1ZXVlLmdldCgpOyB9CiAKICAgICB2b2lkIGFkZE1lZGlhQ2FuU3RhcnRM
aXN0ZW5lcihNZWRpYUNhblN0YXJ0TGlzdGVuZXIqKTsKICAgICB2b2lkIHJlbW92ZU1lZGlhQ2Fu
U3RhcnRMaXN0ZW5lcihNZWRpYUNhblN0YXJ0TGlzdGVuZXIqKTsKQEAgLTEzNzAsNyArMTM3MCw3
IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fdXNpbmdHZW9sb2NhdGlvbjsKIAotICAgIFJlZlB0
cjxFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7CisgICAgUmVmUHRyPERvY3VtZW50RXZlbnRRdWV1
ZT4gbV9ldmVudFF1ZXVlOwogCiAgICAgUmVmUHRyPERvY3VtZW50V2Vha1JlZmVyZW5jZT4gbV93
ZWFrUmVmZXJlbmNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRF
dmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjdlZGYyNGY4OGE2NjQ1YmU2ZGI5MmJjNmRjNTRiMTgyNDc3YzA5YzUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNw
cApAQCAtMCwwICsxLDE1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1ZS5oIgorCisjaW5jbHVkZSAiRE9NV2luZG93Lmgi
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKKyNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU3VzcGVuZGFibGVUaW1l
ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitzdGF0aWMgaW5saW5lIGJvb2wgc2hv
dWxkRGlzcGF0Y2hTY3JvbGxFdmVudFN5bmNocm9ub3VzbHkoRG9jdW1lbnQqIGRvY3VtZW50KQor
eworICAgIEFTU0VSVF9BUkcoZG9jdW1lbnQsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gYXBwbGlj
YXRpb25Jc1NhZmFyaSgpICYmIChkb2N1bWVudC0+dXJsKCkucHJvdG9jb2xJcygiZmVlZCIpIHx8
IGRvY3VtZW50LT51cmwoKS5wcm90b2NvbElzKCJmZWVkcyIpKTsKK30KKworY2xhc3MgRG9jdW1l
bnRFdmVudFF1ZXVlVGltZXIgOiBwdWJsaWMgU3VzcGVuZGFibGVUaW1lciB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoRG9jdW1lbnRFdmVudFF1ZXVlVGltZXIpOworcHVibGljOgorICAgIERv
Y3VtZW50RXZlbnRRdWV1ZVRpbWVyKERvY3VtZW50RXZlbnRRdWV1ZSogZXZlbnRRdWV1ZSwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICAgICAgOiBTdXNwZW5kYWJsZVRpbWVy
KGNvbnRleHQpCisgICAgICAgICwgbV9ldmVudFF1ZXVlKGV2ZW50UXVldWUpIHsgfQorCitwcml2
YXRlOgorICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpIHsgbV9ldmVudFF1ZXVlLT5wZW5kaW5nRXZl
bnRUaW1lckZpcmVkKCk7IH0KKyAgICBEb2N1bWVudEV2ZW50UXVldWUqIG1fZXZlbnRRdWV1ZTsK
K307CisKK1Bhc3NSZWZQdHI8RG9jdW1lbnRFdmVudFF1ZXVlPiBEb2N1bWVudEV2ZW50UXVldWU6
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgRG9jdW1lbnRFdmVudFF1ZXVlKGNvbnRleHQpKTsKK30KKworRG9jdW1lbnRF
dmVudFF1ZXVlOjpEb2N1bWVudEV2ZW50UXVldWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKKyAgICA6IG1fcGVuZGluZ0V2ZW50VGltZXIoYWRvcHRQdHIobmV3IERvY3VtZW50RXZl
bnRRdWV1ZVRpbWVyKHRoaXMsIGNvbnRleHQpKSkKKyAgICAsIG1faXNDbG9zZWQoZmFsc2UpCit7
Cit9CisKK0RvY3VtZW50RXZlbnRRdWV1ZTo6fkRvY3VtZW50RXZlbnRRdWV1ZSgpCit7Cit9CisK
K3ZvaWQgRG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4g
ZXZlbnQpCit7CisgICAgaWYgKG1faXNDbG9zZWQpCisgICAgICAgIHJldHVybjsKKworICAgIEFT
U0VSVChldmVudC0+dGFyZ2V0KCkpOworICAgIGJvb2wgd2FzQWRkZWQgPSBtX3F1ZXVlZEV2ZW50
cy5hZGQoZXZlbnQpLnNlY29uZDsKKyAgICBBU1NFUlRfVU5VU0VEKHdhc0FkZGVkLCB3YXNBZGRl
ZCk7IC8vIEl0IHNob3VsZCBub3QgaGF2ZSBhbHJlYWR5IGJlZW4gaW4gdGhlIGxpc3QuCisgICAg
CisgICAgaWYgKCFtX3BlbmRpbmdFdmVudFRpbWVyLT5pc0FjdGl2ZSgpKQorICAgICAgICBtX3Bl
bmRpbmdFdmVudFRpbWVyLT5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgRG9jdW1lbnRFdmVu
dFF1ZXVlOjplbnF1ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KFBhc3NSZWZQdHI8Tm9kZT4gdGFy
Z2V0LCBTY3JvbGxFdmVudFRhcmdldFR5cGUgdGFyZ2V0VHlwZSkKK3sKKyAgICBpZiAoIXRhcmdl
dC0+ZG9jdW1lbnQoKS0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpTQ1JPTExfTElTVEVORVIp
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBQZXIgdGhlIFczQyBDU1NPTSBWaWV3IE1vZHVs
ZSwgc2Nyb2xsIGV2ZW50cyBmaXJlZCBhdCB0aGUgZG9jdW1lbnQgc2hvdWxkIGJ1YmJsZSwgb3Ro
ZXJzIHNob3VsZCBub3QuCisgICAgYm9vbCBjYW5CdWJibGUgPSB0YXJnZXRUeXBlID09IFNjcm9s
bEV2ZW50RG9jdW1lbnRUYXJnZXQ7CisgICAgUmVmUHRyPEV2ZW50PiBzY3JvbGxFdmVudCA9IEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNjcm9sbEV2ZW50LCBjYW5CdWJibGUsIGZhbHNlIC8q
IG5vbiBjYW5jZWxsZWFibGUgKi8pOworICAgICAKKyAgICBpZiAoc2hvdWxkRGlzcGF0Y2hTY3Jv
bGxFdmVudFN5bmNocm9ub3VzbHkodGFyZ2V0LT5kb2N1bWVudCgpKSkgeworICAgICAgICB0YXJn
ZXQtPmRpc3BhdGNoRXZlbnQoc2Nyb2xsRXZlbnQucmVsZWFzZSgpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmICghbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHMuYWRkKHRh
cmdldC5nZXQoKSkuc2Vjb25kKQorICAgICAgICByZXR1cm47CisKKyAgICBzY3JvbGxFdmVudC0+
c2V0VGFyZ2V0KHRhcmdldCk7CisgICAgZW5xdWV1ZUV2ZW50KHNjcm9sbEV2ZW50LnJlbGVhc2Uo
KSk7Cit9CisKK2Jvb2wgRG9jdW1lbnRFdmVudFF1ZXVlOjpjYW5jZWxFdmVudChFdmVudCogZXZl
bnQpCit7CisgICAgYm9vbCBmb3VuZCA9IG1fcXVldWVkRXZlbnRzLmNvbnRhaW5zKGV2ZW50KTsK
KyAgICBtX3F1ZXVlZEV2ZW50cy5yZW1vdmUoZXZlbnQpOworICAgIGlmIChtX3F1ZXVlZEV2ZW50
cy5pc0VtcHR5KCkpCisgICAgICAgIG1fcGVuZGluZ0V2ZW50VGltZXItPnN0b3AoKTsKKyAgICBy
ZXR1cm4gZm91bmQ7Cit9CisKK3ZvaWQgRG9jdW1lbnRFdmVudFF1ZXVlOjpjbG9zZSgpCit7Cisg
ICAgbV9pc0Nsb3NlZCA9IHRydWU7CisgICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3RvcCgpOwor
ICAgIG1fcXVldWVkRXZlbnRzLmNsZWFyKCk7Cit9CisKK3ZvaWQgRG9jdW1lbnRFdmVudFF1ZXVl
OjpwZW5kaW5nRXZlbnRUaW1lckZpcmVkKCkKK3sKKyAgICBBU1NFUlQoIW1fcGVuZGluZ0V2ZW50
VGltZXItPmlzQWN0aXZlKCkpOworICAgIEFTU0VSVCghbV9xdWV1ZWRFdmVudHMuaXNFbXB0eSgp
KTsKKworICAgIG1fbm9kZXNXaXRoUXVldWVkU2Nyb2xsRXZlbnRzLmNsZWFyKCk7CisKKyAgICAv
LyBJbnNlcnQgYSBtYXJrZXIgZm9yIHdoZXJlIHdlIHNob3VsZCBzdG9wLgorICAgIEFTU0VSVCgh
bV9xdWV1ZWRFdmVudHMuY29udGFpbnMoMCkpOworICAgIGJvb2wgd2FzQWRkZWQgPSBtX3F1ZXVl
ZEV2ZW50cy5hZGQoMCkuc2Vjb25kOworICAgIEFTU0VSVF9VTlVTRUQod2FzQWRkZWQsIHdhc0Fk
ZGVkKTsgLy8gSXQgc2hvdWxkIG5vdCBoYXZlIGFscmVhZHkgYmVlbiBpbiB0aGUgbGlzdC4KKwor
ICAgIFJlZlB0cjxEb2N1bWVudEV2ZW50UXVldWU+IHByb3RlY3Rvcih0aGlzKTsKKworICAgIHdo
aWxlICghbV9xdWV1ZWRFdmVudHMuaXNFbXB0eSgpKSB7CisgICAgICAgIExpc3RIYXNoU2V0PFJl
ZlB0cjxFdmVudD4gPjo6aXRlcmF0b3IgaXRlciA9IG1fcXVldWVkRXZlbnRzLmJlZ2luKCk7Cisg
ICAgICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSAqaXRlcjsKKyAgICAgICAgbV9xdWV1ZWRFdmVu
dHMucmVtb3ZlKGl0ZXIpOworICAgICAgICBpZiAoIWV2ZW50KQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQuZ2V0KCkpOworICAgIH0KK30KKwordm9pZCBE
b2N1bWVudEV2ZW50UXVldWU6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQp
Cit7CisgICAgRXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0ID0gZXZlbnQtPnRhcmdldCgpOworICAg
IGlmIChldmVudFRhcmdldC0+dG9ET01XaW5kb3coKSkKKyAgICAgICAgZXZlbnRUYXJnZXQtPnRv
RE9NV2luZG93KCktPmRpc3BhdGNoRXZlbnQoZXZlbnQsIDApOworICAgIGVsc2UKKyAgICAgICAg
ZXZlbnRUYXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOworfQorCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRFdmVudFF1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYThkM2JmYjg0ZjYzNTEzYTIwOWUw
MWNmZWU1YmY5NTkyYzYzN2FmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudEV2ZW50UXVldWUuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisj
aWZuZGVmIERvY3VtZW50RXZlbnRRdWV1ZV9oCisjZGVmaW5lIERvY3VtZW50RXZlbnRRdWV1ZV9o
CisKKyNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNp
bmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRXZlbnQ7CitjbGFzcyBEb2N1bWVudEV2ZW50UXVldWVU
aW1lcjsKK2NsYXNzIE5vZGU7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFz
cyBEb2N1bWVudEV2ZW50UXVldWUgOiBwdWJsaWMgUmVmQ291bnRlZDxEb2N1bWVudEV2ZW50UXVl
dWU+LCBwdWJsaWMgRXZlbnRRdWV1ZSB7CitwdWJsaWM6CisgICAgZW51bSBTY3JvbGxFdmVudFRh
cmdldFR5cGUgeworICAgICAgICBTY3JvbGxFdmVudERvY3VtZW50VGFyZ2V0LAorICAgICAgICBT
Y3JvbGxFdmVudEVsZW1lbnRUYXJnZXQKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
RG9jdW1lbnRFdmVudFF1ZXVlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAg
IHZpcnR1YWwgfkRvY3VtZW50RXZlbnRRdWV1ZSgpOworCisgICAgLy8gRXZlbnRRdWV1ZQorICAg
IHZpcnR1YWwgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOworICAgIHZpcnR1
YWwgYm9vbCBjYW5jZWxFdmVudChFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOwor
CisgICAgdm9pZCBlbnF1ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KFBhc3NSZWZQdHI8Tm9kZT4s
IFNjcm9sbEV2ZW50VGFyZ2V0VHlwZSk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRG9jdW1l
bnRFdmVudFF1ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworICAgIHZvaWQgcGVuZGlu
Z0V2ZW50VGltZXJGaXJlZCgpOworICAgIHZvaWQgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2
ZW50Pik7CisKKyAgICBPd25QdHI8RG9jdW1lbnRFdmVudFF1ZXVlVGltZXI+IG1fcGVuZGluZ0V2
ZW50VGltZXI7CisgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPEV2ZW50PiA+IG1fcXVldWVkRXZlbnRz
OworICAgIEhhc2hTZXQ8Tm9kZSo+IG1fbm9kZXNXaXRoUXVldWVkU2Nyb2xsRXZlbnRzOworICAg
IGJvb2wgbV9pc0Nsb3NlZDsKKworICAgIGZyaWVuZCBjbGFzcyBEb2N1bWVudEV2ZW50UXVldWVU
aW1lcjsgICAgCit9OworCit9CisKKyNlbmRpZiAvLyBEb2N1bWVudEV2ZW50UXVldWVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50UXVldWUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGVl
Mjc3MjFmNDFiOGNjMGMxYmRmZTU3M2MyNDgyY2Q5NDk1ZTdkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVl
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICoKLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgotCi0jaW5jbHVkZSAiRE9N
V2luZG93LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFdmVudC5oIgotI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
aCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU3VzcGVu
ZGFibGVUaW1lci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1zdGF0aWMgaW5saW5l
IGJvb2wgc2hvdWxkRGlzcGF0Y2hTY3JvbGxFdmVudFN5bmNocm9ub3VzbHkoRG9jdW1lbnQqIGRv
Y3VtZW50KQotewotICAgIEFTU0VSVF9BUkcoZG9jdW1lbnQsIGRvY3VtZW50KTsKLSAgICByZXR1
cm4gYXBwbGljYXRpb25Jc1NhZmFyaSgpICYmIChkb2N1bWVudC0+dXJsKCkucHJvdG9jb2xJcygi
ZmVlZCIpIHx8IGRvY3VtZW50LT51cmwoKS5wcm90b2NvbElzKCJmZWVkcyIpKTsKLX0KLQotY2xh
c3MgRXZlbnRRdWV1ZVRpbWVyIDogcHVibGljIFN1c3BlbmRhYmxlVGltZXIgewotICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEV2ZW50UXVldWVUaW1lcik7Ci1wdWJsaWM6Ci0gICAgRXZlbnRRdWV1
ZVRpbWVyKEV2ZW50UXVldWUqIGV2ZW50UXVldWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCi0gICAgICAgIDogU3VzcGVuZGFibGVUaW1lcihjb250ZXh0KQotICAgICAgICAsIG1f
ZXZlbnRRdWV1ZShldmVudFF1ZXVlKSB7IH0KLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQg
ZmlyZWQoKSB7IG1fZXZlbnRRdWV1ZS0+cGVuZGluZ0V2ZW50VGltZXJGaXJlZCgpOyB9Ci0gICAg
RXZlbnRRdWV1ZSogbV9ldmVudFF1ZXVlOyAgICAKLX07Ci0KLVBhc3NSZWZQdHI8RXZlbnRRdWV1
ZT4gRXZlbnRRdWV1ZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi17
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFdmVudFF1ZXVlKGNvbnRleHQpKTsKLX0KLQotRXZl
bnRRdWV1ZTo6RXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAg
IDogbV9wZW5kaW5nRXZlbnRUaW1lcihhZG9wdFB0cihuZXcgRXZlbnRRdWV1ZVRpbWVyKHRoaXMs
IGNvbnRleHQpKSkKLSAgICAsIG1faXNDbG9zZWQoZmFsc2UpCi17Ci19Ci0KLUV2ZW50UXVldWU6
On5FdmVudFF1ZXVlKCkKLXsKLX0KLQotdm9pZCBFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4gZXZlbnQpCi17Ci0gICAgaWYgKG1faXNDbG9zZWQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEFTU0VSVChldmVudC0+dGFyZ2V0KCkpOwotICAgIGJvb2wgd2FzQWRkZWQg
PSBtX3F1ZXVlZEV2ZW50cy5hZGQoZXZlbnQpLnNlY29uZDsKLSAgICBBU1NFUlRfVU5VU0VEKHdh
c0FkZGVkLCB3YXNBZGRlZCk7IC8vIEl0IHNob3VsZCBub3QgaGF2ZSBhbHJlYWR5IGJlZW4gaW4g
dGhlIGxpc3QuCi0gICAgCi0gICAgaWYgKCFtX3BlbmRpbmdFdmVudFRpbWVyLT5pc0FjdGl2ZSgp
KQotICAgICAgICBtX3BlbmRpbmdFdmVudFRpbWVyLT5zdGFydE9uZVNob3QoMCk7Ci19Ci0KLXZv
aWQgRXZlbnRRdWV1ZTo6ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChQYXNzUmVmUHRyPE5v
ZGU+IHRhcmdldCwgU2Nyb2xsRXZlbnRUYXJnZXRUeXBlIHRhcmdldFR5cGUpCi17Ci0gICAgaWYg
KCF0YXJnZXQtPmRvY3VtZW50KCktPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6U0NST0xMX0xJ
U1RFTkVSKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gUGVyIHRoZSBXM0MgQ1NTT00gVmll
dyBNb2R1bGUsIHNjcm9sbCBldmVudHMgZmlyZWQgYXQgdGhlIGRvY3VtZW50IHNob3VsZCBidWJi
bGUsIG90aGVycyBzaG91bGQgbm90LgotICAgIGJvb2wgY2FuQnViYmxlID0gdGFyZ2V0VHlwZSA9
PSBTY3JvbGxFdmVudERvY3VtZW50VGFyZ2V0OwotICAgIFJlZlB0cjxFdmVudD4gc2Nyb2xsRXZl
bnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zY3JvbGxFdmVudCwgY2FuQnViYmxlLCBm
YWxzZSAvKiBub24gY2FuY2VsbGVhYmxlICovKTsKLSAgICAgCi0gICAgaWYgKHNob3VsZERpc3Bh
dGNoU2Nyb2xsRXZlbnRTeW5jaHJvbm91c2x5KHRhcmdldC0+ZG9jdW1lbnQoKSkpIHsKLSAgICAg
ICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KHNjcm9sbEV2ZW50LnJlbGVhc2UoKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIW1fbm9kZXNXaXRoUXVldWVkU2Nyb2xsRXZlbnRz
LmFkZCh0YXJnZXQuZ2V0KCkpLnNlY29uZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2Nyb2xs
RXZlbnQtPnNldFRhcmdldCh0YXJnZXQpOwotICAgIGVucXVldWVFdmVudChzY3JvbGxFdmVudC5y
ZWxlYXNlKCkpOwotfQotCi1ib29sIEV2ZW50UXVldWU6OmNhbmNlbEV2ZW50KEV2ZW50KiBldmVu
dCkKLXsKLSAgICBib29sIGZvdW5kID0gbV9xdWV1ZWRFdmVudHMuY29udGFpbnMoZXZlbnQpOwot
ICAgIG1fcXVldWVkRXZlbnRzLnJlbW92ZShldmVudCk7Ci0gICAgaWYgKG1fcXVldWVkRXZlbnRz
LmlzRW1wdHkoKSkKLSAgICAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3RvcCgpOwotICAgIHJl
dHVybiBmb3VuZDsKLX0KLQotdm9pZCBFdmVudFF1ZXVlOjpjbG9zZSgpCi17Ci0gICAgbV9pc0Ns
b3NlZCA9IHRydWU7Ci0gICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3RvcCgpOwotICAgIG1fcXVl
dWVkRXZlbnRzLmNsZWFyKCk7Ci19Ci0KLXZvaWQgRXZlbnRRdWV1ZTo6cGVuZGluZ0V2ZW50VGlt
ZXJGaXJlZCgpCi17Ci0gICAgQVNTRVJUKCFtX3BlbmRpbmdFdmVudFRpbWVyLT5pc0FjdGl2ZSgp
KTsKLSAgICBBU1NFUlQoIW1fcXVldWVkRXZlbnRzLmlzRW1wdHkoKSk7Ci0KLSAgICBtX25vZGVz
V2l0aFF1ZXVlZFNjcm9sbEV2ZW50cy5jbGVhcigpOwotCi0gICAgLy8gSW5zZXJ0IGEgbWFya2Vy
IGZvciB3aGVyZSB3ZSBzaG91bGQgc3RvcC4KLSAgICBBU1NFUlQoIW1fcXVldWVkRXZlbnRzLmNv
bnRhaW5zKDApKTsKLSAgICBib29sIHdhc0FkZGVkID0gbV9xdWV1ZWRFdmVudHMuYWRkKDApLnNl
Y29uZDsKLSAgICBBU1NFUlRfVU5VU0VEKHdhc0FkZGVkLCB3YXNBZGRlZCk7IC8vIEl0IHNob3Vs
ZCBub3QgaGF2ZSBhbHJlYWR5IGJlZW4gaW4gdGhlIGxpc3QuCi0KLSAgICBSZWZQdHI8RXZlbnRR
dWV1ZT4gcHJvdGVjdG9yKHRoaXMpOwotCi0gICAgd2hpbGUgKCFtX3F1ZXVlZEV2ZW50cy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPEV2ZW50PiA+OjppdGVyYXRvciBp
dGVyID0gbV9xdWV1ZWRFdmVudHMuYmVnaW4oKTsKLSAgICAgICAgUmVmUHRyPEV2ZW50PiBldmVu
dCA9ICppdGVyOwotICAgICAgICBtX3F1ZXVlZEV2ZW50cy5yZW1vdmUoaXRlcik7Ci0gICAgICAg
IGlmICghZXZlbnQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGlzcGF0Y2hFdmVudChl
dmVudC5nZXQoKSk7Ci0gICAgfQotfQotCi12b2lkIEV2ZW50UXVldWU6OmRpc3BhdGNoRXZlbnQo
UGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCi17Ci0gICAgRXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0
ID0gZXZlbnQtPnRhcmdldCgpOwotICAgIGlmIChldmVudFRhcmdldC0+dG9ET01XaW5kb3coKSkK
LSAgICAgICAgZXZlbnRUYXJnZXQtPnRvRE9NV2luZG93KCktPmRpc3BhdGNoRXZlbnQoZXZlbnQs
IDApOwotICAgIGVsc2UKLSAgICAgICAgZXZlbnRUYXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQp
OwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuaAppbmRleCBjOTk3OTcyMDgxZWU1ZjJhYWE1
NWVjMGFjMDYxNGVkNDljOWUwMTU2Li4yZDI2YmUyYzdhYjUwNWMwNzEyNDEwMzhiZDg1YzIwM2Fl
Y2EzOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRRdWV1ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFF1ZXVlLmgKQEAgLTI3LDQ4ICsyNywyMSBAQAogI2lm
bmRlZiBFdmVudFF1ZXVlX2gKICNkZWZpbmUgRXZlbnRRdWV1ZV9oCiAKKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL0xpc3RI
YXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRXZlbnQ7Ci1jbGFzcyBFdmVudFF1
ZXVlVGltZXI7Ci1jbGFzcyBOb2RlOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAot
Y2xhc3MgRXZlbnRRdWV1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEV2ZW50UXVldWU+IHsKK2NsYXNz
IEV2ZW50UXVldWUgewogcHVibGljOgotICAgIGVudW0gU2Nyb2xsRXZlbnRUYXJnZXRUeXBlIHsK
LSAgICAgICAgU2Nyb2xsRXZlbnREb2N1bWVudFRhcmdldCwKLSAgICAgICAgU2Nyb2xsRXZlbnRF
bGVtZW50VGFyZ2V0Ci0gICAgfTsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50UXVldWU+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0gICAgfkV2ZW50UXVldWUoKTsKLQot
ICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKLSAgICB2b2lkIGVucXVl
dWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiwgU2Nyb2xsRXZlbnRUYXJn
ZXRUeXBlKTsKLSAgICBib29sIGNhbmNlbEV2ZW50KEV2ZW50Kik7Ci0KLSAgICAvLyBUaGUgYWNj
dW11bGF0ZWQgYW5kIGFsbCB0aGUgZnV0dXJlIGV2ZW50cyB3aWxsIGJlIGRpc2NhcmRlZCwgbm8g
ZXZlbnRzIHdpbGwgYmUgZGlzcGF0Y2hlZCBhbnltb3JlLiAKLSAgICB2b2lkIGNsb3NlKCk7Ci0K
LXByaXZhdGU6Ci0gICAgZXhwbGljaXQgRXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7Ci0KLSAgICB2b2lkIHBlbmRpbmdFdmVudFRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIGRpc3Bh
dGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwotCi0gICAgT3duUHRyPEV2ZW50UXVldWVUaW1l
cj4gbV9wZW5kaW5nRXZlbnRUaW1lcjsKLSAgICBMaXN0SGFzaFNldDxSZWZQdHI8RXZlbnQ+ID4g
bV9xdWV1ZWRFdmVudHM7Ci0gICAgSGFzaFNldDxOb2RlKj4gbV9ub2Rlc1dpdGhRdWV1ZWRTY3Jv
bGxFdmVudHM7Ci0gICAgYm9vbCBtX2lzQ2xvc2VkOwotCi0gICAgZnJpZW5kIGNsYXNzIEV2ZW50
UXVldWVUaW1lcjsgICAgCisgICAgdmlydHVhbCB+RXZlbnRRdWV1ZSgpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgY2FuY2VsRXZlbnQoRXZlbnQqKSA9IDA7CisgICAgLy8gVGhlIGFjY3VtdWxhdGVkIGFu
ZCBhbGwgdGhlIGZ1dHVyZSBldmVudHMgd2lsbCBiZSBkaXNjYXJkZWQsIG5vIGV2ZW50cyB3aWxs
IGJlIGRpc3BhdGNoZWQgYW55bW9yZS4KKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSA9IDA7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRl
eCBlMTZmYWI1ODI5NzU1YmQ2ZmU3OTQ1MWVjNDE5ZTNmZDc0OWNmNzg2Li4yMTgzMDRhNjA4OTI5
Yzc4M2FlN2NkNTE3NzJiMDhhNzMwODExZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTUyLDYgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIERPTVRpbWVyOwogICAgIGNsYXNzIERPTVVSTDsKICAgICBjbGFzcyBFdmVu
dExpc3RlbmVyOworICAgIGNsYXNzIEV2ZW50UXVldWU7CiAgICAgY2xhc3MgRXZlbnRUYXJnZXQ7
CiAgICAgY2xhc3MgTWVzc2FnZVBvcnQ7CiAgICAgY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwpAQCAt
MTczLDYgKzE3NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhZGp1c3RN
aW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgb2xkTWluaW11bVRpbWVySW50ZXJ2YWwpOwogICAg
ICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCgpIGNvbnN0OwogCisgICAg
ICAgIHZpcnR1YWwgRXZlbnRRdWV1ZSogZXZlbnRRdWV1ZSgpIGNvbnN0ID0gMDsKKwogICAgIHBy
b3RlY3RlZDoKICAgICAgICAgLy8gRXhwbGljaXRseSBvdmVycmlkZSB0aGUgc2VjdXJpdHkgb3Jp
Z2luIGZvciB0aGlzIHNjcmlwdCBjb250ZXh0LgogICAgICAgICAvLyBOb3RlOiBJdCBpcyBkYW5n
ZXJvdXMgdG8gY2hhbmdlIHRoZSBzZWN1cml0eSBvcmlnaW4gb2YgYSBzY3JpcHQgY29udGV4dApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGNlNjc0NGE2ZjYzZWZlMjU4M2Vl
YWVlZWYwOWRhMTZjM2MzMDA1NWQuLmE1YmNmNzdmZTNjYmYwOTY0MjNmOGVmOWU3ODY5OGQ4M2Q1
ZGRiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTM0LDExICszNCwx
MSBAQAogI2luY2x1ZGUgIkN1cnNvci5oIgogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1ZS5oIgogI2luY2x1
ZGUgIkRyYWdDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRHJhZ1N0YXRlLmgiCiAjaW5jbHVkZSAi
RWRpdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkV2ZW50UXVldWUu
aCIKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5j
bHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCkBAIC0zMTA3LDcgKzMxMDcsNyBAQCB2b2lkIEV2ZW50
SGFuZGxlcjo6c2VuZFNjcm9sbEV2ZW50KCkKIHsKICAgICBzZXRGcmFtZVdhc1Njcm9sbGVkQnlV
c2VyKCk7CiAgICAgaWYgKG1fZnJhbWUtPnZpZXcoKSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpKQot
ICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5ldmVudFF1ZXVlKCktPmVucXVldWVPckRpc3Bh
dGNoU2Nyb2xsRXZlbnQobV9mcmFtZS0+ZG9jdW1lbnQoKSwgRXZlbnRRdWV1ZTo6U2Nyb2xsRXZl
bnREb2N1bWVudFRhcmdldCk7CisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmV2ZW50UXVl
dWUoKS0+ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChtX2ZyYW1lLT5kb2N1bWVudCgpLCBE
b2N1bWVudEV2ZW50UXVldWU6OlNjcm9sbEV2ZW50RG9jdW1lbnRUYXJnZXQpOwogfQogCiB2b2lk
IEV2ZW50SGFuZGxlcjo6c2V0RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA4NzIzNjUyZmE0ZDVmODNhNWEwODc1MTcy
NzdlZDY5ODY2ZGE1NzMxLi41ODE2NzRhNjVhZmI4NzQ1ZWZlNDA1Yjc0ZmEzNTRjY2RmM2NjMDlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTUwLDggKzUw
LDggQEAKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuaCIK
ICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKLSNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5j
bHVkZSAiRmxvYXRQb2ludDNELmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAi
Rm9jdXNDb250cm9sbGVyLmgiCkBAIC0xNDQyLDcgKzE0NDIsNyBAQCB2b2lkIFJlbmRlckxheWVy
OjpzY3JvbGxUbyhMYXlvdXRVbml0IHgsIExheW91dFVuaXQgeSkKIAogICAgIC8vIFNjaGVkdWxl
IHRoZSBzY3JvbGwgRE9NIGV2ZW50LgogICAgIGlmIChyZW5kZXJlcigpLT5ub2RlKCkpCi0gICAg
ICAgIHJlbmRlcmVyKCktPm5vZGUoKS0+ZG9jdW1lbnQoKS0+ZXZlbnRRdWV1ZSgpLT5lbnF1ZXVl
T3JEaXNwYXRjaFNjcm9sbEV2ZW50KHJlbmRlcmVyKCktPm5vZGUoKSwgRXZlbnRRdWV1ZTo6U2Ny
b2xsRXZlbnRFbGVtZW50VGFyZ2V0KTsKKyAgICAgICAgcmVuZGVyZXIoKS0+bm9kZSgpLT5kb2N1
bWVudCgpLT5ldmVudFF1ZXVlKCktPmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQocmVuZGVy
ZXIoKS0+bm9kZSgpLCBEb2N1bWVudEV2ZW50UXVldWU6OlNjcm9sbEV2ZW50RWxlbWVudFRhcmdl
dCk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgTGF5
b3V0UmVjdCYgcmVjdCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNjcm9s
bEFsaWdubWVudCYgYWxpZ25ZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guY3BwCmluZGV4IGRkZjc5YzBmYjU4NTY1MDBlNDI1ZTcyZmRjYTUxY2I0YTlkYWMwNDEuLjIw
YTAwYjdlNGU1YTUzYzc5YTRmMjJlNjA0MGNhMWJkNWQxMjUyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTM0LDggKzM0LDggQEAKICNpbmNsdWRl
ICJDU1NGb250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuaCIKICNpbmNs
dWRlICJFdmVudEhhbmRsZXIuaCIKLSNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAi
Rm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVkZSAiRnJh
bWUuaCIKQEAgLTYyMiw3ICs2MjIsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnNjcm9sbFRvKGlu
dCBuZXdPZmZzZXQpCiAKICAgICBtX2luZGV4T2Zmc2V0ID0gbmV3T2Zmc2V0OwogICAgIHJlcGFp
bnQoKTsKLSAgICBub2RlKCktPmRvY3VtZW50KCktPmV2ZW50UXVldWUoKS0+ZW5xdWV1ZU9yRGlz
cGF0Y2hTY3JvbGxFdmVudChub2RlKCksIEV2ZW50UXVldWU6OlNjcm9sbEV2ZW50RWxlbWVudFRh
cmdldCk7CisgICAgbm9kZSgpLT5kb2N1bWVudCgpLT5ldmVudFF1ZXVlKCktPmVucXVldWVPckRp
c3BhdGNoU2Nyb2xsRXZlbnQobm9kZSgpLCBEb2N1bWVudEV2ZW50UXVldWU6OlNjcm9sbEV2ZW50
RWxlbWVudFRhcmdldCk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyTGlzdEJveDo6aXRlbUhlaWdo
dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCmluZGV4IGE3ZGY1
ZjMxNDg5MjJlNTE3MDlmYjUyNGZlNzRhMDExODZmZmIwMDAuLmQ4ZmU2YjRlMjliYzdmNmI5NmYw
OTA3MzQ5MTk2M2VmZGFiYzhlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2Uu
Y3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKIAogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRFdmVudFF1ZXVlLmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJJ
REJBbnkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCmluZGV4IDkwYTYxZGE0
MzFkN2ViNTU3ZGIwOGUzNTY5NDdlMmE2OTBlMjkxNmIuLmY4ZmNjZThmZWY5YjU5ZjRjYmEyNTky
MjUwMTkzMDFmYzBiZTU5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcApA
QCAtMzIsMTAgKzMyLDEwIEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNs
dWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1ZS5oIgogI2luY2x1
ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiSURC
Q3Vyc29yV2l0aFZhbHVlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJ
REJFdmVudERpc3BhdGNoZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlv
bi5jcHAKaW5kZXggNTk1OWYzOTE0OGE5YzM1NzRkNDg1NjMzYTBlODlmNmM3NTMxZjMzNC4uZjNk
ZTQzYTkyNDYyMTQ2Y2MxYTBlOTA2YmM0N2JkNGVmMzBiYzc5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTI5LDggKzI5LDggQEAKICNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9j
dW1lbnRFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKLSNpbmNsdWRl
ICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQkV2ZW50RGlzcGF0Y2hlci5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKaW5kZXggMDNkNDg4YzMzYmZhZTgw
MGY5MDQ4ODA4ZmFhYWIyM2UzNmEzZWEwNi4uYzg3ZjcxMmIxMTdiMmExMWQ4MjZmMDY5Njk0NTJh
ZGJhNTBkZjhmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCkBA
IC01MDYsNiArNTA2LDExIEBAIHZvaWQgV29ya2VyQ29udGV4dDo6bm90aWZ5T2JzZXJ2ZXJzT2ZT
dG9wKCkKICAgICB9CiB9CiAKK1dvcmtlckV2ZW50UXVldWUqIFdvcmtlckNvbnRleHQ6OmV2ZW50
UXVldWUoKSBjb25zdAoreworICAgIHJldHVybiBtX2V2ZW50UXVldWUuZ2V0KCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAppbmRleCBhYzQ1NzdiMjM2MWFjZDdkOTE2NTQw
NzEzYmUzYTI1OTZlYWU4MmVmLi41ZmRkNDcyZWExYTA4NmFjZThiM2ZmYjg5Y2Q1YjFmN2NhMGFm
ZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXb3JrZXJFdmVu
dFF1ZXVlLmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTExMCw2ICsx
MTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gU2NyaXB0RXhlY3V0aW9u
Q29udGV4dAogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBN
ZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVk
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBQYXNzUmVmUHRyPFNjcmlwdENh
bGxTdGFjaz4pOworICAgICAgICB2aXJ0dWFsIFdvcmtlckV2ZW50UXVldWUqIGV2ZW50UXVldWUo
KSBjb25zdDsKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgICAgICBOb3RpZmljYXRp
b25DZW50ZXIqIHdlYmtpdE5vdGlmaWNhdGlvbnMoKSBjb25zdDsKQEAgLTIxMiw2ICsyMTQsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFy
Z2V0RGF0YTsKIAogICAgICAgICBIYXNoU2V0PE9ic2VydmVyKj4gbV93b3JrZXJPYnNlcnZlcnM7
CisKKyAgICAgICAgT3duUHRyPFdvcmtlckV2ZW50UXVldWU+IG1fZXZlbnRRdWV1ZTsKICAgICB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJFdmVudFF1ZXVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTNlYzAxMWJlODk3YmUyNThmNmQ4MzUxYmNl
YmMwOWFhMjcyYmYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJFdmVudFF1ZXVlLmNwcApAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtlckV2ZW50UXVldWUuaCIKKworI2luY2x1
ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnQu
aCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8V29ya2VyRXZlbnRR
dWV1ZT4gV29ya2VyRXZlbnRRdWV1ZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJFdmVudFF1ZXVlKGNvbnRl
eHQpKTsKK30KKworV29ya2VyRXZlbnRRdWV1ZTo6V29ya2VyRXZlbnRRdWV1ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNv
bnRleHQpCisgICAgLCBtX2lzQ2xvc2VkKGZhbHNlKQoreworfQorCitXb3JrZXJFdmVudFF1ZXVl
Ojp+V29ya2VyRXZlbnRRdWV1ZSgpCit7CisgICAgY2xvc2UoKTsKK30KKworY2xhc3MgV29ya2Vy
RXZlbnRRdWV1ZTo6RXZlbnREaXNwYXRjaGVyVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxFdmVudERpc3Bh
dGNoZXJUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIFdvcmtlckV2ZW50UXVl
dWUqIGV2ZW50UXVldWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV2ZW50
RGlzcGF0Y2hlclRhc2soZXZlbnQsIGV2ZW50UXVldWUpKTsKKyAgICB9CisKKyAgICB2b2lkIGRp
c3BhdGNoRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8RXZlbnQ+IGV2
ZW50KQorICAgIHsKKyAgICAgICAgZXZlbnQtPnRhcmdldCgpLT5kaXNwYXRjaEV2ZW50KGV2ZW50
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmIChtX2lzQ2FuY2VsbGVkKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2V2ZW50UXVldWUtPnJlbW92ZUV2ZW50KG1fZXZl
bnQuZ2V0KCkpOworICAgICAgICBkaXNwYXRjaEV2ZW50KGNvbnRleHQsIG1fZXZlbnQpOworICAg
IH0KKworICAgIHZvaWQgY2FuY2VsKCkKKyAgICB7CisgICAgICAgIG1faXNDYW5jZWxsZWQgPSB0
cnVlOworICAgICAgICBtX2V2ZW50LmNsZWFyKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIEV2
ZW50RGlzcGF0Y2hlclRhc2soUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIFdvcmtlckV2ZW50UXVl
dWUqIGV2ZW50UXVldWUpCisgICAgICAgIDogbV9ldmVudChldmVudCkKKyAgICAgICAgLCBtX2V2
ZW50UXVldWUoZXZlbnRRdWV1ZSkKKyAgICAgICAgLCBtX2lzQ2FuY2VsbGVkKGZhbHNlKQorICAg
IHsKKyAgICB9CisKKyAgICBSZWZQdHI8RXZlbnQ+IG1fZXZlbnQ7CisgICAgV29ya2VyRXZlbnRR
dWV1ZSogbV9ldmVudFF1ZXVlOworICAgIGJvb2wgbV9pc0NhbmNlbGxlZDsKK307CisKK3ZvaWQg
V29ya2VyRXZlbnRRdWV1ZTo6cmVtb3ZlRXZlbnQoRXZlbnQqIGV2ZW50KQoreworICAgIG1fZXZl
bnRUYXNrTWFwLnJlbW92ZShldmVudCk7Cit9CisKK3ZvaWQgV29ya2VyRXZlbnRRdWV1ZTo6ZW5x
dWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50KQoreworICAgIGlmIChtX2lzQ2xv
c2VkKQorICAgICAgICByZXR1cm47CisgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IHBycEV2ZW50
OworICAgIE93blB0cjxFdmVudERpc3BhdGNoZXJUYXNrPiB0YXNrID0gRXZlbnREaXNwYXRjaGVy
VGFzazo6Y3JlYXRlKGV2ZW50LCB0aGlzKTsKKyAgICBtX2V2ZW50VGFza01hcC5hZGQoZXZlbnQu
cmVsZWFzZSgpLCB0YXNrLmdldCgpKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBv
c3RUYXNrKHRhc2sucmVsZWFzZSgpKTsKK30KKworYm9vbCBXb3JrZXJFdmVudFF1ZXVlOjpjYW5j
ZWxFdmVudChFdmVudCogZXZlbnQpCit7CisgICAgRXZlbnREaXNwYXRjaGVyVGFzayogdGFzayA9
IG1fZXZlbnRUYXNrTWFwLmdldChldmVudCk7CisgICAgaWYgKCF0YXNrKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgdGFzay0+Y2FuY2VsKCk7CisgICAgcmVtb3ZlRXZlbnQoZXZlbnQpOwor
ICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFdvcmtlckV2ZW50UXVldWU6OmNsb3NlKCkKK3sK
KyAgICBtX2lzQ2xvc2VkID0gdHJ1ZTsKKyAgICBmb3IgKEV2ZW50VGFza01hcDo6aXRlcmF0b3Ig
aXQgPSBtX2V2ZW50VGFza01hcC5iZWdpbigpOyBpdCAhPSBtX2V2ZW50VGFza01hcC5lbmQoKTsg
KytpdCkgeworICAgICAgICBFdmVudERpc3BhdGNoZXJUYXNrKiB0YXNrID0gaXQtPnNlY29uZDsK
KyAgICAgICAgdGFzay0+Y2FuY2VsKCk7CisgICAgfQorICAgIG1fZXZlbnRUYXNrTWFwLmNsZWFy
KCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZl
bnRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uN2JkMmE5YjQwN2ZiYzYwODBkMjMzMWNjNGRlZmRmNTMyOGEwMDcwZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oCkBA
IC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpZm5kZWYgV29ya2VyRXZlbnRRdWV1ZV9o
CisjZGVmaW5lIFdvcmtlckV2ZW50UXVldWVfaAorCisjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRXZlbnQ7CitjbGFzcyBOb2RlOworY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKKworY2xhc3MgV29ya2VyRXZlbnRRdWV1ZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFdvcmtlckV2ZW50UXVldWU+LCBwdWJsaWMgRXZlbnRRdWV1ZSB7CitwdWJsaWM6
CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxXb3JrZXJFdmVudFF1ZXVlPiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopOworICAgIHZpcnR1YWwgfldvcmtlckV2ZW50UXVldWUoKTsKKwor
ICAgIC8vIEV2ZW50UXVldWUKKyAgICB2aXJ0dWFsIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+KTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuY2VsRXZlbnQoRXZlbnQqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgY2xvc2UoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBXb3JrZXJFdmVu
dFF1ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICB2b2lkIHJlbW92ZUV2ZW50KEV2
ZW50Kik7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CisgICAgYm9vbCBtX2lzQ2xvc2VkOworCisgICAgY2xhc3MgRXZlbnREaXNwYXRjaGVy
VGFzazsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEV2ZW50PiwgRXZlbnREaXNwYXRjaGVy
VGFzayo+IEV2ZW50VGFza01hcDsKKyAgICBFdmVudFRhc2tNYXAgbV9ldmVudFRhc2tNYXA7Cit9
OworCit9CisKKyNlbmRpZiAvLyBXb3JrZXJFdmVudFF1ZXVlX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>