<?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>81004</bug_id>
          
          <creation_ts>2012-03-13 09:22:55 -0700</creation_ts>
          <short_desc>[Chromium] Use GL_CHROMIUM_command_buffer_query to throttle texture uploads.</short_desc>
          <delta_ts>2012-05-07 13:40:16 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>80988</dependson>
    
    <dependson>83382</dependson>
    
    <dependson>83972</dependson>
          <blocked>84281</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Reveman">reveman</reporter>
          <assigned_to name="David Reveman">reveman</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>577422</commentid>
    <comment_count>0</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-03-13 09:22:55 -0700</bug_when>
    <thetext>Estimate incremental texture update time based on results from CHROMIUM_fence based occlusion queries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577423</commentid>
    <comment_count>1</comment_count>
      <attachid>131634</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-03-13 09:23:33 -0700</bug_when>
    <thetext>Created attachment 131634
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578043</commentid>
    <comment_count>2</comment_count>
      <attachid>131760</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-03-13 17:32:56 -0700</bug_when>
    <thetext>Created attachment 131760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586132</commentid>
    <comment_count>3</comment_count>
      <attachid>133436</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-03-23 00:02:32 -0700</bug_when>
    <thetext>Created attachment 133436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586941</commentid>
    <comment_count>4</comment_count>
      <attachid>133607</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-03-23 18:11:43 -0700</bug_when>
    <thetext>Created attachment 133607
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587522</commentid>
    <comment_count>5</comment_count>
      <attachid>133607</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-26 01:08:10 -0700</bug_when>
    <thetext>Comment on attachment 133607
Patch

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

Awesome david. Key suggestion below is that we set some constants for our the cost-per-upload so we can get this v0 patch ready for landing... that sound good? I really like where this is going! Dont even worry about proving that this is a perf improvement... just focus on making it committable and we&apos;ll deal with perf after the fact. I know its going in the right direction. :)

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:49
&gt; +static const size_t textureUpdatesPerFrame = 4;

Per frame?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:58
&gt; +const double displayRefreshInterval = 1.0 / 60.0;

This isn&apos;t fixed... only the scheduler should know this...

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:529
&gt; +    m_nextTickTime = nextTickTime;

Can we fold the actual logic into the m_currentTextureUpdater object? E.g.

m_currentTextureUpdater-&gt;beginUpdatingUntil(nextTickTime)

And it would own the m_textureUpdateTimer [we&apos;d initialize the updater with a pointer to the impl thread, etc]

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:761
&gt; +class CCTextureUpdateQuery {

I think you might call this something like CCQuery and pass in the query type. And then move it to its own header. And write a unit test for it against a fake gc3d.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:849
&gt; +double CCThreadProxy::currentTextureUpdateTime()

confused by this. i almost think you should have the processTextureUpdateQueries push results into a completedValues vector where maybe the completedvalues is {frameNumber, timestamp} and you use only the last 10 frames or something and then purge. I think its better to separate out the query logic from the measurement/data tracking, basically.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:869
&gt; +double CCThreadProxy::processTextureUpdateQueries()

processCompletedQueries()

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:872
&gt; +        if (!m_pendingQueriesList.last()-&gt;isAvailable())

an&apos;t you do if (!last) return

while(!pendingQueriesList.isEmpty) {
assert(isavailable) &amp;&amp; process // but no available check?
}

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:879
&gt; +    return currentTextureUpdateTime();

not sure why you&apos;re returning a value here. Beter to separate concerns, as I mentioned above.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:886
&gt; +void CCThreadProxy::adjustTextureUpdatesPerFrame(double textureUpdateTime)

I&apos;m concerned that we&apos;ll get distracted by control system issues and not get the basic fence system ready to land. You point out correctly that this is complex. :)

So, proposal: v0 of this patch should just hard code a value &quot;perTextureUploadCostInMS.&quot; I suggest we set it to be 0.75 ms.

We can then do a followon patch **only when we&apos;ve done the v0*** that tries to compute that value dynamically. SG?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:904
&gt; +    if (maxTextureUpdateTime &gt; displayRefreshInterval * 0.75) {

assume that the sceduler told us to update at &quot;lastDoMoreUpdatesTime&quot; and told us nextFrameTime.

can this be 3/4ths of nextFramTime - lastDoMoreUPdatesTime?

And, at that poitn, should the scheduler just do this logic itself and instead of passing nextFrameTime, pass instead the stopUpdatingAtThisTime?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:918
&gt; +    size_t updates = min(m_currentTextureUpdaterOnImplThread-&gt;numUpdates(), textureUpdatesPerFrame);

is this textureUpdatesPerFrame, or textureUpdatesPerTick?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:923
&gt; +    if (updates == textureUpdatesPerFrame) {

what&apos;s this check doing?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:927
&gt; +        } else if (m_pendingQueriesList.size() &lt; maxPendingTextureUpdateQueries)

I think we can streamline this a bit...


start(nextFrameTime) {
  m_nextFrametime = 0.75 * (m_nextFrameTime - now) + now
  m_timer.starT();

tick() {
  prcoessTextureUpdateQueries()
  if (too much pending) return
  if (too close to next frame time) return
  do a bit more uploads
  issue a fence

What am I missing?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:933
&gt; +            CCProxy::implThread()-&gt;postDelayedTask(createCCThreadTask(this, &amp;CCThreadProxy::textureUpdateOnImplThread), textureUpdateRetryIntervalMs);

See CCTimer

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:941
&gt; +    m_currentTextureUpdaterOnImplThread-&gt;update(m_layerTreeHostImpl-&gt;context(), textureUpdatesPerFrame);

once we move this code into the updater, things get even cleaner, right?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:954
&gt; +        m_textureUpdateTimerOnImplThread-&gt;startOneShot(textureUpdateTime * updates);

Lets just set this liberally --- e.g. tick every 4ms or something...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588304</commentid>
    <comment_count>6</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-03-26 16:40:17 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 133607 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=133607&amp;action=review
&gt; 
&gt; Awesome david. Key suggestion below is that we set some constants for our the cost-per-upload so we can get this v0 patch ready for landing... that sound good? I really like where this is going! Dont even worry about proving that this is a perf improvement... just focus on making it committable and we&apos;ll deal with perf after the fact. I know its going in the right direction. :)
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:49
&gt; &gt; +static const size_t textureUpdatesPerFrame = 4;
&gt; 
&gt; Per frame?

I kept the existing name of that constant but that should of course change now that we&apos;re no longer waiting until the next frame to do more updates. How about PerBatch or PerTick instead?

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:58
&gt; &gt; +const double displayRefreshInterval = 1.0 / 60.0;
&gt; 
&gt; This isn&apos;t fixed... only the scheduler should know this...

Makes sense. I&apos;ll get it from the scheduler instead of using the same value as the scheduler is initialized with.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:529
&gt; &gt; +    m_nextTickTime = nextTickTime;
&gt; 
&gt; Can we fold the actual logic into the m_currentTextureUpdater object? E.g.
&gt; 
&gt; m_currentTextureUpdater-&gt;beginUpdatingUntil(nextTickTime)
&gt; 
&gt; And it would own the m_textureUpdateTimer [we&apos;d initialize the updater with a pointer to the impl thread, etc]

With the current lifetime of the texture updater, the queries and the query results have to live somewhere else. Should we try to change the lifetime of the texture updater and have it be the owner of the queries or create an interface that allows them to live elsewhere?

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:761
&gt; &gt; +class CCTextureUpdateQuery {
&gt; 
&gt; I think you might call this something like CCQuery and pass in the query type. And then move it to its own header. And write a unit test for it against a fake gc3d.

Good idea.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:849
&gt; &gt; +double CCThreadProxy::currentTextureUpdateTime()
&gt; 
&gt; confused by this. i almost think you should have the processTextureUpdateQueries push results into a completedValues vector where maybe the completedvalues is {frameNumber, timestamp} and you use only the last 10 frames or something and then purge. I think its better to separate out the query logic from the measurement/data tracking, basically.

I just put the simplest thing I could think of in this patch. A separate vector with results from completed queries would be a possible improvement. I&apos;ve also experimented with extrapolating the texture update time from previous measurements and only allowing a certain rate of change. That provided nice stable values for the texture update time.

How about we keep this logic in a separate object. Maybe a CCTextureUpdateMetrics?

class CCTextureUpdateMetrics {
public:                                                                         
    virtual void addResult(double result, double timestamp) = 0;
    virtual double estimatedUpdateTime() = 0;
};

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:869
&gt; &gt; +double CCThreadProxy::processTextureUpdateQueries()
&gt; 
&gt; processCompletedQueries()

ok.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:872
&gt; &gt; +        if (!m_pendingQueriesList.last()-&gt;isAvailable())
&gt; 
&gt; an&apos;t you do if (!last) return
&gt; 
&gt; while(!pendingQueriesList.isEmpty) {
&gt; assert(isavailable) &amp;&amp; process // but no available check?
&gt; }
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:879
&gt; &gt; +    return currentTextureUpdateTime();
&gt; 
&gt; not sure why you&apos;re returning a value here. Beter to separate concerns, as I mentioned above.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:886
&gt; &gt; +void CCThreadProxy::adjustTextureUpdatesPerFrame(double textureUpdateTime)
&gt; 
&gt; I&apos;m concerned that we&apos;ll get distracted by control system issues and not get the basic fence system ready to land. You point out correctly that this is complex. :)

I added this as I thought it be useful information when tracing. It could have been named &quot;textureUpdatePerformanceIsTooLowForFrameRate&quot;.

&gt; 
&gt; So, proposal: v0 of this patch should just hard code a value &quot;perTextureUploadCostInMS.&quot; I suggest we set it to be 0.75 ms.
&gt; 
&gt; We can then do a followon patch **only when we&apos;ve done the v0*** that tries to compute that value dynamically. SG?

so the v0 would ignore the query results then, right? sure, I don&apos;t mind doing that first.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:904
&gt; &gt; +    if (maxTextureUpdateTime &gt; displayRefreshInterval * 0.75) {
&gt; 
&gt; assume that the sceduler told us to update at &quot;lastDoMoreUpdatesTime&quot; and told us nextFrameTime.
&gt; 
&gt; can this be 3/4ths of nextFramTime - lastDoMoreUPdatesTime?
&gt; 
&gt; And, at that poitn, should the scheduler just do this logic itself and instead of passing nextFrameTime, pass instead the stopUpdatingAtThisTime?

we could move this logic into the scheduler but it would then have to know about the texture update time and deal with the problem of maxTextureUpdateTime being larger than the refresh interval. I think we can ignore this for v0 where we use a hard-coded updated time.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:918
&gt; &gt; +    size_t updates = min(m_currentTextureUpdaterOnImplThread-&gt;numUpdates(), textureUpdatesPerFrame);
&gt; 
&gt; is this textureUpdatesPerFrame, or textureUpdatesPerTick?

PerTick.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:923
&gt; &gt; +    if (updates == textureUpdatesPerFrame) {
&gt; 
&gt; what&apos;s this check doing?

it&apos;s to avoid using queries for updates that include partial uploads.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:927
&gt; &gt; +        } else if (m_pendingQueriesList.size() &lt; maxPendingTextureUpdateQueries)
&gt; 
&gt; I think we can streamline this a bit...
&gt; 
&gt; 
&gt; start(nextFrameTime) {
&gt;   m_nextFrametime = 0.75 * (m_nextFrameTime - now) + now
&gt;   m_timer.starT();
&gt; 
&gt; tick() {
&gt;   prcoessTextureUpdateQueries()
&gt;   if (too much pending) return
&gt;   if (too close to next frame time) return
&gt;   do a bit more uploads
&gt;   issue a fence
&gt; 
&gt; What am I missing?

This is pretty much what the current patch is doing except for using a separate timers for &quot;too much pending&quot; and &quot;do a bit more uploads&quot;. I don&apos;t think we want it to wait for the next update tick every time there&apos;s too many pending updates. Also my current patch takes partial texture updates into account and basically considering them free.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:933
&gt; &gt; +            CCProxy::implThread()-&gt;postDelayedTask(createCCThreadTask(this, &amp;CCThreadProxy::textureUpdateOnImplThread), textureUpdateRetryIntervalMs);
&gt; 
&gt; See CCTimer
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:941
&gt; &gt; +    m_currentTextureUpdaterOnImplThread-&gt;update(m_layerTreeHostImpl-&gt;context(), textureUpdatesPerFrame);
&gt; 
&gt; once we move this code into the updater, things get even cleaner, right?

I think that would clean some of this up, yes.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:954
&gt; &gt; +        m_textureUpdateTimerOnImplThread-&gt;startOneShot(textureUpdateTime * updates);
&gt; 
&gt; Lets just set this liberally --- e.g. tick every 4ms or something...

Ok, I think I have a pretty good idea of what you want v0 to look like. I think most of the things mentioned above aren&apos;t relevant for v0. The result will be pretty different from my current patch that avoids setting a limit to the update performance but I&apos;m fine with doing this as a follow up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588608</commentid>
    <comment_count>7</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-27 00:01:49 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I kept the existing name of that constant but that should of course change now that we&apos;re no longer waiting until the next frame to do more updates. How about PerBatch or PerTick instead?

Thats good. Per batch soudns good.

&gt; With the current lifetime of the texture updater, the queries and the query results have to live somewhere else. Should we try to change the lifetime of the texture updater and have it be the owner of the queries or create an interface that allows them to live elsewhere?

Yeah, lets try that out. Maybe the updater should always exist and we just push more items into it as we get them?


&gt; How about we keep this logic in a separate object. Maybe a CCTextureUpdateMetrics?
&gt; 
&gt; class CCTextureUpdateMetrics {
&gt; public:                                                                         
&gt;     virtual void addResult(double result, double timestamp) = 0;
&gt;     virtual double estimatedUpdateTime() = 0;
&gt; };

I really like this idea... its a scheduler! CCTextureUpdateScheduler? I think this makes it possible to write a v1 and even mock out the control logic from the streaming logic, even... I think my main hangup in your previous patch was that I couldn&apos;t see the scheduling logic separately from the basic query logic.

What if we make the interface be more like &quot;I just uploaded this specific tile/texture, and the result was this&quot; and &quot;should I update this tile now?&quot; That way we could unit test the TextureUpdateScheduler separately from the streaming logic in the basic TextureUpdater, and the interface is a little less specific about how the scheduling works.


&gt; I added this as I thought it be useful information when tracing. It could have been named &quot;textureUpdatePerformanceIsTooLowForFrameRate&quot;.
Heheh

&gt; so the v0 would ignore the query results then, right? sure, I don&apos;t mind doing that first.
Yeah. We&apos;re still getting a win by getting better interleaving between proceses.


&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:904
&gt; &gt; &gt; +    if (maxTextureUpdateTime &gt; displayRefreshInterval * 0.75) {
&gt; we could move this logic into the scheduler but it would then have to know about the texture update time and deal with the problem of maxTextureUpdateTime being larger than the refresh interval. I think we can ignore this for v0 where we use a hard-coded updated time.

Good point. Okay. :)

&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:923
&gt; &gt; &gt; +    if (updates == textureUpdatesPerFrame) {
&gt; &gt; 
&gt; &gt; what&apos;s this check doing?
&gt; 
&gt; it&apos;s to avoid using queries for updates that include partial uploads.
Do they behave differently? I forget how this all fits together, I&apos;m embarassed to say.


&gt; This is pretty much what the current patch is doing except for using a separate timers for &quot;too much pending&quot; and &quot;do a bit more uploads&quot;. I don&apos;t think we want it to wait for the next update tick every time there&apos;s too many pending updates. Also my current patch takes partial texture updates into account and basically considering them free.

Yeah, you&apos;re totally right. I&apos;m sorry about that.

&gt; Ok, I think I have a pretty good idea of what you want v0 to look like. I think most of the things mentioned above aren&apos;t relevant for v0. The result will be pretty different from my current patch that avoids setting a limit to the update performance but I&apos;m fine with doing this as a follow up patch.


You know, with your metrics (controller) object, I think it we might be able to get your dynamic stuff in anyways. So, as long as we get the time-control bit cleanly separated from the query/streaming system, I&apos;m happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591384</commentid>
    <comment_count>8</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-29 11:40:34 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
Any update?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591902</commentid>
    <comment_count>9</comment_count>
      <attachid>134732</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-03-29 23:32:30 -0700</bug_when>
    <thetext>Created attachment 134732
Patch

Updated patch. Needs new unit tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592253</commentid>
    <comment_count>10</comment_count>
      <attachid>134835</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-03-30 10:18:31 -0700</bug_when>
    <thetext>Created attachment 134835
Patch

Add unit tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592354</commentid>
    <comment_count>11</comment_count>
      <attachid>134835</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-30 11:47:06 -0700</bug_when>
    <thetext>Comment on attachment 134835
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:131
&gt; +    m_stateMachine.setCanUpdateMoreResources(m_stateMachine.redrawPending() ? monotonicallyIncreasingTime() &lt; (m_frameRateController-&gt;nextTickTime() - m_client-&gt;maxResourceUpdateTime()) : true);

hard to read. make cleaner?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:241
&gt; +    if (resourcesPending)

Why are you merging state about beginFrameComplete with resources pending?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:799
&gt; +void CCThreadProxy::deleteTextureUpdateQueries()

Wait, I thought you were going to move most of this into a standalone class? I&apos;m going to hold additional feedback until I understand where we stand on that bit of refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592417</commentid>
    <comment_count>12</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-03-30 12:48:54 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 134835 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=134835&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:131
&gt; &gt; +    m_stateMachine.setCanUpdateMoreResources(m_stateMachine.redrawPending() ? monotonicallyIncreasingTime() &lt; (m_frameRateController-&gt;nextTickTime() - m_client-&gt;maxResourceUpdateTime()) : true);
&gt; 
&gt; hard to read. make cleaner?

sure.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:241
&gt; &gt; +    if (resourcesPending)
&gt; 
&gt; Why are you merging state about beginFrameComplete with resources pending?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:799
&gt; &gt; +void CCThreadProxy::deleteTextureUpdateQueries()
&gt; 
&gt; Wait, I thought you were going to move most of this into a standalone class? I&apos;m going to hold additional feedback until I understand where we stand on that bit of refactoring.

Yes, I started doing that for this patch but realized that it wasn&apos;t obvious what that class would look like.

Creating a CCQuery class with a constructor that takes a GraphicsContext3D pointer is not necessarily what we want. All existing wrappers around GL objects that contain a pointer to a GC3D live in LayerRendererChromium. The LRC constructor takes a GC3D so the validity of the GC3D pointers passed to these wrappers is straight forward. How about GL object wrappers that don&apos;t live in the LRC?
Maybe all these CCQuery objects should live in the LRC? But I&apos;m not sure that&apos;s appropriate and if they don&apos;t live there what should the destruction of these instances look like?

Maybe we should use the same Manager/Allocator system that we use for texture objects? It seems overkill to use that for objects that are only used on the impl thread. But on the other hand use on both threads might be something we need. I&apos;ll most likely need it for my shared memory stuff.

What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592438</commentid>
    <comment_count>13</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-30 13:15:48 -0700</bug_when>
    <thetext>We (In reply to comment #12)
&gt; (In reply to comment #11)
Good point.

How about we fold this into the CCTextureUpdater class, and make the texture updater constructed with a GC3D pointer [raw pointer].

Then when the context is lost, (CCThreadProxy::didLose) we need to delete the current texture updater. Or something ~= that....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593478</commentid>
    <comment_count>14</comment_count>
      <attachid>135103</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-04-02 08:13:13 -0700</bug_when>
    <thetext>Created attachment 135103
Patch

Move some throttling code into CCTextureUpdater.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593504</commentid>
    <comment_count>15</comment_count>
      <attachid>135103</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-02 08:54:22 -0700</bug_when>
    <thetext>Comment on attachment 135103
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:134
&gt; +    double canUpdateMoreResources = false;
&gt; +    if (m_stateMachine.redrawPending())
&gt; +        canUpdateMoreResources = true;

double = false/true?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:140
&gt; +    m_stateMachine.setCanUpdateMoreResources(canUpdateMoreResources);

Would it be better to compute all of canUpdateMoreResources with assignments and boolean logic instead of branching twice with if()?

like..
bool hasRedrawPending = ...
bool hasTimeRemaining = ...
bool canUpdateMoreResources = hasRedrawPending || hasTimeRemaining;

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:77
&gt; +    if (m_needsForcedRedraw)
&gt; +        return true;

shouldDraw() is always true in this case, so COMMIT_STATE_UPDATING_RESOURCES would always return ACTION_DRAW*, and never call this function with this value, right?

If this is meant to cause updating resources, maybe that method should be reordered or something? Can there be a unit test for each of the cases in this method?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:80
&gt; +    if (m_updateMoreResourcesPending)
&gt; +        return false;

Random question: why does moreResourcesPending mean we don&apos;t want to update? And this seems to be opposite of what was deleted from COMMIT_STATE_UPDATING_RESOURCES?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593761</commentid>
    <comment_count>16</comment_count>
      <attachid>135169</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-04-02 13:30:37 -0700</bug_when>
    <thetext>Created attachment 135169
Patch

Add CCTextureUpdater::Query class, fix canUpdateMoreResources computation in CCScheduler::nextAction, remove pendingResource argument from CCSchedulerStateMachine::beginFrameComplete and remove unnecessary context argument from updateCompositorResources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593791</commentid>
    <comment_count>17</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-04-02 13:49:21 -0700</bug_when>
    <thetext>Sorry about that last patch. Not what I intended to upload. 

(In reply to comment #15)
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:140
&gt; &gt; +    m_stateMachine.setCanUpdateMoreResources(canUpdateMoreResources);
&gt; 
&gt; Would it be better to compute all of canUpdateMoreResources with assignments and boolean logic instead of branching twice with if()?
&gt; 
&gt; like..
&gt; bool hasRedrawPending = ...
&gt; bool hasTimeRemaining = ...
&gt; bool canUpdateMoreResources = hasRedrawPending || hasTimeRemaining;

Good idea, I included this in the latest patch. FYI, previous patch had hasRedrawPending wrong. We only care about if we have enough time when there is a redraw pending.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:77
&gt; &gt; +    if (m_needsForcedRedraw)
&gt; &gt; +        return true;
&gt; 
&gt; shouldDraw() is always true in this case, so COMMIT_STATE_UPDATING_RESOURCES would always return ACTION_DRAW*, and never call this function with this value, right?

True.

&gt; 
&gt; If this is meant to cause updating resources, maybe that method should be reordered or something? Can there be a unit test for each of the cases in this method?

I think that check should just be removed and forced redraw shouldn&apos;t really affect resource update scheduling.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:80
&gt; &gt; +    if (m_updateMoreResourcesPending)
&gt; &gt; +        return false;
&gt; 
&gt; Random question: why does moreResourcesPending mean we don&apos;t want to update? And this seems to be opposite of what was deleted from COMMIT_STATE_UPDATING_RESOURCES?

m_updateMoreResourcesPending indicate that there&apos;s resource update pending. We don&apos;t want to start another update while there&apos;s one already pending.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593800</commentid>
    <comment_count>18</comment_count>
      <attachid>135176</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-04-02 13:54:11 -0700</bug_when>
    <thetext>Created attachment 135176
Patch

Remove m_needsForcedRedraw check from CCSchedulerStateMachine::shouldUpdateMoreResources</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594206</commentid>
    <comment_count>19</comment_count>
      <attachid>135176</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-04-02 22:30:44 -0700</bug_when>
    <thetext>Comment on attachment 135176
Patch

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

Getting late here, I got to the CCThreadProxy in the first pass, will post comments so you can review them, will try to do more reviewing tomorrow.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.h:125
&gt; +    // Indicates whether updating resources would, at this time, make sense.

Help me understand what this state is for? It looked like you had gotten everything to fit into the &quot;we are updating resources&quot; state.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTextureUpdater.cpp:136
&gt; +void CCTextureUpdater::update(size_t count)

I guess we need to pass in the &quot;count&quot; variable to support singlethreadproxy.

Is there any way to factor this so the count constant is inside this file?

What about
updateUntilComplete(), updateUntilDeadlineExpired(), with update(count) being private?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTextureUpdater.cpp:138
&gt; +    OwnPtr&lt;Query&gt; query;

can we factor this into a few protected functions that are relatively obviously named? Look at CCLayerAnimationController for an example of what I was sort of thinking. It really helps make the steps more obvious.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTextureUpdater.cpp:140
&gt; +    if (m_updateTimer) {

So maybe we should just have updateEverything and updateStreaming... and not actually try to share code between the two paths. I think we&apos;re losing clarity in this code by trying to make it support both the CCSingleThreadProxy use case and the CCThreadProxy use case. It seems to me we that the amount of code the updateEverything vs streaming code duplicates is pretty minimal.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTextureUpdater.cpp:147
&gt; +        if (!m_availableQueriesList.isEmpty()) {

This block is still really hard to follow.

Can&apos;t this be factored more like &quot;if num pending queries, then return&quot;. Then, once you&apos;ve done that discard, grab a new query, pulling from a freelist if needed.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTextureUpdater.cpp:186
&gt; +        m_pendingQueriesList.prepend(query.release());

prepend? I guess you&apos;re doing fifo but with the &quot;front&quot; being the back... eep!

Why not just make pendingQueriesList be a deque? Wtf has such a thing, iirw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594267</commentid>
    <comment_count>20</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-04-03 01:05:41 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 135176 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=135176&amp;action=review
&gt; 
&gt; Getting late here, I got to the CCThreadProxy in the first pass, will post comments so you can review them, will try to do more reviewing tomorrow.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.h:125
&gt; &gt; +    // Indicates whether updating resources would, at this time, make sense.
&gt; 
&gt; Help me understand what this state is for? It looked like you had gotten everything to fit into the &quot;we are updating resources&quot; state.

The &quot;canUpdateMoreResources&quot; flag gives the scheduler the ability to tell the state machine that now is not a good time to begin updating more resources event though we&apos;re in the updating-resources state and there are updates pending. The scheduler will set this to false when there&apos;s a redraw pending and we&apos;re close to the vsync tick time.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCTextureUpdater.cpp:136
&gt; &gt; +void CCTextureUpdater::update(size_t count)
&gt; 
&gt; I guess we need to pass in the &quot;count&quot; variable to support singlethreadproxy.
&gt; 
&gt; Is there any way to factor this so the count constant is inside this file?
&gt; 
&gt; What about
&gt; updateUntilComplete(), updateUntilDeadlineExpired(), with update(count) being private?

It would be relatively easy to move the constant into CCTextureUpdater.cc but we can&apos;t make it completely private as the LTH needs to know what this is to support partial texture updates. If it doesn&apos;t know how many updates are done per tick it can&apos;t allow partial texture updates without the risk of commits not being atomic.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCTextureUpdater.cpp:138
&gt; &gt; +    OwnPtr&lt;Query&gt; query;
&gt; 
&gt; can we factor this into a few protected functions that are relatively obviously named? Look at CCLayerAnimationController for an example of what I was sort of thinking. It really helps make the steps more obvious.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCTextureUpdater.cpp:140
&gt; &gt; +    if (m_updateTimer) {
&gt; 
&gt; So maybe we should just have updateEverything and updateStreaming... and not actually try to share code between the two paths. I think we&apos;re losing clarity in this code by trying to make it support both the CCSingleThreadProxy use case and the CCThreadProxy use case. It seems to me we that the amount of code the updateEverything vs streaming code duplicates is pretty minimal.

I think that makes a lot of sense.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCTextureUpdater.cpp:147
&gt; &gt; +        if (!m_availableQueriesList.isEmpty()) {
&gt; 
&gt; This block is still really hard to follow.
&gt; 
&gt; Can&apos;t this be factored more like &quot;if num pending queries, then return&quot;. Then, once you&apos;ve done that discard, grab a new query, pulling from a freelist if needed.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCTextureUpdater.cpp:186
&gt; &gt; +        m_pendingQueriesList.prepend(query.release());
&gt; 
&gt; prepend? I guess you&apos;re doing fifo but with the &quot;front&quot; being the back... eep!
&gt; 
&gt; Why not just make pendingQueriesList be a deque? Wtf has such a thing, iirw.

Ok, I&apos;ll have a look at that asap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595245</commentid>
    <comment_count>21</comment_count>
      <attachid>135512</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-04-03 22:01:37 -0700</bug_when>
    <thetext>Created attachment 135512
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596321</commentid>
    <comment_count>22</comment_count>
      <attachid>135512</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-04-04 23:11:49 -0700</bug_when>
    <thetext>Comment on attachment 135512
Patch

Hmm this patch is getting epic. I&apos;m able to review it, but barely, and I think james/Enne will probably have a harder time.

Is there a way to split the refactoring changes from the key updater changes? E.g. give the updater a graphics context as one patch, maybe?

Similarliy, I wonder, can we do the scheduler changes without actually introducing the new updating code? E..g here&apos;s a new way to call the updater, but when we call it, it&apos;ll just update 4 at a time.

Then we can have a patch that just does the streaming uploads...

Have the stability issues you were seeing with occlusion query been resolved, btw?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605076</commentid>
    <comment_count>23</comment_count>
      <attachid>137767</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-04-18 14:14:31 -0700</bug_when>
    <thetext>Created attachment 137767
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605077</commentid>
    <comment_count>24</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-04-18 14:16:34 -0700</bug_when>
    <thetext>Limiting this bug to just adding the new ThrottledTextureUploader class. Moving the rest of the changes into a new bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608082</commentid>
    <comment_count>25</comment_count>
      <attachid>137767</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-04-23 15:25:11 -0700</bug_when>
    <thetext>Comment on attachment 137767
Patch

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

LGTM. Enne for real review, I think.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1416
&gt; +        m_textureUploader = NonBlockingTextureUploader::create(m_context.get());

NonBlocking sounds like it never blocks.... it does, though, doesn&apos;t it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608098</commentid>
    <comment_count>26</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-04-23 15:37:04 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 137767 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=137767&amp;action=review
&gt; 
&gt; LGTM. Enne for real review, I think.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1416
&gt; &gt; +        m_textureUploader = NonBlockingTextureUploader::create(m_context.get());
&gt; 
&gt; NonBlocking sounds like it never blocks.... it does, though, doesn&apos;t it?

It doesn&apos;t, at least from a compositor API perspective. I&apos;m not very happy with that name though. UnthrottledTextureUploader might be better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608906</commentid>
    <comment_count>27</comment_count>
      <attachid>137767</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-24 11:54:54 -0700</bug_when>
    <thetext>Comment on attachment 137767
Patch

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

Thanks for splitting this patch up.  This was quite large enough to try to digest on its own.  Thanks also for all the thorough review iterations, Nat.  :)

This looks great in general.  I just have some minor style quibbles and questions.

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1416
&gt;&gt;&gt; +        m_textureUploader = NonBlockingTextureUploader::create(m_context.get());
&gt;&gt; 
&gt;&gt; NonBlocking sounds like it never blocks.... it does, though, doesn&apos;t it?
&gt; 
&gt; It doesn&apos;t, at least from a compositor API perspective. I&apos;m not very happy with that name though. UnthrottledTextureUploader might be better.

I like unthrottled.

Also, just from a testability and separation of concerns standpoint, I think the proxy should create the texture updater that it wants itself and just return a TextureUploader to LRC, since the proxy is the one that&apos;s responsible for using it properly.

&gt; Source/WebCore/platform/graphics/chromium/TextureUploader.h:42
&gt; +class NonBlockingTextureUploader : public TextureUploader {

Please put this in a separate file if you&apos;re going to put the class declaration in a header file.  Alternatively, since this is all pretty simple, you could hide both the declaration and definition away in CCSingleThreadProxy.cpp.

&gt; Source/WebCore/platform/graphics/chromium/ThrottledTextureUploader.cpp:86
&gt; +    if (maxPendingUploads)
&gt; +        m_maxPendingQueries = maxPendingUploads;

The fact that !maxPendingUploads implies use the default number of pending uploads is really opaque.  Can you make a separate setMaxPendingQueries function or explicitly have two different constructors?  Or, even just better documentation of what this value means would help.  Also, maxPendingUploads is a confusing name, since it&apos;s dealing with queries and not uploads.

&gt; Source/WebCore/platform/graphics/chromium/ThrottledTextureUploader.h:37
&gt; +    class Query {

Can this inner class be protected and not public?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:205
&gt; +        while (updater.hasMoreUpdates())
&gt; +            updater.update(m_layerTreeHostImpl-&gt;context(), m_layerTreeHostImpl-&gt;contentsTextureAllocator(), m_layerTreeHostImpl-&gt;layerRenderer()-&gt;textureCopier(), m_layerTreeHostImpl-&gt;layerRenderer()-&gt;textureUploader(), 1);

How does this work in the single-threaded case where max partial texture updates are huge? Wouldn&apos;t you infinitely loop or hit that assert that total partial updates are smaller than count (which is 1, in this case)?  Maybe 1 should be maxPartialTextureUpdates()?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTextureUpdater.cpp:101
&gt; +            return true;

The boolean return value here seems redundant with hasMoreUpdates().  Can you simplify and pick one way or the other?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTextureUpdater.cpp:115
&gt; +        // Make sure the number of updates including partial updates are not more
&gt; +        // than |count|.

This is comment is kind of misleading.  I think you mean &quot;We need another update batch if the number of updates remaining in |count| is greater than the remaining partial entries.&quot;  Also, is there an off-by-one issue here? Should that be &lt;= instead of &lt;? Do you think it&apos;d be useful to write a unit test around batch quantities and partial updates?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612069</commentid>
    <comment_count>28</comment_count>
      <attachid>139314</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-04-27 18:42:17 -0700</bug_when>
    <thetext>Created attachment 139314
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612071</commentid>
    <comment_count>29</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-04-27 18:53:31 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (From update of attachment 137767 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=137767&amp;action=review
&gt; 
&gt; Thanks for splitting this patch up.  This was quite large enough to try to digest on its own.  Thanks also for all the thorough review iterations, Nat.  :)
&gt; 
&gt; This looks great in general.  I just have some minor style quibbles and questions.
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1416
&gt; &gt;&gt;&gt; +        m_textureUploader = NonBlockingTextureUploader::create(m_context.get());
&gt; &gt;&gt; 
&gt; &gt;&gt; NonBlocking sounds like it never blocks.... it does, though, doesn&apos;t it?
&gt; &gt; 
&gt; &gt; It doesn&apos;t, at least from a compositor API perspective. I&apos;m not very happy with that name though. UnthrottledTextureUploader might be better.
&gt; 
&gt; I like unthrottled.

done.

&gt; 
&gt; Also, just from a testability and separation of concerns standpoint, I think the proxy should create the texture updater that it wants itself and just return a TextureUploader to LRC, since the proxy is the one that&apos;s responsible for using it properly.

agree, done.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TextureUploader.h:42
&gt; &gt; +class NonBlockingTextureUploader : public TextureUploader {
&gt; 
&gt; Please put this in a separate file if you&apos;re going to put the class declaration in a header file.  Alternatively, since this is all pretty simple, you could hide both the declaration and definition away in CCSingleThreadProxy.cpp.

now in CCSingleThreadProxy.cpp.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/ThrottledTextureUploader.cpp:86
&gt; &gt; +    if (maxPendingUploads)
&gt; &gt; +        m_maxPendingQueries = maxPendingUploads;
&gt; 
&gt; The fact that !maxPendingUploads implies use the default number of pending uploads is really opaque.  Can you make a separate setMaxPendingQueries function or explicitly have two different constructors?  Or, even just better documentation of what this value means would help.  Also, maxPendingUploads is a confusing name, since it&apos;s dealing with queries and not uploads.

Now two different constructors. I prefer uploads. That queries are used is an implementation detail.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/ThrottledTextureUploader.h:37
&gt; &gt; +    class Query {
&gt; 
&gt; Can this inner class be protected and not public?

It&apos;s already private.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:205
&gt; &gt; +        while (updater.hasMoreUpdates())
&gt; &gt; +            updater.update(m_layerTreeHostImpl-&gt;context(), m_layerTreeHostImpl-&gt;contentsTextureAllocator(), m_layerTreeHostImpl-&gt;layerRenderer()-&gt;textureCopier(), m_layerTreeHostImpl-&gt;layerRenderer()-&gt;textureUploader(), 1);
&gt; 
&gt; How does this work in the single-threaded case where max partial texture updates are huge? Wouldn&apos;t you infinitely loop or hit that assert that total partial updates are smaller than count (which is 1, in this case)?  Maybe 1 should be maxPartialTextureUpdates()?

It worked fine as LTH-&gt;bufferedUpdates() returns false when single threaded proxy is used. I still changed it to maxPartialTextureUpdates() as that makes more sense.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCTextureUpdater.cpp:101
&gt; &gt; +            return true;
&gt; 
&gt; The boolean return value here seems redundant with hasMoreUpdates().  Can you simplify and pick one way or the other?

I removed the boolean return value.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCTextureUpdater.cpp:115
&gt; &gt; +        // Make sure the number of updates including partial updates are not more
&gt; &gt; +        // than |count|.
&gt; 
&gt; This is comment is kind of misleading.  I think you mean &quot;We need another update batch if the number of updates remaining in |count| is greater than the remaining partial entries.&quot;  Also, is there an off-by-one issue here? Should that be &lt;= instead of &lt;? Do you think it&apos;d be useful to write a unit test around batch quantities and partial updates?

Updated the comment. &quot;&lt;&quot; is correct there as we want that check to be false if count is equal to number of partial updates. Added a unit test to verify that 4 partial updates are done in one batch when batch size is 4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617705</commentid>
    <comment_count>30</comment_count>
      <attachid>140549</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-05-07 10:35:14 -0700</bug_when>
    <thetext>Created attachment 140549
Patch

Rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617778</commentid>
    <comment_count>31</comment_count>
      <attachid>140549</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-07 11:40:23 -0700</bug_when>
    <thetext>Comment on attachment 140549
Patch

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

R=me.  Thanks for all the changes.  I have a few more small nits, but nothing major.

What&apos;s the status on the bug with command buffer queries that gman was going to look into? Please make sure that is fixed before landing this.

&gt; Source/WebKit/chromium/tests/LayerRendererChromiumTest.cpp:103
&gt; +class FakeTextureUploader : public TextureUploader {

Please consolidate all these FakeTextureUploader classes.  Maybe just use the common one?

&gt; Source/WebKit/chromium/tests/TiledLayerChromiumTest.cpp:978
&gt; +    // Partail update of 4 tiles.

s/Partial/Partial/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617818</commentid>
    <comment_count>32</comment_count>
      <attachid>140569</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-05-07 12:18:15 -0700</bug_when>
    <thetext>Created attachment 140569
Patch

Remove duplicate implementations of FakeTextureUploader and don&apos;t enable ThrottledTextureUploader just yet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617823</commentid>
    <comment_count>33</comment_count>
      <attachid>140569</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-07 12:21:32 -0700</bug_when>
    <thetext>Comment on attachment 140569
Patch

Landing infrastructure now and flipping the switch later sounds good.  R=me, again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617825</commentid>
    <comment_count>34</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-05-07 12:26:03 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; (From update of attachment 140549 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140549&amp;action=review
&gt; 
&gt; R=me.  Thanks for all the changes.  I have a few more small nits, but nothing major.
&gt; 
&gt; What&apos;s the status on the bug with command buffer queries that gman was going to look into? Please make sure that is fixed before landing this.

Not sure what the status of that bug is. I changed CCThreadProxy to not yet use a ThrottledTextureUploader so that we can land this patch and just enable the ThrottledTextureUploader once the queries bug has been fixed.

&gt; 
&gt; &gt; Source/WebKit/chromium/tests/LayerRendererChromiumTest.cpp:103
&gt; &gt; +class FakeTextureUploader : public TextureUploader {
&gt; 
&gt; Please consolidate all these FakeTextureUploader classes.  Maybe just use the common one?

Now using the version defined in CCTiledLayerTestCommon.h everywhere.

&gt; 
&gt; &gt; Source/WebKit/chromium/tests/TiledLayerChromiumTest.cpp:978
&gt; &gt; +    // Partail update of 4 tiles.
&gt; 
&gt; s/Partial/Partial/

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617891</commentid>
    <comment_count>35</comment_count>
      <attachid>140569</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-07 13:40:08 -0700</bug_when>
    <thetext>Comment on attachment 140569
Patch

Clearing flags on attachment: 140569

Committed r116351: &lt;http://trac.webkit.org/changeset/116351&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617892</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-07 13:40:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131634</attachid>
            <date>2012-03-13 09:23:33 -0700</date>
            <delta_ts>2012-03-13 17:32:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>throttle-updates.diff</filename>
            <type>text/plain</type>
            <size>10266</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyLmNwcAppbmRleCA2MWJkOTMxLi40NTdhNzg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY2hlZHVsZXIuY3BwCkBAIC0xMDcsMTQgKzEwNywxOSBAQCB2b2lkIENDU2NoZWR1bGVyOjpk
aWRSZWNyZWF0ZUNvbnRleHQoKQogICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7CiB9CiAK
LXZvaWQgQ0NTY2hlZHVsZXI6OnZzeW5jVGljaygpCit2b2lkIENDU2NoZWR1bGVyOjpkaWRUZXh0
dXJlVXBkYXRlQ29tcGxldGUoKQogeworICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxlcjo6ZGlk
VGV4dHVyZVVwZGF0ZUNvbXBsZXRlIiwgdGhpcywgMCk7CiAgICAgaWYgKG1fdXBkYXRlTW9yZVJl
c291cmNlc1BlbmRpbmcpIHsKICAgICAgICAgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9
IGZhbHNlOwogICAgICAgICBtX3N0YXRlTWFjaGluZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXND
b21wbGV0ZShtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsKICAgICB9Ci0gICAg
VFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjp2c3luY1RpY2siLCB0aGlzLCAwKTsKKyAgICBwcm9j
ZXNzU2NoZWR1bGVkQWN0aW9ucygpOworfQogCit2b2lkIENDU2NoZWR1bGVyOjp2c3luY1RpY2so
KQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxlcjo6dnN5bmNUaWNrIiwgdGhpcywgMCk7
CiAgICAgbV9zdGF0ZU1hY2hpbmUuZGlkRW50ZXJWU3luYygpOwogICAgIHByb2Nlc3NTY2hlZHVs
ZWRBY3Rpb25zKCk7CiAgICAgbV9zdGF0ZU1hY2hpbmUuZGlkTGVhdmVWU3luYygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hl
ZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyLmgKaW5kZXggOGVmNWRjZi4uZDU1MTNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5o
CkBAIC04MCw2ICs4MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZExvc2VDb250ZXh0KCk7CiAg
ICAgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoKTsKIAorICAgIHZvaWQgZGlkVGV4dHVyZVVwZGF0
ZUNvbXBsZXRlKCk7CisKICAgICBib29sIGNvbW1pdFBlbmRpbmcoKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlTWFjaGluZS5jb21taXRQZW5kaW5nKCk7IH0KICAgICBib29sIHJlZHJhd1BlbmRpbmco
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlTWFjaGluZS5yZWRyYXdQZW5kaW5nKCk7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCA2NmUwOGM4Li5mZGYxYjZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApAQCAtNzQsNiArNzQsMTEgQEAgYm9vbCBD
Q1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZW50
cmllcy5zaXplKCkgfHwgbV9wYXJ0aWFsRW50cmllcy5zaXplKCk7CiB9CiAKK3NpemVfdCBDQ1Rl
eHR1cmVVcGRhdGVyOjpudW1VcGRhdGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9lbnRyaWVz
LnNpemUoKSAtIG1fZW50cnlJbmRleDsKK30KKwogYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjp1cGRh
dGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHNpemVfdCBjb3VudCkKIHsKICAgICBzaXpl
X3QgaW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKaW5kZXggZGJiNTJjOS4uNjBm
YmYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDQsNiArNDQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBhcHBlbmRQYXJ0aWFsKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7
CiAKICAgICBib29sIGhhc01vcmVVcGRhdGVzKCkgY29uc3Q7CisgICAgc2l6ZV90IG51bVVwZGF0
ZXMoKSBjb25zdDsKIAogICAgIC8vIFVwZGF0ZSBzb21lIHRleHR1cmVzLiBSZXR1cm5zIHRydWUg
aWYgbW9yZSB0ZXh0dXJlcyBsZWZ0IHRvIHByb2Nlc3MuCiAgICAgYm9vbCB1cGRhdGUoR3JhcGhp
Y3NDb250ZXh0M0QqLCBzaXplX3QgY291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApp
bmRleCA3NjEwZTlmLi42NTY3YjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAt
NDMsNiArNDMsNyBAQAogI3VuZGVmIExPRwogI2luY2x1ZGUgImdwdS9jb21tYW5kX2J1ZmZlci9j
bGllbnQvZ2xlczJfaW1wbGVtZW50YXRpb24uaCIKIAordXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVz
aW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSB7CkBAIC03NCw2ICs3NSw4IEBAIENDVGhy
ZWFkUHJveHk6OkNDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQog
ICAgICwgbV9maW5pc2hBbGxSZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQoMCkK
ICAgICAsIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKDApCiAgICAgLCBtX25l
eHRGcmFtZUlzTmV3bHlDb21taXR0ZWRGcmFtZU9uSW1wbFRocmVhZChmYWxzZSkKKyAgICAsIG1f
dGV4dHVyZVVwZGF0ZVRpbWVNcygwLjUgKiB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lKQorICAgICwg
bV90ZXh0dXJlVXBkYXRlUXVlcnlJZCgwKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFBy
b3h5OjpDQ1RocmVhZFByb3h5IiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKQEAgLTMyMyw2ICszMjYsMTEgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzZXRWaXNpYmxlT25J
bXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBib29sIHYKICAgICBtX2xh
eWVyVHJlZUhvc3RJbXBsLT5zZXRWaXNpYmxlKHZpc2libGUpOwogICAgIGlmICghdmlzaWJsZSkg
ewogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmRpZEJlY29tZUludmlzaWJsZU9uSW1wbFRocmVh
ZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKKyAgICAgICAgaWYgKG1fdGV4dHVyZVVwZGF0
ZVRpbWVyT25JbXBsVGhyZWFkKSB7CisgICAgICAgICAgICBtX3RleHR1cmVVcGRhdGVUaW1lck9u
SW1wbFRocmVhZC5jbGVhcigpOworICAgICAgICAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQt
PmRpZFRleHR1cmVVcGRhdGVDb21wbGV0ZSgpOworICAgICAgICB9CisKICAgICAgICAgLy8gYXMg
cGFydGlhbCBvciBhbGwgdGhlIHRleHR1cmVzIG1heSBiZSBldmljdGVkIGluIGRpZEJlY29tZUlu
dmlzaWJsZU9uSW1wbFRocmVhZCwKICAgICAgICAgLy8gc2NoZWR1bGUgYSBjb21taXQgd2hpY2gg
d2lsbCBiZSBleGVjdXRlZCB3aGVuIGl0IGdvZXMgdG8gdmlzaWJsZSBhZ2Fpbi4KICAgICAgICAg
bV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldE5lZWRzQ29tbWl0KCk7CkBAIC01MTEsMTEgKzUx
OSw1OCBAQCBib29sIENDVGhyZWFkUHJveHk6OmNhbkRyYXcoKQogICAgIHJldHVybiBtX2xheWVy
VHJlZUhvc3RJbXBsLT5jYW5EcmF3KCk7CiB9CiAKK2NsYXNzIENDVGhyZWFkUHJveHlUZXh0dXJl
VXBkYXRlVGltZXIgOiBwdWJsaWMgQ0NUaW1lciwgQ0NUaW1lckNsaWVudCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVUaW1lcj4gY3Jl
YXRlKENDVGhyZWFkUHJveHkqIHByb3h5KSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ0NUaHJlYWRQ
cm94eVRleHR1cmVVcGRhdGVUaW1lcihwcm94eSkpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb25U
aW1lckZpcmVkKCkKKyAgICB7CisgICAgICAgIG1fcHJveHktPm9uVGV4dHVyZVVwZGF0ZVRpbWVy
RmlyZWQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgQ0NUaHJlYWRQcm94eVRl
eHR1cmVVcGRhdGVUaW1lcihDQ1RocmVhZFByb3h5KiBwcm94eSkKKyAgICAgICAgOiBDQ1RpbWVy
KENDUHJveHk6OmltcGxUaHJlYWQoKSwgdGhpcykKKyAgICAgICAgLCBtX3Byb3h5KHByb3h5KQor
ICAgIHsKKyAgICB9CisKKyAgICBDQ1RocmVhZFByb3h5KiBtX3Byb3h5OworfTsKKwogdm9pZCBD
Q1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkKIHsKICAg
ICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJl
c291cmNlcyIsIHRoaXMsIDApOwogICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9u
SW1wbFRocmVhZCk7Ci0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVw
ZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIHRleHR1cmVVcGRhdGVzUGVyRnJh
bWUpOworICAgIHNpemVfdCB1cGRhdGVzID0gbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxU
aHJlYWQtPm51bVVwZGF0ZXMoKTsKKworICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNp
b25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihtX2xheWVyVHJlZUhvc3RJ
bXBsLT5jb250ZXh0KCktPmdldEV4dGVuc2lvbnMoKSk7CisKKyAgICBpZiAoIW1fdGV4dHVyZVVw
ZGF0ZVF1ZXJ5SWQpCisgICAgICAgIG1fdGV4dHVyZVVwZGF0ZVF1ZXJ5SWQgPSBleHRlbnNpb25z
LT5jcmVhdGVRdWVyeUVYVCgpOworCisgICAgaWYgKHVwZGF0ZXMgPj0gdGV4dHVyZVVwZGF0ZXNQ
ZXJGcmFtZSkKKyAgICAgICAgZXh0ZW5zaW9ucy0+YmVnaW5RdWVyeUVYVChFeHRlbnNpb25zM0RD
aHJvbWl1bTo6Q09NTUFORFNfSVNTVUVEX0NIUk9NSVVNLCBtX3RleHR1cmVVcGRhdGVRdWVyeUlk
KTsKKworICAgIGRvdWJsZSBjb21wbGV0ZVRpbWUgPSBjdXJyZW50VGltZU1TKCkgKyBtX3RleHR1
cmVVcGRhdGVUaW1lTXM7CisKKyAgICBpZiAobV9sYXllclRyZWVIb3N0SW1wbC0+dmlzaWJsZSgp
KQorICAgICAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+dXBkYXRlKG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSk7Cisg
ICAgZWxzZQorICAgICAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+dXBk
YXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KCkpOworCisgICAgaWYgKHVwZGF0ZXMgPj0gdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSkK
KyAgICAgICAgZXh0ZW5zaW9ucy0+ZW5kUXVlcnlFWFQoRXh0ZW5zaW9uczNEQ2hyb21pdW06OkNP
TU1BTkRTX0lTU1VFRF9DSFJPTUlVTSk7CisKKyAgICBpZiAobV9jdXJyZW50VGV4dHVyZVVwZGF0
ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCkpIHsKKyAgICAgICAgaWYgKHVwZGF0ZXMg
Pj0gdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSkgeworICAgICAgICAgICAgQVNTRVJUKCFtX3RleHR1
cmVVcGRhdGVUaW1lck9uSW1wbFRocmVhZCk7CisgICAgICAgICAgICBtX3RleHR1cmVVcGRhdGVU
aW1lck9uSW1wbFRocmVhZCA9IENDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGltZXI6OmNyZWF0
ZSh0aGlzKTsKKyAgICAgICAgICAgIGRvdWJsZSB1cGRhdGVUaW1lTXMgPSBjb21wbGV0ZVRpbWUg
LSBjdXJyZW50VGltZU1TKCk7CisgICAgICAgICAgICBtX3RleHR1cmVVcGRhdGVUaW1lck9uSW1w
bFRocmVhZC0+c3RhcnRPbmVTaG90KG1heCgwLjAsIHVwZGF0ZVRpbWVNcykpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRl
Q0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5Ojp0ZXh0dXJlVXBkYXRlQ29tcGxldGVP
bkltcGxUaHJlYWQpKTsKKyAgICB9CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVk
QWN0aW9uQ29tbWl0KCkKQEAgLTY5Niw2ICs3NTEsMTEgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojps
YXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0
aW8KICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9u
SW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAg
bV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICBpZiAobV90
ZXh0dXJlVXBkYXRlUXVlcnlJZCkgeworICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0
ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9sYXllclRyZWVI
b3N0SW1wbC0+Y29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCkpOworICAgICAgICBleHRlbnNpb25z
LT5kZWxldGVRdWVyeUVYVChtX3RleHR1cmVVcGRhdGVRdWVyeUlkKTsKKyAgICAgICAgbV90ZXh0
dXJlVXBkYXRlUXVlcnlJZCA9IDA7CisgICAgfQogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwuY2xl
YXIoKTsKICAgICBtX2lucHV0SGFuZGxlck9uSW1wbFRocmVhZC5jbGVhcigpOwogICAgIG1fc2No
ZWR1bGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CkBAIC03MjYsNCArNzg2LDI3IEBAIHZvaWQgQ0NU
aHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50
KiBjb21wbGV0aW9uLCBHCiAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiB9CiAKK3ZvaWQgQ0NU
aHJlYWRQcm94eTo6dGV4dHVyZVVwZGF0ZUNvbXBsZXRlT25JbXBsVGhyZWFkKCkKK3sKKyAgICBB
U1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojp0
ZXh0dXJlVXBkYXRlQ29tcGxldGVPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBtX3NjaGVk
dWxlck9uSW1wbFRocmVhZC0+ZGlkVGV4dHVyZVVwZGF0ZUNvbXBsZXRlKCk7Cit9CisKK3ZvaWQg
Q0NUaHJlYWRQcm94eTo6b25UZXh0dXJlVXBkYXRlVGltZXJGaXJlZCgpCit7CisgICAgQVNTRVJU
KGlzSW1wbFRocmVhZCgpKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6b25UZXh0
dXJlVXBkYXRlVGltZXJGaXJlZCIsIHRoaXMsIDApOworICAgIEV4dGVuc2lvbnMzRENocm9taXVt
KiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihtX2xheWVy
VHJlZUhvc3RJbXBsLT5jb250ZXh0KCktPmdldEV4dGVuc2lvbnMoKSk7CisKKyAgICB1bnNpZ25l
ZCByZXN1bHQgPSAwOworICAgIGV4dGVuc2lvbnMtPmdldFF1ZXJ5T2JqZWN0dWl2RVhUKG1fdGV4
dHVyZVVwZGF0ZVF1ZXJ5SWQsIEV4dGVuc2lvbnMzRENocm9taXVtOjpRVUVSWV9SRVNVTFRfRVhU
LCAmcmVzdWx0KTsKKworICAgIC8vIFNldCB0ZXh0dXJlIHVwZGF0ZSBlc3RpbWF0ZSBiYXNlZCBv
biByZXN1bHQuCisgICAgbV90ZXh0dXJlVXBkYXRlVGltZU1zID0gKG1fdGV4dHVyZVVwZGF0ZVRp
bWVNcyAqIDE5LjAgKyAocmVzdWx0IC8gMTAwMC4wKSkgLyAyMC4wOworCisgICAgbV90ZXh0dXJl
VXBkYXRlVGltZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKKyAgICB0ZXh0dXJlVXBkYXRlQ29tcGxl
dGVPbkltcGxUaHJlYWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5oCmluZGV4IDA3ZDE3NzAuLjJlMjcyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgQ0NTY29wZWRUaHJlYWRQcm94eTsKIGNsYXNz
IENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFzcyBDQ1RocmVhZDsKIGNsYXNzIENDVGhyZWFkUHJveHlD
b250ZXh0UmVjcmVhdGlvblRpbWVyOworY2xhc3MgQ0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVU
aW1lcjsKIAogY2xhc3MgQ0NUaHJlYWRQcm94eSA6IHB1YmxpYyBDQ1Byb3h5LCBDQ0xheWVyVHJl
ZUhvc3RJbXBsQ2xpZW50LCBDQ1NjaGVkdWxlckNsaWVudCB7CiBwdWJsaWM6CkBAIC04OSw2ICs5
MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ0NUaHJlYWRQcm94eShDQ0xh
eWVyVHJlZUhvc3QqKTsKICAgICBmcmllbmQgY2xhc3MgQ0NUaHJlYWRQcm94eUNvbnRleHRSZWNy
ZWF0aW9uVGltZXI7CisgICAgZnJpZW5kIGNsYXNzIENDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRl
VGltZXI7CiAKICAgICAvLyBTZXQgb24gaW1wbCB0aHJlYWQsIHJlYWQgb24gbWFpbiB0aHJlYWQu
CiAgICAgc3RydWN0IEJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZSB7CkBAIC0xMjYsNiArMTI4LDgg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGxheWVyVHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIHNldEZ1bGxSb290TGF5ZXJEYW1hZ2VPbkltcGxU
aHJlYWQoKTsKICAgICB2b2lkIHJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRp
b25FdmVudCosIEdyYXBoaWNzQ29udGV4dDNEKiwgYm9vbCogcmVjcmVhdGVTdWNjZWVkZWQsIExh
eWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMqKTsKKyAgICB2b2lkIHRleHR1cmVVcGRhdGVDb21wbGV0
ZU9uSW1wbFRocmVhZCgpOworICAgIHZvaWQgb25UZXh0dXJlVXBkYXRlVGltZXJGaXJlZCgpOwog
CiAgICAgLy8gQWNjZXNzZWQgb24gbWFpbiB0aHJlYWQgb25seS4KICAgICBib29sIG1fYW5pbWF0
ZVJlcXVlc3RlZDsKQEAgLTE2Niw2ICsxNzAsMTAgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNldCB3
aGVuIHRoZSBuZXh0IGRyYXcgc2hvdWxkIHBvc3QgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lIHRvIHRo
ZSBtYWluIHRocmVhZC4KICAgICBib29sIG1fbmV4dEZyYW1lSXNOZXdseUNvbW1pdHRlZEZyYW1l
T25JbXBsVGhyZWFkOworCisgICAgZG91YmxlIG1fdGV4dHVyZVVwZGF0ZVRpbWVNczsKKyAgICBP
d25QdHI8Q0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVUaW1lcj4gbV90ZXh0dXJlVXBkYXRlVGlt
ZXJPbkltcGxUaHJlYWQ7CisgICAgdW5zaWduZWQgbV90ZXh0dXJlVXBkYXRlUXVlcnlJZDsKIH07
CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131760</attachid>
            <date>2012-03-13 17:32:56 -0700</date>
            <delta_ts>2012-03-23 00:02:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>updates.diff</filename>
            <type>text/plain</type>
            <size>12637</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyLmNwcAppbmRleCA2MWJkOTMxLi40NTdhNzg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY2hlZHVsZXIuY3BwCkBAIC0xMDcsMTQgKzEwNywxOSBAQCB2b2lkIENDU2NoZWR1bGVyOjpk
aWRSZWNyZWF0ZUNvbnRleHQoKQogICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7CiB9CiAK
LXZvaWQgQ0NTY2hlZHVsZXI6OnZzeW5jVGljaygpCit2b2lkIENDU2NoZWR1bGVyOjpkaWRUZXh0
dXJlVXBkYXRlQ29tcGxldGUoKQogeworICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxlcjo6ZGlk
VGV4dHVyZVVwZGF0ZUNvbXBsZXRlIiwgdGhpcywgMCk7CiAgICAgaWYgKG1fdXBkYXRlTW9yZVJl
c291cmNlc1BlbmRpbmcpIHsKICAgICAgICAgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9
IGZhbHNlOwogICAgICAgICBtX3N0YXRlTWFjaGluZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXND
b21wbGV0ZShtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsKICAgICB9Ci0gICAg
VFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjp2c3luY1RpY2siLCB0aGlzLCAwKTsKKyAgICBwcm9j
ZXNzU2NoZWR1bGVkQWN0aW9ucygpOworfQogCit2b2lkIENDU2NoZWR1bGVyOjp2c3luY1RpY2so
KQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxlcjo6dnN5bmNUaWNrIiwgdGhpcywgMCk7
CiAgICAgbV9zdGF0ZU1hY2hpbmUuZGlkRW50ZXJWU3luYygpOwogICAgIHByb2Nlc3NTY2hlZHVs
ZWRBY3Rpb25zKCk7CiAgICAgbV9zdGF0ZU1hY2hpbmUuZGlkTGVhdmVWU3luYygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hl
ZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyLmgKaW5kZXggOGVmNWRjZi4uZDU1MTNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5o
CkBAIC04MCw2ICs4MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZExvc2VDb250ZXh0KCk7CiAg
ICAgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoKTsKIAorICAgIHZvaWQgZGlkVGV4dHVyZVVwZGF0
ZUNvbXBsZXRlKCk7CisKICAgICBib29sIGNvbW1pdFBlbmRpbmcoKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlTWFjaGluZS5jb21taXRQZW5kaW5nKCk7IH0KICAgICBib29sIHJlZHJhd1BlbmRpbmco
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlTWFjaGluZS5yZWRyYXdQZW5kaW5nKCk7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCA2NmUwOGM4Li5mZGYxYjZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApAQCAtNzQsNiArNzQsMTEgQEAgYm9vbCBD
Q1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZW50
cmllcy5zaXplKCkgfHwgbV9wYXJ0aWFsRW50cmllcy5zaXplKCk7CiB9CiAKK3NpemVfdCBDQ1Rl
eHR1cmVVcGRhdGVyOjpudW1VcGRhdGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9lbnRyaWVz
LnNpemUoKSAtIG1fZW50cnlJbmRleDsKK30KKwogYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjp1cGRh
dGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHNpemVfdCBjb3VudCkKIHsKICAgICBzaXpl
X3QgaW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKaW5kZXggZGJiNTJjOS4uNjBm
YmYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDQsNiArNDQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBhcHBlbmRQYXJ0aWFsKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7
CiAKICAgICBib29sIGhhc01vcmVVcGRhdGVzKCkgY29uc3Q7CisgICAgc2l6ZV90IG51bVVwZGF0
ZXMoKSBjb25zdDsKIAogICAgIC8vIFVwZGF0ZSBzb21lIHRleHR1cmVzLiBSZXR1cm5zIHRydWUg
aWYgbW9yZSB0ZXh0dXJlcyBsZWZ0IHRvIHByb2Nlc3MuCiAgICAgYm9vbCB1cGRhdGUoR3JhcGhp
Y3NDb250ZXh0M0QqLCBzaXplX3QgY291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApp
bmRleCBlMmNlNjc1Li44NGQzMGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAt
MjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRQcm94eS5oIgogCisjaW5jbHVk
ZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5o
IgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0RlbGF5QmFzZWRUaW1l
U291cmNlLmgiCkBAIC0zOSw2ICs0MCw3IEBACiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAordXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVz
aW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSB7CkBAIC00Nyw2ICs0OSw5IEBAIG5hbWVz
cGFjZSB7CiAvLyBzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkuCiBzdGF0aWMg
Y29uc3Qgc2l6ZV90IHRleHR1cmVVcGRhdGVzUGVyRnJhbWUgPSA1OwogCisvLyBNYXggbnVtYmVy
IG9mIHBlbmRpbmcgdGV4dHVyZSB1cGRhdGUgcXVlcmllcyB3ZSBzaG91bGQgYWxsb3cuCitzdGF0
aWMgY29uc3Qgc2l6ZV90IG1heFBlbmRpbmdUZXh0dXJlVXBkYXRlUXVlcmllcyA9IDU7CisKIH0g
Ly8gYW5vbnltb3VzIG5hbWVzcGFjZQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MCw2ICs3
NSw3IEBAIENDVGhyZWFkUHJveHk6OkNDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0KiBsYXll
clRyZWVIb3N0KQogICAgICwgbV9maW5pc2hBbGxSZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRPbklt
cGxUaHJlYWQoMCkKICAgICAsIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKDAp
CiAgICAgLCBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRGcmFtZU9uSW1wbFRocmVhZChmYWxz
ZSkKKyAgICAsIG1fdGV4dHVyZVVwZGF0ZVRpbWVNcygwLjUpCiB7CiAgICAgVFJBQ0VfRVZFTlQo
IkNDVGhyZWFkUHJveHk6OkNDVGhyZWFkUHJveHkiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwpAQCAtMzE5LDYgKzMyNSwxMSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNl
dFZpc2libGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIGJvb2wg
dgogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpc2libGUodmlzaWJsZSk7CiAgICAgaWYg
KCF2aXNpYmxlKSB7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGlkQmVjb21lSW52aXNpYmxl
T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOworICAgICAgICBpZiAobV90
ZXh0dXJlVXBkYXRlVGltZXJPbkltcGxUaHJlYWQpIHsKKyAgICAgICAgICAgIG1fdGV4dHVyZVVw
ZGF0ZVRpbWVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CisgICAgICAgICAgICBtX3NjaGVkdWxlck9u
SW1wbFRocmVhZC0+ZGlkVGV4dHVyZVVwZGF0ZUNvbXBsZXRlKCk7CisgICAgICAgIH0KKwogICAg
ICAgICAvLyBhcyBwYXJ0aWFsIG9yIGFsbCB0aGUgdGV4dHVyZXMgbWF5IGJlIGV2aWN0ZWQgaW4g
ZGlkQmVjb21lSW52aXNpYmxlT25JbXBsVGhyZWFkLAogICAgICAgICAvLyBzY2hlZHVsZSBhIGNv
bW1pdCB3aGljaCB3aWxsIGJlIGV4ZWN1dGVkIHdoZW4gaXQgZ29lcyB0byB2aXNpYmxlIGFnYWlu
LgogICAgICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0TmVlZHNDb21taXQoKTsKQEAg
LTUwMywxMSArNTE0LDExOSBAQCBib29sIENDVGhyZWFkUHJveHk6OmNhbkRyYXcoKQogICAgIHJl
dHVybiBtX2xheWVyVHJlZUhvc3RJbXBsLT5jYW5EcmF3KCk7CiB9CiAKK2NsYXNzIENDQ29tbWFu
ZHNJc3N1ZWRRdWVyeSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NDb21tYW5k
c0lzc3VlZFF1ZXJ5PiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpIHsgcmV0dXJu
IGFkb3B0UHRyKG5ldyBDQ0NvbW1hbmRzSXNzdWVkUXVlcnkoY29udGV4dCkpOyB9CisKKyAgICB2
aXJ0dWFsIH5DQ0NvbW1hbmRzSXNzdWVkUXVlcnkoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
cXVlcnlJZCk7CisgICAgICAgIGV4dGVuc2lvbnMoKS0+ZGVsZXRlUXVlcnlFWFQobV9xdWVyeUlk
KTsKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luKCkKKyAgICB7CisgICAgICAgIGV4dGVuc2lvbnMo
KS0+YmVnaW5RdWVyeUVYVChFeHRlbnNpb25zM0RDaHJvbWl1bTo6Q09NTUFORFNfSVNTVUVEX0NI
Uk9NSVVNLCBtX3F1ZXJ5SWQpOworICAgIH0KKworICAgIHZvaWQgZW5kKHVuc2lnbmVkIGNvbW1h
bmRzKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9ucygpLT5lbmRRdWVyeUVYVChFeHRlbnNpb25z
M0RDaHJvbWl1bTo6Q09NTUFORFNfSVNTVUVEX0NIUk9NSVVNKTsKKyAgICAgICAgbV9jb21tYW5k
cyA9IGNvbW1hbmRzOworICAgIH0KKworICAgIGJvb2wgaXNBdmFpbGFibGUoKQorICAgIHsKKyAg
ICAgICAgdW5zaWduZWQgYSA9IDA7CisgICAgICAgIGV4dGVuc2lvbnMoKS0+Z2V0UXVlcnlPYmpl
Y3R1aXZFWFQobV9xdWVyeUlkLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6UVVFUllfUkVTVUxUX0FW
QUlMQUJMRV9FWFQsICZhKTsKKyAgICAgICAgcmV0dXJuIGE7CisgICAgfQorCisgICAgZG91Ymxl
IHJlc3VsdCgpCisgICAgeworICAgICAgICB1bnNpZ25lZCByID0gMDsKKyAgICAgICAgZXh0ZW5z
aW9ucygpLT5nZXRRdWVyeU9iamVjdHVpdkVYVChtX3F1ZXJ5SWQsIEV4dGVuc2lvbnMzRENocm9t
aXVtOjpRVUVSWV9SRVNVTFRfRVhULCAmcik7CisgICAgICAgIHJldHVybiByIC8gKG1fY29tbWFu
ZHMgKiAxMDAwLjApOworICAgIH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBDQ0NvbW1hbmRz
SXNzdWVkUXVlcnkoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCisgICAgICAgIDogbV9jb250
ZXh0KGNvbnRleHQpCisgICAgICAgICwgbV9xdWVyeUlkKDApCisgICAgICAgICwgbV9jb21tYW5k
cygxKQorICAgIHsKKyAgICAgICAgbV9xdWVyeUlkID0gZXh0ZW5zaW9ucygpLT5jcmVhdGVRdWVy
eUVYVCgpOworICAgIH0KKworICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+
KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICB9CisKKyAgICBHcmFwaGljc0NvbnRl
eHQzRCogbV9jb250ZXh0OworICAgIHVuc2lnbmVkIG1fcXVlcnlJZDsKKyAgICB1bnNpZ25lZCBt
X2NvbW1hbmRzOworfTsKKworY2xhc3MgQ0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVUaW1lciA6
IHB1YmxpYyBDQ1RpbWVyLCBDQ1RpbWVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c093blB0cjxDQ1RocmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRpbWVyPiBjcmVhdGUoQ0NUaHJlYWRQ
cm94eSogcHJveHkpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RocmVhZFByb3h5VGV4dHVyZVVw
ZGF0ZVRpbWVyKHByb3h5KSk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBvblRpbWVyRmlyZWQoKQor
ICAgIHsKKyAgICAgICAgbV9wcm94eS0+dGV4dHVyZVVwZGF0ZUNvbXBsZXRlT25JbXBsVGhyZWFk
KCk7CisgICAgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IENDVGhyZWFkUHJveHlUZXh0dXJl
VXBkYXRlVGltZXIoQ0NUaHJlYWRQcm94eSogcHJveHkpCisgICAgICAgIDogQ0NUaW1lcihDQ1By
b3h5OjppbXBsVGhyZWFkKCksIHRoaXMpCisgICAgICAgICwgbV9wcm94eShwcm94eSkKKyAgICB7
CisgICAgfQorCisgICAgQ0NUaHJlYWRQcm94eSogbV9wcm94eTsKK307CisKIHZvaWQgQ0NUaHJl
YWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpCiB7CiAgICAgVFJB
Q0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJj
ZXMiLCB0aGlzLCAwKTsKKworICAgIHByb2Nlc3NDb21tYW5kc0lzc3VlZFF1ZXJpZXMoKTsKKwog
ICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7Ci0gICAgbV9j
dXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJ
bXBsLT5jb250ZXh0KCksIHRleHR1cmVVcGRhdGVzUGVyRnJhbWUpOworICAgIHNpemVfdCB1cGRh
dGVzID0gbWF4KG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5udW1VcGRhdGVz
KCksIHRleHR1cmVVcGRhdGVzUGVyRnJhbWUpOworICAgIE93blB0cjxDQ0NvbW1hbmRzSXNzdWVk
UXVlcnk+IHF1ZXJ5OworICAgIGlmICh1cGRhdGVzID09IHRleHR1cmVVcGRhdGVzUGVyRnJhbWUp
IHsKKyAgICAgICAgaWYgKCFtX2F2YWlsYWJsZVF1ZXJpZXNMaXN0LmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgcXVlcnkgPSBtX2F2YWlsYWJsZVF1ZXJpZXNMaXN0Lmxhc3QoKS5yZWxlYXNlKCk7
CisgICAgICAgICAgICBtX2F2YWlsYWJsZVF1ZXJpZXNMaXN0LnJlbW92ZUxhc3QoKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChtX3BlbmRpbmdRdWVyaWVzTGlzdC5zaXplKCkgPCBtYXhQZW5kaW5nVGV4
dHVyZVVwZGF0ZVF1ZXJpZXMpCisgICAgICAgICAgICBxdWVyeSA9IENDQ29tbWFuZHNJc3N1ZWRR
dWVyeTo6Y3JlYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSk7CisgICAgfQorCisg
ICAgaWYgKHF1ZXJ5KQorICAgICAgICBxdWVyeS0+YmVnaW4oKTsKKworICAgIGlmIChtX2xheWVy
VHJlZUhvc3RJbXBsLT52aXNpYmxlKCkpCisgICAgICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVy
T25JbXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCB0ZXh0
dXJlVXBkYXRlc1BlckZyYW1lKTsKKyAgICBlbHNlCisgICAgICAgIG1fY3VycmVudFRleHR1cmVV
cGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgp
LCBudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisKKyAgICBpZiAocXVlcnkpIHsKKyAg
ICAgICAgcXVlcnktPmVuZCh1cGRhdGVzKTsKKworICAgICAgICBtX3BlbmRpbmdRdWVyaWVzTGlz
dC5wcmVwZW5kKHF1ZXJ5LnJlbGVhc2UoKSk7CisgICAgfQorCisgICAgaWYgKG1fY3VycmVudFRl
eHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpKSB7CisgICAgICAgIGlm
ICghbV90ZXh0dXJlVXBkYXRlVGltZXJPbkltcGxUaHJlYWQpCisgICAgICAgICAgICBtX3RleHR1
cmVVcGRhdGVUaW1lck9uSW1wbFRocmVhZCA9IENDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGlt
ZXI6OmNyZWF0ZSh0aGlzKTsKKworICAgICAgICBpZiAodXBkYXRlcykKKyAgICAgICAgICAgIG1f
dGV4dHVyZVVwZGF0ZVRpbWVyT25JbXBsVGhyZWFkLT5zdGFydE9uZVNob3QodXBkYXRlcyAqIG1f
dGV4dHVyZVVwZGF0ZVRpbWVNcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIENDUHJveHk6
OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVh
ZFByb3h5Ojp0ZXh0dXJlVXBkYXRlQ29tcGxldGVPbkltcGxUaHJlYWQpKTsKKyAgICB9CiB9CiAK
IHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkKQEAgLTUxOSw2ICs2
MzgsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpCiAKICAg
ICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5jbGVhcigpOwogCisgICAgcHJv
Y2Vzc0NvbW1hbmRzSXNzdWVkUXVlcmllcygpOwogCiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+
YmVnaW5Db21taXQoKTsKIApAQCAtNTc2LDYgKzY5Niw5IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6
c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAoKQogICAgICAgICBtX25leHRGcmFtZUlzTmV3bHlD
b21taXR0ZWRGcmFtZU9uSW1wbFRocmVhZCA9IGZhbHNlOwogICAgICAgICBtX21haW5UaHJlYWRQ
cm94eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5Ojpk
aWRDb21taXRBbmREcmF3RnJhbWUpKTsKICAgICB9CisKKyAgICAvLyBQcm9jZXNzIHF1ZXJpZXMu
CisgICAgcHJvY2Vzc0NvbW1hbmRzSXNzdWVkUXVlcmllcygpOwogfQogCiB2b2lkIENDVGhyZWFk
UHJveHk6OmRpZENvbW1pdEFuZERyYXdGcmFtZSgpCkBAIC02ODgsNiArODExLDggQEAgdm9pZCBD
Q1RocmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFkKENDQ29tcGxldGlv
bkV2ZW50KiBjb21wbGV0aW8KICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6bGF5ZXJU
cmVlSG9zdENsb3NlZE9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxU
aHJlYWQoKSk7CiAgICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25J
bXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigp
KTsKKyAgICBtX3BlbmRpbmdRdWVyaWVzTGlzdC5jbGVhcigpOworICAgIG1fYXZhaWxhYmxlUXVl
cmllc0xpc3QuY2xlYXIoKTsKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLmNsZWFyKCk7CiAgICAg
bV9pbnB1dEhhbmRsZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKICAgICBtX3NjaGVkdWxlck9uSW1w
bFRocmVhZC5jbGVhcigpOwpAQCAtNzE4LDQgKzg0MywyOCBAQCB2b2lkIENDVGhyZWFkUHJveHk6
OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlv
biwgRwogICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6
OnByb2Nlc3NDb21tYW5kc0lzc3VlZFF1ZXJpZXMoKQoreworICAgIHdoaWxlICghbV9wZW5kaW5n
UXVlcmllc0xpc3QuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmICghbV9wZW5kaW5nUXVlcmllc0xp
c3QubGFzdCgpLT5pc0F2YWlsYWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGRvdWJsZSB0aW1lRWxhcHNlZE1zID0gbV9wZW5kaW5nUXVlcmllc0xpc3QubGFzdCgpLT5yZXN1
bHQoKTsKKworICAgICAgICAvLyBTZXQgdGV4dHVyZSB1cGRhdGUgZXN0aW1hdGUgYmFzZWQgb24g
cmVzdWx0LgorICAgICAgICBtX3RleHR1cmVVcGRhdGVUaW1lTXMgPSAobV90ZXh0dXJlVXBkYXRl
VGltZU1zICogMTkuMCArIHRpbWVFbGFwc2VkTXMpIC8gMjAuMDsKKworICAgICAgICBtX2F2YWls
YWJsZVF1ZXJpZXNMaXN0LnByZXBlbmQobV9wZW5kaW5nUXVlcmllc0xpc3QubGFzdCgpLnJlbGVh
c2UoKSk7CisgICAgICAgIG1fcGVuZGluZ1F1ZXJpZXNMaXN0LnJlbW92ZUxhc3QoKTsKKyAgICB9
Cit9CisKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6dGV4dHVyZVVwZGF0ZUNvbXBsZXRlT25JbXBsVGhy
ZWFkKCkKK3sKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIFRSQUNFX0VWRU5UKCJD
Q1RocmVhZFByb3h5Ojp0ZXh0dXJlVXBkYXRlQ29tcGxldGVPbkltcGxUaHJlYWQiLCB0aGlzLCAw
KTsKKyAgICBwcm9jZXNzQ29tbWFuZHNJc3N1ZWRRdWVyaWVzKCk7CisgICAgbV9zY2hlZHVsZXJP
bkltcGxUaHJlYWQtPmRpZFRleHR1cmVVcGRhdGVDb21wbGV0ZSgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggOWU1MjRhNy4uZTI0ZmZj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtMzYsNiArMzYsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIENDQ29tbWFuZHNJc3N1ZWRRdWVyeTsKIGNsYXNzIENDSW5w
dXRIYW5kbGVyOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0OwogY2xhc3MgQ0NTY2hlZHVsZXI7CkBA
IC00Myw2ICs0NCw3IEBAIGNsYXNzIENDU2NvcGVkVGhyZWFkUHJveHk7CiBjbGFzcyBDQ1RleHR1
cmVVcGRhdGVyOwogY2xhc3MgQ0NUaHJlYWQ7CiBjbGFzcyBDQ1RocmVhZFByb3h5Q29udGV4dFJl
Y3JlYXRpb25UaW1lcjsKK2NsYXNzIENDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGltZXI7CiAK
IGNsYXNzIENDVGhyZWFkUHJveHkgOiBwdWJsaWMgQ0NQcm94eSwgQ0NMYXllclRyZWVIb3N0SW1w
bENsaWVudCwgQ0NTY2hlZHVsZXJDbGllbnQgewogcHVibGljOgpAQCAtODksNiArOTEsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVI
b3N0Kik7CiAgICAgZnJpZW5kIGNsYXNzIENDVGhyZWFkUHJveHlDb250ZXh0UmVjcmVhdGlvblRp
bWVyOworICAgIGZyaWVuZCBjbGFzcyBDQ1RocmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRpbWVyOwog
CiAgICAgLy8gU2V0IG9uIGltcGwgdGhyZWFkLCByZWFkIG9uIG1haW4gdGhyZWFkLgogICAgIHN0
cnVjdCBCZWdpbkZyYW1lQW5kQ29tbWl0U3RhdGUgewpAQCAtMTI1LDYgKzEyOCw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFkKENDQ29tcGxldGlv
bkV2ZW50Kik7CiAgICAgdm9pZCBzZXRGdWxsUm9vdExheWVyRGFtYWdlT25JbXBsVGhyZWFkKCk7
CiAgICAgdm9pZCByZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQq
LCBHcmFwaGljc0NvbnRleHQzRCosIGJvb2wqIHJlY3JlYXRlU3VjY2VlZGVkLCBMYXllclJlbmRl
cmVyQ2FwYWJpbGl0aWVzKik7CisgICAgdm9pZCBwcm9jZXNzQ29tbWFuZHNJc3N1ZWRRdWVyaWVz
KCk7CisgICAgdm9pZCB0ZXh0dXJlVXBkYXRlQ29tcGxldGVPbkltcGxUaHJlYWQoKTsKIAogICAg
IC8vIEFjY2Vzc2VkIG9uIG1haW4gdGhyZWFkIG9ubHkuCiAgICAgYm9vbCBtX2FuaW1hdGVSZXF1
ZXN0ZWQ7CkBAIC0xNjUsNiArMTcwLDExIEBAIHByaXZhdGU6CiAKICAgICAvLyBTZXQgd2hlbiB0
aGUgbmV4dCBkcmF3IHNob3VsZCBwb3N0IGRpZENvbW1pdEFuZERyYXdGcmFtZSB0byB0aGUgbWFp
biB0aHJlYWQuCiAgICAgYm9vbCBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRGcmFtZU9uSW1w
bFRocmVhZDsKKworICAgIGRvdWJsZSBtX3RleHR1cmVVcGRhdGVUaW1lTXM7CisgICAgT3duUHRy
PENDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGltZXI+IG1fdGV4dHVyZVVwZGF0ZVRpbWVyT25J
bXBsVGhyZWFkOworICAgIFZlY3RvcjxPd25QdHI8Q0NDb21tYW5kc0lzc3VlZFF1ZXJ5PiA+IG1f
cGVuZGluZ1F1ZXJpZXNMaXN0OworICAgIFZlY3RvcjxPd25QdHI8Q0NDb21tYW5kc0lzc3VlZFF1
ZXJ5PiA+IG1fYXZhaWxhYmxlUXVlcmllc0xpc3Q7CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133436</attachid>
            <date>2012-03-23 00:02:32 -0700</date>
            <delta_ts>2012-03-23 18:11:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81004-20120323030230.patch</filename>
            <type>text/plain</type>
            <size>24848</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExODMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZiYjNkMTdhMWQ2YWNi
NmU0YzkzM2NmODUyMTRhOTJmMmVmZjFkMC4uYmM5NjczYTZiYjY2ZjJiZTE2OTI0NjU5MWViZDA5
MjIwZjJlYWQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTAzLTIzICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBV
c2UgR0xfQ0hST01JVU1fY29tbWFuZF9idWZmZXJfcXVlcnkgdG8gdGhyb3R0bGUgaW5jcmVtZW50
YWwgdGV4dHVyZSB1cGRhdGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODEwMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRp
bWVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWxheUJhc2VkVGltZVNvdXJjZTo6
bmV4dFRpY2tUaW1lKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaDoKKyAgICAgICAgKEND
RGVsYXlCYXNlZFRpbWVTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0Zy
YW1lUmF0ZUNvbnRyb2xsZXI6Om5leHRUaWNrVGltZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKENDRnJhbWVSYXRlQ29udHJvbGxlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY2hlZHVsZXI6OmRpZFRleHR1cmVVcGRhdGVDb21wbGV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1NjaGVkdWxlcjo6dnN5bmNUaWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1
bGVyOjpwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaDoKKyAgICAgICAgKENDU2NoZWR1bGVyQ2xpZW50
KToKKyAgICAgICAgKENDU2NoZWR1bGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4
dHVyZVVwZGF0ZXI6Om51bVVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oOgorICAgICAg
ICAoQ0NUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXVEYpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ro
cmVhZFByb3h5OjpzZXRWaXNpYmxlT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkND
VGhyZWFkUHJveHk6Omhhc01vcmVSZXNvdXJjZVVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUltcGxPbkltcGxUaHJlYWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9u
SW1wbFRocmVhZCk6CisgICAgICAgIChDQ1RleHR1cmVVcGRhdGVRdWVyeSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVRdWVyeTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGV4dHVyZVVwZGF0ZVF1ZXJ5Ojp+Q0NUZXh0dXJlVXBkYXRlUXVlcnkpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlUXVlcnk6OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGV4dHVyZVVwZGF0ZVF1ZXJ5OjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJl
VXBkYXRlUXVlcnk6OmlzQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVw
ZGF0ZVF1ZXJ5OjpyZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlUXVl
cnk6OkNDVGV4dHVyZVVwZGF0ZVF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVw
ZGF0ZVF1ZXJ5OjpleHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NU
aHJlYWRQcm94eVRleHR1cmVVcGRhdGVUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5VGV4dHVyZVVwZGF0ZVRpbWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NU
aHJlYWRQcm94eVRleHR1cmVVcGRhdGVUaW1lcjo6b25UaW1lckZpcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGltZXI6OkNDVGhyZWFkUHJveHlUZXh0
dXJlVXBkYXRlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Y3VycmVu
dFRleHR1cmVVcGRhdGVUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnBy
b2Nlc3NUZXh0dXJlVXBkYXRlUXVlcmllcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFBy
b3h5OjphZGp1c3RUZXh0dXJlVXBkYXRlc1BlckZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkND
VGhyZWFkUHJveHk6OnRleHR1cmVVcGRhdGVPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUaHJlYWRQcm94eTo6dGV4dHVyZVVwZGF0ZUNvbXBsZXRlT25JbXBsVGhyZWFkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZVNvdXJjZS5oOgorICAgICAgICAoQ0NU
aW1lU291cmNlKToKKwogMjAxMi0wMy0yMiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PgogCiAgICAgICAgIE1vdmUgTm90aWZpY2F0aW9ucyBBUElzIGZyb20gRE9NV2luZG93LmlkbCB0
byBET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbCAoUGFydCAxKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RlbGF5QmFzZWRUaW1lU291cmNlLmNwcAppbmRleCBiNjg4YTc4YTI3YzU3OTUxZGQ4ZDZiZWZm
ZWU3NjZjNWQyNGYyM2U0Li43MDRlZmY0YmY3YTNkNmMwNGRlYjVjZDFkMjY2MGZjOGUwMTllYmM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmNwcApAQCAtMTYx
LDQgKzE2MSwxMiBAQCB2b2lkIENDRGVsYXlCYXNlZFRpbWVTb3VyY2U6OnBvc3ROZXh0VGlja1Rh
c2soZG91YmxlIG5vdykKICAgICBtX3RpY2tUYXJnZXQgPSBuZXdUaWNrVGFyZ2V0OwogfQogCitk
b3VibGUgQ0NEZWxheUJhc2VkVGltZVNvdXJjZTo6bmV4dFRpY2tUaW1lKCkgY29uc3QKK3sKKyAg
ICBpZiAoIW1faGFzVGlja1RhcmdldCkKKyAgICAgICAgcmV0dXJuIG1vbm90b25pY2FsbHlJbmNy
ZWFzaW5nVGltZSgpOworCisgICAgcmV0dXJuIG1fdGlja1RhcmdldDsKK30KKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxh
eUJhc2VkVGltZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5oCmluZGV4IDVmMWIyYzRmMmZkYTdiZWQ1
NGY1ZjQ0MzUwNjQ1ZjM1Zjc5NmU1ZGYuLjM4MGJlNmJjMGQxZTZhMTJlYTViNTU3ZjZhNzM0YWM3
ZGY3NGI1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmgKQEAg
LTQ3LDYgKzQ3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCk7
CiAgICAgdmlydHVhbCBib29sIGFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgIT0gU1RB
VEVfSU5BQ1RJVkU7IH0KIAorICAgIHZpcnR1YWwgZG91YmxlIG5leHRUaWNrVGltZSgpIGNvbnN0
OworCiAgICAgLy8gQ0NUaW1lckNsaWVudCBpbXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIHZv
aWQgb25UaW1lckZpcmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xs
ZXIuY3BwCmluZGV4IGRiNmQ5NWNjMDBjYzE1NTY4ZTBjZTU2N2Y0NDk3OGE5Mjc5MjRiZTguLmVj
M2MyNDc4MDkzYWQ4Yzg3YjY4NDgwNjAyMjg0Njg0NTlkN2Y4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmNwcApAQCAtMTA1LDQgKzEwNSw5IEBAIHZvaWQgQ0NG
cmFtZVJhdGVDb250cm9sbGVyOjpkaWRBYm9ydEFsbFBlbmRpbmdGcmFtZXMoKQogICAgIG1fbnVt
RnJhbWVzUGVuZGluZyA9IDA7CiB9CiAKK2RvdWJsZSBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXI6Om5l
eHRUaWNrVGltZSgpCit7CisgICAgcmV0dXJuIG1fdGltZVNvdXJjZS0+bmV4dFRpY2tUaW1lKCk7
Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmgKaW5kZXggNTcz
NGQ0YWE2ZTlmNzQ2MWE0YzY2YzZlMGExODYwZGEzMGQ0OTY2ZS4uN2ExZGFkNDM5YWZiMjhiM2Y0
MzRiMzc4OTZhMmM2OWQ4ZjRjMjZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb250
cm9sbGVyLmgKQEAgLTY0LDYgKzY0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmluaXNoRnJh
bWUoKTsKICAgICB2b2lkIGRpZEFib3J0QWxsUGVuZGluZ0ZyYW1lcygpOwogICAgIHZvaWQgc2V0
TWF4RnJhbWVzUGVuZGluZyhpbnQpOyAvLyAwIGZvciB1bmxpbWl0ZWQuCisgICAgZG91YmxlIG5l
eHRUaWNrVGltZSgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIENDRnJhbWVSYXRl
Q29udHJvbGxlclRpbWVTb3VyY2VBZGFwdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCmluZGV4
IDEzYjc0MWVhOGMzZmY0OGM4NzZjYzcyY2I2YTRlMGFkYTNjYjJmYTAuLmVlNGM0YTZlYWFkOTQ2
NjNkMzkxOTU5NWZjZDcxODNmMDhlMmEzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKQEAg
LTEwNywxNCArMTA3LDE5IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OmRpZFJlY3JlYXRlQ29udGV4dCgp
CiAgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKIH0KIAotdm9pZCBDQ1NjaGVkdWxlcjo6
dnN5bmNUaWNrKCkKK3ZvaWQgQ0NTY2hlZHVsZXI6OmRpZFRleHR1cmVVcGRhdGVDb21wbGV0ZSgp
CiB7CisgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpkaWRUZXh0dXJlVXBkYXRlQ29tcGxl
dGUiLCB0aGlzLCAwKTsKICAgICBpZiAobV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZykgewog
ICAgICAgICBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0gZmFsc2U7CiAgICAgICAgIG1f
c3RhdGVNYWNoaW5lLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKG1fY2xpZW50LT5o
YXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpOwogICAgIH0KLSAgICBUUkFDRV9FVkVOVCgiQ0NTY2hl
ZHVsZXI6OnZzeW5jVGljayIsIHRoaXMsIDApOworICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25z
KCk7Cit9CiAKK3ZvaWQgQ0NTY2hlZHVsZXI6OnZzeW5jVGljaygpCit7CisgICAgVFJBQ0VfRVZF
TlQoIkNDU2NoZWR1bGVyOjp2c3luY1RpY2siLCB0aGlzLCAwKTsKICAgICBtX3N0YXRlTWFjaGlu
ZS5kaWRFbnRlclZTeW5jKCk7CiAgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKICAgICBt
X3N0YXRlTWFjaGluZS5kaWRMZWF2ZVZTeW5jKCk7CkBAIC0xNDgsNyArMTUzLDcgQEAgdm9pZCBD
Q1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKQogICAgICAgICAgICAgbV9jbGll
bnQtPnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01P
UkVfUkVTT1VSQ0VTOgotICAgICAgICAgICAgbV9jbGllbnQtPnNjaGVkdWxlZEFjdGlvblVwZGF0
ZU1vcmVSZXNvdXJjZXMoKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25V
cGRhdGVNb3JlUmVzb3VyY2VzKG1fZnJhbWVSYXRlQ29udHJvbGxlci0+bmV4dFRpY2tUaW1lKCkp
OwogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKSB7
CiAgICAgICAgICAgICAgICAgLy8gSWYgd2Ugd2VyZSBqdXN0IHRvbGQgdG8gdXBkYXRlIHJlc291
cmNlcywgYnV0IHRoZXJlIGFyZSBubwogICAgICAgICAgICAgICAgIC8vIG1vcmUgcGVuZGluZywg
dGhlbiB0ZWxsIHRoZSBzdGF0ZSBtYWNoaW5lIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaApp
bmRleCBjODc2ZTIwYmM4Nzc4ZGM3OWFmMzg5YzBiOWE5Y2JjM2FjYmE2OTZmLi5hMTM0YWRkZmIy
YjEzZGUzNTk1M2VmZDdhMzhkMWRiZmRlNGFhZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKQEAg
LTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25C
ZWdpbkZyYW1lKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5k
U3dhcElmUG9zc2libGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwRm9yY2VkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25V
cGRhdGVNb3JlUmVzb3VyY2VzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rp
b25VcGRhdGVNb3JlUmVzb3VyY2VzKGRvdWJsZSBuZXh0VGlja1RpbWUpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0aW9uKCkgPSAwOwogCkBAIC04MSw2ICs4
MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZExvc2VDb250ZXh0KCk7CiAgICAgdm9pZCBkaWRS
ZWNyZWF0ZUNvbnRleHQoKTsKIAorICAgIHZvaWQgZGlkVGV4dHVyZVVwZGF0ZUNvbXBsZXRlKCk7
CisKICAgICBib29sIGNvbW1pdFBlbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlTWFjaGlu
ZS5jb21taXRQZW5kaW5nKCk7IH0KICAgICBib29sIHJlZHJhd1BlbmRpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlTWFjaGluZS5yZWRyYXdQZW5kaW5nKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVVcGRhdGVyLmNwcAppbmRleCA2NmUwOGM4YmQ5M2YxODI2YTM5YjU1M2MyOTY1MGE4M2Fj
MDllOGVhLi5mZGYxYjZiZDczYzdhMmUxZWZkNGY1N2Q2NjdkMTQyNjBkY2Y3YTliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApAQCAtNzQsNiArNzQsMTEgQEAgYm9vbCBDQ1Rl
eHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZW50cmll
cy5zaXplKCkgfHwgbV9wYXJ0aWFsRW50cmllcy5zaXplKCk7CiB9CiAKK3NpemVfdCBDQ1RleHR1
cmVVcGRhdGVyOjpudW1VcGRhdGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9lbnRyaWVzLnNp
emUoKSAtIG1fZW50cnlJbmRleDsKK30KKwogYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGUo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHNpemVfdCBjb3VudCkKIHsKICAgICBzaXplX3Qg
aW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKaW5kZXggZGJiNTJjOWJhZDIwNDM0
ZGRiZjc0YzYyOGE0NDQ1ZTlkN2U5ODdkMi4uNjBmYmYyNTI1NjYxY2JkNzhiMzU1NzQxNDhlYWQ5
ZDNkYzk5NDRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDQsNiArNDQs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRQYXJ0aWFsKExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCk7CiAKICAgICBib29sIGhhc01vcmVVcGRhdGVzKCkgY29uc3Q7CisgICAgc2l6ZV90IG51
bVVwZGF0ZXMoKSBjb25zdDsKIAogICAgIC8vIFVwZGF0ZSBzb21lIHRleHR1cmVzLiBSZXR1cm5z
IHRydWUgaWYgbW9yZSB0ZXh0dXJlcyBsZWZ0IHRvIHByb2Nlc3MuCiAgICAgYm9vbCB1cGRhdGUo
R3JhcGhpY3NDb250ZXh0M0QqLCBzaXplX3QgY291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmNwcAppbmRleCBkY2ZhM2JkMzVlZjg1MTc2ODE2NjkxNGY0M2RlYTMwOGNlZWZiYWE1Li4yMGFi
YWM4M2NkZTIwMzA2YjEwMGY0NGJkNWZkN2U2MDU4ZjU3ZmFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRQcm94
eS5oIgogCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJjYy9D
Q0RlbGF5QmFzZWRUaW1lU291cmNlLmgiCkBAIC00NSwxMSArNDYsMTcgQEAgbmFtZXNwYWNlIHsK
IAogLy8gTnVtYmVyIG9mIHRleHR1cmVzIHRvIHVwZGF0ZSB3aXRoIGVhY2ggY2FsbCB0bwogLy8g
c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpLgotc3RhdGljIGNvbnN0IHNpemVf
dCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lID0gMzI7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHRleHR1
cmVVcGRhdGVzUGVyRnJhbWUgPSA0OwogCiAvLyBNZWFzdXJlZCBpbiBzZWNvbmRzLgogc3RhdGlj
IGNvbnN0IGRvdWJsZSBjb250ZXh0UmVjcmVhdGlvblRpY2tSYXRlID0gMC4wMzsKIAorLy8gTnVt
YmVyIG9mIHBlbmRpbmcgdGV4dHVyZSB1cGRhdGUgcXVlcmllcyB0byBhbGxvdy4KK3N0YXRpYyBj
b25zdCBzaXplX3QgbWF4UGVuZGluZ1RleHR1cmVVcGRhdGVRdWVyaWVzID0gMjsKKworLy8gTWVh
c3VyZWQgaW4gc2Vjb25kcy4KK2NvbnN0IGRvdWJsZSBkaXNwbGF5UmVmcmVzaEludGVydmFsID0g
MS4wIC8gNjAuMDsKKwogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTczLDYgKzgwLDcgQEAgQ0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94eShDQ0xh
eWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpCiAgICAgLCBtX2ZpbmlzaEFsbFJlbmRlcmluZ0Nv
bXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCgwKQogICAgICwgbV9jb21taXRDb21wbGV0aW9uRXZl
bnRPbkltcGxUaHJlYWQoMCkKICAgICAsIG1fbmV4dEZyYW1lSXNOZXdseUNvbW1pdHRlZEZyYW1l
T25JbXBsVGhyZWFkKGZhbHNlKQorICAgICwgbV9uZXh0VGlja1RpbWUoMCkKIHsKICAgICBUUkFD
RV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94eSIsIHRoaXMsIDApOwogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC0zMjQsNiArMzMyLDExIEBAIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6c2V0VmlzaWJsZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlv
biwgYm9vbCB2CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c2V0VmlzaWJsZSh2aXNpYmxlKTsK
ICAgICBpZiAoIXZpc2libGUpIHsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5kaWRCZWNvbWVJ
bnZpc2libGVPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CisgICAgICAg
IGlmIChtX3RleHR1cmVVcGRhdGVUaW1lck9uSW1wbFRocmVhZCkgeworICAgICAgICAgICAgbV90
ZXh0dXJlVXBkYXRlVGltZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKKyAgICAgICAgICAgIG1fc2No
ZWR1bGVyT25JbXBsVGhyZWFkLT5kaWRUZXh0dXJlVXBkYXRlQ29tcGxldGUoKTsKKyAgICAgICAg
fQorCiAgICAgICAgIC8vIGFzIHBhcnRpYWwgb3IgYWxsIHRoZSB0ZXh0dXJlcyBtYXkgYmUgZXZp
Y3RlZCBpbiBkaWRCZWNvbWVJbnZpc2libGVPbkltcGxUaHJlYWQsCiAgICAgICAgIC8vIHNjaGVk
dWxlIGEgY29tbWl0IHdoaWNoIHdpbGwgYmUgZXhlY3V0ZWQgd2hlbiBpdCBnb2VzIHRvIHZpc2li
bGUgYWdhaW4uCiAgICAgICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXROZWVkc0NvbW1p
dCgpOwpAQCAtNDk3LDYgKzUxMCw4IEBAIGJvb2wgQ0NUaHJlYWRQcm94eTo6aGFzTW9yZVJlc291
cmNlVXBkYXRlcygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9u
SW1wbFRocmVhZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX3RleHR1cmVVcGRh
dGVUaW1lck9uSW1wbFRocmVhZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIG1f
Y3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpOwogfQog
CkBAIC01MDgsMTEgKzUyMywxMiBAQCBib29sIENDVGhyZWFkUHJveHk6OmNhbkRyYXcoKQogICAg
IHJldHVybiBtX2xheWVyVHJlZUhvc3RJbXBsLT5jYW5EcmF3KCk7CiB9CiAKLXZvaWQgQ0NUaHJl
YWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpCit2b2lkIENDVGhy
ZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoZG91YmxlIG5leHRU
aWNrVGltZSkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0
aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIHRoaXMsIDApOwotICAgIEFTU0VSVChtX2N1cnJlbnRU
ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7Ci0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJP
bkltcGxUaHJlYWQtPnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIHRleHR1
cmVVcGRhdGVzUGVyRnJhbWUpOworICAgIG1fbmV4dFRpY2tUaW1lID0gbmV4dFRpY2tUaW1lOwor
ICAgIGlmIChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVwZGF0
ZXMoKSkKKyAgICAgICAgdGV4dHVyZVVwZGF0ZU9uSW1wbFRocmVhZCgpOwogfQogCiB2b2lkIEND
VGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpCkBAIC01MjMsNyArNTM5LDcgQEAg
dm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQoKQogICAgIEFTU0VSVCht
X2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CiAKICAgICBtX2N1cnJlbnRUZXh0
dXJlVXBkYXRlck9uSW1wbFRocmVhZC5jbGVhcigpOwotCisgICAgbV90ZXh0dXJlVXBkYXRlVGlt
ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKIAogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2lu
Q29tbWl0KCk7CiAKQEAgLTY3Myw3ICs2ODksNiBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmluaXRp
YWxpemVJbXBsT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogICAg
IFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1wbE9uSW1wbFRocmVhZCIs
IHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgbV9sYXllclRyZWVI
b3N0SW1wbCA9IG1fbGF5ZXJUcmVlSG9zdC0+Y3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwodGhpcyk7
Ci0gICAgY29uc3QgZG91YmxlIGRpc3BsYXlSZWZyZXNoSW50ZXJ2YWwgPSAxLjAgLyA2MC4wOwog
ICAgIE93blB0cjxDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXI+IGZyYW1lUmF0ZUNvbnRyb2xsZXIgPSBh
ZG9wdFB0cihuZXcgQ0NGcmFtZVJhdGVDb250cm9sbGVyKENDRGVsYXlCYXNlZFRpbWVTb3VyY2U6
OmNyZWF0ZShkaXNwbGF5UmVmcmVzaEludGVydmFsLCBDQ1Byb3h5OjppbXBsVGhyZWFkKCkpKSk7
CiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQgPSBDQ1NjaGVkdWxlcjo6Y3JlYXRlKHRoaXMs
IGZyYW1lUmF0ZUNvbnRyb2xsZXIucmVsZWFzZSgpKTsKICAgICBtX3NjaGVkdWxlck9uSW1wbFRo
cmVhZC0+c2V0VmlzaWJsZShtX2xheWVyVHJlZUhvc3RJbXBsLT52aXNpYmxlKCkpOwpAQCAtNzEx
LDYgKzcyNiw4IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9uSW1w
bFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvCiAgICAgVFJBQ0VfRVZFTlQoIkND
VGhyZWFkUHJveHk6OmxheWVyVHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsK
ICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRl
Q29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50
c1RleHR1cmVBbGxvY2F0b3IoKSk7CisgICAgbV9wZW5kaW5nUXVlcmllc0xpc3QuY2xlYXIoKTsK
KyAgICBtX2F2YWlsYWJsZVF1ZXJpZXNMaXN0LmNsZWFyKCk7CiAgICAgbV9sYXllclRyZWVIb3N0
SW1wbC5jbGVhcigpOwogICAgIG1faW5wdXRIYW5kbGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CiAg
ICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKQEAgLTc0MSw0ICs3NTgsMjA5IEBA
IHZvaWQgQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxl
dGlvbkV2ZW50KiBjb21wbGV0aW9uLCBHCiAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiB9CiAK
K2NsYXNzIENDVGV4dHVyZVVwZGF0ZVF1ZXJ5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093
blB0cjxDQ1RleHR1cmVVcGRhdGVRdWVyeT4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0KSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRlUXVlcnkoY29udGV4dCkp
OyB9CisKKyAgICB2aXJ0dWFsIH5DQ1RleHR1cmVVcGRhdGVRdWVyeSgpCisgICAgeworICAgICAg
ICBBU1NFUlQobV9xdWVyeUlkKTsKKyAgICAgICAgZXh0ZW5zaW9ucygpLT5kZWxldGVRdWVyeUVY
VChtX3F1ZXJ5SWQpOworICAgIH0KKworICAgIHZvaWQgYmVnaW4oKQorICAgIHsKKyAgICAgICAg
ZXh0ZW5zaW9ucygpLT5iZWdpblF1ZXJ5RVhUKEV4dGVuc2lvbnMzRENocm9taXVtOjpDT01NQU5E
U19JU1NVRURfQ0hST01JVU0sIG1fcXVlcnlJZCk7CisgICAgfQorCisgICAgdm9pZCBlbmQodW5z
aWduZWQgY29tbWFuZHMpCisgICAgeworICAgICAgICBleHRlbnNpb25zKCktPmVuZFF1ZXJ5RVhU
KEV4dGVuc2lvbnMzRENocm9taXVtOjpDT01NQU5EU19JU1NVRURfQ0hST01JVU0pOworICAgICAg
ICBtX2NvbW1hbmRzID0gY29tbWFuZHM7CisKKyAgICAgICAgLy8gTmVlZCB0byBmbHVzaCB0byBl
bnN1cmUgdGhhdCBlbmRRdWVyeUVYVCBpcyBpc3N1ZWQgYXMgc29vbiBhcworICAgICAgICAvLyBw
b3NzaWJsZSBvbiB0aGUgR1BVIHByb2Nlc3Mgc2lkZS4KKyAgICAgICAgbV9jb250ZXh0LT5mbHVz
aCgpOworICAgIH0KKworICAgIGJvb2wgaXNBdmFpbGFibGUoKQorICAgIHsKKyAgICAgICAgdW5z
aWduZWQgYSA9IDA7CisgICAgICAgIGV4dGVuc2lvbnMoKS0+Z2V0UXVlcnlPYmplY3R1aXZFWFQo
bV9xdWVyeUlkLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6UVVFUllfUkVTVUxUX0FWQUlMQUJMRV9F
WFQsICZhKTsKKyAgICAgICAgcmV0dXJuIGE7CisgICAgfQorCisgICAgLy8gUmV0dXJuIHNlY29u
ZHMgLyBjb21tYW5kLgorICAgIGRvdWJsZSByZXN1bHQoKQorICAgIHsKKyAgICAgICAgaWYgKCFp
c0F2YWlsYWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIG1fcmVzdWx0OworCisgICAgICAgIHVu
c2lnbmVkIHIgPSAwOworICAgICAgICBleHRlbnNpb25zKCktPmdldFF1ZXJ5T2JqZWN0dWl2RVhU
KG1fcXVlcnlJZCwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OlFVRVJZX1JFU1VMVF9FWFQsICZyKTsK
KyAgICAgICAgQVNTRVJUKG1fY29tbWFuZHMpOworICAgICAgICAvLyBSZXN1bHQgaXMgbWljcm9z
ZWNvbmRzIGVsYXBzZWQuCisgICAgICAgIG1fcmVzdWx0ID0gciAvIHN0YXRpY19jYXN0PGRvdWJs
ZT4obV9jb21tYW5kcyAqIDEwMDAwMDApOworICAgICAgICByZXR1cm4gbV9yZXN1bHQ7CisgICAg
fQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IENDVGV4dHVyZVVwZGF0ZVF1ZXJ5KEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0KQorICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICAg
ICAsIG1fcXVlcnlJZCgwKQorICAgICAgICAsIG1fY29tbWFuZHMoMSkKKyAgICAgICAgLCBtX3Jl
c3VsdCgwKQorICAgIHsKKyAgICAgICAgbV9xdWVyeUlkID0gZXh0ZW5zaW9ucygpLT5jcmVhdGVR
dWVyeUVYVCgpOworICAgIH0KKworICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25z
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1
bSo+KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICB9CisKKyAgICBHcmFwaGljc0Nv
bnRleHQzRCogbV9jb250ZXh0OworICAgIHVuc2lnbmVkIG1fcXVlcnlJZDsKKyAgICB1bnNpZ25l
ZCBtX2NvbW1hbmRzOworICAgIGRvdWJsZSBtX3Jlc3VsdDsKK307CisKK2NsYXNzIENDVGhyZWFk
UHJveHlUZXh0dXJlVXBkYXRlVGltZXIgOiBwdWJsaWMgQ0NUaW1lciwgQ0NUaW1lckNsaWVudCB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaHJlYWRQcm94eVRleHR1cmVVcGRh
dGVUaW1lcj4gY3JlYXRlKENDVGhyZWFkUHJveHkqIHByb3h5KSB7IHJldHVybiBhZG9wdFB0cihu
ZXcgQ0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVUaW1lcihwcm94eSkpOyB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgb25UaW1lckZpcmVkKCkKKyAgICB7CisgICAgICAgIG1fcHJveHktPnRleHR1cmVV
cGRhdGVDb21wbGV0ZU9uSW1wbFRocmVhZCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBleHBs
aWNpdCBDQ1RocmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRpbWVyKENDVGhyZWFkUHJveHkqIHByb3h5
KQorICAgICAgICA6IENDVGltZXIoQ0NQcm94eTo6aW1wbFRocmVhZCgpLCB0aGlzKQorICAgICAg
ICAsIG1fcHJveHkocHJveHkpCisgICAgeworICAgIH0KKworICAgIENDVGhyZWFkUHJveHkqIG1f
cHJveHk7Cit9OworCisvLyBGSVhNRTogTmVlZCB0byBpbXBsZW1lbnQgc29tZXRoaW5nIG1vcmUg
YWR2YW5jZWQgdGhhbiByZXR1cm5pbmcgdGhlCisvLyBhdmVyYWdlIG9mIG1vc3QgcmVjZW50IHF1
ZXJpZXMsIHdoaWNoIHJlc3VsdHMgaW4gdmVyeSB2b2xhdGlsZSBudW1iZXJzLgorZG91YmxlIEND
VGhyZWFkUHJveHk6OmN1cnJlbnRUZXh0dXJlVXBkYXRlVGltZSgpCit7CisgICAgZG91YmxlIHZh
bHVlID0gMC4wOworICAgIHNpemVfdCBudW1RdWVyaWVzID0gbV9hdmFpbGFibGVRdWVyaWVzTGlz
dC5zaXplKCkgKyBtX3BlbmRpbmdRdWVyaWVzTGlzdC5zaXplKCk7CisgICAgaWYgKG51bVF1ZXJp
ZXMpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2F2YWlsYWJsZVF1ZXJpZXNM
aXN0LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBkb3VibGUgcmVzdWx0ID0gbV9hdmFpbGFi
bGVRdWVyaWVzTGlzdFtpXS0+cmVzdWx0KCk7CisgICAgICAgICAgICB2YWx1ZSArPSByZXN1bHQ7
CisgICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BlbmRpbmdRdWVy
aWVzTGlzdC5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgZG91YmxlIHJlc3VsdCA9IG1fcGVu
ZGluZ1F1ZXJpZXNMaXN0W2ldLT5yZXN1bHQoKTsKKyAgICAgICAgICAgIHZhbHVlICs9IHJlc3Vs
dDsKKyAgICAgICAgfQorCisgICAgICAgIHZhbHVlIC89IG51bVF1ZXJpZXM7CisgICAgfQorCisg
ICAgcmV0dXJuIHZhbHVlOworfQorCitkb3VibGUgQ0NUaHJlYWRQcm94eTo6cHJvY2Vzc1RleHR1
cmVVcGRhdGVRdWVyaWVzKCkKK3sKKyAgICB3aGlsZSAoIW1fcGVuZGluZ1F1ZXJpZXNMaXN0Lmlz
RW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fcGVuZGluZ1F1ZXJpZXNMaXN0Lmxhc3QoKS0+aXNB
dmFpbGFibGUoKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIG1fYXZhaWxhYmxlUXVl
cmllc0xpc3QucHJlcGVuZChtX3BlbmRpbmdRdWVyaWVzTGlzdC5sYXN0KCkucmVsZWFzZSgpKTsK
KyAgICAgICAgbV9wZW5kaW5nUXVlcmllc0xpc3QucmVtb3ZlTGFzdCgpOworICAgIH0KKworICAg
IHJldHVybiBjdXJyZW50VGV4dHVyZVVwZGF0ZVRpbWUoKTsKK30KKworLy8gVGhpcyBmdW5jdGlv
biBpcyBjYWxsZWQgd2hlbiB0aGUgdGV4dHVyZSB1cGRhdGUgdGltZSBpcyBsYXJnZSBjb21wYXJl
ZCB0bworLy8gdGhlIGRpc3BsYXkgcmVmcmVzaCBpbnRlcnZhbC4gVGhlIHVzZWZ1bG5lc3Mgb2Yg
dGhpcyBmdW5jdGlvbiBpcyBjdXJyZW50bHkKKy8vIGxpbWl0ZWQgdG8gdHJhY2luZyBidXQgY291
bGQgcG90ZW50aWFsbHkgYWRqdXN0IHRoZSBudW1iZXIgb2YgdXBkYXRlcyB3ZSBkbworLy8gcGVy
IGZyYW1lIHRvIGJldHRlciBtYXRjaCBzeXN0ZW0gcGVyZm9ybWFuY2UuCit2b2lkIENDVGhyZWFk
UHJveHk6OmFkanVzdFRleHR1cmVVcGRhdGVzUGVyRnJhbWUoZG91YmxlIHRleHR1cmVVcGRhdGVU
aW1lKQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjphZGp1c3RUZXh0dXJlVXBk
YXRlc1BlckZyYW1lIiwgdGhpcywgMCk7Cit9CisKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6dGV4dHVy
ZVVwZGF0ZU9uSW1wbFRocmVhZCgpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6
OnRleHR1cmVVcGRhdGVPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoaXNJbXBs
VGhyZWFkKCkpOworICAgIEFTU0VSVCghbV90ZXh0dXJlVXBkYXRlVGltZXJPbkltcGxUaHJlYWQp
OworICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CisgICAg
QVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRl
cygpKTsKKworICAgIC8vIFByb2Nlc3MgcGVuZGluZyBxdWVyaWVzIHRvIGRldGVybWluZSB0aGUg
Y3VycmVuIHRleHR1cmUgdXBkYXRlIHRpbWUuCisgICAgZG91YmxlIHRleHR1cmVVcGRhdGVUaW1l
ID0gcHJvY2Vzc1RleHR1cmVVcGRhdGVRdWVyaWVzKCk7CisgICAgZG91YmxlIG1heFRleHR1cmVV
cGRhdGVUaW1lID0gdGV4dHVyZVVwZGF0ZVRpbWUgKiB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lOwor
CisgICAgLy8gQ2xhbXAgbWF4VGV4dHVyZVVwZGF0ZVRpbWUgdG8gMy80IG9mIGRpc3BsYXlSZWZy
ZXNoSW50ZXJ2YWwuCisgICAgaWYgKG1heFRleHR1cmVVcGRhdGVUaW1lID4gZGlzcGxheVJlZnJl
c2hJbnRlcnZhbCAqIDAuNzUpIHsKKyAgICAgICAgbWF4VGV4dHVyZVVwZGF0ZVRpbWUgPSBkaXNw
bGF5UmVmcmVzaEludGVydmFsICogMC43NTsKKyAgICAgICAgYWRqdXN0VGV4dHVyZVVwZGF0ZXNQ
ZXJGcmFtZSh0ZXh0dXJlVXBkYXRlVGltZSk7CisgICAgfQorCisgICAgLy8gRW5kIHVwZGF0ZSB3
aGVuIHdlIGdldCB0b28gY2xvc2UgdG8gdGhlIHRpY2sgdGltZS4KKyAgICBkb3VibGUgdGV4dHVy
ZVVwZGF0ZVN0b3BUaW1lID0gbV9uZXh0VGlja1RpbWUgLSBtYXhUZXh0dXJlVXBkYXRlVGltZTsK
KyAgICBkb3VibGUgbm93ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgaWYg
KG5vdyA+PSB0ZXh0dXJlVXBkYXRlU3RvcFRpbWUpIHsKKyAgICAgICAgQ0NQcm94eTo6aW1wbFRo
cmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6
OnRleHR1cmVVcGRhdGVDb21wbGV0ZU9uSW1wbFRocmVhZCkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgLy8gTnVtYmVyIG9mIGZ1bGwgc2l6ZSB0ZXh0dXJlIHVwZGF0ZXMgdG8gcGVy
Zm9ybS4KKyAgICBzaXplX3QgdXBkYXRlcyA9IG1pbihtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9u
SW1wbFRocmVhZC0+bnVtVXBkYXRlcygpLCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lKTsKKworICAg
IE93blB0cjxDQ1RleHR1cmVVcGRhdGVRdWVyeT4gcXVlcnk7CisKKyAgICAvLyBPbmx5IG1lYXN1
cmUgZnVsbCBzaXplIHRleHR1cmUgdXBkYXRlcy4KKyAgICBpZiAodXBkYXRlcyA9PSB0ZXh0dXJl
VXBkYXRlc1BlckZyYW1lKSB7CisgICAgICAgIGlmICghbV9hdmFpbGFibGVRdWVyaWVzTGlzdC5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHF1ZXJ5ID0gbV9hdmFpbGFibGVRdWVyaWVzTGlzdC5s
YXN0KCkucmVsZWFzZSgpOworICAgICAgICAgICAgbV9hdmFpbGFibGVRdWVyaWVzTGlzdC5yZW1v
dmVMYXN0KCk7CisgICAgICAgIH0gZWxzZSBpZiAobV9wZW5kaW5nUXVlcmllc0xpc3Quc2l6ZSgp
IDwgbWF4UGVuZGluZ1RleHR1cmVVcGRhdGVRdWVyaWVzKQorICAgICAgICAgICAgcXVlcnkgPSBD
Q1RleHR1cmVVcGRhdGVRdWVyeTo6Y3JlYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQo
KSk7CisKKyAgICAgICAgaWYgKCFxdWVyeSkgeworICAgICAgICAgICAgY29uc3QgZG91YmxlIHRl
eHR1cmVVcGRhdGVSZXRyeUludGVydmFsTXMgPSAxLjA7CisKKyAgICAgICAgICAgIENDUHJveHk6
OmltcGxUaHJlYWQoKS0+cG9zdERlbGF5ZWRUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAm
Q0NUaHJlYWRQcm94eTo6dGV4dHVyZVVwZGF0ZU9uSW1wbFRocmVhZCksIHRleHR1cmVVcGRhdGVS
ZXRyeUludGVydmFsTXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQor
CisgICAgaWYgKHF1ZXJ5KQorICAgICAgICBxdWVyeS0+YmVnaW4oKTsKKworICAgIG1fY3VycmVu
dFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+
Y29udGV4dCgpLCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lKTsKKworICAgIGlmIChxdWVyeSkgewor
ICAgICAgICBxdWVyeS0+ZW5kKHVwZGF0ZXMpOworICAgICAgICBtX3BlbmRpbmdRdWVyaWVzTGlz
dC5wcmVwZW5kKHF1ZXJ5LnJlbGVhc2UoKSk7CisgICAgfQorCisgICAgLy8gU2V0IGNvbXBsZXRp
b24gdGltZXIgd2hlbiBtb3JlIHVwZGF0ZXMgYXJlIGF2YWlsYWJsZS4KKyAgICBpZiAobV9jdXJy
ZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCkpIHsKKyAgICAg
ICAgQVNTRVJUKCFtX3RleHR1cmVVcGRhdGVUaW1lck9uSW1wbFRocmVhZCk7CisgICAgICAgIEFT
U0VSVCh1cGRhdGVzKTsKKworICAgICAgICBtX3RleHR1cmVVcGRhdGVUaW1lck9uSW1wbFRocmVh
ZCA9IENDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGltZXI6OmNyZWF0ZSh0aGlzKTsKKyAgICAg
ICAgbV90ZXh0dXJlVXBkYXRlVGltZXJPbkltcGxUaHJlYWQtPnN0YXJ0T25lU2hvdCh0ZXh0dXJl
VXBkYXRlVGltZSAqIHVwZGF0ZXMpOworICAgIH0KK30KKwordm9pZCBDQ1RocmVhZFByb3h5Ojp0
ZXh0dXJlVXBkYXRlQ29tcGxldGVPbkltcGxUaHJlYWQoKQoreworICAgIEFTU0VSVChpc0ltcGxU
aHJlYWQoKSk7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnRleHR1cmVVcGRhdGVD
b21wbGV0ZU9uSW1wbFRocmVhZCIsIHRoaXMsIDApOworICAgIG1fdGV4dHVyZVVwZGF0ZVRpbWVy
T25JbXBsVGhyZWFkLmNsZWFyKCk7CisgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmRpZFRl
eHR1cmVVcGRhdGVDb21wbGV0ZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmgKaW5kZXggNDg2MWY3OTA5MjYwMWMwMDVhMDUwNTIwZDU0N2VkMjFj
ZGY5ZDdhMC4uNTM3NjgwMzE2NzA3MjU0Y2JlMWIzYjRmN2Q0ODFmOGVhODIwYjE5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuaApAQCAtNDAsOSArNDAsMTEgQEAgY2xhc3MgQ0NJbnB1dEhhbmRs
ZXI7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7CiBjbGFzcyBDQ1NjaGVkdWxlcjsKIGNsYXNzIEND
U2NvcGVkVGhyZWFkUHJveHk7CitjbGFzcyBDQ1RleHR1cmVVcGRhdGVRdWVyeTsKIGNsYXNzIEND
VGV4dHVyZVVwZGF0ZXI7CiBjbGFzcyBDQ1RocmVhZDsKIGNsYXNzIENDVGhyZWFkUHJveHlDb250
ZXh0UmVjcmVhdGlvblRpbWVyOworY2xhc3MgQ0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVUaW1l
cjsKIAogY2xhc3MgQ0NUaHJlYWRQcm94eSA6IHB1YmxpYyBDQ1Byb3h5LCBDQ0xheWVyVHJlZUhv
c3RJbXBsQ2xpZW50LCBDQ1NjaGVkdWxlckNsaWVudCB7CiBwdWJsaWM6CkBAIC04MywxMyArODUs
MTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1l
KCk7CiAgICAgdmlydHVhbCBib29sIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJs
ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEZvcmNlZCgp
OwotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCk7
CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoZG91
YmxlIG5leHRUaWNrVGltZSk7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkNvbW1p
dCgpOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0
aW9uKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ0NUaHJlYWRQcm94eShDQ0xheWVyVHJl
ZUhvc3QqKTsKICAgICBmcmllbmQgY2xhc3MgQ0NUaHJlYWRQcm94eUNvbnRleHRSZWNyZWF0aW9u
VGltZXI7CisgICAgZnJpZW5kIGNsYXNzIENDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGltZXI7
CiAKICAgICAvLyBTZXQgb24gaW1wbCB0aHJlYWQsIHJlYWQgb24gbWFpbiB0aHJlYWQuCiAgICAg
c3RydWN0IEJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZSB7CkBAIC0xMjcsNiArMTMwLDExIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRGdWxsUm9vdExheWVyRGFtYWdlT25JbXBsVGhyZWFkKCk7CiAg
ICAgdm9pZCByZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBH
cmFwaGljc0NvbnRleHQzRCosIGJvb2wqIHJlY3JlYXRlU3VjY2VlZGVkLCBMYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzKik7CiAgICAgYm9vbCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEludGVy
bmFsKGJvb2wgZm9yY2VkRHJhdyk7CisgICAgZG91YmxlIGN1cnJlbnRUZXh0dXJlVXBkYXRlVGlt
ZSgpOworICAgIGRvdWJsZSBwcm9jZXNzVGV4dHVyZVVwZGF0ZVF1ZXJpZXMoKTsKKyAgICB2b2lk
IGFkanVzdFRleHR1cmVVcGRhdGVzUGVyRnJhbWUoZG91YmxlKTsKKyAgICB2b2lkIHRleHR1cmVV
cGRhdGVPbkltcGxUaHJlYWQoKTsKKyAgICB2b2lkIHRleHR1cmVVcGRhdGVDb21wbGV0ZU9uSW1w
bFRocmVhZCgpOwogCiAgICAgLy8gQWNjZXNzZWQgb24gbWFpbiB0aHJlYWQgb25seS4KICAgICBi
b29sIG1fYW5pbWF0ZVJlcXVlc3RlZDsKQEAgLTE2Nyw2ICsxNzUsMTEgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIFNldCB3aGVuIHRoZSBuZXh0IGRyYXcgc2hvdWxkIHBvc3QgZGlkQ29tbWl0QW5kRHJh
d0ZyYW1lIHRvIHRoZSBtYWluIHRocmVhZC4KICAgICBib29sIG1fbmV4dEZyYW1lSXNOZXdseUNv
bW1pdHRlZEZyYW1lT25JbXBsVGhyZWFkOworCisgICAgT3duUHRyPENDVGhyZWFkUHJveHlUZXh0
dXJlVXBkYXRlVGltZXI+IG1fdGV4dHVyZVVwZGF0ZVRpbWVyT25JbXBsVGhyZWFkOworICAgIFZl
Y3RvcjxPd25QdHI8Q0NUZXh0dXJlVXBkYXRlUXVlcnk+ID4gbV9wZW5kaW5nUXVlcmllc0xpc3Q7
CisgICAgVmVjdG9yPE93blB0cjxDQ1RleHR1cmVVcGRhdGVRdWVyeT4gPiBtX2F2YWlsYWJsZVF1
ZXJpZXNMaXN0OworICAgIGRvdWJsZSBtX25leHRUaWNrVGltZTsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZVNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aW1lU291cmNlLmgKaW5kZXggZGNjYjQ3MGE2MzgzZTMwNGRiMTE2YTViOWRmOTFkZTU2MDY4ZTA4
NS4uYzM2NGQ5MmJkMDI4YTIyZmZhOGEyYTg3ZmMxOTMwYjU4ZGVmOGU0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lU291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aW1lU291cmNlLmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRDbGllbnQoQ0NUaW1lU291cmNlQ2xpZW50KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRB
Y3RpdmUoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBhY3RpdmUoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBkb3VibGUgbmV4dFRpY2tUaW1lKCkgY29uc3QgPSAwOwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133607</attachid>
            <date>2012-03-23 18:11:43 -0700</date>
            <delta_ts>2012-03-29 23:32:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81004-20120323211142.patch</filename>
            <type>text/plain</type>
            <size>28236</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExODY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc2MjIwNTIwNDBlYzRk
NjYzNDkzOTAxYmE5YzRhMjFkYTQxMWQ3Ny4uMzUyYTg1YzlhMzM2MTliM2I4ZTUyZTdkNWQ2ZTVi
MDY3ZGFhOTU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDEyLTAzLTIzICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBV
c2UgR0xfQ0hST01JVU1fY29tbWFuZF9idWZmZXJfcXVlcnkgdG8gdGhyb3R0bGUgaW5jcmVtZW50
YWwgdGV4dHVyZSB1cGRhdGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODEwMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBIYXZlIHRocmVhZGVkIGNvbXBvc2l0b3IgdXNlIEdMX0NIUk9NSVVNX2NvbW1h
bmRfYnVmZmVyX3F1ZXJ5IHRvCisgICAgICAgIGRldGVybWluZSB0aGUgY29zdCBvZiB0ZXh0dXJl
IHVwZGF0ZXMgYW5kIHRocm90dGxlIHVwZGF0ZXMgYmFzZWQgb24KKyAgICAgICAgY29zdCBhbmQg
dGltZSB1bnRpbCBuZXh0IHZzeW5jLiBSZWR1Y2UgdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSB0byA0
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2Vk
VGltZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlbGF5QmFzZWRUaW1lU291cmNl
OjpuZXh0VGlja1RpbWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5oOgorICAgICAgICAo
Q0NEZWxheUJhc2VkVGltZVNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
RnJhbWVSYXRlQ29udHJvbGxlcjo6bmV4dFRpY2tUaW1lKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ29udHJv
bGxlci5oOgorICAgICAgICAoQ0NGcmFtZVJhdGVDb250cm9sbGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ1NjaGVkdWxlcjo6ZGlkVGV4dHVyZVVwZGF0ZUNvbXBsZXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDU2NoZWR1bGVyOjp2c3luY1RpY2spOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hl
ZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oOgorICAgICAgICAoQ0NTY2hlZHVsZXJDbGll
bnQpOgorICAgICAgICAoQ0NTY2hlZHVsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NU
ZXh0dXJlVXBkYXRlcjo6bnVtVXBkYXRlcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmg6CisgICAg
ICAgIChDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdURik6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RocmVhZFByb3h5OjpDQ1RocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkND
VGhyZWFkUHJveHk6OnNldFZpc2libGVPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6aGFzTW9yZVJlc291cmNlVXBkYXRlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1wbE9uSW1wbFRocmVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2Vk
T25JbXBsVGhyZWFkKToKKyAgICAgICAgKENDVGV4dHVyZVVwZGF0ZVF1ZXJ5KToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZVF1ZXJ5OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUZXh0dXJlVXBkYXRlUXVlcnk6On5DQ1RleHR1cmVVcGRhdGVRdWVyeSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVRdWVyeTo6YmVnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUZXh0dXJlVXBkYXRlUXVlcnk6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1
cmVVcGRhdGVRdWVyeTo6aXNBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJl
VXBkYXRlUXVlcnk6OnJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVR
dWVyeTo6Q0NUZXh0dXJlVXBkYXRlUXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJl
VXBkYXRlUXVlcnk6OmV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChD
Q1RocmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhy
ZWFkUHJveHlUZXh0dXJlVXBkYXRlVGltZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRpbWVyOjpvblRpbWVyRmlyZWQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVUaW1lcjo6Q0NUaHJlYWRQcm94eVRl
eHR1cmVVcGRhdGVUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpjdXJy
ZW50VGV4dHVyZVVwZGF0ZVRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6
cHJvY2Vzc1RleHR1cmVVcGRhdGVRdWVyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFk
UHJveHk6OmFkanVzdFRleHR1cmVVcGRhdGVzUGVyRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6dGV4dHVyZVVwZGF0ZU9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RocmVhZFByb3h5Ojp0ZXh0dXJlVXBkYXRlQ29tcGxldGVPbkltcGxUaHJlYWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NUaHJlYWRQcm94eSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lU291cmNlLmg6CisgICAgICAgIChD
Q1RpbWVTb3VyY2UpOgorCiAyMDEyLTAzLTIzICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBTdXBwb3J0IFtJbXBsZW1lbnRlZEFzXSBmb3IgYXR0cmlidXRl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA1NmE1NTlkMDU0YjY5ZjZmMmQ0ZGQwZWQ3
ODZmYzg4MzgxMTVlNjQ3Li4xYjRmMWE0NDg2Y2VhNmJkZWY5Njg4YWFkNzVmYzAwMDUzZjBkOGVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAzLTIz
ICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9t
aXVtXSBVc2UgR0xfQ0hST01JVU1fY29tbWFuZF9idWZmZXJfcXVlcnkgdG8gdGhyb3R0bGUgaW5j
cmVtZW50YWwgdGV4dHVyZSB1cGRhdGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODEwMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUcmFjayBjaGFuZ2VzIHRvIENDU2NoZWR1bGVyQ2xpZW50LgorCisg
ICAgICAgICogdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3Rz
OjpGYWtlQ0NTY2hlZHVsZXJDbGllbnQ6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJj
ZXMpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0Ry
YXdJbnNpZGVEcmF3OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKToKKyAgICAg
ICAgKFdlYktpdFRlc3RzOjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0TmVlZHNDb21taXRJbnNpZGVE
cmF3OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKToKKyAgICAgICAgKiB0ZXN0
cy9DQ1NjaGVkdWxlclRlc3RDb21tb24uaDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlQ0NU
aW1lU291cmNlOjpuZXh0VGlja1RpbWUpOgorCiAyMDEyLTAzLTIzICBKb25hdGhhbiBCYWNrZXIg
IDxiYWNrZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIHVudXNl
ZCB2YXJpYWJsZXMgZnJvbSB1bml0dGVzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2Vk
VGltZVNvdXJjZS5jcHAKaW5kZXggYjY4OGE3OGEyN2M1Nzk1MWRkOGQ2YmVmZmVlNzY2YzVkMjRm
MjNlNC4uNzA0ZWZmNGJmN2EzZDZjMDRkZWI1Y2QxZDI2NjBmYzhlMDE5ZWJjNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJh
c2VkVGltZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5jcHAKQEAgLTE2MSw0ICsxNjEsMTIg
QEAgdm9pZCBDQ0RlbGF5QmFzZWRUaW1lU291cmNlOjpwb3N0TmV4dFRpY2tUYXNrKGRvdWJsZSBu
b3cpCiAgICAgbV90aWNrVGFyZ2V0ID0gbmV3VGlja1RhcmdldDsKIH0KIAorZG91YmxlIENDRGVs
YXlCYXNlZFRpbWVTb3VyY2U6Om5leHRUaWNrVGltZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hh
c1RpY2tUYXJnZXQpCisgICAgICAgIHJldHVybiBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KTsKKworICAgIHJldHVybiBtX3RpY2tUYXJnZXQ7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
RGVsYXlCYXNlZFRpbWVTb3VyY2UuaAppbmRleCA1ZjFiMmM0ZjJmZGE3YmVkNTRmNWY0NDM1MDY0
NWYzNWY3OTZlNWRmLi4zODBiZTZiYzBkMWU2YTEyZWE1YjU1N2Y2YTczNGFjN2RmNzRiNTYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RlbGF5QmFzZWRUaW1lU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5oCkBAIC00Nyw2ICs0Nyw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpOwogICAgIHZpcnR1
YWwgYm9vbCBhY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlICE9IFNUQVRFX0lOQUNUSVZF
OyB9CiAKKyAgICB2aXJ0dWFsIGRvdWJsZSBuZXh0VGlja1RpbWUoKSBjb25zdDsKKwogICAgIC8v
IENDVGltZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCB2b2lkIG9uVGltZXJG
aXJlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmNwcAppbmRl
eCBkYjZkOTVjYzAwY2MxNTU2OGUwY2U1NjdmNDQ5NzhhOTI3OTI0YmU4Li5lYzNjMjQ3ODA5M2Fk
OGM4N2I2ODQ4MDYwMjI4NDY4NDU5ZDdmOGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVS
YXRlQ29udHJvbGxlci5jcHAKQEAgLTEwNSw0ICsxMDUsOSBAQCB2b2lkIENDRnJhbWVSYXRlQ29u
dHJvbGxlcjo6ZGlkQWJvcnRBbGxQZW5kaW5nRnJhbWVzKCkKICAgICBtX251bUZyYW1lc1BlbmRp
bmcgPSAwOwogfQogCitkb3VibGUgQ0NGcmFtZVJhdGVDb250cm9sbGVyOjpuZXh0VGlja1RpbWUo
KQoreworICAgIHJldHVybiBtX3RpbWVTb3VyY2UtPm5leHRUaWNrVGltZSgpOworfQorCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0ZyYW1lUmF0ZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5oCmluZGV4IDU3MzRkNGFhNmU5Zjc0
NjFhNGM2NmM2ZTBhMTg2MGRhMzBkNDk2NmUuLjdhMWRhZDQzOWFmYjI4YjNmNDM0YjM3ODk2YTJj
NjlkOGY0YzI2YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5oCkBA
IC02NCw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZpbmlzaEZyYW1lKCk7CiAgICAg
dm9pZCBkaWRBYm9ydEFsbFBlbmRpbmdGcmFtZXMoKTsKICAgICB2b2lkIHNldE1heEZyYW1lc1Bl
bmRpbmcoaW50KTsgLy8gMCBmb3IgdW5saW1pdGVkLgorICAgIGRvdWJsZSBuZXh0VGlja1RpbWUo
KTsKIAogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXJU
aW1lU291cmNlQWRhcHRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAppbmRleCAxM2I3NDFlYThj
M2ZmNDhjODc2Y2M3MmNiNmE0ZTBhZGEzY2IyZmEwLi5lZTRjNGE2ZWFhZDk0NjYzZDM5MTk1OTVm
Y2Q3MTgzZjA4ZTJhM2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCkBAIC0xMDcsMTQgKzEw
NywxOSBAQCB2b2lkIENDU2NoZWR1bGVyOjpkaWRSZWNyZWF0ZUNvbnRleHQoKQogICAgIHByb2Nl
c3NTY2hlZHVsZWRBY3Rpb25zKCk7CiB9CiAKLXZvaWQgQ0NTY2hlZHVsZXI6OnZzeW5jVGljaygp
Cit2b2lkIENDU2NoZWR1bGVyOjpkaWRUZXh0dXJlVXBkYXRlQ29tcGxldGUoKQogeworICAgIFRS
QUNFX0VWRU5UKCJDQ1NjaGVkdWxlcjo6ZGlkVGV4dHVyZVVwZGF0ZUNvbXBsZXRlIiwgdGhpcywg
MCk7CiAgICAgaWYgKG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcpIHsKICAgICAgICAgbV91
cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IGZhbHNlOwogICAgICAgICBtX3N0YXRlTWFjaGlu
ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShtX2NsaWVudC0+aGFzTW9yZVJlc291
cmNlVXBkYXRlcygpKTsKICAgICB9Ci0gICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjp2c3lu
Y1RpY2siLCB0aGlzLCAwKTsKKyAgICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOworfQogCit2
b2lkIENDU2NoZWR1bGVyOjp2c3luY1RpY2soKQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVk
dWxlcjo6dnN5bmNUaWNrIiwgdGhpcywgMCk7CiAgICAgbV9zdGF0ZU1hY2hpbmUuZGlkRW50ZXJW
U3luYygpOwogICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7CiAgICAgbV9zdGF0ZU1hY2hp
bmUuZGlkTGVhdmVWU3luYygpOwpAQCAtMTQ4LDcgKzE1Myw3IEBAIHZvaWQgQ0NTY2hlZHVsZXI6
OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCkKICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVs
ZWRBY3Rpb25CZWdpbkZyYW1lKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNF
UzoKLSAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3Vy
Y2VzKCk7CisgICAgICAgICAgICBtX2NsaWVudC0+c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJl
c291cmNlcyhtX2ZyYW1lUmF0ZUNvbnRyb2xsZXItPm5leHRUaWNrVGltZSgpKTsKICAgICAgICAg
ICAgIGlmICghbV9jbGllbnQtPmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSkgewogICAgICAgICAg
ICAgICAgIC8vIElmIHdlIHdlcmUganVzdCB0b2xkIHRvIHVwZGF0ZSByZXNvdXJjZXMsIGJ1dCB0
aGVyZSBhcmUgbm8KICAgICAgICAgICAgICAgICAvLyBtb3JlIHBlbmRpbmcsIHRoZW4gdGVsbCB0
aGUgc3RhdGUgbWFjaGluZSB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKaW5kZXggYzg3NmUy
MGJjODc3OGRjNzlhZjM4OWMwYjlhOWNiYzNhY2JhNjk2Zi4uYTEzNGFkZGZiMmIxM2RlMzU5NTNl
ZmQ3YTM4ZDFkYmZkZTRhYWViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCkBAIC00Myw3ICs0Myw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgp
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJZlBvc3Np
YmxlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEZv
cmNlZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJl
c291cmNlcygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9y
ZVJlc291cmNlcyhkb3VibGUgbmV4dFRpY2tUaW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNj
aGVkdWxlZEFjdGlvbkNvbW1pdCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0
aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbigpID0gMDsKIApAQCAtODEsNiArODEsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkaWRMb3NlQ29udGV4dCgpOwogICAgIHZvaWQgZGlkUmVjcmVhdGVDb250
ZXh0KCk7CiAKKyAgICB2b2lkIGRpZFRleHR1cmVVcGRhdGVDb21wbGV0ZSgpOworCiAgICAgYm9v
bCBjb21taXRQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZU1hY2hpbmUuY29tbWl0UGVu
ZGluZygpOyB9CiAgICAgYm9vbCByZWRyYXdQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZU1hY2hpbmUucmVkcmF3UGVuZGluZygpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRl
ci5jcHAKaW5kZXggNjZlMDhjOGJkOTNmMTgyNmEzOWI1NTNjMjk2NTBhODNhYzA5ZThlYS4uZmRm
MWI2YmQ3M2M3YTJlMWVmZDRmNTdkNjY3ZDE0MjYwZGNmN2E5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlVXBkYXRlci5jcHAKQEAgLTc0LDYgKzc0LDExIEBAIGJvb2wgQ0NUZXh0dXJlVXBkYXRl
cjo6aGFzTW9yZVVwZGF0ZXMoKSBjb25zdAogICAgIHJldHVybiBtX2VudHJpZXMuc2l6ZSgpIHx8
IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpOwogfQogCitzaXplX3QgQ0NUZXh0dXJlVXBkYXRlcjo6
bnVtVXBkYXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZW50cmllcy5zaXplKCkgLSBtX2Vu
dHJ5SW5kZXg7Cit9CisKIGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBzaXplX3QgY291bnQpCiB7CiAgICAgc2l6ZV90IGluZGV4OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCmluZGV4IGRiYjUyYzliYWQyMDQzNGRkYmY3NGM2Mjhh
NDQ0NWU5ZDdlOTg3ZDIuLjMxODY4MjE5Y2ZmZWEyN2VjYjRhMmQ2ZWZiNTc1ZDVjNWExOTI0YmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKQEAgLTQ1LDYgKzQ1LDkgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBoYXNNb3JlVXBkYXRlcygpIGNvbnN0OwogCisgICAgLy8gTnVtYmVyIG9m
IGZ1bGwgc2l6ZSB0ZXh0dXJlIHVwZGF0ZXMgbGVmdCB0byBwcm9jZXNzLgorICAgIHNpemVfdCBu
dW1VcGRhdGVzKCkgY29uc3Q7CisKICAgICAvLyBVcGRhdGUgc29tZSB0ZXh0dXJlcy4gUmV0dXJu
cyB0cnVlIGlmIG1vcmUgdGV4dHVyZXMgbGVmdCB0byBwcm9jZXNzLgogICAgIGJvb2wgdXBkYXRl
KEdyYXBoaWNzQ29udGV4dDNEKiwgc2l6ZV90IGNvdW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmNwcAppbmRleCBkY2ZhM2JkMzVlZjg1MTc2ODE2NjkxNGY0M2RlYTMwOGNlZWZiYWE1Li4y
MGFiYWM4M2NkZTIwMzA2YjEwMGY0NGJkNWZkN2U2MDU4ZjU3ZmFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRQ
cm94eS5oIgogCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJj
Yy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmgiCkBAIC00NSwxMSArNDYsMTcgQEAgbmFtZXNwYWNl
IHsKIAogLy8gTnVtYmVyIG9mIHRleHR1cmVzIHRvIHVwZGF0ZSB3aXRoIGVhY2ggY2FsbCB0bwog
Ly8gc2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpLgotc3RhdGljIGNvbnN0IHNp
emVfdCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lID0gMzI7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHRl
eHR1cmVVcGRhdGVzUGVyRnJhbWUgPSA0OwogCiAvLyBNZWFzdXJlZCBpbiBzZWNvbmRzLgogc3Rh
dGljIGNvbnN0IGRvdWJsZSBjb250ZXh0UmVjcmVhdGlvblRpY2tSYXRlID0gMC4wMzsKIAorLy8g
TnVtYmVyIG9mIHBlbmRpbmcgdGV4dHVyZSB1cGRhdGUgcXVlcmllcyB0byBhbGxvdy4KK3N0YXRp
YyBjb25zdCBzaXplX3QgbWF4UGVuZGluZ1RleHR1cmVVcGRhdGVRdWVyaWVzID0gMjsKKworLy8g
TWVhc3VyZWQgaW4gc2Vjb25kcy4KK2NvbnN0IGRvdWJsZSBkaXNwbGF5UmVmcmVzaEludGVydmFs
ID0gMS4wIC8gNjAuMDsKKwogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTczLDYgKzgwLDcgQEAgQ0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94eShD
Q0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpCiAgICAgLCBtX2ZpbmlzaEFsbFJlbmRlcmlu
Z0NvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCgwKQogICAgICwgbV9jb21taXRDb21wbGV0aW9u
RXZlbnRPbkltcGxUaHJlYWQoMCkKICAgICAsIG1fbmV4dEZyYW1lSXNOZXdseUNvbW1pdHRlZEZy
YW1lT25JbXBsVGhyZWFkKGZhbHNlKQorICAgICwgbV9uZXh0VGlja1RpbWUoMCkKIHsKICAgICBU
UkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94eSIsIHRoaXMsIDApOwogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC0zMjQsNiArMzMyLDExIEBAIHZvaWQgQ0NUaHJl
YWRQcm94eTo6c2V0VmlzaWJsZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxl
dGlvbiwgYm9vbCB2CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c2V0VmlzaWJsZSh2aXNpYmxl
KTsKICAgICBpZiAoIXZpc2libGUpIHsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5kaWRCZWNv
bWVJbnZpc2libGVPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CisgICAg
ICAgIGlmIChtX3RleHR1cmVVcGRhdGVUaW1lck9uSW1wbFRocmVhZCkgeworICAgICAgICAgICAg
bV90ZXh0dXJlVXBkYXRlVGltZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKKyAgICAgICAgICAgIG1f
c2NoZWR1bGVyT25JbXBsVGhyZWFkLT5kaWRUZXh0dXJlVXBkYXRlQ29tcGxldGUoKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIC8vIGFzIHBhcnRpYWwgb3IgYWxsIHRoZSB0ZXh0dXJlcyBtYXkgYmUg
ZXZpY3RlZCBpbiBkaWRCZWNvbWVJbnZpc2libGVPbkltcGxUaHJlYWQsCiAgICAgICAgIC8vIHNj
aGVkdWxlIGEgY29tbWl0IHdoaWNoIHdpbGwgYmUgZXhlY3V0ZWQgd2hlbiBpdCBnb2VzIHRvIHZp
c2libGUgYWdhaW4uCiAgICAgICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXROZWVkc0Nv
bW1pdCgpOwpAQCAtNDk3LDYgKzUxMCw4IEBAIGJvb2wgQ0NUaHJlYWRQcm94eTo6aGFzTW9yZVJl
c291cmNlVXBkYXRlcygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRl
ck9uSW1wbFRocmVhZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX3RleHR1cmVV
cGRhdGVUaW1lck9uSW1wbFRocmVhZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJu
IG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpOwog
fQogCkBAIC01MDgsMTEgKzUyMywxMiBAQCBib29sIENDVGhyZWFkUHJveHk6OmNhbkRyYXcoKQog
ICAgIHJldHVybiBtX2xheWVyVHJlZUhvc3RJbXBsLT5jYW5EcmF3KCk7CiB9CiAKLXZvaWQgQ0NU
aHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpCit2b2lkIEND
VGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoZG91YmxlIG5l
eHRUaWNrVGltZSkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVk
QWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIHRoaXMsIDApOwotICAgIEFTU0VSVChtX2N1cnJl
bnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7Ci0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0
ZXJPbkltcGxUaHJlYWQtPnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIHRl
eHR1cmVVcGRhdGVzUGVyRnJhbWUpOworICAgIG1fbmV4dFRpY2tUaW1lID0gbmV4dFRpY2tUaW1l
OworICAgIGlmIChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVw
ZGF0ZXMoKSkKKyAgICAgICAgdGV4dHVyZVVwZGF0ZU9uSW1wbFRocmVhZCgpOwogfQogCiB2b2lk
IENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpCkBAIC01MjMsNyArNTM5LDcg
QEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQoKQogICAgIEFTU0VS
VChtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CiAKICAgICBtX2N1cnJlbnRU
ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5jbGVhcigpOwotCisgICAgbV90ZXh0dXJlVXBkYXRl
VGltZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKIAogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJl
Z2luQ29tbWl0KCk7CiAKQEAgLTY3Myw3ICs2ODksNiBAQCB2b2lkIENDVGhyZWFkUHJveHk6Omlu
aXRpYWxpemVJbXBsT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQog
ICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1wbE9uSW1wbFRocmVh
ZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgbV9sYXllclRy
ZWVIb3N0SW1wbCA9IG1fbGF5ZXJUcmVlSG9zdC0+Y3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwodGhp
cyk7Ci0gICAgY29uc3QgZG91YmxlIGRpc3BsYXlSZWZyZXNoSW50ZXJ2YWwgPSAxLjAgLyA2MC4w
OwogICAgIE93blB0cjxDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXI+IGZyYW1lUmF0ZUNvbnRyb2xsZXIg
PSBhZG9wdFB0cihuZXcgQ0NGcmFtZVJhdGVDb250cm9sbGVyKENDRGVsYXlCYXNlZFRpbWVTb3Vy
Y2U6OmNyZWF0ZShkaXNwbGF5UmVmcmVzaEludGVydmFsLCBDQ1Byb3h5OjppbXBsVGhyZWFkKCkp
KSk7CiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQgPSBDQ1NjaGVkdWxlcjo6Y3JlYXRlKHRo
aXMsIGZyYW1lUmF0ZUNvbnRyb2xsZXIucmVsZWFzZSgpKTsKICAgICBtX3NjaGVkdWxlck9uSW1w
bFRocmVhZC0+c2V0VmlzaWJsZShtX2xheWVyVHJlZUhvc3RJbXBsLT52aXNpYmxlKCkpOwpAQCAt
NzExLDYgKzcyNiw4IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9u
SW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvCiAgICAgVFJBQ0VfRVZFTlQo
IkNDVGhyZWFkUHJveHk6OmxheWVyVHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQiLCB0aGlzLCAw
KTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVs
ZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250
ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CisgICAgbV9wZW5kaW5nUXVlcmllc0xpc3QuY2xlYXIo
KTsKKyAgICBtX2F2YWlsYWJsZVF1ZXJpZXNMaXN0LmNsZWFyKCk7CiAgICAgbV9sYXllclRyZWVI
b3N0SW1wbC5jbGVhcigpOwogICAgIG1faW5wdXRIYW5kbGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7
CiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKQEAgLTc0MSw0ICs3NTgsMjA5
IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29t
cGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBHCiAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiB9
CiAKK2NsYXNzIENDVGV4dHVyZVVwZGF0ZVF1ZXJ5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c093blB0cjxDQ1RleHR1cmVVcGRhdGVRdWVyeT4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0KSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRlUXVlcnkoY29udGV4
dCkpOyB9CisKKyAgICB2aXJ0dWFsIH5DQ1RleHR1cmVVcGRhdGVRdWVyeSgpCisgICAgeworICAg
ICAgICBBU1NFUlQobV9xdWVyeUlkKTsKKyAgICAgICAgZXh0ZW5zaW9ucygpLT5kZWxldGVRdWVy
eUVYVChtX3F1ZXJ5SWQpOworICAgIH0KKworICAgIHZvaWQgYmVnaW4oKQorICAgIHsKKyAgICAg
ICAgZXh0ZW5zaW9ucygpLT5iZWdpblF1ZXJ5RVhUKEV4dGVuc2lvbnMzRENocm9taXVtOjpDT01N
QU5EU19JU1NVRURfQ0hST01JVU0sIG1fcXVlcnlJZCk7CisgICAgfQorCisgICAgdm9pZCBlbmQo
dW5zaWduZWQgY29tbWFuZHMpCisgICAgeworICAgICAgICBleHRlbnNpb25zKCktPmVuZFF1ZXJ5
RVhUKEV4dGVuc2lvbnMzRENocm9taXVtOjpDT01NQU5EU19JU1NVRURfQ0hST01JVU0pOworICAg
ICAgICBtX2NvbW1hbmRzID0gY29tbWFuZHM7CisKKyAgICAgICAgLy8gTmVlZCB0byBmbHVzaCB0
byBlbnN1cmUgdGhhdCBlbmRRdWVyeUVYVCBpcyBpc3N1ZWQgYXMgc29vbiBhcworICAgICAgICAv
LyBwb3NzaWJsZSBvbiB0aGUgR1BVIHByb2Nlc3Mgc2lkZS4KKyAgICAgICAgbV9jb250ZXh0LT5m
bHVzaCgpOworICAgIH0KKworICAgIGJvb2wgaXNBdmFpbGFibGUoKQorICAgIHsKKyAgICAgICAg
dW5zaWduZWQgYSA9IDA7CisgICAgICAgIGV4dGVuc2lvbnMoKS0+Z2V0UXVlcnlPYmplY3R1aXZF
WFQobV9xdWVyeUlkLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6UVVFUllfUkVTVUxUX0FWQUlMQUJM
RV9FWFQsICZhKTsKKyAgICAgICAgcmV0dXJuIGE7CisgICAgfQorCisgICAgLy8gUmV0dXJuIHNl
Y29uZHMgLyBjb21tYW5kLgorICAgIGRvdWJsZSByZXN1bHQoKQorICAgIHsKKyAgICAgICAgaWYg
KCFpc0F2YWlsYWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIG1fcmVzdWx0OworCisgICAgICAg
IHVuc2lnbmVkIHIgPSAwOworICAgICAgICBleHRlbnNpb25zKCktPmdldFF1ZXJ5T2JqZWN0dWl2
RVhUKG1fcXVlcnlJZCwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OlFVRVJZX1JFU1VMVF9FWFQsICZy
KTsKKyAgICAgICAgQVNTRVJUKG1fY29tbWFuZHMpOworICAgICAgICAvLyBSZXN1bHQgaXMgbWlj
cm9zZWNvbmRzIGVsYXBzZWQuCisgICAgICAgIG1fcmVzdWx0ID0gciAvIHN0YXRpY19jYXN0PGRv
dWJsZT4obV9jb21tYW5kcyAqIDEwMDAwMDApOworICAgICAgICByZXR1cm4gbV9yZXN1bHQ7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IENDVGV4dHVyZVVwZGF0ZVF1ZXJ5KEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0KQorICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAg
ICAgICAsIG1fcXVlcnlJZCgwKQorICAgICAgICAsIG1fY29tbWFuZHMoMSkKKyAgICAgICAgLCBt
X3Jlc3VsdCgwKQorICAgIHsKKyAgICAgICAgbV9xdWVyeUlkID0gZXh0ZW5zaW9ucygpLT5jcmVh
dGVRdWVyeUVYVCgpOworICAgIH0KKworICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNp
b25zKCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJv
bWl1bSo+KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICB9CisKKyAgICBHcmFwaGlj
c0NvbnRleHQzRCogbV9jb250ZXh0OworICAgIHVuc2lnbmVkIG1fcXVlcnlJZDsKKyAgICB1bnNp
Z25lZCBtX2NvbW1hbmRzOworICAgIGRvdWJsZSBtX3Jlc3VsdDsKK307CisKK2NsYXNzIENDVGhy
ZWFkUHJveHlUZXh0dXJlVXBkYXRlVGltZXIgOiBwdWJsaWMgQ0NUaW1lciwgQ0NUaW1lckNsaWVu
dCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaHJlYWRQcm94eVRleHR1cmVV
cGRhdGVUaW1lcj4gY3JlYXRlKENDVGhyZWFkUHJveHkqIHByb3h5KSB7IHJldHVybiBhZG9wdFB0
cihuZXcgQ0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVUaW1lcihwcm94eSkpOyB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgb25UaW1lckZpcmVkKCkKKyAgICB7CisgICAgICAgIG1fcHJveHktPnRleHR1
cmVVcGRhdGVDb21wbGV0ZU9uSW1wbFRocmVhZCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBl
eHBsaWNpdCBDQ1RocmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRpbWVyKENDVGhyZWFkUHJveHkqIHBy
b3h5KQorICAgICAgICA6IENDVGltZXIoQ0NQcm94eTo6aW1wbFRocmVhZCgpLCB0aGlzKQorICAg
ICAgICAsIG1fcHJveHkocHJveHkpCisgICAgeworICAgIH0KKworICAgIENDVGhyZWFkUHJveHkq
IG1fcHJveHk7Cit9OworCisvLyBGSVhNRTogTmVlZCB0byBpbXBsZW1lbnQgc29tZXRoaW5nIG1v
cmUgYWR2YW5jZWQgdGhhbiByZXR1cm5pbmcgdGhlCisvLyBhdmVyYWdlIG9mIG1vc3QgcmVjZW50
IHF1ZXJpZXMsIHdoaWNoIHJlc3VsdHMgaW4gdmVyeSB2b2xhdGlsZSBudW1iZXJzLgorZG91Ymxl
IENDVGhyZWFkUHJveHk6OmN1cnJlbnRUZXh0dXJlVXBkYXRlVGltZSgpCit7CisgICAgZG91Ymxl
IHZhbHVlID0gMC4wOworICAgIHNpemVfdCBudW1RdWVyaWVzID0gbV9hdmFpbGFibGVRdWVyaWVz
TGlzdC5zaXplKCkgKyBtX3BlbmRpbmdRdWVyaWVzTGlzdC5zaXplKCk7CisgICAgaWYgKG51bVF1
ZXJpZXMpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2F2YWlsYWJsZVF1ZXJp
ZXNMaXN0LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBkb3VibGUgcmVzdWx0ID0gbV9hdmFp
bGFibGVRdWVyaWVzTGlzdFtpXS0+cmVzdWx0KCk7CisgICAgICAgICAgICB2YWx1ZSArPSByZXN1
bHQ7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BlbmRpbmdR
dWVyaWVzTGlzdC5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgZG91YmxlIHJlc3VsdCA9IG1f
cGVuZGluZ1F1ZXJpZXNMaXN0W2ldLT5yZXN1bHQoKTsKKyAgICAgICAgICAgIHZhbHVlICs9IHJl
c3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIHZhbHVlIC89IG51bVF1ZXJpZXM7CisgICAgfQor
CisgICAgcmV0dXJuIHZhbHVlOworfQorCitkb3VibGUgQ0NUaHJlYWRQcm94eTo6cHJvY2Vzc1Rl
eHR1cmVVcGRhdGVRdWVyaWVzKCkKK3sKKyAgICB3aGlsZSAoIW1fcGVuZGluZ1F1ZXJpZXNMaXN0
LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fcGVuZGluZ1F1ZXJpZXNMaXN0Lmxhc3QoKS0+
aXNBdmFpbGFibGUoKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIG1fYXZhaWxhYmxl
UXVlcmllc0xpc3QucHJlcGVuZChtX3BlbmRpbmdRdWVyaWVzTGlzdC5sYXN0KCkucmVsZWFzZSgp
KTsKKyAgICAgICAgbV9wZW5kaW5nUXVlcmllc0xpc3QucmVtb3ZlTGFzdCgpOworICAgIH0KKwor
ICAgIHJldHVybiBjdXJyZW50VGV4dHVyZVVwZGF0ZVRpbWUoKTsKK30KKworLy8gVGhpcyBmdW5j
dGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdGV4dHVyZSB1cGRhdGUgdGltZSBpcyBsYXJnZSBjb21w
YXJlZCB0bworLy8gdGhlIGRpc3BsYXkgcmVmcmVzaCBpbnRlcnZhbC4gVGhlIHVzZWZ1bG5lc3Mg
b2YgdGhpcyBmdW5jdGlvbiBpcyBjdXJyZW50bHkKKy8vIGxpbWl0ZWQgdG8gdHJhY2luZyBidXQg
Y291bGQgcG90ZW50aWFsbHkgYWRqdXN0IHRoZSBudW1iZXIgb2YgdXBkYXRlcyB3ZSBkbworLy8g
cGVyIGZyYW1lIHRvIGJldHRlciBtYXRjaCBzeXN0ZW0gcGVyZm9ybWFuY2UuCit2b2lkIENDVGhy
ZWFkUHJveHk6OmFkanVzdFRleHR1cmVVcGRhdGVzUGVyRnJhbWUoZG91YmxlIHRleHR1cmVVcGRh
dGVUaW1lKQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjphZGp1c3RUZXh0dXJl
VXBkYXRlc1BlckZyYW1lIiwgdGhpcywgMCk7Cit9CisKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6dGV4
dHVyZVVwZGF0ZU9uSW1wbFRocmVhZCgpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJv
eHk6OnRleHR1cmVVcGRhdGVPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoaXNJ
bXBsVGhyZWFkKCkpOworICAgIEFTU0VSVCghbV90ZXh0dXJlVXBkYXRlVGltZXJPbkltcGxUaHJl
YWQpOworICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7Cisg
ICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBk
YXRlcygpKTsKKworICAgIC8vIFByb2Nlc3MgcGVuZGluZyBxdWVyaWVzIHRvIGRldGVybWluZSB0
aGUgY3VycmVuIHRleHR1cmUgdXBkYXRlIHRpbWUuCisgICAgZG91YmxlIHRleHR1cmVVcGRhdGVU
aW1lID0gcHJvY2Vzc1RleHR1cmVVcGRhdGVRdWVyaWVzKCk7CisgICAgZG91YmxlIG1heFRleHR1
cmVVcGRhdGVUaW1lID0gdGV4dHVyZVVwZGF0ZVRpbWUgKiB0ZXh0dXJlVXBkYXRlc1BlckZyYW1l
OworCisgICAgLy8gQ2xhbXAgbWF4VGV4dHVyZVVwZGF0ZVRpbWUgdG8gMy80IG9mIGRpc3BsYXlS
ZWZyZXNoSW50ZXJ2YWwuCisgICAgaWYgKG1heFRleHR1cmVVcGRhdGVUaW1lID4gZGlzcGxheVJl
ZnJlc2hJbnRlcnZhbCAqIDAuNzUpIHsKKyAgICAgICAgbWF4VGV4dHVyZVVwZGF0ZVRpbWUgPSBk
aXNwbGF5UmVmcmVzaEludGVydmFsICogMC43NTsKKyAgICAgICAgYWRqdXN0VGV4dHVyZVVwZGF0
ZXNQZXJGcmFtZSh0ZXh0dXJlVXBkYXRlVGltZSk7CisgICAgfQorCisgICAgLy8gRW5kIHVwZGF0
ZSB3aGVuIHdlIGdldCB0b28gY2xvc2UgdG8gdGhlIHRpY2sgdGltZS4KKyAgICBkb3VibGUgdGV4
dHVyZVVwZGF0ZVN0b3BUaW1lID0gbV9uZXh0VGlja1RpbWUgLSBtYXhUZXh0dXJlVXBkYXRlVGlt
ZTsKKyAgICBkb3VibGUgbm93ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAg
aWYgKG5vdyA+PSB0ZXh0dXJlVXBkYXRlU3RvcFRpbWUpIHsKKyAgICAgICAgQ0NQcm94eTo6aW1w
bFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJv
eHk6OnRleHR1cmVVcGRhdGVDb21wbGV0ZU9uSW1wbFRocmVhZCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gTnVtYmVyIG9mIGZ1bGwgc2l6ZSB0ZXh0dXJlIHVwZGF0ZXMgdG8g
cGVyZm9ybS4KKyAgICBzaXplX3QgdXBkYXRlcyA9IG1pbihtX2N1cnJlbnRUZXh0dXJlVXBkYXRl
ck9uSW1wbFRocmVhZC0+bnVtVXBkYXRlcygpLCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lKTsKKwor
ICAgIE93blB0cjxDQ1RleHR1cmVVcGRhdGVRdWVyeT4gcXVlcnk7CisKKyAgICAvLyBPbmx5IG1l
YXN1cmUgZnVsbCBzaXplIHRleHR1cmUgdXBkYXRlcy4KKyAgICBpZiAodXBkYXRlcyA9PSB0ZXh0
dXJlVXBkYXRlc1BlckZyYW1lKSB7CisgICAgICAgIGlmICghbV9hdmFpbGFibGVRdWVyaWVzTGlz
dC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHF1ZXJ5ID0gbV9hdmFpbGFibGVRdWVyaWVzTGlz
dC5sYXN0KCkucmVsZWFzZSgpOworICAgICAgICAgICAgbV9hdmFpbGFibGVRdWVyaWVzTGlzdC5y
ZW1vdmVMYXN0KCk7CisgICAgICAgIH0gZWxzZSBpZiAobV9wZW5kaW5nUXVlcmllc0xpc3Quc2l6
ZSgpIDwgbWF4UGVuZGluZ1RleHR1cmVVcGRhdGVRdWVyaWVzKQorICAgICAgICAgICAgcXVlcnkg
PSBDQ1RleHR1cmVVcGRhdGVRdWVyeTo6Y3JlYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRl
eHQoKSk7CisKKyAgICAgICAgaWYgKCFxdWVyeSkgeworICAgICAgICAgICAgY29uc3QgZG91Ymxl
IHRleHR1cmVVcGRhdGVSZXRyeUludGVydmFsTXMgPSAxLjA7CisKKyAgICAgICAgICAgIENDUHJv
eHk6OmltcGxUaHJlYWQoKS0+cG9zdERlbGF5ZWRUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlz
LCAmQ0NUaHJlYWRQcm94eTo6dGV4dHVyZVVwZGF0ZU9uSW1wbFRocmVhZCksIHRleHR1cmVVcGRh
dGVSZXRyeUludGVydmFsTXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKHF1ZXJ5KQorICAgICAgICBxdWVyeS0+YmVnaW4oKTsKKworICAgIG1fY3Vy
cmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRyZWVIb3N0SW1w
bC0+Y29udGV4dCgpLCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lKTsKKworICAgIGlmIChxdWVyeSkg
eworICAgICAgICBxdWVyeS0+ZW5kKHVwZGF0ZXMpOworICAgICAgICBtX3BlbmRpbmdRdWVyaWVz
TGlzdC5wcmVwZW5kKHF1ZXJ5LnJlbGVhc2UoKSk7CisgICAgfQorCisgICAgLy8gU2V0IGNvbXBs
ZXRpb24gdGltZXIgd2hlbiBtb3JlIHVwZGF0ZXMgYXJlIGF2YWlsYWJsZS4KKyAgICBpZiAobV9j
dXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCkpIHsKKyAg
ICAgICAgQVNTRVJUKCFtX3RleHR1cmVVcGRhdGVUaW1lck9uSW1wbFRocmVhZCk7CisgICAgICAg
IEFTU0VSVCh1cGRhdGVzKTsKKworICAgICAgICBtX3RleHR1cmVVcGRhdGVUaW1lck9uSW1wbFRo
cmVhZCA9IENDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGltZXI6OmNyZWF0ZSh0aGlzKTsKKyAg
ICAgICAgbV90ZXh0dXJlVXBkYXRlVGltZXJPbkltcGxUaHJlYWQtPnN0YXJ0T25lU2hvdCh0ZXh0
dXJlVXBkYXRlVGltZSAqIHVwZGF0ZXMpOworICAgIH0KK30KKwordm9pZCBDQ1RocmVhZFByb3h5
Ojp0ZXh0dXJlVXBkYXRlQ29tcGxldGVPbkltcGxUaHJlYWQoKQoreworICAgIEFTU0VSVChpc0lt
cGxUaHJlYWQoKSk7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnRleHR1cmVVcGRh
dGVDb21wbGV0ZU9uSW1wbFRocmVhZCIsIHRoaXMsIDApOworICAgIG1fdGV4dHVyZVVwZGF0ZVRp
bWVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CisgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmRp
ZFRleHR1cmVVcGRhdGVDb21wbGV0ZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggNDg2MWY3OTA5MjYwMWMwMDVhMDUwNTIwZDU0N2Vk
MjFjZGY5ZDdhMC4uNTM3NjgwMzE2NzA3MjU0Y2JlMWIzYjRmN2Q0ODFmOGVhODIwYjE5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtNDAsOSArNDAsMTEgQEAgY2xhc3MgQ0NJbnB1dEhh
bmRsZXI7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7CiBjbGFzcyBDQ1NjaGVkdWxlcjsKIGNsYXNz
IENDU2NvcGVkVGhyZWFkUHJveHk7CitjbGFzcyBDQ1RleHR1cmVVcGRhdGVRdWVyeTsKIGNsYXNz
IENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFzcyBDQ1RocmVhZDsKIGNsYXNzIENDVGhyZWFkUHJveHlD
b250ZXh0UmVjcmVhdGlvblRpbWVyOworY2xhc3MgQ0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVU
aW1lcjsKIAogY2xhc3MgQ0NUaHJlYWRQcm94eSA6IHB1YmxpYyBDQ1Byb3h5LCBDQ0xheWVyVHJl
ZUhvc3RJbXBsQ2xpZW50LCBDQ1NjaGVkdWxlckNsaWVudCB7CiBwdWJsaWM6CkBAIC04MywxMyAr
ODUsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkZy
YW1lKCk7CiAgICAgdmlydHVhbCBib29sIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3Nz
aWJsZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEZvcmNl
ZCgpOwotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2Vz
KCk7CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMo
ZG91YmxlIG5leHRUaWNrVGltZSk7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkNv
bW1pdCgpOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNy
ZWF0aW9uKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ0NUaHJlYWRQcm94eShDQ0xheWVy
VHJlZUhvc3QqKTsKICAgICBmcmllbmQgY2xhc3MgQ0NUaHJlYWRQcm94eUNvbnRleHRSZWNyZWF0
aW9uVGltZXI7CisgICAgZnJpZW5kIGNsYXNzIENDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGlt
ZXI7CiAKICAgICAvLyBTZXQgb24gaW1wbCB0aHJlYWQsIHJlYWQgb24gbWFpbiB0aHJlYWQuCiAg
ICAgc3RydWN0IEJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZSB7CkBAIC0xMjcsNiArMTMwLDExIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzZXRGdWxsUm9vdExheWVyRGFtYWdlT25JbXBsVGhyZWFkKCk7
CiAgICAgdm9pZCByZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQq
LCBHcmFwaGljc0NvbnRleHQzRCosIGJvb2wqIHJlY3JlYXRlU3VjY2VlZGVkLCBMYXllclJlbmRl
cmVyQ2FwYWJpbGl0aWVzKik7CiAgICAgYm9vbCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElu
dGVybmFsKGJvb2wgZm9yY2VkRHJhdyk7CisgICAgZG91YmxlIGN1cnJlbnRUZXh0dXJlVXBkYXRl
VGltZSgpOworICAgIGRvdWJsZSBwcm9jZXNzVGV4dHVyZVVwZGF0ZVF1ZXJpZXMoKTsKKyAgICB2
b2lkIGFkanVzdFRleHR1cmVVcGRhdGVzUGVyRnJhbWUoZG91YmxlKTsKKyAgICB2b2lkIHRleHR1
cmVVcGRhdGVPbkltcGxUaHJlYWQoKTsKKyAgICB2b2lkIHRleHR1cmVVcGRhdGVDb21wbGV0ZU9u
SW1wbFRocmVhZCgpOwogCiAgICAgLy8gQWNjZXNzZWQgb24gbWFpbiB0aHJlYWQgb25seS4KICAg
ICBib29sIG1fYW5pbWF0ZVJlcXVlc3RlZDsKQEAgLTE2Nyw2ICsxNzUsMTEgQEAgcHJpdmF0ZToK
IAogICAgIC8vIFNldCB3aGVuIHRoZSBuZXh0IGRyYXcgc2hvdWxkIHBvc3QgZGlkQ29tbWl0QW5k
RHJhd0ZyYW1lIHRvIHRoZSBtYWluIHRocmVhZC4KICAgICBib29sIG1fbmV4dEZyYW1lSXNOZXds
eUNvbW1pdHRlZEZyYW1lT25JbXBsVGhyZWFkOworCisgICAgT3duUHRyPENDVGhyZWFkUHJveHlU
ZXh0dXJlVXBkYXRlVGltZXI+IG1fdGV4dHVyZVVwZGF0ZVRpbWVyT25JbXBsVGhyZWFkOworICAg
IFZlY3RvcjxPd25QdHI8Q0NUZXh0dXJlVXBkYXRlUXVlcnk+ID4gbV9wZW5kaW5nUXVlcmllc0xp
c3Q7CisgICAgVmVjdG9yPE93blB0cjxDQ1RleHR1cmVVcGRhdGVRdWVyeT4gPiBtX2F2YWlsYWJs
ZVF1ZXJpZXNMaXN0OworICAgIGRvdWJsZSBtX25leHRUaWNrVGltZTsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlt
ZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaW1lU291cmNlLmgKaW5kZXggZGNjYjQ3MGE2MzgzZTMwNGRiMTE2YTViOWRmOTFkZTU2MDY4
ZTA4NS4uYzM2NGQ5MmJkMDI4YTIyZmZhOGEyYTg3ZmMxOTMwYjU4ZGVmOGU0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lU291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaW1lU291cmNlLmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRDbGllbnQoQ0NUaW1lU291cmNlQ2xpZW50KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRBY3RpdmUoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBhY3RpdmUoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBkb3VibGUgbmV4dFRpY2tUaW1lKCkgY29uc3QgPSAwOwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCmlu
ZGV4IDhkZjVhMTFjYWY3YTIxM2UwNzQ2MDE1Y2Y0OTFkN2QyMmZiZjY1ZjIuLmE0NjhmMDNiZThl
NGM3N2NiMjQwZWYyMGRmNjIzNWJiYWRlZWE5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGlj
OgogICAgICAgICBtX251bURyYXdzKys7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHNjaGVk
dWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKSB7IG1fYWN0aW9ucy5wdXNoX2JhY2soInNj
aGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiKTsgfQorICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKGRvdWJsZSkgeyBtX2FjdGlvbnMucHVz
aF9iYWNrKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIik7IH0KICAgICB2aXJ0
dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkgeyBtX2FjdGlvbnMucHVzaF9iYWNrKCJz
Y2hlZHVsZWRBY3Rpb25Db21taXQiKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rp
b25CZWdpbkNvbnRleHRSZWNyZWF0aW9uKCkgeyBtX2FjdGlvbnMucHVzaF9iYWNrKCJzY2hlZHVs
ZWRBY3Rpb25CZWdpbkNvbnRleHRSZWNyZWF0aW9uIik7IH0KIApAQCAtMTcyLDcgKzE3Miw3IEBA
IHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uRHJhd0Fu
ZFN3YXBGb3JjZWQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uVXBkYXRl
TW9yZVJlc291cmNlcygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25VcGRh
dGVNb3JlUmVzb3VyY2VzKGRvdWJsZSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFj
dGlvbkNvbW1pdCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkNv
bnRleHRSZWNyZWF0aW9uKCkgeyB9CiAKQEAgLTI2NSw3ICsyNjUsNyBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwRm9yY2VkKCkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMo
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNl
cyhkb3VibGUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25Db21taXQoKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlv
bigpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2No
ZWR1bGVyVGVzdENvbW1vbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVk
dWxlclRlc3RDb21tb24uaAppbmRleCAwYzEwNTU4OGIxNDJmNzYxOTM3MjJlNjI4OGUxOTg5NjUz
YTk0OTg0Li44YWZjOTkzOTI4YjZlYjVlY2Y4ZjMyMDVkZjFjYTU3MDkwOWFjODM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdENvbW1vbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0Q29tbW9u
LmgKQEAgLTkzLDYgKzkzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQo
V2ViQ29yZTo6Q0NUaW1lU291cmNlQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7
IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wgYikgeyBtX2FjdGl2ZSA9IGI7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgYWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmU7IH0KKyAg
ICB2aXJ0dWFsIGRvdWJsZSBuZXh0VGlja1RpbWUoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKICAg
ICB2b2lkIHRpY2soKQogICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134732</attachid>
            <date>2012-03-29 23:32:30 -0700</date>
            <delta_ts>2012-03-30 10:18:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81004-20120330023228.patch</filename>
            <type>text/plain</type>
            <size>34816</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjE3NzQzMmM4ZTVjZmY1
ZWUyYTNmM2IyMjk2NTk2YTVjN2ZkNTU1Zi4uYjExMDM0MjQyMDg2ZDAyY2VlZjZlNWMxZGQxMWRj
YjQ3ZGE2YmIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDEyLTAzLTI5ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBV
c2UgR0xfQ0hST01JVU1fY29tbWFuZF9idWZmZXJfcXVlcnkgdG8gdGhyb3R0bGUgaW5jcmVtZW50
YWwgdGV4dHVyZSB1cGRhdGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODEwMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBIYXZlIHRocmVhZGVkIGNvbXBvc2l0b3IgdXNlIEdMX0NIUk9NSVVNX2NvbW1h
bmRfYnVmZmVyX3F1ZXJ5IHRvCisgICAgICAgIHRocm90dGxlIHRleHR1cmUgdXBkYXRlcyBiYXNl
ZCBudW1iZXIgb2YgY3VycmVudGx5IHBlbmRpbmcgcXVlcmllcworICAgICAgICBhbmQgdGltZSB1
bnRpbCBuZXh0IHZzeW5jLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlbGF5QmFzZWRUaW1lU291cmNlOjpuZXh0VGlj
a1RpbWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5oOgorICAgICAgICAoQ0NEZWxheUJh
c2VkVGltZVNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NGcmFtZVJhdGVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDRnJhbWVSYXRl
Q29udHJvbGxlcjo6bmV4dFRpY2tUaW1lKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5oOgor
ICAgICAgICAoQ0NGcmFtZVJhdGVDb250cm9sbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Nj
aGVkdWxlcjo6Q0NTY2hlZHVsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OmJl
Z2luRnJhbWVDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6ZGlkVXBk
YXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVy
Ojp2c3luY1RpY2spOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6Om5leHRBY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25z
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5o
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OnNldE1heFVwZGF0ZU1vcmVSZXNvdXJj
ZXNUaW1lKToKKyAgICAgICAgKENDU2NoZWR1bGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNob3VsZFVwZGF0
ZU1vcmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6YmVnaW5GcmFtZUNvbXBsZXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oOgor
ICAgICAgICAoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNldENhblVwZGF0ZU1vcmVSZXNvdXJjZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAg
ICAgICAoV1RGKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNldFZpc2libGVP
bkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aGFzTW9yZVJl
c291cmNlVXBkYXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVs
ZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFk
UHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5Ojppbml0aWFsaXplSW1wbE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6Om1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyk6CisgICAg
ICAgIChDQ1RocmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGltZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RocmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRpbWVyOjpvblRpbWVyRmlyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVUaW1lcjo6Q0NUaHJlYWRQ
cm94eVRleHR1cmVVcGRhdGVUaW1lcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGhyZWFkUHJveHk6OmRlbGV0ZVRleHR1cmVVcGRhdGVRdWVyaWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnByb2Nlc3NUZXh0dXJlVXBkYXRlUXVlcmllcyk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojp0ZXh0dXJlVXBkYXRlT25JbXBsVGhy
ZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnRleHR1cmVVcGRhdGVDb21w
bGV0ZU9uSW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1RocmVh
ZFByb3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbWVT
b3VyY2UuaDoKKyAgICAgICAgKENDVGltZVNvdXJjZSk6CisKIDIwMTItMDMtMjcgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gU3RvcCB1c2luZyBO
U01hcFRhYmxlIGluIEZvcm1EYXRhU3RyZWFtTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IGFiNGNmOTZhYjJkZjliZDFmNWJkZGU4YmQ4NDU5ZGQ4OTlmNzcxOWUuLmI3MzA0YjI2
YTRhZjJjOTg2OTAyZDlkMmI5NTgyN2IxNTFjMmIxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDMtMjkgIERhdmlkIFJldmVtYW4gIDxyZXZlbWFu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFVzZSBHTF9DSFJPTUlVTV9jb21t
YW5kX2J1ZmZlcl9xdWVyeSB0byB0aHJvdHRsZSBpbmNyZW1lbnRhbCB0ZXh0dXJlIHVwZGF0ZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTAwNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMv
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1Qp
OgorICAgICAgICAqIHRlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRU
ZXN0czo6VEVTVCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6U2NoZWR1bGVyQ2xpZW50VGhhdFNl
dE5lZWRzRHJhd0luc2lkZURyYXc6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMp
OgorICAgICAgICAoV2ViS2l0VGVzdHM6OlNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0NvbW1p
dEluc2lkZURyYXc6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMpOgorICAgICAg
ICAqIHRlc3RzL0NDU2NoZWR1bGVyVGVzdENvbW1vbi5oOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OkZha2VDQ1RpbWVTb3VyY2U6Om5leHRUaWNrVGltZSk6CisKIDIwMTItMDMtMjcgIFNhbWkgS3lv
c3RpbGEgIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQg
VGV4dHVyZUNvcGllciBmb3IgY29weWluZyB0ZXh0dXJlIGNvbnRlbnRzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFzZWRU
aW1lU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuY3BwCmluZGV4IGI2ODhhNzhhMjdjNTc5NTFkZDhk
NmJlZmZlZTc2NmM1ZDI0ZjIzZTQuLjcwNGVmZjRiZjdhM2Q2YzA0ZGViNWNkMWQyNjYwZmM4ZTAx
OWViYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuY3BwCkBA
IC0xNjEsNCArMTYxLDEyIEBAIHZvaWQgQ0NEZWxheUJhc2VkVGltZVNvdXJjZTo6cG9zdE5leHRU
aWNrVGFzayhkb3VibGUgbm93KQogICAgIG1fdGlja1RhcmdldCA9IG5ld1RpY2tUYXJnZXQ7CiB9
CiAKK2RvdWJsZSBDQ0RlbGF5QmFzZWRUaW1lU291cmNlOjpuZXh0VGlja1RpbWUoKSBjb25zdAor
eworICAgIGlmICghbV9oYXNUaWNrVGFyZ2V0KQorICAgICAgICByZXR1cm4gbW9ub3RvbmljYWxs
eUluY3JlYXNpbmdUaW1lKCk7CisKKyAgICByZXR1cm4gbV90aWNrVGFyZ2V0OworfQorCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RlbGF5QmFzZWRUaW1lU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmgKaW5kZXggNWYxYjJjNGYyZmRh
N2JlZDU0ZjVmNDQzNTA2NDVmMzVmNzk2ZTVkZi4uMzgwYmU2YmMwZDFlNmExMmVhNWI1NTdmNmE3
MzRhYzdkZjc0YjU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2Uu
aApAQCAtNDcsNiArNDcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShi
b29sKTsKICAgICB2aXJ0dWFsIGJvb2wgYWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSAh
PSBTVEFURV9JTkFDVElWRTsgfQogCisgICAgdmlydHVhbCBkb3VibGUgbmV4dFRpY2tUaW1lKCkg
Y29uc3Q7CisKICAgICAvLyBDQ1RpbWVyQ2xpZW50IGltcGxlbWVudGF0aW9uLgogICAgIHZpcnR1
YWwgdm9pZCBvblRpbWVyRmlyZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ29u
dHJvbGxlci5jcHAKaW5kZXggZGI2ZDk1Y2MwMGNjMTU1NjhlMGNlNTY3ZjQ0OTc4YTkyNzkyNGJl
OC4uZWMzYzI0NzgwOTNhZDhjODdiNjg0ODA2MDIyODQ2ODQ1OWQ3ZjhkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuY3BwCkBAIC0xMDUsNCArMTA1LDkgQEAgdm9p
ZCBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXI6OmRpZEFib3J0QWxsUGVuZGluZ0ZyYW1lcygpCiAgICAg
bV9udW1GcmFtZXNQZW5kaW5nID0gMDsKIH0KIAorZG91YmxlIENDRnJhbWVSYXRlQ29udHJvbGxl
cjo6bmV4dFRpY2tUaW1lKCkKK3sKKyAgICByZXR1cm4gbV90aW1lU291cmNlLT5uZXh0VGlja1Rp
bWUoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuaAppbmRl
eCA1NzM0ZDRhYTZlOWY3NDYxYTRjNjZjNmUwYTE4NjBkYTMwZDQ5NjZlLi43YTFkYWQ0MzlhZmIy
OGIzZjQzNGIzNzg5NmEyYzY5ZDhmNGMyNmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0
ZUNvbnRyb2xsZXIuaApAQCAtNjQsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGaW5p
c2hGcmFtZSgpOwogICAgIHZvaWQgZGlkQWJvcnRBbGxQZW5kaW5nRnJhbWVzKCk7CiAgICAgdm9p
ZCBzZXRNYXhGcmFtZXNQZW5kaW5nKGludCk7IC8vIDAgZm9yIHVubGltaXRlZC4KKyAgICBkb3Vi
bGUgbmV4dFRpY2tUaW1lKCk7CiAKIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgQ0NGcmFt
ZVJhdGVDb250cm9sbGVyVGltZVNvdXJjZUFkYXB0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAK
aW5kZXggMTNiNzQxZWE4YzNmZjQ4Yzg3NmNjNzJjYjZhNGUwYWRhM2NiMmZhMC4uMTU0MGY3YWNk
NzQzMGQ5NjUyNjNmOGEzZDQ5ZWM1YWJiM2M0MzcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNw
cApAQCAtMzMsNiArMzMsNyBAQCBDQ1NjaGVkdWxlcjo6Q0NTY2hlZHVsZXIoQ0NTY2hlZHVsZXJD
bGllbnQqIGNsaWVudCwgUGFzc093blB0cjxDQ0ZyYW1lUmF0ZUNvbnRybwogICAgIDogbV9jbGll
bnQoY2xpZW50KQogICAgICwgbV9mcmFtZVJhdGVDb250cm9sbGVyKGZyYW1lUmF0ZUNvbnRyb2xs
ZXIpCiAgICAgLCBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKQorICAgICwgbV9t
YXhVcGRhdGVNb3JlUmVzb3VyY2VzVGltZSgwKQogewogICAgIEFTU0VSVChtX2NsaWVudCk7CiAg
ICAgbV9mcmFtZVJhdGVDb250cm9sbGVyLT5zZXRDbGllbnQodGhpcyk7CkBAIC03Nyw3ICs3OCw3
IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnNldE5lZWRzRm9yY2VkUmVkcmF3KCkKIHZvaWQgQ0NTY2hl
ZHVsZXI6OmJlZ2luRnJhbWVDb21wbGV0ZSgpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1
bGVyOjpiZWdpbkZyYW1lQ29tcGxldGUiLCB0aGlzLCAwKTsKLSAgICBtX3N0YXRlTWFjaGluZS5i
ZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBtX3N0YXRlTWFjaGluZS5iZWdpbkZyYW1lQ29tcGxl
dGUobV9jbGllbnQtPmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSk7CiAgICAgcHJvY2Vzc1NjaGVk
dWxlZEFjdGlvbnMoKTsKIH0KIApAQCAtMTA3LDE0ICsxMDgsMTkgQEAgdm9pZCBDQ1NjaGVkdWxl
cjo6ZGlkUmVjcmVhdGVDb250ZXh0KCkKICAgICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOwog
fQogCi12b2lkIENDU2NoZWR1bGVyOjp2c3luY1RpY2soKQordm9pZCBDQ1NjaGVkdWxlcjo6ZGlk
VXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKCkKIHsKKyAgICBUUkFDRV9FVkVOVCgiQ0NTY2hl
ZHVsZXI6OmRpZFVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSIsIHRoaXMsIDApOwogICAgIGlm
IChtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKSB7CiAgICAgICAgIG1fdXBkYXRlTW9yZVJl
c291cmNlc1BlbmRpbmcgPSBmYWxzZTsKICAgICAgICAgbV9zdGF0ZU1hY2hpbmUuYmVnaW5VcGRh
dGVNb3JlUmVzb3VyY2VzQ29tcGxldGUobV9jbGllbnQtPmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMo
KSk7CiAgICAgfQotICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxlcjo6dnN5bmNUaWNrIiwgdGhp
cywgMCk7CisgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKK30KIAordm9pZCBDQ1NjaGVk
dWxlcjo6dnN5bmNUaWNrKCkKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NTY2hlZHVsZXI6OnZzeW5j
VGljayIsIHRoaXMsIDApOwogICAgIG1fc3RhdGVNYWNoaW5lLmRpZEVudGVyVlN5bmMoKTsKICAg
ICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOwogICAgIG1fc3RhdGVNYWNoaW5lLmRpZExlYXZl
VlN5bmMoKTsKQEAgLTEyMyw2ICsxMjksNyBAQCB2b2lkIENDU2NoZWR1bGVyOjp2c3luY1RpY2so
KQogQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBDQ1NjaGVkdWxlcjo6bmV4dEFjdGlv
bigpCiB7CiAgICAgbV9zdGF0ZU1hY2hpbmUuc2V0Q2FuRHJhdyhtX2NsaWVudC0+Y2FuRHJhdygp
KTsKKyAgICBtX3N0YXRlTWFjaGluZS5zZXRDYW5VcGRhdGVNb3JlUmVzb3VyY2VzKG1vbm90b25p
Y2FsbHlJbmNyZWFzaW5nVGltZSgpIDwgKG1fZnJhbWVSYXRlQ29udHJvbGxlci0+bmV4dFRpY2tU
aW1lKCkgLSBtX21heFVwZGF0ZU1vcmVSZXNvdXJjZXNUaW1lKSk7CiAgICAgcmV0dXJuIG1fc3Rh
dGVNYWNoaW5lLm5leHRBY3Rpb24oKTsKIH0KIApAQCAtMTQ5LDE1ICsxNTYsNyBAQCB2b2lkIEND
U2NoZWR1bGVyOjpwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFU
RV9NT1JFX1JFU09VUkNFUzoKICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25V
cGRhdGVNb3JlUmVzb3VyY2VzKCk7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LT5oYXNNb3Jl
UmVzb3VyY2VVcGRhdGVzKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBJZiB3ZSB3ZXJlIGp1c3Qg
dG9sZCB0byB1cGRhdGUgcmVzb3VyY2VzLCBidXQgdGhlcmUgYXJlIG5vCi0gICAgICAgICAgICAg
ICAgLy8gbW9yZSBwZW5kaW5nLCB0aGVuIHRlbGwgdGhlIHN0YXRlIG1hY2hpbmUgdGhhdCB0aGUK
LSAgICAgICAgICAgICAgICAvLyBiZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXMgY29tcGxldGVkLiBJ
ZiBtb3JlIGFyZSBwZW5kaW5nLAotICAgICAgICAgICAgICAgIC8vIHRoZW4gd2Ugd2lsbCBhY2sg
dGhlIHVwZGF0ZSBhdCB0aGUgbmV4dCBkcmF3LgotICAgICAgICAgICAgICAgIG1fdXBkYXRlTW9y
ZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlTWFjaGlu
ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7Ci0gICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0gdHJ1
ZTsKKyAgICAgICAgICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSB0cnVlOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9DT01NSVQ6CiAgICAgICAgICAgICBtX2NsaWVudC0+c2NoZWR1bGVkQWN0aW9uQ29tbWl0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXIuaAppbmRleCBjODc2ZTIwYmM4Nzc4ZGM3OWFmMzg5YzBiOWE5
Y2JjM2FjYmE2OTZmLi5lMTQyYjFhN2E5OWJmMzIxNThkODU3NmE5MDY4ZGZiZDlhMGU0NzJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyLmgKQEAgLTgxLDYgKzgxLDkgQEAgcHVibGljOgogICAgIHZvaWQg
ZGlkTG9zZUNvbnRleHQoKTsKICAgICB2b2lkIGRpZFJlY3JlYXRlQ29udGV4dCgpOwogCisgICAg
dm9pZCBzZXRNYXhVcGRhdGVNb3JlUmVzb3VyY2VzVGltZShkb3VibGUgbWF4VXBkYXRlTW9yZVJl
c291cmNlc1RpbWUpIHsgbV9tYXhVcGRhdGVNb3JlUmVzb3VyY2VzVGltZSA9IG1fbWF4VXBkYXRl
TW9yZVJlc291cmNlc1RpbWU7IH0KKyAgICB2b2lkIGRpZFVwZGF0ZU1vcmVSZXNvdXJjZXNDb21w
bGV0ZSgpOworCiAgICAgYm9vbCBjb21taXRQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZU1hY2hpbmUuY29tbWl0UGVuZGluZygpOyB9CiAgICAgYm9vbCByZWRyYXdQZW5kaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZU1hY2hpbmUucmVkcmF3UGVuZGluZygpOyB9CiAKQEAgLTk3LDYg
KzEwMCw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPENDRnJhbWVSYXRlQ29udHJvbGxlcj4gbV9m
cmFtZVJhdGVDb250cm9sbGVyOwogICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lIG1fc3RhdGVN
YWNoaW5lOwogICAgIGJvb2wgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZzsKKyAgICBkb3Vi
bGUgbV9tYXhVcGRhdGVNb3JlUmVzb3VyY2VzVGltZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcAppbmRleCAxYzk0MmUzNDNjNzc3MTliNjNl
NmQzZjA5YjEyYjA1ZGVlMDAxYmRhLi45ODE4ZWY5OWRjYzQwMDE5Yjg1MDkwZTA2MWVlOGQ4NzI2
YWFiNjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3Bw
CkBAIC00MSw2ICs0MSw3IEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZSgpCiAgICAgLCBtX3Zpc2libGUoZmFsc2UpCiAgICAgLCBtX2NhbkRyYXcodHJ1
ZSkKICAgICAsIG1fZHJhd0lmUG9zc2libGVGYWlsZWQoZmFsc2UpCisgICAgLCBtX2NhblVwZGF0
ZU1vcmVSZXNvdXJjZXMoZmFsc2UpCiAgICAgLCBtX2NvbnRleHRTdGF0ZShDT05URVhUX0FDVElW
RSkKIHsKIH0KQEAgLTcwLDYgKzcxLDE4IEBAIGJvb2wgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OnNob3VsZERyYXcoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpzaG91bGRVcGRhdGVNb3JlUmVzb3VyY2VzKCkgY29uc3QKK3sKKyAg
ICBpZiAobV9uZWVkc0ZvcmNlZFJlZHJhdykKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBp
ZiAobV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmICghbV9jYW5VcGRhdGVNb3JlUmVzb3VyY2VzKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24g
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBjb25zdAogewogICAgIHN3aXRj
aCAobV9jb21taXRTdGF0ZSkgewpAQCAtOTYsNyArMTA5LDcgQEAgQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFjdGlvbiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbigpIGNvbnN0
CiAgICAgY2FzZSBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTOgogICAgICAgICBpZiAo
c2hvdWxkRHJhdygpKQogICAgICAgICAgICAgcmV0dXJuIG1fbmVlZHNGb3JjZWRSZWRyYXcgPyBB
Q1RJT05fRFJBV19GT1JDRUQgOiBBQ1RJT05fRFJBV19JRl9QT1NTSUJMRTsKLSAgICAgICAgaWYg
KCFtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKQorICAgICAgICBpZiAoc2hvdWxkVXBkYXRl
TW9yZVJlc291cmNlcygpKQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9VUERBVEVf
TU9SRV9SRVNPVVJDRVM7CiAgICAgICAgIHJldHVybiBBQ1RJT05fTk9ORTsKIApAQCAtMjIyLDEw
ICsyMzUsMTMgQEAgdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0TmVlZHNGb3JjZWRD
b21taXQoKQogICAgIG1fbmVlZHNGb3JjZWRDb21taXQgPSB0cnVlOwogfQogCi12b2lkIENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpiZWdpbkZyYW1lQ29tcGxldGUoKQordm9pZCBDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6YmVnaW5GcmFtZUNvbXBsZXRlKGJvb2wgcmVzb3VyY2VzUGVuZGluZykK
IHsKICAgICBBU1NFUlQobV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJP
R1JFU1MpOwotICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VS
Q0VTOworICAgIGlmIChyZXNvdXJjZXNQZW5kaW5nKQorICAgICAgICBtX2NvbW1pdFN0YXRlID0g
Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUzsKKyAgICBlbHNlCisgICAgICAgIG1fY29t
bWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlUOwogfQogCiB2b2lkIENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpiZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShib29s
IG1vcmVQZW5kaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgK
aW5kZXggMmVjZmQxY2QwNmQ1MDhhZTFmZTYxZjY4MzkyMTY4MWFmZGNlYjg2Ni4uMTAwMzE2MTg5
NzA2ZjIzMzc1YzFmMmRmY2E1NDQxMzZkZjY0ZTEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZS5oCkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIC8v
IENhbGwgdGhpcyBvbmx5IGluIHJlc3BvbnNlIHRvIHJlY2VpdmluZyBhbiBBQ1RJT05fQkVHSU5f
RlJBTUUKICAgICAvLyBmcm9tIG5leHRTdGF0ZS4gSW5kaWNhdGVzIHRoYXQgYWxsIHBhaW50aW5n
IGlzIGNvbXBsZXRlIGFuZCB0aGF0CiAgICAgLy8gdXBkYXRpbmcgb2YgY29tcG9zaXRvciByZXNv
dXJjZXMgY2FuIGJlZ2luLgotICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgdm9p
ZCBiZWdpbkZyYW1lQ29tcGxldGUoYm9vbCByZXNvdXJjZXNQZW5kaW5nKTsKIAogICAgIC8vIENh
bGwgdGhpcyBvbmx5IGluIHJlc3BvbnNlIHRvIHJlY2VpdmluZyBhbiBBQ1RJT05fVVBEQVRFX01P
UkVfUkVTT1VSQ0VTCiAgICAgLy8gZnJvbSBuZXh0U3RhdGUuIEluZGljYXRlcyB0aGF0IHRoZSBz
cGVjaWZpYyB1cGRhdGUgcmVxdWVzdCBjb21wbGV0ZWQuCkBAIC0xMjIsNiArMTIyLDkgQEAgcHVi
bGljOgogICAgIC8vIHdoZW4gc3VjaCBiZWhhdmlvciB3b3VsZCBiZSB1bmRlc2lyYWJsZS4KICAg
ICB2b2lkIHNldENhbkRyYXcoYm9vbCBjYW4pIHsgbV9jYW5EcmF3ID0gY2FuOyB9CiAKKyAgICAv
LyBJbmRpY2F0ZXMgd2hldGhlciB1cGRhdGluZyByZXNvdXJjZXMgd291bGQsIGF0IHRoaXMgdGlt
ZSwgbWFrZSBzZW5zZS4KKyAgICB2b2lkIHNldENhblVwZGF0ZU1vcmVSZXNvdXJjZXMoYm9vbCBj
YW4pIHsgbV9jYW5VcGRhdGVNb3JlUmVzb3VyY2VzID0gY2FuOyB9CisKICAgICB2b2lkIGRpZExv
c2VDb250ZXh0KCk7CiAgICAgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoKTsKIApAQCAtMTI5LDYg
KzEzMiw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIHNob3VsZERyYXdGb3JjZWQoKSBjb25zdDsK
ICAgICBib29sIHNob3VsZERyYXcoKSBjb25zdDsKICAgICBib29sIGhhc0RyYXduVGhpc0ZyYW1l
KCkgY29uc3Q7CisgICAgYm9vbCBzaG91bGRVcGRhdGVNb3JlUmVzb3VyY2VzKCkgY29uc3Q7CiAK
ICAgICBDb21taXRTdGF0ZSBtX2NvbW1pdFN0YXRlOwogCkBAIC0xNDMsNiArMTQ3LDcgQEAgcHJv
dGVjdGVkOgogICAgIGJvb2wgbV92aXNpYmxlOwogICAgIGJvb2wgbV9jYW5EcmF3OwogICAgIGJv
b2wgbV9kcmF3SWZQb3NzaWJsZUZhaWxlZDsKKyAgICBib29sIG1fY2FuVXBkYXRlTW9yZVJlc291
cmNlczsKICAgICBDb250ZXh0U3RhdGUgbV9jb250ZXh0U3RhdGU7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwCmluZGV4IDIwYTUwYmJhZDcxYmEzNDI0ZTVjYTI3Njk3Yjc2OGUxOTQ3
Mzk1MWYuLjg5MWYyYjk2NTVhNGQ1NDkzODBhYjk1NmY4YmYzMDVmNmUzOTJlZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJjYy9D
Q1RocmVhZFByb3h5LmgiCiAKKyNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmgiCiAjaW5jbHVkZSAiU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaCIKQEAgLTQ3LDExICs0
OCwxNyBAQCBuYW1lc3BhY2UgewogCiAvLyBOdW1iZXIgb2YgdGV4dHVyZXMgdG8gdXBkYXRlIHdp
dGggZWFjaCBjYWxsIHRvCiAvLyBzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCku
Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IHRleHR1cmVVcGRhdGVzUGVyRnJhbWUgPSAzMjsKK3N0YXRp
YyBjb25zdCBzaXplX3QgdGV4dHVyZVVwZGF0ZXNQZXJUaWNrID0gNDsKIAogLy8gTWVhc3VyZWQg
aW4gc2Vjb25kcy4KIHN0YXRpYyBjb25zdCBkb3VibGUgY29udGV4dFJlY3JlYXRpb25UaWNrUmF0
ZSA9IDAuMDM7CiAKKy8vIE51bWJlciBvZiBwZW5kaW5nIHRleHR1cmUgdXBkYXRlIHF1ZXJpZXMg
dG8gYWxsb3cuCitzdGF0aWMgY29uc3Qgc2l6ZV90IG1heFBlbmRpbmdUZXh0dXJlVXBkYXRlUXVl
cmllcyA9IDI7CisKKy8vIE1lYXN1cmVkIGluIHNlY29uZHMuCitzdGF0aWMgY29uc3QgZG91Ymxl
IHRleHR1cmVVcGRhdGVUaWNrUmF0ZSA9IDAuMDA0OworCiB9IC8vIGFub255bW91cyBuYW1lc3Bh
Y2UKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzM2LDYgKzM0MywxMSBAQCB2b2lkIENDVGhy
ZWFkUHJveHk6OnNldFZpc2libGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBs
ZXRpb24sIGJvb2wgdgogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpc2libGUodmlzaWJs
ZSk7CiAgICAgaWYgKCF2aXNpYmxlKSB7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGlkQmVj
b21lSW52aXNpYmxlT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOworICAg
ICAgICBpZiAobV90ZXh0dXJlVXBkYXRlVGltZXJPbkltcGxUaHJlYWQpIHsKKyAgICAgICAgICAg
IG1fdGV4dHVyZVVwZGF0ZVRpbWVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CisgICAgICAgICAgICBt
X3NjaGVkdWxlck9uSW1wbFRocmVhZC0+ZGlkVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKCk7
CisgICAgICAgIH0KKwogICAgICAgICAvLyBhcyBwYXJ0aWFsIG9yIGFsbCB0aGUgdGV4dHVyZXMg
bWF5IGJlIGV2aWN0ZWQgaW4gZGlkQmVjb21lSW52aXNpYmxlT25JbXBsVGhyZWFkLAogICAgICAg
ICAvLyBzY2hlZHVsZSBhIGNvbW1pdCB3aGljaCB3aWxsIGJlIGV4ZWN1dGVkIHdoZW4gaXQgZ29l
cyB0byB2aXNpYmxlIGFnYWluLgogICAgICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0
TmVlZHNDb21taXQoKTsKQEAgLTUxNCw2ICs1MjYsOCBAQCBib29sIENDVGhyZWFkUHJveHk6Omhh
c01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdAogewogICAgIGlmICghbV9jdXJyZW50VGV4dHVy
ZVVwZGF0ZXJPbkltcGxUaHJlYWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV90
ZXh0dXJlVXBkYXRlVGltZXJPbkltcGxUaHJlYWQpCisgICAgICAgIHJldHVybiB0cnVlOwogICAg
IHJldHVybiBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVwZGF0
ZXMoKTsKIH0KIApAQCAtNTI4LDggKzU0Miw3IEBAIGJvb2wgQ0NUaHJlYWRQcm94eTo6Y2FuRHJh
dygpCiB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJj
ZXMoKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25V
cGRhdGVNb3JlUmVzb3VyY2VzIiwgdGhpcywgMCk7Ci0gICAgQVNTRVJUKG1fY3VycmVudFRleHR1
cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKLSAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1w
bFRocmVhZC0+dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgdGV4dHVyZVVw
ZGF0ZXNQZXJGcmFtZSk7CisgICAgdGV4dHVyZVVwZGF0ZU9uSW1wbFRocmVhZCgpOwogfQogCiB2
b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpCkBAIC01NDAsNyArNTUz
LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQoKQogICAgIEFT
U0VSVChtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CiAKICAgICBtX2N1cnJl
bnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5jbGVhcigpOwotCisgICAgbV90ZXh0dXJlVXBk
YXRlVGltZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKIAogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmJlZ2luQ29tbWl0KCk7CiAKQEAgLTY5NCw2ICs3MDcsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6
OmluaXRpYWxpemVJbXBsT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9u
KQogICAgIE93blB0cjxDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXI+IGZyYW1lUmF0ZUNvbnRyb2xsZXIg
PSBhZG9wdFB0cihuZXcgQ0NGcmFtZVJhdGVDb250cm9sbGVyKENDRGVsYXlCYXNlZFRpbWVTb3Vy
Y2U6OmNyZWF0ZShkaXNwbGF5UmVmcmVzaEludGVydmFsLCBDQ1Byb3h5OjppbXBsVGhyZWFkKCkp
KSk7CiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQgPSBDQ1NjaGVkdWxlcjo6Y3JlYXRlKHRo
aXMsIGZyYW1lUmF0ZUNvbnRyb2xsZXIucmVsZWFzZSgpKTsKICAgICBtX3NjaGVkdWxlck9uSW1w
bFRocmVhZC0+c2V0VmlzaWJsZShtX2xheWVyVHJlZUhvc3RJbXBsLT52aXNpYmxlKCkpOworICAg
IG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXRNYXhVcGRhdGVNb3JlUmVzb3VyY2VzVGltZSh0
ZXh0dXJlVXBkYXRlVGlja1JhdGUgKyAwLjAwMik7CiAKICAgICBtX2lucHV0SGFuZGxlck9uSW1w
bFRocmVhZCA9IENDSW5wdXRIYW5kbGVyOjpjcmVhdGUobV9sYXllclRyZWVIb3N0SW1wbC5nZXQo
KSk7CiAgICAgbV9jb21wb3NpdG9ySWRlbnRpZmllciA9IG1faW5wdXRIYW5kbGVyT25JbXBsVGhy
ZWFkLT5pZGVudGlmaWVyKCk7CkBAIC03MjgsNiArNzQyLDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5
OjpsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21w
bGV0aW8KICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6bGF5ZXJUcmVlSG9zdENsb3Nl
ZE9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAg
ICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICBkZWxl
dGVUZXh0dXJlVXBkYXRlUXVlcmllcygpOwogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwuY2xlYXIo
KTsKICAgICBtX2lucHV0SGFuZGxlck9uSW1wbFRocmVhZC5jbGVhcigpOwogICAgIG1fc2NoZWR1
bGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CkBAIC03NDIsNyArNzU3LDcgQEAgdm9pZCBDQ1RocmVh
ZFByb3h5OjpzZXRGdWxsUm9vdExheWVyRGFtYWdlT25JbXBsVGhyZWFkKCkKIAogc2l6ZV90IEND
VGhyZWFkUHJveHk6Om1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHRleHR1cmVVcGRhdGVzUGVyRnJhbWU7CisgICAgcmV0dXJuIHRleHR1cmVVcGRhdGVzUGVy
VGljazsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJl
YWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0UHRyLCBib29sKiByZWNyZWF0ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cyogY2FwYWJpbGl0aWVzKQpAQCAtNzU4LDQgKzc3MywxMDAgQEAgdm9pZCBDQ1RocmVhZFByb3h5
OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRp
b24sIEcKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKIH0KIAorY2xhc3MgQ0NUaHJlYWRQcm94
eVRleHR1cmVVcGRhdGVUaW1lciA6IHB1YmxpYyBDQ1RpbWVyLCBDQ1RpbWVyQ2xpZW50IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1RocmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRp
bWVyPiBjcmVhdGUoQ0NUaHJlYWRQcm94eSogcHJveHkpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBD
Q1RocmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRpbWVyKHByb3h5KSk7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBvblRpbWVyRmlyZWQoKQorICAgIHsKKyAgICAgICAgbV9wcm94eS0+dGV4dHVyZVVwZGF0
ZUNvbXBsZXRlT25JbXBsVGhyZWFkKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0
IENDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGltZXIoQ0NUaHJlYWRQcm94eSogcHJveHkpCisg
ICAgICAgIDogQ0NUaW1lcihDQ1Byb3h5OjppbXBsVGhyZWFkKCksIHRoaXMpCisgICAgICAgICwg
bV9wcm94eShwcm94eSkKKyAgICB7CisgICAgfQorCisgICAgQ0NUaHJlYWRQcm94eSogbV9wcm94
eTsKK307CisKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6ZGVsZXRlVGV4dHVyZVVwZGF0ZVF1ZXJpZXMo
KQoreworICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19j
YXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgp
LT5nZXRFeHRlbnNpb25zKCkpOworCisgICAgbV9hdmFpbGFibGVRdWVyaWVzTGlzdC5hcHBlbmQo
bV9wZW5kaW5nUXVlcmllc0xpc3QpOworICAgIG1fcGVuZGluZ1F1ZXJpZXNMaXN0LmNsZWFyKCk7
CisKKyAgICBmb3IgKFZlY3Rvcjx1bnNpZ25lZD46Oml0ZXJhdG9yIGl0ID0gbV9hdmFpbGFibGVR
dWVyaWVzTGlzdC5iZWdpbigpOyBpdCAhPSBtX2F2YWlsYWJsZVF1ZXJpZXNMaXN0LmVuZCgpOyAr
K2l0KQorICAgICAgICBleHRlbnNpb25zLT5kZWxldGVRdWVyeUVYVCgqaXQpOworCisgICAgbV9h
dmFpbGFibGVRdWVyaWVzTGlzdC5jbGVhcigpOworfQorCit2b2lkIENDVGhyZWFkUHJveHk6OnBy
b2Nlc3NUZXh0dXJlVXBkYXRlUXVlcmllcygpCit7CisgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0q
IGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygpKTsKKworICAgIHdoaWxlICgh
bV9wZW5kaW5nUXVlcmllc0xpc3QuaXNFbXB0eSgpKSB7CisgICAgICAgIHVuc2lnbmVkIHF1ZXJ5
SWQgPSBtX3BlbmRpbmdRdWVyaWVzTGlzdC5sYXN0KCk7CisgICAgICAgIHVuc2lnbmVkIGF2YWls
YWJsZSA9IDE7CisgICAgICAgIGV4dGVuc2lvbnMtPmdldFF1ZXJ5T2JqZWN0dWl2RVhUKHF1ZXJ5
SWQsIEV4dGVuc2lvbnMzRENocm9taXVtOjpRVUVSWV9SRVNVTFRfQVZBSUxBQkxFX0VYVCwgJmF2
YWlsYWJsZSk7CisgICAgICAgIGlmICghYXZhaWxhYmxlKQorICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgbV9hdmFpbGFibGVRdWVyaWVzTGlzdC5wcmVwZW5kKHF1ZXJ5SWQpOworICAgICAg
ICBtX3BlbmRpbmdRdWVyaWVzTGlzdC5yZW1vdmVMYXN0KCk7CisgICAgfQorfQorCit2b2lkIEND
VGhyZWFkUHJveHk6OnRleHR1cmVVcGRhdGVPbkltcGxUaHJlYWQoKQoreworICAgIFRSQUNFX0VW
RU5UKCJDQ1RocmVhZFByb3h5Ojp0ZXh0dXJlVXBkYXRlT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7
CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVy
ZVVwZGF0ZXJPbkltcGxUaHJlYWQpOworICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRl
ck9uSW1wbFRocmVhZC0+aGFzTW9yZVVwZGF0ZXMoKSk7CisKKyAgICAvLyBQcm9jZXNzIHBlbmRp
bmcgcXVlcmllcy4KKyAgICBwcm9jZXNzVGV4dHVyZVVwZGF0ZVF1ZXJpZXMoKTsKKworICAgIEV4
dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNE
Q2hyb21pdW0qPihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCktPmdldEV4dGVuc2lvbnMo
KSk7CisKKyAgICB1bnNpZ25lZCBxdWVyeUlkID0gMDsKKyAgICAvLyBVc2UgYXZhaWxhYmxlIHF1
ZXJ5IG9yIGFsbG9jYXRlIG5ldyBxdWVyeS4KKyAgICBpZiAoIW1fYXZhaWxhYmxlUXVlcmllc0xp
c3QuaXNFbXB0eSgpKSB7CisgICAgICAgIHF1ZXJ5SWQgPSBtX2F2YWlsYWJsZVF1ZXJpZXNMaXN0
Lmxhc3QoKTsKKyAgICAgICAgbV9hdmFpbGFibGVRdWVyaWVzTGlzdC5yZW1vdmVMYXN0KCk7Cisg
ICAgfSBlbHNlIGlmIChtX3BlbmRpbmdRdWVyaWVzTGlzdC5zaXplKCkgPCBtYXhQZW5kaW5nVGV4
dHVyZVVwZGF0ZVF1ZXJpZXMpCisgICAgICAgIHF1ZXJ5SWQgPSBleHRlbnNpb25zLT5jcmVhdGVR
dWVyeUVYVCgpOworCisgICAgLy8gUGVyZm9ybSB1cGRhdGUgaWYgd2UgaGF2ZW4ndCByZWFjaCB0
aGUgbGltaXQgZm9yIHBlbmRpbmcgcXVlcmllcy4KKyAgICBpZiAocXVlcnlJZCkgeworICAgICAg
ICBleHRlbnNpb25zLT5iZWdpblF1ZXJ5RVhUKEV4dGVuc2lvbnMzRENocm9taXVtOjpDT01NQU5E
U19JU1NVRURfQ0hST01JVU0sIHF1ZXJ5SWQpOworCisgICAgICAgIG1fY3VycmVudFRleHR1cmVV
cGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgp
LCB0ZXh0dXJlVXBkYXRlc1BlclRpY2spOworCisgICAgICAgIGV4dGVuc2lvbnMtPmVuZFF1ZXJ5
RVhUKEV4dGVuc2lvbnMzRENocm9taXVtOjpDT01NQU5EU19JU1NVRURfQ0hST01JVU0pOworICAg
ICAgICAvLyBBZGQgcXVlcnkgdG8gcGVuZGluZyBsaXN0IGZvciBwcm9jZXNzaW5nLgorICAgICAg
ICBtX3BlbmRpbmdRdWVyaWVzTGlzdC5wcmVwZW5kKHF1ZXJ5SWQpOworICAgIH0KKworICAgIEFT
U0VSVCghbV90ZXh0dXJlVXBkYXRlVGltZXJPbkltcGxUaHJlYWQpOworICAgIC8vIFN0YXJ0IHRp
bWVyIHRoYXQgd2lsbCB0cmlnZ2VyIGNvbXBsZXRpb24gb2YgdGV4dHVyZSB1cGRhdGUuCisgICAg
bV90ZXh0dXJlVXBkYXRlVGltZXJPbkltcGxUaHJlYWQgPSBDQ1RocmVhZFByb3h5VGV4dHVyZVVw
ZGF0ZVRpbWVyOjpjcmVhdGUodGhpcyk7CisgICAgbV90ZXh0dXJlVXBkYXRlVGltZXJPbkltcGxU
aHJlYWQtPnN0YXJ0T25lU2hvdCh0ZXh0dXJlVXBkYXRlVGlja1JhdGUpOworfQorCit2b2lkIEND
VGhyZWFkUHJveHk6OnRleHR1cmVVcGRhdGVDb21wbGV0ZU9uSW1wbFRocmVhZCgpCit7CisgICAg
QVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6
dGV4dHVyZVVwZGF0ZUNvbXBsZXRlT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CisgICAgbV90ZXh0
dXJlVXBkYXRlVGltZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKKyAgICBtX3NjaGVkdWxlck9uSW1w
bFRocmVhZC0+ZGlkVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCA2MTQzNGE2YTljZjYz
ZTgyOWNkYmM1YjdiMjUxNzA1ZThhZjk1NWU2Li5jZTFkOTVmMzdkOWM1ZDkxNWI3ZWQxODg2MTdj
MzQyNjJmYWFjMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC00Myw2ICs0Myw3IEBA
IGNsYXNzIENDU2NvcGVkVGhyZWFkUHJveHk7CiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xh
c3MgQ0NUaHJlYWQ7CiBjbGFzcyBDQ1RocmVhZFByb3h5Q29udGV4dFJlY3JlYXRpb25UaW1lcjsK
K2NsYXNzIENDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGltZXI7CiAKIGNsYXNzIENDVGhyZWFk
UHJveHkgOiBwdWJsaWMgQ0NQcm94eSwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCwgQ0NTY2hl
ZHVsZXJDbGllbnQgewogcHVibGljOgpAQCAtOTEsNiArOTIsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IENDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0Kik7CiAgICAgZnJp
ZW5kIGNsYXNzIENDVGhyZWFkUHJveHlDb250ZXh0UmVjcmVhdGlvblRpbWVyOworICAgIGZyaWVu
ZCBjbGFzcyBDQ1RocmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRpbWVyOwogCiAgICAgLy8gU2V0IG9u
IGltcGwgdGhyZWFkLCByZWFkIG9uIG1haW4gdGhyZWFkLgogICAgIHN0cnVjdCBCZWdpbkZyYW1l
QW5kQ29tbWl0U3RhdGUgewpAQCAtMTI4LDYgKzEzMCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0RnVsbFJvb3RMYXllckRhbWFnZU9uSW1wbFRocmVhZCgpOwogICAgIHZvaWQgcmVjcmVhdGVD
b250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgR3JhcGhpY3NDb250ZXh0M0Qq
LCBib29sKiByZWNyZWF0ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyopOwog
ICAgIGJvb2wgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJbnRlcm5hbChib29sIGZvcmNlZERy
YXcpOworICAgIHZvaWQgZGVsZXRlVGV4dHVyZVVwZGF0ZVF1ZXJpZXMoKTsKKyAgICB2b2lkIHBy
b2Nlc3NUZXh0dXJlVXBkYXRlUXVlcmllcygpOworICAgIHZvaWQgdGV4dHVyZVVwZGF0ZU9uSW1w
bFRocmVhZCgpOworICAgIHZvaWQgdGV4dHVyZVVwZGF0ZUNvbXBsZXRlT25JbXBsVGhyZWFkKCk7
CiAKICAgICAvLyBBY2Nlc3NlZCBvbiBtYWluIHRocmVhZCBvbmx5LgogICAgIGJvb2wgbV9hbmlt
YXRlUmVxdWVzdGVkOwpAQCAtMTY4LDYgKzE3NCwxMCBAQCBwcml2YXRlOgogCiAgICAgLy8gU2V0
IHdoZW4gdGhlIG5leHQgZHJhdyBzaG91bGQgcG9zdCBkaWRDb21taXRBbmREcmF3RnJhbWUgdG8g
dGhlIG1haW4gdGhyZWFkLgogICAgIGJvb2wgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJh
bWVPbkltcGxUaHJlYWQ7CisKKyAgICBPd25QdHI8Q0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVU
aW1lcj4gbV90ZXh0dXJlVXBkYXRlVGltZXJPbkltcGxUaHJlYWQ7CisgICAgVmVjdG9yPHVuc2ln
bmVkPiBtX3BlbmRpbmdRdWVyaWVzTGlzdDsKKyAgICBWZWN0b3I8dW5zaWduZWQ+IG1fYXZhaWxh
YmxlUXVlcmllc0xpc3Q7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbWVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZVNvdXJjZS5oCmluZGV4IGRjY2I0
NzBhNjM4M2UzMDRkYjExNmE1YjlkZjkxZGU1NjA2OGUwODUuLmMzNjRkOTJiZDAyOGEyMmZmYThh
MmE4N2ZjMTkzMGI1OGRlZjhlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZVNvdXJjZS5oCkBAIC01MCw2ICs1
MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KENDVGltZVNvdXJjZUNs
aWVudCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgYWN0aXZlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgZG91YmxlIG5leHRU
aWNrVGltZSgpIGNvbnN0ID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAppbmRl
eCBlNGE1ZDdjOTU5NDRiOTRkNjUzYzE0MTE5NTZiOWMyOWNjZWQ0NmJmLi4xZTU0MzE5OGU5Yjcx
MmQ0NmRiYWYwNDc5NWM1Y2E4OWI1ZjdiNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCkBA
IC0xOTcsNyArMTk3LDggQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RD
b21taXRBZnRlckZhaWxlZERyYXdBbGxvd3NEcmF3SW5TYW1lRnJhbWUKICAgICBFWFBFQ1RfVFJV
RShzdGF0ZS5jb21taXRQZW5kaW5nKCkpOwogCiAgICAgLy8gRmluaXNoIHRoZSBjb21taXQuCi0g
ICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBs
ZXRlKHRydWUpOworICAgIHN0YXRlLnNldENhblVwZGF0ZU1vcmVSZXNvdXJjZXModHJ1ZSk7CiAg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRF
X01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLnVwZGF0ZVN0
YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVT
T1VSQ0VTKTsKICAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxz
ZSk7CkBAIC0yNDcsNyArMjQ4LDggQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3RDb21taXRBZnRlckZhaWxlZEFuZFN1Y2Nlc3NmdWxEcmF3RG9lc05vdEEKICAgICBFWFBF
Q1RfVFJVRShzdGF0ZS5jb21taXRQZW5kaW5nKCkpOwogCiAgICAgLy8gRmluaXNoIHRoZSBjb21t
aXQuCi0gICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgc3RhdGUuYmVnaW5GcmFt
ZUNvbXBsZXRlKHRydWUpOworICAgIHN0YXRlLnNldENhblVwZGF0ZU1vcmVSZXNvdXJjZXModHJ1
ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5f
VVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLnVw
ZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01P
UkVfUkVTT1VSQ0VTKTsKICAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0
ZShmYWxzZSk7CkBAIC00NjEsNiArNDYzLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAgIHN0YXRl
LnNldENvbW1pdFN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBE
QVRJTkdfUkVTT1VSQ0VTKTsKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyhmYWxzZSk7CiAgICAg
c3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOworICAgIHN0YXRlLnNl
dENhblVwZGF0ZU1vcmVSZXNvdXJjZXModHJ1ZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVl
KTsKIAogICAgIC8vIFZlcmlmeSB3ZSBiZWdpbiB1cGRhdGUsIGJvdGggZm9yIHZzeW5jIGFuZCBu
b3QgdnN5bmMuCkBAIC00ODksNiArNDkyLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X1R3b1JvdW5kc09mVXBkYXRlcykKICAgICBzdGF0
ZS5zZXRDb21taXRTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQ
REFUSU5HX1JFU09VUkNFUyk7CiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoZmFsc2UpOwogICAg
IHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKKyAgICBzdGF0ZS5z
ZXRDYW5VcGRhdGVNb3JlUmVzb3VyY2VzKHRydWUpOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1
ZSk7CiAKICAgICAvLyBWZXJpZnkgdGhlIHVwZGF0ZSBiZWdpbnMsIGJvdGggZm9yIHZzeW5jIGFu
ZCBub3QgdnN5bmMuCkBAIC01NDUsNiArNTQ5LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZVRlc3QsIFRlc3RVcGRhdGVzX1dpdGhSZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiAgICAg
c3RhdGUuc2V0Q29tbWl0U3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFU
RV9VUERBVElOR19SRVNPVVJDRVMpOwogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOwog
ICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKKyAgICBzdGF0
ZS5zZXRDYW5VcGRhdGVNb3JlUmVzb3VyY2VzKHRydWUpOwogICAgIHN0YXRlLnNldFZpc2libGUo
dHJ1ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVH
SU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCkBAIC02MDMs
NyArNjA4LDggQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RTZXROZWVk
c0NvbW1pdElzTm90TG9zdCkKICAgICBFWFBFQ1RfVFJVRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsK
IAogICAgIC8vIExldCB0aGUgZnJhbWUgZmluaXNoLgotICAgIHN0YXRlLmJlZ2luRnJhbWVDb21w
bGV0ZSgpOworICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSh0cnVlKTsKKyAgICBzdGF0ZS5z
ZXRDYW5VcGRhdGVNb3JlUmVzb3VyY2VzKHRydWUpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29t
bWl0U3RhdGUoKSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAg
IHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5f
VVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKQEAgLTY0NSw3ICs2NTEsOCBAQCBURVNUKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZSkKICAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAg
ICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KLSAgICBzdGF0ZS5i
ZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUodHJ1ZSk7
CisgICAgc3RhdGUuc2V0Q2FuVXBkYXRlTW9yZVJlc291cmNlcyh0cnVlKTsKICAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJD
RVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFj
dGlvbigpKTsKIApAQCAtNjk2LDcgKzcwMyw4IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmVUZXN0LCBUZXN0RnVsbEN5Y2xlV2l0aENvbW1pdFJlcXVlc3RJbmJldHdlZW4pCiAgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFj
dGlvbigpKTsKIAogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgZnJhbWUgZmluaXNoZWQu
Ci0gICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgc3RhdGUuYmVnaW5GcmFtZUNv
bXBsZXRlKHRydWUpOworICAgIHN0YXRlLnNldENhblVwZGF0ZU1vcmVSZXNvdXJjZXModHJ1ZSk7
CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBE
QVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMs
IHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAgLTc1Myw3ICs3NjEsOCBAQCBURVNUKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEdvZXNJbnZpc2libGVNaWRDb21taXQpCiAgICAgc3Rh
dGUuc2V0VmlzaWJsZShmYWxzZSk7CiAKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZy
YW1lIGZpbmlzaGVkCi0gICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgc3RhdGUu
YmVnaW5GcmFtZUNvbXBsZXRlKHRydWUpOworICAgIHN0YXRlLnNldENhblVwZGF0ZU1vcmVSZXNv
dXJjZXModHJ1ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01N
SVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9S
RV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAgLTg2MCw3ICs4NjksOCBAQCBU
RVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdENvbnRleHRMb3N0V2hpbGVDb21t
aXRJblByb2dyZXNzKQogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBGaW5pc2ggdGhlIGZyYW1l
LCB1cGRhdGUgcmVzb3VyY2VzLCBhbmQgY29tbWl0LgotICAgIHN0YXRlLmJlZ2luRnJhbWVDb21w
bGV0ZSgpOworICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSh0cnVlKTsKKyAgICBzdGF0ZS5z
ZXRDYW5VcGRhdGVNb3JlUmVzb3VyY2VzKHRydWUpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUu
bmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkp
OwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0
YXRlLm5leHRBY3Rpb24oKSk7CkBAIC05MDQsNyArOTE0LDggQEAgVEVTVChDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZVRlc3QsIFRlc3RDb250ZXh0TG9zdFdoaWxlQ29tbWl0SW5Qcm9ncmVzc0FuZEFu
b3RoZXIKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05F
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gRmluaXNoIHRoZSBmcmFtZSwgdXBkYXRl
IHJlc291cmNlcywgYW5kIGNvbW1pdC4KLSAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsK
KyAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuVXBk
YXRlTW9yZVJlc291cmNlcyh0cnVlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CiAgICAgc3RhdGUudXBkYXRlU3RhdGUoc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0
QWN0aW9uKCkpOwpAQCAtOTcwLDcgKzk4MSw4IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmVUZXN0LCBUZXN0QmVnaW5GcmFtZVdoZW5Db21taXRJblByb2dyZXNzKQogICAgIHN0YXRlLnNl
dE5lZWRzQ29tbWl0KHRydWUpOwogICAgIHN0YXRlLnNldE5lZWRzRm9yY2VkQ29tbWl0KHRydWUp
OwogCi0gICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgc3RhdGUuYmVnaW5GcmFt
ZUNvbXBsZXRlKHRydWUpOworICAgIHN0YXRlLnNldENhblVwZGF0ZU1vcmVSZXNvdXJjZXModHJ1
ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5f
VVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLnVw
ZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAppbmRleCA4ZGY1
YTExY2FmN2EyMTNlMDc0NjAxNWNmNDkxZDdkMjJmYmY2NWYyLi45NmQ5OTY3YTNiZGJlYjY3NWNi
OWZkMWQ2MDNlZWFlNTcyMjg1NWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCkBAIC0xMDEsMTIgKzEwMSwxMCBAQCBURVNUKENDU2No
ZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1pdCkKICAgICBjbGllbnQucmVzZXQoKTsKIAogICAgIC8v
IFNpbmNlLCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzIGlzIHNldCB0byBmYWxzZSwKLSAgICAvLyBi
ZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIHVwZGF0ZU1vcmVSZXNvdXJjZXMsIHRoZW4KLSAgICAv
LyBjb21taXQKKyAgICAvLyBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIGp1c3QgY29tbWl0CiAg
ICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29tcGxldGUoKTsKLSAgICBFWFBFQ1RfRVEoMiwgY2xp
ZW50Lm51bUFjdGlvbnMoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRh
dGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50LmFjdGlvbigwKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJz
Y2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9uKDEpKTsKKyAgICBFWFBFQ1RfRVEo
MSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rp
b25Db21taXQiLCBjbGllbnQuYWN0aW9uKDApKTsKICAgICBFWFBFQ1RfVFJVRSh0aW1lU291cmNl
LT5hY3RpdmUoKSk7CiAgICAgY2xpZW50LnJlc2V0KCk7CiAKQEAgLTEzOCwxMiArMTM2LDEwIEBA
IFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0Q29tbWl0QWZ0ZXJCZWdpbkZyYW1lKQogICAg
IHNjaGVkdWxlci0+c2V0TmVlZHNDb21taXQoKTsKIAogICAgIC8vIFNpbmNlLCBoYXNNb3JlUmVz
b3VyY2VVcGRhdGVzIGlzIHNldCB0byBmYWxzZSwgYW5kIGFub3RoZXIgY29tbWl0IGlzCi0gICAg
Ly8gbmVlZGVkLCBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIHVwZGF0ZU1vcmVSZXNvdXJjZXMs
IHRoZW4gY29tbWl0LCB0aGVuCi0gICAgLy8gYmVnaW4gYW5vdGhlciBmcmFtZS4KKyAgICAvLyBu
ZWVkZWQsIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQgY29tbWl0LCB0aGVuIGJlZ2luIGFub3Ro
ZXIgZnJhbWUuCiAgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29tcGxldGUoKTsKLSAgICBFWFBF
Q1RfRVEoMiwgY2xpZW50Lm51bUFjdGlvbnMoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVs
ZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50LmFjdGlvbigwKSk7Ci0gICAgRVhQ
RUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9uKDEpKTsKKyAg
ICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJz
Y2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9uKDApKTsKICAgICBjbGllbnQucmVz
ZXQoKTsKIAogICAgIC8vIFRpY2sgc2hvdWxkIGRyYXcgYnV0IHRoZW4gYmVnaW4gYW5vdGhlciBm
cmFtZS4KQEAgLTE3Miw3ICsxNjgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCB2
b2lkIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwRm9yY2VkKCkgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyhkb3VibGUpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25Db21taXQoKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5Db250ZXh0UmVjcmVhdGlvbigpIHsgfQogCkBAIC0yNjUs
NyArMjYxLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRB
Y3Rpb25EcmF3QW5kU3dhcEZvcmNlZCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRB
Y3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxl
ZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoZG91YmxlKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFj
dGlvbkJlZ2luQ29udGV4dFJlY3JlYXRpb24oKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3RDb21tb24uaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0Q29tbW9uLmgKaW5kZXggMGMxMDU1ODhi
MTQyZjc2MTkzNzIyZTYyODhlMTk4OTY1M2E5NDk4NC4uOGFmYzk5MzkyOGI2ZWI1ZWNmOGYzMjA1
ZGYxY2E1NzA5MDlhYzgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1NjaGVkdWxlclRlc3RDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDU2NoZWR1bGVyVGVzdENvbW1vbi5oCkBAIC05Myw2ICs5Myw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFdlYkNvcmU6OkNDVGltZVNvdXJjZUNsaWVudCogY2xp
ZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShi
b29sIGIpIHsgbV9hY3RpdmUgPSBiOyB9CiAgICAgdmlydHVhbCBib29sIGFjdGl2ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYWN0aXZlOyB9CisgICAgdmlydHVhbCBkb3VibGUgbmV4dFRpY2tUaW1lKCkg
Y29uc3QgeyByZXR1cm4gMDsgfQogCiAgICAgdm9pZCB0aWNrKCkKICAgICB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134835</attachid>
            <date>2012-03-30 10:18:31 -0700</date>
            <delta_ts>2012-04-02 08:12:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81004-20120330131829.patch</filename>
            <type>text/plain</type>
            <size>40929</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjE3NzQzMmM4ZTVjZmY1
ZWUyYTNmM2IyMjk2NTk2YTVjN2ZkNTU1Zi4uYjBkNjQ3MTAxODEzMTY4MGMwYTFlODI2MzFhMGYw
NTg2NDU4YmM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDEyLTAzLTMwICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBV
c2UgR0xfQ0hST01JVU1fY29tbWFuZF9idWZmZXJfcXVlcnkgdG8gdGhyb3R0bGUgaW5jcmVtZW50
YWwgdGV4dHVyZSB1cGRhdGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODEwMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBIYXZlIHRocmVhZGVkIGNvbXBvc2l0b3IgdXNlIEdMX0NIUk9NSVVNX2NvbW1h
bmRfYnVmZmVyX3F1ZXJ5IHRvCisgICAgICAgIHRocm90dGxlIHRleHR1cmUgdXBkYXRlcyBiYXNl
ZCBvbiBudW1iZXIgb2YgY3VycmVudGx5IHBlbmRpbmcgcXVlcmllcworICAgICAgICBhbmQgdGlt
ZSB1bnRpbCBuZXh0IHZzeW5jLgorCisgICAgICAgIFVuaXQgdGVzdDogQ0NTY2hlZHVsZXJUZXN0
LlVwZGF0ZU1vcmVSZXNvdXJjZXMKKyAgICAgICAgICAgICAgICAgICBDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QuVGVzdENhblVwZGF0ZU1vcmVSZXNvdXJjZXMKKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NEZWxheUJhc2VkVGltZVNvdXJjZTo6bmV4dFRpY2tUaW1lKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaDoKKyAgICAgICAgKENDRGVsYXlCYXNlZFRpbWVTb3Vy
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRl
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXI6
Om5leHRUaWNrVGltZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKEND
RnJhbWVSYXRlQ29udHJvbGxlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OmJl
Z2luRnJhbWVDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6ZGlkVXBk
YXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVy
Ojp2c3luY1RpY2spOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6Om5leHRBY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25z
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5o
OgorICAgICAgICAoQ0NTY2hlZHVsZXJDbGllbnQpOgorICAgICAgICAoQ0NTY2hlZHVsZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6c2hvdWxkVXBkYXRlTW9yZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpiZWdpbkZyYW1l
Q29tcGxldGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lLmg6CisgICAgICAgIChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0Q2FuVXBkYXRl
TW9yZVJlc291cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXVEYpOgorICAgICAgICAoV2ViQ29yZTo6Q0NU
aHJlYWRQcm94eTo6c2V0VmlzaWJsZU9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGhyZWFkUHJveHk6Om1heFJlc291cmNlVXBkYXRlVGltZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0
ZU1vcmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1
bGVkQWN0aW9uQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmxheWVy
VHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQ
cm94eTo6bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKToKKyAgICAgICAgKENDVGhyZWFkUHJveHlU
ZXh0dXJlVXBkYXRlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eVRleHR1
cmVVcGRhdGVUaW1lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHlU
ZXh0dXJlVXBkYXRlVGltZXI6Om9uVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ro
cmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRpbWVyOjpDQ1RocmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRp
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmRlbGV0ZVRleHR1cmVVcGRh
dGVRdWVyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnByb2Nlc3NUZXh0
dXJlVXBkYXRlUXVlcmllcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojp0ZXh0
dXJlVXBkYXRlT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6
OnRleHR1cmVVcGRhdGVDb21wbGV0ZU9uSW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChDQ1RocmVhZFByb3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbWVTb3VyY2UuaDoKKyAgICAgICAgKENDVGltZVNvdXJjZSk6CisKIDIw
MTItMDMtMjcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAg
W01hY10gU3RvcCB1c2luZyBOU01hcFRhYmxlIGluIEZvcm1EYXRhU3RyZWFtTWFjLm1tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGFiNGNmOTZhYjJkZjliZDFmNWJkZGU4YmQ4NDU5ZGQ4
OTlmNzcxOWUuLjlkMmE2MDM4NDI3MmE3MGI3ZWM3MjJjYmE1N2E0MzdhZDg5ODM1MDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMDMtMzAgIERhdmlk
IFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFVz
ZSBHTF9DSFJPTUlVTV9jb21tYW5kX2J1ZmZlcl9xdWVyeSB0byB0aHJvdHRsZSBpbmNyZW1lbnRh
bCB0ZXh0dXJlIHVwZGF0ZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04MTAwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCB0aGUgZm9sbG93aW5nIG5ldyB1bml0IHRlc3RzOiBDQ1NjaGVkdWxlclRl
c3QuVXBkYXRlTW9yZVJlc291cmNlcywKKyAgICAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LlRlc3RDYW5VcGRhdGVNb3JlUmVzb3VyY2VzCisKKyAgICAgICAgKiB0ZXN0cy9DQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwOgorICAg
ICAgICAoV2ViS2l0VGVzdHM6OkZha2VDQ1NjaGVkdWxlckNsaWVudDo6cmVzZXQpOgorICAgICAg
ICAoV2ViS2l0VGVzdHM6OkZha2VDQ1NjaGVkdWxlckNsaWVudDo6c2V0TWF4UmVzb3VyY2VVcGRh
dGVUaW1lKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlQ0NTY2hlZHVsZXJDbGllbnQ6Om1h
eFJlc291cmNlVXBkYXRlVGltZSk6CisgICAgICAgIChGYWtlQ0NTY2hlZHVsZXJDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1QpOgorICAgICAgICAoV2ViS2l0VGVzdHMpOgorICAg
ICAgICAqIHRlc3RzL0NDU2NoZWR1bGVyVGVzdENvbW1vbi5oOgorICAgICAgICAoV2ViS2l0VGVz
dHM6OkZha2VDQ1RpbWVTb3VyY2U6OkZha2VDQ1RpbWVTb3VyY2UpOgorICAgICAgICAoV2ViS2l0
VGVzdHM6OkZha2VDQ1RpbWVTb3VyY2U6Om5leHRUaWNrVGltZSk6CisgICAgICAgIChXZWJLaXRU
ZXN0czo6RmFrZUNDVGltZVNvdXJjZTo6c2V0TmV4dFRpY2tUaW1lKToKKyAgICAgICAgKEZha2VD
Q1RpbWVTb3VyY2UpOgorCiAyMDEyLTAzLTI3ICBTYW1pIEt5b3N0aWxhICA8c2t5b3N0aWxAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWRkIFRleHR1cmVDb3BpZXIgZm9yIGNv
cHlpbmcgdGV4dHVyZSBjb250ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFzZWRUaW1l
U291cmNlLmNwcAppbmRleCBiNjg4YTc4YTI3YzU3OTUxZGQ4ZDZiZWZmZWU3NjZjNWQyNGYyM2U0
Li43MDRlZmY0YmY3YTNkNmMwNGRlYjVjZDFkMjY2MGZjOGUwMTllYmM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFzZWRU
aW1lU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmNwcApAQCAtMTYxLDQgKzE2MSwxMiBAQCB2
b2lkIENDRGVsYXlCYXNlZFRpbWVTb3VyY2U6OnBvc3ROZXh0VGlja1Rhc2soZG91YmxlIG5vdykK
ICAgICBtX3RpY2tUYXJnZXQgPSBuZXdUaWNrVGFyZ2V0OwogfQogCitkb3VibGUgQ0NEZWxheUJh
c2VkVGltZVNvdXJjZTo6bmV4dFRpY2tUaW1lKCkgY29uc3QKK3sKKyAgICBpZiAoIW1faGFzVGlj
a1RhcmdldCkKKyAgICAgICAgcmV0dXJuIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwor
CisgICAgcmV0dXJuIG1fdGlja1RhcmdldDsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxh
eUJhc2VkVGltZVNvdXJjZS5oCmluZGV4IDVmMWIyYzRmMmZkYTdiZWQ1NGY1ZjQ0MzUwNjQ1ZjM1
Zjc5NmU1ZGYuLjM4MGJlNmJjMGQxZTZhMTJlYTViNTU3ZjZhNzM0YWM3ZGY3NGI1NjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVs
YXlCYXNlZFRpbWVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmgKQEAgLTQ3LDYgKzQ3LDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCk7CiAgICAgdmlydHVhbCBi
b29sIGFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgIT0gU1RBVEVfSU5BQ1RJVkU7IH0K
IAorICAgIHZpcnR1YWwgZG91YmxlIG5leHRUaWNrVGltZSgpIGNvbnN0OworCiAgICAgLy8gQ0NU
aW1lckNsaWVudCBpbXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgb25UaW1lckZpcmVk
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuY3BwCmluZGV4IGRi
NmQ5NWNjMDBjYzE1NTY4ZTBjZTU2N2Y0NDk3OGE5Mjc5MjRiZTguLmVjM2MyNDc4MDkzYWQ4Yzg3
YjY4NDgwNjAyMjg0Njg0NTlkN2Y4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVD
b250cm9sbGVyLmNwcApAQCAtMTA1LDQgKzEwNSw5IEBAIHZvaWQgQ0NGcmFtZVJhdGVDb250cm9s
bGVyOjpkaWRBYm9ydEFsbFBlbmRpbmdGcmFtZXMoKQogICAgIG1fbnVtRnJhbWVzUGVuZGluZyA9
IDA7CiB9CiAKK2RvdWJsZSBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXI6Om5leHRUaWNrVGltZSgpCit7
CisgICAgcmV0dXJuIG1fdGltZVNvdXJjZS0+bmV4dFRpY2tUaW1lKCk7Cit9CisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJh
bWVSYXRlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmgKaW5kZXggNTczNGQ0YWE2ZTlmNzQ2MWE0
YzY2YzZlMGExODYwZGEzMGQ0OTY2ZS4uN2ExZGFkNDM5YWZiMjhiM2Y0MzRiMzc4OTZhMmM2OWQ4
ZjRjMjZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmgKQEAgLTY0
LDYgKzY0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmluaXNoRnJhbWUoKTsKICAgICB2b2lk
IGRpZEFib3J0QWxsUGVuZGluZ0ZyYW1lcygpOwogICAgIHZvaWQgc2V0TWF4RnJhbWVzUGVuZGlu
ZyhpbnQpOyAvLyAwIGZvciB1bmxpbWl0ZWQuCisgICAgZG91YmxlIG5leHRUaWNrVGltZSgpOwog
CiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIENDRnJhbWVSYXRlQ29udHJvbGxlclRpbWVT
b3VyY2VBZGFwdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCmluZGV4IDEzYjc0MWVhOGMzZmY0
OGM4NzZjYzcyY2I2YTRlMGFkYTNjYjJmYTAuLmJiYzhkZDhjMDMzMDE5NmIyMWZiN2QwYWZkZDEw
N2YxOTIyYTI4ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKQEAgLTc3LDcgKzc3LDcgQEAg
dm9pZCBDQ1NjaGVkdWxlcjo6c2V0TmVlZHNGb3JjZWRSZWRyYXcoKQogdm9pZCBDQ1NjaGVkdWxl
cjo6YmVnaW5GcmFtZUNvbXBsZXRlKCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NTY2hlZHVsZXI6
OmJlZ2luRnJhbWVDb21wbGV0ZSIsIHRoaXMsIDApOwotICAgIG1fc3RhdGVNYWNoaW5lLmJlZ2lu
RnJhbWVDb21wbGV0ZSgpOworICAgIG1fc3RhdGVNYWNoaW5lLmJlZ2luRnJhbWVDb21wbGV0ZSht
X2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsKICAgICBwcm9jZXNzU2NoZWR1bGVk
QWN0aW9ucygpOwogfQogCkBAIC0xMDcsMTQgKzEwNywxOSBAQCB2b2lkIENDU2NoZWR1bGVyOjpk
aWRSZWNyZWF0ZUNvbnRleHQoKQogICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7CiB9CiAK
LXZvaWQgQ0NTY2hlZHVsZXI6OnZzeW5jVGljaygpCit2b2lkIENDU2NoZWR1bGVyOjpkaWRVcGRh
dGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoKQogeworICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxl
cjo6ZGlkVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlIiwgdGhpcywgMCk7CiAgICAgaWYgKG1f
dXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcpIHsKICAgICAgICAgbV91cGRhdGVNb3JlUmVzb3Vy
Y2VzUGVuZGluZyA9IGZhbHNlOwogICAgICAgICBtX3N0YXRlTWFjaGluZS5iZWdpblVwZGF0ZU1v
cmVSZXNvdXJjZXNDb21wbGV0ZShtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsK
ICAgICB9Ci0gICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjp2c3luY1RpY2siLCB0aGlzLCAw
KTsKKyAgICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOworfQogCit2b2lkIENDU2NoZWR1bGVy
Ojp2c3luY1RpY2soKQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxlcjo6dnN5bmNUaWNr
IiwgdGhpcywgMCk7CiAgICAgbV9zdGF0ZU1hY2hpbmUuZGlkRW50ZXJWU3luYygpOwogICAgIHBy
b2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7CiAgICAgbV9zdGF0ZU1hY2hpbmUuZGlkTGVhdmVWU3lu
YygpOwpAQCAtMTIzLDYgKzEyOCw3IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnZzeW5jVGljaygpCiBD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QWN0aW9uIENDU2NoZWR1bGVyOjpuZXh0QWN0aW9uKCkK
IHsKICAgICBtX3N0YXRlTWFjaGluZS5zZXRDYW5EcmF3KG1fY2xpZW50LT5jYW5EcmF3KCkpOwor
ICAgIG1fc3RhdGVNYWNoaW5lLnNldENhblVwZGF0ZU1vcmVSZXNvdXJjZXMobV9zdGF0ZU1hY2hp
bmUucmVkcmF3UGVuZGluZygpID8gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgPCAobV9m
cmFtZVJhdGVDb250cm9sbGVyLT5uZXh0VGlja1RpbWUoKSAtIG1fY2xpZW50LT5tYXhSZXNvdXJj
ZVVwZGF0ZVRpbWUoKSkgOiB0cnVlKTsKICAgICByZXR1cm4gbV9zdGF0ZU1hY2hpbmUubmV4dEFj
dGlvbigpOwogfQogCkBAIC0xNDksMTUgKzE1NSw3IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nl
c3NTY2hlZHVsZWRBY3Rpb25zKCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VT
OgogICAgICAgICAgICAgbV9jbGllbnQtPnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJj
ZXMoKTsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQtPmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMo
KSkgewotICAgICAgICAgICAgICAgIC8vIElmIHdlIHdlcmUganVzdCB0b2xkIHRvIHVwZGF0ZSBy
ZXNvdXJjZXMsIGJ1dCB0aGVyZSBhcmUgbm8KLSAgICAgICAgICAgICAgICAvLyBtb3JlIHBlbmRp
bmcsIHRoZW4gdGVsbCB0aGUgc3RhdGUgbWFjaGluZSB0aGF0IHRoZQotICAgICAgICAgICAgICAg
IC8vIGJlZ2luVXBkYXRlTW9yZVJlc291cmNlcyBjb21wbGV0ZWQuIElmIG1vcmUgYXJlIHBlbmRp
bmcsCi0gICAgICAgICAgICAgICAgLy8gdGhlbiB3ZSB3aWxsIGFjayB0aGUgdXBkYXRlIGF0IHRo
ZSBuZXh0IGRyYXcuCi0gICAgICAgICAgICAgICAgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGlu
ZyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIG1fc3RhdGVNYWNoaW5lLmJlZ2luVXBkYXRlTW9y
ZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSB0cnVlOworICAgICAgICAgICAg
bV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVDoKICAg
ICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25Db21taXQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlci5oCmluZGV4IGM4NzZlMjBiYzg3NzhkYzc5YWYzODljMGI5YTljYmMzYWNiYTY5NmYuLjMy
M2YxZWUxYjE0YjI3YzFlNmQ0YTA0MmY1M2IwYjdlYzVmNDNhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXIuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBDQ1NjaGVkdWxlckNsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGNhbkRyYXcoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGhhc01v
cmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgbWF4UmVz
b3VyY2VVcGRhdGVUaW1lKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxl
ZEFjdGlvbkJlZ2luRnJhbWUoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNjaGVkdWxlZEFjdGlv
bkRyYXdBbmRTd2FwSWZQb3NzaWJsZSgpID0gMDsKQEAgLTgxLDYgKzgyLDggQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkTG9zZUNvbnRleHQoKTsKICAgICB2b2lkIGRpZFJlY3JlYXRlQ29udGV4dCgp
OwogCisgICAgdm9pZCBkaWRVcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoKTsKKwogICAgIGJv
b2wgY29tbWl0UGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVNYWNoaW5lLmNvbW1pdFBl
bmRpbmcoKTsgfQogICAgIGJvb2wgcmVkcmF3UGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGVNYWNoaW5lLnJlZHJhd1BlbmRpbmcoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlclN0YXRlTWFjaGluZS5jcHAKaW5kZXggMWM5NDJlMzQzYzc3NzE5YjYzZTZkM2YwOWIxMmIw
NWRlZTAwMWJkYS4uOTgxOGVmOTlkY2M0MDAxOWI4NTA5MGUwNjFlZThkODcyNmFhYjY0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcApAQCAtNDEsNiAr
NDEsNyBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUo
KQogICAgICwgbV92aXNpYmxlKGZhbHNlKQogICAgICwgbV9jYW5EcmF3KHRydWUpCiAgICAgLCBt
X2RyYXdJZlBvc3NpYmxlRmFpbGVkKGZhbHNlKQorICAgICwgbV9jYW5VcGRhdGVNb3JlUmVzb3Vy
Y2VzKGZhbHNlKQogICAgICwgbV9jb250ZXh0U3RhdGUoQ09OVEVYVF9BQ1RJVkUpCiB7CiB9CkBA
IC03MCw2ICs3MSwxOCBAQCBib29sIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzaG91bGREcmF3
KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6c2hvdWxkVXBkYXRlTW9yZVJlc291cmNlcygpIGNvbnN0Cit7CisgICAgaWYgKG1fbmVl
ZHNGb3JjZWRSZWRyYXcpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKG1fdXBkYXRl
TW9yZVJlc291cmNlc1BlbmRpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1f
Y2FuVXBkYXRlTW9yZVJlc291cmNlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biB0cnVlOworfQorCiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QWN0aW9uIENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fY29tbWl0
U3RhdGUpIHsKQEAgLTk2LDcgKzEwOSw3IEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rp
b24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBjb25zdAogICAgIGNhc2Ug
Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUzoKICAgICAgICAgaWYgKHNob3VsZERyYXco
KSkKICAgICAgICAgICAgIHJldHVybiBtX25lZWRzRm9yY2VkUmVkcmF3ID8gQUNUSU9OX0RSQVdf
Rk9SQ0VEIDogQUNUSU9OX0RSQVdfSUZfUE9TU0lCTEU7Ci0gICAgICAgIGlmICghbV91cGRhdGVN
b3JlUmVzb3VyY2VzUGVuZGluZykKKyAgICAgICAgaWYgKHNob3VsZFVwZGF0ZU1vcmVSZXNvdXJj
ZXMoKSkKICAgICAgICAgICAgIHJldHVybiBBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VS
Q0VTOwogICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAKQEAgLTIyMiwxMCArMjM1LDEzIEBA
IHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNldE5lZWRzRm9yY2VkQ29tbWl0KCkKICAg
ICBtX25lZWRzRm9yY2VkQ29tbWl0ID0gdHJ1ZTsKIH0KIAotdm9pZCBDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6YmVnaW5GcmFtZUNvbXBsZXRlKCkKK3ZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OmJlZ2luRnJhbWVDb21wbGV0ZShib29sIHJlc291cmNlc1BlbmRpbmcpCiB7CiAgICAgQVNT
RVJUKG1fY29tbWl0U3RhdGUgPT0gQ09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTKTsKLSAg
ICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUzsKKyAgICBp
ZiAocmVzb3VyY2VzUGVuZGluZykKKyAgICAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9TVEFU
RV9VUERBVElOR19SRVNPVVJDRVM7CisgICAgZWxzZQorICAgICAgICBtX2NvbW1pdFN0YXRlID0g
Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVDsKIH0KIAogdm9pZCBDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6YmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoYm9vbCBtb3JlUGVuZGlu
ZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCmluZGV4IDJlY2Zk
MWNkMDZkNTA4YWUxZmU2MWY2ODM5MjE2ODFhZmRjZWI4NjYuLjEwMDMxNjE4OTcwNmYyMzM3NWMx
ZjJkZmNhNTQ0MTM2ZGY2NGUxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmUuaApAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsIHRoaXMg
b25seSBpbiByZXNwb25zZSB0byByZWNlaXZpbmcgYW4gQUNUSU9OX0JFR0lOX0ZSQU1FCiAgICAg
Ly8gZnJvbSBuZXh0U3RhdGUuIEluZGljYXRlcyB0aGF0IGFsbCBwYWludGluZyBpcyBjb21wbGV0
ZSBhbmQgdGhhdAogICAgIC8vIHVwZGF0aW5nIG9mIGNvbXBvc2l0b3IgcmVzb3VyY2VzIGNhbiBi
ZWdpbi4KLSAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZSgpOworICAgIHZvaWQgYmVnaW5GcmFt
ZUNvbXBsZXRlKGJvb2wgcmVzb3VyY2VzUGVuZGluZyk7CiAKICAgICAvLyBDYWxsIHRoaXMgb25s
eSBpbiByZXNwb25zZSB0byByZWNlaXZpbmcgYW4gQUNUSU9OX1VQREFURV9NT1JFX1JFU09VUkNF
UwogICAgIC8vIGZyb20gbmV4dFN0YXRlLiBJbmRpY2F0ZXMgdGhhdCB0aGUgc3BlY2lmaWMgdXBk
YXRlIHJlcXVlc3QgY29tcGxldGVkLgpAQCAtMTIyLDYgKzEyMiw5IEBAIHB1YmxpYzoKICAgICAv
LyB3aGVuIHN1Y2ggYmVoYXZpb3Igd291bGQgYmUgdW5kZXNpcmFibGUuCiAgICAgdm9pZCBzZXRD
YW5EcmF3KGJvb2wgY2FuKSB7IG1fY2FuRHJhdyA9IGNhbjsgfQogCisgICAgLy8gSW5kaWNhdGVz
IHdoZXRoZXIgdXBkYXRpbmcgcmVzb3VyY2VzIHdvdWxkLCBhdCB0aGlzIHRpbWUsIG1ha2Ugc2Vu
c2UuCisgICAgdm9pZCBzZXRDYW5VcGRhdGVNb3JlUmVzb3VyY2VzKGJvb2wgY2FuKSB7IG1fY2Fu
VXBkYXRlTW9yZVJlc291cmNlcyA9IGNhbjsgfQorCiAgICAgdm9pZCBkaWRMb3NlQ29udGV4dCgp
OwogICAgIHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0KCk7CiAKQEAgLTEyOSw2ICsxMzIsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgYm9vbCBzaG91bGREcmF3Rm9yY2VkKCkgY29uc3Q7CiAgICAgYm9vbCBz
aG91bGREcmF3KCkgY29uc3Q7CiAgICAgYm9vbCBoYXNEcmF3blRoaXNGcmFtZSgpIGNvbnN0Owor
ICAgIGJvb2wgc2hvdWxkVXBkYXRlTW9yZVJlc291cmNlcygpIGNvbnN0OwogCiAgICAgQ29tbWl0
U3RhdGUgbV9jb21taXRTdGF0ZTsKIApAQCAtMTQzLDYgKzE0Nyw3IEBAIHByb3RlY3RlZDoKICAg
ICBib29sIG1fdmlzaWJsZTsKICAgICBib29sIG1fY2FuRHJhdzsKICAgICBib29sIG1fZHJhd0lm
UG9zc2libGVGYWlsZWQ7CisgICAgYm9vbCBtX2NhblVwZGF0ZU1vcmVSZXNvdXJjZXM7CiAgICAg
Q29udGV4dFN0YXRlIG1fY29udGV4dFN0YXRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmNwcAppbmRleCAyMGE1MGJiYWQ3MWJhMzQyNGU1Y2EyNzY5N2I3NjhlMTk0NzM5NTFmLi5mMDBk
YTBlZmIyMmIxZDhmZjFiM2IwNzVkNjJkOGY4ZjNkOTVmM2YzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRQcm94
eS5oIgogCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgIlNoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgiCkBAIC00NywxMSArNDgsMTcgQEAgbmFt
ZXNwYWNlIHsKIAogLy8gTnVtYmVyIG9mIHRleHR1cmVzIHRvIHVwZGF0ZSB3aXRoIGVhY2ggY2Fs
bCB0bwogLy8gc2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpLgotc3RhdGljIGNv
bnN0IHNpemVfdCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lID0gMzI7CitzdGF0aWMgY29uc3Qgc2l6
ZV90IHRleHR1cmVVcGRhdGVzUGVyVGljayA9IDQ7CiAKIC8vIE1lYXN1cmVkIGluIHNlY29uZHMu
CiBzdGF0aWMgY29uc3QgZG91YmxlIGNvbnRleHRSZWNyZWF0aW9uVGlja1JhdGUgPSAwLjAzOwog
CisvLyBOdW1iZXIgb2YgcGVuZGluZyB0ZXh0dXJlIHVwZGF0ZSBxdWVyaWVzIHRvIGFsbG93Lgor
c3RhdGljIGNvbnN0IHNpemVfdCBtYXhQZW5kaW5nVGV4dHVyZVVwZGF0ZVF1ZXJpZXMgPSAyOwor
CisvLyBNZWFzdXJlZCBpbiBzZWNvbmRzLgorc3RhdGljIGNvbnN0IGRvdWJsZSB0ZXh0dXJlVXBk
YXRlVGlja1JhdGUgPSAwLjAwNDsKKwogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTMzNiw2ICszNDMsMTEgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojpz
ZXRWaXNpYmxlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBib29s
IHYKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXRWaXNpYmxlKHZpc2libGUpOwogICAgIGlm
ICghdmlzaWJsZSkgewogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmRpZEJlY29tZUludmlzaWJs
ZU9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKKyAgICAgICAgaWYgKG1f
dGV4dHVyZVVwZGF0ZVRpbWVyT25JbXBsVGhyZWFkKSB7CisgICAgICAgICAgICBtX3RleHR1cmVV
cGRhdGVUaW1lck9uSW1wbFRocmVhZC5jbGVhcigpOworICAgICAgICAgICAgbV9zY2hlZHVsZXJP
bkltcGxUaHJlYWQtPmRpZFVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSgpOworICAgICAgICB9
CisKICAgICAgICAgLy8gYXMgcGFydGlhbCBvciBhbGwgdGhlIHRleHR1cmVzIG1heSBiZSBldmlj
dGVkIGluIGRpZEJlY29tZUludmlzaWJsZU9uSW1wbFRocmVhZCwKICAgICAgICAgLy8gc2NoZWR1
bGUgYSBjb21taXQgd2hpY2ggd2lsbCBiZSBleGVjdXRlZCB3aGVuIGl0IGdvZXMgdG8gdmlzaWJs
ZSBhZ2Fpbi4KICAgICAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldE5lZWRzQ29tbWl0
KCk7CkBAIC01MTQsOSArNTI2LDE2IEBAIGJvb2wgQ0NUaHJlYWRQcm94eTo6aGFzTW9yZVJlc291
cmNlVXBkYXRlcygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9u
SW1wbFRocmVhZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX3RleHR1cmVVcGRh
dGVUaW1lck9uSW1wbFRocmVhZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIG1f
Y3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpOwogfQog
Citkb3VibGUgQ0NUaHJlYWRQcm94eTo6bWF4UmVzb3VyY2VVcGRhdGVUaW1lKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gdGV4dHVyZVVwZGF0ZVRpY2tSYXRlICsgMC4wMDI7Cit9CisKIGJvb2wgQ0NU
aHJlYWRQcm94eTo6Y2FuRHJhdygpCiB7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKQEAg
LTUyOCw4ICs1NDcsNyBAQCBib29sIENDVGhyZWFkUHJveHk6OmNhbkRyYXcoKQogdm9pZCBDQ1Ro
cmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkKIHsKICAgICBU
UkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291
cmNlcyIsIHRoaXMsIDApOwotICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1w
bFRocmVhZCk7Ci0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVwZGF0
ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIHRleHR1cmVVcGRhdGVzUGVyRnJhbWUp
OworICAgIHRleHR1cmVVcGRhdGVPbkltcGxUaHJlYWQoKTsKIH0KIAogdm9pZCBDQ1RocmVhZFBy
b3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQoKQpAQCAtNTQwLDcgKzU1OCw3IEBAIHZvaWQgQ0NU
aHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkKICAgICBBU1NFUlQobV9jb21taXRD
b21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwogCiAgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0
ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKLQorICAgIG1fdGV4dHVyZVVwZGF0ZVRpbWVyT25JbXBs
VGhyZWFkLmNsZWFyKCk7CiAKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgp
OwogCkBAIC03MjgsNiArNzQ2LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpsYXllclRyZWVIb3N0
Q2xvc2VkT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW8KICAgICBUUkFD
RV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9uSW1wbFRocmVhZCIs
IHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgbV9sYXllclRyZWVI
b3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdElt
cGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICBkZWxldGVUZXh0dXJlVXBkYXRl
UXVlcmllcygpOwogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwuY2xlYXIoKTsKICAgICBtX2lucHV0
SGFuZGxlck9uSW1wbFRocmVhZC5jbGVhcigpOwogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFk
LmNsZWFyKCk7CkBAIC03NDIsNyArNzYxLDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzZXRGdWxs
Um9vdExheWVyRGFtYWdlT25JbXBsVGhyZWFkKCkKIAogc2l6ZV90IENDVGhyZWFkUHJveHk6Om1h
eFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRleHR1cmVVcGRh
dGVzUGVyRnJhbWU7CisgICAgcmV0dXJuIHRleHR1cmVVcGRhdGVzUGVyVGljazsKIH0KIAogdm9p
ZCBDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9u
RXZlbnQqIGNvbXBsZXRpb24sIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0UHRyLCBib29sKiBy
ZWNyZWF0ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyogY2FwYWJpbGl0aWVz
KQpAQCAtNzU4LDQgKzc3NywxMDAgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRl
eHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIEcKICAgICBjb21w
bGV0aW9uLT5zaWduYWwoKTsKIH0KIAorY2xhc3MgQ0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVU
aW1lciA6IHB1YmxpYyBDQ1RpbWVyLCBDQ1RpbWVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc093blB0cjxDQ1RocmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRpbWVyPiBjcmVhdGUoQ0NU
aHJlYWRQcm94eSogcHJveHkpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RocmVhZFByb3h5VGV4
dHVyZVVwZGF0ZVRpbWVyKHByb3h5KSk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBvblRpbWVyRmly
ZWQoKQorICAgIHsKKyAgICAgICAgbV9wcm94eS0+dGV4dHVyZVVwZGF0ZUNvbXBsZXRlT25JbXBs
VGhyZWFkKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IENDVGhyZWFkUHJveHlU
ZXh0dXJlVXBkYXRlVGltZXIoQ0NUaHJlYWRQcm94eSogcHJveHkpCisgICAgICAgIDogQ0NUaW1l
cihDQ1Byb3h5OjppbXBsVGhyZWFkKCksIHRoaXMpCisgICAgICAgICwgbV9wcm94eShwcm94eSkK
KyAgICB7CisgICAgfQorCisgICAgQ0NUaHJlYWRQcm94eSogbV9wcm94eTsKK307CisKK3ZvaWQg
Q0NUaHJlYWRQcm94eTo6ZGVsZXRlVGV4dHVyZVVwZGF0ZVF1ZXJpZXMoKQoreworICAgIGlmICgh
bV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBF
eHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMz
RENocm9taXVtKj4obV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLT5nZXRFeHRlbnNpb25z
KCkpOworCisgICAgbV9hdmFpbGFibGVRdWVyaWVzTGlzdC5hcHBlbmQobV9wZW5kaW5nUXVlcmll
c0xpc3QpOworICAgIG1fcGVuZGluZ1F1ZXJpZXNMaXN0LmNsZWFyKCk7CisKKyAgICBmb3IgKFZl
Y3Rvcjx1bnNpZ25lZD46Oml0ZXJhdG9yIGl0ID0gbV9hdmFpbGFibGVRdWVyaWVzTGlzdC5iZWdp
bigpOyBpdCAhPSBtX2F2YWlsYWJsZVF1ZXJpZXNMaXN0LmVuZCgpOyArK2l0KQorICAgICAgICBl
eHRlbnNpb25zLT5kZWxldGVRdWVyeUVYVCgqaXQpOworCisgICAgbV9hdmFpbGFibGVRdWVyaWVz
TGlzdC5jbGVhcigpOworfQorCit2b2lkIENDVGhyZWFkUHJveHk6OnByb2Nlc3NUZXh0dXJlVXBk
YXRlUXVlcmllcygpCit7CisgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBz
dGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNv
bnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygpKTsKKworICAgIHdoaWxlICghbV9wZW5kaW5nUXVlcmll
c0xpc3QuaXNFbXB0eSgpKSB7CisgICAgICAgIHVuc2lnbmVkIHF1ZXJ5SWQgPSBtX3BlbmRpbmdR
dWVyaWVzTGlzdC5sYXN0KCk7CisgICAgICAgIHVuc2lnbmVkIGF2YWlsYWJsZSA9IDE7CisgICAg
ICAgIGV4dGVuc2lvbnMtPmdldFF1ZXJ5T2JqZWN0dWl2RVhUKHF1ZXJ5SWQsIEV4dGVuc2lvbnMz
RENocm9taXVtOjpRVUVSWV9SRVNVTFRfQVZBSUxBQkxFX0VYVCwgJmF2YWlsYWJsZSk7CisgICAg
ICAgIGlmICghYXZhaWxhYmxlKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgbV9hdmFp
bGFibGVRdWVyaWVzTGlzdC5wcmVwZW5kKHF1ZXJ5SWQpOworICAgICAgICBtX3BlbmRpbmdRdWVy
aWVzTGlzdC5yZW1vdmVMYXN0KCk7CisgICAgfQorfQorCit2b2lkIENDVGhyZWFkUHJveHk6OnRl
eHR1cmVVcGRhdGVPbkltcGxUaHJlYWQoKQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFBy
b3h5Ojp0ZXh0dXJlVXBkYXRlT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CisgICAgQVNTRVJUKGlz
SW1wbFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxU
aHJlYWQpOworICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+
aGFzTW9yZVVwZGF0ZXMoKSk7CisKKyAgICAvLyBQcm9jZXNzIHBlbmRpbmcgcXVlcmllcy4KKyAg
ICBwcm9jZXNzVGV4dHVyZVVwZGF0ZVF1ZXJpZXMoKTsKKworICAgIEV4dGVuc2lvbnMzRENocm9t
aXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihtX2xh
eWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCktPmdldEV4dGVuc2lvbnMoKSk7CisKKyAgICB1bnNp
Z25lZCBxdWVyeUlkID0gMDsKKyAgICAvLyBVc2UgYXZhaWxhYmxlIHF1ZXJ5IG9yIGFsbG9jYXRl
IG5ldyBxdWVyeS4KKyAgICBpZiAoIW1fYXZhaWxhYmxlUXVlcmllc0xpc3QuaXNFbXB0eSgpKSB7
CisgICAgICAgIHF1ZXJ5SWQgPSBtX2F2YWlsYWJsZVF1ZXJpZXNMaXN0Lmxhc3QoKTsKKyAgICAg
ICAgbV9hdmFpbGFibGVRdWVyaWVzTGlzdC5yZW1vdmVMYXN0KCk7CisgICAgfSBlbHNlIGlmICht
X3BlbmRpbmdRdWVyaWVzTGlzdC5zaXplKCkgPCBtYXhQZW5kaW5nVGV4dHVyZVVwZGF0ZVF1ZXJp
ZXMpCisgICAgICAgIHF1ZXJ5SWQgPSBleHRlbnNpb25zLT5jcmVhdGVRdWVyeUVYVCgpOworCisg
ICAgLy8gUGVyZm9ybSB1cGRhdGUgaWYgd2UgaGF2ZW4ndCByZWFjaCB0aGUgbGltaXQgZm9yIHBl
bmRpbmcgcXVlcmllcy4KKyAgICBpZiAocXVlcnlJZCkgeworICAgICAgICBleHRlbnNpb25zLT5i
ZWdpblF1ZXJ5RVhUKEV4dGVuc2lvbnMzRENocm9taXVtOjpDT01NQU5EU19JU1NVRURfQ0hST01J
VU0sIHF1ZXJ5SWQpOworCisgICAgICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhy
ZWFkLT51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCB0ZXh0dXJlVXBkYXRl
c1BlclRpY2spOworCisgICAgICAgIGV4dGVuc2lvbnMtPmVuZFF1ZXJ5RVhUKEV4dGVuc2lvbnMz
RENocm9taXVtOjpDT01NQU5EU19JU1NVRURfQ0hST01JVU0pOworICAgICAgICAvLyBBZGQgcXVl
cnkgdG8gcGVuZGluZyBsaXN0IGZvciBwcm9jZXNzaW5nLgorICAgICAgICBtX3BlbmRpbmdRdWVy
aWVzTGlzdC5wcmVwZW5kKHF1ZXJ5SWQpOworICAgIH0KKworICAgIEFTU0VSVCghbV90ZXh0dXJl
VXBkYXRlVGltZXJPbkltcGxUaHJlYWQpOworICAgIC8vIFN0YXJ0IHRpbWVyIHRoYXQgd2lsbCB0
cmlnZ2VyIGNvbXBsZXRpb24gb2YgdGV4dHVyZSB1cGRhdGUuCisgICAgbV90ZXh0dXJlVXBkYXRl
VGltZXJPbkltcGxUaHJlYWQgPSBDQ1RocmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRpbWVyOjpjcmVh
dGUodGhpcyk7CisgICAgbV90ZXh0dXJlVXBkYXRlVGltZXJPbkltcGxUaHJlYWQtPnN0YXJ0T25l
U2hvdCh0ZXh0dXJlVXBkYXRlVGlja1JhdGUpOworfQorCit2b2lkIENDVGhyZWFkUHJveHk6OnRl
eHR1cmVVcGRhdGVDb21wbGV0ZU9uSW1wbFRocmVhZCgpCit7CisgICAgQVNTRVJUKGlzSW1wbFRo
cmVhZCgpKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6dGV4dHVyZVVwZGF0ZUNv
bXBsZXRlT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CisgICAgbV90ZXh0dXJlVXBkYXRlVGltZXJP
bkltcGxUaHJlYWQuY2xlYXIoKTsKKyAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+ZGlkVXBk
YXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCA2MTQzNGE2YTljZjYzZTgyOWNkYmM1YjdiMjUx
NzA1ZThhZjk1NWU2Li42NTAzOTNjMWU1NWI1ZWQ2NDI2ZDhhMDc2YzE0NmRjMWFkYmI5N2FhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC00Myw2ICs0Myw3IEBAIGNsYXNzIENDU2NvcGVk
VGhyZWFkUHJveHk7CiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgQ0NUaHJlYWQ7CiBj
bGFzcyBDQ1RocmVhZFByb3h5Q29udGV4dFJlY3JlYXRpb25UaW1lcjsKK2NsYXNzIENDVGhyZWFk
UHJveHlUZXh0dXJlVXBkYXRlVGltZXI7CiAKIGNsYXNzIENDVGhyZWFkUHJveHkgOiBwdWJsaWMg
Q0NQcm94eSwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCwgQ0NTY2hlZHVsZXJDbGllbnQgewog
cHVibGljOgpAQCAtODEsNiArODIsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0NTY2hlZHVsZXJDbGll
bnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIGJvb2wgY2FuRHJhdygpOwogICAgIHZpcnR1
YWwgYm9vbCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkgY29uc3Q7CisgICAgdmlydHVhbCBkb3Vi
bGUgbWF4UmVzb3VyY2VVcGRhdGVUaW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVk
dWxlZEFjdGlvbkJlZ2luRnJhbWUoKTsKICAgICB2aXJ0dWFsIGJvb2wgc2NoZWR1bGVkQWN0aW9u
RHJhd0FuZFN3YXBJZlBvc3NpYmxlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlv
bkRyYXdBbmRTd2FwRm9yY2VkKCk7CkBAIC05MSw2ICs5Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgQ0NUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqKTsKICAgICBmcmll
bmQgY2xhc3MgQ0NUaHJlYWRQcm94eUNvbnRleHRSZWNyZWF0aW9uVGltZXI7CisgICAgZnJpZW5k
IGNsYXNzIENDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGltZXI7CiAKICAgICAvLyBTZXQgb24g
aW1wbCB0aHJlYWQsIHJlYWQgb24gbWFpbiB0aHJlYWQuCiAgICAgc3RydWN0IEJlZ2luRnJhbWVB
bmRDb21taXRTdGF0ZSB7CkBAIC0xMjgsNiArMTMxLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRGdWxsUm9vdExheWVyRGFtYWdlT25JbXBsVGhyZWFkKCk7CiAgICAgdm9pZCByZWNyZWF0ZUNv
bnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBHcmFwaGljc0NvbnRleHQzRCos
IGJvb2wqIHJlY3JlYXRlU3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKik7CiAg
ICAgYm9vbCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEludGVybmFsKGJvb2wgZm9yY2VkRHJh
dyk7CisgICAgdm9pZCBkZWxldGVUZXh0dXJlVXBkYXRlUXVlcmllcygpOworICAgIHZvaWQgcHJv
Y2Vzc1RleHR1cmVVcGRhdGVRdWVyaWVzKCk7CisgICAgdm9pZCB0ZXh0dXJlVXBkYXRlT25JbXBs
VGhyZWFkKCk7CisgICAgdm9pZCB0ZXh0dXJlVXBkYXRlQ29tcGxldGVPbkltcGxUaHJlYWQoKTsK
IAogICAgIC8vIEFjY2Vzc2VkIG9uIG1haW4gdGhyZWFkIG9ubHkuCiAgICAgYm9vbCBtX2FuaW1h
dGVSZXF1ZXN0ZWQ7CkBAIC0xNjgsNiArMTc1LDEwIEBAIHByaXZhdGU6CiAKICAgICAvLyBTZXQg
d2hlbiB0aGUgbmV4dCBkcmF3IHNob3VsZCBwb3N0IGRpZENvbW1pdEFuZERyYXdGcmFtZSB0byB0
aGUgbWFpbiB0aHJlYWQuCiAgICAgYm9vbCBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRGcmFt
ZU9uSW1wbFRocmVhZDsKKworICAgIE93blB0cjxDQ1RocmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRp
bWVyPiBtX3RleHR1cmVVcGRhdGVUaW1lck9uSW1wbFRocmVhZDsKKyAgICBWZWN0b3I8dW5zaWdu
ZWQ+IG1fcGVuZGluZ1F1ZXJpZXNMaXN0OworICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9hdmFpbGFi
bGVRdWVyaWVzTGlzdDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lU291cmNlLmgKaW5kZXggZGNjYjQ3
MGE2MzgzZTMwNGRiMTE2YTViOWRmOTFkZTU2MDY4ZTA4NS4uYzM2NGQ5MmJkMDI4YTIyZmZhOGEy
YTg3ZmMxOTMwYjU4ZGVmOGU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lU291cmNlLmgKQEAgLTUwLDYgKzUw
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoQ0NUaW1lU291cmNlQ2xp
ZW50KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCkgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBhY3RpdmUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgbmV4dFRp
Y2tUaW1lKCkgY29uc3QgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCmluZGV4
IGU0YTVkN2M5NTk0NGI5NGQ2NTNjMTQxMTk1NmI5YzI5Y2NlZDQ2YmYuLmZmMmQ4MDdhYzBjMzc0
MjIwNzYyOWY5ZTY5ODlkNDUwZTYxOGE3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKQEAg
LTE5Nyw3ICsxOTcsOCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdENv
bW1pdEFmdGVyRmFpbGVkRHJhd0FsbG93c0RyYXdJblNhbWVGcmFtZQogICAgIEVYUEVDVF9UUlVF
KHN0YXRlLmNvbW1pdFBlbmRpbmcoKSk7CiAKICAgICAvLyBGaW5pc2ggdGhlIGNvbW1pdC4KLSAg
ICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxl
dGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuVXBkYXRlTW9yZVJlc291cmNlcyh0cnVlKTsKICAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVf
TU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUudXBkYXRlU3Rh
dGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNP
VVJDRVMpOwogICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNl
KTsKQEAgLTI0Nyw3ICsyNDgsOCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwg
VGVzdENvbW1pdEFmdGVyRmFpbGVkQW5kU3VjY2Vzc2Z1bERyYXdEb2VzTm90QQogICAgIEVYUEVD
VF9UUlVFKHN0YXRlLmNvbW1pdFBlbmRpbmcoKSk7CiAKICAgICAvLyBGaW5pc2ggdGhlIGNvbW1p
dC4KLSAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBzdGF0ZS5iZWdpbkZyYW1l
Q29tcGxldGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuVXBkYXRlTW9yZVJlc291cmNlcyh0cnVl
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9V
UERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUudXBk
YXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9S
RV9SRVNPVVJDRVMpOwogICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRl
KGZhbHNlKTsKQEAgLTQ2MSw2ICs0NjMsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
VGVzdCwgVGVzdFVwZGF0ZXNfTm9SZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiAgICAgc3RhdGUu
c2V0Q29tbWl0U3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERB
VElOR19SRVNPVVJDRVMpOwogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KGZhbHNlKTsKICAgICBz
dGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CisgICAgc3RhdGUuc2V0
Q2FuVXBkYXRlTW9yZVJlc291cmNlcyh0cnVlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUp
OwogCiAgICAgLy8gVmVyaWZ5IHdlIGJlZ2luIHVwZGF0ZSwgYm90aCBmb3IgdnN5bmMgYW5kIG5v
dCB2c3luYy4KQEAgLTQ4OSw2ICs0OTIsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
VGVzdCwgVGVzdFVwZGF0ZXNfTm9SZWRyYXdfVHdvUm91bmRzT2ZVcGRhdGVzKQogICAgIHN0YXRl
LnNldENvbW1pdFN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBE
QVRJTkdfUkVTT1VSQ0VTKTsKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyhmYWxzZSk7CiAgICAg
c3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOworICAgIHN0YXRlLnNl
dENhblVwZGF0ZU1vcmVSZXNvdXJjZXModHJ1ZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVl
KTsKIAogICAgIC8vIFZlcmlmeSB0aGUgdXBkYXRlIGJlZ2lucywgYm90aCBmb3IgdnN5bmMgYW5k
IG5vdCB2c3luYy4KQEAgLTU0NSw2ICs1NDksNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lVGVzdCwgVGVzdFVwZGF0ZXNfV2l0aFJlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKICAgICBz
dGF0ZS5zZXRDb21taXRTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRF
X1VQREFUSU5HX1JFU09VUkNFUyk7CiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcodHJ1ZSk7CiAg
ICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOworICAgIHN0YXRl
LnNldENhblVwZGF0ZU1vcmVSZXNvdXJjZXModHJ1ZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0
cnVlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJ
Tl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAgLTYwMyw3
ICs2MDgsOCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNldE5lZWRz
Q29tbWl0SXNOb3RMb3N0KQogICAgIEVYUEVDVF9UUlVFKHN0YXRlLm5lZWRzQ29tbWl0KCkpOwog
CiAgICAgLy8gTGV0IHRoZSBmcmFtZSBmaW5pc2guCi0gICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBs
ZXRlKCk7CisgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKHRydWUpOworICAgIHN0YXRlLnNl
dENhblVwZGF0ZU1vcmVSZXNvdXJjZXModHJ1ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21t
aXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAg
c3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9V
UERBVEVfTU9SRV9SRVNPVVJDRVMpOwpAQCAtNjQ1LDcgKzY1MSw4IEBAIFRFU1QoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlKQogICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAg
ICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZpbmlzaGVkLgotICAgIHN0YXRlLmJl
Z2luRnJhbWVDb21wbGV0ZSgpOworICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSh0cnVlKTsK
KyAgICBzdGF0ZS5zZXRDYW5VcGRhdGVNb3JlUmVzb3VyY2VzKHRydWUpOwogICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNF
Uywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOwogCkBAIC02OTYsNyArNzAzLDggQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZVRlc3QsIFRlc3RGdWxsQ3ljbGVXaXRoQ29tbWl0UmVxdWVzdEluYmV0d2VlbikKICAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOwogCiAgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4K
LSAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBzdGF0ZS5iZWdpbkZyYW1lQ29t
cGxldGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuVXBkYXRlTW9yZVJlc291cmNlcyh0cnVlKTsK
ICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERB
VElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywg
c3RhdGUubmV4dEFjdGlvbigpKTsKIApAQCAtNzUzLDcgKzc2MSw4IEBAIFRFU1QoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0R29lc0ludmlzaWJsZU1pZENvbW1pdCkKICAgICBzdGF0
ZS5zZXRWaXNpYmxlKGZhbHNlKTsKIAogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgZnJh
bWUgZmluaXNoZWQKLSAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBzdGF0ZS5i
ZWdpbkZyYW1lQ29tcGxldGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuVXBkYXRlTW9yZVJlc291
cmNlcyh0cnVlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1J
VF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JF
X1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKIApAQCAtODYwLDcgKzg2OSw4IEBAIFRF
U1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29udGV4dExvc3RXaGlsZUNvbW1p
dEluUHJvZ3Jlc3MpCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIEZpbmlzaCB0aGUgZnJhbWUs
IHVwZGF0ZSByZXNvdXJjZXMsIGFuZCBjb21taXQuCi0gICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBs
ZXRlKCk7CisgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKHRydWUpOworICAgIHN0YXRlLnNl
dENhblVwZGF0ZU1vcmVSZXNvdXJjZXModHJ1ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5u
ZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7
CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3Rh
dGUubmV4dEFjdGlvbigpKTsKQEAgLTkwNCw3ICs5MTQsOCBAQCBURVNUKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdCwgVGVzdENvbnRleHRMb3N0V2hpbGVDb21taXRJblByb2dyZXNzQW5kQW5v
dGhlcgogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUs
IHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBGaW5pc2ggdGhlIGZyYW1lLCB1cGRhdGUg
cmVzb3VyY2VzLCBhbmQgY29tbWl0LgotICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOwor
ICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRDYW5VcGRh
dGVNb3JlUmVzb3VyY2VzKHRydWUpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlv
bigpKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRB
Y3Rpb24oKSk7CkBAIC05NzAsNyArOTgxLDggQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZVRlc3QsIFRlc3RCZWdpbkZyYW1lV2hlbkNvbW1pdEluUHJvZ3Jlc3MpCiAgICAgc3RhdGUuc2V0
TmVlZHNDb21taXQodHJ1ZSk7CiAgICAgc3RhdGUuc2V0TmVlZHNGb3JjZWRDb21taXQodHJ1ZSk7
CiAKLSAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBzdGF0ZS5iZWdpbkZyYW1l
Q29tcGxldGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuVXBkYXRlTW9yZVJlc291cmNlcyh0cnVl
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9V
UERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUudXBk
YXRlU3RhdGUoc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwpAQCAtOTkzLDQg
KzEwMDUsNTIgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RCZWdpbkZy
YW1lV2hlbkNvbnRleHRMb3N0KQogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogfQogCitURVNUKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdENhblVwZGF0ZU1vcmVSZXNvdXJjZXMpCit7
CisgICAgU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7Cisg
ICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcodHJ1ZSk7CisKKyAgICAvLyBTdGFydCBjbGVhbiBhbmQg
c2V0IGNvbW1pdC4KKyAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKKyAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4
dEFjdGlvbigpKTsKKworICAgIC8vIEJlZ2luIHRoZSBmcmFtZS4KKyAgICBzdGF0ZS51cGRhdGVT
dGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FKTsKKyAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9GUkFNRV9JTl9Q
Uk9HUkVTUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5l
ZWRzQ29tbWl0KCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBUZWxsIHRoZSBzY2hlZHVs
ZXIgdGhlIGZyYW1lIGZpbmlzaGVkLgorICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSh0cnVl
KTsKKyAgICBzdGF0ZS5zZXRDYW5VcGRhdGVNb3JlUmVzb3VyY2VzKHRydWUpOworICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09V
UkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0
QWN0aW9uKCkpOworCisgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSB1cGRhdGUgYmVnYW4g
YW5kIGZpbmlzaGVkLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKKyAgICBzdGF0ZS5zZXRD
YW5VcGRhdGVNb3JlUmVzb3VyY2VzKGZhbHNlKTsKKyAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVS
ZXNvdXJjZXNDb21wbGV0ZSh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRl
KCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUs
IHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBBdCB2c3luYywgZHJhdy4KKyAgICBzdGF0
ZS5kaWRFbnRlclZTeW5jKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0
ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9T
U0lCTEUpOworICAgIHN0YXRlLmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGVkKHRydWUpOworICAg
IHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKKworICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGF0
IHdlIGNhbiB1cGRhdGUgbW9yZSByZXNvdXJjZXMuCisgICAgc3RhdGUuc2V0Q2FuVXBkYXRlTW9y
ZVJlc291cmNlcyh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFU
RV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIFRlbGwgdGhl
IHNjaGVkdWxlciB0aGUgc2Vjb25kIHVwZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQKKyAgICBzdGF0
ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFU
RV9NT1JFX1JFU09VUkNFUyk7CisgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29t
cGxldGUoZmFsc2UpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09N
TUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0
QWN0aW9uKCkpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
U2NoZWR1bGVyVGVzdC5jcHAKaW5kZXggOGRmNWExMWNhZjdhMjEzZTA3NDYwMTVjZjQ5MWQ3ZDIy
ZmJmNjVmMi4uMDY5ODczZDlmYWNlNDc3ZjZiOWZjZTI3NjU0ZTlmZjA2YjExYmViMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcApAQCAt
NDcsMTAgKzQ3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9jYW5EcmF3ID0gdHJ1ZTsKICAgICAg
ICAgbV9kcmF3U3VjY2VzcyA9IHRydWU7CiAgICAgICAgIG1fbnVtRHJhd3MgPSAwOworICAgICAg
ICBtX21heFJlc291cmNlVXBkYXRlVGltZSA9IDA7CiAgICAgfQogCiAgICAgdm9pZCBzZXRIYXNN
b3JlUmVzb3VyY2VVcGRhdGVzKGJvb2wgYikgeyBtX2hhc01vcmVSZXNvdXJjZVVwZGF0ZXMgPSBi
OyB9CiAgICAgdm9pZCBzZXRDYW5EcmF3KGJvb2wgYikgeyBtX2NhbkRyYXcgPSBiOyB9CisgICAg
dm9pZCBzZXRNYXhSZXNvdXJjZVVwZGF0ZVRpbWUoZG91YmxlIHQpIHsgbV9tYXhSZXNvdXJjZVVw
ZGF0ZVRpbWUgPSB0OyB9CiAKICAgICBpbnQgbnVtRHJhd3MoKSBjb25zdCB7IHJldHVybiBtX251
bURyYXdzOyB9CiAgICAgaW50IG51bUFjdGlvbnMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQ+KG1fYWN0aW9ucy5zaXplKCkpOyB9CkBAIC01OCw2ICs2MCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3KCkgeyByZXR1cm4gbV9jYW5EcmF3OyB9CiAgICAgdmly
dHVhbCBib29sIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVybiBtX2hhc01v
cmVSZXNvdXJjZVVwZGF0ZXM7IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSBtYXhSZXNvdXJjZVVwZGF0
ZVRpbWUoKSBjb25zdCB7IHJldHVybiBtX21heFJlc291cmNlVXBkYXRlVGltZTsgfQogICAgIHZp
cnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCkgeyBtX2FjdGlvbnMucHVzaF9i
YWNrKCJzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lIik7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2No
ZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJZlBvc3NpYmxlKCkKICAgICB7CkBAIC04Miw2ICs4NSw3
IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1faGFzTW9yZVJlc291cmNlVXBkYXRlczsKICAgICBi
b29sIG1fY2FuRHJhdzsKICAgICBib29sIG1fZHJhd1N1Y2Nlc3M7CisgICAgZG91YmxlIG1fbWF4
UmVzb3VyY2VVcGRhdGVUaW1lOwogICAgIGludCBtX251bURyYXdzOwogICAgIHN0ZDo6dmVjdG9y
PGNvbnN0IGNoYXIqPiBtX2FjdGlvbnM7CiB9OwpAQCAtMTAxLDEyICsxMDUsMTAgQEAgVEVTVChD
Q1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXQpCiAgICAgY2xpZW50LnJlc2V0KCk7CiAKICAg
ICAvLyBTaW5jZSwgaGFzTW9yZVJlc291cmNlVXBkYXRlcyBpcyBzZXQgdG8gZmFsc2UsCi0gICAg
Ly8gYmVnaW5GcmFtZUNvbXBsZXRlIHNob3VsZCB1cGRhdGVNb3JlUmVzb3VyY2VzLCB0aGVuCi0g
ICAgLy8gY29tbWl0CisgICAgLy8gYmVnaW5GcmFtZUNvbXBsZXRlIHNob3VsZCBqdXN0IGNvbW1p
dAogICAgIHNjaGVkdWxlci0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7Ci0gICAgRVhQRUNUX0VRKDIs
IGNsaWVudC5udW1BY3Rpb25zKCkpOwotICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9u
VXBkYXRlTW9yZVJlc291cmNlcyIsIGNsaWVudC5hY3Rpb24oMCkpOwotICAgIEVYUEVDVF9TVFJF
USgic2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgY2xpZW50LmFjdGlvbigxKSk7CisgICAgRVhQRUNU
X0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVk
QWN0aW9uQ29tbWl0IiwgY2xpZW50LmFjdGlvbigwKSk7CiAgICAgRVhQRUNUX1RSVUUodGltZVNv
dXJjZS0+YWN0aXZlKCkpOwogICAgIGNsaWVudC5yZXNldCgpOwogCkBAIC0xMzgsMTIgKzE0MCwx
MCBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1pdEFmdGVyQmVnaW5GcmFtZSkK
ICAgICBzY2hlZHVsZXItPnNldE5lZWRzQ29tbWl0KCk7CiAKICAgICAvLyBTaW5jZSwgaGFzTW9y
ZVJlc291cmNlVXBkYXRlcyBpcyBzZXQgdG8gZmFsc2UsIGFuZCBhbm90aGVyIGNvbW1pdCBpcwot
ICAgIC8vIG5lZWRlZCwgYmVnaW5GcmFtZUNvbXBsZXRlIHNob3VsZCB1cGRhdGVNb3JlUmVzb3Vy
Y2VzLCB0aGVuIGNvbW1pdCwgdGhlbgotICAgIC8vIGJlZ2luIGFub3RoZXIgZnJhbWUuCisgICAg
Ly8gbmVlZGVkLCBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIGNvbW1pdCwgdGhlbiBiZWdpbiBh
bm90aGVyIGZyYW1lLgogICAgIHNjaGVkdWxlci0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7Ci0gICAg
RVhQRUNUX0VRKDIsIGNsaWVudC5udW1BY3Rpb25zKCkpOwotICAgIEVYUEVDVF9TVFJFUSgic2No
ZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIGNsaWVudC5hY3Rpb24oMCkpOwotICAg
IEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgY2xpZW50LmFjdGlvbigxKSk7
CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJF
USgic2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgY2xpZW50LmFjdGlvbigwKSk7CiAgICAgY2xpZW50
LnJlc2V0KCk7CiAKICAgICAvLyBUaWNrIHNob3VsZCBkcmF3IGJ1dCB0aGVuIGJlZ2luIGFub3Ro
ZXIgZnJhbWUuCkBAIC0zODYsNCArMzg2LDY4IEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBOb0Jl
Z2luRnJhbWVXaGVuRHJhd0ZhaWxzKQogICAgIEVYUEVDVF9FUSgwLCBjb250cm9sbGVyUHRyLT5u
dW1GcmFtZXNQZW5kaW5nKCkpOwogfQogCitURVNUKENDU2NoZWR1bGVyVGVzdCwgVXBkYXRlTW9y
ZVJlc291cmNlcykKK3sKKyAgICBGYWtlQ0NTY2hlZHVsZXJDbGllbnQgY2xpZW50OworICAgIFJl
ZlB0cjxGYWtlQ0NUaW1lU291cmNlPiB0aW1lU291cmNlID0gYWRvcHRSZWYobmV3IEZha2VDQ1Rp
bWVTb3VyY2UoKSk7CisgICAgT3duUHRyPENDU2NoZWR1bGVyPiBzY2hlZHVsZXIgPSBDQ1NjaGVk
dWxlcjo6Y3JlYXRlKCZjbGllbnQsIGFkb3B0UHRyKG5ldyBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIo
dGltZVNvdXJjZSkpKTsKKyAgICBzY2hlZHVsZXItPnNldFZpc2libGUodHJ1ZSk7CisKKyAgICAv
LyBTZXROZWVkc0NvbW1pdCBzaG91bGQgYmVnaW4gdGhlIGZyYW1lLgorICAgIHNjaGVkdWxlci0+
c2V0TmVlZHNDb21taXQoKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7
CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lIiwgY2xpZW50LmFj
dGlvbigwKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBTaW5jZSwgaGFzTW9yZVJl
c291cmNlVXBkYXRlcyBpcyBzZXQgdG8gdHJ1ZSwgYmVnaW5GcmFtZUNvbXBsZXRlIHNob3VsZAor
ICAgIC8vIHVwZGF0ZU1vcmVSZXNvdXJjZXMuCisgICAgY2xpZW50LnNldEhhc01vcmVSZXNvdXJj
ZVVwZGF0ZXModHJ1ZSk7CisgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAg
ICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJz
Y2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50LmFjdGlvbigwKSk7Cisg
ICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICBjbGllbnQuc2V0SGFzTW9yZVJlc291cmNlVXBkYXRl
cyh0cnVlKTsKKyAgICBzY2hlZHVsZXItPmRpZFVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSgp
OworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RS
RVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0aW9uKDAp
KTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIC8vIFNpbmNlLCBTZXROZWVkUmVkcmF3IGlz
IHNldCB0byB0cnVlLCByZXNvdXJjZSB1cGRhdGVzIHNob3VsZCBiZQorICAgIC8vIGF2b2lkZWQg
YXMgd2UgZ2V0IGNsb3NlIHRvIHRoZSBuZXh0IHRpY2sgdGltZS4KKyAgICBzY2hlZHVsZXItPnNl
dE5lZWRzUmVkcmF3KCk7CisgICAgRVhQRUNUX1RSVUUoc2NoZWR1bGVyLT5yZWRyYXdQZW5kaW5n
KCkpOworICAgIEVYUEVDVF9UUlVFKHRpbWVTb3VyY2UtPmFjdGl2ZSgpKTsKKyAgICBFWFBFQ1Rf
RVEoMCwgY2xpZW50Lm51bURyYXdzKCkpOworCisgICAgLy8gU2luY2UsIG1heFJlc291cmNlVXBk
YXRlVGltZSBpcyA1IHNlY29uZHMgYW5kIG5leHRUaWNrVGltZSBpcyAxCisgICAgLy8gc2Vjb25k
IGF3YXksIGRpZFVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSBzaG91bGQgbm90IGJlZ2luIGFu
b3RoZXIKKyAgICAvLyB1cGRhdGUuCisgICAgY2xpZW50LnNldEhhc01vcmVSZXNvdXJjZVVwZGF0
ZXModHJ1ZSk7CisgICAgY2xpZW50LnNldE1heFJlc291cmNlVXBkYXRlVGltZSg1KTsKKyAgICB0
aW1lU291cmNlLT5zZXROZXh0VGlja1RpbWUobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkg
KyAxKTsKKyAgICBzY2hlZHVsZXItPmRpZFVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSgpOwor
ICAgIEVYUEVDVF9FUSgwLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBjbGllbnQucmVzZXQo
KTsKKworICAgIC8vIFNpbmNlLCBtYXhSZXNvdXJjZVVwZGF0ZVRpbWUgaXMgNSBzZWNvbmRzIGFu
ZCBuZXh0VGlja1RpbWUgaXMgMTAKKyAgICAvLyBzZWNvbmRzIGF3YXksIGRpZFVwZGF0ZU1vcmVS
ZXNvdXJjZXNDb21wbGV0ZSBzaG91bGQgYmVnaW4gYW5vdGhlcgorICAgIC8vIHVwZGF0ZS4KKyAg
ICBjbGllbnQuc2V0SGFzTW9yZVJlc291cmNlVXBkYXRlcyh0cnVlKTsKKyAgICBjbGllbnQuc2V0
TWF4UmVzb3VyY2VVcGRhdGVUaW1lKDUpOworICAgIHRpbWVTb3VyY2UtPnNldE5leHRUaWNrVGlt
ZShtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSArIDEwKTsKKyAgICBzY2hlZHVsZXItPmRp
ZFVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSgpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQu
bnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1v
cmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKwor
ICAgIC8vIFNpbmNlLCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzIGlzIHNldCB0byBmYWxzZSwKKyAg
ICAvLyBkaWRVcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUgc2hvdWxkIGNvbW1pdC4KKyAgICBj
bGllbnQuc2V0SGFzTW9yZVJlc291cmNlVXBkYXRlcyhmYWxzZSk7CisgICAgc2NoZWR1bGVyLT5k
aWRVcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50
Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQi
LCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBjbGllbnQucmVzZXQoKTsKK30KKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3RDb21tb24u
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0Q29tbW9uLmgK
aW5kZXggMGMxMDU1ODhiMTQyZjc2MTkzNzIyZTYyODhlMTk4OTY1M2E5NDk4NC4uMTdlOWFkYjFi
M2UxZDc5ZGIwNDc1NTViNmY3NDA1NTEwNWU3MzhjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3RDb21tb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdENvbW1vbi5oCkBAIC04Niw2ICs4Niw3
IEBAIGNsYXNzIEZha2VDQ1RpbWVTb3VyY2UgOiBwdWJsaWMgV2ViQ29yZTo6Q0NUaW1lU291cmNl
IHsKIHB1YmxpYzoKICAgICBGYWtlQ0NUaW1lU291cmNlKCkKICAgICAgICAgOiBtX2FjdGl2ZShm
YWxzZSkKKyAgICAgICAgLCBtX25leHRUaWNrVGltZSgwKQogICAgICAgICAsIG1fY2xpZW50KDAp
IHsgfQogCiAgICAgdmlydHVhbCB+RmFrZUNDVGltZVNvdXJjZSgpIHsgfQpAQCAtOTMsNiArOTQs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldENsaWVudChXZWJDb3JlOjpDQ1RpbWVT
b3VyY2VDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRBY3RpdmUoYm9vbCBiKSB7IG1fYWN0aXZlID0gYjsgfQogICAgIHZpcnR1YWwgYm9v
bCBhY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZTsgfQorICAgIHZpcnR1YWwgZG91Ymxl
IG5leHRUaWNrVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dFRpY2tUaW1lOyB9CiAKICAgICB2
b2lkIHRpY2soKQogICAgIHsKQEAgLTEwMSw4ICsxMDMsMTEgQEAgcHVibGljOgogICAgICAgICAg
ICAgbV9jbGllbnQtPm9uVGltZXJUaWNrKCk7CiAgICAgfQogCisgICAgdm9pZCBzZXROZXh0VGlj
a1RpbWUoZG91YmxlIG5leHRUaWNrVGltZSkgeyBtX25leHRUaWNrVGltZSA9IG5leHRUaWNrVGlt
ZTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2FjdGl2ZTsKKyAgICBkb3VibGUgbV9uZXh0
VGlja1RpbWU7CiAgICAgV2ViQ29yZTo6Q0NUaW1lU291cmNlQ2xpZW50KiBtX2NsaWVudDsKIH07
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135103</attachid>
            <date>2012-04-02 08:13:13 -0700</date>
            <delta_ts>2012-04-02 13:25:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81004-20120402111248.patch</filename>
            <type>text/plain</type>
            <size>52936</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzEyMWM2MTljZGMwOTdj
ZmNlNmI3ZDBhNDEwNGQ4MDU2YTIxMDU1Yi4uNmI4OWQzMjU3NmYzNzI5ZDhmMGNiNmJiOTYwYmNk
ZjkwZTdlMjlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEyLTA0LTAyICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBV
c2UgR0xfQ0hST01JVU1fY29tbWFuZF9idWZmZXJfcXVlcnkgdG8gdGhyb3R0bGUgaW5jcmVtZW50
YWwgdGV4dHVyZSB1cGRhdGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODEwMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBIYXZlIHRocmVhZGVkIGNvbXBvc2l0b3IgdXNlIEdMX0NIUk9NSVVNX2NvbW1h
bmRfYnVmZmVyX3F1ZXJ5IHRvCisgICAgICAgIHRocm90dGxlIHRleHR1cmUgdXBkYXRlcyBiYXNl
ZCBvbiBudW1iZXIgb2YgY3VycmVudGx5IHBlbmRpbmcKKyAgICAgICAgcXVlcmllcyBhbmQgdGlt
ZSB1bnRpbCBuZXh0IHZzeW5jLgorCisgICAgICAgIFVuaXQgdGVzdDogQ0NTY2hlZHVsZXJUZXN0
LlVwZGF0ZU1vcmVSZXNvdXJjZXMKKyAgICAgICAgICAgICAgICAgICBDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QuVGVzdENhblVwZGF0ZU1vcmVSZXNvdXJjZXMKKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NEZWxheUJhc2VkVGltZVNvdXJjZTo6bmV4dFRpY2tUaW1lKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaDoKKyAgICAgICAgKENDRGVsYXlCYXNlZFRpbWVTb3Vy
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRl
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXI6
Om5leHRUaWNrVGltZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKEND
RnJhbWVSYXRlQ29udHJvbGxlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OmJl
Z2luRnJhbWVDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6ZGlkVXBk
YXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVy
Ojp2c3luY1RpY2spOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6Om5leHRBY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25z
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5o
OgorICAgICAgICAoQ0NTY2hlZHVsZXJDbGllbnQpOgorICAgICAgICAoQ0NTY2hlZHVsZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6c2hvdWxkVXBkYXRlTW9yZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpiZWdpbkZyYW1l
Q29tcGxldGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lLmg6CisgICAgICAgIChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0Q2FuVXBkYXRl
TW9yZVJlc291cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVh
ZFByb3h5Ojpkb0NvbW1pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChzdGQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUZXh0dXJlVXBkYXRlcjo6Q0NUZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6On5DQ1RleHR1cmVVcGRhdGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6Om1heFRleHR1cmVVcGRhdGVU
aW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjpwcm9jZXNzUXVlcmllcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAg
KFdURik6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzZXRWaXNpYmxlT25JbXBs
VGhyZWFkKToKKyAgICAgICAgKENDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGltZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVUaW1lcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGltZXI6Om9uVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRp
bWVyOjpDQ1RocmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25J
bXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6Omhhc01vcmVSZXNv
dXJjZVVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6bWF4UmVzb3Vy
Y2VVcGRhdGVUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxl
ZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQ
cm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFk
UHJveHk6OmxheWVyVHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUaHJlYWRQcm94eTo6bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGhyZWFkUHJveHk6OnRleHR1cmVVcGRhdGVDb21wbGV0ZU9uSW1wbFRocmVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1RocmVhZFByb3h5KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbWVTb3VyY2UuaDoKKyAgICAgICAg
KENDVGltZVNvdXJjZSk6CisKIDIwMTItMDMtMzAgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IFJhY2UgY29uZGl0aW9uIGNhdXNlcyB2ZXJz
aW9uIGNoYW5nZSB0cmFuc2FjdGlvbiB0byBjb21taXQgYWZ0ZXIgb25ibG9ja2VkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IGI0NWFmMThmY2FiY2I4MDExNmIzOTAxYTMxNTBiNDlmMGE4
ZDU3YTQuLmZlMjAwMzk1ZWMzMjhjZjI3ODgzMDEwNmUxNDYxN2YwNjg0Zjk3NDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTItMDQtMDIgIERhdmlkIFJl
dmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFVzZSBH
TF9DSFJPTUlVTV9jb21tYW5kX2J1ZmZlcl9xdWVyeSB0byB0aHJvdHRsZSBpbmNyZW1lbnRhbCB0
ZXh0dXJlIHVwZGF0ZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MTAwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCB0aGUgZm9sbG93aW5nIG5ldyB1bml0IHRlc3RzOiBDQ1NjaGVkdWxlclRlc3Qu
VXBkYXRlTW9yZVJlc291cmNlcywKKyAgICAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LlRlc3RDYW5VcGRhdGVNb3JlUmVzb3VyY2VzCisKKyAgICAgICAgKiB0ZXN0cy9DQ1NjaGVkdWxl
clN0YXRlTWFjaGluZVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwOgorICAgICAg
ICAoV2ViS2l0VGVzdHM6OkZha2VDQ1NjaGVkdWxlckNsaWVudDo6cmVzZXQpOgorICAgICAgICAo
V2ViS2l0VGVzdHM6OkZha2VDQ1NjaGVkdWxlckNsaWVudDo6c2V0TWF4UmVzb3VyY2VVcGRhdGVU
aW1lKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlQ0NTY2hlZHVsZXJDbGllbnQ6Om1heFJl
c291cmNlVXBkYXRlVGltZSk6CisgICAgICAgIChGYWtlQ0NTY2hlZHVsZXJDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0VGVzdHM6OlRFU1QpOgorICAgICAgICAoV2ViS2l0VGVzdHMpOgorICAgICAg
ICAqIHRlc3RzL0NDU2NoZWR1bGVyVGVzdENvbW1vbi5oOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OkZha2VDQ1RpbWVTb3VyY2U6OkZha2VDQ1RpbWVTb3VyY2UpOgorICAgICAgICAoV2ViS2l0VGVz
dHM6OkZha2VDQ1RpbWVTb3VyY2U6Om5leHRUaWNrVGltZSk6CisgICAgICAgIChXZWJLaXRUZXN0
czo6RmFrZUNDVGltZVNvdXJjZTo6c2V0TmV4dFRpY2tUaW1lKToKKyAgICAgICAgKEZha2VDQ1Rp
bWVTb3VyY2UpOgorICAgICAgICAqIHRlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaDoKKyAg
ICAgICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdURjo6
VEVTVCk6CisKIDIwMTItMDMtMzAgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUm9sbCBjaHJvbWl1bSBERVBTIGZyb20gMTI5NTkzIHRvIDEyOTU3NC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
RGVsYXlCYXNlZFRpbWVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5jcHAKaW5kZXggYjY4OGE3OGEy
N2M1Nzk1MWRkOGQ2YmVmZmVlNzY2YzVkMjRmMjNlNC4uNzA0ZWZmNGJmN2EzZDZjMDRkZWI1Y2Qx
ZDI2NjBmYzhlMDE5ZWJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNv
dXJjZS5jcHAKQEAgLTE2MSw0ICsxNjEsMTIgQEAgdm9pZCBDQ0RlbGF5QmFzZWRUaW1lU291cmNl
Ojpwb3N0TmV4dFRpY2tUYXNrKGRvdWJsZSBub3cpCiAgICAgbV90aWNrVGFyZ2V0ID0gbmV3VGlj
a1RhcmdldDsKIH0KIAorZG91YmxlIENDRGVsYXlCYXNlZFRpbWVTb3VyY2U6Om5leHRUaWNrVGlt
ZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hhc1RpY2tUYXJnZXQpCisgICAgICAgIHJldHVybiBt
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKworICAgIHJldHVybiBtX3RpY2tUYXJnZXQ7
Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaAppbmRleCA1
ZjFiMmM0ZjJmZGE3YmVkNTRmNWY0NDM1MDY0NWYzNWY3OTZlNWRmLi4zODBiZTZiYzBkMWU2YTEy
ZWE1YjU1N2Y2YTczNGFjN2RmNzRiNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2Vk
VGltZVNvdXJjZS5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0QWN0aXZlKGJvb2wpOwogICAgIHZpcnR1YWwgYm9vbCBhY3RpdmUoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlICE9IFNUQVRFX0lOQUNUSVZFOyB9CiAKKyAgICB2aXJ0dWFsIGRvdWJsZSBuZXh0
VGlja1RpbWUoKSBjb25zdDsKKwogICAgIC8vIENDVGltZXJDbGllbnQgaW1wbGVtZW50YXRpb24u
CiAgICAgdmlydHVhbCB2b2lkIG9uVGltZXJGaXJlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NG
cmFtZVJhdGVDb250cm9sbGVyLmNwcAppbmRleCBkYjZkOTVjYzAwY2MxNTU2OGUwY2U1NjdmNDQ5
NzhhOTI3OTI0YmU4Li5lYzNjMjQ3ODA5M2FkOGM4N2I2ODQ4MDYwMjI4NDY4NDU5ZDdmOGQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0ZyYW1lUmF0ZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5jcHAKQEAgLTEwNSw0ICsx
MDUsOSBAQCB2b2lkIENDRnJhbWVSYXRlQ29udHJvbGxlcjo6ZGlkQWJvcnRBbGxQZW5kaW5nRnJh
bWVzKCkKICAgICBtX251bUZyYW1lc1BlbmRpbmcgPSAwOwogfQogCitkb3VibGUgQ0NGcmFtZVJh
dGVDb250cm9sbGVyOjpuZXh0VGlja1RpbWUoKQoreworICAgIHJldHVybiBtX3RpbWVTb3VyY2Ut
Pm5leHRUaWNrVGltZSgpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ29udHJv
bGxlci5oCmluZGV4IDU3MzRkNGFhNmU5Zjc0NjFhNGM2NmM2ZTBhMTg2MGRhMzBkNDk2NmUuLjdh
MWRhZDQzOWFmYjI4YjNmNDM0YjM3ODk2YTJjNjlkOGY0YzI2YzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRnJhbWVSYXRlQ29udHJvbGxlci5oCkBAIC02NCw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZEZpbmlzaEZyYW1lKCk7CiAgICAgdm9pZCBkaWRBYm9ydEFsbFBlbmRpbmdGcmFtZXMo
KTsKICAgICB2b2lkIHNldE1heEZyYW1lc1BlbmRpbmcoaW50KTsgLy8gMCBmb3IgdW5saW1pdGVk
LgorICAgIGRvdWJsZSBuZXh0VGlja1RpbWUoKTsKIAogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBj
bGFzcyBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXJUaW1lU291cmNlQWRhcHRlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyLmNwcAppbmRleCAzZDA5ZTQ0YjEyZGE0ZDFmM2U2ZmMxMjdhMDM2ZDUyZDgzZDcxZTg0
Li40MDg1YTQ0MmE3ZTBhOWIxNGJmZGE3MjUyZGJmNTAzYmViZTFlZDVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXIuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnNldE5lZWRz
Rm9yY2VkUmVkcmF3KCkKIHZvaWQgQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWVDb21wbGV0ZSgpCiB7
CiAgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1lQ29tcGxldGUiLCB0aGlz
LCAwKTsKLSAgICBtX3N0YXRlTWFjaGluZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBtX3N0
YXRlTWFjaGluZS5iZWdpbkZyYW1lQ29tcGxldGUobV9jbGllbnQtPmhhc01vcmVSZXNvdXJjZVVw
ZGF0ZXMoKSk7CiAgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKIH0KIApAQCAtMTA3LDE0
ICsxMDcsMTkgQEAgdm9pZCBDQ1NjaGVkdWxlcjo6ZGlkUmVjcmVhdGVDb250ZXh0KCkKICAgICBw
cm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOwogfQogCi12b2lkIENDU2NoZWR1bGVyOjp2c3luY1Rp
Y2soKQordm9pZCBDQ1NjaGVkdWxlcjo6ZGlkVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKCkK
IHsKKyAgICBUUkFDRV9FVkVOVCgiQ0NTY2hlZHVsZXI6OmRpZFVwZGF0ZU1vcmVSZXNvdXJjZXND
b21wbGV0ZSIsIHRoaXMsIDApOwogICAgIGlmIChtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5n
KSB7CiAgICAgICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsKICAgICAg
ICAgbV9zdGF0ZU1hY2hpbmUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUobV9jbGll
bnQtPmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSk7CiAgICAgfQotICAgIFRSQUNFX0VWRU5UKCJD
Q1NjaGVkdWxlcjo6dnN5bmNUaWNrIiwgdGhpcywgMCk7CisgICAgcHJvY2Vzc1NjaGVkdWxlZEFj
dGlvbnMoKTsKK30KIAordm9pZCBDQ1NjaGVkdWxlcjo6dnN5bmNUaWNrKCkKK3sKKyAgICBUUkFD
RV9FVkVOVCgiQ0NTY2hlZHVsZXI6OnZzeW5jVGljayIsIHRoaXMsIDApOwogICAgIG1fc3RhdGVN
YWNoaW5lLmRpZEVudGVyVlN5bmMoKTsKICAgICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOwog
ICAgIG1fc3RhdGVNYWNoaW5lLmRpZExlYXZlVlN5bmMoKTsKQEAgLTEyMyw2ICsxMjgsMTcgQEAg
dm9pZCBDQ1NjaGVkdWxlcjo6dnN5bmNUaWNrKCkKIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Y3Rpb24gQ0NTY2hlZHVsZXI6Om5leHRBY3Rpb24oKQogewogICAgIG1fc3RhdGVNYWNoaW5lLnNl
dENhbkRyYXcobV9jbGllbnQtPmNhbkRyYXcoKSk7CisKKyAgICBkb3VibGUgY2FuVXBkYXRlTW9y
ZVJlc291cmNlcyA9IGZhbHNlOworICAgIGlmIChtX3N0YXRlTWFjaGluZS5yZWRyYXdQZW5kaW5n
KCkpCisgICAgICAgIGNhblVwZGF0ZU1vcmVSZXNvdXJjZXMgPSB0cnVlOworCisgICAgZG91Ymxl
IG5vdyA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgIGlmIChub3cgPCBtX2Zy
YW1lUmF0ZUNvbnRyb2xsZXItPm5leHRUaWNrVGltZSgpIC0gbV9jbGllbnQtPm1heFJlc291cmNl
VXBkYXRlVGltZSgpKQorICAgICAgICBjYW5VcGRhdGVNb3JlUmVzb3VyY2VzID0gdHJ1ZTsKKwor
ICAgIG1fc3RhdGVNYWNoaW5lLnNldENhblVwZGF0ZU1vcmVSZXNvdXJjZXMoY2FuVXBkYXRlTW9y
ZVJlc291cmNlcyk7CisKICAgICByZXR1cm4gbV9zdGF0ZU1hY2hpbmUubmV4dEFjdGlvbigpOwog
fQogCkBAIC0xNDksMTUgKzE2NSw3IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVs
ZWRBY3Rpb25zKCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTOgogICAgICAg
ICAgICAgbV9jbGllbnQtPnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKTsKLSAg
ICAgICAgICAgIGlmICghbV9jbGllbnQtPmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSkgewotICAg
ICAgICAgICAgICAgIC8vIElmIHdlIHdlcmUganVzdCB0b2xkIHRvIHVwZGF0ZSByZXNvdXJjZXMs
IGJ1dCB0aGVyZSBhcmUgbm8KLSAgICAgICAgICAgICAgICAvLyBtb3JlIHBlbmRpbmcsIHRoZW4g
dGVsbCB0aGUgc3RhdGUgbWFjaGluZSB0aGF0IHRoZQotICAgICAgICAgICAgICAgIC8vIGJlZ2lu
VXBkYXRlTW9yZVJlc291cmNlcyBjb21wbGV0ZWQuIElmIG1vcmUgYXJlIHBlbmRpbmcsCi0gICAg
ICAgICAgICAgICAgLy8gdGhlbiB3ZSB3aWxsIGFjayB0aGUgdXBkYXRlIGF0IHRoZSBuZXh0IGRy
YXcuCi0gICAgICAgICAgICAgICAgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IGZhbHNl
OwotICAgICAgICAgICAgICAgIG1fc3RhdGVNYWNoaW5lLmJlZ2luVXBkYXRlTW9yZVJlc291cmNl
c0NvbXBsZXRlKGZhbHNlKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG1f
dXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSB0cnVlOworICAgICAgICAgICAgbV91cGRhdGVN
b3JlUmVzb3VyY2VzUGVuZGluZyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVDoKICAgICAgICAgICAg
IG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25Db21taXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCmlu
ZGV4IGE2ZjI2MWM0ZWRmNmQ4NTRhYTJiNjkxM2FhNmI3YTkyYTc5Mzg2MjQuLjkyYzg0NzUxZDg1
Y2JlNmNhZmQwOTkzNzI0ZjdiMDExZGU2YWJkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaApAQCAt
NTQsNiArNTQsNyBAQCBjbGFzcyBDQ1NjaGVkdWxlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGNhbkRyYXcoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGhhc01vcmVSZXNvdXJj
ZVVwZGF0ZXMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgbWF4UmVzb3VyY2VVcGRh
dGVUaW1lKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJl
Z2luRnJhbWUoKSA9IDA7CiAgICAgdmlydHVhbCBDQ1NjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2Fw
UmVzdWx0IHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSWZQb3NzaWJsZSgpID0gMDsKQEAgLTk2
LDYgKzk3LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkTG9zZUNvbnRleHQoKTsKICAgICB2b2lk
IGRpZFJlY3JlYXRlQ29udGV4dCgpOwogCisgICAgdm9pZCBkaWRVcGRhdGVNb3JlUmVzb3VyY2Vz
Q29tcGxldGUoKTsKKwogICAgIGJvb2wgY29tbWl0UGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGVNYWNoaW5lLmNvbW1pdFBlbmRpbmcoKTsgfQogICAgIGJvb2wgcmVkcmF3UGVuZGluZygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVNYWNoaW5lLnJlZHJhd1BlbmRpbmcoKTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKaW5kZXggMWM5NDJlMzQz
Yzc3NzE5YjYzZTZkM2YwOWIxMmIwNWRlZTAwMWJkYS4uOTgxOGVmOTlkY2M0MDAxOWI4NTA5MGUw
NjFlZThkODcyNmFhYjY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lLmNwcApAQCAtNDEsNiArNDEsNyBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmUoKQogICAgICwgbV92aXNpYmxlKGZhbHNlKQogICAgICwgbV9j
YW5EcmF3KHRydWUpCiAgICAgLCBtX2RyYXdJZlBvc3NpYmxlRmFpbGVkKGZhbHNlKQorICAgICwg
bV9jYW5VcGRhdGVNb3JlUmVzb3VyY2VzKGZhbHNlKQogICAgICwgbV9jb250ZXh0U3RhdGUoQ09O
VEVYVF9BQ1RJVkUpCiB7CiB9CkBAIC03MCw2ICs3MSwxOCBAQCBib29sIENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpzaG91bGREcmF3KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9v
bCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2hvdWxkVXBkYXRlTW9yZVJlc291cmNlcygpIGNv
bnN0Cit7CisgICAgaWYgKG1fbmVlZHNGb3JjZWRSZWRyYXcpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgaWYgKG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIW1fY2FuVXBkYXRlTW9yZVJlc291cmNlcykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCiBDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QWN0aW9uIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKCkgY29uc3QKIHsK
ICAgICBzd2l0Y2ggKG1fY29tbWl0U3RhdGUpIHsKQEAgLTk2LDcgKzEwOSw3IEBAIENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rp
b24oKSBjb25zdAogICAgIGNhc2UgQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUzoKICAg
ICAgICAgaWYgKHNob3VsZERyYXcoKSkKICAgICAgICAgICAgIHJldHVybiBtX25lZWRzRm9yY2Vk
UmVkcmF3ID8gQUNUSU9OX0RSQVdfRk9SQ0VEIDogQUNUSU9OX0RSQVdfSUZfUE9TU0lCTEU7Ci0g
ICAgICAgIGlmICghbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZykKKyAgICAgICAgaWYgKHNo
b3VsZFVwZGF0ZU1vcmVSZXNvdXJjZXMoKSkKICAgICAgICAgICAgIHJldHVybiBBQ1RJT05fQkVH
SU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTOwogICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAK
QEAgLTIyMiwxMCArMjM1LDEzIEBAIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNldE5l
ZWRzRm9yY2VkQ29tbWl0KCkKICAgICBtX25lZWRzRm9yY2VkQ29tbWl0ID0gdHJ1ZTsKIH0KIAot
dm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6YmVnaW5GcmFtZUNvbXBsZXRlKCkKK3ZvaWQg
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OmJlZ2luRnJhbWVDb21wbGV0ZShib29sIHJlc291cmNl
c1BlbmRpbmcpCiB7CiAgICAgQVNTRVJUKG1fY29tbWl0U3RhdGUgPT0gQ09NTUlUX1NUQVRFX0ZS
QU1FX0lOX1BST0dSRVNTKTsKLSAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1VQREFU
SU5HX1JFU09VUkNFUzsKKyAgICBpZiAocmVzb3VyY2VzUGVuZGluZykKKyAgICAgICAgbV9jb21t
aXRTdGF0ZSA9IENPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVM7CisgICAgZWxzZQorICAg
ICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVDsKIH0KIAog
dm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6YmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29t
cGxldGUoYm9vbCBtb3JlUGVuZGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZS5oCmluZGV4IDJlY2ZkMWNkMDZkNTA4YWUxZmU2MWY2ODM5MjE2ODFhZmRjZWI4NjYu
LjEwMDMxNjE4OTcwNmYyMzM3NWMxZjJkZmNhNTQ0MTM2ZGY2NGUxMzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaApAQCAtMTExLDcgKzExMSw3IEBAIHB1Ymxp
YzoKICAgICAvLyBDYWxsIHRoaXMgb25seSBpbiByZXNwb25zZSB0byByZWNlaXZpbmcgYW4gQUNU
SU9OX0JFR0lOX0ZSQU1FCiAgICAgLy8gZnJvbSBuZXh0U3RhdGUuIEluZGljYXRlcyB0aGF0IGFs
bCBwYWludGluZyBpcyBjb21wbGV0ZSBhbmQgdGhhdAogICAgIC8vIHVwZGF0aW5nIG9mIGNvbXBv
c2l0b3IgcmVzb3VyY2VzIGNhbiBiZWdpbi4KLSAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZSgp
OworICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBsZXRlKGJvb2wgcmVzb3VyY2VzUGVuZGluZyk7CiAK
ICAgICAvLyBDYWxsIHRoaXMgb25seSBpbiByZXNwb25zZSB0byByZWNlaXZpbmcgYW4gQUNUSU9O
X1VQREFURV9NT1JFX1JFU09VUkNFUwogICAgIC8vIGZyb20gbmV4dFN0YXRlLiBJbmRpY2F0ZXMg
dGhhdCB0aGUgc3BlY2lmaWMgdXBkYXRlIHJlcXVlc3QgY29tcGxldGVkLgpAQCAtMTIyLDYgKzEy
Miw5IEBAIHB1YmxpYzoKICAgICAvLyB3aGVuIHN1Y2ggYmVoYXZpb3Igd291bGQgYmUgdW5kZXNp
cmFibGUuCiAgICAgdm9pZCBzZXRDYW5EcmF3KGJvb2wgY2FuKSB7IG1fY2FuRHJhdyA9IGNhbjsg
fQogCisgICAgLy8gSW5kaWNhdGVzIHdoZXRoZXIgdXBkYXRpbmcgcmVzb3VyY2VzIHdvdWxkLCBh
dCB0aGlzIHRpbWUsIG1ha2Ugc2Vuc2UuCisgICAgdm9pZCBzZXRDYW5VcGRhdGVNb3JlUmVzb3Vy
Y2VzKGJvb2wgY2FuKSB7IG1fY2FuVXBkYXRlTW9yZVJlc291cmNlcyA9IGNhbjsgfQorCiAgICAg
dm9pZCBkaWRMb3NlQ29udGV4dCgpOwogICAgIHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0KCk7CiAK
QEAgLTEyOSw2ICsxMzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBzaG91bGREcmF3Rm9yY2Vk
KCkgY29uc3Q7CiAgICAgYm9vbCBzaG91bGREcmF3KCkgY29uc3Q7CiAgICAgYm9vbCBoYXNEcmF3
blRoaXNGcmFtZSgpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkVXBkYXRlTW9yZVJlc291cmNlcygp
IGNvbnN0OwogCiAgICAgQ29tbWl0U3RhdGUgbV9jb21taXRTdGF0ZTsKIApAQCAtMTQzLDYgKzE0
Nyw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1fdmlzaWJsZTsKICAgICBib29sIG1fY2FuRHJh
dzsKICAgICBib29sIG1fZHJhd0lmUG9zc2libGVGYWlsZWQ7CisgICAgYm9vbCBtX2NhblVwZGF0
ZU1vcmVSZXNvdXJjZXM7CiAgICAgQ29udGV4dFN0YXRlIG1fY29udGV4dFN0YXRlOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCBlYzg0MjhkNjUwNWZh
MTk5NzFmOGFhMzIwMTY2NTAzMTMyN2MyMmI2Li4wMjYxNzQxY2Q5OGQ3ZTEyNTZkNGU4MGFiZWRh
NWQ1Y2RlZGI3ZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApA
QCAtMjAwLDkgKzIwMCw5IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoKQog
ICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwogCiAgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1w
bC5nZXQoKSk7Ci0gICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcihtX2xheWVyVHJlZUhv
c3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+
bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJlQ29waWVyKCkpOworICAgICAgICBDQ1RleHR1cmVVcGRh
dGVyIHVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBtX2xheWVyVHJlZUhv
c3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+
bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJlQ29waWVyKCkpOwogICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4
dCgpLCB1cGRhdGVyKTsKLSAgICAgICAgdXBkYXRlci51cGRhdGUobV9sYXllclRyZWVIb3N0SW1w
bC0+Y29udGV4dCgpLCBudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgICAgIHVw
ZGF0ZXIudXBkYXRlKG51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKICAgICAgICAgQVNT
RVJUKCF1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3RJ
bXBsLT5zZXRWaXNpYmxlKG1fbGF5ZXJUcmVlSG9zdC0+dmlzaWJsZSgpKTsKICAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5maW5pc2hDb21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1w
bC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDBjZTBmNmQx
MDk4YTczOTc3ZjNiYWY4MjMyZjcyMTZiMDVlN2FkN2UuLmRiNjMxMzVhNjk2ZmE1YTg1ZDFkZjY1
ZmRjNmYxNmYyMGFhMzUwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCkBA
IC0yOSwyNCArMjksNjUgQEAKIAogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKIAor
I2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiTWFu
YWdlZFRleHR1cmUuaCIKKyNpbmNsdWRlICJjYy9DQ1RpbWVyLmgiCiAKIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CiAKK25hbWVzcGFjZSB7CisKKy8vIE51bWJlciBvZiBwZW5kaW5nIHRleHR1cmUgdXBk
YXRlIHF1ZXJpZXMgdG8gYWxsb3cuCitzdGF0aWMgY29uc3Qgc2l6ZV90IG1heFBlbmRpbmdUZXh0
dXJlVXBkYXRlUXVlcmllcyA9IDI7CisKKy8vIE1lYXN1cmVkIGluIHNlY29uZHMuCitzdGF0aWMg
Y29uc3QgZG91YmxlIHRleHR1cmVVcGRhdGVUaWNrUmF0ZSA9IDAuMDA0OworCit9IC8vIGFub255
bW91cyBuYW1lc3BhY2UKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDQ1RleHR1cmVVcGRhdGVy
OjpDQ1RleHR1cmVVcGRhdGVyKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgVGV4dHVyZUNv
cGllciogY29waWVyKQotICAgIDogbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQorICAgIDogbV9jb250
ZXh0KDApCisgICAgLCBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCisgICAgLCBtX2NvcGllcihjb3Bp
ZXIpCisgICAgLCBtX2VudHJ5SW5kZXgoMCkKK3sKKyAgICBBU1NFUlQobV9hbGxvY2F0b3IpOwor
fQorCitDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIFRleHR1cmVDb3BpZXIqIGNv
cGllcikKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9hbGxvY2F0b3IoYWxsb2Nh
dG9yKQogICAgICwgbV9jb3BpZXIoY29waWVyKQogICAgICwgbV9lbnRyeUluZGV4KDApCiB7Cisg
ICAgQVNTRVJUKG1fY29udGV4dCk7CisgICAgQVNTRVJUKG1fYWxsb2NhdG9yKTsKK30KKworQ0NU
ZXh0dXJlVXBkYXRlcjo6Q0NUZXh0dXJlVXBkYXRlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBUZXh0dXJlQ29waWVyKiBjb3BpZXIsIFBh
c3NPd25QdHI8Q0NUaW1lcj4gdXBkYXRlVGltZXIpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkK
KyAgICAsIG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKKyAgICAsIG1fY29waWVyKGNvcGllcikKKyAg
ICAsIG1fZW50cnlJbmRleCgwKQorICAgICwgbV91cGRhdGVUaW1lcih1cGRhdGVUaW1lcikKK3sK
KyAgICBBU1NFUlQobV9jb250ZXh0KTsKICAgICBBU1NFUlQobV9hbGxvY2F0b3IpOwogfQogCiBD
Q1RleHR1cmVVcGRhdGVyOjp+Q0NUZXh0dXJlVXBkYXRlcigpCiB7CisgICAgaWYgKCFtX2NvbnRl
eHQpCisgICAgICAgIHJldHVybjsKKworICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNp
b25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKSk7CisgICAgbV9hdmFpbGFibGVRdWVyaWVzTGlzdC5hcHBlbmQobV9wZW5kaW5n
UXVlcmllc0xpc3QpOworICAgIGZvciAoVmVjdG9yPHVuc2lnbmVkPjo6aXRlcmF0b3IgaXQgPSBt
X2F2YWlsYWJsZVF1ZXJpZXNMaXN0LmJlZ2luKCk7IGl0ICE9IG1fYXZhaWxhYmxlUXVlcmllc0xp
c3QuZW5kKCk7ICsraXQpCisgICAgICAgIGV4dGVuc2lvbnMtPmRlbGV0ZVF1ZXJ5RVhUKCppdCk7
CiB9CiAKIHZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6YXBwZW5kKExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0LCBWZWN0b3I8VXBkYXRlRW50cnk+JiBlbnRyaWVzKQpAQCAtNzUsMTMgKzEx
Niw0NCBAQCBib29sIENDVGV4dHVyZVVwZGF0ZXI6Omhhc01vcmVVcGRhdGVzKCkgY29uc3QKICAg
ICByZXR1cm4gbV9lbnRyaWVzLnNpemUoKSB8fCBtX3BhcnRpYWxFbnRyaWVzLnNpemUoKTsKIH0K
IAotYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIHNpemVfdCBjb3VudCkKK2RvdWJsZSBDQ1RleHR1cmVVcGRhdGVyOjptYXhUZXh0dXJlVXBk
YXRlVGltZSgpIGNvbnN0CiB7CisgICAgcmV0dXJuIHRleHR1cmVVcGRhdGVUaWNrUmF0ZSArIDAu
MDAyOworfQorCit2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShzaXplX3QgY291bnQpCit7
CisgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRl
bnNpb25zM0RDaHJvbWl1bSo+KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICB1bnNp
Z25lZCBxdWVyeUlkID0gMDsKKworICAgIGlmIChtX3VwZGF0ZVRpbWVyKSB7CisgICAgICAgIG1f
dXBkYXRlVGltZXItPnN0YXJ0T25lU2hvdCh0ZXh0dXJlVXBkYXRlVGlja1JhdGUpOworCisgICAg
ICAgIC8vIFByb2Nlc3MgcGVuZGluZyBxdWVyaWVzLgorICAgICAgICBwcm9jZXNzUXVlcmllcygp
OworCisgICAgICAgIC8vIFVzZSBhdmFpbGFibGUgcXVlcnkgb3IgY3JlYXRlIG5ldyBxdWVyeS4K
KyAgICAgICAgaWYgKCFtX2F2YWlsYWJsZVF1ZXJpZXNMaXN0LmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgcXVlcnlJZCA9IG1fYXZhaWxhYmxlUXVlcmllc0xpc3QubGFzdCgpOworICAgICAgICAg
ICAgbV9hdmFpbGFibGVRdWVyaWVzTGlzdC5yZW1vdmVMYXN0KCk7CisgICAgICAgIH0gZWxzZSBp
ZiAobV9wZW5kaW5nUXVlcmllc0xpc3Quc2l6ZSgpIDwgbWF4UGVuZGluZ1RleHR1cmVVcGRhdGVR
dWVyaWVzKQorICAgICAgICAgICAgcXVlcnlJZCA9IGV4dGVuc2lvbnMtPmNyZWF0ZVF1ZXJ5RVhU
KCk7CisKKyAgICAgICAgLy8gQXZvaWQgdXBkYXRlIGlmIHdlIGhhdmUgcmVhY2ggdGhlIGxpbWl0
IGZvciBwZW5kaW5nIHF1ZXJpZXMuCisgICAgICAgIGlmICghcXVlcnlJZCkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAocXVlcnlJZCkgeworICAgICAgICBtX3BlbmRpbmdR
dWVyaWVzTGlzdC5wcmVwZW5kKHF1ZXJ5SWQpOworICAgICAgICBleHRlbnNpb25zLT5iZWdpblF1
ZXJ5RVhUKEV4dGVuc2lvbnMzRENocm9taXVtOjpDT01NQU5EU19JU1NVRURfQ0hST01JVU0sIHF1
ZXJ5SWQpOworICAgIH0KKwogICAgIHNpemVfdCBpbmRleDsKICAgICBzaXplX3QgbWF4SW5kZXgg
PSBtaW4obV9lbnRyeUluZGV4ICsgY291bnQsIG1fZW50cmllcy5zaXplKCkpOwogICAgIGZvciAo
aW5kZXggPSBtX2VudHJ5SW5kZXg7IGluZGV4IDwgbWF4SW5kZXg7ICsraW5kZXgpIHsKICAgICAg
ICAgVXBkYXRlRW50cnkmIGVudHJ5ID0gbV9lbnRyaWVzW2luZGV4XTsKLSAgICAgICAgZW50cnku
bV90ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIG1fYWxsb2NhdG9yLCBlbnRyeS5tX3NvdXJj
ZVJlY3QsIGVudHJ5Lm1fZGVzdFJlY3QpOworICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0
ZVJlY3QobV9jb250ZXh0LCBtX2FsbG9jYXRvciwgZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5t
X2Rlc3RSZWN0KTsKICAgICB9CiAKICAgICBib29sIG1vcmVVcGRhdGVzID0gbWF4SW5kZXggPCBt
X2VudHJpZXMuc2l6ZSgpOwpAQCAtOTMsMTggKzE2NSwyMyBAQCBib29sIENDVGV4dHVyZVVwZGF0
ZXI6OnVwZGF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgc2l6ZV90IGNvdW50KQogICAg
ICAgICBtb3JlVXBkYXRlcyA9IHRydWU7CiAKICAgICBpZiAobW9yZVVwZGF0ZXMpIHsKKyAgICAg
ICAgaWYgKHF1ZXJ5SWQpCisgICAgICAgICAgICBleHRlbnNpb25zLT5lbmRRdWVyeUVYVChFeHRl
bnNpb25zM0RDaHJvbWl1bTo6Q09NTUFORFNfSVNTVUVEX0NIUk9NSVVNKTsKICAgICAgICAgbV9l
bnRyeUluZGV4ID0gaW5kZXg7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbV9wYXJ0aWFsRW50cmllcy5z
aXplKCk7ICsraW5kZXgpIHsKICAgICAgICAgVXBkYXRlRW50cnkmIGVudHJ5ID0gbV9wYXJ0aWFs
RW50cmllc1tpbmRleF07Ci0gICAgICAgIGVudHJ5Lm1fdGV4dHVyZS0+dXBkYXRlUmVjdChjb250
ZXh0LCBtX2FsbG9jYXRvciwgZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5tX2Rlc3RSZWN0KTsK
KyAgICAgICAgZW50cnkubV90ZXh0dXJlLT51cGRhdGVSZWN0KG1fY29udGV4dCwgbV9hbGxvY2F0
b3IsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9kZXN0UmVjdCk7CiAgICAgfQogCisgICAg
aWYgKHF1ZXJ5SWQpCisgICAgICAgIGV4dGVuc2lvbnMtPmVuZFF1ZXJ5RVhUKEV4dGVuc2lvbnMz
RENocm9taXVtOjpDT01NQU5EU19JU1NVRURfQ0hST01JVU0pOworCiAgICAgLy8gSWYgbm8gZW50
cmllcyBsZWZ0IHRvIHByb2Nlc3MsIGF1dG8tY2xlYXIuCiAgICAgY2xlYXIoKTsKLSAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuOwogfQogCiB2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmNsZWFy
KCkKQEAgLTExNCw2ICsxOTEsMjIgQEAgdm9pZCBDQ1RleHR1cmVVcGRhdGVyOjpjbGVhcigpCiAg
ICAgbV9wYXJ0aWFsRW50cmllcy5jbGVhcigpOwogfQogCit2b2lkIENDVGV4dHVyZVVwZGF0ZXI6
OnByb2Nlc3NRdWVyaWVzKCkKK3sKKyAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9u
cyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkpOworCisgICAgd2hpbGUgKCFtX3BlbmRpbmdRdWVyaWVzTGlzdC5pc0VtcHR5KCkp
IHsKKyAgICAgICAgdW5zaWduZWQgcXVlcnlJZCA9IG1fcGVuZGluZ1F1ZXJpZXNMaXN0Lmxhc3Qo
KTsKKyAgICAgICAgdW5zaWduZWQgYXZhaWxhYmxlID0gMTsKKyAgICAgICAgZXh0ZW5zaW9ucy0+
Z2V0UXVlcnlPYmplY3R1aXZFWFQocXVlcnlJZCwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OlFVRVJZ
X1JFU1VMVF9BVkFJTEFCTEVfRVhULCAmYXZhaWxhYmxlKTsKKyAgICAgICAgaWYgKCFhdmFpbGFi
bGUpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBtX2F2YWlsYWJsZVF1ZXJpZXNMaXN0
LnByZXBlbmQocXVlcnlJZCk7CisgICAgICAgIG1fcGVuZGluZ1F1ZXJpZXNMaXN0LnJlbW92ZUxh
c3QoKTsKKyAgICB9Cit9CisKIH0KIAogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBkMjljNjU4NjFlOTMyM2Vj
ZmY4MmRlNDBiY2RiZjdlMjQ2YjQ5NzA3Li4yMmQxY2YzMDg4ZjA3MDFiMTBjYTI4OWU1MDk0OWJi
NTBiNzBhNDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCkBAIC0zMiw2ICszMiw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ0NUaW1lcjsKIGNsYXNzIEdyYXBo
aWNzQ29udGV4dDNEOwogY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIGNsYXNzIFRleHR1cmVDb3Bp
ZXI7CkBAIC0zOSwxNSArNDAsMTggQEAgY2xhc3MgVGV4dHVyZUNvcGllcjsKIGNsYXNzIENDVGV4
dHVyZVVwZGF0ZXIgewogcHVibGljOgogICAgIENDVGV4dHVyZVVwZGF0ZXIoVGV4dHVyZUFsbG9j
YXRvciosIFRleHR1cmVDb3BpZXIqKTsKKyAgICBDQ1RleHR1cmVVcGRhdGVyKEdyYXBoaWNzQ29u
dGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIFRleHR1cmVDb3BpZXIqKTsKKyAgICBDQ1RleHR1
cmVVcGRhdGVyKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIFRleHR1cmVD
b3BpZXIqLCBQYXNzT3duUHRyPENDVGltZXI+KTsKICAgICB+Q0NUZXh0dXJlVXBkYXRlcigpOwog
CiAgICAgdm9pZCBhcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKICAgICB2b2lkIGFw
cGVuZFBhcnRpYWwoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIGJvb2wgaGFzTW9y
ZVVwZGF0ZXMoKSBjb25zdDsKKyAgICBkb3VibGUgbWF4VGV4dHVyZVVwZGF0ZVRpbWUoKSBjb25z
dDsKIAotICAgIC8vIFVwZGF0ZSBzb21lIHRleHR1cmVzLiBSZXR1cm5zIHRydWUgaWYgbW9yZSB0
ZXh0dXJlcyBsZWZ0IHRvIHByb2Nlc3MuCi0gICAgYm9vbCB1cGRhdGUoR3JhcGhpY3NDb250ZXh0
M0QqLCBzaXplX3QgY291bnQpOworICAgIC8vIFVwZGF0ZSBzb21lIHRleHR1cmVzLgorICAgIHZv
aWQgdXBkYXRlKHNpemVfdCBjb3VudCk7CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKQEAgLTYzLDEx
ICs2NywxNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIHZvaWQgYXBwZW5kKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCwgVmVjdG9yPFVwZGF0ZUVudHJ5PiYpOwogCisgICAgdm9pZCBwcm9jZXNz
UXVlcmllcygpOworCisgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKICAgICBUZXh0
dXJlQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKICAgICBUZXh0dXJlQ29waWVyKiBtX2NvcGllcjsK
ICAgICBzaXplX3QgbV9lbnRyeUluZGV4OwogICAgIFZlY3RvcjxVcGRhdGVFbnRyeT4gbV9lbnRy
aWVzOwogICAgIFZlY3RvcjxVcGRhdGVFbnRyeT4gbV9wYXJ0aWFsRW50cmllczsKKyAgICBPd25Q
dHI8Q0NUaW1lcj4gbV91cGRhdGVUaW1lcjsKKyAgICBWZWN0b3I8dW5zaWduZWQ+IG1fcGVuZGlu
Z1F1ZXJpZXNMaXN0OworICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9hdmFpbGFibGVRdWVyaWVzTGlz
dDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggNDU4NGYxNWZiY2Ey
ZTViZTQ4OTk2ZGFkNWYwOWYzY2FjOGEzYTk3Ni4uMDkzOGI0OWZhZWM3NTRiYzYxYjc5OTc1YWMw
YjIzYTM0ZTI1NTI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTQ3LDcgKzQ3
LDcgQEAgbmFtZXNwYWNlIHsKIAogLy8gTnVtYmVyIG9mIHRleHR1cmVzIHRvIHVwZGF0ZSB3aXRo
IGVhY2ggY2FsbCB0bwogLy8gc2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpLgot
c3RhdGljIGNvbnN0IHNpemVfdCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lID0gNDg7CitzdGF0aWMg
Y29uc3Qgc2l6ZV90IHRleHR1cmVVcGRhdGVzUGVyVGljayA9IDQ7CiAKIC8vIE1lYXN1cmVkIGlu
IHNlY29uZHMuCiBzdGF0aWMgY29uc3QgZG91YmxlIGNvbnRleHRSZWNyZWF0aW9uVGlja1JhdGUg
PSAwLjAzOwpAQCAtNDg4LDYgKzQ4OCwyNSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJh
bWUoKQogICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIH0KIAorY2xhc3Mg
Q0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVUaW1lciA6IHB1YmxpYyBDQ1RpbWVyLCBDQ1RpbWVy
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1RocmVhZFByb3h5VGV4
dHVyZVVwZGF0ZVRpbWVyPiBjcmVhdGUoQ0NUaHJlYWRQcm94eSogcHJveHkpIHsgcmV0dXJuIGFk
b3B0UHRyKG5ldyBDQ1RocmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRpbWVyKHByb3h5KSk7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBvblRpbWVyRmlyZWQoKQorICAgIHsKKyAgICAgICAgbV9wcm94eS0+
dGV4dHVyZVVwZGF0ZUNvbXBsZXRlT25JbXBsVGhyZWFkKCk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIGV4cGxpY2l0IENDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGltZXIoQ0NUaHJlYWRQcm94
eSogcHJveHkpCisgICAgICAgIDogQ0NUaW1lcihDQ1Byb3h5OjppbXBsVGhyZWFkKCksIHRoaXMp
CisgICAgICAgICwgbV9wcm94eShwcm94eSkKKyAgICB7CisgICAgfQorCisgICAgQ0NUaHJlYWRQ
cm94eSogbV9wcm94eTsKK307CisKIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBs
ZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogewogICAgIFRS
QUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQi
LCB0aGlzLCAwKTsKQEAgLTUwMiwxOCArNTIxLDI1IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVn
aW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9u
CiAKICAgICBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9IGNvbXBsZXRpb247
CiAKLSAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKLSAg
ICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCA9IGFkb3B0UHRyKG5ldyBDQ1Rl
eHR1cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRv
cigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVDb3BpZXIo
KSkpOwotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xh
eWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksICptX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1w
bFRocmVhZCk7CisgICAgaWYgKCFtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKQorICAgICAg
ICBtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkID0gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVw
ZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBtX2xheWVyVHJlZUhvc3RJbXBs
LT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJS
ZW5kZXJlcigpLT50ZXh0dXJlQ29waWVyKCksIENDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGlt
ZXI6OmNyZWF0ZSh0aGlzKSkpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksICptX3RleHR1cmVVcGRh
dGVyT25JbXBsVGhyZWFkKTsKIAogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5iZWdpbkZy
YW1lQ29tcGxldGUoKTsKIH0KIAogYm9vbCBDQ1RocmVhZFByb3h5OjpoYXNNb3JlUmVzb3VyY2VV
cGRhdGVzKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBs
VGhyZWFkKQorICAgIGlmICghbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRo
cmVhZC0+aGFzTW9yZVVwZGF0ZXMoKTsKKyAgICByZXR1cm4gbV90ZXh0dXJlVXBkYXRlck9uSW1w
bFRocmVhZC0+aGFzTW9yZVVwZGF0ZXMoKTsKK30KKworZG91YmxlIENDVGhyZWFkUHJveHk6Om1h
eFJlc291cmNlVXBkYXRlVGltZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3RleHR1cmVVcGRhdGVy
T25JbXBsVGhyZWFkKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV90ZXh0dXJlVXBk
YXRlck9uSW1wbFRocmVhZC0+bWF4VGV4dHVyZVVwZGF0ZVRpbWUoKTsKIH0KIAogYm9vbCBDQ1Ro
cmVhZFByb3h5OjpjYW5EcmF3KCkKQEAgLTUyNywyMCArNTUzLDIwIEBAIGJvb2wgQ0NUaHJlYWRQ
cm94eTo6Y2FuRHJhdygpCiB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0
ZU1vcmVSZXNvdXJjZXMoKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hl
ZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgdGhpcywgMCk7Ci0gICAgQVNTRVJUKG1f
Y3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKLSAgICBtX2N1cnJlbnRUZXh0dXJl
VXBkYXRlck9uSW1wbFRocmVhZC0+dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQo
KSwgdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSk7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsK
KyAgICBBU1NFUlQobV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CisgICAgQVNTRVJUKG1f
dGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCkpOworCisgICAgbV90
ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+dXBkYXRlKHRleHR1cmVVcGRhdGVzUGVyVGljayk7
CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkKIHsKICAg
ICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgdGhp
cywgMCk7Ci0gICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsK
LSAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3Jl
VXBkYXRlcygpKTsKKyAgICBBU1NFUlQobV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7Cisg
ICAgQVNTRVJUKCFtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygp
KTsKICAgICBBU1NFUlQobV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwogCi0g
ICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKLQotCiAgICAg
bV9sYXllclRyZWVIb3N0SW1wbC0+YmVnaW5Db21taXQoKTsKIAogICAgIG1fbGF5ZXJUcmVlSG9z
dC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CkBA
IC03MzIsNiArNzU4LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2Vk
T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW8KICAgICBUUkFDRV9FVkVO
VCgiQ0NUaHJlYWRQcm94eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9uSW1wbFRocmVhZCIsIHRoaXMs
IDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgbV9sYXllclRyZWVIb3N0LT5k
ZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNv
bnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICBtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhy
ZWFkLmNsZWFyKCk7CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC5jbGVhcigpOwogICAgIG1faW5w
dXRIYW5kbGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJl
YWQuY2xlYXIoKTsKQEAgLTc0Niw3ICs3NzMsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNldEZ1
bGxSb290TGF5ZXJEYW1hZ2VPbkltcGxUaHJlYWQoKQogCiBzaXplX3QgQ0NUaHJlYWRQcm94eTo6
bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdGV4dHVyZVVw
ZGF0ZXNQZXJGcmFtZTsKKyAgICByZXR1cm4gdGV4dHVyZVVwZGF0ZXNQZXJUaWNrOwogfQogCiB2
b2lkIENDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRp
b25FdmVudCogY29tcGxldGlvbiwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHRQdHIsIGJvb2wq
IHJlY3JlYXRlU3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKiBjYXBhYmlsaXRp
ZXMpCkBAIC03NjIsNCArNzg5LDExIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250
ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBHCiAgICAgY29t
cGxldGlvbi0+c2lnbmFsKCk7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6dGV4dHVyZVVwZGF0
ZUNvbXBsZXRlT25JbXBsVGhyZWFkKCkKK3sKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwor
ICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojp0ZXh0dXJlVXBkYXRlQ29tcGxldGVPbklt
cGxUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+ZGlkVXBk
YXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCAzNWZlMWRiYWZmNDBiNGE2ZTJkZjlmY2Q4NGQy
MmY5MjU2MGM5YjM3Li41MjVkNzNkNDVjODM5YzY0ODQzODRmNTMwODA5OGE0NWFhYjczNDRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC00Myw2ICs0Myw3IEBAIGNsYXNzIENDU2NvcGVk
VGhyZWFkUHJveHk7CiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgQ0NUaHJlYWQ7CiBj
bGFzcyBDQ1RocmVhZFByb3h5Q29udGV4dFJlY3JlYXRpb25UaW1lcjsKK2NsYXNzIENDVGhyZWFk
UHJveHlUZXh0dXJlVXBkYXRlVGltZXI7CiAKIGNsYXNzIENDVGhyZWFkUHJveHkgOiBwdWJsaWMg
Q0NQcm94eSwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCwgQ0NTY2hlZHVsZXJDbGllbnQgewog
cHVibGljOgpAQCAtODEsNiArODIsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0NTY2hlZHVsZXJDbGll
bnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIGJvb2wgY2FuRHJhdygpOwogICAgIHZpcnR1
YWwgYm9vbCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkgY29uc3Q7CisgICAgdmlydHVhbCBkb3Vi
bGUgbWF4UmVzb3VyY2VVcGRhdGVUaW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVk
dWxlZEFjdGlvbkJlZ2luRnJhbWUoKTsKICAgICB2aXJ0dWFsIENDU2NoZWR1bGVkQWN0aW9uRHJh
d0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJZlBvc3NpYmxlKCk7CiAg
ICAgdmlydHVhbCBDQ1NjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IHNjaGVkdWxlZEFj
dGlvbkRyYXdBbmRTd2FwRm9yY2VkKCk7CkBAIC05MSw2ICs5Myw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgQ0NUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqKTsKICAgICBm
cmllbmQgY2xhc3MgQ0NUaHJlYWRQcm94eUNvbnRleHRSZWNyZWF0aW9uVGltZXI7CisgICAgZnJp
ZW5kIGNsYXNzIENDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGltZXI7CiAKICAgICAvLyBTZXQg
b24gaW1wbCB0aHJlYWQsIHJlYWQgb24gbWFpbiB0aHJlYWQuCiAgICAgc3RydWN0IEJlZ2luRnJh
bWVBbmRDb21taXRTdGF0ZSB7CkBAIC0xMjgsNiArMTMxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldEZ1bGxSb290TGF5ZXJEYW1hZ2VPbkltcGxUaHJlYWQoKTsKICAgICB2b2lkIHJlY3JlYXRl
Q29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIEdyYXBoaWNzQ29udGV4dDNE
KiwgYm9vbCogcmVjcmVhdGVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMqKTsK
ICAgICBDQ1NjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IHNjaGVkdWxlZEFjdGlvbkRy
YXdBbmRTd2FwSW50ZXJuYWwoYm9vbCBmb3JjZWREcmF3KTsKKyAgICB2b2lkIHRleHR1cmVVcGRh
dGVDb21wbGV0ZU9uSW1wbFRocmVhZCgpOwogCiAgICAgLy8gQWNjZXNzZWQgb24gbWFpbiB0aHJl
YWQgb25seS4KICAgICBib29sIG1fYW5pbWF0ZVJlcXVlc3RlZDsKQEAgLTE0OSw2ICsxNTMsOCBA
QCBwcml2YXRlOgogCiAgICAgUmVmUHRyPENDU2NvcGVkVGhyZWFkUHJveHk+IG1fbWFpblRocmVh
ZFByb3h5OwogCisgICAgT3duUHRyPENDVGV4dHVyZVVwZGF0ZXI+IG1fdGV4dHVyZVVwZGF0ZXJP
bkltcGxUaHJlYWQ7CisKICAgICAvLyBIb2xkcyBvbiB0byB0aGUgR3JhcGhpY3NDb250ZXh0M0Qg
d2UgbWlnaHQgdXNlIGZvciBjb21wb3NpdGluZyBpbiBiZXR3ZWVuIGluaXRpYWxpemVDb250ZXh0
KCkKICAgICAvLyBhbmQgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKSBjYWxscy4KICAgICBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uT25JbXBs
VGhyZWFkOwpAQCAtMTY0LDcgKzE3MCw2IEBAIHByaXZhdGU6CiAKICAgICAvLyBTZXQgd2hlbiB0
aGUgbWFpbiB0aHJlYWQgaXMgd2FpdGluZyBvbiBhIGNvbW1pdCB0byBjb21wbGV0ZS4KICAgICBD
Q0NvbXBsZXRpb25FdmVudCogbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQ7Ci0g
ICAgT3duUHRyPENDVGV4dHVyZVVwZGF0ZXI+IG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBs
VGhyZWFkOwogCiAgICAgLy8gU2V0IHdoZW4gdGhlIG5leHQgZHJhdyBzaG91bGQgcG9zdCBkaWRD
b21taXRBbmREcmF3RnJhbWUgdG8gdGhlIG1haW4gdGhyZWFkLgogICAgIGJvb2wgbV9uZXh0RnJh
bWVJc05ld2x5Q29tbWl0dGVkRnJhbWVPbkltcGxUaHJlYWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbWVTb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZVNvdXJjZS5o
CmluZGV4IGRjY2I0NzBhNjM4M2UzMDRkYjExNmE1YjlkZjkxZGU1NjA2OGUwODUuLmMzNjRkOTJi
ZDAyOGEyMmZmYThhMmE4N2ZjMTkzMGI1OGRlZjhlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZVNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZVNvdXJjZS5o
CkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KEND
VGltZVNvdXJjZUNsaWVudCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wp
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgYWN0aXZlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
ZG91YmxlIG5leHRUaWNrVGltZSgpIGNvbnN0ID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LmNwcAppbmRleCBlNGE1ZDdjOTU5NDRiOTRkNjUzYzE0MTE5NTZiOWMyOWNjZWQ0NmJmLi5m
ZjJkODA3YWMwYzM3NDIyMDc2MjlmOWU2OTg5ZDQ1MGU2MThhN2NkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZVRlc3QuY3BwCkBAIC0xOTcsNyArMTk3LDggQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZVRlc3QsIFRlc3RDb21taXRBZnRlckZhaWxlZERyYXdBbGxvd3NEcmF3SW5TYW1lRnJhbWUKICAg
ICBFWFBFQ1RfVFJVRShzdGF0ZS5jb21taXRQZW5kaW5nKCkpOwogCiAgICAgLy8gRmluaXNoIHRo
ZSBjb21taXQuCi0gICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgc3RhdGUuYmVn
aW5GcmFtZUNvbXBsZXRlKHRydWUpOworICAgIHN0YXRlLnNldENhblVwZGF0ZU1vcmVSZXNvdXJj
ZXModHJ1ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
QkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0
YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBE
QVRFX01PUkVfUkVTT1VSQ0VTKTsKICAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXND
b21wbGV0ZShmYWxzZSk7CkBAIC0yNDcsNyArMjQ4LDggQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QsIFRlc3RDb21taXRBZnRlckZhaWxlZEFuZFN1Y2Nlc3NmdWxEcmF3RG9lc05v
dEEKICAgICBFWFBFQ1RfVFJVRShzdGF0ZS5jb21taXRQZW5kaW5nKCkpOwogCiAgICAgLy8gRmlu
aXNoIHRoZSBjb21taXQuCi0gICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgc3Rh
dGUuYmVnaW5GcmFtZUNvbXBsZXRlKHRydWUpOworICAgIHN0YXRlLnNldENhblVwZGF0ZU1vcmVS
ZXNvdXJjZXModHJ1ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwog
ICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVH
SU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKICAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNv
dXJjZXNDb21wbGV0ZShmYWxzZSk7CkBAIC00NjEsNiArNDYzLDcgQEAgVEVTVChDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVz
KQogICAgIHN0YXRlLnNldENvbW1pdFN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01N
SVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTKTsKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyhm
YWxzZSk7CiAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwor
ICAgIHN0YXRlLnNldENhblVwZGF0ZU1vcmVSZXNvdXJjZXModHJ1ZSk7CiAgICAgc3RhdGUuc2V0
VmlzaWJsZSh0cnVlKTsKIAogICAgIC8vIFZlcmlmeSB3ZSBiZWdpbiB1cGRhdGUsIGJvdGggZm9y
IHZzeW5jIGFuZCBub3QgdnN5bmMuCkBAIC00ODksNiArNDkyLDcgQEAgVEVTVChDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X1R3b1JvdW5kc09mVXBkYXRl
cykKICAgICBzdGF0ZS5zZXRDb21taXRTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09N
TUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUyk7CiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXco
ZmFsc2UpOwogICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsK
KyAgICBzdGF0ZS5zZXRDYW5VcGRhdGVNb3JlUmVzb3VyY2VzKHRydWUpOwogICAgIHN0YXRlLnNl
dFZpc2libGUodHJ1ZSk7CiAKICAgICAvLyBWZXJpZnkgdGhlIHVwZGF0ZSBiZWdpbnMsIGJvdGgg
Zm9yIHZzeW5jIGFuZCBub3QgdnN5bmMuCkBAIC01NDUsNiArNTQ5LDcgQEAgVEVTVChDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX1dpdGhSZWRyYXdfT25lUm91bmRPZlVw
ZGF0ZXMpCiAgICAgc3RhdGUuc2V0Q29tbWl0U3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMpOwogICAgIHN0YXRlLnNldE5lZWRzUmVk
cmF3KHRydWUpOwogICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNl
KTsKKyAgICBzdGF0ZS5zZXRDYW5VcGRhdGVNb3JlUmVzb3VyY2VzKHRydWUpOwogICAgIHN0YXRl
LnNldFZpc2libGUodHJ1ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OwogCkBAIC02MDMsNyArNjA4LDggQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3RTZXROZWVkc0NvbW1pdElzTm90TG9zdCkKICAgICBFWFBFQ1RfVFJVRShzdGF0ZS5uZWVk
c0NvbW1pdCgpKTsKIAogICAgIC8vIExldCB0aGUgZnJhbWUgZmluaXNoLgotICAgIHN0YXRlLmJl
Z2luRnJhbWVDb21wbGV0ZSgpOworICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSh0cnVlKTsK
KyAgICBzdGF0ZS5zZXRDYW5VcGRhdGVNb3JlUmVzb3VyY2VzKHRydWUpOwogICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNF
Uywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKQEAgLTY0NSw3ICs2NTEsOCBAQCBU
RVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZSkKICAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOwogCiAgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4K
LSAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBzdGF0ZS5iZWdpbkZyYW1lQ29t
cGxldGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuVXBkYXRlTW9yZVJlc291cmNlcyh0cnVlKTsK
ICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERB
VElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywg
c3RhdGUubmV4dEFjdGlvbigpKTsKIApAQCAtNjk2LDcgKzcwMyw4IEBAIFRFU1QoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlV2l0aENvbW1pdFJlcXVlc3RJbmJldHdl
ZW4pCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwg
c3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgZnJh
bWUgZmluaXNoZWQuCi0gICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgc3RhdGUu
YmVnaW5GcmFtZUNvbXBsZXRlKHRydWUpOworICAgIHN0YXRlLnNldENhblVwZGF0ZU1vcmVSZXNv
dXJjZXModHJ1ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01N
SVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9S
RV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAgLTc1Myw3ICs3NjEsOCBAQCBU
RVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEdvZXNJbnZpc2libGVNaWRDb21t
aXQpCiAgICAgc3RhdGUuc2V0VmlzaWJsZShmYWxzZSk7CiAKICAgICAvLyBUZWxsIHRoZSBzY2hl
ZHVsZXIgdGhlIGZyYW1lIGZpbmlzaGVkCi0gICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7
CisgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKHRydWUpOworICAgIHN0YXRlLnNldENhblVw
ZGF0ZU1vcmVSZXNvdXJjZXModHJ1ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0
ZSgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJ
Tl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAgLTg2MCw3
ICs4NjksOCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdENvbnRleHRM
b3N0V2hpbGVDb21taXRJblByb2dyZXNzKQogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBGaW5p
c2ggdGhlIGZyYW1lLCB1cGRhdGUgcmVzb3VyY2VzLCBhbmQgY29tbWl0LgotICAgIHN0YXRlLmJl
Z2luRnJhbWVDb21wbGV0ZSgpOworICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSh0cnVlKTsK
KyAgICBzdGF0ZS5zZXRDYW5VcGRhdGVNb3JlUmVzb3VyY2VzKHRydWUpOwogICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09V
UkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5u
ZXh0QWN0aW9uKCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CkBAIC05MDQsNyArOTE0LDggQEAgVEVTVChD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RDb250ZXh0TG9zdFdoaWxlQ29tbWl0SW5Q
cm9ncmVzc0FuZEFub3RoZXIKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gRmluaXNoIHRoZSBm
cmFtZSwgdXBkYXRlIHJlc291cmNlcywgYW5kIGNvbW1pdC4KLSAgICBzdGF0ZS5iZWdpbkZyYW1l
Q29tcGxldGUoKTsKKyAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUodHJ1ZSk7CisgICAgc3Rh
dGUuc2V0Q2FuVXBkYXRlTW9yZVJlc291cmNlcyh0cnVlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0
YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUudXBkYXRlU3RhdGUoc3RhdGUubmV4dEFjdGlv
bigpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05F
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwpAQCAtOTcwLDcgKzk4MSw4IEBAIFRFU1QoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0QmVnaW5GcmFtZVdoZW5Db21taXRJblByb2dyZXNzKQog
ICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwogICAgIHN0YXRlLnNldE5lZWRzRm9yY2Vk
Q29tbWl0KHRydWUpOwogCi0gICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgc3Rh
dGUuYmVnaW5GcmFtZUNvbXBsZXRlKHRydWUpOworICAgIHN0YXRlLnNldENhblVwZGF0ZU1vcmVS
ZXNvdXJjZXModHJ1ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwog
ICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigp
KTsKQEAgLTk5Myw0ICsxMDA1LDUyIEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0QmVnaW5GcmFtZVdoZW5Db250ZXh0TG9zdCkKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsK
IH0KIAorVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RDYW5VcGRhdGVNb3Jl
UmVzb3VyY2VzKQoreworICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNp
YmxlKHRydWUpOworICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOworCisgICAgLy8gU3Rh
cnQgY2xlYW4gYW5kIHNldCBjb21taXQuCisgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7
CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJB
TUUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBCZWdpbiB0aGUgZnJhbWUuCisgICAg
c3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9G
UkFNRSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RB
VEVfRlJBTUVfSU5fUFJPR1JFU1MsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9G
QUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gVGVs
bCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KKyAgICBzdGF0ZS5iZWdpbkZyYW1l
Q29tcGxldGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0Q2FuVXBkYXRlTW9yZVJlc291cmNlcyh0cnVl
KTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9V
UERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNF
Uywgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUg
dXBkYXRlIGJlZ2FuIGFuZCBmaW5pc2hlZC4KKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7Cisg
ICAgc3RhdGUuc2V0Q2FuVXBkYXRlTW9yZVJlc291cmNlcyhmYWxzZSk7CisgICAgc3RhdGUuYmVn
aW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUodHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0
ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gQXQgdnN5bmMsIGRy
YXcuCisgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lCTEUsIHN0YXRlLm5leHRBY3Rpb24o
KSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9EUkFXX0lGX1BPU1NJQkxFKTsKKyAgICBzdGF0ZS5kaWREcmF3SWZQb3NzaWJsZUNvbXBsZXRl
ZCh0cnVlKTsKKyAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CisKKyAgICAvLyBUZWxsIHRoZSBz
Y2hlZHVsZXIgdGhhdCB3ZSBjYW4gdXBkYXRlIG1vcmUgcmVzb3VyY2VzLgorICAgIHN0YXRlLnNl
dENhblVwZGF0ZU1vcmVSZXNvdXJjZXModHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21t
aXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAg
ICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHNlY29uZCB1cGRhdGUgYmVnYW4gYW5kIGZpbmlz
aGVkCisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOworICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9y
ZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRl
KCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1J
VCwgc3RhdGUubmV4dEFjdGlvbigpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCmluZGV4IGM4Njc3ZjExOGFlMGM2MDhmOWQ3
MTc0MzllNTc1ZGRhYWYyODUwZjcuLjlmN2ZmMTNmOTA1NGZkMTI3NjZmMWY3MjI2YjliNDBjNDhk
MDQyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVs
ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVy
VGVzdC5jcHAKQEAgLTQ4LDEwICs0OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fZHJhd1dpbGxI
YXBwZW4gPSB0cnVlOwogICAgICAgICBtX3N3YXBXaWxsSGFwcGVuSWZEcmF3SGFwcGVucyA9IHRy
dWU7CiAgICAgICAgIG1fbnVtRHJhd3MgPSAwOworICAgICAgICBtX21heFJlc291cmNlVXBkYXRl
VGltZSA9IDA7CiAgICAgfQogCiAgICAgdm9pZCBzZXRIYXNNb3JlUmVzb3VyY2VVcGRhdGVzKGJv
b2wgYikgeyBtX2hhc01vcmVSZXNvdXJjZVVwZGF0ZXMgPSBiOyB9CiAgICAgdm9pZCBzZXRDYW5E
cmF3KGJvb2wgYikgeyBtX2NhbkRyYXcgPSBiOyB9CisgICAgdm9pZCBzZXRNYXhSZXNvdXJjZVVw
ZGF0ZVRpbWUoZG91YmxlIHQpIHsgbV9tYXhSZXNvdXJjZVVwZGF0ZVRpbWUgPSB0OyB9CiAKICAg
ICBpbnQgbnVtRHJhd3MoKSBjb25zdCB7IHJldHVybiBtX251bURyYXdzOyB9CiAgICAgaW50IG51
bUFjdGlvbnMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KG1fYWN0aW9ucy5zaXpl
KCkpOyB9CkBAIC02Nyw2ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5E
cmF3KCkgeyByZXR1cm4gbV9jYW5EcmF3OyB9CiAgICAgdmlydHVhbCBib29sIGhhc01vcmVSZXNv
dXJjZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVybiBtX2hhc01vcmVSZXNvdXJjZVVwZGF0ZXM7IH0K
KyAgICB2aXJ0dWFsIGRvdWJsZSBtYXhSZXNvdXJjZVVwZGF0ZVRpbWUoKSBjb25zdCB7IHJldHVy
biBtX21heFJlc291cmNlVXBkYXRlVGltZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRB
Y3Rpb25CZWdpbkZyYW1lKCkgeyBtX2FjdGlvbnMucHVzaF9iYWNrKCJzY2hlZHVsZWRBY3Rpb25C
ZWdpbkZyYW1lIik7IH0KICAgICB2aXJ0dWFsIENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBS
ZXN1bHQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJZlBvc3NpYmxlKCkKICAgICB7CkBAIC05
Myw2ICs5Niw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1fY2FuRHJhdzsKICAgICBib29sIG1f
ZHJhd1dpbGxIYXBwZW47CiAgICAgYm9vbCBtX3N3YXBXaWxsSGFwcGVuSWZEcmF3SGFwcGVuczsK
KyAgICBkb3VibGUgbV9tYXhSZXNvdXJjZVVwZGF0ZVRpbWU7CiAgICAgaW50IG1fbnVtRHJhd3M7
CiAgICAgc3RkOjp2ZWN0b3I8Y29uc3QgY2hhcio+IG1fYWN0aW9uczsKIH07CkBAIC0xMTIsMTIg
KzExNiwxMCBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1pdCkKICAgICBjbGll
bnQucmVzZXQoKTsKIAogICAgIC8vIFNpbmNlLCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzIGlzIHNl
dCB0byBmYWxzZSwKLSAgICAvLyBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIHVwZGF0ZU1vcmVS
ZXNvdXJjZXMsIHRoZW4KLSAgICAvLyBjb21taXQKKyAgICAvLyBiZWdpbkZyYW1lQ29tcGxldGUg
c2hvdWxkIGp1c3QgY29tbWl0CiAgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29tcGxldGUoKTsK
LSAgICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm51bUFjdGlvbnMoKSk7Ci0gICAgRVhQRUNUX1NUUkVR
KCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50LmFjdGlvbigwKSk7
Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9u
KDEpKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNU
X1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9uKDApKTsKICAgICBF
WFBFQ1RfVFJVRSh0aW1lU291cmNlLT5hY3RpdmUoKSk7CiAgICAgY2xpZW50LnJlc2V0KCk7CiAK
QEAgLTE0OSwxMiArMTUxLDEwIEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0Q29tbWl0
QWZ0ZXJCZWdpbkZyYW1lKQogICAgIHNjaGVkdWxlci0+c2V0TmVlZHNDb21taXQoKTsKIAogICAg
IC8vIFNpbmNlLCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzIGlzIHNldCB0byBmYWxzZSwgYW5kIGFu
b3RoZXIgY29tbWl0IGlzCi0gICAgLy8gbmVlZGVkLCBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxk
IHVwZGF0ZU1vcmVSZXNvdXJjZXMsIHRoZW4gY29tbWl0LCB0aGVuCi0gICAgLy8gYmVnaW4gYW5v
dGhlciBmcmFtZS4KKyAgICAvLyBuZWVkZWQsIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQgY29t
bWl0LCB0aGVuIGJlZ2luIGFub3RoZXIgZnJhbWUuCiAgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1l
Q29tcGxldGUoKTsKLSAgICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm51bUFjdGlvbnMoKSk7Ci0gICAg
RVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50
LmFjdGlvbigwKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBj
bGllbnQuYWN0aW9uKDEpKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7
CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9u
KDApKTsKICAgICBjbGllbnQucmVzZXQoKTsKIAogICAgIC8vIFRpY2sgc2hvdWxkIGRyYXcgYnV0
IHRoZW4gYmVnaW4gYW5vdGhlciBmcmFtZS4KQEAgLTQzMCw0ICs0MzAsNjggQEAgVEVTVChDQ1Nj
aGVkdWxlclRlc3QsIE5vQmVnaW5GcmFtZVdoZW5Td2FwRmFpbHNEdXJpbmdGb3JjZWRDb21taXQp
CiAgICAgRVhQRUNUX0VRKDAsIGNvbnRyb2xsZXJQdHItPm51bUZyYW1lc1BlbmRpbmcoKSk7CiB9
CiAKK1RFU1QoQ0NTY2hlZHVsZXJUZXN0LCBVcGRhdGVNb3JlUmVzb3VyY2VzKQoreworICAgIEZh
a2VDQ1NjaGVkdWxlckNsaWVudCBjbGllbnQ7CisgICAgUmVmUHRyPEZha2VDQ1RpbWVTb3VyY2U+
IHRpbWVTb3VyY2UgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGltZVNvdXJjZSgpKTsKKyAgICBPd25Q
dHI8Q0NTY2hlZHVsZXI+IHNjaGVkdWxlciA9IENDU2NoZWR1bGVyOjpjcmVhdGUoJmNsaWVudCwg
YWRvcHRQdHIobmV3IENDRnJhbWVSYXRlQ29udHJvbGxlcih0aW1lU291cmNlKSkpOworICAgIHNj
aGVkdWxlci0+c2V0VmlzaWJsZSh0cnVlKTsKKworICAgIC8vIFNldE5lZWRzQ29tbWl0IHNob3Vs
ZCBiZWdpbiB0aGUgZnJhbWUuCisgICAgc2NoZWR1bGVyLT5zZXROZWVkc0NvbW1pdCgpOworICAg
IEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNj
aGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBjbGllbnQu
cmVzZXQoKTsKKworICAgIC8vIFNpbmNlLCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzIGlzIHNldCB0
byB0cnVlLCBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkCisgICAgLy8gdXBkYXRlTW9yZVJlc291
cmNlcy4KKyAgICBjbGllbnQuc2V0SGFzTW9yZVJlc291cmNlVXBkYXRlcyh0cnVlKTsKKyAgICBz
Y2hlZHVsZXItPmJlZ2luRnJhbWVDb21wbGV0ZSgpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQu
bnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1v
cmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKwor
ICAgIGNsaWVudC5zZXRIYXNNb3JlUmVzb3VyY2VVcGRhdGVzKHRydWUpOworICAgIHNjaGVkdWxl
ci0+ZGlkVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKDEsIGNs
aWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uVXBk
YXRlTW9yZVJlc291cmNlcyIsIGNsaWVudC5hY3Rpb24oMCkpOworICAgIGNsaWVudC5yZXNldCgp
OworCisgICAgLy8gU2luY2UsIFNldE5lZWRSZWRyYXcgaXMgc2V0IHRvIHRydWUsIHJlc291cmNl
IHVwZGF0ZXMgc2hvdWxkIGJlCisgICAgLy8gYXZvaWRlZCBhcyB3ZSBnZXQgY2xvc2UgdG8gdGhl
IG5leHQgdGljayB0aW1lLgorICAgIHNjaGVkdWxlci0+c2V0TmVlZHNSZWRyYXcoKTsKKyAgICBF
WFBFQ1RfVFJVRShzY2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7CisgICAgRVhQRUNUX1RSVUUo
dGltZVNvdXJjZS0+YWN0aXZlKCkpOworICAgIEVYUEVDVF9FUSgwLCBjbGllbnQubnVtRHJhd3Mo
KSk7CisKKyAgICAvLyBTaW5jZSwgbWF4UmVzb3VyY2VVcGRhdGVUaW1lIGlzIDUgc2Vjb25kcyBh
bmQgbmV4dFRpY2tUaW1lIGlzIDEKKyAgICAvLyBzZWNvbmQgYXdheSwgZGlkVXBkYXRlTW9yZVJl
c291cmNlc0NvbXBsZXRlIHNob3VsZCBub3QgYmVnaW4gYW5vdGhlcgorICAgIC8vIHVwZGF0ZS4K
KyAgICBjbGllbnQuc2V0SGFzTW9yZVJlc291cmNlVXBkYXRlcyh0cnVlKTsKKyAgICBjbGllbnQu
c2V0TWF4UmVzb3VyY2VVcGRhdGVUaW1lKDUpOworICAgIHRpbWVTb3VyY2UtPnNldE5leHRUaWNr
VGltZShtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSArIDEpOworICAgIHNjaGVkdWxlci0+
ZGlkVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKDAsIGNsaWVu
dC5udW1BY3Rpb25zKCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8gU2luY2UsIG1h
eFJlc291cmNlVXBkYXRlVGltZSBpcyA1IHNlY29uZHMgYW5kIG5leHRUaWNrVGltZSBpcyAxMAor
ICAgIC8vIHNlY29uZHMgYXdheSwgZGlkVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlIHNob3Vs
ZCBiZWdpbiBhbm90aGVyCisgICAgLy8gdXBkYXRlLgorICAgIGNsaWVudC5zZXRIYXNNb3JlUmVz
b3VyY2VVcGRhdGVzKHRydWUpOworICAgIGNsaWVudC5zZXRNYXhSZXNvdXJjZVVwZGF0ZVRpbWUo
NSk7CisgICAgdGltZVNvdXJjZS0+c2V0TmV4dFRpY2tUaW1lKG1vbm90b25pY2FsbHlJbmNyZWFz
aW5nVGltZSgpICsgMTApOworICAgIHNjaGVkdWxlci0+ZGlkVXBkYXRlTW9yZVJlc291cmNlc0Nv
bXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVY
UEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIGNsaWVudC5h
Y3Rpb24oMCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8gU2luY2UsIGhhc01vcmVS
ZXNvdXJjZVVwZGF0ZXMgaXMgc2V0IHRvIGZhbHNlLAorICAgIC8vIGRpZFVwZGF0ZU1vcmVSZXNv
dXJjZXNDb21wbGV0ZSBzaG91bGQgY29tbWl0LgorICAgIGNsaWVudC5zZXRIYXNNb3JlUmVzb3Vy
Y2VVcGRhdGVzKGZhbHNlKTsKKyAgICBzY2hlZHVsZXItPmRpZFVwZGF0ZU1vcmVSZXNvdXJjZXND
b21wbGV0ZSgpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBF
WFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24oMCkpOwor
ICAgIGNsaWVudC5yZXNldCgpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdENvbW1vbi5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3RDb21tb24uaAppbmRleCAwYzEwNTU4OGIxNDJmNzYx
OTM3MjJlNjI4OGUxOTg5NjUzYTk0OTg0Li4xN2U5YWRiMWIzZTFkNzlkYjA0NzU1NWI2Zjc0MDU1
MTA1ZTczOGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2No
ZWR1bGVyVGVzdENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NT
Y2hlZHVsZXJUZXN0Q29tbW9uLmgKQEAgLTg2LDYgKzg2LDcgQEAgY2xhc3MgRmFrZUNDVGltZVNv
dXJjZSA6IHB1YmxpYyBXZWJDb3JlOjpDQ1RpbWVTb3VyY2UgewogcHVibGljOgogICAgIEZha2VD
Q1RpbWVTb3VyY2UoKQogICAgICAgICA6IG1fYWN0aXZlKGZhbHNlKQorICAgICAgICAsIG1fbmV4
dFRpY2tUaW1lKDApCiAgICAgICAgICwgbV9jbGllbnQoMCkgeyB9CiAKICAgICB2aXJ0dWFsIH5G
YWtlQ0NUaW1lU291cmNlKCkgeyB9CkBAIC05Myw2ICs5NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc2V0Q2xpZW50KFdlYkNvcmU6OkNDVGltZVNvdXJjZUNsaWVudCogY2xpZW50KSB7
IG1fY2xpZW50ID0gY2xpZW50OyB9CiAgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sIGIp
IHsgbV9hY3RpdmUgPSBiOyB9CiAgICAgdmlydHVhbCBib29sIGFjdGl2ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYWN0aXZlOyB9CisgICAgdmlydHVhbCBkb3VibGUgbmV4dFRpY2tUaW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9uZXh0VGlja1RpbWU7IH0KIAogICAgIHZvaWQgdGljaygpCiAgICAgewpAQCAt
MTAxLDggKzEwMywxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2NsaWVudC0+b25UaW1lclRp
Y2soKTsKICAgICB9CiAKKyAgICB2b2lkIHNldE5leHRUaWNrVGltZShkb3VibGUgbmV4dFRpY2tU
aW1lKSB7IG1fbmV4dFRpY2tUaW1lID0gbmV4dFRpY2tUaW1lOyB9CisKIHByb3RlY3RlZDoKICAg
ICBib29sIG1fYWN0aXZlOworICAgIGRvdWJsZSBtX25leHRUaWNrVGltZTsKICAgICBXZWJDb3Jl
OjpDQ1RpbWVTb3VyY2VDbGllbnQqIG1fY2xpZW50OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaAppbmRleCBlZmI4
YWU4NWNhYzZlZWUxZDU3YjViMDhjZjRiOWNjNjBjNGIxZDZjLi4xNzMyODAwMDRlMDFiY2M3NjAx
ZTM2ZmYxYjY0ZDlhMzFlY2Q0MTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaApAQCAtMjUsNiArMjUsNyBAQAogI2lm
bmRlZiBDQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uX2gKICNkZWZpbmUgQ0NUaWxlZExheWVyVGVzdENv
bW1vbl9oCiAKKyNpbmNsdWRlICJGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJ
bnRTaXplLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxl
ZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCAxNTBkNjVkNTk4ZjgzMWI0ZjNhYzgxZDBiZDg3
ZTE3ZDY4NTQ0NjJhLi4wMGFmMzhiYjE0NzVlMDcyMmRhZWVlODdmM2VlMWIxMjlhMjA4Mjc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNo
cm9taXVtVGVzdC5jcHAKQEAgLTI3OSw3ICsyNzksNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFpbGVkKQogICAgIC8vIENvbW1pdCB0aGUg
ZnJhbWUgb3ZlciB0byBpbXBsLgogICAgIGxheWVyMS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cygwLCB1cGRhdGVyKTsKICAgICBsYXllcjItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwg
dXBkYXRlcik7Ci0gICAgdXBkYXRlci51cGRhdGUoMCwgNTAwMCk7CisgICAgdXBkYXRlci51cGRh
dGUoNTAwMCk7CiAgICAgbGF5ZXIxLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbDEuZ2V0KCkp
OwogICAgIGxheWVyMi0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwyLmdldCgpKTsKIApAQCAt
MjkwLDcgKzI5MCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzQWZ0
ZXJJZGxlUGFpbnRGYWlsZWQpCiAgICAgLy8gT2ggd2VsbCwgY29tbWl0IHRoZSBmcmFtZSBhbmQg
cHVzaC4KICAgICBsYXllcjEtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7
CiAgICAgbGF5ZXIyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwotICAg
IHVwZGF0ZXIudXBkYXRlKDAsIDUwMDApOworICAgIHVwZGF0ZXIudXBkYXRlKDUwMDApOwogICAg
IGxheWVyMS0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwxLmdldCgpKTsKICAgICBsYXllcjIt
PnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsMi5nZXQoKSk7CiAKQEAgLTMxMSw3ICszMTEsNyBA
QCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFp
bGVkKQogCiAgICAgbGF5ZXIxLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIp
OwogICAgIGxheWVyMi0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKLSAg
ICB1cGRhdGVyLnVwZGF0ZSgwLCA1MDAwKTsKKyAgICB1cGRhdGVyLnVwZGF0ZSg1MDAwKTsKICAg
ICBsYXllcjEtPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsMS5nZXQoKSk7CiAgICAgbGF5ZXIy
LT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbDIuZ2V0KCkpOwogCkBAIC05MjEsMTEgKzkyMSwx
MSBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQogICAgIC8v
IEZ1bGwgdXBkYXRlIG9mIGFsbCA2IHRpbGVzLgogICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRl
TGF5ZXJzKCk7CiAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KGNjTGF5ZXJUcmVlSG9zdC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKLSAgICB1cGRhdGVyLnVwZGF0
ZSgwLCA0KTsKKyAgICB1cGRhdGVyLnVwZGF0ZSg0KTsKICAgICBFWFBFQ1RfRVEoNCwgbGF5ZXIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAgIEVYUEVDVF9U
UlVFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKLSAgICB1cGRhdGVyLnVwZGF0ZSgwLCA0
KTsKKyAgICB1cGRhdGVyLnVwZGF0ZSg0KTsKICAgICBFWFBFQ1RfRVEoMiwgbGF5ZXItPmZha2VM
YXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAgIEVYUEVDVF9GQUxTRSh1
cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CkBAIC05MzUsMTEgKzkzNSwxMSBAQCBURVNUKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQogICAgIGxheWVyLT5pbnZhbGlk
YXRlUmVjdChJbnRSZWN0KDAsIDAsIDMwMCwgMTUwKSk7CiAgICAgY2NMYXllclRyZWVIb3N0LT51
cGRhdGVMYXllcnMoKTsKICAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoY2NMYXllclRyZWVIb3N0LT5jb250ZXh0KCksIHVwZGF0ZXIpOwotICAgIHVwZGF0ZXIu
dXBkYXRlKDAsIDQpOworICAgIHVwZGF0ZXIudXBkYXRlKDQpOwogICAgIEVYUEVDVF9FUSgzLCBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAgICAgRVhQ
RUNUX1RSVUUodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKICAgICBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwotICAgIHVwZGF0ZXIudXBkYXRl
KDAsIDQpOworICAgIHVwZGF0ZXIudXBkYXRlKDQpOwogICAgIEVYUEVDVF9FUSgzLCBsYXllci0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAgICAgRVhQRUNUX0ZB
TFNFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKQEAgLTk0OSwxMSArOTQ5LDExIEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAgICAgbGF5ZXItPmlu
dmFsaWRhdGVSZWN0KEludFJlY3QoNTAsIDUwLCAyMDAsIDEwMCkpOwogICAgIGNjTGF5ZXJUcmVl
SG9zdC0+dXBkYXRlTGF5ZXJzKCk7CiAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKGNjTGF5ZXJUcmVlSG9zdC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKLSAgICB1
cGRhdGVyLnVwZGF0ZSgwLCA0KTsKKyAgICB1cGRhdGVyLnVwZGF0ZSg0KTsKICAgICBFWFBFQ1Rf
RVEoMiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwog
ICAgIEVYUEVDVF9UUlVFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgbGF5ZXItPmZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKLSAgICB1cGRhdGVy
LnVwZGF0ZSgwLCA0KTsKKyAgICB1cGRhdGVyLnVwZGF0ZSg0KTsKICAgICBFWFBFQ1RfRVEoNCwg
bGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAgIEVY
UEVDVF9GQUxTRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogICAgIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135169</attachid>
            <date>2012-04-02 13:30:37 -0700</date>
            <delta_ts>2012-04-02 13:53:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81004-20120402163017.patch</filename>
            <type>text/plain</type>
            <size>86006</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzEyMWM2MTljZGMwOTdj
ZmNlNmI3ZDBhNDEwNGQ4MDU2YTIxMDU1Yi4uYzA1ZDBjYjI3ZDc1NmI3OWY3OTM0MDZkYjQzYmFk
NjEyNDk0ZDI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAxMi0wNC0wMiAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
VXNlIEdMX0NIUk9NSVVNX2NvbW1hbmRfYnVmZmVyX3F1ZXJ5IHRvIHRocm90dGxlIGluY3JlbWVu
dGFsIHRleHR1cmUgdXBkYXRlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgxMDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSGF2ZSB0aHJlYWRlZCBjb21wb3NpdG9yIHVzZSBHTF9DSFJPTUlVTV9jb21t
YW5kX2J1ZmZlcl9xdWVyeSB0bworICAgICAgICB0aHJvdHRsZSB0ZXh0dXJlIHVwZGF0ZXMgYmFz
ZWQgb24gbnVtYmVyIG9mIGN1cnJlbnRseSBwZW5kaW5nCisgICAgICAgIHF1ZXJpZXMgYW5kIHRp
bWUgdW50aWwgbmV4dCB2c3luYy4KKworICAgICAgICBVbml0IHRlc3Q6IENDU2NoZWR1bGVyVGVz
dC5VcGRhdGVNb3JlUmVzb3VyY2VzCisgICAgICAgICAgICAgICAgICAgQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmVUZXN0LlRlc3RDYW5VcGRhdGVNb3JlUmVzb3VyY2VzCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVy
Q2hyb21pdW0uaDoKKyAgICAgICAgKENhbnZhczJETGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXll
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vV2ViR0xMYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJHTExheWVyQ2hyb21pdW0p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRp
bWVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWxheUJhc2VkVGltZVNvdXJjZTo6
bmV4dFRpY2tUaW1lKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaDoKKyAgICAgICAgKEND
RGVsYXlCYXNlZFRpbWVTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0Zy
YW1lUmF0ZUNvbnRyb2xsZXI6Om5leHRUaWNrVGltZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKENDRnJhbWVSYXRlQ29udHJvbGxlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6Cisg
ICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVy
OjpkaWRVcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
Y2hlZHVsZXI6OnZzeW5jVGljayk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6bmV4
dEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxl
ZEFjdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyLmg6CisgICAgICAgIChDQ1NjaGVkdWxlckNsaWVudCk6CisgICAgICAgIChDQ1NjaGVk
dWxlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpzaG91bGRVcGRhdGVNb3JlUmVzb3VyY2VzKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5l
eHRBY3Rpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lLmg6CisgICAgICAgIChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0Q2FuVXBkYXRl
TW9yZVJlc291cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVh
ZFByb3h5Ojpkb0NvbW1pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChzdGQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUZXh0dXJlVXBkYXRlcjo6UXVlcnk6OlF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6UXVlcnk6On5RdWVyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjpRdWVyeTo6c3RhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6UXVlcnk6OmlzUGVuZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6Om1heFRleHR1cmVVcGRhdGVUaW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RleHR1cmVVcGRhdGVyOjpwcm9jZXNzUXVlcmllcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjpR
dWVyeTo6Y3JlYXRlKToKKyAgICAgICAgKENDVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6Y29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXVEYpOgorICAg
ICAgICAoQ0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVUaW1lcik6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RocmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRpbWVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVUaW1lcjo6b25UaW1lckZpcmVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGltZXI6OkNDVGhyZWFk
UHJveHlUZXh0dXJlVXBkYXRlVGltZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aGFzTW9yZVJlc291cmNlVXBkYXRlcyk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjptYXhSZXNvdXJjZVVwZGF0ZVRpbWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRl
TW9yZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVs
ZWRBY3Rpb25Db21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6bGF5ZXJU
cmVlSG9zdENsb3NlZE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFBy
b3h5OjptYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJl
YWRQcm94eTo6dGV4dHVyZVVwZGF0ZUNvbXBsZXRlT25JbXBsVGhyZWFkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZVNvdXJjZS5oOgorICAgICAgICAoQ0NUaW1lU291cmNl
KToKKwogMjAxMi0wMy0zMCAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIEluZGV4ZWREQjogUmFjZSBjb25kaXRpb24gY2F1c2VzIHZlcnNpb24gY2hhbmdlIHRy
YW5zYWN0aW9uIHRvIGNvbW1pdCBhZnRlciBvbmJsb2NrZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggYjQ1YWYxOGZjYWJjYjgwMTE2YjM5MDFhMzE1MGI0OWYwYThkNTdhNC4uM2ZmOTQy
ZDg0YmEyOGIwYWFjNDI5YmQzNDBiNjlkN2U1ZWRjYzhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxMi0wNC0wMiAgRGF2aWQgUmV2ZW1hbiAgPHJldmVt
YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gVXNlIEdMX0NIUk9NSVVNX2Nv
bW1hbmRfYnVmZmVyX3F1ZXJ5IHRvIHRocm90dGxlIGluY3JlbWVudGFsIHRleHR1cmUgdXBkYXRl
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMDA0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRo
ZSBmb2xsb3dpbmcgbmV3IHVuaXQgdGVzdHM6IENDU2NoZWR1bGVyVGVzdC5VcGRhdGVNb3JlUmVz
b3VyY2VzLAorICAgICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuVGVzdENhblVwZGF0
ZU1vcmVSZXNvdXJjZXMKKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3Bw
OgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgICogdGVzdHMvQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmVUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcDoKKyAgICAgICAg
KFdlYktpdFRlc3RzOjpGYWtlQ0NTY2hlZHVsZXJDbGllbnQ6OnJlc2V0KToKKyAgICAgICAgKFdl
YktpdFRlc3RzOjpGYWtlQ0NTY2hlZHVsZXJDbGllbnQ6OnNldE1heFJlc291cmNlVXBkYXRlVGlt
ZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZUNDU2NoZWR1bGVyQ2xpZW50OjptYXhSZXNv
dXJjZVVwZGF0ZVRpbWUpOgorICAgICAgICAoRmFrZUNDU2NoZWR1bGVyQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdFRlc3RzOjpURVNUKToKKyAgICAgICAgKFdlYktpdFRlc3RzKToKKyAgICAgICAg
KiB0ZXN0cy9DQ1NjaGVkdWxlclRlc3RDb21tb24uaDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpG
YWtlQ0NUaW1lU291cmNlOjpGYWtlQ0NUaW1lU291cmNlKToKKyAgICAgICAgKFdlYktpdFRlc3Rz
OjpGYWtlQ0NUaW1lU291cmNlOjpuZXh0VGlja1RpbWUpOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OkZha2VDQ1RpbWVTb3VyY2U6OnNldE5leHRUaWNrVGltZSk6CisgICAgICAgIChGYWtlQ0NUaW1l
U291cmNlKToKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdFRlc3RzOjpGYWtlQ0NUZXh0dXJlVXBkYXRlcjo6RmFrZUNDVGV4dHVyZVVw
ZGF0ZXIpOgorICAgICAgICAqIHRlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaDoKKyAgICAg
ICAgKEZha2VDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiB0ZXN0cy9DYW52YXMyRExheWVy
Q2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0
LmNwcDoKKyAgICAgICAgKFdURjo6VEVTVCk6CisgICAgICAgIChXVEY6OmlkbGVQYWludFJlcGVh
dCk6CisKIDIwMTItMDMtMzAgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUm9sbCBjaHJvbWl1bSBERVBTIGZyb20gMTI5NTkzIHRvIDEyOTU3NC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJE
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCmluZGV4IGZjYmY1NGE3N2UxZDg3YmE4ZmFk
OWQyZTIyNzQ1N2NkYWQ1YWFiODMuLmYyNGFlMjEyYTM0ODAwOTkyMjM4MjRmYzU3MWRhNzFkYmE0
YjQ4ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcApAQCAtMTI5LDEz
ICsxMjksMTMgQEAgdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRp
cnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogLyogb2MKICAgICBtX2NvbnRleHQtPmZsdXNo
KCk7CiB9CiAKLXZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRh
dGVyKQordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKIHsKICAgICBpZiAoIW1fYmFja1RleHR1cmVJ
ZCB8fCAhbV9mcm9udFRleHR1cmUgfHwgIW1fZnJvbnRUZXh0dXJlLT5pc1ZhbGlkKG1fc2l6ZSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2Zyb250
VGV4dHVyZS0+YWxsb2NhdGUodXBkYXRlci5hbGxvY2F0b3IoKSk7Ci0gICAgdXBkYXRlci5jb3Bp
ZXIoKS0+Y29weVRleHR1cmUoY29udGV4dCwgbV9iYWNrVGV4dHVyZUlkLCBtX2Zyb250VGV4dHVy
ZS0+dGV4dHVyZUlkKCksIG1fc2l6ZSk7CisgICAgdXBkYXRlci5jb3BpZXIoKS0+Y29weVRleHR1
cmUodXBkYXRlci5jb250ZXh0KCksIG1fYmFja1RleHR1cmVJZCwgbV9mcm9udFRleHR1cmUtPnRl
eHR1cmVJZCgpLCBtX3NpemUpOwogfQogCiB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cHVz
aFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJD
aHJvbWl1bS5oCmluZGV4IGI1ZDBjMjM4OTFmYjA1YjYyMTgyNDkxMDI1MGQ1OTBiOGI3MmM2NzIu
LjYzMTdmMjA0OWE5YTg4OWI2YTU4NDkxMWIyNzY1MDlmMzc2N2JhNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nh
bnZhczJETGF5ZXJDaHJvbWl1bS5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29u
dGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOwogCi0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1
cmVVcGRhdGVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
Q0NUZXh0dXJlVXBkYXRlciYpOwogICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKEND
TGF5ZXJJbXBsKik7CiAgICAgdmlydHVhbCB2b2lkIHVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVyZSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggYjk4MDIyYjUyZGE1OGI5MTk3Y2JmNTQ0OGNiNmQ0
MGE5YTA3YzI3MC4uMDZjNGRlZWUxOTE4ZjQxYWJmNmViMjhjNzYxNTMxYmVhNmFkMDk1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uaApAQCAtMTczLDcgKzE3Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc0RyYXdhYmxlOyB9CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tl
ciogLyogb2NjbHVzaW9uICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVu
dHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogLyogb2NjbHVzaW9uICovKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhDQ1RleHR1cmVVcGRhdGVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldElzTWFzayhib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVudHNU
ZXh0dXJlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUoKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDAxMGE0MzE4YzgzYWRjODc4ZTRh
N2MwNzBjM2UyOThlOGE5MTNjZTIuLmRiODg4ZTIxZjM0Y2MyODBkNTQ2MmNmZjljOWJhZWRmN2E4
OTJmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtMTgzLDcgKzE4Myw3
IEBAIEludFNpemUgVGlsZWRMYXllckNocm9taXVtOjpjb250ZW50Qm91bmRzKCkgY29uc3QKICAg
ICByZXR1cm4gSW50U2l6ZShscm91bmRmKGJvdW5kcygpLndpZHRoKCkgKiBjb250ZW50c1NjYWxl
KCkpLCBscm91bmRmKGJvdW5kcygpLmhlaWdodCgpICogY29udGVudHNTY2FsZSgpKSk7CiB9CiAK
LXZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBo
aWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgVGlsZWRMYXll
ckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKENDVGV4dHVyZVVwZGF0ZXImIHVw
ZGF0ZXIpCiB7CiAgICAgLy8gUGFpbnRpbmcgY291bGQgY2F1c2UgY29tcG9zaXRpbmcgdG8gZ2V0
IHR1cm5lZCBvZmYsIHdoaWNoIG1heSBjYXVzZSB0aGUgdGlsZXIgdG8gYmVjb21lIGludmFsaWRh
dGVkIG1pZC11cGRhdGUuCiAgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRl
VGlsZXNSZWN0LmlzRW1wdHkoKSB8fCBtX3RpbGVyLT5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5oCmluZGV4IDgxZWUyNDhhNzY4ZmY5OWRmODZjZWMwZjE4YzRhMzBiYzBhY2M3
ZGMuLjc2ODllMWRhZGMxY2IzNjI1ZTlhZjkzYzBlMDE0NDBkMzRjZjI3YjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgflRpbGVkTGF5ZXJDaHJvbWl1bSgpOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoQ0NUZXh0dXJlVXBkYXRl
ciYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJv
bWl1bS5jcHAKaW5kZXggZGE1NWYzYWMwNmM0ZDVjNDZlZGFjMTc5ZDg0ZGY2MzhhYzIxOTllYy4u
NjBmNjIxNjg4YmFmNmQ3NTNiOGZhNGQzY2EzN2JlMDllZDUwMWJmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiVHJhY2VFdmVu
dC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0NDVGV4
dHVyZUxheWVySW1wbC5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Myw4ICs4NCw5IEBAIHZvaWQgV2ViR0xMYXllckNocm9t
aXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIC8qIG9j
Y2x1CiAgICAgbV9jb250ZXh0TG9zdCA9IGNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SOwog
fQogCi12b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJDb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJikKK3Zv
aWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKENDVGV4dHVy
ZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIHJlbmRlcmVyQ29u
dGV4dCA9IHVwZGF0ZXIuY29udGV4dCgpOwogICAgIGlmIChtX3RleHR1cmVDaGFuZ2VkKSB7CiAg
ICAgICAgIHJlbmRlcmVyQ29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIG1fdGV4dHVyZUlkKTsKICAgICAgICAgLy8gU2V0IHRoZSBtaW4tbWFnIGZpbHRl
cnMgdG8gbGluZWFyIGFuZCB3cmFwIG1vZGVzIHRvIEdMX0NMQU1QX1RPX0VER0UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJD
aHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2Vi
R0xMYXllckNocm9taXVtLmgKaW5kZXggNjUwOWZiMzU4ZDk1ZTliMGRmMTcxYWMwYjFjZGZjNWQ1
MzU0MTYzZC4uYTE3YWRiYTBmMjY0MzZmOTQzM2ZlZmE3NjA5NjdjYzY2NzgxODllOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXll
ckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vV2ViR0xMYXllckNocm9taXVtLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4
dHVyZVVwZGF0ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhDQ1RleHR1cmVVcGRhdGVyJik7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8o
Q0NMYXllckltcGwqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5UmVjdChjb25z
dCBGbG9hdFJlY3QmKTsKICAgICBib29sIHBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoSW1h
Z2VCdWZmZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5jcHAK
aW5kZXggYjY4OGE3OGEyN2M1Nzk1MWRkOGQ2YmVmZmVlNzY2YzVkMjRmMjNlNC4uNzA0ZWZmNGJm
N2EzZDZjMDRkZWI1Y2QxZDI2NjBmYzhlMDE5ZWJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NE
ZWxheUJhc2VkVGltZVNvdXJjZS5jcHAKQEAgLTE2MSw0ICsxNjEsMTIgQEAgdm9pZCBDQ0RlbGF5
QmFzZWRUaW1lU291cmNlOjpwb3N0TmV4dFRpY2tUYXNrKGRvdWJsZSBub3cpCiAgICAgbV90aWNr
VGFyZ2V0ID0gbmV3VGlja1RhcmdldDsKIH0KIAorZG91YmxlIENDRGVsYXlCYXNlZFRpbWVTb3Vy
Y2U6Om5leHRUaWNrVGltZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hhc1RpY2tUYXJnZXQpCisg
ICAgICAgIHJldHVybiBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKworICAgIHJldHVy
biBtX3RpY2tUYXJnZXQ7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVT
b3VyY2UuaAppbmRleCA1ZjFiMmM0ZjJmZGE3YmVkNTRmNWY0NDM1MDY0NWYzNWY3OTZlNWRmLi4z
ODBiZTZiYzBkMWU2YTEyZWE1YjU1N2Y2YTczNGFjN2RmNzRiNTYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFzZWRUaW1l
U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpOwogICAgIHZpcnR1YWwgYm9vbCBhY3RpdmUo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlICE9IFNUQVRFX0lOQUNUSVZFOyB9CiAKKyAgICB2aXJ0
dWFsIGRvdWJsZSBuZXh0VGlja1RpbWUoKSBjb25zdDsKKwogICAgIC8vIENDVGltZXJDbGllbnQg
aW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCB2b2lkIG9uVGltZXJGaXJlZCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Zy
YW1lUmF0ZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmNwcAppbmRleCBkYjZkOTVjYzAwY2Mx
NTU2OGUwY2U1NjdmNDQ5NzhhOTI3OTI0YmU4Li5lYzNjMjQ3ODA5M2FkOGM4N2I2ODQ4MDYwMjI4
NDY4NDU5ZDdmOGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5j
cHAKQEAgLTEwNSw0ICsxMDUsOSBAQCB2b2lkIENDRnJhbWVSYXRlQ29udHJvbGxlcjo6ZGlkQWJv
cnRBbGxQZW5kaW5nRnJhbWVzKCkKICAgICBtX251bUZyYW1lc1BlbmRpbmcgPSAwOwogfQogCitk
b3VibGUgQ0NGcmFtZVJhdGVDb250cm9sbGVyOjpuZXh0VGlja1RpbWUoKQoreworICAgIHJldHVy
biBtX3RpbWVTb3VyY2UtPm5leHRUaWNrVGltZSgpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
RnJhbWVSYXRlQ29udHJvbGxlci5oCmluZGV4IDU3MzRkNGFhNmU5Zjc0NjFhNGM2NmM2ZTBhMTg2
MGRhMzBkNDk2NmUuLjdhMWRhZDQzOWFmYjI4YjNmNDM0YjM3ODk2YTJjNjlkOGY0YzI2YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
RnJhbWVSYXRlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5oCkBAIC02NCw2ICs2NCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpZEZpbmlzaEZyYW1lKCk7CiAgICAgdm9pZCBkaWRBYm9ydEFs
bFBlbmRpbmdGcmFtZXMoKTsKICAgICB2b2lkIHNldE1heEZyYW1lc1BlbmRpbmcoaW50KTsgLy8g
MCBmb3IgdW5saW1pdGVkLgorICAgIGRvdWJsZSBuZXh0VGlja1RpbWUoKTsKIAogcHJvdGVjdGVk
OgogICAgIGZyaWVuZCBjbGFzcyBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXJUaW1lU291cmNlQWRhcHRl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDU3NmZjMmIzMTkwYTJkNjMw
OTU3NTk4MTc1YzQzZWVmNGU3ODhjMjcuLjBjZmM5MTRjMTI1MjY5MGM5ZTU1MGY2NmQxZjc5NTVk
MjYzMDMzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtNTc5LDcgKzU3
OSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5
ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiAgICAgb2NjbHVzaW9uVHJhY2tlci5vdmVy
ZHJhd01ldHJpY3MoKS5yZWNvcmRNZXRyaWNzKHRoaXMpOwogfQogCi12b2lkIENDTGF5ZXJUcmVl
SG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CiAgICAg
Ly8gVXNlIEJhY2tUb0Zyb250IHNpbmNlIGl0J3MgY2hlYXAgYW5kIHRoaXMgaXNuJ3Qgb3JkZXIt
ZGVwZW5kZW50LgogICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0sIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBDQ0xh
eWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udD4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKQEAg
LTU4OSwxNSArNTg5LDE1IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RlCiAgICAgICAgIGlmIChp
dC5yZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFjZSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQo
aXQtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd09wYWNpdHkoKSB8fCBpdC0+cmVuZGVyU3VyZmFjZSgp
LT5kcmF3T3BhY2l0eUlzQW5pbWF0aW5nKCkpOwogICAgICAgICAgICAgaWYgKGl0LT5tYXNrTGF5
ZXIoKSkKLSAgICAgICAgICAgICAgICBpdC0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7CisgICAgICAgICAgICAgICAgaXQtPm1hc2tMYXll
cigpLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogCiAgICAgICAgICAgICBp
ZiAoaXQtPnJlcGxpY2FMYXllcigpKSB7Ci0gICAgICAgICAgICAgICAgaXQtPnJlcGxpY2FMYXll
cigpLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOworICAgICAg
ICAgICAgICAgIGl0LT5yZXBsaWNhTGF5ZXIoKS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1
cGRhdGVyKTsKICAgICAgICAgICAgICAgICBpZiAoaXQtPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5
ZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgaXQtPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIo
KS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKKyAgICAgICAg
ICAgICAgICAgICAgaXQtPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKS0+dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyh1cGRhdGVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlm
IChpdC5yZXByZXNlbnRzSXRzZWxmKCkpCi0gICAgICAgICAgICBpdC0+dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKKyAgICAgICAgICAgIGl0LT51cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuaAppbmRleCA5Y2ExNGZjMDQ0ODgzYWIwYzMxMDlhOTdmYjhiZTFiMmJhMjM3MTYxLi5i
NjNlMjMxODI0ZjVhNmVmZTVkMTg5MTJlMTI2ZGNjYmE4ZjU0Zjk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuaApAQCAtMjA4LDcgKzIwOCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3Rh
cnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wg
dXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKTsKIAotICAgIHZvaWQg
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVw
ZGF0ZXImKTsKKyAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoQ0NUZXh0dXJlVXBk
YXRlciYpOwogICAgIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBDQ1Njcm9sbEFuZFNj
YWxlU2V0Jik7CiAgICAgdm9pZCBzdGFydFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29udGV4dDNEKik7
CiAgICAgdm9pZCBzdG9wUmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0M0QqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyLmNwcAppbmRleCAzZDA5ZTQ0YjEyZGE0ZDFmM2U2ZmMxMjdhMDM2ZDUyZDgzZDcx
ZTg0Li41MjRkZDQzNGExYzk2M2ZhOTEzYjI0ZGY4ZTIyY2M5NDE4MjA2Yzg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY2hlZHVsZXIuY3BwCkBAIC0xMDcsMTQgKzEwNywxOSBAQCB2b2lkIENDU2NoZWR1bGVyOjpk
aWRSZWNyZWF0ZUNvbnRleHQoKQogICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7CiB9CiAK
LXZvaWQgQ0NTY2hlZHVsZXI6OnZzeW5jVGljaygpCit2b2lkIENDU2NoZWR1bGVyOjpkaWRVcGRh
dGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoKQogeworICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxl
cjo6ZGlkVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlIiwgdGhpcywgMCk7CiAgICAgaWYgKG1f
dXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcpIHsKICAgICAgICAgbV91cGRhdGVNb3JlUmVzb3Vy
Y2VzUGVuZGluZyA9IGZhbHNlOwogICAgICAgICBtX3N0YXRlTWFjaGluZS5iZWdpblVwZGF0ZU1v
cmVSZXNvdXJjZXNDb21wbGV0ZShtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsK
ICAgICB9Ci0gICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjp2c3luY1RpY2siLCB0aGlzLCAw
KTsKKyAgICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOworfQogCit2b2lkIENDU2NoZWR1bGVy
Ojp2c3luY1RpY2soKQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxlcjo6dnN5bmNUaWNr
IiwgdGhpcywgMCk7CiAgICAgbV9zdGF0ZU1hY2hpbmUuZGlkRW50ZXJWU3luYygpOwogICAgIHBy
b2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7CiAgICAgbV9zdGF0ZU1hY2hpbmUuZGlkTGVhdmVWU3lu
YygpOwpAQCAtMTIzLDYgKzEyOCwxMSBAQCB2b2lkIENDU2NoZWR1bGVyOjp2c3luY1RpY2soKQog
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBDQ1NjaGVkdWxlcjo6bmV4dEFjdGlvbigp
CiB7CiAgICAgbV9zdGF0ZU1hY2hpbmUuc2V0Q2FuRHJhdyhtX2NsaWVudC0+Y2FuRHJhdygpKTsK
KworICAgIGJvb2wgaGFzUmVkcmF3UGVuZGluZyA9IG1fc3RhdGVNYWNoaW5lLnJlZHJhd1BlbmRp
bmcoKTsKKyAgICBib29sIGhhc1RpbWVSZW1haW5pbmcgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUoKSA8IG1fZnJhbWVSYXRlQ29udHJvbGxlci0+bmV4dFRpY2tUaW1lKCkgLSBtX2NsaWVu
dC0+bWF4UmVzb3VyY2VVcGRhdGVUaW1lKCk7CisgICAgbV9zdGF0ZU1hY2hpbmUuc2V0Q2FuVXBk
YXRlTW9yZVJlc291cmNlcyghaGFzUmVkcmF3UGVuZGluZyB8fCBoYXNUaW1lUmVtYWluaW5nKTsK
KwogICAgIHJldHVybiBtX3N0YXRlTWFjaGluZS5uZXh0QWN0aW9uKCk7CiB9CiAKQEAgLTE0OCwx
NiArMTU4LDExIEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCkK
ICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzoKLSAgICAgICAgICAgIG1fY2xpZW50LT5z
Y2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCk7Ci0gICAgICAgICAgICBpZiAoIW1f
Y2xpZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBJ
ZiB3ZSB3ZXJlIGp1c3QgdG9sZCB0byB1cGRhdGUgcmVzb3VyY2VzLCBidXQgdGhlcmUgYXJlIG5v
Ci0gICAgICAgICAgICAgICAgLy8gbW9yZSBwZW5kaW5nLCB0aGVuIHRlbGwgdGhlIHN0YXRlIG1h
Y2hpbmUgdGhhdCB0aGUKLSAgICAgICAgICAgICAgICAvLyBiZWdpblVwZGF0ZU1vcmVSZXNvdXJj
ZXMgY29tcGxldGVkLiBJZiBtb3JlIGFyZSBwZW5kaW5nLAotICAgICAgICAgICAgICAgIC8vIHRo
ZW4gd2Ugd2lsbCBhY2sgdGhlIHVwZGF0ZSBhdCB0aGUgbmV4dCBkcmF3LgotICAgICAgICAgICAg
ICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgICAg
ICBtX3N0YXRlTWFjaGluZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7
Ci0gICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGlmIChtX2NsaWVudC0+aGFzTW9yZVJl
c291cmNlVXBkYXRlcygpKSB7CisgICAgICAgICAgICAgICAgbV9jbGllbnQtPnNjaGVkdWxlZEFj
dGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKTsKICAgICAgICAgICAgICAgICBtX3VwZGF0ZU1vcmVS
ZXNvdXJjZXNQZW5kaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgIG1fc3RhdGVNYWNoaW5lLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fQ09NTUlUOgogICAgICAgICAgICAgbV9jbGllbnQtPnNjaGVkdWxlZEFjdGlv
bkNvbW1pdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKaW5kZXggYTZmMjYxYzRlZGY2ZDg1NGFhMmI2
OTEzYWE2YjdhOTJhNzkzODYyNC4uOTJjODQ3NTFkODVjYmU2Y2FmZDA5OTM3MjRmN2IwMTFkZTZh
YmQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCkBAIC01NCw2ICs1NCw3IEBAIGNsYXNzIENDU2No
ZWR1bGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY2FuRHJhdygpID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgaGFzTW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGRvdWJsZSBtYXhSZXNvdXJjZVVwZGF0ZVRpbWUoKSBjb25zdCA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpID0gMDsKICAgICB2aXJ0
dWFsIENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0aW9uRHJh
d0FuZFN3YXBJZlBvc3NpYmxlKCkgPSAwOwpAQCAtOTYsNiArOTcsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaWRMb3NlQ29udGV4dCgpOwogICAgIHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0KCk7CiAK
KyAgICB2b2lkIGRpZFVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSgpOworCiAgICAgYm9vbCBj
b21taXRQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZU1hY2hpbmUuY29tbWl0UGVuZGlu
ZygpOyB9CiAgICAgYm9vbCByZWRyYXdQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZU1h
Y2hpbmUucmVkcmF3UGVuZGluZygpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lLmNwcAppbmRleCAxYzk0MmUzNDNjNzc3MTliNjNlNmQzZjA5YjEyYjA1ZGVl
MDAxYmRhLi5jZTdlZmRjYTIxMjU5NDFhZTczOTkwN2YwYTkxNjQ1OGJmYzUzNzM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlclN0YXRlTWFjaGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCkBAIC00MSw2ICs0MSw3
IEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSgpCiAg
ICAgLCBtX3Zpc2libGUoZmFsc2UpCiAgICAgLCBtX2NhbkRyYXcodHJ1ZSkKICAgICAsIG1fZHJh
d0lmUG9zc2libGVGYWlsZWQoZmFsc2UpCisgICAgLCBtX2NhblVwZGF0ZU1vcmVSZXNvdXJjZXMo
ZmFsc2UpCiAgICAgLCBtX2NvbnRleHRTdGF0ZShDT05URVhUX0FDVElWRSkKIHsKIH0KQEAgLTcw
LDYgKzcxLDE4IEBAIGJvb2wgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNob3VsZERyYXcoKSBj
b25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpzaG91bGRVcGRhdGVNb3JlUmVzb3VyY2VzKCkgY29uc3QKK3sKKyAgICBpZiAobV9uZWVkc0Zv
cmNlZFJlZHJhdykKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobV91cGRhdGVNb3Jl
UmVzb3VyY2VzUGVuZGluZykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV9jYW5V
cGRhdGVNb3JlUmVzb3VyY2VzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBjb25zdAogewogICAgIHN3aXRjaCAobV9jb21taXRTdGF0
ZSkgewpAQCAtOTYsNyArMTA5LDcgQEAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbigpIGNvbnN0CiAgICAgY2FzZSBDT01N
SVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTOgogICAgICAgICBpZiAoc2hvdWxkRHJhdygpKQog
ICAgICAgICAgICAgcmV0dXJuIG1fbmVlZHNGb3JjZWRSZWRyYXcgPyBBQ1RJT05fRFJBV19GT1JD
RUQgOiBBQ1RJT05fRFJBV19JRl9QT1NTSUJMRTsKLSAgICAgICAgaWYgKCFtX3VwZGF0ZU1vcmVS
ZXNvdXJjZXNQZW5kaW5nKQorICAgICAgICBpZiAoc2hvdWxkVXBkYXRlTW9yZVJlc291cmNlcygp
KQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVM7
CiAgICAgICAgIHJldHVybiBBQ1RJT05fTk9ORTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lLmgKaW5kZXggMmVjZmQxY2QwNmQ1MDhhZTFmZTYxZjY4MzkyMTY4MWFm
ZGNlYjg2Ni4uZjY0ODAzZWVjZmJlOTA3N2E4MTY2MDMwNzRmM2RlM2JhNzcwMzMyYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCkBAIC0xMjIsNiArMTIyLDkg
QEAgcHVibGljOgogICAgIC8vIHdoZW4gc3VjaCBiZWhhdmlvciB3b3VsZCBiZSB1bmRlc2lyYWJs
ZS4KICAgICB2b2lkIHNldENhbkRyYXcoYm9vbCBjYW4pIHsgbV9jYW5EcmF3ID0gY2FuOyB9CiAK
KyAgICAvLyBJbmRpY2F0ZXMgd2hldGhlciB1cGRhdGluZyByZXNvdXJjZXMgd291bGQsIGF0IHRo
aXMgdGltZSwgbWFrZSBzZW5zZS4KKyAgICB2b2lkIHNldENhblVwZGF0ZU1vcmVSZXNvdXJjZXMo
Ym9vbCBjYW4pIHsgbV9jYW5VcGRhdGVNb3JlUmVzb3VyY2VzID0gY2FuOyB9CisKICAgICB2b2lk
IGRpZExvc2VDb250ZXh0KCk7CiAgICAgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoKTsKIApAQCAt
MTI5LDYgKzEzMiw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIHNob3VsZERyYXdGb3JjZWQoKSBj
b25zdDsKICAgICBib29sIHNob3VsZERyYXcoKSBjb25zdDsKICAgICBib29sIGhhc0RyYXduVGhp
c0ZyYW1lKCkgY29uc3Q7CisgICAgYm9vbCBzaG91bGRVcGRhdGVNb3JlUmVzb3VyY2VzKCkgY29u
c3Q7CiAKICAgICBDb21taXRTdGF0ZSBtX2NvbW1pdFN0YXRlOwogCkBAIC0xNDMsNiArMTQ3LDcg
QEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV92aXNpYmxlOwogICAgIGJvb2wgbV9jYW5EcmF3Owog
ICAgIGJvb2wgbV9kcmF3SWZQb3NzaWJsZUZhaWxlZDsKKyAgICBib29sIG1fY2FuVXBkYXRlTW9y
ZVJlc291cmNlczsKICAgICBDb250ZXh0U3RhdGUgbV9jb250ZXh0U3RhdGU7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IGVjODQyOGQ2NTA1ZmExOTk3
MWY4YWEzMjAxNjY1MDMxMzI3YzIyYjYuLjBhZjQyOTNlZjExZDk3MmMzZTc5OTNlOGUyYTM3M2Fi
OTg0MDFiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0y
MDAsOSArMjAwLDkgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCgpCiAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7CiAKICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdl
dCgpKTsKLSAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKG1fbGF5ZXJUcmVlSG9zdElt
cGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXll
clJlbmRlcmVyKCktPnRleHR1cmVDb3BpZXIoKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCks
IHVwZGF0ZXIpOwotICAgICAgICB1cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5j
b250ZXh0KCksIG51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKKyAgICAgICAgQ0NUZXh0
dXJlVXBkYXRlciB1cGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9sYXll
clRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCksIG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZUNvcGllcigpKTsKKyAgICAgICAgbV9sYXll
clRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOworICAgICAgICB1
cGRhdGVyLnVwZGF0ZShudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgICAgIEFT
U0VSVCghdXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0
SW1wbC0+c2V0VmlzaWJsZShtX2xheWVyVHJlZUhvc3QtPnZpc2libGUoKSk7CiAgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC0+ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdElt
cGwuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCAwY2UwZjZk
MTA5OGE3Mzk3N2YzYmFmODIzMmY3MjE2YjA1ZTdhZDdlLi41ZTVjZjBiM2JhZTFkZTRlNTcwNjRk
ZDEyMDZiMjM5OGUwYzcyN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApA
QCAtMjksMjIgKzI5LDc1IEBACiAKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAK
KyNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIk1h
bmFnZWRUZXh0dXJlLmgiCisjaW5jbHVkZSAiY2MvQ0NUaW1lci5oIgogCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCituYW1lc3BhY2UgeworCisvLyBOdW1iZXIgb2YgcGVuZGluZyB0ZXh0dXJlIHVw
ZGF0ZSBxdWVyaWVzIHRvIGFsbG93Lgorc3RhdGljIGNvbnN0IHNpemVfdCBtYXhQZW5kaW5nVGV4
dHVyZVVwZGF0ZVF1ZXJpZXMgPSAyOworCisvLyBNZWFzdXJlZCBpbiBzZWNvbmRzLgorc3RhdGlj
IGNvbnN0IGRvdWJsZSB0ZXh0dXJlVXBkYXRlVGlja1JhdGUgPSAwLjAwNDsKKworfSAvLyBhbm9u
eW1vdXMgbmFtZXNwYWNlCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0NUZXh0dXJlVXBkYXRl
cjo6Q0NUZXh0dXJlVXBkYXRlcihUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIFRleHR1cmVD
b3BpZXIqIGNvcGllcikKLSAgICA6IG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKK0NDVGV4dHVyZVVw
ZGF0ZXI6OlF1ZXJ5OjpRdWVyeShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKKyAgICA6IG1f
Y29udGV4dChjb250ZXh0KQorICAgICwgbV9xdWVyeUlkKDApCit7CisgICAgRXh0ZW5zaW9uczNE
Q2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+
KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICBtX3F1ZXJ5SWQgPSBleHRlbnNpb25z
LT5jcmVhdGVRdWVyeUVYVCgpOworfQorCitDQ1RleHR1cmVVcGRhdGVyOjpRdWVyeTo6flF1ZXJ5
KCkKK3sKKyAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0
PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAg
IGV4dGVuc2lvbnMtPmRlbGV0ZVF1ZXJ5RVhUKG1fcXVlcnlJZCk7Cit9CisKK3ZvaWQgQ0NUZXh0
dXJlVXBkYXRlcjo6UXVlcnk6OnN0YXJ0KCkKK3sKKyAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSog
ZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkpOworICAgIGV4dGVuc2lvbnMtPmJlZ2luUXVlcnlFWFQoRXh0ZW5z
aW9uczNEQ2hyb21pdW06OkNPTU1BTkRTX0lTU1VFRF9DSFJPTUlVTSwgbV9xdWVyeUlkKTsKKyAg
ICBleHRlbnNpb25zLT5lbmRRdWVyeUVYVChFeHRlbnNpb25zM0RDaHJvbWl1bTo6Q09NTUFORFNf
SVNTVUVEX0NIUk9NSVVNKTsKK30KKworYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjpRdWVyeTo6aXNQ
ZW5kaW5nKCkKK3sKKyAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRp
Y19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkp
OworICAgIHVuc2lnbmVkIGF2YWlsYWJsZSA9IDE7CisgICAgZXh0ZW5zaW9ucy0+Z2V0UXVlcnlP
YmplY3R1aXZFWFQobV9xdWVyeUlkLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6UVVFUllfUkVTVUxU
X0FWQUlMQUJMRV9FWFQsICZhdmFpbGFibGUpOworICAgIHJldHVybiAhYXZhaWxhYmxlOworfQor
CitDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIFRleHR1cmVDb3BpZXIqIGNvcGll
cikKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9hbGxvY2F0b3IoYWxsb2NhdG9y
KQogICAgICwgbV9jb3BpZXIoY29waWVyKQogICAgICwgbV9lbnRyeUluZGV4KDApCiB7CiAgICAg
QVNTRVJUKG1fYWxsb2NhdG9yKTsKIH0KIAorQ0NUZXh0dXJlVXBkYXRlcjo6Q0NUZXh0dXJlVXBk
YXRlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2Nh
dG9yLCBUZXh0dXJlQ29waWVyKiBjb3BpZXIsIFBhc3NPd25QdHI8Q0NUaW1lcj4gdXBkYXRlVGlt
ZXIpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fYWxsb2NhdG9yKGFsbG9jYXRv
cikKKyAgICAsIG1fY29waWVyKGNvcGllcikKKyAgICAsIG1fZW50cnlJbmRleCgwKQorICAgICwg
bV91cGRhdGVUaW1lcih1cGRhdGVUaW1lcikKK3sKKyAgICBBU1NFUlQobV9jb250ZXh0KTsKKyAg
ICBBU1NFUlQobV9hbGxvY2F0b3IpOworfQorCiBDQ1RleHR1cmVVcGRhdGVyOjp+Q0NUZXh0dXJl
VXBkYXRlcigpCiB7CiB9CkBAIC03NSwxMyArMTI4LDM4IEBAIGJvb2wgQ0NUZXh0dXJlVXBkYXRl
cjo6aGFzTW9yZVVwZGF0ZXMoKSBjb25zdAogICAgIHJldHVybiBtX2VudHJpZXMuc2l6ZSgpIHx8
IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpOwogfQogCi1ib29sIENDVGV4dHVyZVVwZGF0ZXI6OnVw
ZGF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgc2l6ZV90IGNvdW50KQorZG91YmxlIEND
VGV4dHVyZVVwZGF0ZXI6Om1heFRleHR1cmVVcGRhdGVUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gdGV4dHVyZVVwZGF0ZVRpY2tSYXRlICsgMC4wMDI7Cit9CisKK3ZvaWQgQ0NUZXh0dXJlVXBk
YXRlcjo6dXBkYXRlKHNpemVfdCBjb3VudCkKIHsKKyAgICBPd25QdHI8UXVlcnk+IHF1ZXJ5Owor
CisgICAgaWYgKG1fdXBkYXRlVGltZXIpIHsKKyAgICAgICAgbV91cGRhdGVUaW1lci0+c3RhcnRP
bmVTaG90KHRleHR1cmVVcGRhdGVUaWNrUmF0ZSk7CisKKyAgICAgICAgLy8gUHJvY2VzcyBwZW5k
aW5nIHF1ZXJpZXMuCisgICAgICAgIHByb2Nlc3NRdWVyaWVzKCk7CisKKyAgICAgICAgLy8gVXNl
IGF2YWlsYWJsZSBxdWVyeSBvciBjcmVhdGUgbmV3IHF1ZXJ5LgorICAgICAgICBpZiAoIW1fYXZh
aWxhYmxlUXVlcmllc0xpc3QuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBxdWVyeSA9IG1fYXZh
aWxhYmxlUXVlcmllc0xpc3QubGFzdCgpLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1fYXZhaWxh
YmxlUXVlcmllc0xpc3QucmVtb3ZlTGFzdCgpOworICAgICAgICB9IGVsc2UgaWYgKG1fcGVuZGlu
Z1F1ZXJpZXNMaXN0LnNpemUoKSA8IG1heFBlbmRpbmdUZXh0dXJlVXBkYXRlUXVlcmllcykKKyAg
ICAgICAgICAgIHF1ZXJ5ID0gUXVlcnk6OmNyZWF0ZShtX2NvbnRleHQpOworCisgICAgICAgIC8v
IEF2b2lkIHVwZGF0ZSBpZiB3ZSBoYXZlIHJlYWNoIHRoZSBsaW1pdCBmb3IgcGVuZGluZyBxdWVy
aWVzLgorICAgICAgICBpZiAoIXF1ZXJ5KQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKwog
ICAgIHNpemVfdCBpbmRleDsKICAgICBzaXplX3QgbWF4SW5kZXggPSBtaW4obV9lbnRyeUluZGV4
ICsgY291bnQsIG1fZW50cmllcy5zaXplKCkpOwogICAgIGZvciAoaW5kZXggPSBtX2VudHJ5SW5k
ZXg7IGluZGV4IDwgbWF4SW5kZXg7ICsraW5kZXgpIHsKICAgICAgICAgVXBkYXRlRW50cnkmIGVu
dHJ5ID0gbV9lbnRyaWVzW2luZGV4XTsKLSAgICAgICAgZW50cnkubV90ZXh0dXJlLT51cGRhdGVS
ZWN0KGNvbnRleHQsIG1fYWxsb2NhdG9yLCBlbnRyeS5tX3NvdXJjZVJlY3QsIGVudHJ5Lm1fZGVz
dFJlY3QpOworICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0ZVJlY3QobV9jb250ZXh0LCBt
X2FsbG9jYXRvciwgZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5tX2Rlc3RSZWN0KTsKICAgICB9
CiAKICAgICBib29sIG1vcmVVcGRhdGVzID0gbWF4SW5kZXggPCBtX2VudHJpZXMuc2l6ZSgpOwpA
QCAtOTIsMTkgKzE3MCwyMSBAQCBib29sIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgc2l6ZV90IGNvdW50KQogICAgIGlmICgoY291bnQgLSAoaW5k
ZXggLSBtX2VudHJ5SW5kZXgpKSA8IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpKQogICAgICAgICBt
b3JlVXBkYXRlcyA9IHRydWU7CiAKLSAgICBpZiAobW9yZVVwZGF0ZXMpIHsKKyAgICBpZiAoIW1v
cmVVcGRhdGVzKSB7CisgICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IG1fcGFydGlhbEVu
dHJpZXMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkg
PSBtX3BhcnRpYWxFbnRyaWVzW2luZGV4XTsKKyAgICAgICAgICAgIGVudHJ5Lm1fdGV4dHVyZS0+
dXBkYXRlUmVjdChtX2NvbnRleHQsIG1fYWxsb2NhdG9yLCBlbnRyeS5tX3NvdXJjZVJlY3QsIGVu
dHJ5Lm1fZGVzdFJlY3QpOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgbm8gZW50cmllcyBs
ZWZ0IHRvIHByb2Nlc3MsIGF1dG8tY2xlYXIuCisgICAgICAgIGNsZWFyKCk7CisgICAgfSBlbHNl
CiAgICAgICAgIG1fZW50cnlJbmRleCA9IGluZGV4OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9CiAKLSAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBtX3BhcnRpYWxFbnRyaWVzLnNpemUo
KTsgKytpbmRleCkgewotICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX3BhcnRpYWxFbnRy
aWVzW2luZGV4XTsKLSAgICAgICAgZW50cnkubV90ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQs
IG1fYWxsb2NhdG9yLCBlbnRyeS5tX3NvdXJjZVJlY3QsIGVudHJ5Lm1fZGVzdFJlY3QpOworICAg
IGlmIChxdWVyeSkgeworICAgICAgICBxdWVyeS0+c3RhcnQoKTsKKyAgICAgICAgbV9wZW5kaW5n
UXVlcmllc0xpc3QucHJlcGVuZChxdWVyeS5yZWxlYXNlKCkpOwogICAgIH0KLQotICAgIC8vIElm
IG5vIGVudHJpZXMgbGVmdCB0byBwcm9jZXNzLCBhdXRvLWNsZWFyLgotICAgIGNsZWFyKCk7Ci0g
ICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmNsZWFyKCkKQEAg
LTExNCw2ICsxOTQsMTcgQEAgdm9pZCBDQ1RleHR1cmVVcGRhdGVyOjpjbGVhcigpCiAgICAgbV9w
YXJ0aWFsRW50cmllcy5jbGVhcigpOwogfQogCit2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OnByb2Nl
c3NRdWVyaWVzKCkKK3sKKyAgICB3aGlsZSAoIW1fcGVuZGluZ1F1ZXJpZXNMaXN0LmlzRW1wdHko
KSkgeworICAgICAgICBpZiAobV9wZW5kaW5nUXVlcmllc0xpc3QubGFzdCgpLT5pc1BlbmRpbmco
KSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIG1fYXZhaWxhYmxlUXVlcmllc0xpc3Qu
cHJlcGVuZChtX3BlbmRpbmdRdWVyaWVzTGlzdC5sYXN0KCkucmVsZWFzZSgpKTsKKyAgICAgICAg
bV9wZW5kaW5nUXVlcmllc0xpc3QucmVtb3ZlTGFzdCgpOworICAgIH0KK30KKwogfQogCiAjZW5k
aWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBk
YXRlci5oCmluZGV4IGQyOWM2NTg2MWU5MzIzZWNmZjgyZGU0MGJjZGJmN2UyNDZiNDk3MDcuLjVj
YzI2YTgxMDZlNTRlMTg2Nzg1N2Y0OGI4ZWNkNjZjZDkwNWYzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVVcGRhdGVyLmgKQEAgLTMyLDI1ICszMiw0NSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIENDVGltZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIFRleHR1
cmVBbGxvY2F0b3I7CiBjbGFzcyBUZXh0dXJlQ29waWVyOwogCiBjbGFzcyBDQ1RleHR1cmVVcGRh
dGVyIHsKIHB1YmxpYzoKLSAgICBDQ1RleHR1cmVVcGRhdGVyKFRleHR1cmVBbGxvY2F0b3IqLCBU
ZXh0dXJlQ29waWVyKik7CisgICAgY2xhc3MgUXVlcnkgeworICAgIHB1YmxpYzoKKyAgICAgICAg
c3RhdGljIFBhc3NPd25QdHI8UXVlcnk+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IFF1ZXJ5KGNvbnRleHQpKTsgfQorCisgICAgICAgIHZp
cnR1YWwgflF1ZXJ5KCk7CisKKyAgICAgICAgdm9pZCBzdGFydCgpOworICAgICAgICBib29sIGlz
UGVuZGluZygpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgUXVlcnkoR3JhcGhp
Y3NDb250ZXh0M0QqKTsKKworICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0Owor
ICAgICAgICB1bnNpZ25lZCBtX3F1ZXJ5SWQ7CisgICAgfTsKKworICAgIENDVGV4dHVyZVVwZGF0
ZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgVGV4dHVyZUNvcGllciop
OworICAgIENDVGV4dHVyZVVwZGF0ZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2Nh
dG9yKiwgVGV4dHVyZUNvcGllciosIFBhc3NPd25QdHI8Q0NUaW1lcj4pOwogICAgIH5DQ1RleHR1
cmVVcGRhdGVyKCk7CiAKICAgICB2b2lkIGFwcGVuZChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
OwogICAgIHZvaWQgYXBwZW5kUGFydGlhbChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiAg
ICAgYm9vbCBoYXNNb3JlVXBkYXRlcygpIGNvbnN0OworICAgIGRvdWJsZSBtYXhUZXh0dXJlVXBk
YXRlVGltZSgpIGNvbnN0OwogCi0gICAgLy8gVXBkYXRlIHNvbWUgdGV4dHVyZXMuIFJldHVybnMg
dHJ1ZSBpZiBtb3JlIHRleHR1cmVzIGxlZnQgdG8gcHJvY2Vzcy4KLSAgICBib29sIHVwZGF0ZShH
cmFwaGljc0NvbnRleHQzRCosIHNpemVfdCBjb3VudCk7CisgICAgLy8gVXBkYXRlIHNvbWUgdGV4
dHVyZXMuCisgICAgdm9pZCB1cGRhdGUoc2l6ZV90IGNvdW50KTsKIAogICAgIHZvaWQgY2xlYXIo
KTsKIAorICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0
OyB9CiAgICAgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKCkgeyByZXR1cm4gbV9hbGxvY2F0
b3I7IH0KICAgICBUZXh0dXJlQ29waWVyKiBjb3BpZXIoKSB7IHJldHVybiBtX2NvcGllcjsgfQog
CkBAIC02MywxMSArODMsMTcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyB2b2lkIGFwcGVuZChM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIFZlY3RvcjxVcGRhdGVFbnRyeT4mKTsKIAorICAgIHZv
aWQgcHJvY2Vzc1F1ZXJpZXMoKTsKKworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7
CiAgICAgVGV4dHVyZUFsbG9jYXRvciogbV9hbGxvY2F0b3I7CiAgICAgVGV4dHVyZUNvcGllciog
bV9jb3BpZXI7CiAgICAgc2l6ZV90IG1fZW50cnlJbmRleDsKICAgICBWZWN0b3I8VXBkYXRlRW50
cnk+IG1fZW50cmllczsKICAgICBWZWN0b3I8VXBkYXRlRW50cnk+IG1fcGFydGlhbEVudHJpZXM7
CisgICAgT3duUHRyPENDVGltZXI+IG1fdXBkYXRlVGltZXI7CisgICAgVmVjdG9yPE93blB0cjxR
dWVyeT4gPiBtX3BlbmRpbmdRdWVyaWVzTGlzdDsKKyAgICBWZWN0b3I8T3duUHRyPFF1ZXJ5PiA+
IG1fYXZhaWxhYmxlUXVlcmllc0xpc3Q7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwCmluZGV4IDQ1ODRmMTVmYmNhMmU1YmU0ODk5NmRhZDVmMDlmM2NhYzhhM2E5NzYuLjYyYTQ1
MTJjZWE3NTBjZDI1OWI5NzZlODhlZjUwNTIxNmNkYjkwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSB7CiAKIC8vIE51bWJlciBvZiB0
ZXh0dXJlcyB0byB1cGRhdGUgd2l0aCBlYWNoIGNhbGwgdG8KIC8vIHNjaGVkdWxlZEFjdGlvblVw
ZGF0ZU1vcmVSZXNvdXJjZXMoKS4KLXN0YXRpYyBjb25zdCBzaXplX3QgdGV4dHVyZVVwZGF0ZXNQ
ZXJGcmFtZSA9IDQ4Oworc3RhdGljIGNvbnN0IHNpemVfdCB0ZXh0dXJlVXBkYXRlc1BlclRpY2sg
PSA0OwogCiAvLyBNZWFzdXJlZCBpbiBzZWNvbmRzLgogc3RhdGljIGNvbnN0IGRvdWJsZSBjb250
ZXh0UmVjcmVhdGlvblRpY2tSYXRlID0gMC4wMzsKQEAgLTQ4OCw2ICs0ODgsMjUgQEAgdm9pZCBD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKCkKICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENv
bXBsZXRlKCk7CiB9CiAKK2NsYXNzIENDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGltZXIgOiBw
dWJsaWMgQ0NUaW1lciwgQ0NUaW1lckNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NP
d25QdHI8Q0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVUaW1lcj4gY3JlYXRlKENDVGhyZWFkUHJv
eHkqIHByb3h5KSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ0NUaHJlYWRQcm94eVRleHR1cmVVcGRh
dGVUaW1lcihwcm94eSkpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb25UaW1lckZpcmVkKCkKKyAg
ICB7CisgICAgICAgIG1fcHJveHktPnRleHR1cmVVcGRhdGVDb21wbGV0ZU9uSW1wbFRocmVhZCgp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBDQ1RocmVhZFByb3h5VGV4dHVyZVVw
ZGF0ZVRpbWVyKENDVGhyZWFkUHJveHkqIHByb3h5KQorICAgICAgICA6IENDVGltZXIoQ0NQcm94
eTo6aW1wbFRocmVhZCgpLCB0aGlzKQorICAgICAgICAsIG1fcHJveHkocHJveHkpCisgICAgewor
ICAgIH0KKworICAgIENDVGhyZWFkUHJveHkqIG1fcHJveHk7Cit9OworCiB2b2lkIENDVGhyZWFk
UHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCog
Y29tcGxldGlvbikKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFt
ZUNvbXBsZXRlT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CkBAIC01MDIsMTggKzUyMSwyNSBAQCB2
b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBs
ZXRpb25FdmVudCogY29tcGxldGlvbgogCiAgICAgbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbklt
cGxUaHJlYWQgPSBjb21wbGV0aW9uOwogCi0gICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBk
YXRlck9uSW1wbFRocmVhZCk7Ci0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJl
YWQgPSBhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5j
b250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5k
ZXJlcigpLT50ZXh0dXJlQ29waWVyKCkpKTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAqbV9jdXJy
ZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOworICAgIGlmICghbV90ZXh0dXJlVXBkYXRl
ck9uSW1wbFRocmVhZCkKKyAgICAgICAgbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCA9IGFk
b3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQo
KSwgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCksIG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZUNvcGllcigpLCBDQ1RocmVh
ZFByb3h5VGV4dHVyZVVwZGF0ZVRpbWVyOjpjcmVhdGUodGhpcykpKTsKKyAgICBtX2xheWVyVHJl
ZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKm1fdGV4dHVyZVVwZGF0ZXJPbkltcGxU
aHJlYWQpOwogCiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmJlZ2luRnJhbWVDb21wbGV0
ZSgpOwogfQogCiBib29sIENDVGhyZWFkUHJveHk6Omhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBj
b25zdAogewotICAgIGlmICghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpCisg
ICAgaWYgKCFtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmV0dXJuIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNN
b3JlVXBkYXRlcygpOworICAgIHJldHVybiBtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5o
YXNNb3JlVXBkYXRlcygpOworfQorCitkb3VibGUgQ0NUaHJlYWRQcm94eTo6bWF4UmVzb3VyY2VV
cGRhdGVUaW1lKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJl
YWQpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX3RleHR1cmVVcGRhdGVyT25JbXBs
VGhyZWFkLT5tYXhUZXh0dXJlVXBkYXRlVGltZSgpOwogfQogCiBib29sIENDVGhyZWFkUHJveHk6
OmNhbkRyYXcoKQpAQCAtNTI3LDIwICs1NTMsMjAgQEAgYm9vbCBDQ1RocmVhZFByb3h5OjpjYW5E
cmF3KCkKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291
cmNlcygpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlv
blVwZGF0ZU1vcmVSZXNvdXJjZXMiLCB0aGlzLCAwKTsKLSAgICBBU1NFUlQobV9jdXJyZW50VGV4
dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25J
bXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCB0ZXh0dXJl
VXBkYXRlc1BlckZyYW1lKTsKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIEFTU0VS
VChtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKKyAgICBBU1NFUlQobV90ZXh0dXJlVXBk
YXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVwZGF0ZXMoKSk7CisKKyAgICBtX3RleHR1cmVVcGRh
dGVyT25JbXBsVGhyZWFkLT51cGRhdGUodGV4dHVyZVVwZGF0ZXNQZXJUaWNrKTsKIH0KIAogdm9p
ZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQoKQogewogICAgIFRSQUNFX0VW
RU5UKCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQiLCB0aGlzLCAwKTsKLSAg
ICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIEFTU0VS
VCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCkp
OworICAgIEFTU0VSVChtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKKyAgICBBU1NFUlQo
IW1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCkpOwogICAgIEFT
U0VSVChtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CiAKLSAgICBtX2N1cnJl
bnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5jbGVhcigpOwotCi0KICAgICBtX2xheWVyVHJl
ZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwogCiAgICAgbV9sYXllclRyZWVIb3N0LT5iZWdpbkNv
bW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKQEAgLTczMiw2ICs3
NTgsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmxheWVyVHJlZUhvc3RDbG9zZWRPbkltcGxUaHJl
YWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpbwogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVh
ZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CiAgICAg
QVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRl
bnRzVGV4dHVyZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0
dXJlQWxsb2NhdG9yKCkpOworICAgIG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIo
KTsKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLmNsZWFyKCk7CiAgICAgbV9pbnB1dEhhbmRsZXJP
bkltcGxUaHJlYWQuY2xlYXIoKTsKICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC5jbGVhcigp
OwpAQCAtNzQ2LDcgKzc3Myw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0RnVsbFJvb3RMYXll
ckRhbWFnZU9uSW1wbFRocmVhZCgpCiAKIHNpemVfdCBDQ1RocmVhZFByb3h5OjptYXhQYXJ0aWFs
VGV4dHVyZVVwZGF0ZXMoKSBjb25zdAogewotICAgIHJldHVybiB0ZXh0dXJlVXBkYXRlc1BlckZy
YW1lOworICAgIHJldHVybiB0ZXh0dXJlVXBkYXRlc1BlclRpY2s7CiB9CiAKIHZvaWQgQ0NUaHJl
YWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBj
b21wbGV0aW9uLCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dFB0ciwgYm9vbCogcmVjcmVhdGVT
dWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMqIGNhcGFiaWxpdGllcykKQEAgLTc2
Miw0ICs3ODksMTEgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxU
aHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIEcKICAgICBjb21wbGV0aW9uLT5z
aWduYWwoKTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5Ojp0ZXh0dXJlVXBkYXRlQ29tcGxldGVP
bkltcGxUaHJlYWQoKQoreworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgVFJBQ0Vf
RVZFTlQoIkNDVGhyZWFkUHJveHk6OnRleHR1cmVVcGRhdGVDb21wbGV0ZU9uSW1wbFRocmVhZCIs
IHRoaXMsIDApOworICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5kaWRVcGRhdGVNb3JlUmVz
b3VyY2VzQ29tcGxldGUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5oCmluZGV4IDM1ZmUxZGJhZmY0MGI0YTZlMmRmOWZjZDg0ZDIyZjkyNTYwYzli
MzcuLjUyNWQ3M2Q0NWM4MzljNjQ4NDM4NGY1MzA4MDk4YTQ1YWFiNzM0NGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgQ0NTY29wZWRUaHJlYWRQcm94
eTsKIGNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFzcyBDQ1RocmVhZDsKIGNsYXNzIENDVGhy
ZWFkUHJveHlDb250ZXh0UmVjcmVhdGlvblRpbWVyOworY2xhc3MgQ0NUaHJlYWRQcm94eVRleHR1
cmVVcGRhdGVUaW1lcjsKIAogY2xhc3MgQ0NUaHJlYWRQcm94eSA6IHB1YmxpYyBDQ1Byb3h5LCBD
Q0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50LCBDQ1NjaGVkdWxlckNsaWVudCB7CiBwdWJsaWM6CkBA
IC04MSw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICAvLyBDQ1NjaGVkdWxlckNsaWVudCBpbXBsZW1l
bnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3KCk7CiAgICAgdmlydHVhbCBib29sIGhh
c01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBtYXhSZXNv
dXJjZVVwZGF0ZVRpbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9u
QmVnaW5GcmFtZSgpOwogICAgIHZpcnR1YWwgQ0NTY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJl
c3VsdCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUoKTsKICAgICB2aXJ0dWFs
IENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0aW9uRHJhd0Fu
ZFN3YXBGb3JjZWQoKTsKQEAgLTkxLDYgKzkzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCopOwogICAgIGZyaWVuZCBjbGFz
cyBDQ1RocmVhZFByb3h5Q29udGV4dFJlY3JlYXRpb25UaW1lcjsKKyAgICBmcmllbmQgY2xhc3Mg
Q0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVUaW1lcjsKIAogICAgIC8vIFNldCBvbiBpbXBsIHRo
cmVhZCwgcmVhZCBvbiBtYWluIHRocmVhZC4KICAgICBzdHJ1Y3QgQmVnaW5GcmFtZUFuZENvbW1p
dFN0YXRlIHsKQEAgLTEyOCw2ICsxMzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RnVsbFJv
b3RMYXllckRhbWFnZU9uSW1wbFRocmVhZCgpOwogICAgIHZvaWQgcmVjcmVhdGVDb250ZXh0T25J
bXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgR3JhcGhpY3NDb250ZXh0M0QqLCBib29sKiBy
ZWNyZWF0ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyopOwogICAgIENDU2No
ZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJ
bnRlcm5hbChib29sIGZvcmNlZERyYXcpOworICAgIHZvaWQgdGV4dHVyZVVwZGF0ZUNvbXBsZXRl
T25JbXBsVGhyZWFkKCk7CiAKICAgICAvLyBBY2Nlc3NlZCBvbiBtYWluIHRocmVhZCBvbmx5Lgog
ICAgIGJvb2wgbV9hbmltYXRlUmVxdWVzdGVkOwpAQCAtMTQ5LDYgKzE1Myw4IEBAIHByaXZhdGU6
CiAKICAgICBSZWZQdHI8Q0NTY29wZWRUaHJlYWRQcm94eT4gbV9tYWluVGhyZWFkUHJveHk7CiAK
KyAgICBPd25QdHI8Q0NUZXh0dXJlVXBkYXRlcj4gbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVh
ZDsKKwogICAgIC8vIEhvbGRzIG9uIHRvIHRoZSBHcmFwaGljc0NvbnRleHQzRCB3ZSBtaWdodCB1
c2UgZm9yIGNvbXBvc2l0aW5nIGluIGJldHdlZW4gaW5pdGlhbGl6ZUNvbnRleHQoKQogICAgIC8v
IGFuZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpIGNhbGxzLgogICAgIFJlZlB0cjxHcmFwaGlj
c0NvbnRleHQzRD4gbV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb25PbkltcGxUaHJlYWQ7CkBA
IC0xNjQsNyArMTcwLDYgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNldCB3aGVuIHRoZSBtYWluIHRo
cmVhZCBpcyB3YWl0aW5nIG9uIGEgY29tbWl0IHRvIGNvbXBsZXRlLgogICAgIENDQ29tcGxldGlv
bkV2ZW50KiBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZDsKLSAgICBPd25QdHI8
Q0NUZXh0dXJlVXBkYXRlcj4gbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQ7CiAK
ICAgICAvLyBTZXQgd2hlbiB0aGUgbmV4dCBkcmF3IHNob3VsZCBwb3N0IGRpZENvbW1pdEFuZERy
YXdGcmFtZSB0byB0aGUgbWFpbiB0aHJlYWQuCiAgICAgYm9vbCBtX25leHRGcmFtZUlzTmV3bHlD
b21taXR0ZWRGcmFtZU9uSW1wbFRocmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZVNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lU291cmNlLmgKaW5kZXggZGNj
YjQ3MGE2MzgzZTMwNGRiMTE2YTViOWRmOTFkZTU2MDY4ZTA4NS4uYzM2NGQ5MmJkMDI4YTIyZmZh
OGEyYTg3ZmMxOTMwYjU4ZGVmOGU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lU291cmNlLmgKQEAgLTUwLDYg
KzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoQ0NUaW1lU291cmNl
Q2xpZW50KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCkgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBhY3RpdmUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgbmV4
dFRpY2tUaW1lKCkgY29uc3QgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggMDE5MDIyNTc3NjYx
ZGQ4OTViYzJiOWNlNjNmYjUwZDUyMWFhYTJhMS4uZGQ5ZjU5ZTVkZDVhN2JjZDc1ZjkxZDM0ZDBi
OWRiNGM3NDJlMDNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0xNDE3LDkgKzE0MTcsOSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1faWRsZVBhaW50Q29udGVudHNDb3VudCsrOwogICAgIH0KIAotICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiAgICAgewotICAgICAg
ICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0
LCB1cGRhdGVyKTsKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXModXBkYXRlcik7CiAgICAgICAgIG1fdXBkYXRlQ291bnQrKzsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAppbmRleCBlNGE1ZDdjOTU5NDRiOTRkNjUzYzE0MTE5NTZi
OWMyOWNjZWQ0NmJmLi5lY2Y0NWIzMzRmNDIzMTI5MWQ4YjI4MjQ5NjAxYmVkMTY1ZDMzNGVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCkBAIC0xOTgsNiArMTk4LDcgQEAgVEVTVChDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RDb21taXRBZnRlckZhaWxlZERyYXdBbGxvd3NEcmF3
SW5TYW1lRnJhbWUKIAogICAgIC8vIEZpbmlzaCB0aGUgY29tbWl0LgogICAgIHN0YXRlLmJlZ2lu
RnJhbWVDb21wbGV0ZSgpOworICAgIHN0YXRlLnNldENhblVwZGF0ZU1vcmVSZXNvdXJjZXModHJ1
ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5f
VVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLnVw
ZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01P
UkVfUkVTT1VSQ0VTKTsKICAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0
ZShmYWxzZSk7CkBAIC0yNDgsNiArMjQ5LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZVRlc3QsIFRlc3RDb21taXRBZnRlckZhaWxlZEFuZFN1Y2Nlc3NmdWxEcmF3RG9lc05vdEEKIAog
ICAgIC8vIEZpbmlzaCB0aGUgY29tbWl0LgogICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgp
OworICAgIHN0YXRlLnNldENhblVwZGF0ZU1vcmVSZXNvdXJjZXModHJ1ZSk7CiAgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVT
T1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsK
ICAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CkBAIC00
NjEsNiArNDYzLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRh
dGVzX05vUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAgIHN0YXRlLnNldENvbW1pdFN0YXRl
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VT
KTsKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyhmYWxzZSk7CiAgICAgc3RhdGUuc2V0VXBkYXRl
TW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOworICAgIHN0YXRlLnNldENhblVwZGF0ZU1vcmVS
ZXNvdXJjZXModHJ1ZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKIAogICAgIC8vIFZl
cmlmeSB3ZSBiZWdpbiB1cGRhdGUsIGJvdGggZm9yIHZzeW5jIGFuZCBub3QgdnN5bmMuCkBAIC00
ODksNiArNDkyLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRh
dGVzX05vUmVkcmF3X1R3b1JvdW5kc09mVXBkYXRlcykKICAgICBzdGF0ZS5zZXRDb21taXRTdGF0
ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNF
Uyk7CiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoZmFsc2UpOwogICAgIHN0YXRlLnNldFVwZGF0
ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKKyAgICBzdGF0ZS5zZXRDYW5VcGRhdGVNb3Jl
UmVzb3VyY2VzKHRydWUpOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CiAKICAgICAvLyBW
ZXJpZnkgdGhlIHVwZGF0ZSBiZWdpbnMsIGJvdGggZm9yIHZzeW5jIGFuZCBub3QgdnN5bmMuCkBA
IC01NDUsNiArNTQ5LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RV
cGRhdGVzX1dpdGhSZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiAgICAgc3RhdGUuc2V0Q29tbWl0
U3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNP
VVJDRVMpOwogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOwogICAgIHN0YXRlLnNldFVw
ZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKKyAgICBzdGF0ZS5zZXRDYW5VcGRhdGVN
b3JlUmVzb3VyY2VzKHRydWUpOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CiAgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVf
UkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCkBAIC02MDQsNiArNjA5LDcgQEAgVEVT
VChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RTZXROZWVkc0NvbW1pdElzTm90TG9z
dCkKIAogICAgIC8vIExldCB0aGUgZnJhbWUgZmluaXNoLgogICAgIHN0YXRlLmJlZ2luRnJhbWVD
b21wbGV0ZSgpOworICAgIHN0YXRlLnNldENhblVwZGF0ZU1vcmVSZXNvdXJjZXModHJ1ZSk7CiAg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJ
TkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0
YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOwpAQCAtNjQ2LDYg
KzY1Miw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xl
KQogCiAgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KICAgICBz
dGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBzdGF0ZS5zZXRDYW5VcGRhdGVNb3JlUmVz
b3VyY2VzKHRydWUpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09N
TUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01P
UkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCkBAIC02OTcsNiArNzA0LDcgQEAg
VEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxsQ3ljbGVXaXRoQ29tbWl0
UmVxdWVzdEluYmV0d2VlbikKIAogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgZnJhbWUg
ZmluaXNoZWQuCiAgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgc3RhdGUuc2V0
Q2FuVXBkYXRlTW9yZVJlc291cmNlcyh0cnVlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1p
dFN0YXRlKCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKIApAQCAt
NzU0LDYgKzc2Miw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0R29l
c0ludmlzaWJsZU1pZENvbW1pdCkKIAogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgZnJh
bWUgZmluaXNoZWQKICAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBzdGF0ZS5z
ZXRDYW5VcGRhdGVNb3JlUmVzb3VyY2VzKHRydWUpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29t
bWl0U3RhdGUoKSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCkBA
IC04NjEsNiArODcwLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RD
b250ZXh0TG9zdFdoaWxlQ29tbWl0SW5Qcm9ncmVzcykKIAogICAgIC8vIEZpbmlzaCB0aGUgZnJh
bWUsIHVwZGF0ZSByZXNvdXJjZXMsIGFuZCBjb21taXQuCiAgICAgc3RhdGUuYmVnaW5GcmFtZUNv
bXBsZXRlKCk7CisgICAgc3RhdGUuc2V0Q2FuVXBkYXRlTW9yZVJlc291cmNlcyh0cnVlKTsKICAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVf
TU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUudXBkYXRlU3Rh
dGUoc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwpAQCAtOTA1LDYgKzkxNSw3
IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29udGV4dExvc3RXaGls
ZUNvbW1pdEluUHJvZ3Jlc3NBbmRBbm90aGVyCiAKICAgICAvLyBGaW5pc2ggdGhlIGZyYW1lLCB1
cGRhdGUgcmVzb3VyY2VzLCBhbmQgY29tbWl0LgogICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0
ZSgpOworICAgIHN0YXRlLnNldENhblVwZGF0ZU1vcmVSZXNvdXJjZXModHJ1ZSk7CiAgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVf
UkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0
YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKQEAgLTk3MSw2ICs5ODIsNyBAQCBU
RVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEJlZ2luRnJhbWVXaGVuQ29tbWl0
SW5Qcm9ncmVzcykKICAgICBzdGF0ZS5zZXROZWVkc0ZvcmNlZENvbW1pdCh0cnVlKTsKIAogICAg
IHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOworICAgIHN0YXRlLnNldENhblVwZGF0ZU1vcmVS
ZXNvdXJjZXModHJ1ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwog
ICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigp
KTsKQEAgLTk5Myw0ICsxMDA1LDUyIEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0QmVnaW5GcmFtZVdoZW5Db250ZXh0TG9zdCkKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsK
IH0KIAorVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RDYW5VcGRhdGVNb3Jl
UmVzb3VyY2VzKQoreworICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNp
YmxlKHRydWUpOworICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOworCisgICAgLy8gU3Rh
cnQgY2xlYW4gYW5kIHNldCBjb21taXQuCisgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7
CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJB
TUUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBCZWdpbiB0aGUgZnJhbWUuCisgICAg
c3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9G
UkFNRSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RB
VEVfRlJBTUVfSU5fUFJPR1JFU1MsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9G
QUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gVGVs
bCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KKyAgICBzdGF0ZS5iZWdpbkZyYW1l
Q29tcGxldGUoKTsKKyAgICBzdGF0ZS5zZXRDYW5VcGRhdGVNb3JlUmVzb3VyY2VzKHRydWUpOwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFU
SU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSB1cGRh
dGUgYmVnYW4gYW5kIGZpbmlzaGVkLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKKyAgICBz
dGF0ZS5zZXRDYW5VcGRhdGVNb3JlUmVzb3VyY2VzKGZhbHNlKTsKKyAgICBzdGF0ZS5iZWdpblVw
ZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNv
bW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBBdCB2c3luYywgZHJhdy4K
KyAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigpKTsK
KyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RS
QVdfSUZfUE9TU0lCTEUpOworICAgIHN0YXRlLmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGVkKHRy
dWUpOworICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKKworICAgIC8vIFRlbGwgdGhlIHNjaGVk
dWxlciB0aGF0IHdlIGNhbiB1cGRhdGUgbW9yZSByZXNvdXJjZXMuCisgICAgc3RhdGUuc2V0Q2Fu
VXBkYXRlTW9yZVJlc291cmNlcyh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0
YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JF
R0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8v
IFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgc2Vjb25kIHVwZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQK
KyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JF
R0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CisgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVz
b3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwgc3RhdGUuY29tbWl0U3RhdGUoKSk7
CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKaW5kZXggYzg2NzdmMTE4YWUwYzYwOGY5ZDcxNzQz
OWU1NzVkZGFhZjI4NTBmNy4uOWY3ZmYxM2Y5MDU0ZmQxMjc2NmYxZjcyMjZiOWI0MGM0OGQwNDJj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0
LmNwcApAQCAtNDgsMTAgKzQ4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9kcmF3V2lsbEhhcHBl
biA9IHRydWU7CiAgICAgICAgIG1fc3dhcFdpbGxIYXBwZW5JZkRyYXdIYXBwZW5zID0gdHJ1ZTsK
ICAgICAgICAgbV9udW1EcmF3cyA9IDA7CisgICAgICAgIG1fbWF4UmVzb3VyY2VVcGRhdGVUaW1l
ID0gMDsKICAgICB9CiAKICAgICB2b2lkIHNldEhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoYm9vbCBi
KSB7IG1faGFzTW9yZVJlc291cmNlVXBkYXRlcyA9IGI7IH0KICAgICB2b2lkIHNldENhbkRyYXco
Ym9vbCBiKSB7IG1fY2FuRHJhdyA9IGI7IH0KKyAgICB2b2lkIHNldE1heFJlc291cmNlVXBkYXRl
VGltZShkb3VibGUgdCkgeyBtX21heFJlc291cmNlVXBkYXRlVGltZSA9IHQ7IH0KIAogICAgIGlu
dCBudW1EcmF3cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtRHJhd3M7IH0KICAgICBpbnQgbnVtQWN0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obV9hY3Rpb25zLnNpemUoKSk7
IH0KQEAgLTY3LDYgKzY5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGNhbkRyYXco
KSB7IHJldHVybiBtX2NhbkRyYXc7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzTW9yZVJlc291cmNl
VXBkYXRlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzTW9yZVJlc291cmNlVXBkYXRlczsgfQorICAg
IHZpcnR1YWwgZG91YmxlIG1heFJlc291cmNlVXBkYXRlVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWF4UmVzb3VyY2VVcGRhdGVUaW1lOyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlv
bkJlZ2luRnJhbWUoKSB7IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkJlZ2lu
RnJhbWUiKTsgfQogICAgIHZpcnR1YWwgQ0NTY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJlc3Vs
dCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUoKQogICAgIHsKQEAgLTkzLDYg
Kzk2LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9jYW5EcmF3OwogICAgIGJvb2wgbV9kcmF3
V2lsbEhhcHBlbjsKICAgICBib29sIG1fc3dhcFdpbGxIYXBwZW5JZkRyYXdIYXBwZW5zOworICAg
IGRvdWJsZSBtX21heFJlc291cmNlVXBkYXRlVGltZTsKICAgICBpbnQgbV9udW1EcmF3czsKICAg
ICBzdGQ6OnZlY3Rvcjxjb25zdCBjaGFyKj4gbV9hY3Rpb25zOwogfTsKQEAgLTExMiwxMiArMTE2
LDEwIEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0Q29tbWl0KQogICAgIGNsaWVudC5y
ZXNldCgpOwogCiAgICAgLy8gU2luY2UsIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMgaXMgc2V0IHRv
IGZhbHNlLAotICAgIC8vIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQgdXBkYXRlTW9yZVJlc291
cmNlcywgdGhlbgotICAgIC8vIGNvbW1pdAorICAgIC8vIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91
bGQganVzdCBjb21taXQKICAgICBzY2hlZHVsZXItPmJlZ2luRnJhbWVDb21wbGV0ZSgpOwotICAg
IEVYUEVDVF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNj
aGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0aW9uKDApKTsKLSAg
ICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24oMSkp
OworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RS
RVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24oMCkpOwogICAgIEVYUEVD
VF9UUlVFKHRpbWVTb3VyY2UtPmFjdGl2ZSgpKTsKICAgICBjbGllbnQucmVzZXQoKTsKIApAQCAt
MTQ5LDEyICsxNTEsMTAgQEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXRBZnRl
ckJlZ2luRnJhbWUpCiAgICAgc2NoZWR1bGVyLT5zZXROZWVkc0NvbW1pdCgpOwogCiAgICAgLy8g
U2luY2UsIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMgaXMgc2V0IHRvIGZhbHNlLCBhbmQgYW5vdGhl
ciBjb21taXQgaXMKLSAgICAvLyBuZWVkZWQsIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQgdXBk
YXRlTW9yZVJlc291cmNlcywgdGhlbiBjb21taXQsIHRoZW4KLSAgICAvLyBiZWdpbiBhbm90aGVy
IGZyYW1lLgorICAgIC8vIG5lZWRlZCwgYmVnaW5GcmFtZUNvbXBsZXRlIHNob3VsZCBjb21taXQs
IHRoZW4gYmVnaW4gYW5vdGhlciBmcmFtZS4KICAgICBzY2hlZHVsZXItPmJlZ2luRnJhbWVDb21w
bGV0ZSgpOwotICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKLSAgICBFWFBF
Q1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0
aW9uKDApKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVu
dC5hY3Rpb24oMSkpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAg
ICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24oMCkp
OwogICAgIGNsaWVudC5yZXNldCgpOwogCiAgICAgLy8gVGljayBzaG91bGQgZHJhdyBidXQgdGhl
biBiZWdpbiBhbm90aGVyIGZyYW1lLgpAQCAtNDMwLDQgKzQzMCw2OCBAQCBURVNUKENDU2NoZWR1
bGVyVGVzdCwgTm9CZWdpbkZyYW1lV2hlblN3YXBGYWlsc0R1cmluZ0ZvcmNlZENvbW1pdCkKICAg
ICBFWFBFQ1RfRVEoMCwgY29udHJvbGxlclB0ci0+bnVtRnJhbWVzUGVuZGluZygpKTsKIH0KIAor
VEVTVChDQ1NjaGVkdWxlclRlc3QsIFVwZGF0ZU1vcmVSZXNvdXJjZXMpCit7CisgICAgRmFrZUND
U2NoZWR1bGVyQ2xpZW50IGNsaWVudDsKKyAgICBSZWZQdHI8RmFrZUNDVGltZVNvdXJjZT4gdGlt
ZVNvdXJjZSA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NUaW1lU291cmNlKCkpOworICAgIE93blB0cjxD
Q1NjaGVkdWxlcj4gc2NoZWR1bGVyID0gQ0NTY2hlZHVsZXI6OmNyZWF0ZSgmY2xpZW50LCBhZG9w
dFB0cihuZXcgQ0NGcmFtZVJhdGVDb250cm9sbGVyKHRpbWVTb3VyY2UpKSk7CisgICAgc2NoZWR1
bGVyLT5zZXRWaXNpYmxlKHRydWUpOworCisgICAgLy8gU2V0TmVlZHNDb21taXQgc2hvdWxkIGJl
Z2luIHRoZSBmcmFtZS4KKyAgICBzY2hlZHVsZXItPnNldE5lZWRzQ29tbWl0KCk7CisgICAgRVhQ
RUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1
bGVkQWN0aW9uQmVnaW5GcmFtZSIsIGNsaWVudC5hY3Rpb24oMCkpOworICAgIGNsaWVudC5yZXNl
dCgpOworCisgICAgLy8gU2luY2UsIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMgaXMgc2V0IHRvIHRy
dWUsIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQKKyAgICAvLyB1cGRhdGVNb3JlUmVzb3VyY2Vz
LgorICAgIGNsaWVudC5zZXRIYXNNb3JlUmVzb3VyY2VVcGRhdGVzKHRydWUpOworICAgIHNjaGVk
dWxlci0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1B
Y3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJl
c291cmNlcyIsIGNsaWVudC5hY3Rpb24oMCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAg
Y2xpZW50LnNldEhhc01vcmVSZXNvdXJjZVVwZGF0ZXModHJ1ZSk7CisgICAgc2NoZWR1bGVyLT5k
aWRVcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50
Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVN
b3JlUmVzb3VyY2VzIiwgY2xpZW50LmFjdGlvbigwKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisK
KyAgICAvLyBTaW5jZSwgU2V0TmVlZFJlZHJhdyBpcyBzZXQgdG8gdHJ1ZSwgcmVzb3VyY2UgdXBk
YXRlcyBzaG91bGQgYmUKKyAgICAvLyBhdm9pZGVkIGFzIHdlIGdldCBjbG9zZSB0byB0aGUgbmV4
dCB0aWNrIHRpbWUuCisgICAgc2NoZWR1bGVyLT5zZXROZWVkc1JlZHJhdygpOworICAgIEVYUEVD
VF9UUlVFKHNjaGVkdWxlci0+cmVkcmF3UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfVFJVRSh0aW1l
U291cmNlLT5hY3RpdmUoKSk7CisgICAgRVhQRUNUX0VRKDAsIGNsaWVudC5udW1EcmF3cygpKTsK
KworICAgIC8vIFNpbmNlLCBtYXhSZXNvdXJjZVVwZGF0ZVRpbWUgaXMgNSBzZWNvbmRzIGFuZCBu
ZXh0VGlja1RpbWUgaXMgMQorICAgIC8vIHNlY29uZCBhd2F5LCBkaWRVcGRhdGVNb3JlUmVzb3Vy
Y2VzQ29tcGxldGUgc2hvdWxkIG5vdCBiZWdpbiBhbm90aGVyCisgICAgLy8gdXBkYXRlLgorICAg
IGNsaWVudC5zZXRIYXNNb3JlUmVzb3VyY2VVcGRhdGVzKHRydWUpOworICAgIGNsaWVudC5zZXRN
YXhSZXNvdXJjZVVwZGF0ZVRpbWUoNSk7CisgICAgdGltZVNvdXJjZS0+c2V0TmV4dFRpY2tUaW1l
KG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpICsgMSk7CisgICAgc2NoZWR1bGVyLT5kaWRV
cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoMCwgY2xpZW50Lm51
bUFjdGlvbnMoKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBTaW5jZSwgbWF4UmVz
b3VyY2VVcGRhdGVUaW1lIGlzIDUgc2Vjb25kcyBhbmQgbmV4dFRpY2tUaW1lIGlzIDEwCisgICAg
Ly8gc2Vjb25kcyBhd2F5LCBkaWRVcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUgc2hvdWxkIGJl
Z2luIGFub3RoZXIKKyAgICAvLyB1cGRhdGUuCisgICAgY2xpZW50LnNldEhhc01vcmVSZXNvdXJj
ZVVwZGF0ZXModHJ1ZSk7CisgICAgY2xpZW50LnNldE1heFJlc291cmNlVXBkYXRlVGltZSg1KTsK
KyAgICB0aW1lU291cmNlLT5zZXROZXh0VGlja1RpbWUobW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lKCkgKyAxMCk7CisgICAgc2NoZWR1bGVyLT5kaWRVcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxl
dGUoKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNU
X1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50LmFjdGlv
bigwKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBTaW5jZSwgaGFzTW9yZVJlc291
cmNlVXBkYXRlcyBpcyBzZXQgdG8gZmFsc2UsCisgICAgLy8gZGlkVXBkYXRlTW9yZVJlc291cmNl
c0NvbXBsZXRlIHNob3VsZCBjb21taXQuCisgICAgY2xpZW50LnNldEhhc01vcmVSZXNvdXJjZVVw
ZGF0ZXMoZmFsc2UpOworICAgIHNjaGVkdWxlci0+ZGlkVXBkYXRlTW9yZVJlc291cmNlc0NvbXBs
ZXRlKCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVD
VF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgY2xpZW50LmFjdGlvbigwKSk7CisgICAg
Y2xpZW50LnJlc2V0KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0Q29tbW9uLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDU2NoZWR1bGVyVGVzdENvbW1vbi5oCmluZGV4IDBjMTA1NTg4YjE0MmY3NjE5Mzcy
MmU2Mjg4ZTE5ODk2NTNhOTQ5ODQuLjE3ZTlhZGIxYjNlMWQ3OWRiMDQ3NTU1YjZmNzQwNTUxMDVl
NzM4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVs
ZXJUZXN0Q29tbW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVk
dWxlclRlc3RDb21tb24uaApAQCAtODYsNiArODYsNyBAQCBjbGFzcyBGYWtlQ0NUaW1lU291cmNl
IDogcHVibGljIFdlYkNvcmU6OkNDVGltZVNvdXJjZSB7CiBwdWJsaWM6CiAgICAgRmFrZUNDVGlt
ZVNvdXJjZSgpCiAgICAgICAgIDogbV9hY3RpdmUoZmFsc2UpCisgICAgICAgICwgbV9uZXh0VGlj
a1RpbWUoMCkKICAgICAgICAgLCBtX2NsaWVudCgwKSB7IH0KIAogICAgIHZpcnR1YWwgfkZha2VD
Q1RpbWVTb3VyY2UoKSB7IH0KQEAgLTkzLDYgKzk0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzZXRDbGllbnQoV2ViQ29yZTo6Q0NUaW1lU291cmNlQ2xpZW50KiBjbGllbnQpIHsgbV9j
bGllbnQgPSBjbGllbnQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wgYikgeyBt
X2FjdGl2ZSA9IGI7IH0KICAgICB2aXJ0dWFsIGJvb2wgYWN0aXZlKCkgY29uc3QgeyByZXR1cm4g
bV9hY3RpdmU7IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSBuZXh0VGlja1RpbWUoKSBjb25zdCB7IHJl
dHVybiBtX25leHRUaWNrVGltZTsgfQogCiAgICAgdm9pZCB0aWNrKCkKICAgICB7CkBAIC0xMDEs
OCArMTAzLDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fY2xpZW50LT5vblRpbWVyVGljaygp
OwogICAgIH0KIAorICAgIHZvaWQgc2V0TmV4dFRpY2tUaW1lKGRvdWJsZSBuZXh0VGlja1RpbWUp
IHsgbV9uZXh0VGlja1RpbWUgPSBuZXh0VGlja1RpbWU7IH0KKwogcHJvdGVjdGVkOgogICAgIGJv
b2wgbV9hY3RpdmU7CisgICAgZG91YmxlIG1fbmV4dFRpY2tUaW1lOwogICAgIFdlYkNvcmU6OkND
VGltZVNvdXJjZUNsaWVudCogbV9jbGllbnQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcAppbmRleCA2MDNk
NDIxNjAwMDZjYmNjMGMwZmQ2ODVkZTQ4ZTU5OWU2MzhhMTRjLi5jNDQ1YmE2ZjFlYTE1OTQ4YWU0
YzRjNWVhNTM0Njg1MzkwMGZiNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHAKQEAgLTEyNiw4ICsxMjYsOCBA
QCBGYWtlVGlsZWRMYXllcldpdGhTY2FsZWRCb3VuZHM6OkZha2VUaWxlZExheWVyV2l0aFNjYWxl
ZEJvdW5kcyhUZXh0dXJlTWFuYWdlciogdAogewogfQogCi1GYWtlQ0NUZXh0dXJlVXBkYXRlcjo6
RmFrZUNDVGV4dHVyZVVwZGF0ZXIoKQotICAgIDogQ0NUZXh0dXJlVXBkYXRlcigmbV90ZXh0dXJl
QWxsb2NhdG9yLCAmbV90ZXh0dXJlQ29waWVyKQorRmFrZUNDVGV4dHVyZVVwZGF0ZXI6OkZha2VD
Q1RleHR1cmVVcGRhdGVyKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorICAg
IDogQ0NUZXh0dXJlVXBkYXRlcihjb250ZXh0LCAmbV90ZXh0dXJlQWxsb2NhdG9yLCAmbV90ZXh0
dXJlQ29waWVyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCmluZGV4IGVmYjhhZTg1Y2FjNmVlZTFkNTdiNWIw
OGNmNGI5Y2M2MGM0YjFkNmMuLmQ3MzMzN2JmNjNiODg2MjQ5ZTU2N2E2ZGNmYThkZWVkZDg1OTZh
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVy
VGVzdENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExh
eWVyVGVzdENvbW1vbi5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaWZuZGVmIENDVGlsZWRMYXllclRl
c3RDb21tb25faAogI2RlZmluZSBDQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uX2gKIAorI2luY2x1ZGUg
IkZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNE
LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKQEAgLTE2MCw3
ICsxNjEsNyBAQCBwdWJsaWM6CiAKIGNsYXNzIEZha2VDQ1RleHR1cmVVcGRhdGVyIDogcHVibGlj
IFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgotICAgIGV4cGxpY2l0IEZha2VD
Q1RleHR1cmVVcGRhdGVyKCk7CisgICAgZXhwbGljaXQgRmFrZUNDVGV4dHVyZVVwZGF0ZXIoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0QqKTsKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yJiB0
ZXh0dXJlQWxsb2NhdG9yKCkgeyByZXR1cm4gbV90ZXh0dXJlQWxsb2NhdG9yOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVt
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJv
bWl1bVRlc3QuY3BwCmluZGV4IGVhM2Q0MGZmZTA4MTA4YmZkMTlhZDcyNjU4NWVjNTQ4YjkzNDIz
YzkuLjZjZmRhZTJjNjMzZWZkMWU2ZGM0ZDMzOWVmMzg3ZWE2NmVjNzI2OGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21p
dW1UZXN0LmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHByb3RlY3RlZDoKIAogICAgICAgICBNb2Nr
VGV4dHVyZUFsbG9jYXRvciBhbGxvY2F0b3JNb2NrOwogICAgICAgICBNb2NrVGV4dHVyZUNvcGll
ciBjb3BpZXJNb2NrOwotICAgICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJmFsbG9jYXRv
ck1vY2ssICZjb3BpZXJNb2NrKTsKKyAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKGlt
cGxDb250ZXh0LmdldCgpLCAmYWxsb2NhdG9yTW9jaywgJmNvcGllck1vY2spOwogCiAgICAgICAg
IGNvbnN0IEludFNpemUgc2l6ZSgzMDAsIDE1MCk7CiAKQEAgLTE1Niw3ICsxNTYsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgICAgICBPd25QdHI8Q0NMYXllckltcGw+IGxheWVySW1wbCA9IGNhbnZh
cy0+Y3JlYXRlQ0NMYXllckltcGwoKTsKICAgICAgICAgICAgIEVYUEVDVF9FUSgwdSwgc3RhdGlj
X2Nhc3Q8Q0NUZXh0dXJlTGF5ZXJJbXBsKj4obGF5ZXJJbXBsLmdldCgpKS0+dGV4dHVyZUlkKCkp
OwogCi0gICAgICAgICAgICBjYW52YXMtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoaW1wbENv
bnRleHQuZ2V0KCksIHVwZGF0ZXIpOworICAgICAgICAgICAgY2FudmFzLT51cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgICAgICAgICAgY2FudmFzLT5wdXNoUHJvcGVydGll
c1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAgICAgICAgIGlmICh0aHJlYWRlZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QuY3BwCmluZGV4IDE1MGQ2NWQ1OThmODMxYjRmM2FjODFkMGJkODdlMTdkNjg1NDQ2MmEuLjVj
YTNhNTAyNjkwN2RjNzA3YWFiMThiOGY2YTA0MzUzYjBjZGMzMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApA
QCAtNzIsMTMgKzcyLDEzIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5
VGlsZXMpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3du
UHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1Rp
bGVkTGF5ZXJJbXBsKDApKSk7CiAKLSAgICBGYWtlQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOwor
ICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoMCk7CiAKICAgICAvLyBUaGUgdGlsZSBz
aXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0
aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXll
ci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwotICAgIGxheWVyLT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1Rv
KGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgaGF2ZSBib3RoIHRpbGVzIG9u
IHRoZSBpbXBsIHNpZGUuCkBAIC05MSw3ICs5MSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApKTsKICAgICAvLyAuLi4uYnV0IHRoZW4gb25seSB1cGRhdGUgb25lIG9m
IHRoZW0uCiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMTAw
KSwgMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7
CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7CiAgICAgbGF5
ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3Vs
ZCBvbmx5IGhhdmUgdGhlIGZpcnN0IHRpbGUgc2luY2UgdGhlIG90aGVyIHRpbGUgd2FzIGludmFs
aWRhdGVkIGJ1dCBub3QgcGFpbnRlZC4KQEAgLTEwNyw3ICsxMDcsNyBAQCBURVNUKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHB1c2hPY2NsdWRlZERpcnR5VGlsZXMpCiAgICAgT3duUHRyPEZha2VD
Q1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJ
bXBsKDApKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKIAotICAgIEZh
a2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAgRmFrZUNDVGV4dHVyZVVwZGF0ZXIgdXBk
YXRlcigwKTsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZh
bGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5zZXRCb3VuZHMo
SW50U2l6ZSgxMDAsIDIwMCkpOwpAQCAtMTE1LDcgKzExNSw3IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgcHVzaE9jY2x1ZGVkRGlydHlUaWxlcykKICAgICBsYXllci0+c2V0VmlzaWJs
ZUxheWVyUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRh
dGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAmb2NjbHVkZWQpOwotICAgIGxheWVyLT51cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxh
eWVySW1wbC5nZXQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJp
Y3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCAwLCAxKTsKQEAgLTEzMyw3ICsxMzMsNyBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hPY2NsdWRlZERpcnR5VGlsZXMpCiAgICAgLy8g
Li4uLmJ1dCB0aGUgYXJlYSBpcyBvY2NsdWRlZC4KICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24o
SW50UmVjdCgwLCAwLCA1MCwgNTApKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApLCAmb2NjbHVkZWQpOwotICAgIGxheWVyLT51cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5n
ZXQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhl
bHNEcmF3bk9wYXF1ZSgpLCAwLCAxKTsKQEAgLTE1MiwxMyArMTUyLDEzIEBAIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgcHVzaERlbGV0ZWRUaWxlcykKICAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxh
eWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpKTsKIAotICAgIEZh
a2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAgRmFrZUNDVGV4dHVyZVVwZGF0ZXIgdXBk
YXRlcigwKTsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZh
bGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5zZXRCb3VuZHMo
SW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAs
IDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDEwMCwgMjAwKSwgMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwg
dXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7
CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8v
IFdlIHNob3VsZCBoYXZlIGJvdGggdGlsZXMgb24gdGhlIGltcGwgc2lkZS4KQEAgLTE3OCw3ICsx
NzgsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEZWxldGVkVGlsZXMpCiAK
ICAgICAvLyBUaGlzIHNob3VsZCByZWNyZWF0ZSBhbmQgdXBkYXRlIHRoZSBkZWxldGVkIHRleHR1
cmVzLgogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCks
IDApOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwor
ICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgIGxheWVy
LT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQg
b25seSBoYXZlIHRoZSBmaXJzdCB0aWxlIHNpbmNlIHRoZSBvdGhlciB0aWxlIHdhcyBpbnZhbGlk
YXRlZCBidXQgbm90IHBhaW50ZWQuCkBAIC0xOTMsNyArMTkzLDcgQEAgVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAgICAgRGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXll
ckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKSk7CiAKLSAgICBGYWtl
Q0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOworICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0
ZXIoMCk7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuIFNldHVwIDV4NSB0aWxl
cyB3aXRoIG9uZSB2aXNpYmxlIHRpbGUgaW4gdGhlIGNlbnRlci4KICAgICBJbnRTaXplIGNvbnRl
bnRCb3VuZHMoNTAwLCA1MDApOwpAQCAtMjA5LDcgKzIwOSw3IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQogICAgIC8vIFdlIHNob3VsZCBuZWVkIGlk
bGUtcGFpbnRpbmcgZm9yIDN4MyB0aWxlcyBpbiB0aGUgY2VudGVyLgogICAgIEVYUEVDVF9UUlVF
KGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5ZXItPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXModXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5
ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIG9uZSB0aWxlIG9uIHRoZSBp
bXBsIHNpZGUuCkBAIC0yMjIsNyArMjIyLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAgICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlz
aWJsZVJlY3QsIDApOwogICAgICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFpbnQo
dmlzaWJsZVJlY3QpKTsKICAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJs
ZVJlY3QsIDApOwotICAgICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1
cGRhdGVyKTsKKyAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRl
cik7CiAgICAgICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAg
ICAgICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwogICAgIH0KQEAg
LTI1MSw3ICsyNTEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0Fm
dGVySWRsZVBhaW50RmFpbGVkKQogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBs
YXllcjIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdl
ci5nZXQoKSkpOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsMihh
ZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpKTsKIAotICAgIEZha2VDQ1RleHR1
cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAgRmFrZUNDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigwKTsK
IAogICAgIC8vIEZvciB0aGlzIHRlc3Qgd2UgaGF2ZSB0d28gbGF5ZXJzLiBsYXllcjEgZXhoYXVz
dHMgbW9zdCB0ZXh0dXJlIG1lbW9yeSwgbGVhdmluZyByb29tIGZvciAyIG1vcmUgdGlsZXMgZnJv
bQogICAgIC8vIGxheWVyMiwgYnV0IG5vdCBhbGwgdGhyZWUgdGlsZXMuIEZpcnN0IHdlIHBhaW50
IGxheWVyMSwgYW5kIG9uZSB0aWxlIGZyb20gbGF5ZXIyLiBUaGVuIHdoZW4gd2UgaWRsZSBwYWlu
dApAQCAtMjc3LDkgKzI3Nyw5IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRp
bGVzQWZ0ZXJJZGxlUGFpbnRGYWlsZWQpCiAgICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5uZWVkc0lk
bGVQYWludChsYXllcjJSZWN0KSk7CiAKICAgICAvLyBDb21taXQgdGhlIGZyYW1lIG92ZXIgdG8g
aW1wbC4KLSAgICBsYXllcjEtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7
Ci0gICAgbGF5ZXIyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwotICAg
IHVwZGF0ZXIudXBkYXRlKDAsIDUwMDApOworICAgIGxheWVyMS0+dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyh1cGRhdGVyKTsKKyAgICBsYXllcjItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
dXBkYXRlcik7CisgICAgdXBkYXRlci51cGRhdGUoNTAwMCk7CiAgICAgbGF5ZXIxLT5wdXNoUHJv
cGVydGllc1RvKGxheWVySW1wbDEuZ2V0KCkpOwogICAgIGxheWVyMi0+cHVzaFByb3BlcnRpZXNU
byhsYXllckltcGwyLmdldCgpKTsKIApAQCAtMjg4LDkgKzI4OCw5IEBAIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgcHVzaFRpbGVzQWZ0ZXJJZGxlUGFpbnRGYWlsZWQpCiAgICAgbGF5ZXIy
LT5wcmVwYXJlVG9VcGRhdGVJZGxlKGxheWVyMlJlY3QsIDApOwogCiAgICAgLy8gT2ggd2VsbCwg
Y29tbWl0IHRoZSBmcmFtZSBhbmQgcHVzaC4KLSAgICBsYXllcjEtPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoMCwgdXBkYXRlcik7Ci0gICAgbGF5ZXIyLT51cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKDAsIHVwZGF0ZXIpOwotICAgIHVwZGF0ZXIudXBkYXRlKDAsIDUwMDApOworICAgIGxheWVy
MS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKKyAgICBsYXllcjItPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7CisgICAgdXBkYXRlci51cGRhdGUoNTAwMCk7
CiAgICAgbGF5ZXIxLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbDEuZ2V0KCkpOwogICAgIGxh
eWVyMi0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwyLmdldCgpKTsKIApAQCAtMzA5LDkgKzMw
OSw5IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzQWZ0ZXJJZGxlUGFp
bnRGYWlsZWQpCiAgICAgbGF5ZXIyLT5wcmVwYXJlVG9VcGRhdGUobGF5ZXIyUmVjdCwgMCk7CiAg
ICAgbGF5ZXIxLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgpLCAwKTsKIAotICAgIGxheWVyMS0+
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKLSAgICBsYXllcjItPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7Ci0gICAgdXBkYXRlci51cGRhdGUoMCwg
NTAwMCk7CisgICAgbGF5ZXIxLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwor
ICAgIGxheWVyMi0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKKyAgICB1cGRh
dGVyLnVwZGF0ZSg1MDAwKTsKICAgICBsYXllcjEtPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBs
MS5nZXQoKSk7CiAgICAgbGF5ZXIyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbDIuZ2V0KCkp
OwogCkBAIC0zMzEsNyArMzMxLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNo
SWRsZVBhaW50ZWRPY2NsdWRlZFRpbGVzKQogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1w
bD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSkpOwogICAg
IFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVkZWQ7CiAKLSAgICBGYWtlQ0NUZXh0dXJlVXBk
YXRlciB1cGRhdGVyOworICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoMCk7CiAKICAg
ICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgb25lIG9j
Y2x1ZGVkIHRpbGUsIGN1bGxzIGl0IGR1cmluZyBwYWludCwgYnV0IHByZXBhaW50cyBpdC4KICAg
ICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwpAQCAtMzQy
LDcgKzM0Miw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludGVk
T2NjbHVkZWRUaWxlcykKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCkpOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAs
IDEwMCksICZvY2NsdWRlZCk7CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUoSW50UmVj
dCgwLCAwLCAxMDAsIDEwMCksICZvY2NsdWRlZCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXModXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdl
dCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIHRoZSBwcmVwYWludGVkIHRpbGUgb24gdGhl
IGltcGwgc2lkZS4KQEAgLTM1Niw3ICszNTYsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHB1c2hUaWxlc01hcmtlZERpcnR5RHVyaW5nUGFpbnQpCiAgICAgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBs
YXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKSk7CiAKLSAgICBG
YWtlQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOworICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVw
ZGF0ZXIoMCk7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52
YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICAvLyBIb3dldmVyLCBkdXJp
bmcgdGhlIHBhaW50LCB3ZSBpbnZhbGlkYXRlIG9uZSBvZiB0aGUgdGlsZXMuIFRoaXMgc2hvdWxk
CkBAIC0zNjUsNyArMzY1LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGls
ZXNNYXJrZWREaXJ0eUR1cmluZ1BhaW50KQogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRS
ZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVjdCgwLCA1MCwgMTAwLCA1MCksIGxheWVyLmdl
dCgpKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDAp
LCAwKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsK
KyAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKICAgICBsYXll
ci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxk
IGhhdmUgYm90aCB0aWxlcyBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtMzgyLDcgKzM4Miw3IEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTGF5ZXJNYXJrZWREaXJ0eUR1cmlu
Z1BhaW50T25OZXh0TGF5ZXIpCiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXll
cjFJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSkpOwogICAgIE93blB0
cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXIySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGls
ZWRMYXllckltcGwoMCkpKTsKIAotICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7Cisg
ICAgRmFrZUNDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigwKTsKIAogICAgIGxheWVyMS0+c2V0Qm91
bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllcjEtPmludmFsaWRhdGVSZWN0KEludFJl
Y3QoMCwgMCwgMTAwLCAyMDApKTsKQEAgLTM5NSw4ICszOTUsOCBAQCBURVNUKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHB1c2hUaWxlc0xheWVyTWFya2VkRGlydHlEdXJpbmdQYWludE9uTmV4dExh
eWVyKQogICAgIGxheWVyMi0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRvSW52
YWxpZGF0ZShJbnRSZWN0KDAsIDUwLCAxMDAsIDUwKSwgbGF5ZXIxLmdldCgpKTsKICAgICBsYXll
cjItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAKLSAgICBs
YXllcjEtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7Ci0gICAgbGF5ZXIy
LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyMS0+dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKKyAgICBsYXllcjItPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXModXBkYXRlcik7CiAKICAgICBsYXllcjEtPnB1c2hQcm9wZXJ0aWVzVG8o
bGF5ZXIxSW1wbC5nZXQoKSk7CiAgICAgbGF5ZXIyLT5wdXNoUHJvcGVydGllc1RvKGxheWVyMklt
cGwuZ2V0KCkpOwpAQCAtNDE3LDcgKzQxNyw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgcHVzaFRpbGVzTGF5ZXJNYXJrZWREaXJ0eUR1cmluZ1BhaW50T25QcmV2aW91c0xheWVyCiAg
ICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllcjFJbXBsKGFkb3B0UHRyKG5ldyBG
YWtlQ0NUaWxlZExheWVySW1wbCgwKSkpOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1w
bD4gbGF5ZXIySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpKTsKIAot
ICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAgRmFrZUNDVGV4dHVyZVVwZGF0
ZXIgdXBkYXRlcigwKTsKIAogICAgIGxheWVyMS0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDAp
KTsKICAgICBsYXllcjEtPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsK
QEAgLTQzMCw4ICs0MzAsOCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxl
c0xheWVyTWFya2VkRGlydHlEdXJpbmdQYWludE9uUHJldmlvdXNMYXllcgogCiAgICAgbGF5ZXIy
LT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogCi0gICAgbGF5
ZXIxLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwotICAgIGxheWVyMi0+
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllcjEtPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7CisgICAgbGF5ZXIyLT51cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogCiAgICAgbGF5ZXIxLT5wdXNoUHJvcGVydGllc1RvKGxh
eWVyMUltcGwuZ2V0KCkpOwogICAgIGxheWVyMi0+cHVzaFByb3BlcnRpZXNUbyhsYXllcjJJbXBs
LmdldCgpKTsKQEAgLTQ1OCw3ICs0NTgsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IGlkbGVQYWludE91dE9mTWVtb3J5KQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBs
VGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0
UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSkpOwogCi0gICAgRmFrZUNDVGV4dHVyZVVw
ZGF0ZXIgdXBkYXRlcjsKKyAgICBGYWtlQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKDApOwogCiAg
ICAgLy8gVGhpcyBpbnZhbGlkYXRlcyA5IHRpbGVzIGFuZCB0aGVuIHBhaW50cyBvbmUgdmlzaWJs
ZSB0aWxlLgogICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5kcyk7CkBAIC00NjksNyAr
NDY5LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9y
eSkKICAgICAvLyBXZSBzaG91bGQgbmVlZCBpZGxlLXBhaW50aW5nIGZvciAzeDMgdGlsZXMgc3Vy
b3VuZGluZyB2aXNpYmxlIHRpbGUuCiAgICAgRVhQRUNUX1RSVUUobGF5ZXItPm5lZWRzSWRsZVBh
aW50KHZpc2libGVSZWN0KSk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRh
dGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAg
ICAgLy8gV2Ugc2hvdWxkIGhhdmUgb25lIHRpbGUgb24gdGhlIGltcGwgc2lkZS4KQEAgLTQ4Miw3
ICs0ODIsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVt
b3J5KQogICAgIC8vIFdlIHNob3VsZG4ndCBzaWduYWwgd2UgbmVlZCBhbm90aGVyIGlkbGUgcGFp
bnQgYWZ0ZXIgd2UgcnVuIG91dCBvZiBtZW1vcnkuCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5u
ZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXModXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdl
dCgpKTsKIH0KIApAQCAtNDkzLDcgKzQ5Myw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgaWRsZVBhaW50WmVyb1NpemVkTGF5ZXIpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFk
IGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwo
YWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKSk7CiAKLSAgICBGYWtlQ0NUZXh0
dXJlVXBkYXRlciB1cGRhdGVyOworICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoMCk7
CiAKICAgICAvLyBUaGUgbGF5ZXIncyBib3VuZHMgYXJlIGVtcHR5LgogICAgIEludFJlY3QgY29u
dGVudFJlY3Q7CkBAIC01MDksNyArNTA5LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBpZGxlUGFpbnRaZXJvU2l6ZWRMYXllcikKICAgICAvLyBFbXB0eSBsYXllcnMgZG9uJ3QgbmVl
ZCBwcmVwYWludC4KICAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPm5lZWRzSWRsZVBhaW50KGNvbnRl
bnRSZWN0KSk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRh
dGVyKTsKKyAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKICAg
ICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gRW1w
dHkgbGF5ZXJzIGRvbid0IGhhdmUgdGlsZXMuCkBAIC01MjEsNyArNTIxLDcgQEAgVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRaZXJvU2l6ZWRMYXllcikKICAgICAvLyBFbXB0
eSBsYXllcnMgZG9uJ3QgaGF2ZSB0aWxlcy4KICAgICBFWFBFQ1RfRVEoMHUsIGxheWVyLT5udW1Q
YWludGVkVGlsZXMoKSk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygw
LCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVy
KTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAg
Ly8gRW1wdHkgbGF5ZXJzIGRvbid0IGhhdmUgdGlsZXMuCkBAIC01MzUsNyArNTM1LDcgQEAgVEVT
VChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRaZXJvU2l6ZWRBbmltYXRpbmdMYXll
cikKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25QdHI8
RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRM
YXllckltcGwoMCkpKTsKIAotICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAg
RmFrZUNDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigwKTsKIAogICAgIC8vIFByZXRlbmQgdGhlIGxh
eWVyIGlzIGFuaW1hdGluZy4KICAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybUlzQW5pbWF0aW5n
KHRydWUpOwpAQCAtNTU0LDcgKzU1NCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
aWRsZVBhaW50WmVyb1NpemVkQW5pbWF0aW5nTGF5ZXIpCiAgICAgLy8gRW1wdHkgbGF5ZXJzIGRv
bid0IG5lZWQgcHJlcGFpbnQuCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWlu
dChjb250ZW50UmVjdCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
MCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRl
cik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAg
IC8vIEVtcHR5IGxheWVycyBkb24ndCBoYXZlIHRpbGVzLgpAQCAtNTY2LDcgKzU2Niw3IEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50WmVyb1NpemVkQW5pbWF0aW5nTGF5
ZXIpCiAgICAgLy8gRW1wdHkgbGF5ZXJzIGRvbid0IGhhdmUgdGlsZXMuCiAgICAgRVhQRUNUX0VR
KDB1LCBsYXllci0+bnVtUGFpbnRlZFRpbGVzKCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXModXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBs
LmdldCgpKTsKIAogICAgIC8vIEVtcHR5IGxheWVycyBkb24ndCBoYXZlIHRpbGVzLgpAQCAtNTgz
LDcgKzU4Myw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50Tm9uVmlz
aWJsZUxheWVycykKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAg
ICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFr
ZUNDVGlsZWRMYXllckltcGwoMCkpKTsKIAotICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0
ZXI7CisgICAgRmFrZUNDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigwKTsKIAogICAgIC8vIEludmFs
aWRhdGUgdGhlIGxheWVyIGJ1dCBtYWtlIG5vbmUgb2YgaXQgdmlzaWJsZSwgc28gbm90aGluZyBw
YWludHMuCiAgICAgSW50UmVjdCB2aXNpYmxlUmVjdDsKQEAgLTU5Niw3ICs1OTYsNyBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVMYXllcnMpCiAgICAg
Ly8gTm9uLXZpc2libGUgbGF5ZXJzIGRvbid0IG5lZWQgaWRsZSBwYWludC4KICAgICBFWFBFQ1Rf
RkFMU0UobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CiAKLSAgICBsYXllci0+
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNU
byhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIG5vdCBoYXZlIGFueSB0aWxl
cyBwdXNoZWQgc2luY2UgdGhlIGxheWVyIGlzIG5vdCB2aXNpYmxlLgpAQCAtNjA1LDcgKzYwNSw3
IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50Tm9uVmlzaWJsZUxheWVy
cykKICAgICAvLyBOb24tdmlzaWJsZSBsYXllcnMgZG9uJ3QgaWRsZSBwYWludC4KICAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVjdCwgMCk7CiAKLSAgICBsYXllci0+dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhs
YXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIG5vdCBoYXZlIGFueSB0aWxlcyBw
dXNoZWQgc2luY2UgdGhlIGxheWVyIGlzIG5vdCB2aXNpYmxlLgpAQCAtNjE3LDcgKzYxNyw3IEBA
IHN0YXRpYyB2b2lkIGlkbGVQYWludFJlcGVhdChpbnQgcmVwZWF0VGltZXMsIEZha2VUaWxlZExh
eWVyQ2hyb21pdW0qIGxheWVyLCBGYWtlCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXBlYXRU
aW1lczsgKytpKSB7CiAgICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3Qs
IDApOwogICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVjdCwgMCk7
Ci0gICAgICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwor
ICAgICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKICAgICAg
ICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsKTsKICAgICB9CiB9CkBAIC02Mzcs
NyArNjM3LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnROb25WaXNp
YmxlQW5pbWF0aW5nTGF5ZXJzKQogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1h
bmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDgwMDAqODAwMCo4LCA4MDAwKjgwMDAqNCwg
MTAyNCk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAKLSAgICBG
YWtlQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOworICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVw
ZGF0ZXIoMCk7CiAKICAgICBpbnQgdGlsZVdpZHRoID0gRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6
dGlsZVNpemUoKS53aWR0aCgpOwogICAgIGludCB0aWxlSGVpZ2h0ID0gRmFrZVRpbGVkTGF5ZXJD
aHJvbWl1bTo6dGlsZVNpemUoKS5oZWlnaHQoKTsKQEAgLTY2Niw3ICs2NjYsNyBAQCBURVNUKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVBbmltYXRpbmdMYXllcnMp
CiAKICAgICAgICAgICAgIC8vIFRoaXMgcGFpbnRzIHRoZSBsYXllciBidXQgdGhlcmUncyBub3Ro
aW5nIHZpc2libGUgc28gaXQncyBhIG5vLW9wLgogICAgICAgICAgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZSh2aXNpYmxlUmVjdCwgMCk7Ci0gICAgICAgICAgICBsYXllci0+dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICAgICAgICAgIGxheWVyLT51cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgICAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0
aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBo
YXZlIGFueSB0aWxlcyBwdXNoZWQgeWV0IHNpbmNlIHRoZSBsYXllciBpcyBub3QgdmlzaWJsZSBh
bmQgd2UndmUgbm90IHByZXBhaW50ZWQuCkBAIC02OTQsMTMgKzY5NCwxMyBAQCBURVNUKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICBEZWJ1Z1Njb3Bl
ZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllcklt
cGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpKTsKIAot
ICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAgRmFrZUNDVGV4dHVyZVVwZGF0
ZXIgdXBkYXRlcigwKTsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhp
cyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5zZXRC
b3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRS
ZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0
KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBk
YXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAog
ICAgIC8vIFdlIHNob3VsZCBoYXZlIGJvdGggdGlsZXMgb24gdGhlIGltcGwgc2lkZS4KQEAgLTcz
NSw3ICs3MzUsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeVVwZGF0ZVJl
Y3RXaGVuQ29udGVudEJvdW5kc0FyZVNjYWxlZCkKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+
IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMiox
MDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllcldpdGhTY2FsZWRCb3Vu
ZHM+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyV2l0aFNjYWxlZEJvdW5kcyh0
ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogCi0gICAgRmFrZUNDVGV4dHVyZVVwZGF0ZXIgdXBkYXRl
cjsKKyAgICBGYWtlQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKDApOwogCiAgICAgSW50UmVjdCBs
YXllckJvdW5kcygwLCAwLCAzMDAsIDIwMCk7CiAgICAgSW50UmVjdCBjb250ZW50Qm91bmRzKDAs
IDAsIDIwMCwgMjUwKTsKQEAgLTc0OCwyMCArNzQ4LDIwIEBAIFRFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVjdFdoZW5Db250ZW50Qm91bmRzQXJlU2NhbGVkKQogICAg
IC8vIEhvd2V2ZXIsIGl0IHNob3VsZCBzdGlsbCBiZSBpbiBsYXllciBzcGFjZSwgbm90IGNvbnRl
bnQgc3BhY2UuCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwogICAg
IGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgMCk7Ci0gICAgbGF5ZXItPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxv
YXRSZWN0KDAsIDAsIDMwMCwgMzAwICogMC44KSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiAKICAg
ICAvLyBBZnRlciB0aGUgdGlsZXMgYXJlIHVwZGF0ZWQgb25jZSwgYW5vdGhlciBpbnZhbGlkYXRl
IG9ubHkgbmVlZHMgdG8gdXBkYXRlIHRoZSBib3VuZHMgb2YgdGhlIGxheWVyLgogICAgIGxheWVy
LT5pbnZhbGlkYXRlUmVjdChjb250ZW50Qm91bmRzKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKGNvbnRlbnRCb3VuZHMsIDApOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVw
ZGF0ZXIpOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdChsYXllckJvdW5kcyks
IGxheWVyLT51cGRhdGVSZWN0KCkpOwogCiAgICAgLy8gUGFydGlhbCByZS1wYWludCBzaG91bGQg
YWxzbyBiZSByZXByZXNlbnRlZCBieSB0aGUgdXBkYXRlUmVjdCBpbiBsYXllciBzcGFjZSwgbm90
IGNvbnRlbnQgc3BhY2UuCiAgICAgSW50UmVjdCBwYXJ0aWFsRGFtYWdlKDMwLCAxMDAsIDEwLCAx
MCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KHBhcnRpYWxEYW1hZ2UpOwogICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXModXBkYXRlcik7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0
KDQ1LCA4MCwgMTUsIDgpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsKIH0KIApAQCAtNzcyLDcgKzc3
Miw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hl
bkNvbnRlbnRzU2NhbGVDaGFuZ2VzKQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBs
VGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0
UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSkpOwogCi0gICAgRmFrZUNDVGV4dHVyZVVw
ZGF0ZXIgdXBkYXRlcjsKKyAgICBGYWtlQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKDApOwogCiAg
ICAgLy8gQ3JlYXRlIGEgbGF5ZXIgd2l0aCBvbmUgdGlsZS4KICAgICBsYXllci0+c2V0Qm91bmRz
KEludFNpemUoMTAwLCAxMDApKTsKQEAgLTc4Myw3ICs3ODMsNyBAQCBURVNUKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hhbmdlcykK
IAogICAgIC8vIFB1c2ggdGhlIHRpbGVzIHRvIHRoZSBpbXBsIHNpZGUgYW5kIGNoZWNrIHRoYXQg
dGhlcmUgaXMgZXhhY3RseSBvbmUuCiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0
KDAsIDAsIDEwMCwgMTAwKSwgMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBk
YXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAg
ICBFWFBFQ1RfVFJVRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAwKSk7CiAgICAgRVhQRUNUX0ZB
TFNFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDEpKTsKQEAgLTc5Nyw3ICs3OTcsNyBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50c1Nj
YWxlQ2hhbmdlcykKIAogICAgIC8vIFRoZSBpbXBsIHNpZGUgc2hvdWxkIGdldCAyeDIgdGlsZXMg
bm93LgogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAyMDAsIDIwMCks
IDApOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwor
ICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgIGxheWVy
LT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5
ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOwogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFz
VGlsZUF0KDAsIDEpKTsKQEAgLTgwOCw3ICs4MDgsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hhbmdlcykKICAgICAv
LyBpbXBsIHNpZGUuCiAgICAgbGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwogICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoSW50UmVjdCgxLCAwLCAwLCAxKSwgMCk7Ci0gICAgbGF5ZXItPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXModXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5
ZXJJbXBsLmdldCgpKTsKICAgICBFWFBFQ1RfRkFMU0UobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwg
MCkpOwogICAgIEVYUEVDVF9GQUxTRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAxKSk7CkBAIC04
NDIsMTMgKzg0MiwxMyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHNraXBzRHJhd0dl
dHNSZXNldCkKICAgICByb290TGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRSZWN0KTsKICAg
ICBjaGlsZExheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50UmVjdCk7CiAKLSAgICBGYWtlQ0NU
ZXh0dXJlVXBkYXRlciB1cGRhdGVyOworICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIo
Y2NMYXllclRyZWVIb3N0LT5jb250ZXh0KCkpOwogCiAgICAgY2NMYXllclRyZWVIb3N0LT5zZXRS
b290TGF5ZXIocm9vdExheWVyKTsKICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6
ZShJbnRTaXplKDMwMCwgMzAwKSk7CiAgICAgdGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxp
bWl0Qnl0ZXMobWVtb3J5TGltaXQpOwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJz
KCk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNjTGF5
ZXJUcmVlSG9zdC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7CiAKICAgICAvLyBXZSdsbCBza2lwIHRo
ZSByb290IGxheWVyLgogICAgIEVYUEVDVF9UUlVFKHJvb3RMYXllci0+c2tpcHNEcmF3KCkpOwpA
QCAtOTEzLDE5ICs5MTMsMTkgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFs
VXBkYXRlcykKICAgICBsYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgxNTAsIDE1MCkpOwog
ICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50UmVjdCk7CiAKLSAgICBGYWtlQ0NUZXh0
dXJlVXBkYXRlciB1cGRhdGVyOworICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoY2NM
YXllclRyZWVIb3N0LT5jb250ZXh0KCkpOwogCiAgICAgY2NMYXllclRyZWVIb3N0LT5zZXRSb290
TGF5ZXIobGF5ZXIpOwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNp
emUoMzAwLCAyMDApKTsKIAogICAgIC8vIEZ1bGwgdXBkYXRlIG9mIGFsbCA2IHRpbGVzLgogICAg
IGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNjTGF5ZXJUcmVlSG9zdC0+Y29udGV4dCgpLCB1cGRh
dGVyKTsKLSAgICB1cGRhdGVyLnVwZGF0ZSgwLCA0KTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7CisgICAgdXBkYXRlci51cGRhdGUoNCk7
CiAgICAgRVhQRUNUX0VRKDQsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRh
dGVDb3VudCgpKTsKICAgICBFWFBFQ1RfVFJVRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwog
ICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7
Ci0gICAgdXBkYXRlci51cGRhdGUoMCwgNCk7CisgICAgdXBkYXRlci51cGRhdGUoNCk7CiAgICAg
RVhQRUNUX0VRKDIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3Vu
dCgpKTsKICAgICBFWFBFQ1RfRkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKICAgICBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwpAQCAt
OTM0LDEyICs5MzQsMTIgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFsVXBk
YXRlcykKICAgICAvLyBGdWxsIHVwZGF0ZSBvZiAzIHRpbGVzIGFuZCBwYXJ0aWFsIHVwZGF0ZSBv
ZiAzIHRpbGVzLgogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDMwMCwg
MTUwKSk7CiAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKLSAgICBjY0xheWVy
VHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY2NMYXllclRyZWVIb3N0LT5jb250
ZXh0KCksIHVwZGF0ZXIpOwotICAgIHVwZGF0ZXIudXBkYXRlKDAsIDQpOworICAgIGNjTGF5ZXJU
cmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKKyAgICB1cGRhdGVy
LnVwZGF0ZSg0KTsKICAgICBFWFBFQ1RfRVEoMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAgIEVYUEVDVF9UUlVFKHVwZGF0ZXIuaGFzTW9yZVVw
ZGF0ZXMoKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBk
YXRlQ291bnQoKTsKLSAgICB1cGRhdGVyLnVwZGF0ZSgwLCA0KTsKKyAgICB1cGRhdGVyLnVwZGF0
ZSg0KTsKICAgICBFWFBFQ1RfRVEoMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PnVwZGF0ZUNvdW50KCkpOwogICAgIEVYUEVDVF9GQUxTRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVz
KCkpOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNv
dW50KCk7CkBAIC05NDgsMTIgKzk0OCwxMiBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHBhcnRpYWxVcGRhdGVzKQogICAgIC8vIFBhcnRpYWwgdXBkYXRlIG9mIDYgdGlsZXMuCiAgICAg
bGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoNTAsIDUwLCAyMDAsIDEwMCkpOwogICAgIGNj
TGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKGNjTGF5ZXJUcmVlSG9zdC0+Y29udGV4dCgpLCB1cGRhdGVy
KTsKLSAgICB1cGRhdGVyLnVwZGF0ZSgwLCA0KTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7CisgICAgdXBkYXRlci51cGRhdGUoNCk7CiAg
ICAgRVhQRUNUX0VRKDIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVD
b3VudCgpKTsKICAgICBFWFBFQ1RfVFJVRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogICAg
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7Ci0g
ICAgdXBkYXRlci51cGRhdGUoMCwgNCk7CisgICAgdXBkYXRlci51cGRhdGUoNCk7CiAgICAgRVhQ
RUNUX0VRKDQsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgp
KTsKICAgICBFWFBFQ1RfRkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKICAgICBsYXll
ci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135176</attachid>
            <date>2012-04-02 13:54:11 -0700</date>
            <delta_ts>2012-04-03 22:01:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81004-20120402165405.patch</filename>
            <type>text/plain</type>
            <size>85952</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzEyMWM2MTljZGMwOTdj
ZmNlNmI3ZDBhNDEwNGQ4MDU2YTIxMDU1Yi4uYzA1ZDBjYjI3ZDc1NmI3OWY3OTM0MDZkYjQzYmFk
NjEyNDk0ZDI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAxMi0wNC0wMiAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
VXNlIEdMX0NIUk9NSVVNX2NvbW1hbmRfYnVmZmVyX3F1ZXJ5IHRvIHRocm90dGxlIGluY3JlbWVu
dGFsIHRleHR1cmUgdXBkYXRlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgxMDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSGF2ZSB0aHJlYWRlZCBjb21wb3NpdG9yIHVzZSBHTF9DSFJPTUlVTV9jb21t
YW5kX2J1ZmZlcl9xdWVyeSB0bworICAgICAgICB0aHJvdHRsZSB0ZXh0dXJlIHVwZGF0ZXMgYmFz
ZWQgb24gbnVtYmVyIG9mIGN1cnJlbnRseSBwZW5kaW5nCisgICAgICAgIHF1ZXJpZXMgYW5kIHRp
bWUgdW50aWwgbmV4dCB2c3luYy4KKworICAgICAgICBVbml0IHRlc3Q6IENDU2NoZWR1bGVyVGVz
dC5VcGRhdGVNb3JlUmVzb3VyY2VzCisgICAgICAgICAgICAgICAgICAgQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmVUZXN0LlRlc3RDYW5VcGRhdGVNb3JlUmVzb3VyY2VzCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVy
Q2hyb21pdW0uaDoKKyAgICAgICAgKENhbnZhczJETGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXll
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vV2ViR0xMYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJHTExheWVyQ2hyb21pdW0p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRp
bWVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWxheUJhc2VkVGltZVNvdXJjZTo6
bmV4dFRpY2tUaW1lKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaDoKKyAgICAgICAgKEND
RGVsYXlCYXNlZFRpbWVTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0Zy
YW1lUmF0ZUNvbnRyb2xsZXI6Om5leHRUaWNrVGltZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKENDRnJhbWVSYXRlQ29udHJvbGxlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6Cisg
ICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVy
OjpkaWRVcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
Y2hlZHVsZXI6OnZzeW5jVGljayk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6bmV4
dEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxl
ZEFjdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyLmg6CisgICAgICAgIChDQ1NjaGVkdWxlckNsaWVudCk6CisgICAgICAgIChDQ1NjaGVk
dWxlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpzaG91bGRVcGRhdGVNb3JlUmVzb3VyY2VzKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5l
eHRBY3Rpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lLmg6CisgICAgICAgIChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0Q2FuVXBkYXRl
TW9yZVJlc291cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVh
ZFByb3h5Ojpkb0NvbW1pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChzdGQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUZXh0dXJlVXBkYXRlcjo6UXVlcnk6OlF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6UXVlcnk6On5RdWVyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjpRdWVyeTo6c3RhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6UXVlcnk6OmlzUGVuZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6Om1heFRleHR1cmVVcGRhdGVUaW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RleHR1cmVVcGRhdGVyOjpwcm9jZXNzUXVlcmllcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjpR
dWVyeTo6Y3JlYXRlKToKKyAgICAgICAgKENDVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6Y29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXVEYpOgorICAg
ICAgICAoQ0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVUaW1lcik6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RocmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRpbWVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVUaW1lcjo6b25UaW1lckZpcmVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGltZXI6OkNDVGhyZWFk
UHJveHlUZXh0dXJlVXBkYXRlVGltZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aGFzTW9yZVJlc291cmNlVXBkYXRlcyk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjptYXhSZXNvdXJjZVVwZGF0ZVRpbWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRl
TW9yZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVs
ZWRBY3Rpb25Db21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6bGF5ZXJU
cmVlSG9zdENsb3NlZE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFBy
b3h5OjptYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJl
YWRQcm94eTo6dGV4dHVyZVVwZGF0ZUNvbXBsZXRlT25JbXBsVGhyZWFkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZVNvdXJjZS5oOgorICAgICAgICAoQ0NUaW1lU291cmNl
KToKKwogMjAxMi0wMy0zMCAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIEluZGV4ZWREQjogUmFjZSBjb25kaXRpb24gY2F1c2VzIHZlcnNpb24gY2hhbmdlIHRy
YW5zYWN0aW9uIHRvIGNvbW1pdCBhZnRlciBvbmJsb2NrZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggYjQ1YWYxOGZjYWJjYjgwMTE2YjM5MDFhMzE1MGI0OWYwYThkNTdhNC4uM2ZmOTQy
ZDg0YmEyOGIwYWFjNDI5YmQzNDBiNjlkN2U1ZWRjYzhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxMi0wNC0wMiAgRGF2aWQgUmV2ZW1hbiAgPHJldmVt
YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gVXNlIEdMX0NIUk9NSVVNX2Nv
bW1hbmRfYnVmZmVyX3F1ZXJ5IHRvIHRocm90dGxlIGluY3JlbWVudGFsIHRleHR1cmUgdXBkYXRl
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMDA0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRo
ZSBmb2xsb3dpbmcgbmV3IHVuaXQgdGVzdHM6IENDU2NoZWR1bGVyVGVzdC5VcGRhdGVNb3JlUmVz
b3VyY2VzLAorICAgICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuVGVzdENhblVwZGF0
ZU1vcmVSZXNvdXJjZXMKKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3Bw
OgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgICogdGVzdHMvQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmVUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcDoKKyAgICAgICAg
KFdlYktpdFRlc3RzOjpGYWtlQ0NTY2hlZHVsZXJDbGllbnQ6OnJlc2V0KToKKyAgICAgICAgKFdl
YktpdFRlc3RzOjpGYWtlQ0NTY2hlZHVsZXJDbGllbnQ6OnNldE1heFJlc291cmNlVXBkYXRlVGlt
ZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZUNDU2NoZWR1bGVyQ2xpZW50OjptYXhSZXNv
dXJjZVVwZGF0ZVRpbWUpOgorICAgICAgICAoRmFrZUNDU2NoZWR1bGVyQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdFRlc3RzOjpURVNUKToKKyAgICAgICAgKFdlYktpdFRlc3RzKToKKyAgICAgICAg
KiB0ZXN0cy9DQ1NjaGVkdWxlclRlc3RDb21tb24uaDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpG
YWtlQ0NUaW1lU291cmNlOjpGYWtlQ0NUaW1lU291cmNlKToKKyAgICAgICAgKFdlYktpdFRlc3Rz
OjpGYWtlQ0NUaW1lU291cmNlOjpuZXh0VGlja1RpbWUpOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OkZha2VDQ1RpbWVTb3VyY2U6OnNldE5leHRUaWNrVGltZSk6CisgICAgICAgIChGYWtlQ0NUaW1l
U291cmNlKToKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdFRlc3RzOjpGYWtlQ0NUZXh0dXJlVXBkYXRlcjo6RmFrZUNDVGV4dHVyZVVw
ZGF0ZXIpOgorICAgICAgICAqIHRlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaDoKKyAgICAg
ICAgKEZha2VDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiB0ZXN0cy9DYW52YXMyRExheWVy
Q2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0
LmNwcDoKKyAgICAgICAgKFdURjo6VEVTVCk6CisgICAgICAgIChXVEY6OmlkbGVQYWludFJlcGVh
dCk6CisKIDIwMTItMDMtMzAgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUm9sbCBjaHJvbWl1bSBERVBTIGZyb20gMTI5NTkzIHRvIDEyOTU3NC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJE
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCmluZGV4IGZjYmY1NGE3N2UxZDg3YmE4ZmFk
OWQyZTIyNzQ1N2NkYWQ1YWFiODMuLmYyNGFlMjEyYTM0ODAwOTkyMjM4MjRmYzU3MWRhNzFkYmE0
YjQ4ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcApAQCAtMTI5LDEz
ICsxMjksMTMgQEAgdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRp
cnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogLyogb2MKICAgICBtX2NvbnRleHQtPmZsdXNo
KCk7CiB9CiAKLXZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRh
dGVyKQordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKIHsKICAgICBpZiAoIW1fYmFja1RleHR1cmVJ
ZCB8fCAhbV9mcm9udFRleHR1cmUgfHwgIW1fZnJvbnRUZXh0dXJlLT5pc1ZhbGlkKG1fc2l6ZSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2Zyb250
VGV4dHVyZS0+YWxsb2NhdGUodXBkYXRlci5hbGxvY2F0b3IoKSk7Ci0gICAgdXBkYXRlci5jb3Bp
ZXIoKS0+Y29weVRleHR1cmUoY29udGV4dCwgbV9iYWNrVGV4dHVyZUlkLCBtX2Zyb250VGV4dHVy
ZS0+dGV4dHVyZUlkKCksIG1fc2l6ZSk7CisgICAgdXBkYXRlci5jb3BpZXIoKS0+Y29weVRleHR1
cmUodXBkYXRlci5jb250ZXh0KCksIG1fYmFja1RleHR1cmVJZCwgbV9mcm9udFRleHR1cmUtPnRl
eHR1cmVJZCgpLCBtX3NpemUpOwogfQogCiB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cHVz
aFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJD
aHJvbWl1bS5oCmluZGV4IGI1ZDBjMjM4OTFmYjA1YjYyMTgyNDkxMDI1MGQ1OTBiOGI3MmM2NzIu
LjYzMTdmMjA0OWE5YTg4OWI2YTU4NDkxMWIyNzY1MDlmMzc2N2JhNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nh
bnZhczJETGF5ZXJDaHJvbWl1bS5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29u
dGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOwogCi0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1
cmVVcGRhdGVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
Q0NUZXh0dXJlVXBkYXRlciYpOwogICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKEND
TGF5ZXJJbXBsKik7CiAgICAgdmlydHVhbCB2b2lkIHVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVyZSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggYjk4MDIyYjUyZGE1OGI5MTk3Y2JmNTQ0OGNiNmQ0
MGE5YTA3YzI3MC4uMDZjNGRlZWUxOTE4ZjQxYWJmNmViMjhjNzYxNTMxYmVhNmFkMDk1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uaApAQCAtMTczLDcgKzE3Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc0RyYXdhYmxlOyB9CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tl
ciogLyogb2NjbHVzaW9uICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVu
dHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogLyogb2NjbHVzaW9uICovKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhDQ1RleHR1cmVVcGRhdGVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldElzTWFzayhib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVudHNU
ZXh0dXJlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUoKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDAxMGE0MzE4YzgzYWRjODc4ZTRh
N2MwNzBjM2UyOThlOGE5MTNjZTIuLmRiODg4ZTIxZjM0Y2MyODBkNTQ2MmNmZjljOWJhZWRmN2E4
OTJmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtMTgzLDcgKzE4Myw3
IEBAIEludFNpemUgVGlsZWRMYXllckNocm9taXVtOjpjb250ZW50Qm91bmRzKCkgY29uc3QKICAg
ICByZXR1cm4gSW50U2l6ZShscm91bmRmKGJvdW5kcygpLndpZHRoKCkgKiBjb250ZW50c1NjYWxl
KCkpLCBscm91bmRmKGJvdW5kcygpLmhlaWdodCgpICogY29udGVudHNTY2FsZSgpKSk7CiB9CiAK
LXZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBo
aWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgVGlsZWRMYXll
ckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKENDVGV4dHVyZVVwZGF0ZXImIHVw
ZGF0ZXIpCiB7CiAgICAgLy8gUGFpbnRpbmcgY291bGQgY2F1c2UgY29tcG9zaXRpbmcgdG8gZ2V0
IHR1cm5lZCBvZmYsIHdoaWNoIG1heSBjYXVzZSB0aGUgdGlsZXIgdG8gYmVjb21lIGludmFsaWRh
dGVkIG1pZC11cGRhdGUuCiAgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRl
VGlsZXNSZWN0LmlzRW1wdHkoKSB8fCBtX3RpbGVyLT5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5oCmluZGV4IDgxZWUyNDhhNzY4ZmY5OWRmODZjZWMwZjE4YzRhMzBiYzBhY2M3
ZGMuLjc2ODllMWRhZGMxY2IzNjI1ZTlhZjkzYzBlMDE0NDBkMzRjZjI3YjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgflRpbGVkTGF5ZXJDaHJvbWl1bSgpOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoQ0NUZXh0dXJlVXBkYXRl
ciYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJv
bWl1bS5jcHAKaW5kZXggZGE1NWYzYWMwNmM0ZDVjNDZlZGFjMTc5ZDg0ZGY2MzhhYzIxOTllYy4u
NjBmNjIxNjg4YmFmNmQ3NTNiOGZhNGQzY2EzN2JlMDllZDUwMWJmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiVHJhY2VFdmVu
dC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0NDVGV4
dHVyZUxheWVySW1wbC5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Myw4ICs4NCw5IEBAIHZvaWQgV2ViR0xMYXllckNocm9t
aXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIC8qIG9j
Y2x1CiAgICAgbV9jb250ZXh0TG9zdCA9IGNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SOwog
fQogCi12b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJDb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJikKK3Zv
aWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKENDVGV4dHVy
ZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIHJlbmRlcmVyQ29u
dGV4dCA9IHVwZGF0ZXIuY29udGV4dCgpOwogICAgIGlmIChtX3RleHR1cmVDaGFuZ2VkKSB7CiAg
ICAgICAgIHJlbmRlcmVyQ29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIG1fdGV4dHVyZUlkKTsKICAgICAgICAgLy8gU2V0IHRoZSBtaW4tbWFnIGZpbHRl
cnMgdG8gbGluZWFyIGFuZCB3cmFwIG1vZGVzIHRvIEdMX0NMQU1QX1RPX0VER0UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJD
aHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2Vi
R0xMYXllckNocm9taXVtLmgKaW5kZXggNjUwOWZiMzU4ZDk1ZTliMGRmMTcxYWMwYjFjZGZjNWQ1
MzU0MTYzZC4uYTE3YWRiYTBmMjY0MzZmOTQzM2ZlZmE3NjA5NjdjYzY2NzgxODllOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXll
ckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vV2ViR0xMYXllckNocm9taXVtLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4
dHVyZVVwZGF0ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhDQ1RleHR1cmVVcGRhdGVyJik7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8o
Q0NMYXllckltcGwqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5UmVjdChjb25z
dCBGbG9hdFJlY3QmKTsKICAgICBib29sIHBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoSW1h
Z2VCdWZmZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5jcHAK
aW5kZXggYjY4OGE3OGEyN2M1Nzk1MWRkOGQ2YmVmZmVlNzY2YzVkMjRmMjNlNC4uNzA0ZWZmNGJm
N2EzZDZjMDRkZWI1Y2QxZDI2NjBmYzhlMDE5ZWJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NE
ZWxheUJhc2VkVGltZVNvdXJjZS5jcHAKQEAgLTE2MSw0ICsxNjEsMTIgQEAgdm9pZCBDQ0RlbGF5
QmFzZWRUaW1lU291cmNlOjpwb3N0TmV4dFRpY2tUYXNrKGRvdWJsZSBub3cpCiAgICAgbV90aWNr
VGFyZ2V0ID0gbmV3VGlja1RhcmdldDsKIH0KIAorZG91YmxlIENDRGVsYXlCYXNlZFRpbWVTb3Vy
Y2U6Om5leHRUaWNrVGltZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hhc1RpY2tUYXJnZXQpCisg
ICAgICAgIHJldHVybiBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKworICAgIHJldHVy
biBtX3RpY2tUYXJnZXQ7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVT
b3VyY2UuaAppbmRleCA1ZjFiMmM0ZjJmZGE3YmVkNTRmNWY0NDM1MDY0NWYzNWY3OTZlNWRmLi4z
ODBiZTZiYzBkMWU2YTEyZWE1YjU1N2Y2YTczNGFjN2RmNzRiNTYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFzZWRUaW1l
U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpOwogICAgIHZpcnR1YWwgYm9vbCBhY3RpdmUo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlICE9IFNUQVRFX0lOQUNUSVZFOyB9CiAKKyAgICB2aXJ0
dWFsIGRvdWJsZSBuZXh0VGlja1RpbWUoKSBjb25zdDsKKwogICAgIC8vIENDVGltZXJDbGllbnQg
aW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCB2b2lkIG9uVGltZXJGaXJlZCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Zy
YW1lUmF0ZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmNwcAppbmRleCBkYjZkOTVjYzAwY2Mx
NTU2OGUwY2U1NjdmNDQ5NzhhOTI3OTI0YmU4Li5lYzNjMjQ3ODA5M2FkOGM4N2I2ODQ4MDYwMjI4
NDY4NDU5ZDdmOGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5j
cHAKQEAgLTEwNSw0ICsxMDUsOSBAQCB2b2lkIENDRnJhbWVSYXRlQ29udHJvbGxlcjo6ZGlkQWJv
cnRBbGxQZW5kaW5nRnJhbWVzKCkKICAgICBtX251bUZyYW1lc1BlbmRpbmcgPSAwOwogfQogCitk
b3VibGUgQ0NGcmFtZVJhdGVDb250cm9sbGVyOjpuZXh0VGlja1RpbWUoKQoreworICAgIHJldHVy
biBtX3RpbWVTb3VyY2UtPm5leHRUaWNrVGltZSgpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
RnJhbWVSYXRlQ29udHJvbGxlci5oCmluZGV4IDU3MzRkNGFhNmU5Zjc0NjFhNGM2NmM2ZTBhMTg2
MGRhMzBkNDk2NmUuLjdhMWRhZDQzOWFmYjI4YjNmNDM0YjM3ODk2YTJjNjlkOGY0YzI2YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
RnJhbWVSYXRlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5oCkBAIC02NCw2ICs2NCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpZEZpbmlzaEZyYW1lKCk7CiAgICAgdm9pZCBkaWRBYm9ydEFs
bFBlbmRpbmdGcmFtZXMoKTsKICAgICB2b2lkIHNldE1heEZyYW1lc1BlbmRpbmcoaW50KTsgLy8g
MCBmb3IgdW5saW1pdGVkLgorICAgIGRvdWJsZSBuZXh0VGlja1RpbWUoKTsKIAogcHJvdGVjdGVk
OgogICAgIGZyaWVuZCBjbGFzcyBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXJUaW1lU291cmNlQWRhcHRl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDU3NmZjMmIzMTkwYTJkNjMw
OTU3NTk4MTc1YzQzZWVmNGU3ODhjMjcuLjBjZmM5MTRjMTI1MjY5MGM5ZTU1MGY2NmQxZjc5NTVk
MjYzMDMzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtNTc5LDcgKzU3
OSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5
ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiAgICAgb2NjbHVzaW9uVHJhY2tlci5vdmVy
ZHJhd01ldHJpY3MoKS5yZWNvcmRNZXRyaWNzKHRoaXMpOwogfQogCi12b2lkIENDTGF5ZXJUcmVl
SG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CiAgICAg
Ly8gVXNlIEJhY2tUb0Zyb250IHNpbmNlIGl0J3MgY2hlYXAgYW5kIHRoaXMgaXNuJ3Qgb3JkZXIt
ZGVwZW5kZW50LgogICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0sIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBDQ0xh
eWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udD4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKQEAg
LTU4OSwxNSArNTg5LDE1IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RlCiAgICAgICAgIGlmIChp
dC5yZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFjZSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQo
aXQtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd09wYWNpdHkoKSB8fCBpdC0+cmVuZGVyU3VyZmFjZSgp
LT5kcmF3T3BhY2l0eUlzQW5pbWF0aW5nKCkpOwogICAgICAgICAgICAgaWYgKGl0LT5tYXNrTGF5
ZXIoKSkKLSAgICAgICAgICAgICAgICBpdC0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7CisgICAgICAgICAgICAgICAgaXQtPm1hc2tMYXll
cigpLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogCiAgICAgICAgICAgICBp
ZiAoaXQtPnJlcGxpY2FMYXllcigpKSB7Ci0gICAgICAgICAgICAgICAgaXQtPnJlcGxpY2FMYXll
cigpLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOworICAgICAg
ICAgICAgICAgIGl0LT5yZXBsaWNhTGF5ZXIoKS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1
cGRhdGVyKTsKICAgICAgICAgICAgICAgICBpZiAoaXQtPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5
ZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgaXQtPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIo
KS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKKyAgICAgICAg
ICAgICAgICAgICAgaXQtPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKS0+dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyh1cGRhdGVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlm
IChpdC5yZXByZXNlbnRzSXRzZWxmKCkpCi0gICAgICAgICAgICBpdC0+dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKKyAgICAgICAgICAgIGl0LT51cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuaAppbmRleCA5Y2ExNGZjMDQ0ODgzYWIwYzMxMDlhOTdmYjhiZTFiMmJhMjM3MTYxLi5i
NjNlMjMxODI0ZjVhNmVmZTVkMTg5MTJlMTI2ZGNjYmE4ZjU0Zjk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuaApAQCAtMjA4LDcgKzIwOCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3Rh
cnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wg
dXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKTsKIAotICAgIHZvaWQg
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVw
ZGF0ZXImKTsKKyAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoQ0NUZXh0dXJlVXBk
YXRlciYpOwogICAgIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBDQ1Njcm9sbEFuZFNj
YWxlU2V0Jik7CiAgICAgdm9pZCBzdGFydFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29udGV4dDNEKik7
CiAgICAgdm9pZCBzdG9wUmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0M0QqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyLmNwcAppbmRleCAzZDA5ZTQ0YjEyZGE0ZDFmM2U2ZmMxMjdhMDM2ZDUyZDgzZDcx
ZTg0Li41MjRkZDQzNGExYzk2M2ZhOTEzYjI0ZGY4ZTIyY2M5NDE4MjA2Yzg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY2hlZHVsZXIuY3BwCkBAIC0xMDcsMTQgKzEwNywxOSBAQCB2b2lkIENDU2NoZWR1bGVyOjpk
aWRSZWNyZWF0ZUNvbnRleHQoKQogICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7CiB9CiAK
LXZvaWQgQ0NTY2hlZHVsZXI6OnZzeW5jVGljaygpCit2b2lkIENDU2NoZWR1bGVyOjpkaWRVcGRh
dGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoKQogeworICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxl
cjo6ZGlkVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlIiwgdGhpcywgMCk7CiAgICAgaWYgKG1f
dXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcpIHsKICAgICAgICAgbV91cGRhdGVNb3JlUmVzb3Vy
Y2VzUGVuZGluZyA9IGZhbHNlOwogICAgICAgICBtX3N0YXRlTWFjaGluZS5iZWdpblVwZGF0ZU1v
cmVSZXNvdXJjZXNDb21wbGV0ZShtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsK
ICAgICB9Ci0gICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjp2c3luY1RpY2siLCB0aGlzLCAw
KTsKKyAgICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOworfQogCit2b2lkIENDU2NoZWR1bGVy
Ojp2c3luY1RpY2soKQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxlcjo6dnN5bmNUaWNr
IiwgdGhpcywgMCk7CiAgICAgbV9zdGF0ZU1hY2hpbmUuZGlkRW50ZXJWU3luYygpOwogICAgIHBy
b2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7CiAgICAgbV9zdGF0ZU1hY2hpbmUuZGlkTGVhdmVWU3lu
YygpOwpAQCAtMTIzLDYgKzEyOCwxMSBAQCB2b2lkIENDU2NoZWR1bGVyOjp2c3luY1RpY2soKQog
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBDQ1NjaGVkdWxlcjo6bmV4dEFjdGlvbigp
CiB7CiAgICAgbV9zdGF0ZU1hY2hpbmUuc2V0Q2FuRHJhdyhtX2NsaWVudC0+Y2FuRHJhdygpKTsK
KworICAgIGJvb2wgaGFzUmVkcmF3UGVuZGluZyA9IG1fc3RhdGVNYWNoaW5lLnJlZHJhd1BlbmRp
bmcoKTsKKyAgICBib29sIGhhc1RpbWVSZW1haW5pbmcgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUoKSA8IG1fZnJhbWVSYXRlQ29udHJvbGxlci0+bmV4dFRpY2tUaW1lKCkgLSBtX2NsaWVu
dC0+bWF4UmVzb3VyY2VVcGRhdGVUaW1lKCk7CisgICAgbV9zdGF0ZU1hY2hpbmUuc2V0Q2FuVXBk
YXRlTW9yZVJlc291cmNlcyghaGFzUmVkcmF3UGVuZGluZyB8fCBoYXNUaW1lUmVtYWluaW5nKTsK
KwogICAgIHJldHVybiBtX3N0YXRlTWFjaGluZS5uZXh0QWN0aW9uKCk7CiB9CiAKQEAgLTE0OCwx
NiArMTU4LDExIEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCkK
ICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzoKLSAgICAgICAgICAgIG1fY2xpZW50LT5z
Y2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCk7Ci0gICAgICAgICAgICBpZiAoIW1f
Y2xpZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBJ
ZiB3ZSB3ZXJlIGp1c3QgdG9sZCB0byB1cGRhdGUgcmVzb3VyY2VzLCBidXQgdGhlcmUgYXJlIG5v
Ci0gICAgICAgICAgICAgICAgLy8gbW9yZSBwZW5kaW5nLCB0aGVuIHRlbGwgdGhlIHN0YXRlIG1h
Y2hpbmUgdGhhdCB0aGUKLSAgICAgICAgICAgICAgICAvLyBiZWdpblVwZGF0ZU1vcmVSZXNvdXJj
ZXMgY29tcGxldGVkLiBJZiBtb3JlIGFyZSBwZW5kaW5nLAotICAgICAgICAgICAgICAgIC8vIHRo
ZW4gd2Ugd2lsbCBhY2sgdGhlIHVwZGF0ZSBhdCB0aGUgbmV4dCBkcmF3LgotICAgICAgICAgICAg
ICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgICAg
ICBtX3N0YXRlTWFjaGluZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7
Ci0gICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGlmIChtX2NsaWVudC0+aGFzTW9yZVJl
c291cmNlVXBkYXRlcygpKSB7CisgICAgICAgICAgICAgICAgbV9jbGllbnQtPnNjaGVkdWxlZEFj
dGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKTsKICAgICAgICAgICAgICAgICBtX3VwZGF0ZU1vcmVS
ZXNvdXJjZXNQZW5kaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgIG1fc3RhdGVNYWNoaW5lLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fQ09NTUlUOgogICAgICAgICAgICAgbV9jbGllbnQtPnNjaGVkdWxlZEFjdGlv
bkNvbW1pdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKaW5kZXggYTZmMjYxYzRlZGY2ZDg1NGFhMmI2
OTEzYWE2YjdhOTJhNzkzODYyNC4uOTJjODQ3NTFkODVjYmU2Y2FmZDA5OTM3MjRmN2IwMTFkZTZh
YmQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCkBAIC01NCw2ICs1NCw3IEBAIGNsYXNzIENDU2No
ZWR1bGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY2FuRHJhdygpID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgaGFzTW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGRvdWJsZSBtYXhSZXNvdXJjZVVwZGF0ZVRpbWUoKSBjb25zdCA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpID0gMDsKICAgICB2aXJ0
dWFsIENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0aW9uRHJh
d0FuZFN3YXBJZlBvc3NpYmxlKCkgPSAwOwpAQCAtOTYsNiArOTcsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaWRMb3NlQ29udGV4dCgpOwogICAgIHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0KCk7CiAK
KyAgICB2b2lkIGRpZFVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSgpOworCiAgICAgYm9vbCBj
b21taXRQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZU1hY2hpbmUuY29tbWl0UGVuZGlu
ZygpOyB9CiAgICAgYm9vbCByZWRyYXdQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZU1h
Y2hpbmUucmVkcmF3UGVuZGluZygpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lLmNwcAppbmRleCAxYzk0MmUzNDNjNzc3MTliNjNlNmQzZjA5YjEyYjA1ZGVl
MDAxYmRhLi42MmU0YjExNjFhMDY5NTYxNWEwZGUzNDQwNzY5MjRhYzliNmI2YjI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlclN0YXRlTWFjaGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCkBAIC00MSw2ICs0MSw3
IEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSgpCiAg
ICAgLCBtX3Zpc2libGUoZmFsc2UpCiAgICAgLCBtX2NhbkRyYXcodHJ1ZSkKICAgICAsIG1fZHJh
d0lmUG9zc2libGVGYWlsZWQoZmFsc2UpCisgICAgLCBtX2NhblVwZGF0ZU1vcmVSZXNvdXJjZXMo
ZmFsc2UpCiAgICAgLCBtX2NvbnRleHRTdGF0ZShDT05URVhUX0FDVElWRSkKIHsKIH0KQEAgLTcw
LDYgKzcxLDE1IEBAIGJvb2wgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNob3VsZERyYXcoKSBj
b25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpzaG91bGRVcGRhdGVNb3JlUmVzb3VyY2VzKCkgY29uc3QKK3sKKyAgICBpZiAobV91cGRhdGVN
b3JlUmVzb3VyY2VzUGVuZGluZykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV9j
YW5VcGRhdGVNb3JlUmVzb3VyY2VzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBjb25zdAogewogICAgIHN3aXRjaCAobV9jb21taXRT
dGF0ZSkgewpAQCAtOTYsNyArMTA2LDcgQEAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlv
biBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbigpIGNvbnN0CiAgICAgY2FzZSBD
T01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTOgogICAgICAgICBpZiAoc2hvdWxkRHJhdygp
KQogICAgICAgICAgICAgcmV0dXJuIG1fbmVlZHNGb3JjZWRSZWRyYXcgPyBBQ1RJT05fRFJBV19G
T1JDRUQgOiBBQ1RJT05fRFJBV19JRl9QT1NTSUJMRTsKLSAgICAgICAgaWYgKCFtX3VwZGF0ZU1v
cmVSZXNvdXJjZXNQZW5kaW5nKQorICAgICAgICBpZiAoc2hvdWxkVXBkYXRlTW9yZVJlc291cmNl
cygpKQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJD
RVM7CiAgICAgICAgIHJldHVybiBBQ1RJT05fTk9ORTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lLmgKaW5kZXggMmVjZmQxY2QwNmQ1MDhhZTFmZTYxZjY4MzkyMTY4
MWFmZGNlYjg2Ni4uZjY0ODAzZWVjZmJlOTA3N2E4MTY2MDMwNzRmM2RlM2JhNzcwMzMyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCkBAIC0xMjIsNiArMTIy
LDkgQEAgcHVibGljOgogICAgIC8vIHdoZW4gc3VjaCBiZWhhdmlvciB3b3VsZCBiZSB1bmRlc2ly
YWJsZS4KICAgICB2b2lkIHNldENhbkRyYXcoYm9vbCBjYW4pIHsgbV9jYW5EcmF3ID0gY2FuOyB9
CiAKKyAgICAvLyBJbmRpY2F0ZXMgd2hldGhlciB1cGRhdGluZyByZXNvdXJjZXMgd291bGQsIGF0
IHRoaXMgdGltZSwgbWFrZSBzZW5zZS4KKyAgICB2b2lkIHNldENhblVwZGF0ZU1vcmVSZXNvdXJj
ZXMoYm9vbCBjYW4pIHsgbV9jYW5VcGRhdGVNb3JlUmVzb3VyY2VzID0gY2FuOyB9CisKICAgICB2
b2lkIGRpZExvc2VDb250ZXh0KCk7CiAgICAgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoKTsKIApA
QCAtMTI5LDYgKzEzMiw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIHNob3VsZERyYXdGb3JjZWQo
KSBjb25zdDsKICAgICBib29sIHNob3VsZERyYXcoKSBjb25zdDsKICAgICBib29sIGhhc0RyYXdu
VGhpc0ZyYW1lKCkgY29uc3Q7CisgICAgYm9vbCBzaG91bGRVcGRhdGVNb3JlUmVzb3VyY2VzKCkg
Y29uc3Q7CiAKICAgICBDb21taXRTdGF0ZSBtX2NvbW1pdFN0YXRlOwogCkBAIC0xNDMsNiArMTQ3
LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV92aXNpYmxlOwogICAgIGJvb2wgbV9jYW5EcmF3
OwogICAgIGJvb2wgbV9kcmF3SWZQb3NzaWJsZUZhaWxlZDsKKyAgICBib29sIG1fY2FuVXBkYXRl
TW9yZVJlc291cmNlczsKICAgICBDb250ZXh0U3RhdGUgbV9jb250ZXh0U3RhdGU7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IGVjODQyOGQ2NTA1ZmEx
OTk3MWY4YWEzMjAxNjY1MDMxMzI3YzIyYjYuLjBhZjQyOTNlZjExZDk3MmMzZTc5OTNlOGUyYTM3
M2FiOTg0MDFiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBA
IC0yMDAsOSArMjAwLDkgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCgpCiAg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7CiAKICAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBs
LmdldCgpKTsKLSAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5s
YXllclJlbmRlcmVyKCktPnRleHR1cmVDb3BpZXIoKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0
KCksIHVwZGF0ZXIpOwotICAgICAgICB1cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBs
LT5jb250ZXh0KCksIG51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKKyAgICAgICAgQ0NU
ZXh0dXJlVXBkYXRlciB1cGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9s
YXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCksIG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZUNvcGllcigpKTsKKyAgICAgICAgbV9s
YXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOworICAgICAg
ICB1cGRhdGVyLnVwZGF0ZShudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgICAg
IEFTU0VSVCghdXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKICAgICAgICAgbV9sYXllclRyZWVI
b3N0SW1wbC0+c2V0VmlzaWJsZShtX2xheWVyVHJlZUhvc3QtPnZpc2libGUoKSk7CiAgICAgICAg
IG1fbGF5ZXJUcmVlSG9zdC0+ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9z
dEltcGwuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCAwY2Uw
ZjZkMTA5OGE3Mzk3N2YzYmFmODIzMmY3MjE2YjA1ZTdhZDdlLi41ZTVjZjBiM2JhZTFkZTRlNTcw
NjRkZDEyMDZiMjM5OGUwYzcyN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNw
cApAQCAtMjksMjIgKzI5LDc1IEBACiAKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgi
CiAKKyNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUg
Ik1hbmFnZWRUZXh0dXJlLmgiCisjaW5jbHVkZSAiY2MvQ0NUaW1lci5oIgogCiB1c2luZyBuYW1l
c3BhY2Ugc3RkOwogCituYW1lc3BhY2UgeworCisvLyBOdW1iZXIgb2YgcGVuZGluZyB0ZXh0dXJl
IHVwZGF0ZSBxdWVyaWVzIHRvIGFsbG93Lgorc3RhdGljIGNvbnN0IHNpemVfdCBtYXhQZW5kaW5n
VGV4dHVyZVVwZGF0ZVF1ZXJpZXMgPSAyOworCisvLyBNZWFzdXJlZCBpbiBzZWNvbmRzLgorc3Rh
dGljIGNvbnN0IGRvdWJsZSB0ZXh0dXJlVXBkYXRlVGlja1JhdGUgPSAwLjAwNDsKKworfSAvLyBh
bm9ueW1vdXMgbmFtZXNwYWNlCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0NUZXh0dXJlVXBk
YXRlcjo6Q0NUZXh0dXJlVXBkYXRlcihUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIFRleHR1
cmVDb3BpZXIqIGNvcGllcikKLSAgICA6IG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKK0NDVGV4dHVy
ZVVwZGF0ZXI6OlF1ZXJ5OjpRdWVyeShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKKyAgICA6
IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9xdWVyeUlkKDApCit7CisgICAgRXh0ZW5zaW9u
czNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1
bSo+KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICBtX3F1ZXJ5SWQgPSBleHRlbnNp
b25zLT5jcmVhdGVRdWVyeUVYVCgpOworfQorCitDQ1RleHR1cmVVcGRhdGVyOjpRdWVyeTo6flF1
ZXJ5KCkKK3sKKyAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19j
YXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOwor
ICAgIGV4dGVuc2lvbnMtPmRlbGV0ZVF1ZXJ5RVhUKG1fcXVlcnlJZCk7Cit9CisKK3ZvaWQgQ0NU
ZXh0dXJlVXBkYXRlcjo6UXVlcnk6OnN0YXJ0KCkKK3sKKyAgICBFeHRlbnNpb25zM0RDaHJvbWl1
bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAgIGV4dGVuc2lvbnMtPmJlZ2luUXVlcnlFWFQoRXh0
ZW5zaW9uczNEQ2hyb21pdW06OkNPTU1BTkRTX0lTU1VFRF9DSFJPTUlVTSwgbV9xdWVyeUlkKTsK
KyAgICBleHRlbnNpb25zLT5lbmRRdWVyeUVYVChFeHRlbnNpb25zM0RDaHJvbWl1bTo6Q09NTUFO
RFNfSVNTVUVEX0NIUk9NSVVNKTsKK30KKworYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjpRdWVyeTo6
aXNQZW5kaW5nKCkKK3sKKyAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0
YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkpOworICAgIHVuc2lnbmVkIGF2YWlsYWJsZSA9IDE7CisgICAgZXh0ZW5zaW9ucy0+Z2V0UXVl
cnlPYmplY3R1aXZFWFQobV9xdWVyeUlkLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6UVVFUllfUkVT
VUxUX0FWQUlMQUJMRV9FWFQsICZhdmFpbGFibGUpOworICAgIHJldHVybiAhYXZhaWxhYmxlOwor
fQorCitDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIFRleHR1cmVDb3BpZXIqIGNv
cGllcikKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9hbGxvY2F0b3IoYWxsb2Nh
dG9yKQogICAgICwgbV9jb3BpZXIoY29waWVyKQogICAgICwgbV9lbnRyeUluZGV4KDApCiB7CiAg
ICAgQVNTRVJUKG1fYWxsb2NhdG9yKTsKIH0KIAorQ0NUZXh0dXJlVXBkYXRlcjo6Q0NUZXh0dXJl
VXBkYXRlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yLCBUZXh0dXJlQ29waWVyKiBjb3BpZXIsIFBhc3NPd25QdHI8Q0NUaW1lcj4gdXBkYXRl
VGltZXIpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fYWxsb2NhdG9yKGFsbG9j
YXRvcikKKyAgICAsIG1fY29waWVyKGNvcGllcikKKyAgICAsIG1fZW50cnlJbmRleCgwKQorICAg
ICwgbV91cGRhdGVUaW1lcih1cGRhdGVUaW1lcikKK3sKKyAgICBBU1NFUlQobV9jb250ZXh0KTsK
KyAgICBBU1NFUlQobV9hbGxvY2F0b3IpOworfQorCiBDQ1RleHR1cmVVcGRhdGVyOjp+Q0NUZXh0
dXJlVXBkYXRlcigpCiB7CiB9CkBAIC03NSwxMyArMTI4LDM4IEBAIGJvb2wgQ0NUZXh0dXJlVXBk
YXRlcjo6aGFzTW9yZVVwZGF0ZXMoKSBjb25zdAogICAgIHJldHVybiBtX2VudHJpZXMuc2l6ZSgp
IHx8IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpOwogfQogCi1ib29sIENDVGV4dHVyZVVwZGF0ZXI6
OnVwZGF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgc2l6ZV90IGNvdW50KQorZG91Ymxl
IENDVGV4dHVyZVVwZGF0ZXI6Om1heFRleHR1cmVVcGRhdGVUaW1lKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gdGV4dHVyZVVwZGF0ZVRpY2tSYXRlICsgMC4wMDI7Cit9CisKK3ZvaWQgQ0NUZXh0dXJl
VXBkYXRlcjo6dXBkYXRlKHNpemVfdCBjb3VudCkKIHsKKyAgICBPd25QdHI8UXVlcnk+IHF1ZXJ5
OworCisgICAgaWYgKG1fdXBkYXRlVGltZXIpIHsKKyAgICAgICAgbV91cGRhdGVUaW1lci0+c3Rh
cnRPbmVTaG90KHRleHR1cmVVcGRhdGVUaWNrUmF0ZSk7CisKKyAgICAgICAgLy8gUHJvY2VzcyBw
ZW5kaW5nIHF1ZXJpZXMuCisgICAgICAgIHByb2Nlc3NRdWVyaWVzKCk7CisKKyAgICAgICAgLy8g
VXNlIGF2YWlsYWJsZSBxdWVyeSBvciBjcmVhdGUgbmV3IHF1ZXJ5LgorICAgICAgICBpZiAoIW1f
YXZhaWxhYmxlUXVlcmllc0xpc3QuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBxdWVyeSA9IG1f
YXZhaWxhYmxlUXVlcmllc0xpc3QubGFzdCgpLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1fYXZh
aWxhYmxlUXVlcmllc0xpc3QucmVtb3ZlTGFzdCgpOworICAgICAgICB9IGVsc2UgaWYgKG1fcGVu
ZGluZ1F1ZXJpZXNMaXN0LnNpemUoKSA8IG1heFBlbmRpbmdUZXh0dXJlVXBkYXRlUXVlcmllcykK
KyAgICAgICAgICAgIHF1ZXJ5ID0gUXVlcnk6OmNyZWF0ZShtX2NvbnRleHQpOworCisgICAgICAg
IC8vIEF2b2lkIHVwZGF0ZSBpZiB3ZSBoYXZlIHJlYWNoIHRoZSBsaW1pdCBmb3IgcGVuZGluZyBx
dWVyaWVzLgorICAgICAgICBpZiAoIXF1ZXJ5KQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIHNpemVfdCBpbmRleDsKICAgICBzaXplX3QgbWF4SW5kZXggPSBtaW4obV9lbnRyeUlu
ZGV4ICsgY291bnQsIG1fZW50cmllcy5zaXplKCkpOwogICAgIGZvciAoaW5kZXggPSBtX2VudHJ5
SW5kZXg7IGluZGV4IDwgbWF4SW5kZXg7ICsraW5kZXgpIHsKICAgICAgICAgVXBkYXRlRW50cnkm
IGVudHJ5ID0gbV9lbnRyaWVzW2luZGV4XTsKLSAgICAgICAgZW50cnkubV90ZXh0dXJlLT51cGRh
dGVSZWN0KGNvbnRleHQsIG1fYWxsb2NhdG9yLCBlbnRyeS5tX3NvdXJjZVJlY3QsIGVudHJ5Lm1f
ZGVzdFJlY3QpOworICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0ZVJlY3QobV9jb250ZXh0
LCBtX2FsbG9jYXRvciwgZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5tX2Rlc3RSZWN0KTsKICAg
ICB9CiAKICAgICBib29sIG1vcmVVcGRhdGVzID0gbWF4SW5kZXggPCBtX2VudHJpZXMuc2l6ZSgp
OwpAQCAtOTIsMTkgKzE3MCwyMSBAQCBib29sIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgc2l6ZV90IGNvdW50KQogICAgIGlmICgoY291bnQgLSAo
aW5kZXggLSBtX2VudHJ5SW5kZXgpKSA8IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpKQogICAgICAg
ICBtb3JlVXBkYXRlcyA9IHRydWU7CiAKLSAgICBpZiAobW9yZVVwZGF0ZXMpIHsKKyAgICBpZiAo
IW1vcmVVcGRhdGVzKSB7CisgICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IG1fcGFydGlh
bEVudHJpZXMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICBVcGRhdGVFbnRyeSYgZW50
cnkgPSBtX3BhcnRpYWxFbnRyaWVzW2luZGV4XTsKKyAgICAgICAgICAgIGVudHJ5Lm1fdGV4dHVy
ZS0+dXBkYXRlUmVjdChtX2NvbnRleHQsIG1fYWxsb2NhdG9yLCBlbnRyeS5tX3NvdXJjZVJlY3Qs
IGVudHJ5Lm1fZGVzdFJlY3QpOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgbm8gZW50cmll
cyBsZWZ0IHRvIHByb2Nlc3MsIGF1dG8tY2xlYXIuCisgICAgICAgIGNsZWFyKCk7CisgICAgfSBl
bHNlCiAgICAgICAgIG1fZW50cnlJbmRleCA9IGluZGV4OwotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9CiAKLSAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBtX3BhcnRpYWxFbnRyaWVzLnNp
emUoKTsgKytpbmRleCkgewotICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX3BhcnRpYWxF
bnRyaWVzW2luZGV4XTsKLSAgICAgICAgZW50cnkubV90ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRl
eHQsIG1fYWxsb2NhdG9yLCBlbnRyeS5tX3NvdXJjZVJlY3QsIGVudHJ5Lm1fZGVzdFJlY3QpOwor
ICAgIGlmIChxdWVyeSkgeworICAgICAgICBxdWVyeS0+c3RhcnQoKTsKKyAgICAgICAgbV9wZW5k
aW5nUXVlcmllc0xpc3QucHJlcGVuZChxdWVyeS5yZWxlYXNlKCkpOwogICAgIH0KLQotICAgIC8v
IElmIG5vIGVudHJpZXMgbGVmdCB0byBwcm9jZXNzLCBhdXRvLWNsZWFyLgotICAgIGNsZWFyKCk7
Ci0gICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmNsZWFyKCkK
QEAgLTExNCw2ICsxOTQsMTcgQEAgdm9pZCBDQ1RleHR1cmVVcGRhdGVyOjpjbGVhcigpCiAgICAg
bV9wYXJ0aWFsRW50cmllcy5jbGVhcigpOwogfQogCit2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OnBy
b2Nlc3NRdWVyaWVzKCkKK3sKKyAgICB3aGlsZSAoIW1fcGVuZGluZ1F1ZXJpZXNMaXN0LmlzRW1w
dHkoKSkgeworICAgICAgICBpZiAobV9wZW5kaW5nUXVlcmllc0xpc3QubGFzdCgpLT5pc1BlbmRp
bmcoKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIG1fYXZhaWxhYmxlUXVlcmllc0xp
c3QucHJlcGVuZChtX3BlbmRpbmdRdWVyaWVzTGlzdC5sYXN0KCkucmVsZWFzZSgpKTsKKyAgICAg
ICAgbV9wZW5kaW5nUXVlcmllc0xpc3QucmVtb3ZlTGFzdCgpOworICAgIH0KK30KKwogfQogCiAj
ZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
VXBkYXRlci5oCmluZGV4IGQyOWM2NTg2MWU5MzIzZWNmZjgyZGU0MGJjZGJmN2UyNDZiNDk3MDcu
LjVjYzI2YTgxMDZlNTRlMTg2Nzg1N2Y0OGI4ZWNkNjZjZDkwNWYzZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVVcGRhdGVyLmgKQEAgLTMyLDI1ICszMiw0NSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIENDVGltZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIFRl
eHR1cmVBbGxvY2F0b3I7CiBjbGFzcyBUZXh0dXJlQ29waWVyOwogCiBjbGFzcyBDQ1RleHR1cmVV
cGRhdGVyIHsKIHB1YmxpYzoKLSAgICBDQ1RleHR1cmVVcGRhdGVyKFRleHR1cmVBbGxvY2F0b3Iq
LCBUZXh0dXJlQ29waWVyKik7CisgICAgY2xhc3MgUXVlcnkgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgc3RhdGljIFBhc3NPd25QdHI8UXVlcnk+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IFF1ZXJ5KGNvbnRleHQpKTsgfQorCisgICAgICAg
IHZpcnR1YWwgflF1ZXJ5KCk7CisKKyAgICAgICAgdm9pZCBzdGFydCgpOworICAgICAgICBib29s
IGlzUGVuZGluZygpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgUXVlcnkoR3Jh
cGhpY3NDb250ZXh0M0QqKTsKKworICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0
OworICAgICAgICB1bnNpZ25lZCBtX3F1ZXJ5SWQ7CisgICAgfTsKKworICAgIENDVGV4dHVyZVVw
ZGF0ZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgVGV4dHVyZUNvcGll
ciopOworICAgIENDVGV4dHVyZVVwZGF0ZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxs
b2NhdG9yKiwgVGV4dHVyZUNvcGllciosIFBhc3NPd25QdHI8Q0NUaW1lcj4pOwogICAgIH5DQ1Rl
eHR1cmVVcGRhdGVyKCk7CiAKICAgICB2b2lkIGFwcGVuZChMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpOwogICAgIHZvaWQgYXBwZW5kUGFydGlhbChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
KiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwog
CiAgICAgYm9vbCBoYXNNb3JlVXBkYXRlcygpIGNvbnN0OworICAgIGRvdWJsZSBtYXhUZXh0dXJl
VXBkYXRlVGltZSgpIGNvbnN0OwogCi0gICAgLy8gVXBkYXRlIHNvbWUgdGV4dHVyZXMuIFJldHVy
bnMgdHJ1ZSBpZiBtb3JlIHRleHR1cmVzIGxlZnQgdG8gcHJvY2Vzcy4KLSAgICBib29sIHVwZGF0
ZShHcmFwaGljc0NvbnRleHQzRCosIHNpemVfdCBjb3VudCk7CisgICAgLy8gVXBkYXRlIHNvbWUg
dGV4dHVyZXMuCisgICAgdm9pZCB1cGRhdGUoc2l6ZV90IGNvdW50KTsKIAogICAgIHZvaWQgY2xl
YXIoKTsKIAorICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250
ZXh0OyB9CiAgICAgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKCkgeyByZXR1cm4gbV9hbGxv
Y2F0b3I7IH0KICAgICBUZXh0dXJlQ29waWVyKiBjb3BpZXIoKSB7IHJldHVybiBtX2NvcGllcjsg
fQogCkBAIC02MywxMSArODMsMTcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyB2b2lkIGFwcGVu
ZChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIFZlY3RvcjxVcGRhdGVFbnRyeT4mKTsKIAorICAg
IHZvaWQgcHJvY2Vzc1F1ZXJpZXMoKTsKKworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRl
eHQ7CiAgICAgVGV4dHVyZUFsbG9jYXRvciogbV9hbGxvY2F0b3I7CiAgICAgVGV4dHVyZUNvcGll
ciogbV9jb3BpZXI7CiAgICAgc2l6ZV90IG1fZW50cnlJbmRleDsKICAgICBWZWN0b3I8VXBkYXRl
RW50cnk+IG1fZW50cmllczsKICAgICBWZWN0b3I8VXBkYXRlRW50cnk+IG1fcGFydGlhbEVudHJp
ZXM7CisgICAgT3duUHRyPENDVGltZXI+IG1fdXBkYXRlVGltZXI7CisgICAgVmVjdG9yPE93blB0
cjxRdWVyeT4gPiBtX3BlbmRpbmdRdWVyaWVzTGlzdDsKKyAgICBWZWN0b3I8T3duUHRyPFF1ZXJ5
PiA+IG1fYXZhaWxhYmxlUXVlcmllc0xpc3Q7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwCmluZGV4IDQ1ODRmMTVmYmNhMmU1YmU0ODk5NmRhZDVmMDlmM2NhYzhhM2E5NzYuLjYy
YTQ1MTJjZWE3NTBjZDI1OWI5NzZlODhlZjUwNTIxNmNkYjkwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSB7CiAKIC8vIE51bWJlciBv
ZiB0ZXh0dXJlcyB0byB1cGRhdGUgd2l0aCBlYWNoIGNhbGwgdG8KIC8vIHNjaGVkdWxlZEFjdGlv
blVwZGF0ZU1vcmVSZXNvdXJjZXMoKS4KLXN0YXRpYyBjb25zdCBzaXplX3QgdGV4dHVyZVVwZGF0
ZXNQZXJGcmFtZSA9IDQ4Oworc3RhdGljIGNvbnN0IHNpemVfdCB0ZXh0dXJlVXBkYXRlc1BlclRp
Y2sgPSA0OwogCiAvLyBNZWFzdXJlZCBpbiBzZWNvbmRzLgogc3RhdGljIGNvbnN0IGRvdWJsZSBj
b250ZXh0UmVjcmVhdGlvblRpY2tSYXRlID0gMC4wMzsKQEAgLTQ4OCw2ICs0ODgsMjUgQEAgdm9p
ZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKCkKICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1p
dENvbXBsZXRlKCk7CiB9CiAKK2NsYXNzIENDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGltZXIg
OiBwdWJsaWMgQ0NUaW1lciwgQ0NUaW1lckNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NPd25QdHI8Q0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVUaW1lcj4gY3JlYXRlKENDVGhyZWFk
UHJveHkqIHByb3h5KSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ0NUaHJlYWRQcm94eVRleHR1cmVV
cGRhdGVUaW1lcihwcm94eSkpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb25UaW1lckZpcmVkKCkK
KyAgICB7CisgICAgICAgIG1fcHJveHktPnRleHR1cmVVcGRhdGVDb21wbGV0ZU9uSW1wbFRocmVh
ZCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBDQ1RocmVhZFByb3h5VGV4dHVy
ZVVwZGF0ZVRpbWVyKENDVGhyZWFkUHJveHkqIHByb3h5KQorICAgICAgICA6IENDVGltZXIoQ0NQ
cm94eTo6aW1wbFRocmVhZCgpLCB0aGlzKQorICAgICAgICAsIG1fcHJveHkocHJveHkpCisgICAg
eworICAgIH0KKworICAgIENDVGhyZWFkUHJveHkqIG1fcHJveHk7Cit9OworCiB2b2lkIENDVGhy
ZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVu
dCogY29tcGxldGlvbikKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6YmVnaW5G
cmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CkBAIC01MDIsMTggKzUyMSwyNSBA
QCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0Nv
bXBsZXRpb25FdmVudCogY29tcGxldGlvbgogCiAgICAgbV9jb21taXRDb21wbGV0aW9uRXZlbnRP
bkltcGxUaHJlYWQgPSBjb21wbGV0aW9uOwogCi0gICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJl
VXBkYXRlck9uSW1wbFRocmVhZCk7Ci0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxU
aHJlYWQgPSBhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBs
LT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJS
ZW5kZXJlcigpLT50ZXh0dXJlQ29waWVyKCkpKTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAqbV9j
dXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOworICAgIGlmICghbV90ZXh0dXJlVXBk
YXRlck9uSW1wbFRocmVhZCkKKyAgICAgICAgbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCA9
IGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRl
eHQoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCksIG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZUNvcGllcigpLCBDQ1Ro
cmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRpbWVyOjpjcmVhdGUodGhpcykpKTsKKyAgICBtX2xheWVy
VHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKm1fdGV4dHVyZVVwZGF0ZXJPbklt
cGxUaHJlYWQpOwogCiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmJlZ2luRnJhbWVDb21w
bGV0ZSgpOwogfQogCiBib29sIENDVGhyZWFkUHJveHk6Omhhc01vcmVSZXNvdXJjZVVwZGF0ZXMo
KSBjb25zdAogewotICAgIGlmICghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQp
CisgICAgaWYgKCFtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5o
YXNNb3JlVXBkYXRlcygpOworICAgIHJldHVybiBtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFk
LT5oYXNNb3JlVXBkYXRlcygpOworfQorCitkb3VibGUgQ0NUaHJlYWRQcm94eTo6bWF4UmVzb3Vy
Y2VVcGRhdGVUaW1lKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fdGV4dHVyZVVwZGF0ZXJPbkltcGxU
aHJlYWQpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX3RleHR1cmVVcGRhdGVyT25J
bXBsVGhyZWFkLT5tYXhUZXh0dXJlVXBkYXRlVGltZSgpOwogfQogCiBib29sIENDVGhyZWFkUHJv
eHk6OmNhbkRyYXcoKQpAQCAtNTI3LDIwICs1NTMsMjAgQEAgYm9vbCBDQ1RocmVhZFByb3h5Ojpj
YW5EcmF3KCkKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJl
c291cmNlcygpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFj
dGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCB0aGlzLCAwKTsKLSAgICBBU1NFUlQobV9jdXJyZW50
VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVy
T25JbXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCB0ZXh0
dXJlVXBkYXRlc1BlckZyYW1lKTsKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIEFT
U0VSVChtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKKyAgICBBU1NFUlQobV90ZXh0dXJl
VXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVwZGF0ZXMoKSk7CisKKyAgICBtX3RleHR1cmVV
cGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUodGV4dHVyZVVwZGF0ZXNQZXJUaWNrKTsKIH0KIAog
dm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQoKQogewogICAgIFRSQUNF
X0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQiLCB0aGlzLCAwKTsK
LSAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIEFT
U0VSVCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVz
KCkpOworICAgIEFTU0VSVChtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKKyAgICBBU1NF
UlQoIW1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCkpOwogICAg
IEFTU0VSVChtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CiAKLSAgICBtX2N1
cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5jbGVhcigpOwotCi0KICAgICBtX2xheWVy
VHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwogCiAgICAgbV9sYXllclRyZWVIb3N0LT5iZWdp
bkNvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKQEAgLTczMiw2
ICs3NTgsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmxheWVyVHJlZUhvc3RDbG9zZWRPbkltcGxU
aHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpbwogICAgIFRSQUNFX0VWRU5UKCJDQ1Ro
cmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CiAg
ICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNv
bnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNU
ZXh0dXJlQWxsb2NhdG9yKCkpOworICAgIG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xl
YXIoKTsKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLmNsZWFyKCk7CiAgICAgbV9pbnB1dEhhbmRs
ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC5jbGVh
cigpOwpAQCAtNzQ2LDcgKzc3Myw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0RnVsbFJvb3RM
YXllckRhbWFnZU9uSW1wbFRocmVhZCgpCiAKIHNpemVfdCBDQ1RocmVhZFByb3h5OjptYXhQYXJ0
aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25zdAogewotICAgIHJldHVybiB0ZXh0dXJlVXBkYXRlc1Bl
ckZyYW1lOworICAgIHJldHVybiB0ZXh0dXJlVXBkYXRlc1BlclRpY2s7CiB9CiAKIHZvaWQgQ0NU
aHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50
KiBjb21wbGV0aW9uLCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dFB0ciwgYm9vbCogcmVjcmVh
dGVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMqIGNhcGFiaWxpdGllcykKQEAg
LTc2Miw0ICs3ODksMTEgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbklt
cGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIEcKICAgICBjb21wbGV0aW9u
LT5zaWduYWwoKTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5Ojp0ZXh0dXJlVXBkYXRlQ29tcGxl
dGVPbkltcGxUaHJlYWQoKQoreworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgVFJB
Q0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnRleHR1cmVVcGRhdGVDb21wbGV0ZU9uSW1wbFRocmVh
ZCIsIHRoaXMsIDApOworICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5kaWRVcGRhdGVNb3Jl
UmVzb3VyY2VzQ29tcGxldGUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5oCmluZGV4IDM1ZmUxZGJhZmY0MGI0YTZlMmRmOWZjZDg0ZDIyZjkyNTYw
YzliMzcuLjUyNWQ3M2Q0NWM4MzljNjQ4NDM4NGY1MzA4MDk4YTQ1YWFiNzM0NGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgQ0NTY29wZWRUaHJlYWRQ
cm94eTsKIGNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFzcyBDQ1RocmVhZDsKIGNsYXNzIEND
VGhyZWFkUHJveHlDb250ZXh0UmVjcmVhdGlvblRpbWVyOworY2xhc3MgQ0NUaHJlYWRQcm94eVRl
eHR1cmVVcGRhdGVUaW1lcjsKIAogY2xhc3MgQ0NUaHJlYWRQcm94eSA6IHB1YmxpYyBDQ1Byb3h5
LCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50LCBDQ1NjaGVkdWxlckNsaWVudCB7CiBwdWJsaWM6
CkBAIC04MSw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICAvLyBDQ1NjaGVkdWxlckNsaWVudCBpbXBs
ZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3KCk7CiAgICAgdmlydHVhbCBib29s
IGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBtYXhS
ZXNvdXJjZVVwZGF0ZVRpbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0
aW9uQmVnaW5GcmFtZSgpOwogICAgIHZpcnR1YWwgQ0NTY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dh
cFJlc3VsdCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUoKTsKICAgICB2aXJ0
dWFsIENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0aW9uRHJh
d0FuZFN3YXBGb3JjZWQoKTsKQEAgLTkxLDYgKzkzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCopOwogICAgIGZyaWVuZCBj
bGFzcyBDQ1RocmVhZFByb3h5Q29udGV4dFJlY3JlYXRpb25UaW1lcjsKKyAgICBmcmllbmQgY2xh
c3MgQ0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVUaW1lcjsKIAogICAgIC8vIFNldCBvbiBpbXBs
IHRocmVhZCwgcmVhZCBvbiBtYWluIHRocmVhZC4KICAgICBzdHJ1Y3QgQmVnaW5GcmFtZUFuZENv
bW1pdFN0YXRlIHsKQEAgLTEyOCw2ICsxMzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RnVs
bFJvb3RMYXllckRhbWFnZU9uSW1wbFRocmVhZCgpOwogICAgIHZvaWQgcmVjcmVhdGVDb250ZXh0
T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgR3JhcGhpY3NDb250ZXh0M0QqLCBib29s
KiByZWNyZWF0ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyopOwogICAgIEND
U2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3
YXBJbnRlcm5hbChib29sIGZvcmNlZERyYXcpOworICAgIHZvaWQgdGV4dHVyZVVwZGF0ZUNvbXBs
ZXRlT25JbXBsVGhyZWFkKCk7CiAKICAgICAvLyBBY2Nlc3NlZCBvbiBtYWluIHRocmVhZCBvbmx5
LgogICAgIGJvb2wgbV9hbmltYXRlUmVxdWVzdGVkOwpAQCAtMTQ5LDYgKzE1Myw4IEBAIHByaXZh
dGU6CiAKICAgICBSZWZQdHI8Q0NTY29wZWRUaHJlYWRQcm94eT4gbV9tYWluVGhyZWFkUHJveHk7
CiAKKyAgICBPd25QdHI8Q0NUZXh0dXJlVXBkYXRlcj4gbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRo
cmVhZDsKKwogICAgIC8vIEhvbGRzIG9uIHRvIHRoZSBHcmFwaGljc0NvbnRleHQzRCB3ZSBtaWdo
dCB1c2UgZm9yIGNvbXBvc2l0aW5nIGluIGJldHdlZW4gaW5pdGlhbGl6ZUNvbnRleHQoKQogICAg
IC8vIGFuZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpIGNhbGxzLgogICAgIFJlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4gbV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb25PbkltcGxUaHJlYWQ7
CkBAIC0xNjQsNyArMTcwLDYgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNldCB3aGVuIHRoZSBtYWlu
IHRocmVhZCBpcyB3YWl0aW5nIG9uIGEgY29tbWl0IHRvIGNvbXBsZXRlLgogICAgIENDQ29tcGxl
dGlvbkV2ZW50KiBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZDsKLSAgICBPd25Q
dHI8Q0NUZXh0dXJlVXBkYXRlcj4gbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQ7
CiAKICAgICAvLyBTZXQgd2hlbiB0aGUgbmV4dCBkcmF3IHNob3VsZCBwb3N0IGRpZENvbW1pdEFu
ZERyYXdGcmFtZSB0byB0aGUgbWFpbiB0aHJlYWQuCiAgICAgYm9vbCBtX25leHRGcmFtZUlzTmV3
bHlDb21taXR0ZWRGcmFtZU9uSW1wbFRocmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZVNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lU291cmNlLmgKaW5kZXgg
ZGNjYjQ3MGE2MzgzZTMwNGRiMTE2YTViOWRmOTFkZTU2MDY4ZTA4NS4uYzM2NGQ5MmJkMDI4YTIy
ZmZhOGEyYTg3ZmMxOTMwYjU4ZGVmOGU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lU291cmNlLmgKQEAgLTUw
LDYgKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoQ0NUaW1lU291
cmNlQ2xpZW50KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCkgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBhY3RpdmUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBkb3VibGUg
bmV4dFRpY2tUaW1lKCkgY29uc3QgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggMDE5MDIyNTc3
NjYxZGQ4OTViYzJiOWNlNjNmYjUwZDUyMWFhYTJhMS4uZGQ5ZjU5ZTVkZDVhN2JjZDc1ZjkxZDM0
ZDBiOWRiNGM3NDJlMDNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0xNDE3LDkgKzE0MTcsOSBAQCBwdWJsaWM6
CiAgICAgICAgIG1faWRsZVBhaW50Q29udGVudHNDb3VudCsrOwogICAgIH0KIAotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiAgICAgewotICAg
ICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250
ZXh0LCB1cGRhdGVyKTsKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXModXBkYXRlcik7CiAgICAgICAgIG1fdXBkYXRlQ291bnQrKzsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAppbmRleCBlNGE1ZDdjOTU5NDRiOTRkNjUzYzE0MTE5
NTZiOWMyOWNjZWQ0NmJmLi5lY2Y0NWIzMzRmNDIzMTI5MWQ4YjI4MjQ5NjAxYmVkMTY1ZDMzNGVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCkBAIC0xOTgsNiArMTk4LDcgQEAgVEVTVChDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RDb21taXRBZnRlckZhaWxlZERyYXdBbGxvd3NE
cmF3SW5TYW1lRnJhbWUKIAogICAgIC8vIEZpbmlzaCB0aGUgY29tbWl0LgogICAgIHN0YXRlLmJl
Z2luRnJhbWVDb21wbGV0ZSgpOworICAgIHN0YXRlLnNldENhblVwZGF0ZU1vcmVSZXNvdXJjZXMo
dHJ1ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVH
SU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRl
LnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRF
X01PUkVfUkVTT1VSQ0VTKTsKICAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21w
bGV0ZShmYWxzZSk7CkBAIC0yNDgsNiArMjQ5LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZVRlc3QsIFRlc3RDb21taXRBZnRlckZhaWxlZEFuZFN1Y2Nlc3NmdWxEcmF3RG9lc05vdEEK
IAogICAgIC8vIEZpbmlzaCB0aGUgY29tbWl0LgogICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0
ZSgpOworICAgIHN0YXRlLnNldENhblVwZGF0ZU1vcmVSZXNvdXJjZXModHJ1ZSk7CiAgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVf
UkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VT
KTsKICAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CkBA
IC00NjEsNiArNDYzLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RV
cGRhdGVzX05vUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAgIHN0YXRlLnNldENvbW1pdFN0
YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VS
Q0VTKTsKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyhmYWxzZSk7CiAgICAgc3RhdGUuc2V0VXBk
YXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOworICAgIHN0YXRlLnNldENhblVwZGF0ZU1v
cmVSZXNvdXJjZXModHJ1ZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKIAogICAgIC8v
IFZlcmlmeSB3ZSBiZWdpbiB1cGRhdGUsIGJvdGggZm9yIHZzeW5jIGFuZCBub3QgdnN5bmMuCkBA
IC00ODksNiArNDkyLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RV
cGRhdGVzX05vUmVkcmF3X1R3b1JvdW5kc09mVXBkYXRlcykKICAgICBzdGF0ZS5zZXRDb21taXRT
dGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09V
UkNFUyk7CiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoZmFsc2UpOwogICAgIHN0YXRlLnNldFVw
ZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKKyAgICBzdGF0ZS5zZXRDYW5VcGRhdGVN
b3JlUmVzb3VyY2VzKHRydWUpOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CiAKICAgICAv
LyBWZXJpZnkgdGhlIHVwZGF0ZSBiZWdpbnMsIGJvdGggZm9yIHZzeW5jIGFuZCBub3QgdnN5bmMu
CkBAIC01NDUsNiArNTQ5LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRl
c3RVcGRhdGVzX1dpdGhSZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiAgICAgc3RhdGUuc2V0Q29t
bWl0U3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19S
RVNPVVJDRVMpOwogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOwogICAgIHN0YXRlLnNl
dFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKKyAgICBzdGF0ZS5zZXRDYW5VcGRh
dGVNb3JlUmVzb3VyY2VzKHRydWUpOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CiAgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01P
UkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCkBAIC02MDQsNiArNjA5LDcgQEAg
VEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RTZXROZWVkc0NvbW1pdElzTm90
TG9zdCkKIAogICAgIC8vIExldCB0aGUgZnJhbWUgZmluaXNoLgogICAgIHN0YXRlLmJlZ2luRnJh
bWVDb21wbGV0ZSgpOworICAgIHN0YXRlLnNldENhblVwZGF0ZU1vcmVSZXNvdXJjZXModHJ1ZSk7
CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBE
QVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMs
IHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOwpAQCAtNjQ2
LDYgKzY1Miw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5
Y2xlKQogCiAgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KICAg
ICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBzdGF0ZS5zZXRDYW5VcGRhdGVNb3Jl
UmVzb3VyY2VzKHRydWUpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRF
X01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCkBAIC02OTcsNiArNzA0LDcg
QEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxsQ3ljbGVXaXRoQ29t
bWl0UmVxdWVzdEluYmV0d2VlbikKIAogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgZnJh
bWUgZmluaXNoZWQuCiAgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgc3RhdGUu
c2V0Q2FuVXBkYXRlTW9yZVJlc291cmNlcyh0cnVlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNv
bW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKIApA
QCAtNzU0LDYgKzc2Miw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0
R29lc0ludmlzaWJsZU1pZENvbW1pdCkKIAogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUg
ZnJhbWUgZmluaXNoZWQKICAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBzdGF0
ZS5zZXRDYW5VcGRhdGVNb3JlUmVzb3VyY2VzKHRydWUpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUu
Y29tbWl0U3RhdGUoKSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwog
CkBAIC04NjEsNiArODcwLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRl
c3RDb250ZXh0TG9zdFdoaWxlQ29tbWl0SW5Qcm9ncmVzcykKIAogICAgIC8vIEZpbmlzaCB0aGUg
ZnJhbWUsIHVwZGF0ZSByZXNvdXJjZXMsIGFuZCBjb21taXQuCiAgICAgc3RhdGUuYmVnaW5GcmFt
ZUNvbXBsZXRlKCk7CisgICAgc3RhdGUuc2V0Q2FuVXBkYXRlTW9yZVJlc291cmNlcyh0cnVlKTsK
ICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERB
VEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUudXBkYXRl
U3RhdGUoc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwpAQCAtOTA1LDYgKzkx
NSw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29udGV4dExvc3RX
aGlsZUNvbW1pdEluUHJvZ3Jlc3NBbmRBbm90aGVyCiAKICAgICAvLyBGaW5pc2ggdGhlIGZyYW1l
LCB1cGRhdGUgcmVzb3VyY2VzLCBhbmQgY29tbWl0LgogICAgIHN0YXRlLmJlZ2luRnJhbWVDb21w
bGV0ZSgpOworICAgIHN0YXRlLnNldENhblVwZGF0ZU1vcmVSZXNvdXJjZXModHJ1ZSk7CiAgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01P
UkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLnVwZGF0ZVN0YXRl
KHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKQEAgLTk3MSw2ICs5ODIsNyBA
QCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEJlZ2luRnJhbWVXaGVuQ29t
bWl0SW5Qcm9ncmVzcykKICAgICBzdGF0ZS5zZXROZWVkc0ZvcmNlZENvbW1pdCh0cnVlKTsKIAog
ICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOworICAgIHN0YXRlLnNldENhblVwZGF0ZU1v
cmVSZXNvdXJjZXModHJ1ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlv
bigpKTsKQEAgLTk5Myw0ICsxMDA1LDUyIEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LCBUZXN0QmVnaW5GcmFtZVdoZW5Db250ZXh0TG9zdCkKICAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigp
KTsKIH0KIAorVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RDYW5VcGRhdGVN
b3JlUmVzb3VyY2VzKQoreworICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRW
aXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOworCisgICAgLy8g
U3RhcnQgY2xlYW4gYW5kIHNldCBjb21taXQuCisgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1
ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5f
RlJBTUUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBCZWdpbiB0aGUgZnJhbWUuCisg
ICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJ
Tl9GUkFNRSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRf
U1RBVEVfRlJBTUVfSU5fUFJPR1JFU1MsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVD
VF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8g
VGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KKyAgICBzdGF0ZS5iZWdpbkZy
YW1lQ29tcGxldGUoKTsKKyAgICBzdGF0ZS5zZXRDYW5VcGRhdGVNb3JlUmVzb3VyY2VzKHRydWUp
OworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQ
REFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VT
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSB1
cGRhdGUgYmVnYW4gYW5kIGZpbmlzaGVkLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKKyAg
ICBzdGF0ZS5zZXRDYW5VcGRhdGVNb3JlUmVzb3VyY2VzKGZhbHNlKTsKKyAgICBzdGF0ZS5iZWdp
blVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRl
LmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBBdCB2c3luYywgZHJh
dy4KKyAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBV19JRl9QT1NTSUJMRSwgc3RhdGUubmV4dEFjdGlvbigp
KTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0RSQVdfSUZfUE9TU0lCTEUpOworICAgIHN0YXRlLmRpZERyYXdJZlBvc3NpYmxlQ29tcGxldGVk
KHRydWUpOworICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKKworICAgIC8vIFRlbGwgdGhlIHNj
aGVkdWxlciB0aGF0IHdlIGNhbiB1cGRhdGUgbW9yZSByZXNvdXJjZXMuCisgICAgc3RhdGUuc2V0
Q2FuVXBkYXRlTW9yZVJlc291cmNlcyh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1p
dFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAg
IC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgc2Vjb25kIHVwZGF0ZSBiZWdhbiBhbmQgZmluaXNo
ZWQKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CisgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3Jl
UmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwgc3RhdGUuY29tbWl0U3RhdGUo
KSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlU
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKaW5kZXggYzg2NzdmMTE4YWUwYzYwOGY5ZDcx
NzQzOWU1NzVkZGFhZjI4NTBmNy4uOWY3ZmYxM2Y5MDU0ZmQxMjc2NmYxZjcyMjZiOWI0MGM0OGQw
NDJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxl
clRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJU
ZXN0LmNwcApAQCAtNDgsMTAgKzQ4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9kcmF3V2lsbEhh
cHBlbiA9IHRydWU7CiAgICAgICAgIG1fc3dhcFdpbGxIYXBwZW5JZkRyYXdIYXBwZW5zID0gdHJ1
ZTsKICAgICAgICAgbV9udW1EcmF3cyA9IDA7CisgICAgICAgIG1fbWF4UmVzb3VyY2VVcGRhdGVU
aW1lID0gMDsKICAgICB9CiAKICAgICB2b2lkIHNldEhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoYm9v
bCBiKSB7IG1faGFzTW9yZVJlc291cmNlVXBkYXRlcyA9IGI7IH0KICAgICB2b2lkIHNldENhbkRy
YXcoYm9vbCBiKSB7IG1fY2FuRHJhdyA9IGI7IH0KKyAgICB2b2lkIHNldE1heFJlc291cmNlVXBk
YXRlVGltZShkb3VibGUgdCkgeyBtX21heFJlc291cmNlVXBkYXRlVGltZSA9IHQ7IH0KIAogICAg
IGludCBudW1EcmF3cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtRHJhd3M7IH0KICAgICBpbnQgbnVt
QWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obV9hY3Rpb25zLnNpemUo
KSk7IH0KQEAgLTY3LDYgKzY5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGNhbkRy
YXcoKSB7IHJldHVybiBtX2NhbkRyYXc7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzTW9yZVJlc291
cmNlVXBkYXRlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzTW9yZVJlc291cmNlVXBkYXRlczsgfQor
ICAgIHZpcnR1YWwgZG91YmxlIG1heFJlc291cmNlVXBkYXRlVGltZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWF4UmVzb3VyY2VVcGRhdGVUaW1lOyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFj
dGlvbkJlZ2luRnJhbWUoKSB7IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkJl
Z2luRnJhbWUiKTsgfQogICAgIHZpcnR1YWwgQ0NTY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJl
c3VsdCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUoKQogICAgIHsKQEAgLTkz
LDYgKzk2LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9jYW5EcmF3OwogICAgIGJvb2wgbV9k
cmF3V2lsbEhhcHBlbjsKICAgICBib29sIG1fc3dhcFdpbGxIYXBwZW5JZkRyYXdIYXBwZW5zOwor
ICAgIGRvdWJsZSBtX21heFJlc291cmNlVXBkYXRlVGltZTsKICAgICBpbnQgbV9udW1EcmF3czsK
ICAgICBzdGQ6OnZlY3Rvcjxjb25zdCBjaGFyKj4gbV9hY3Rpb25zOwogfTsKQEAgLTExMiwxMiAr
MTE2LDEwIEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0Q29tbWl0KQogICAgIGNsaWVu
dC5yZXNldCgpOwogCiAgICAgLy8gU2luY2UsIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMgaXMgc2V0
IHRvIGZhbHNlLAotICAgIC8vIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQgdXBkYXRlTW9yZVJl
c291cmNlcywgdGhlbgotICAgIC8vIGNvbW1pdAorICAgIC8vIGJlZ2luRnJhbWVDb21wbGV0ZSBz
aG91bGQganVzdCBjb21taXQKICAgICBzY2hlZHVsZXItPmJlZ2luRnJhbWVDb21wbGV0ZSgpOwot
ICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKLSAgICBFWFBFQ1RfU1RSRVEo
InNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0aW9uKDApKTsK
LSAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24o
MSkpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1Rf
U1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24oMCkpOwogICAgIEVY
UEVDVF9UUlVFKHRpbWVTb3VyY2UtPmFjdGl2ZSgpKTsKICAgICBjbGllbnQucmVzZXQoKTsKIApA
QCAtMTQ5LDEyICsxNTEsMTAgQEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXRB
ZnRlckJlZ2luRnJhbWUpCiAgICAgc2NoZWR1bGVyLT5zZXROZWVkc0NvbW1pdCgpOwogCiAgICAg
Ly8gU2luY2UsIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMgaXMgc2V0IHRvIGZhbHNlLCBhbmQgYW5v
dGhlciBjb21taXQgaXMKLSAgICAvLyBuZWVkZWQsIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQg
dXBkYXRlTW9yZVJlc291cmNlcywgdGhlbiBjb21taXQsIHRoZW4KLSAgICAvLyBiZWdpbiBhbm90
aGVyIGZyYW1lLgorICAgIC8vIG5lZWRlZCwgYmVnaW5GcmFtZUNvbXBsZXRlIHNob3VsZCBjb21t
aXQsIHRoZW4gYmVnaW4gYW5vdGhlciBmcmFtZS4KICAgICBzY2hlZHVsZXItPmJlZ2luRnJhbWVD
b21wbGV0ZSgpOwotICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKLSAgICBF
WFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQu
YWN0aW9uKDApKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNs
aWVudC5hY3Rpb24oMSkpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsK
KyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24o
MCkpOwogICAgIGNsaWVudC5yZXNldCgpOwogCiAgICAgLy8gVGljayBzaG91bGQgZHJhdyBidXQg
dGhlbiBiZWdpbiBhbm90aGVyIGZyYW1lLgpAQCAtNDMwLDQgKzQzMCw2OCBAQCBURVNUKENDU2No
ZWR1bGVyVGVzdCwgTm9CZWdpbkZyYW1lV2hlblN3YXBGYWlsc0R1cmluZ0ZvcmNlZENvbW1pdCkK
ICAgICBFWFBFQ1RfRVEoMCwgY29udHJvbGxlclB0ci0+bnVtRnJhbWVzUGVuZGluZygpKTsKIH0K
IAorVEVTVChDQ1NjaGVkdWxlclRlc3QsIFVwZGF0ZU1vcmVSZXNvdXJjZXMpCit7CisgICAgRmFr
ZUNDU2NoZWR1bGVyQ2xpZW50IGNsaWVudDsKKyAgICBSZWZQdHI8RmFrZUNDVGltZVNvdXJjZT4g
dGltZVNvdXJjZSA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NUaW1lU291cmNlKCkpOworICAgIE93blB0
cjxDQ1NjaGVkdWxlcj4gc2NoZWR1bGVyID0gQ0NTY2hlZHVsZXI6OmNyZWF0ZSgmY2xpZW50LCBh
ZG9wdFB0cihuZXcgQ0NGcmFtZVJhdGVDb250cm9sbGVyKHRpbWVTb3VyY2UpKSk7CisgICAgc2No
ZWR1bGVyLT5zZXRWaXNpYmxlKHRydWUpOworCisgICAgLy8gU2V0TmVlZHNDb21taXQgc2hvdWxk
IGJlZ2luIHRoZSBmcmFtZS4KKyAgICBzY2hlZHVsZXItPnNldE5lZWRzQ29tbWl0KCk7CisgICAg
RVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2No
ZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSIsIGNsaWVudC5hY3Rpb24oMCkpOworICAgIGNsaWVudC5y
ZXNldCgpOworCisgICAgLy8gU2luY2UsIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMgaXMgc2V0IHRv
IHRydWUsIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQKKyAgICAvLyB1cGRhdGVNb3JlUmVzb3Vy
Y2VzLgorICAgIGNsaWVudC5zZXRIYXNNb3JlUmVzb3VyY2VVcGRhdGVzKHRydWUpOworICAgIHNj
aGVkdWxlci0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5u
dW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9y
ZVJlc291cmNlcyIsIGNsaWVudC5hY3Rpb24oMCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisg
ICAgY2xpZW50LnNldEhhc01vcmVSZXNvdXJjZVVwZGF0ZXModHJ1ZSk7CisgICAgc2NoZWR1bGVy
LT5kaWRVcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xp
ZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRh
dGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50LmFjdGlvbigwKSk7CisgICAgY2xpZW50LnJlc2V0KCk7
CisKKyAgICAvLyBTaW5jZSwgU2V0TmVlZFJlZHJhdyBpcyBzZXQgdG8gdHJ1ZSwgcmVzb3VyY2Ug
dXBkYXRlcyBzaG91bGQgYmUKKyAgICAvLyBhdm9pZGVkIGFzIHdlIGdldCBjbG9zZSB0byB0aGUg
bmV4dCB0aWNrIHRpbWUuCisgICAgc2NoZWR1bGVyLT5zZXROZWVkc1JlZHJhdygpOworICAgIEVY
UEVDVF9UUlVFKHNjaGVkdWxlci0+cmVkcmF3UGVuZGluZygpKTsKKyAgICBFWFBFQ1RfVFJVRSh0
aW1lU291cmNlLT5hY3RpdmUoKSk7CisgICAgRVhQRUNUX0VRKDAsIGNsaWVudC5udW1EcmF3cygp
KTsKKworICAgIC8vIFNpbmNlLCBtYXhSZXNvdXJjZVVwZGF0ZVRpbWUgaXMgNSBzZWNvbmRzIGFu
ZCBuZXh0VGlja1RpbWUgaXMgMQorICAgIC8vIHNlY29uZCBhd2F5LCBkaWRVcGRhdGVNb3JlUmVz
b3VyY2VzQ29tcGxldGUgc2hvdWxkIG5vdCBiZWdpbiBhbm90aGVyCisgICAgLy8gdXBkYXRlLgor
ICAgIGNsaWVudC5zZXRIYXNNb3JlUmVzb3VyY2VVcGRhdGVzKHRydWUpOworICAgIGNsaWVudC5z
ZXRNYXhSZXNvdXJjZVVwZGF0ZVRpbWUoNSk7CisgICAgdGltZVNvdXJjZS0+c2V0TmV4dFRpY2tU
aW1lKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpICsgMSk7CisgICAgc2NoZWR1bGVyLT5k
aWRVcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoMCwgY2xpZW50
Lm51bUFjdGlvbnMoKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBTaW5jZSwgbWF4
UmVzb3VyY2VVcGRhdGVUaW1lIGlzIDUgc2Vjb25kcyBhbmQgbmV4dFRpY2tUaW1lIGlzIDEwCisg
ICAgLy8gc2Vjb25kcyBhd2F5LCBkaWRVcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUgc2hvdWxk
IGJlZ2luIGFub3RoZXIKKyAgICAvLyB1cGRhdGUuCisgICAgY2xpZW50LnNldEhhc01vcmVSZXNv
dXJjZVVwZGF0ZXModHJ1ZSk7CisgICAgY2xpZW50LnNldE1heFJlc291cmNlVXBkYXRlVGltZSg1
KTsKKyAgICB0aW1lU291cmNlLT5zZXROZXh0VGlja1RpbWUobW9ub3RvbmljYWxseUluY3JlYXNp
bmdUaW1lKCkgKyAxMCk7CisgICAgc2NoZWR1bGVyLT5kaWRVcGRhdGVNb3JlUmVzb3VyY2VzQ29t
cGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQ
RUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50LmFj
dGlvbigwKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBTaW5jZSwgaGFzTW9yZVJl
c291cmNlVXBkYXRlcyBpcyBzZXQgdG8gZmFsc2UsCisgICAgLy8gZGlkVXBkYXRlTW9yZVJlc291
cmNlc0NvbXBsZXRlIHNob3VsZCBjb21taXQuCisgICAgY2xpZW50LnNldEhhc01vcmVSZXNvdXJj
ZVVwZGF0ZXMoZmFsc2UpOworICAgIHNjaGVkdWxlci0+ZGlkVXBkYXRlTW9yZVJlc291cmNlc0Nv
bXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVY
UEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgY2xpZW50LmFjdGlvbigwKSk7Cisg
ICAgY2xpZW50LnJlc2V0KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0Q29tbW9uLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdENvbW1vbi5oCmluZGV4IDBjMTA1NTg4YjE0MmY3NjE5
MzcyMmU2Mjg4ZTE5ODk2NTNhOTQ5ODQuLjE3ZTlhZGIxYjNlMWQ3OWRiMDQ3NTU1YjZmNzQwNTUx
MDVlNzM4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hl
ZHVsZXJUZXN0Q29tbW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Nj
aGVkdWxlclRlc3RDb21tb24uaApAQCAtODYsNiArODYsNyBAQCBjbGFzcyBGYWtlQ0NUaW1lU291
cmNlIDogcHVibGljIFdlYkNvcmU6OkNDVGltZVNvdXJjZSB7CiBwdWJsaWM6CiAgICAgRmFrZUND
VGltZVNvdXJjZSgpCiAgICAgICAgIDogbV9hY3RpdmUoZmFsc2UpCisgICAgICAgICwgbV9uZXh0
VGlja1RpbWUoMCkKICAgICAgICAgLCBtX2NsaWVudCgwKSB7IH0KIAogICAgIHZpcnR1YWwgfkZh
a2VDQ1RpbWVTb3VyY2UoKSB7IH0KQEAgLTkzLDYgKzk0LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRDbGllbnQoV2ViQ29yZTo6Q0NUaW1lU291cmNlQ2xpZW50KiBjbGllbnQpIHsg
bV9jbGllbnQgPSBjbGllbnQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wgYikg
eyBtX2FjdGl2ZSA9IGI7IH0KICAgICB2aXJ0dWFsIGJvb2wgYWN0aXZlKCkgY29uc3QgeyByZXR1
cm4gbV9hY3RpdmU7IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSBuZXh0VGlja1RpbWUoKSBjb25zdCB7
IHJldHVybiBtX25leHRUaWNrVGltZTsgfQogCiAgICAgdm9pZCB0aWNrKCkKICAgICB7CkBAIC0x
MDEsOCArMTAzLDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fY2xpZW50LT5vblRpbWVyVGlj
aygpOwogICAgIH0KIAorICAgIHZvaWQgc2V0TmV4dFRpY2tUaW1lKGRvdWJsZSBuZXh0VGlja1Rp
bWUpIHsgbV9uZXh0VGlja1RpbWUgPSBuZXh0VGlja1RpbWU7IH0KKwogcHJvdGVjdGVkOgogICAg
IGJvb2wgbV9hY3RpdmU7CisgICAgZG91YmxlIG1fbmV4dFRpY2tUaW1lOwogICAgIFdlYkNvcmU6
OkNDVGltZVNvdXJjZUNsaWVudCogbV9jbGllbnQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcAppbmRleCA2
MDNkNDIxNjAwMDZjYmNjMGMwZmQ2ODVkZTQ4ZTU5OWU2MzhhMTRjLi5jNDQ1YmE2ZjFlYTE1OTQ4
YWU0YzRjNWVhNTM0Njg1MzkwMGZiNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHAKQEAgLTEyNiw4ICsxMjYs
OCBAQCBGYWtlVGlsZWRMYXllcldpdGhTY2FsZWRCb3VuZHM6OkZha2VUaWxlZExheWVyV2l0aFNj
YWxlZEJvdW5kcyhUZXh0dXJlTWFuYWdlciogdAogewogfQogCi1GYWtlQ0NUZXh0dXJlVXBkYXRl
cjo6RmFrZUNDVGV4dHVyZVVwZGF0ZXIoKQotICAgIDogQ0NUZXh0dXJlVXBkYXRlcigmbV90ZXh0
dXJlQWxsb2NhdG9yLCAmbV90ZXh0dXJlQ29waWVyKQorRmFrZUNDVGV4dHVyZVVwZGF0ZXI6OkZh
a2VDQ1RleHR1cmVVcGRhdGVyKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQor
ICAgIDogQ0NUZXh0dXJlVXBkYXRlcihjb250ZXh0LCAmbV90ZXh0dXJlQWxsb2NhdG9yLCAmbV90
ZXh0dXJlQ29waWVyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCmluZGV4IGVmYjhhZTg1Y2FjNmVlZTFkNTdi
NWIwOGNmNGI5Y2M2MGM0YjFkNmMuLmQ3MzMzN2JmNjNiODg2MjQ5ZTU2N2E2ZGNmYThkZWVkZDg1
OTZhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExh
eWVyVGVzdENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxl
ZExheWVyVGVzdENvbW1vbi5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaWZuZGVmIENDVGlsZWRMYXll
clRlc3RDb21tb25faAogI2RlZmluZSBDQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uX2gKIAorI2luY2x1
ZGUgIkZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNELmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKQEAgLTE2
MCw3ICsxNjEsNyBAQCBwdWJsaWM6CiAKIGNsYXNzIEZha2VDQ1RleHR1cmVVcGRhdGVyIDogcHVi
bGljIFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgotICAgIGV4cGxpY2l0IEZh
a2VDQ1RleHR1cmVVcGRhdGVyKCk7CisgICAgZXhwbGljaXQgRmFrZUNDVGV4dHVyZVVwZGF0ZXIo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0QqKTsKIAogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9y
JiB0ZXh0dXJlQWxsb2NhdG9yKCkgeyByZXR1cm4gbV90ZXh0dXJlQWxsb2NhdG9yOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9t
aXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJD
aHJvbWl1bVRlc3QuY3BwCmluZGV4IGVhM2Q0MGZmZTA4MTA4YmZkMTlhZDcyNjU4NWVjNTQ4Yjkz
NDIzYzkuLjZjZmRhZTJjNjMzZWZkMWU2ZGM0ZDMzOWVmMzg3ZWE2NmVjNzI2OGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hy
b21pdW1UZXN0LmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHByb3RlY3RlZDoKIAogICAgICAgICBN
b2NrVGV4dHVyZUFsbG9jYXRvciBhbGxvY2F0b3JNb2NrOwogICAgICAgICBNb2NrVGV4dHVyZUNv
cGllciBjb3BpZXJNb2NrOwotICAgICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJmFsbG9j
YXRvck1vY2ssICZjb3BpZXJNb2NrKTsKKyAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVy
KGltcGxDb250ZXh0LmdldCgpLCAmYWxsb2NhdG9yTW9jaywgJmNvcGllck1vY2spOwogCiAgICAg
ICAgIGNvbnN0IEludFNpemUgc2l6ZSgzMDAsIDE1MCk7CiAKQEAgLTE1Niw3ICsxNTYsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgICAgICBPd25QdHI8Q0NMYXllckltcGw+IGxheWVySW1wbCA9IGNh
bnZhcy0+Y3JlYXRlQ0NMYXllckltcGwoKTsKICAgICAgICAgICAgIEVYUEVDVF9FUSgwdSwgc3Rh
dGljX2Nhc3Q8Q0NUZXh0dXJlTGF5ZXJJbXBsKj4obGF5ZXJJbXBsLmdldCgpKS0+dGV4dHVyZUlk
KCkpOwogCi0gICAgICAgICAgICBjYW52YXMtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoaW1w
bENvbnRleHQuZ2V0KCksIHVwZGF0ZXIpOworICAgICAgICAgICAgY2FudmFzLT51cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgICAgICAgICAgY2FudmFzLT5wdXNoUHJvcGVy
dGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAgICAgICAgIGlmICh0aHJlYWRlZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QuY3BwCmluZGV4IDE1MGQ2NWQ1OThmODMxYjRmM2FjODFkMGJkODdlMTdkNjg1NDQ2MmEu
LjVjYTNhNTAyNjkwN2RjNzA3YWFiMThiOGY2YTA0MzUzYjBjZGMzMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNw
cApAQCAtNzIsMTMgKzcyLDEzIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERp
cnR5VGlsZXMpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAg
T3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VD
Q1RpbGVkTGF5ZXJJbXBsKDApKSk7CiAKLSAgICBGYWtlQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVy
OworICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoMCk7CiAKICAgICAvLyBUaGUgdGls
ZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3
byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBs
YXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwotICAgIGxheWVy
LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGll
c1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgaGF2ZSBib3RoIHRpbGVz
IG9uIHRoZSBpbXBsIHNpZGUuCkBAIC05MSw3ICs5MSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJl
Y3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICAvLyAuLi4uYnV0IHRoZW4gb25seSB1cGRhdGUgb25l
IG9mIHRoZW0uCiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwg
MTAwKSwgMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRl
cik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7CiAgICAg
bGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNo
b3VsZCBvbmx5IGhhdmUgdGhlIGZpcnN0IHRpbGUgc2luY2UgdGhlIG90aGVyIHRpbGUgd2FzIGlu
dmFsaWRhdGVkIGJ1dCBub3QgcGFpbnRlZC4KQEAgLTEwNyw3ICsxMDcsNyBAQCBURVNUKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hPY2NsdWRlZERpcnR5VGlsZXMpCiAgICAgT3duUHRyPEZh
a2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5
ZXJJbXBsKDApKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKIAotICAg
IEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAgRmFrZUNDVGV4dHVyZVVwZGF0ZXIg
dXBkYXRlcigwKTsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBp
bnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5zZXRCb3Vu
ZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwpAQCAtMTE1LDcgKzExNSw3IEBAIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgcHVzaE9jY2x1ZGVkRGlydHlUaWxlcykKICAgICBsYXllci0+c2V0Vmlz
aWJsZUxheWVyUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFs
aWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAmb2NjbHVkZWQpOwotICAgIGxheWVyLT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1Rv
KGxheWVySW1wbC5nZXQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01l
dHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCAwLCAxKTsKQEAgLTEzMyw3ICsxMzMsNyBAQCBU
RVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hPY2NsdWRlZERpcnR5VGlsZXMpCiAgICAg
Ly8gLi4uLmJ1dCB0aGUgYXJlYSBpcyBvY2NsdWRlZC4KICAgICBvY2NsdWRlZC5zZXRPY2NsdXNp
b24oSW50UmVjdCgwLCAwLCA1MCwgNTApKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKElu
dFJlY3QoMCwgMCwgMTAwLCAxMDApLCAmb2NjbHVkZWQpOwotICAgIGxheWVyLT51cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1w
bC5nZXQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5w
aXhlbHNEcmF3bk9wYXF1ZSgpLCAwLCAxKTsKQEAgLTE1MiwxMyArMTUyLDEzIEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERlbGV0ZWRUaWxlcykKICAgICBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+
IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpKTsKIAotICAg
IEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAgRmFrZUNDVGV4dHVyZVVwZGF0ZXIg
dXBkYXRlcigwKTsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBp
bnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5zZXRCb3Vu
ZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0
KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAs
IDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
MCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRl
cik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAg
IC8vIFdlIHNob3VsZCBoYXZlIGJvdGggdGlsZXMgb24gdGhlIGltcGwgc2lkZS4KQEAgLTE3OCw3
ICsxNzgsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEZWxldGVkVGlsZXMp
CiAKICAgICAvLyBUaGlzIHNob3VsZCByZWNyZWF0ZSBhbmQgdXBkYXRlIHRoZSBkZWxldGVkIHRl
eHR1cmVzLgogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDEw
MCksIDApOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIp
OworICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgIGxh
eWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91
bGQgb25seSBoYXZlIHRoZSBmaXJzdCB0aWxlIHNpbmNlIHRoZSBvdGhlciB0aWxlIHdhcyBpbnZh
bGlkYXRlZCBidXQgbm90IHBhaW50ZWQuCkBAIC0xOTMsNyArMTkzLDcgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAgICAgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBs
YXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKSk7CiAKLSAgICBG
YWtlQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOworICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVw
ZGF0ZXIoMCk7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuIFNldHVwIDV4NSB0
aWxlcyB3aXRoIG9uZSB2aXNpYmxlIHRpbGUgaW4gdGhlIGNlbnRlci4KICAgICBJbnRTaXplIGNv
bnRlbnRCb3VuZHMoNTAwLCA1MDApOwpAQCAtMjA5LDcgKzIwOSw3IEBAIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQogICAgIC8vIFdlIHNob3VsZCBuZWVk
IGlkbGUtcGFpbnRpbmcgZm9yIDN4MyB0aWxlcyBpbiB0aGUgY2VudGVyLgogICAgIEVYUEVDVF9U
UlVFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5ZXItPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8o
bGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIG9uZSB0aWxlIG9uIHRo
ZSBpbXBsIHNpZGUuCkBAIC0yMjIsNyArMjIyLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAgICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUo
dmlzaWJsZVJlY3QsIDApOwogICAgICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFp
bnQodmlzaWJsZVJlY3QpKTsKICAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlz
aWJsZVJlY3QsIDApOwotICAgICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygw
LCB1cGRhdGVyKTsKKyAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBk
YXRlcik7CiAgICAgICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7
CiAgICAgICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwogICAgIH0K
QEAgLTI1MSw3ICsyNTEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxl
c0FmdGVySWRsZVBhaW50RmFpbGVkKQogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVt
PiBsYXllcjIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFu
YWdlci5nZXQoKSkpOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBs
MihhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpKTsKIAotICAgIEZha2VDQ1Rl
eHR1cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAgRmFrZUNDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigw
KTsKIAogICAgIC8vIEZvciB0aGlzIHRlc3Qgd2UgaGF2ZSB0d28gbGF5ZXJzLiBsYXllcjEgZXho
YXVzdHMgbW9zdCB0ZXh0dXJlIG1lbW9yeSwgbGVhdmluZyByb29tIGZvciAyIG1vcmUgdGlsZXMg
ZnJvbQogICAgIC8vIGxheWVyMiwgYnV0IG5vdCBhbGwgdGhyZWUgdGlsZXMuIEZpcnN0IHdlIHBh
aW50IGxheWVyMSwgYW5kIG9uZSB0aWxlIGZyb20gbGF5ZXIyLiBUaGVuIHdoZW4gd2UgaWRsZSBw
YWludApAQCAtMjc3LDkgKzI3Nyw5IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVz
aFRpbGVzQWZ0ZXJJZGxlUGFpbnRGYWlsZWQpCiAgICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5uZWVk
c0lkbGVQYWludChsYXllcjJSZWN0KSk7CiAKICAgICAvLyBDb21taXQgdGhlIGZyYW1lIG92ZXIg
dG8gaW1wbC4KLSAgICBsYXllcjEtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRl
cik7Ci0gICAgbGF5ZXIyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwot
ICAgIHVwZGF0ZXIudXBkYXRlKDAsIDUwMDApOworICAgIGxheWVyMS0+dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyh1cGRhdGVyKTsKKyAgICBsYXllcjItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXModXBkYXRlcik7CisgICAgdXBkYXRlci51cGRhdGUoNTAwMCk7CiAgICAgbGF5ZXIxLT5wdXNo
UHJvcGVydGllc1RvKGxheWVySW1wbDEuZ2V0KCkpOwogICAgIGxheWVyMi0+cHVzaFByb3BlcnRp
ZXNUbyhsYXllckltcGwyLmdldCgpKTsKIApAQCAtMjg4LDkgKzI4OCw5IEBAIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzQWZ0ZXJJZGxlUGFpbnRGYWlsZWQpCiAgICAgbGF5
ZXIyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKGxheWVyMlJlY3QsIDApOwogCiAgICAgLy8gT2ggd2Vs
bCwgY29tbWl0IHRoZSBmcmFtZSBhbmQgcHVzaC4KLSAgICBsYXllcjEtPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7Ci0gICAgbGF5ZXIyLT51cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKDAsIHVwZGF0ZXIpOwotICAgIHVwZGF0ZXIudXBkYXRlKDAsIDUwMDApOworICAgIGxh
eWVyMS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKKyAgICBsYXllcjItPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7CisgICAgdXBkYXRlci51cGRhdGUoNTAw
MCk7CiAgICAgbGF5ZXIxLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbDEuZ2V0KCkpOwogICAg
IGxheWVyMi0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwyLmdldCgpKTsKIApAQCAtMzA5LDkg
KzMwOSw5IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzQWZ0ZXJJZGxl
UGFpbnRGYWlsZWQpCiAgICAgbGF5ZXIyLT5wcmVwYXJlVG9VcGRhdGUobGF5ZXIyUmVjdCwgMCk7
CiAgICAgbGF5ZXIxLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgpLCAwKTsKIAotICAgIGxheWVy
MS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKLSAgICBsYXllcjItPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7Ci0gICAgdXBkYXRlci51cGRhdGUo
MCwgNTAwMCk7CisgICAgbGF5ZXIxLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIp
OworICAgIGxheWVyMi0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKKyAgICB1
cGRhdGVyLnVwZGF0ZSg1MDAwKTsKICAgICBsYXllcjEtPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJ
bXBsMS5nZXQoKSk7CiAgICAgbGF5ZXIyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbDIuZ2V0
KCkpOwogCkBAIC0zMzEsNyArMzMxLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBw
dXNoSWRsZVBhaW50ZWRPY2NsdWRlZFRpbGVzKQogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVy
SW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSkpOwog
ICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVkZWQ7CiAKLSAgICBGYWtlQ0NUZXh0dXJl
VXBkYXRlciB1cGRhdGVyOworICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoMCk7CiAK
ICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgb25l
IG9jY2x1ZGVkIHRpbGUsIGN1bGxzIGl0IGR1cmluZyBwYWludCwgYnV0IHByZXBhaW50cyBpdC4K
ICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwpAQCAt
MzQyLDcgKzM0Miw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWlu
dGVkT2NjbHVkZWRUaWxlcykKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAw
LCAxMDAsIDEwMCkpOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCksICZvY2NsdWRlZCk7CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUoSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCksICZvY2NsdWRlZCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXModXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBs
LmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIHRoZSBwcmVwYWludGVkIHRpbGUgb24g
dGhlIGltcGwgc2lkZS4KQEAgLTM1Niw3ICszNTYsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHB1c2hUaWxlc01hcmtlZERpcnR5RHVyaW5nUGFpbnQpCiAgICAgRGVidWdTY29wZWRT
ZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBs
PiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKSk7CiAKLSAg
ICBGYWtlQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOworICAgIEZha2VDQ1RleHR1cmVVcGRhdGVy
IHVwZGF0ZXIoMCk7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMg
aW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICAvLyBIb3dldmVyLCBk
dXJpbmcgdGhlIHBhaW50LCB3ZSBpbnZhbGlkYXRlIG9uZSBvZiB0aGUgdGlsZXMuIFRoaXMgc2hv
dWxkCkBAIC0zNjUsNyArMzY1LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNo
VGlsZXNNYXJrZWREaXJ0eUR1cmluZ1BhaW50KQogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVjdCgwLCA1MCwgMTAwLCA1MCksIGxheWVy
LmdldCgpKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAy
MDApLCAwKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVy
KTsKKyAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKICAgICBs
YXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hv
dWxkIGhhdmUgYm90aCB0aWxlcyBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtMzgyLDcgKzM4Miw3IEBA
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTGF5ZXJNYXJrZWREaXJ0eUR1
cmluZ1BhaW50T25OZXh0TGF5ZXIpCiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBs
YXllcjFJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSkpOwogICAgIE93
blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXIySW1wbChhZG9wdFB0cihuZXcgRmFrZUND
VGlsZWRMYXllckltcGwoMCkpKTsKIAotICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7
CisgICAgRmFrZUNDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigwKTsKIAogICAgIGxheWVyMS0+c2V0
Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllcjEtPmludmFsaWRhdGVSZWN0KElu
dFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKQEAgLTM5NSw4ICszOTUsOCBAQCBURVNUKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0xheWVyTWFya2VkRGlydHlEdXJpbmdQYWludE9uTmV4
dExheWVyKQogICAgIGxheWVyMi0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRv
SW52YWxpZGF0ZShJbnRSZWN0KDAsIDUwLCAxMDAsIDUwKSwgbGF5ZXIxLmdldCgpKTsKICAgICBs
YXllcjItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAKLSAg
ICBsYXllcjEtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7Ci0gICAgbGF5
ZXIyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyMS0+
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKKyAgICBsYXllcjItPnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7CiAKICAgICBsYXllcjEtPnB1c2hQcm9wZXJ0aWVz
VG8obGF5ZXIxSW1wbC5nZXQoKSk7CiAgICAgbGF5ZXIyLT5wdXNoUHJvcGVydGllc1RvKGxheWVy
MkltcGwuZ2V0KCkpOwpAQCAtNDE3LDcgKzQxNyw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgcHVzaFRpbGVzTGF5ZXJNYXJrZWREaXJ0eUR1cmluZ1BhaW50T25QcmV2aW91c0xheWVy
CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllcjFJbXBsKGFkb3B0UHRyKG5l
dyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSkpOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVy
SW1wbD4gbGF5ZXIySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpKTsK
IAotICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAgRmFrZUNDVGV4dHVyZVVw
ZGF0ZXIgdXBkYXRlcigwKTsKIAogICAgIGxheWVyMS0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAy
MDApKTsKICAgICBsYXllcjEtPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDAp
KTsKQEAgLTQzMCw4ICs0MzAsOCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hU
aWxlc0xheWVyTWFya2VkRGlydHlEdXJpbmdQYWludE9uUHJldmlvdXNMYXllcgogCiAgICAgbGF5
ZXIyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogCi0gICAg
bGF5ZXIxLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwotICAgIGxheWVy
Mi0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllcjEtPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7CisgICAgbGF5ZXIyLT51cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogCiAgICAgbGF5ZXIxLT5wdXNoUHJvcGVydGllc1Rv
KGxheWVyMUltcGwuZ2V0KCkpOwogICAgIGxheWVyMi0+cHVzaFByb3BlcnRpZXNUbyhsYXllcjJJ
bXBsLmdldCgpKTsKQEAgLTQ1OCw3ICs0NTgsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBp
bXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFk
b3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSkpOwogCi0gICAgRmFrZUNDVGV4dHVy
ZVVwZGF0ZXIgdXBkYXRlcjsKKyAgICBGYWtlQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKDApOwog
CiAgICAgLy8gVGhpcyBpbnZhbGlkYXRlcyA5IHRpbGVzIGFuZCB0aGVuIHBhaW50cyBvbmUgdmlz
aWJsZSB0aWxlLgogICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5kcyk7CkBAIC00Njks
NyArNDY5LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1l
bW9yeSkKICAgICAvLyBXZSBzaG91bGQgbmVlZCBpZGxlLXBhaW50aW5nIGZvciAzeDMgdGlsZXMg
c3Vyb3VuZGluZyB2aXNpYmxlIHRpbGUuCiAgICAgRVhQRUNUX1RSVUUobGF5ZXItPm5lZWRzSWRs
ZVBhaW50KHZpc2libGVSZWN0KSk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1
cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwog
CiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgb25lIHRpbGUgb24gdGhlIGltcGwgc2lkZS4KQEAgLTQ4
Miw3ICs0ODIsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9m
TWVtb3J5KQogICAgIC8vIFdlIHNob3VsZG4ndCBzaWduYWwgd2UgbmVlZCBhbm90aGVyIGlkbGUg
cGFpbnQgYWZ0ZXIgd2UgcnVuIG91dCBvZiBtZW1vcnkuCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVy
LT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXModXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBs
LmdldCgpKTsKIH0KIApAQCAtNDkzLDcgKzQ5Myw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgaWRsZVBhaW50WmVyb1NpemVkTGF5ZXIpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhy
ZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllcklt
cGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKSk7CiAKLSAgICBGYWtlQ0NU
ZXh0dXJlVXBkYXRlciB1cGRhdGVyOworICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIo
MCk7CiAKICAgICAvLyBUaGUgbGF5ZXIncyBib3VuZHMgYXJlIGVtcHR5LgogICAgIEludFJlY3Qg
Y29udGVudFJlY3Q7CkBAIC01MDksNyArNTA5LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBpZGxlUGFpbnRaZXJvU2l6ZWRMYXllcikKICAgICAvLyBFbXB0eSBsYXllcnMgZG9uJ3Qg
bmVlZCBwcmVwYWludC4KICAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPm5lZWRzSWRsZVBhaW50KGNv
bnRlbnRSZWN0KSk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1
cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsK
ICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8g
RW1wdHkgbGF5ZXJzIGRvbid0IGhhdmUgdGlsZXMuCkBAIC01MjEsNyArNTIxLDcgQEAgVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRaZXJvU2l6ZWRMYXllcikKICAgICAvLyBF
bXB0eSBsYXllcnMgZG9uJ3QgaGF2ZSB0aWxlcy4KICAgICBFWFBFQ1RfRVEoMHUsIGxheWVyLT5u
dW1QYWludGVkVGlsZXMoKSk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRh
dGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAg
ICAgLy8gRW1wdHkgbGF5ZXJzIGRvbid0IGhhdmUgdGlsZXMuCkBAIC01MzUsNyArNTM1LDcgQEAg
VEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRaZXJvU2l6ZWRBbmltYXRpbmdM
YXllcikKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25Q
dHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGls
ZWRMYXllckltcGwoMCkpKTsKIAotICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7Cisg
ICAgRmFrZUNDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigwKTsKIAogICAgIC8vIFByZXRlbmQgdGhl
IGxheWVyIGlzIGFuaW1hdGluZy4KICAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybUlzQW5pbWF0
aW5nKHRydWUpOwpAQCAtNTU0LDcgKzU1NCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgaWRsZVBhaW50WmVyb1NpemVkQW5pbWF0aW5nTGF5ZXIpCiAgICAgLy8gRW1wdHkgbGF5ZXJz
IGRvbid0IG5lZWQgcHJlcGFpbnQuCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQ
YWludChjb250ZW50UmVjdCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBk
YXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAog
ICAgIC8vIEVtcHR5IGxheWVycyBkb24ndCBoYXZlIHRpbGVzLgpAQCAtNTY2LDcgKzU2Niw3IEBA
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50WmVyb1NpemVkQW5pbWF0aW5n
TGF5ZXIpCiAgICAgLy8gRW1wdHkgbGF5ZXJzIGRvbid0IGhhdmUgdGlsZXMuCiAgICAgRVhQRUNU
X0VRKDB1LCBsYXllci0+bnVtUGFpbnRlZFRpbGVzKCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXModXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJ
bXBsLmdldCgpKTsKIAogICAgIC8vIEVtcHR5IGxheWVycyBkb24ndCBoYXZlIHRpbGVzLgpAQCAt
NTgzLDcgKzU4Myw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50Tm9u
VmlzaWJsZUxheWVycykKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsK
ICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcg
RmFrZUNDVGlsZWRMYXllckltcGwoMCkpKTsKIAotICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVw
ZGF0ZXI7CisgICAgRmFrZUNDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigwKTsKIAogICAgIC8vIElu
dmFsaWRhdGUgdGhlIGxheWVyIGJ1dCBtYWtlIG5vbmUgb2YgaXQgdmlzaWJsZSwgc28gbm90aGlu
ZyBwYWludHMuCiAgICAgSW50UmVjdCB2aXNpYmxlUmVjdDsKQEAgLTU5Niw3ICs1OTYsNyBAQCBU
RVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVMYXllcnMpCiAg
ICAgLy8gTm9uLXZpc2libGUgbGF5ZXJzIGRvbid0IG5lZWQgaWRsZSBwYWludC4KICAgICBFWFBF
Q1RfRkFMU0UobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CiAKLSAgICBsYXll
ci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRp
ZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIG5vdCBoYXZlIGFueSB0
aWxlcyBwdXNoZWQgc2luY2UgdGhlIGxheWVyIGlzIG5vdCB2aXNpYmxlLgpAQCAtNjA1LDcgKzYw
NSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50Tm9uVmlzaWJsZUxh
eWVycykKICAgICAvLyBOb24tdmlzaWJsZSBsYXllcnMgZG9uJ3QgaWRsZSBwYWludC4KICAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVjdCwgMCk7CiAKLSAgICBsYXllci0+
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNU
byhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIG5vdCBoYXZlIGFueSB0aWxl
cyBwdXNoZWQgc2luY2UgdGhlIGxheWVyIGlzIG5vdCB2aXNpYmxlLgpAQCAtNjE3LDcgKzYxNyw3
IEBAIHN0YXRpYyB2b2lkIGlkbGVQYWludFJlcGVhdChpbnQgcmVwZWF0VGltZXMsIEZha2VUaWxl
ZExheWVyQ2hyb21pdW0qIGxheWVyLCBGYWtlCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXBl
YXRUaW1lczsgKytpKSB7CiAgICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJl
Y3QsIDApOwogICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVjdCwg
MCk7Ci0gICAgICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIp
OworICAgICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKICAg
ICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsKTsKICAgICB9CiB9CkBAIC02
MzcsNyArNjM3LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnROb25W
aXNpYmxlQW5pbWF0aW5nTGF5ZXJzKQogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVy
ZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDgwMDAqODAwMCo4LCA4MDAwKjgwMDAq
NCwgMTAyNCk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAKLSAg
ICBGYWtlQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOworICAgIEZha2VDQ1RleHR1cmVVcGRhdGVy
IHVwZGF0ZXIoMCk7CiAKICAgICBpbnQgdGlsZVdpZHRoID0gRmFrZVRpbGVkTGF5ZXJDaHJvbWl1
bTo6dGlsZVNpemUoKS53aWR0aCgpOwogICAgIGludCB0aWxlSGVpZ2h0ID0gRmFrZVRpbGVkTGF5
ZXJDaHJvbWl1bTo6dGlsZVNpemUoKS5oZWlnaHQoKTsKQEAgLTY2Niw3ICs2NjYsNyBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVBbmltYXRpbmdMYXll
cnMpCiAKICAgICAgICAgICAgIC8vIFRoaXMgcGFpbnRzIHRoZSBsYXllciBidXQgdGhlcmUncyBu
b3RoaW5nIHZpc2libGUgc28gaXQncyBhIG5vLW9wLgogICAgICAgICAgICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgMCk7Ci0gICAgICAgICAgICBsYXllci0+dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICAgICAgICAgIGxheWVyLT51cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgICAgICAgICAgbGF5ZXItPnB1c2hQcm9w
ZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG5v
dCBoYXZlIGFueSB0aWxlcyBwdXNoZWQgeWV0IHNpbmNlIHRoZSBsYXllciBpcyBub3QgdmlzaWJs
ZSBhbmQgd2UndmUgbm90IHByZXBhaW50ZWQuCkBAIC02OTQsMTMgKzY5NCwxMyBAQCBURVNUKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXll
ckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpKTsK
IAotICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAgRmFrZUNDVGV4dHVyZVVw
ZGF0ZXIgdXBkYXRlcigwKTsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28g
dGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5z
ZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRS
ZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
dXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsK
IAogICAgIC8vIFdlIHNob3VsZCBoYXZlIGJvdGggdGlsZXMgb24gdGhlIGltcGwgc2lkZS4KQEAg
LTczNSw3ICs3MzUsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeVVwZGF0
ZVJlY3RXaGVuQ29udGVudEJvdW5kc0FyZVNjYWxlZCkKICAgICBPd25QdHI8VGV4dHVyZU1hbmFn
ZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwg
MioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllcldpdGhTY2FsZWRC
b3VuZHM+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyV2l0aFNjYWxlZEJvdW5k
cyh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogCi0gICAgRmFrZUNDVGV4dHVyZVVwZGF0ZXIgdXBk
YXRlcjsKKyAgICBGYWtlQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKDApOwogCiAgICAgSW50UmVj
dCBsYXllckJvdW5kcygwLCAwLCAzMDAsIDIwMCk7CiAgICAgSW50UmVjdCBjb250ZW50Qm91bmRz
KDAsIDAsIDIwMCwgMjUwKTsKQEAgLTc0OCwyMCArNzQ4LDIwIEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVjdFdoZW5Db250ZW50Qm91bmRzQXJlU2NhbGVkKQog
ICAgIC8vIEhvd2V2ZXIsIGl0IHNob3VsZCBzdGlsbCBiZSBpbiBsYXllciBzcGFjZSwgbm90IGNv
bnRlbnQgc3BhY2UuCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwog
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgMCk7Ci0gICAgbGF5ZXIt
PnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEo
RmxvYXRSZWN0KDAsIDAsIDMwMCwgMzAwICogMC44KSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiAK
ICAgICAvLyBBZnRlciB0aGUgdGlsZXMgYXJlIHVwZGF0ZWQgb25jZSwgYW5vdGhlciBpbnZhbGlk
YXRlIG9ubHkgbmVlZHMgdG8gdXBkYXRlIHRoZSBib3VuZHMgb2YgdGhlIGxheWVyLgogICAgIGxh
eWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50Qm91bmRzKTsKICAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKGNvbnRlbnRCb3VuZHMsIDApOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KHVwZGF0ZXIpOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdChsYXllckJvdW5k
cyksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogCiAgICAgLy8gUGFydGlhbCByZS1wYWludCBzaG91
bGQgYWxzbyBiZSByZXByZXNlbnRlZCBieSB0aGUgdXBkYXRlUmVjdCBpbiBsYXllciBzcGFjZSwg
bm90IGNvbnRlbnQgc3BhY2UuCiAgICAgSW50UmVjdCBwYXJ0aWFsRGFtYWdlKDMwLCAxMDAsIDEw
LCAxMCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KHBhcnRpYWxEYW1hZ2UpOwogICAgIGxh
eWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgMCk7Ci0gICAgbGF5ZXItPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXModXBkYXRlcik7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRS
ZWN0KDQ1LCA4MCwgMTUsIDgpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsKIH0KIApAQCAtNzcyLDcg
Kzc3Miw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9u
V2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2VzKQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBp
bXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFk
b3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSkpOwogCi0gICAgRmFrZUNDVGV4dHVy
ZVVwZGF0ZXIgdXBkYXRlcjsKKyAgICBGYWtlQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKDApOwog
CiAgICAgLy8gQ3JlYXRlIGEgbGF5ZXIgd2l0aCBvbmUgdGlsZS4KICAgICBsYXllci0+c2V0Qm91
bmRzKEludFNpemUoMTAwLCAxMDApKTsKQEAgLTc4Myw3ICs3ODMsNyBAQCBURVNUKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hhbmdl
cykKIAogICAgIC8vIFB1c2ggdGhlIHRpbGVzIHRvIHRoZSBpbXBsIHNpZGUgYW5kIGNoZWNrIHRo
YXQgdGhlcmUgaXMgZXhhY3RseSBvbmUuCiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRS
ZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
dXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsK
ICAgICBFWFBFQ1RfVFJVRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAwKSk7CiAgICAgRVhQRUNU
X0ZBTFNFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDEpKTsKQEAgLTc5Nyw3ICs3OTcsNyBAQCBU
RVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50
c1NjYWxlQ2hhbmdlcykKIAogICAgIC8vIFRoZSBpbXBsIHNpZGUgc2hvdWxkIGdldCAyeDIgdGls
ZXMgbm93LgogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAyMDAsIDIw
MCksIDApOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIp
OworICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgIGxh
eWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgRVhQRUNUX1RSVUUo
bGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOwogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+
aGFzVGlsZUF0KDAsIDEpKTsKQEAgLTgwOCw3ICs4MDgsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hhbmdlcykKICAg
ICAvLyBpbXBsIHNpZGUuCiAgICAgbGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwogICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgxLCAwLCAwLCAxKSwgMCk7Ci0gICAgbGF5ZXItPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8o
bGF5ZXJJbXBsLmdldCgpKTsKICAgICBFWFBFQ1RfRkFMU0UobGF5ZXJJbXBsLT5oYXNUaWxlQXQo
MCwgMCkpOwogICAgIEVYUEVDVF9GQUxTRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAxKSk7CkBA
IC04NDIsMTMgKzg0MiwxMyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHNraXBzRHJh
d0dldHNSZXNldCkKICAgICByb290TGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRSZWN0KTsK
ICAgICBjaGlsZExheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50UmVjdCk7CiAKLSAgICBGYWtl
Q0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOworICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0
ZXIoY2NMYXllclRyZWVIb3N0LT5jb250ZXh0KCkpOwogCiAgICAgY2NMYXllclRyZWVIb3N0LT5z
ZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0
U2l6ZShJbnRTaXplKDMwMCwgMzAwKSk7CiAgICAgdGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9y
eUxpbWl0Qnl0ZXMobWVtb3J5TGltaXQpOwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5
ZXJzKCk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNj
TGF5ZXJUcmVlSG9zdC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKKyAgICBjY0xheWVyVHJlZUhvc3Qt
PnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7CiAKICAgICAvLyBXZSdsbCBza2lw
IHRoZSByb290IGxheWVyLgogICAgIEVYUEVDVF9UUlVFKHJvb3RMYXllci0+c2tpcHNEcmF3KCkp
OwpAQCAtOTEzLDE5ICs5MTMsMTkgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwYXJ0
aWFsVXBkYXRlcykKICAgICBsYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgxNTAsIDE1MCkp
OwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50UmVjdCk7CiAKLSAgICBGYWtlQ0NU
ZXh0dXJlVXBkYXRlciB1cGRhdGVyOworICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIo
Y2NMYXllclRyZWVIb3N0LT5jb250ZXh0KCkpOwogCiAgICAgY2NMYXllclRyZWVIb3N0LT5zZXRS
b290TGF5ZXIobGF5ZXIpOwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKElu
dFNpemUoMzAwLCAyMDApKTsKIAogICAgIC8vIEZ1bGwgdXBkYXRlIG9mIGFsbCA2IHRpbGVzLgog
ICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7Ci0gICAgY2NMYXllclRyZWVIb3N0
LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNjTGF5ZXJUcmVlSG9zdC0+Y29udGV4dCgpLCB1
cGRhdGVyKTsKLSAgICB1cGRhdGVyLnVwZGF0ZSgwLCA0KTsKKyAgICBjY0xheWVyVHJlZUhvc3Qt
PnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7CisgICAgdXBkYXRlci51cGRhdGUo
NCk7CiAgICAgRVhQRUNUX0VRKDQsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51
cGRhdGVDb3VudCgpKTsKICAgICBFWFBFQ1RfVFJVRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkp
OwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50
KCk7Ci0gICAgdXBkYXRlci51cGRhdGUoMCwgNCk7CisgICAgdXBkYXRlci51cGRhdGUoNCk7CiAg
ICAgRVhQRUNUX0VRKDIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVD
b3VudCgpKTsKICAgICBFWFBFQ1RfRkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKICAg
ICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwpA
QCAtOTM0LDEyICs5MzQsMTIgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFs
VXBkYXRlcykKICAgICAvLyBGdWxsIHVwZGF0ZSBvZiAzIHRpbGVzIGFuZCBwYXJ0aWFsIHVwZGF0
ZSBvZiAzIHRpbGVzLgogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDMw
MCwgMTUwKSk7CiAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKLSAgICBjY0xh
eWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY2NMYXllclRyZWVIb3N0LT5j
b250ZXh0KCksIHVwZGF0ZXIpOwotICAgIHVwZGF0ZXIudXBkYXRlKDAsIDQpOworICAgIGNjTGF5
ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKKyAgICB1cGRh
dGVyLnVwZGF0ZSg0KTsKICAgICBFWFBFQ1RfRVEoMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAgIEVYUEVDVF9UUlVFKHVwZGF0ZXIuaGFzTW9y
ZVVwZGF0ZXMoKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFy
VXBkYXRlQ291bnQoKTsKLSAgICB1cGRhdGVyLnVwZGF0ZSgwLCA0KTsKKyAgICB1cGRhdGVyLnVw
ZGF0ZSg0KTsKICAgICBFWFBFQ1RfRVEoMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnVwZGF0ZUNvdW50KCkpOwogICAgIEVYUEVDVF9GQUxTRSh1cGRhdGVyLmhhc01vcmVVcGRh
dGVzKCkpOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0
ZUNvdW50KCk7CkBAIC05NDgsMTIgKzk0OCwxMiBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHBhcnRpYWxVcGRhdGVzKQogICAgIC8vIFBhcnRpYWwgdXBkYXRlIG9mIDYgdGlsZXMuCiAg
ICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoNTAsIDUwLCAyMDAsIDEwMCkpOwogICAg
IGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNjTGF5ZXJUcmVlSG9zdC0+Y29udGV4dCgpLCB1cGRh
dGVyKTsKLSAgICB1cGRhdGVyLnVwZGF0ZSgwLCA0KTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7CisgICAgdXBkYXRlci51cGRhdGUoNCk7
CiAgICAgRVhQRUNUX0VRKDIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRh
dGVDb3VudCgpKTsKICAgICBFWFBFQ1RfVFJVRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwog
ICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7
Ci0gICAgdXBkYXRlci51cGRhdGUoMCwgNCk7CisgICAgdXBkYXRlci51cGRhdGUoNCk7CiAgICAg
RVhQRUNUX0VRKDQsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3Vu
dCgpKTsKICAgICBFWFBFQ1RfRkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKICAgICBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135512</attachid>
            <date>2012-04-03 22:01:37 -0700</date>
            <delta_ts>2012-04-18 14:14:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81004-20120403220136.patch</filename>
            <type>text/plain</type>
            <size>86589</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTRkOWFmZmI2Y2UxNTQ3
ODQ2ZDZkZmYyMmYzYjFkYTliYjM2YzAzMy4uZTg0NjhlMmI2MjIxMDJlMDE2ZDQ4ZWIzNDE1N2Ji
ZjVjNzJmNjhiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMi0wNC0wMyAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
VXNlIEdMX0NIUk9NSVVNX2NvbW1hbmRfYnVmZmVyX3F1ZXJ5IHRvIHRocm90dGxlIGluY3JlbWVu
dGFsIHRleHR1cmUgdXBkYXRlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgxMDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSGF2ZSB0aHJlYWRlZCBjb21wb3NpdG9yIHVzZSBHTF9DSFJPTUlVTV9jb21t
YW5kX2J1ZmZlcl9xdWVyeSB0bworICAgICAgICB0aHJvdHRsZSB0ZXh0dXJlIHVwZGF0ZXMgYmFz
ZWQgb24gbnVtYmVyIG9mIGN1cnJlbnRseSBwZW5kaW5nCisgICAgICAgIHF1ZXJpZXMgYW5kIHRp
bWUgdW50aWwgbmV4dCB2c3luYy4KKworICAgICAgICBVbml0IHRlc3Q6IENDU2NoZWR1bGVyVGVz
dC5VcGRhdGVNb3JlUmVzb3VyY2VzCisgICAgICAgICAgICAgICAgICAgQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmVUZXN0LlRlc3RDYW5VcGRhdGVNb3JlUmVzb3VyY2VzCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVy
Q2hyb21pdW0uaDoKKyAgICAgICAgKENhbnZhczJETGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXll
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vV2ViR0xMYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJHTExheWVyQ2hyb21pdW0p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRp
bWVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWxheUJhc2VkVGltZVNvdXJjZTo6
bmV4dFRpY2tUaW1lKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaDoKKyAgICAgICAgKEND
RGVsYXlCYXNlZFRpbWVTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0Zy
YW1lUmF0ZUNvbnRyb2xsZXI6Om5leHRUaWNrVGltZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKENDRnJhbWVSYXRlQ29udHJvbGxlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6Cisg
ICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVy
OjpkaWRVcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
Y2hlZHVsZXI6OnZzeW5jVGljayk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6bmV4
dEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxl
ZEFjdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyLmg6CisgICAgICAgIChDQ1NjaGVkdWxlckNsaWVudCk6CisgICAgICAgIChDQ1NjaGVk
dWxlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpzaG91bGRVcGRhdGVNb3JlUmVzb3VyY2VzKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5l
eHRBY3Rpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lLmg6CisgICAgICAgIChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0Q2FuVXBkYXRl
TW9yZVJlc291cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVh
ZFByb3h5Ojpkb0NvbW1pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChzdGQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUZXh0dXJlVXBkYXRlcjo6UXVlcnk6OlF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6UXVlcnk6On5RdWVyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjpRdWVyeTo6c2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OlF1ZXJ5Ojppc1BlbmRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6Q0NUZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGVBbGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NU
ZXh0dXJlVXBkYXRlcjo6dXBkYXRlQXRNb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVy
ZVVwZGF0ZXI6OnByb2Nlc3NRdWVyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVw
ZGF0ZXI6OmlzUXVlcnlBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBk
YXRlcjo6c2V0UXVlcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUXVlcnkp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6UXVlcnk6OmNyZWF0ZSk6Cisg
ICAgICAgIChDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVw
ZGF0ZXI6OmNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKENDVGhyZWFkUHJv
eHlUZXh0dXJlVXBkYXRlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eVRl
eHR1cmVVcGRhdGVUaW1lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJv
eHlUZXh0dXJlVXBkYXRlVGltZXI6Om9uVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRpbWVyOjpDQ1RocmVhZFByb3h5VGV4dHVyZVVwZGF0
ZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQ
cm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGhyZWFkUHJveHk6Omhhc01vcmVSZXNvdXJjZVVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUaHJlYWRQcm94eTo6bWF4UmVzb3VyY2VVcGRhdGVUaW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmxheWVyVHJlZUhvc3RDbG9zZWRPbklt
cGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6bWF4UGFydGlhbFRl
eHR1cmVVcGRhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnRleHR1cmVV
cGRhdGVDb21wbGV0ZU9uSW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChDQ1RocmVhZFByb3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbWVTb3VyY2UuaDoKKyAgICAgICAgKENDVGltZVNvdXJjZSk6CisKIDIwMTItMDQtMDMg
IFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF1bV0sy
XSBBc3NlcnQgb24gc3RhcnR1cCBhZnRlciByMTEzMDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IGMwMjY3ODliZDllYjJiNjQzYmE0NGQ4N2Y3MDQzZDI5OGZkNDY2YWEuLmMyYWRhY2U2
MmZhNWQzY2U1NmZkMmE0NjcwNmIyYWYyZDEyYTI5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTItMDQtMDMgIERhdmlkIFJldmVtYW4gIDxyZXZlbWFu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFVzZSBHTF9DSFJPTUlVTV9jb21t
YW5kX2J1ZmZlcl9xdWVyeSB0byB0aHJvdHRsZSBpbmNyZW1lbnRhbCB0ZXh0dXJlIHVwZGF0ZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTAwNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0aGUg
Zm9sbG93aW5nIG5ldyB1bml0IHRlc3RzOiBDQ1NjaGVkdWxlclRlc3QuVXBkYXRlTW9yZVJlc291
cmNlcywKKyAgICAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LlRlc3RDYW5VcGRhdGVN
b3JlUmVzb3VyY2VzCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoK
KyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAqIHRlc3RzL0NDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIHRlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHA6CisgICAgICAgIChX
ZWJLaXRUZXN0czo6RmFrZUNDU2NoZWR1bGVyQ2xpZW50OjpyZXNldCk6CisgICAgICAgIChXZWJL
aXRUZXN0czo6RmFrZUNDU2NoZWR1bGVyQ2xpZW50OjpzZXRNYXhSZXNvdXJjZVVwZGF0ZVRpbWUp
OgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZha2VDQ1NjaGVkdWxlckNsaWVudDo6bWF4UmVzb3Vy
Y2VVcGRhdGVUaW1lKToKKyAgICAgICAgKEZha2VDQ1NjaGVkdWxlckNsaWVudCk6CisgICAgICAg
IChXZWJLaXRUZXN0czo6VEVTVCk6CisgICAgICAgIChXZWJLaXRUZXN0cyk6CisgICAgICAgICog
dGVzdHMvQ0NTY2hlZHVsZXJUZXN0Q29tbW9uLmg6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFr
ZUNDVGltZVNvdXJjZTo6RmFrZUNDVGltZVNvdXJjZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6
RmFrZUNDVGltZVNvdXJjZTo6bmV4dFRpY2tUaW1lKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpG
YWtlQ0NUaW1lU291cmNlOjpzZXROZXh0VGlja1RpbWUpOgorICAgICAgICAoRmFrZUNDVGltZVNv
dXJjZSk6CisgICAgICAgICogdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHA6CisgICAg
ICAgIChXZWJLaXRUZXN0czo6RmFrZUNDVGV4dHVyZVVwZGF0ZXI6OkZha2VDQ1RleHR1cmVVcGRh
dGVyKToKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmg6CisgICAgICAg
IChGYWtlQ0NUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogdGVzdHMvQ2FudmFzMkRMYXllckNo
cm9taXVtVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5j
cHA6CisgICAgICAgIChXVEY6OlRFU1QpOgorICAgICAgICAoV1RGOjppZGxlUGFpbnRSZXBlYXQp
OgorCiAyMDEyLTA0LTAzICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtjaHJvbWl1bV0gSW5jbHVkZSBJbWFnZS5oIGluIFRleHRGaWVsZERlY29yYXRvcklt
cGwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAppbmRleCAwMjhmNTEz
YTQxN2IxZmUwMjFmOTM1YTM2MzYxYzcxY2M2ZmIzMTA1Li44ZTlhMTg3YTEzZDNkOWRiNmRmYTY0
ODdjYmFkYzg2OTE2ZTlhOTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5j
cHAKQEAgLTEyOSwxNCArMTI5LDE0IEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpwYWlu
dENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIC8qIG9jCiAgICAgbV9j
b250ZXh0LT5mbHVzaCgpOwogfQogCi12b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJl
VXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CiAgICAgaWYgKCFt
X2JhY2tUZXh0dXJlSWQgfHwgIW1fZnJvbnRUZXh0dXJlIHx8ICFtX2Zyb250VGV4dHVyZS0+aXNW
YWxpZChtX3NpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9mcm9udFRleHR1cmUtPmFsbG9jYXRlKHVwZGF0ZXIuYWxsb2NhdG9yKCkpOwotICAg
IHVwZGF0ZXIuY29waWVyKCktPmNvcHlUZXh0dXJlKGNvbnRleHQsIG1fYmFja1RleHR1cmVJZCwg
bV9mcm9udFRleHR1cmUtPnRleHR1cmVJZCgpLCBtX3NpemUpOwotICAgIEdMQyhjb250ZXh0LCBj
b250ZXh0LT5mbHVzaCgpKTsKKyAgICB1cGRhdGVyLmNvcGllcigpLT5jb3B5VGV4dHVyZSh1cGRh
dGVyLmNvbnRleHQoKSwgbV9iYWNrVGV4dHVyZUlkLCBtX2Zyb250VGV4dHVyZS0+dGV4dHVyZUlk
KCksIG1fc2l6ZSk7CisgICAgR0xDKHVwZGF0ZXIuY29udGV4dCgpLCB1cGRhdGVyLmNvbnRleHQo
KS0+Zmx1c2goKSk7CiB9CiAKIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpwdXNoUHJvcGVy
dGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVt
LmgKaW5kZXggYjVkMGMyMzg5MWZiMDViNjIxODI0OTEwMjUwZDU5MGI4YjcyYzY3Mi4uNjMxN2Yy
MDQ5YTlhODg5YjZhNTg0OTExYjI3NjUwOWYzNzY3YmE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lm
RGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0
ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhDQ1RleHR1
cmVVcGRhdGVyJik7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllcklt
cGwqKTsKICAgICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uaAppbmRleCBiOTgwMjJiNTJkYTU4YjkxOTdjYmY1NDQ4Y2I2ZDQwYTlhMDdj
MjcwLi4wNmM0ZGVlZTE5MThmNDFhYmY2ZWIyOGM3NjE1MzFiZWE2YWQwOTUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5oCkBAIC0xNzMsNyArMTczLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBk
cmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2lzRHJhd2FibGU7IH0KICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiAvKiBv
Y2NsdXNpb24gKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGly
dHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiAvKiBvY2NsdXNpb24gKi8pIHsgfQotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwg
Q0NUZXh0dXJlVXBkYXRlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKENDVGV4dHVyZVVwZGF0ZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNN
YXNrKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1bnJlc2VydmVDb250ZW50c1RleHR1cmUo
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYmluZENvbnRlbnRzVGV4dHVyZSgpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXll
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMDEwYTQzMThjODNhZGM4NzhlNGE3YzA3MGMz
ZTI5OGU4YTkxM2NlMi4uZGI4ODhlMjFmMzRjYzI4MGQ1NDYyY2ZmOWM5YmFlZGY3YTg5MmYxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC0xODMsNyArMTgzLDcgQEAgSW50
U2l6ZSBUaWxlZExheWVyQ2hyb21pdW06OmNvbnRlbnRCb3VuZHMoKSBjb25zdAogICAgIHJldHVy
biBJbnRTaXplKGxyb3VuZGYoYm91bmRzKCkud2lkdGgoKSAqIGNvbnRlbnRzU2NhbGUoKSksIGxy
b3VuZGYoYm91bmRzKCkuaGVpZ2h0KCkgKiBjb250ZW50c1NjYWxlKCkpKTsKIH0KIAotdm9pZCBU
aWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQordm9pZCBUaWxlZExheWVyQ2hyb21p
dW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikK
IHsKICAgICAvLyBQYWludGluZyBjb3VsZCBjYXVzZSBjb21wb3NpdGluZyB0byBnZXQgdHVybmVk
IG9mZiwgd2hpY2ggbWF5IGNhdXNlIHRoZSB0aWxlciB0byBiZWNvbWUgaW52YWxpZGF0ZWQgbWlk
LXVwZGF0ZS4KICAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1Jl
Y3QuaXNFbXB0eSgpIHx8IG1fdGlsZXItPmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmgKaW5kZXggODFlZTI0OGE3NjhmZjk5ZGY4NmNlYzBmMThjNGEzMGJjMGFjYzdkYy4uNzY4
OWUxZGFkYzFjYjM2MjVlOWFmOTNjMGUwMTQ0MGQzNGNmMjdiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXll
ckNocm9taXVtLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+VGls
ZWRMYXllckNocm9taXVtKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhDQ1RleHR1cmVVcGRhdGVyJik7CiAg
ICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29sKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwdXNo
UHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNw
cAppbmRleCBkYTU1ZjNhYzA2YzRkNWM0NmVkYWMxNzlkODRkZjYzOGFjMjE5OWVjLi42MGY2MjE2
ODhiYWY2ZDc1M2I4ZmE0ZDNjYTM3YmUwOWVkNTAxYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJD
aHJvbWl1bS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAj
aW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlTGF5
ZXJJbXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTgzLDggKzg0LDkgQEAgdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnBh
aW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogLyogb2NjbHUKICAg
ICBtX2NvbnRleHRMb3N0ID0gY29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNz
UmVzZXRTdGF0dXNBUkIoKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1I7CiB9CiAKLXZv
aWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNz
Q29udGV4dDNEKiByZW5kZXJlckNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImKQordm9pZCBXZWJH
TExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoQ0NUZXh0dXJlVXBkYXRl
ciYgdXBkYXRlcikKIHsKKyAgICBHcmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJDb250ZXh0ID0g
dXBkYXRlci5jb250ZXh0KCk7CiAgICAgaWYgKG1fdGV4dHVyZUNoYW5nZWQpIHsKICAgICAgICAg
cmVuZGVyZXJDb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgbV90ZXh0dXJlSWQpOwogICAgICAgICAvLyBTZXQgdGhlIG1pbi1tYWcgZmlsdGVycyB0byBs
aW5lYXIgYW5kIHdyYXAgbW9kZXMgdG8gR0xfQ0xBTVBfVE9fRURHRQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVy
Q2hyb21pdW0uaAppbmRleCA2NTA5ZmIzNThkOTVlOWIwZGYxNzFhYzBiMWNkZmM1ZDUzNTQxNjNk
Li5hMTdhZGJhMGYyNjQzNmY5NDMzZmVmYTc2MDk2N2NjNjY3ODE4OWU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21p
dW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVu
dHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOwotICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBk
YXRlciYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKENDVGV4
dHVyZVVwZGF0ZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVy
SW1wbCopOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlSZWN0KGNvbnN0IEZsb2F0
UmVjdCYpOwogICAgIGJvb2wgcGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZl
ciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmNwcAppbmRleCBi
Njg4YTc4YTI3YzU3OTUxZGQ4ZDZiZWZmZWU3NjZjNWQyNGYyM2U0Li43MDRlZmY0YmY3YTNkNmMw
NGRlYjVjZDFkMjY2MGZjOGUwMTllYmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFz
ZWRUaW1lU291cmNlLmNwcApAQCAtMTYxLDQgKzE2MSwxMiBAQCB2b2lkIENDRGVsYXlCYXNlZFRp
bWVTb3VyY2U6OnBvc3ROZXh0VGlja1Rhc2soZG91YmxlIG5vdykKICAgICBtX3RpY2tUYXJnZXQg
PSBuZXdUaWNrVGFyZ2V0OwogfQogCitkb3VibGUgQ0NEZWxheUJhc2VkVGltZVNvdXJjZTo6bmV4
dFRpY2tUaW1lKCkgY29uc3QKK3sKKyAgICBpZiAoIW1faGFzVGlja1RhcmdldCkKKyAgICAgICAg
cmV0dXJuIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworCisgICAgcmV0dXJuIG1fdGlj
a1RhcmdldDsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5o
CmluZGV4IDVmMWIyYzRmMmZkYTdiZWQ1NGY1ZjQ0MzUwNjQ1ZjM1Zjc5NmU1ZGYuLjM4MGJlNmJj
MGQxZTZhMTJlYTViNTU3ZjZhNzM0YWM3ZGY3NGI1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Rl
bGF5QmFzZWRUaW1lU291cmNlLmgKQEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCk7CiAgICAgdmlydHVhbCBib29sIGFjdGl2ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGUgIT0gU1RBVEVfSU5BQ1RJVkU7IH0KIAorICAgIHZpcnR1YWwgZG91
YmxlIG5leHRUaWNrVGltZSgpIGNvbnN0OworCiAgICAgLy8gQ0NUaW1lckNsaWVudCBpbXBsZW1l
bnRhdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgb25UaW1lckZpcmVkKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRl
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuY3BwCmluZGV4IGRiNmQ5NWNjMDBjYzE1NTY4ZTBj
ZTU2N2Y0NDk3OGE5Mjc5MjRiZTguLmVjM2MyNDc4MDkzYWQ4Yzg3YjY4NDgwNjAyMjg0Njg0NTlk
N2Y4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmNwcApAQCAt
MTA1LDQgKzEwNSw5IEBAIHZvaWQgQ0NGcmFtZVJhdGVDb250cm9sbGVyOjpkaWRBYm9ydEFsbFBl
bmRpbmdGcmFtZXMoKQogICAgIG1fbnVtRnJhbWVzUGVuZGluZyA9IDA7CiB9CiAKK2RvdWJsZSBD
Q0ZyYW1lUmF0ZUNvbnRyb2xsZXI6Om5leHRUaWNrVGltZSgpCit7CisgICAgcmV0dXJuIG1fdGlt
ZVNvdXJjZS0+bmV4dFRpY2tUaW1lKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJh
dGVDb250cm9sbGVyLmgKaW5kZXggNTczNGQ0YWE2ZTlmNzQ2MWE0YzY2YzZlMGExODYwZGEzMGQ0
OTY2ZS4uN2ExZGFkNDM5YWZiMjhiM2Y0MzRiMzc4OTZhMmM2OWQ4ZjRjMjZjNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJh
dGVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmgKQEAgLTY0LDYgKzY0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkRmluaXNoRnJhbWUoKTsKICAgICB2b2lkIGRpZEFib3J0QWxsUGVuZGlu
Z0ZyYW1lcygpOwogICAgIHZvaWQgc2V0TWF4RnJhbWVzUGVuZGluZyhpbnQpOyAvLyAwIGZvciB1
bmxpbWl0ZWQuCisgICAgZG91YmxlIG5leHRUaWNrVGltZSgpOwogCiBwcm90ZWN0ZWQ6CiAgICAg
ZnJpZW5kIGNsYXNzIENDRnJhbWVSYXRlQ29udHJvbGxlclRpbWVTb3VyY2VBZGFwdGVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggYmJjMjc4NjVjYzNjYTdiZDg2YzlkYWE0
MWU1ODNjNTUxMWM5MjdhNi4uZmQ5Mzc1MmU0MWM0YWJkOGRjZTgwYjk2N2U1ZmUyY2ZiYTkxYWJh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC01NzUsNyArNTc1LDcgQEAg
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3Qm
IHJlbmRlclN1cmZhY2VMYXllckxpc3QKICAgICBvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0
cmljcygpLnJlY29yZE1ldHJpY3ModGhpcyk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1Rl
eHR1cmVVcGRhdGVyJiB1cGRhdGVyKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKIHsKICAgICAvLyBVc2Ug
QmFja1RvRnJvbnQgc2luY2UgaXQncyBjaGVhcCBhbmQgdGhpcyBpc24ndCBvcmRlci1kZXBlbmRl
bnQuCiAgICAgdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgVmVjdG9yPFJl
ZlB0cjxMYXllckNocm9taXVtPiA+LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVy
YXRvckFjdGlvbnM6OkJhY2tUb0Zyb250PiBDQ0xheWVySXRlcmF0b3JUeXBlOwpAQCAtNTg1LDE1
ICs1ODUsMTUgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIENDVGUKICAgICAgICAgaWYgKGl0LnJlcHJl
c2VudHNUYXJnZXRSZW5kZXJTdXJmYWNlKCkpIHsKICAgICAgICAgICAgIEFTU0VSVChpdC0+cmVu
ZGVyU3VyZmFjZSgpLT5kcmF3T3BhY2l0eSgpIHx8IGl0LT5yZW5kZXJTdXJmYWNlKCktPmRyYXdP
cGFjaXR5SXNBbmltYXRpbmcoKSk7CiAgICAgICAgICAgICBpZiAoaXQtPm1hc2tMYXllcigpKQot
ICAgICAgICAgICAgICAgIGl0LT5tYXNrTGF5ZXIoKS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhjb250ZXh0LCB1cGRhdGVyKTsKKyAgICAgICAgICAgICAgICBpdC0+bWFza0xheWVyKCktPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7CiAKICAgICAgICAgICAgIGlmIChpdC0+
cmVwbGljYUxheWVyKCkpIHsKLSAgICAgICAgICAgICAgICBpdC0+cmVwbGljYUxheWVyKCktPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7CisgICAgICAgICAgICAg
ICAgaXQtPnJlcGxpY2FMYXllcigpLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIp
OwogICAgICAgICAgICAgICAgIGlmIChpdC0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpKQot
ICAgICAgICAgICAgICAgICAgICBpdC0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpLT51cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOworICAgICAgICAgICAgICAg
ICAgICBpdC0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpLT51cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKHVwZGF0ZXIpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGl0LnJl
cHJlc2VudHNJdHNlbGYoKSkKLSAgICAgICAgICAgIGl0LT51cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKGNvbnRleHQsIHVwZGF0ZXIpOworICAgICAgICAgICAgaXQtPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXModXBkYXRlcik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5o
CmluZGV4IDljYTE0ZmMwNDQ4ODNhYjBjMzEwOWE5N2ZiOGJlMWIyYmEyMzcxNjEuLmI2M2UyMzE4
MjRmNWE2ZWZlNWQxODkxMmUxMjZkY2NiYThmNTRmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5oCkBAIC0yMDgsNyArMjA4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdGFydFBhZ2VT
Y2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNo
b3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpOwogCi0gICAgdm9pZCB1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYp
OworICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhDQ1RleHR1cmVVcGRhdGVyJik7
CiAgICAgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQm
KTsKICAgICB2b2lkIHN0YXJ0UmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0M0QqKTsKICAgICB2
b2lkIHN0b3BSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXIuY3BwCmluZGV4IDNkMDllNDRiMTJkYTRkMWYzZTZmYzEyN2EwMzZkNTJkODNkNzFlODQuLjUy
NGRkNDM0YTFjOTYzZmE5MTNiMjRkZjhlMjJjYzk0MTgyMDZjODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlci5jcHAKQEAgLTEwNywxNCArMTA3LDE5IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OmRpZFJlY3Jl
YXRlQ29udGV4dCgpCiAgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKIH0KIAotdm9pZCBD
Q1NjaGVkdWxlcjo6dnN5bmNUaWNrKCkKK3ZvaWQgQ0NTY2hlZHVsZXI6OmRpZFVwZGF0ZU1vcmVS
ZXNvdXJjZXNDb21wbGV0ZSgpCiB7CisgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpkaWRV
cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUiLCB0aGlzLCAwKTsKICAgICBpZiAobV91cGRhdGVN
b3JlUmVzb3VyY2VzUGVuZGluZykgewogICAgICAgICBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5k
aW5nID0gZmFsc2U7CiAgICAgICAgIG1fc3RhdGVNYWNoaW5lLmJlZ2luVXBkYXRlTW9yZVJlc291
cmNlc0NvbXBsZXRlKG1fY2xpZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpOwogICAgIH0K
LSAgICBUUkFDRV9FVkVOVCgiQ0NTY2hlZHVsZXI6OnZzeW5jVGljayIsIHRoaXMsIDApOworICAg
IHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7Cit9CiAKK3ZvaWQgQ0NTY2hlZHVsZXI6OnZzeW5j
VGljaygpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjp2c3luY1RpY2siLCB0aGlz
LCAwKTsKICAgICBtX3N0YXRlTWFjaGluZS5kaWRFbnRlclZTeW5jKCk7CiAgICAgcHJvY2Vzc1Nj
aGVkdWxlZEFjdGlvbnMoKTsKICAgICBtX3N0YXRlTWFjaGluZS5kaWRMZWF2ZVZTeW5jKCk7CkBA
IC0xMjMsNiArMTI4LDExIEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnZzeW5jVGljaygpCiBDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QWN0aW9uIENDU2NoZWR1bGVyOjpuZXh0QWN0aW9uKCkKIHsKICAg
ICBtX3N0YXRlTWFjaGluZS5zZXRDYW5EcmF3KG1fY2xpZW50LT5jYW5EcmF3KCkpOworCisgICAg
Ym9vbCBoYXNSZWRyYXdQZW5kaW5nID0gbV9zdGF0ZU1hY2hpbmUucmVkcmF3UGVuZGluZygpOwor
ICAgIGJvb2wgaGFzVGltZVJlbWFpbmluZyA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
IDwgbV9mcmFtZVJhdGVDb250cm9sbGVyLT5uZXh0VGlja1RpbWUoKSAtIG1fY2xpZW50LT5tYXhS
ZXNvdXJjZVVwZGF0ZVRpbWUoKTsKKyAgICBtX3N0YXRlTWFjaGluZS5zZXRDYW5VcGRhdGVNb3Jl
UmVzb3VyY2VzKCFoYXNSZWRyYXdQZW5kaW5nIHx8IGhhc1RpbWVSZW1haW5pbmcpOworCiAgICAg
cmV0dXJuIG1fc3RhdGVNYWNoaW5lLm5leHRBY3Rpb24oKTsKIH0KIApAQCAtMTQ4LDE2ICsxNTgs
MTEgQEAgdm9pZCBDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKQogICAgICAg
ICAgICAgbV9jbGllbnQtPnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVH
SU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTOgotICAgICAgICAgICAgbV9jbGllbnQtPnNjaGVkdWxl
ZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKTsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQt
Pmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSkgewotICAgICAgICAgICAgICAgIC8vIElmIHdlIHdl
cmUganVzdCB0b2xkIHRvIHVwZGF0ZSByZXNvdXJjZXMsIGJ1dCB0aGVyZSBhcmUgbm8KLSAgICAg
ICAgICAgICAgICAvLyBtb3JlIHBlbmRpbmcsIHRoZW4gdGVsbCB0aGUgc3RhdGUgbWFjaGluZSB0
aGF0IHRoZQotICAgICAgICAgICAgICAgIC8vIGJlZ2luVXBkYXRlTW9yZVJlc291cmNlcyBjb21w
bGV0ZWQuIElmIG1vcmUgYXJlIHBlbmRpbmcsCi0gICAgICAgICAgICAgICAgLy8gdGhlbiB3ZSB3
aWxsIGFjayB0aGUgdXBkYXRlIGF0IHRoZSBuZXh0IGRyYXcuCi0gICAgICAgICAgICAgICAgbV91
cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIG1fc3Rh
dGVNYWNoaW5lLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKLSAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaWYgKG1fY2xpZW50LT5oYXNNb3JlUmVzb3VyY2VV
cGRhdGVzKCkpIHsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+c2NoZWR1bGVkQWN0aW9uVXBk
YXRlTW9yZVJlc291cmNlcygpOwogICAgICAgICAgICAgICAgIG1fdXBkYXRlTW9yZVJlc291cmNl
c1BlbmRpbmcgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbV9z
dGF0ZU1hY2hpbmUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9DT01NSVQ6CiAgICAgICAgICAgICBtX2NsaWVudC0+c2NoZWR1bGVkQWN0aW9uQ29tbWl0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXIuaAppbmRleCBhNmYyNjFjNGVkZjZkODU0YWEyYjY5MTNhYTZi
N2E5MmE3OTM4NjI0Li45MmM4NDc1MWQ4NWNiZTZjYWZkMDk5MzcyNGY3YjAxMWRlNmFiZDg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyLmgKQEAgLTU0LDYgKzU0LDcgQEAgY2xhc3MgQ0NTY2hlZHVsZXJD
bGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3KCkgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgZG91YmxlIG1heFJlc291cmNlVXBkYXRlVGltZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCkgPSAwOwogICAgIHZpcnR1YWwgQ0NT
Y2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJlc3VsdCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dh
cElmUG9zc2libGUoKSA9IDA7CkBAIC05Niw2ICs5Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZExvc2VDb250ZXh0KCk7CiAgICAgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoKTsKIAorICAgIHZv
aWQgZGlkVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKCk7CisKICAgICBib29sIGNvbW1pdFBl
bmRpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlTWFjaGluZS5jb21taXRQZW5kaW5nKCk7IH0K
ICAgICBib29sIHJlZHJhd1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlTWFjaGluZS5y
ZWRyYXdQZW5kaW5nKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmUuY3BwCmluZGV4IDFjOTQyZTM0M2M3NzcxOWI2M2U2ZDNmMDliMTJiMDVkZWUwMDFiZGEu
LjYyZTRiMTE2MWEwNjk1NjE1YTBkZTM0NDA3NjkyNGFjOWI2YjZiMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKCkKICAgICAsIG1f
dmlzaWJsZShmYWxzZSkKICAgICAsIG1fY2FuRHJhdyh0cnVlKQogICAgICwgbV9kcmF3SWZQb3Nz
aWJsZUZhaWxlZChmYWxzZSkKKyAgICAsIG1fY2FuVXBkYXRlTW9yZVJlc291cmNlcyhmYWxzZSkK
ICAgICAsIG1fY29udGV4dFN0YXRlKENPTlRFWFRfQUNUSVZFKQogewogfQpAQCAtNzAsNiArNzEs
MTUgQEAgYm9vbCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2hvdWxkRHJhdygpIGNvbnN0CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNob3Vs
ZFVwZGF0ZU1vcmVSZXNvdXJjZXMoKSBjb25zdAoreworICAgIGlmIChtX3VwZGF0ZU1vcmVSZXNv
dXJjZXNQZW5kaW5nKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX2NhblVwZGF0
ZU1vcmVSZXNvdXJjZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6bmV4dEFjdGlvbigpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChtX2NvbW1pdFN0YXRlKSB7
CkBAIC05Niw3ICsxMDYsNyBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QWN0aW9uIENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKCkgY29uc3QKICAgICBjYXNlIENPTU1JVF9T
VEFURV9VUERBVElOR19SRVNPVVJDRVM6CiAgICAgICAgIGlmIChzaG91bGREcmF3KCkpCiAgICAg
ICAgICAgICByZXR1cm4gbV9uZWVkc0ZvcmNlZFJlZHJhdyA/IEFDVElPTl9EUkFXX0ZPUkNFRCA6
IEFDVElPTl9EUkFXX0lGX1BPU1NJQkxFOwotICAgICAgICBpZiAoIW1fdXBkYXRlTW9yZVJlc291
cmNlc1BlbmRpbmcpCisgICAgICAgIGlmIChzaG91bGRVcGRhdGVNb3JlUmVzb3VyY2VzKCkpCiAg
ICAgICAgICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzsKICAg
ICAgICAgcmV0dXJuIEFDVElPTl9OT05FOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmUuaAppbmRleCAyZWNmZDFjZDA2ZDUwOGFlMWZlNjFmNjgzOTIxNjgxYWZkY2Vi
ODY2Li5mNjQ4MDNlZWNmYmU5MDc3YTgxNjYwMzA3NGYzZGUzYmE3NzAzMzJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
clN0YXRlTWFjaGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKQEAgLTEyMiw2ICsxMjIsOSBAQCBw
dWJsaWM6CiAgICAgLy8gd2hlbiBzdWNoIGJlaGF2aW9yIHdvdWxkIGJlIHVuZGVzaXJhYmxlLgog
ICAgIHZvaWQgc2V0Q2FuRHJhdyhib29sIGNhbikgeyBtX2NhbkRyYXcgPSBjYW47IH0KIAorICAg
IC8vIEluZGljYXRlcyB3aGV0aGVyIHVwZGF0aW5nIHJlc291cmNlcyB3b3VsZCwgYXQgdGhpcyB0
aW1lLCBtYWtlIHNlbnNlLgorICAgIHZvaWQgc2V0Q2FuVXBkYXRlTW9yZVJlc291cmNlcyhib29s
IGNhbikgeyBtX2NhblVwZGF0ZU1vcmVSZXNvdXJjZXMgPSBjYW47IH0KKwogICAgIHZvaWQgZGlk
TG9zZUNvbnRleHQoKTsKICAgICB2b2lkIGRpZFJlY3JlYXRlQ29udGV4dCgpOwogCkBAIC0xMjks
NiArMTMyLDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgc2hvdWxkRHJhd0ZvcmNlZCgpIGNvbnN0
OwogICAgIGJvb2wgc2hvdWxkRHJhdygpIGNvbnN0OwogICAgIGJvb2wgaGFzRHJhd25UaGlzRnJh
bWUoKSBjb25zdDsKKyAgICBib29sIHNob3VsZFVwZGF0ZU1vcmVSZXNvdXJjZXMoKSBjb25zdDsK
IAogICAgIENvbW1pdFN0YXRlIG1fY29tbWl0U3RhdGU7CiAKQEAgLTE0Myw2ICsxNDcsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgYm9vbCBtX3Zpc2libGU7CiAgICAgYm9vbCBtX2NhbkRyYXc7CiAgICAg
Ym9vbCBtX2RyYXdJZlBvc3NpYmxlRmFpbGVkOworICAgIGJvb2wgbV9jYW5VcGRhdGVNb3JlUmVz
b3VyY2VzOwogICAgIENvbnRleHRTdGF0ZSBtX2NvbnRleHRTdGF0ZTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggZWM4NDI4ZDY1MDVmYTE5OTcxZjhh
YTMyMDE2NjUwMzEzMjdjMjJiNi4uMTRmMmJhMDZiMDIzYTUyZmVhZGYyMzVlMTU0ZWFmZDUwYTY1
OWZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTMzLDcg
KzMzLDYgQEAKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSA8d3Rm
L0N1cnJlbnRUaW1lLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiB1c2luZyBuYW1lc3BhY2Ug
V1RGOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yMDAsOSArMTk5LDkgQEAgdm9pZCBDQ1Np
bmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCgpCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmJlZ2luQ29tbWl0KCk7CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5iZWdpbkNvbW1pdE9u
SW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKLSAgICAgICAgQ0NUZXh0dXJl
VXBkYXRlciB1cGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9j
YXRvcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVDb3Bp
ZXIoKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIHVwZGF0ZXIpOwotICAgICAgICB1cGRh
dGVyLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG51bWVyaWNfbGltaXRz
PHNpemVfdD46Om1heCgpKTsKKyAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNU
ZXh0dXJlQWxsb2NhdG9yKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+
dGV4dHVyZUNvcGllcigpKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKHVwZGF0ZXIpOworICAgICAgICB1cGRhdGVyLnVwZGF0ZUFsbCgpOwogICAg
ICAgICBBU1NFUlQoIXVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdEltcGwtPnNldFZpc2libGUobV9sYXllclRyZWVIb3N0LT52aXNpYmxlKCkpOwogICAg
ICAgICBtX2xheWVyVHJlZUhvc3QtPmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJl
ZUhvc3RJbXBsLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXgg
MGNlMGY2ZDEwOThhNzM5NzdmM2JhZjgyMzJmNzIxNmIwNWU3YWQ3ZS4uMzA0NTE5MzA2ODk2MmU0
MjRjYTQ5OTZiZjNmMjFjNDI4YzE0YmZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRl
ci5jcHAKQEAgLTI5LDE2ICsyOSw1NCBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRl
ci5oIgogCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNs
dWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCituYW1lc3Bh
Y2UgeworCisvLyBOdW1iZXIgb2YgcGVuZGluZyB0ZXh0dXJlIHVwZGF0ZSBxdWVyaWVzIHRvIGFs
bG93Lgorc3RhdGljIGNvbnN0IHNpemVfdCBtYXhQZW5kaW5nUXVlcmllcyA9IDI7CisKK30gLy8g
YW5vbnltb3VzIG5hbWVzcGFjZQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNDVGV4dHVyZVVw
ZGF0ZXI6OkNDVGV4dHVyZVVwZGF0ZXIoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBUZXh0
dXJlQ29waWVyKiBjb3BpZXIpCi0gICAgOiBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCitDQ1RleHR1
cmVVcGRhdGVyOjpRdWVyeTo6UXVlcnkoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCisgICAg
OiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fcXVlcnlJZCgwKQoreworICAgIEV4dGVuc2lv
bnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21p
dW0qPihtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgbV9xdWVyeUlkID0gZXh0ZW5z
aW9ucy0+Y3JlYXRlUXVlcnlFWFQoKTsKK30KKworQ0NUZXh0dXJlVXBkYXRlcjo6UXVlcnk6On5R
dWVyeSgpCit7CisgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNf
Y2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsK
KyAgICBleHRlbnNpb25zLT5kZWxldGVRdWVyeUVYVChtX3F1ZXJ5SWQpOworfQorCit2b2lkIEND
VGV4dHVyZVVwZGF0ZXI6OlF1ZXJ5OjpzZXQoKQoreworICAgIEV4dGVuc2lvbnMzRENocm9taXVt
KiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgZXh0ZW5zaW9ucy0+YmVnaW5RdWVyeUVYVChFeHRl
bnNpb25zM0RDaHJvbWl1bTo6Q09NTUFORFNfSVNTVUVEX0NIUk9NSVVNLCBtX3F1ZXJ5SWQpOwor
ICAgIGV4dGVuc2lvbnMtPmVuZFF1ZXJ5RVhUKEV4dGVuc2lvbnMzRENocm9taXVtOjpDT01NQU5E
U19JU1NVRURfQ0hST01JVU0pOworfQorCitib29sIENDVGV4dHVyZVVwZGF0ZXI6OlF1ZXJ5Ojpp
c1BlbmRpbmcoKQoreworICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3Rh
dGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KSk7CisgICAgdW5zaWduZWQgYXZhaWxhYmxlID0gMTsKKyAgICBleHRlbnNpb25zLT5nZXRRdWVy
eU9iamVjdHVpdkVYVChtX3F1ZXJ5SWQsIEV4dGVuc2lvbnMzRENocm9taXVtOjpRVUVSWV9SRVNV
TFRfQVZBSUxBQkxFX0VYVCwgJmF2YWlsYWJsZSk7CisgICAgcmV0dXJuICFhdmFpbGFibGU7Cit9
CisKK0NDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0ZXIoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgVGV4dHVyZUNvcGllciogY29w
aWVyKQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX2FsbG9jYXRvcihhbGxvY2F0
b3IpCiAgICAgLCBtX2NvcGllcihjb3BpZXIpCiAgICAgLCBtX2VudHJ5SW5kZXgoMCkKIHsKQEAg
LTc1LDEzICsxMTMsMzIgQEAgYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcygp
IGNvbnN0CiAgICAgcmV0dXJuIG1fZW50cmllcy5zaXplKCkgfHwgbV9wYXJ0aWFsRW50cmllcy5z
aXplKCk7CiB9CiAKLWJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBzaXplX3QgY291bnQpCit2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0
ZUFsbCgpCit7CisgICAgc2l6ZV90IGluZGV4OworICAgIGZvciAoaW5kZXggPSBtX2VudHJ5SW5k
ZXg7IGluZGV4IDwgbV9lbnRyaWVzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBVcGRhdGVF
bnRyeSYgZW50cnkgPSBtX2VudHJpZXNbaW5kZXhdOworICAgICAgICBlbnRyeS5tX3RleHR1cmUt
PnVwZGF0ZVJlY3QobV9jb250ZXh0LCBtX2FsbG9jYXRvciwgZW50cnkubV9zb3VyY2VSZWN0LCBl
bnRyeS5tX2Rlc3RSZWN0KTsKKyAgICB9CisgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbV9w
YXJ0aWFsRW50cmllcy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgVXBkYXRlRW50cnkmIGVu
dHJ5ID0gbV9wYXJ0aWFsRW50cmllc1tpbmRleF07CisgICAgICAgIGVudHJ5Lm1fdGV4dHVyZS0+
dXBkYXRlUmVjdChtX2NvbnRleHQsIG1fYWxsb2NhdG9yLCBlbnRyeS5tX3NvdXJjZVJlY3QsIGVu
dHJ5Lm1fZGVzdFJlY3QpOworICAgIH0KKworICAgIC8vIElmIG5vIGVudHJpZXMgbGVmdCB0byBw
cm9jZXNzLCBhdXRvLWNsZWFyLgorICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgQ0NUZXh0dXJlVXBk
YXRlcjo6dXBkYXRlQXRNb3N0KHNpemVfdCBjb3VudCkKIHsKKyAgICBpZiAoIWlzUXVlcnlBdmFp
bGFibGUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgc2l6ZV90IGluZGV4OwogICAgIHNpemVf
dCBtYXhJbmRleCA9IG1pbihtX2VudHJ5SW5kZXggKyBjb3VudCwgbV9lbnRyaWVzLnNpemUoKSk7
CiAgICAgZm9yIChpbmRleCA9IG1fZW50cnlJbmRleDsgaW5kZXggPCBtYXhJbmRleDsgKytpbmRl
eCkgewogICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX2VudHJpZXNbaW5kZXhdOwotICAg
ICAgICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgbV9hbGxvY2F0b3IsIGVu
dHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9kZXN0UmVjdCk7CisgICAgICAgIGVudHJ5Lm1fdGV4
dHVyZS0+dXBkYXRlUmVjdChtX2NvbnRleHQsIG1fYWxsb2NhdG9yLCBlbnRyeS5tX3NvdXJjZVJl
Y3QsIGVudHJ5Lm1fZGVzdFJlY3QpOwogICAgIH0KIAogICAgIGJvb2wgbW9yZVVwZGF0ZXMgPSBt
YXhJbmRleCA8IG1fZW50cmllcy5zaXplKCk7CkBAIC05MiwxOSArMTQ5LDE4IEBAIGJvb2wgQ0NU
ZXh0dXJlVXBkYXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBzaXplX3Qg
Y291bnQpCiAgICAgaWYgKChjb3VudCAtIChpbmRleCAtIG1fZW50cnlJbmRleCkpIDwgbV9wYXJ0
aWFsRW50cmllcy5zaXplKCkpCiAgICAgICAgIG1vcmVVcGRhdGVzID0gdHJ1ZTsKIAotICAgIGlm
IChtb3JlVXBkYXRlcykgewotICAgICAgICBtX2VudHJ5SW5kZXggPSBpbmRleDsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQorICAgIGlmICghbW9yZVVwZGF0ZXMpIHsKKyAgICAgICAgZm9y
IChpbmRleCA9IDA7IGluZGV4IDwgbV9wYXJ0aWFsRW50cmllcy5zaXplKCk7ICsraW5kZXgpIHsK
KyAgICAgICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fcGFydGlhbEVudHJpZXNbaW5kZXhd
OworICAgICAgICAgICAgZW50cnkubV90ZXh0dXJlLT51cGRhdGVSZWN0KG1fY29udGV4dCwgbV9h
bGxvY2F0b3IsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9kZXN0UmVjdCk7CisgICAgICAg
IH0KIAotICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgp
OyArK2luZGV4KSB7Ci0gICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fcGFydGlhbEVudHJp
ZXNbaW5kZXhdOwotICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwg
bV9hbGxvY2F0b3IsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9kZXN0UmVjdCk7Ci0gICAg
fQorICAgICAgICAvLyBJZiBubyBlbnRyaWVzIGxlZnQgdG8gcHJvY2VzcywgYXV0by1jbGVhci4K
KyAgICAgICAgY2xlYXIoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9lbnRyeUluZGV4ID0gaW5k
ZXg7CiAKLSAgICAvLyBJZiBubyBlbnRyaWVzIGxlZnQgdG8gcHJvY2VzcywgYXV0by1jbGVhci4K
LSAgICBjbGVhcigpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBzZXRRdWVyeSgpOwogfQogCiB2
b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmNsZWFyKCkKQEAgLTExNCw2ICsxNzAsMzcgQEAgdm9pZCBD
Q1RleHR1cmVVcGRhdGVyOjpjbGVhcigpCiAgICAgbV9wYXJ0aWFsRW50cmllcy5jbGVhcigpOwog
fQogCit2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OnByb2Nlc3NRdWVyaWVzKCkKK3sKKyAgICB3aGls
ZSAoIW1fcGVuZGluZ1F1ZXJpZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChtX3BlbmRpbmdR
dWVyaWVzLmZpcnN0KCktPmlzUGVuZGluZygpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgbV9hdmFpbGFibGVRdWVyaWVzLmFwcGVuZChtX3BlbmRpbmdRdWVyaWVzLnRha2VGaXJzdCgp
KTsKKyAgICB9Cit9CisKK2Jvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6aXNRdWVyeUF2YWlsYWJsZSgp
Cit7CisgICAgcHJvY2Vzc1F1ZXJpZXMoKTsKKworICAgIGlmICghbV9hdmFpbGFibGVRdWVyaWVz
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobV9wZW5kaW5nUXVl
cmllcy5zaXplKCkgPT0gbWF4UGVuZGluZ1F1ZXJpZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIG1fYXZhaWxhYmxlUXVlcmllcy5hcHBlbmQoUXVlcnk6OmNyZWF0ZShtX2NvbnRleHQp
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDQ1RleHR1cmVVcGRhdGVyOjpzZXRRdWVy
eSgpCit7CisgICAgQVNTRVJUKCFtX2F2YWlsYWJsZVF1ZXJpZXMuaXNFbXB0eSgpKTsKKyAgICBt
X2F2YWlsYWJsZVF1ZXJpZXMuZmlyc3QoKS0+c2V0KCk7CisgICAgbV9wZW5kaW5nUXVlcmllcy5h
cHBlbmQobV9hdmFpbGFibGVRdWVyaWVzLnRha2VGaXJzdCgpKTsKK30KKwogfQogCiAjZW5kaWYg
Ly8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRl
ci5oCmluZGV4IGQyOWM2NTg2MWU5MzIzZWNmZjgyZGU0MGJjZGJmN2UyNDZiNDk3MDcuLjdkOTY4
ZGZlYmIyZmExNjc2NDI3Y2MzMjkzNTYzOWEyYzQ5MDUzNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVVcGRhdGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNp
bmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw3ICsz
OSwyMyBAQCBjbGFzcyBUZXh0dXJlQ29waWVyOwogCiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVyIHsK
IHB1YmxpYzoKLSAgICBDQ1RleHR1cmVVcGRhdGVyKFRleHR1cmVBbGxvY2F0b3IqLCBUZXh0dXJl
Q29waWVyKik7CisgICAgY2xhc3MgUXVlcnkgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGlj
IFBhc3NPd25QdHI8UXVlcnk+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkgeyBy
ZXR1cm4gYWRvcHRQdHIobmV3IFF1ZXJ5KGNvbnRleHQpKTsgfQorCisgICAgICAgIHZpcnR1YWwg
flF1ZXJ5KCk7CisKKyAgICAgICAgdm9pZCBzZXQoKTsKKyAgICAgICAgYm9vbCBpc1BlbmRpbmco
KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IFF1ZXJ5KEdyYXBoaWNzQ29udGV4
dDNEKik7CisKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKKyAgICAgICAg
dW5zaWduZWQgbV9xdWVyeUlkOworICAgIH07CisKKyAgICBDQ1RleHR1cmVVcGRhdGVyKEdyYXBo
aWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIFRleHR1cmVDb3BpZXIqKTsKICAgICB+
Q0NUZXh0dXJlVXBkYXRlcigpOwogCiAgICAgdm9pZCBhcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0KTsKQEAgLTQ2LDExICs2MywxNSBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc01vcmVV
cGRhdGVzKCkgY29uc3Q7CiAKLSAgICAvLyBVcGRhdGUgc29tZSB0ZXh0dXJlcy4gUmV0dXJucyB0
cnVlIGlmIG1vcmUgdGV4dHVyZXMgbGVmdCB0byBwcm9jZXNzLgotICAgIGJvb2wgdXBkYXRlKEdy
YXBoaWNzQ29udGV4dDNEKiwgc2l6ZV90IGNvdW50KTsKKyAgICAvLyBVcGRhdGUgYWxsIHRleHR1
cmVzLgorICAgIHZvaWQgdXBkYXRlQWxsKCk7CisKKyAgICAvLyBVcGRhdGUgYXQgbW9zdCB8Y291
bnR8IHRleHR1cmVzLgorICAgIHZvaWQgdXBkYXRlQXRNb3N0KHNpemVfdCBjb3VudCk7CiAKICAg
ICB2b2lkIGNsZWFyKCk7CiAKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpIHsgcmV0
dXJuIG1fY29udGV4dDsgfQogICAgIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcigpIHsgcmV0
dXJuIG1fYWxsb2NhdG9yOyB9CiAgICAgVGV4dHVyZUNvcGllciogY29waWVyKCkgeyByZXR1cm4g
bV9jb3BpZXI7IH0KIApAQCAtNjMsMTEgKzg0LDE4IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMg
dm9pZCBhcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBWZWN0b3I8VXBkYXRlRW50cnk+
Jik7CiAKKyAgICB2b2lkIHByb2Nlc3NRdWVyaWVzKCk7CisgICAgYm9vbCBpc1F1ZXJ5QXZhaWxh
YmxlKCk7CisgICAgdm9pZCBzZXRRdWVyeSgpOworCisgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1f
Y29udGV4dDsKICAgICBUZXh0dXJlQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKICAgICBUZXh0dXJl
Q29waWVyKiBtX2NvcGllcjsKICAgICBzaXplX3QgbV9lbnRyeUluZGV4OwogICAgIFZlY3RvcjxV
cGRhdGVFbnRyeT4gbV9lbnRyaWVzOwogICAgIFZlY3RvcjxVcGRhdGVFbnRyeT4gbV9wYXJ0aWFs
RW50cmllczsKKyAgICBEZXF1ZTxPd25QdHI8UXVlcnk+ID4gbV9wZW5kaW5nUXVlcmllczsKKyAg
ICBEZXF1ZTxPd25QdHI8UXVlcnk+ID4gbV9hdmFpbGFibGVRdWVyaWVzOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCA0NTg0ZjE1ZmJjYTJlNWJlNDg5OTZkYWQ1ZjA5
ZjNjYWM4YTNhOTc2Li4wZWU0YWM2Y2JjNGIzMmIzYjc0ODJiZmRiMTVlMGY1Zjc4MzVlYjI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtNDcsNyArNDcsMTAgQEAgbmFtZXNwYWNl
IHsKIAogLy8gTnVtYmVyIG9mIHRleHR1cmVzIHRvIHVwZGF0ZSB3aXRoIGVhY2ggY2FsbCB0bwog
Ly8gc2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpLgotc3RhdGljIGNvbnN0IHNp
emVfdCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lID0gNDg7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHRl
eHR1cmVVcGRhdGVzUGVyVGljayA9IDQ7CisKKy8vIE1lYXN1cmVkIGluIHNlY29uZHMuCitzdGF0
aWMgY29uc3QgZG91YmxlIHRleHR1cmVVcGRhdGVUaWNrUmF0ZSA9IDAuMDA0OwogCiAvLyBNZWFz
dXJlZCBpbiBzZWNvbmRzLgogc3RhdGljIGNvbnN0IGRvdWJsZSBjb250ZXh0UmVjcmVhdGlvblRp
Y2tSYXRlID0gMC4wMzsKQEAgLTQ4OCw2ICs0OTEsMjUgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojpi
ZWdpbkZyYW1lKCkKICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiB9CiAK
K2NsYXNzIENDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGltZXIgOiBwdWJsaWMgQ0NUaW1lciwg
Q0NUaW1lckNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaHJlYWRQ
cm94eVRleHR1cmVVcGRhdGVUaW1lcj4gY3JlYXRlKENDVGhyZWFkUHJveHkqIHByb3h5KSB7IHJl
dHVybiBhZG9wdFB0cihuZXcgQ0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVUaW1lcihwcm94eSkp
OyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb25UaW1lckZpcmVkKCkKKyAgICB7CisgICAgICAgIG1f
cHJveHktPnRleHR1cmVVcGRhdGVDb21wbGV0ZU9uSW1wbFRocmVhZCgpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBleHBsaWNpdCBDQ1RocmVhZFByb3h5VGV4dHVyZVVwZGF0ZVRpbWVyKENDVGhy
ZWFkUHJveHkqIHByb3h5KQorICAgICAgICA6IENDVGltZXIoQ0NQcm94eTo6aW1wbFRocmVhZCgp
LCB0aGlzKQorICAgICAgICAsIG1fcHJveHkocHJveHkpCisgICAgeworICAgIH0KKworICAgIEND
VGhyZWFkUHJveHkqIG1fcHJveHk7Cit9OworCiB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJh
bWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIHsK
ICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBs
VGhyZWFkIiwgdGhpcywgMCk7CkBAIC01MDIsMTggKzUyNCwyMyBAQCB2b2lkIENDVGhyZWFkUHJv
eHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29t
cGxldGlvbgogCiAgICAgbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQgPSBjb21w
bGV0aW9uOwogCi0gICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVh
ZCk7Ci0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQgPSBhZG9wdFB0cihu
ZXcgQ0NUZXh0dXJlVXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVB
bGxvY2F0b3IoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJl
Q29waWVyKCkpKTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAqbV9jdXJyZW50VGV4dHVyZVVwZGF0
ZXJPbkltcGxUaHJlYWQpOworICAgIGlmICghbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCkK
KyAgICAgICAgbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCA9IGFkb3B0UHRyKG5ldyBDQ1Rl
eHR1cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9sYXllclRyZWVI
b3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZUNvcGllcigpKSk7CisgICAgbV9sYXllclRyZWVIb3N0
LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCptX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFk
KTsKIAogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5iZWdpbkZyYW1lQ29tcGxldGUoKTsK
IH0KIAogYm9vbCBDQ1RocmVhZFByb3h5OjpoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkgY29uc3QK
IHsKLSAgICBpZiAoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKQorICAgIGlm
ICghbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVw
ZGF0ZXMoKTsKKyAgICByZXR1cm4gbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9y
ZVVwZGF0ZXMoKTsKK30KKworZG91YmxlIENDVGhyZWFkUHJveHk6Om1heFJlc291cmNlVXBkYXRl
VGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRleHR1cmVVcGRhdGVUaWNrUmF0ZSArIDAuMDAy
OwogfQogCiBib29sIENDVGhyZWFkUHJveHk6OmNhbkRyYXcoKQpAQCAtNTI3LDIwICs1NTQsMjMg
QEAgYm9vbCBDQ1RocmVhZFByb3h5OjpjYW5EcmF3KCkKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2No
ZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkND
VGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCB0aGlzLCAw
KTsKLSAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAg
IG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRyZWVI
b3N0SW1wbC0+Y29udGV4dCgpLCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lKTsKKyAgICBBU1NFUlQo
aXNJbXBsVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFk
KTsKKyAgICBBU1NFUlQobV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVwZGF0
ZXMoKSk7CisgICAgQVNTRVJUKCFtX3RleHR1cmVVcGRhdGVUaW1lcik7CisKKyAgICBtX3RleHR1
cmVVcGRhdGVUaW1lciA9IENDVGhyZWFkUHJveHlUZXh0dXJlVXBkYXRlVGltZXI6OmNyZWF0ZSh0
aGlzKTsKKyAgICBtX3RleHR1cmVVcGRhdGVUaW1lci0+c3RhcnRPbmVTaG90KHRleHR1cmVVcGRh
dGVUaWNrUmF0ZSk7CisgICAgbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+dXBkYXRlQXRN
b3N0KHRleHR1cmVVcGRhdGVzUGVyVGljayk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2No
ZWR1bGVkQWN0aW9uQ29tbWl0KCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6
c2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgdGhpcywgMCk7Ci0gICAgQVNTRVJUKG1fY3VycmVudFRl
eHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKLSAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVV
cGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpKTsKKyAgICBBU1NFUlQobV90ZXh0
dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CisgICAgQVNTRVJUKCFtX3RleHR1cmVVcGRhdGVyT25J
bXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpKTsKICAgICBBU1NFUlQobV9jb21taXRDb21wbGV0
aW9uRXZlbnRPbkltcGxUaHJlYWQpOwogCi0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbklt
cGxUaHJlYWQuY2xlYXIoKTsKLQotCiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YmVnaW5Db21t
aXQoKTsKIAogICAgIG1fbGF5ZXJUcmVlSG9zdC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQobV9s
YXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CkBAIC03MzIsNiArNzYyLDcgQEAgdm9pZCBDQ1RocmVh
ZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50
KiBjb21wbGV0aW8KICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6bGF5ZXJUcmVlSG9z
dENsb3NlZE9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQo
KSk7CiAgICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhy
ZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAg
ICBtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CiAgICAgbV9sYXllclRyZWVI
b3N0SW1wbC5jbGVhcigpOwogICAgIG1faW5wdXRIYW5kbGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7
CiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKQEAgLTc0Niw3ICs3NzcsNyBA
QCB2b2lkIENDVGhyZWFkUHJveHk6OnNldEZ1bGxSb290TGF5ZXJEYW1hZ2VPbkltcGxUaHJlYWQo
KQogCiBzaXplX3QgQ0NUaHJlYWRQcm94eTo6bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZTsKKyAgICByZXR1cm4gdGV4
dHVyZVVwZGF0ZXNQZXJUaWNrOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29u
dGV4dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwgR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHRQdHIsIGJvb2wqIHJlY3JlYXRlU3VjY2VlZGVkLCBMYXllclJlbmRl
cmVyQ2FwYWJpbGl0aWVzKiBjYXBhYmlsaXRpZXMpCkBAIC03NjIsNCArNzkzLDEyIEBAIHZvaWQg
Q0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2
ZW50KiBjb21wbGV0aW9uLCBHCiAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiB9CiAKK3ZvaWQg
Q0NUaHJlYWRQcm94eTo6dGV4dHVyZVVwZGF0ZUNvbXBsZXRlT25JbXBsVGhyZWFkKCkKK3sKKyAg
ICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5
Ojp0ZXh0dXJlVXBkYXRlQ29tcGxldGVPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBtX3Rl
eHR1cmVVcGRhdGVUaW1lci5jbGVhcigpOworICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5k
aWRVcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDM1ZmUxZGJhZmY0MGI0YTZlMmRmOWZj
ZDg0ZDIyZjkyNTYwYzliMzcuLmQzMjVmZDVhN2Q4M2NjZmM1NzM0OWQ3OTZmMWVkYThlODZjYzUx
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgQ0NT
Y29wZWRUaHJlYWRQcm94eTsKIGNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFzcyBDQ1RocmVh
ZDsKIGNsYXNzIENDVGhyZWFkUHJveHlDb250ZXh0UmVjcmVhdGlvblRpbWVyOworY2xhc3MgQ0NU
aHJlYWRQcm94eVRleHR1cmVVcGRhdGVUaW1lcjsKIAogY2xhc3MgQ0NUaHJlYWRQcm94eSA6IHB1
YmxpYyBDQ1Byb3h5LCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50LCBDQ1NjaGVkdWxlckNsaWVu
dCB7CiBwdWJsaWM6CkBAIC04MSw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICAvLyBDQ1NjaGVkdWxl
ckNsaWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3KCk7CiAgICAg
dmlydHVhbCBib29sIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGRvdWJsZSBtYXhSZXNvdXJjZVVwZGF0ZVRpbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpOwogICAgIHZpcnR1YWwgQ0NTY2hlZHVsZWRBY3Rp
b25EcmF3QW5kU3dhcFJlc3VsdCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcElmUG9zc2libGUo
KTsKICAgICB2aXJ0dWFsIENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgc2NoZWR1
bGVkQWN0aW9uRHJhd0FuZFN3YXBGb3JjZWQoKTsKQEAgLTkxLDYgKzkzLDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCopOwog
ICAgIGZyaWVuZCBjbGFzcyBDQ1RocmVhZFByb3h5Q29udGV4dFJlY3JlYXRpb25UaW1lcjsKKyAg
ICBmcmllbmQgY2xhc3MgQ0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVUaW1lcjsKIAogICAgIC8v
IFNldCBvbiBpbXBsIHRocmVhZCwgcmVhZCBvbiBtYWluIHRocmVhZC4KICAgICBzdHJ1Y3QgQmVn
aW5GcmFtZUFuZENvbW1pdFN0YXRlIHsKQEAgLTEyOCw2ICsxMzEsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2V0RnVsbFJvb3RMYXllckRhbWFnZU9uSW1wbFRocmVhZCgpOwogICAgIHZvaWQgcmVj
cmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgR3JhcGhpY3NDb250
ZXh0M0QqLCBib29sKiByZWNyZWF0ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cyopOwogICAgIENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0
aW9uRHJhd0FuZFN3YXBJbnRlcm5hbChib29sIGZvcmNlZERyYXcpOworICAgIHZvaWQgdGV4dHVy
ZVVwZGF0ZUNvbXBsZXRlT25JbXBsVGhyZWFkKCk7CiAKICAgICAvLyBBY2Nlc3NlZCBvbiBtYWlu
IHRocmVhZCBvbmx5LgogICAgIGJvb2wgbV9hbmltYXRlUmVxdWVzdGVkOwpAQCAtMTQ5LDYgKzE1
Myw5IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8Q0NTY29wZWRUaHJlYWRQcm94eT4gbV9tYWlu
VGhyZWFkUHJveHk7CiAKKyAgICBPd25QdHI8Q0NUZXh0dXJlVXBkYXRlcj4gbV90ZXh0dXJlVXBk
YXRlck9uSW1wbFRocmVhZDsKKyAgICBPd25QdHI8Q0NUaHJlYWRQcm94eVRleHR1cmVVcGRhdGVU
aW1lcj4gbV90ZXh0dXJlVXBkYXRlVGltZXI7CisKICAgICAvLyBIb2xkcyBvbiB0byB0aGUgR3Jh
cGhpY3NDb250ZXh0M0Qgd2UgbWlnaHQgdXNlIGZvciBjb21wb3NpdGluZyBpbiBiZXR3ZWVuIGlu
aXRpYWxpemVDb250ZXh0KCkKICAgICAvLyBhbmQgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKSBj
YWxscy4KICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dEJlZm9yZUluaXRp
YWxpemF0aW9uT25JbXBsVGhyZWFkOwpAQCAtMTY0LDcgKzE3MSw2IEBAIHByaXZhdGU6CiAKICAg
ICAvLyBTZXQgd2hlbiB0aGUgbWFpbiB0aHJlYWQgaXMgd2FpdGluZyBvbiBhIGNvbW1pdCB0byBj
b21wbGV0ZS4KICAgICBDQ0NvbXBsZXRpb25FdmVudCogbV9jb21taXRDb21wbGV0aW9uRXZlbnRP
bkltcGxUaHJlYWQ7Ci0gICAgT3duUHRyPENDVGV4dHVyZVVwZGF0ZXI+IG1fY3VycmVudFRleHR1
cmVVcGRhdGVyT25JbXBsVGhyZWFkOwogCiAgICAgLy8gU2V0IHdoZW4gdGhlIG5leHQgZHJhdyBz
aG91bGQgcG9zdCBkaWRDb21taXRBbmREcmF3RnJhbWUgdG8gdGhlIG1haW4gdGhyZWFkLgogICAg
IGJvb2wgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWVPbkltcGxUaHJlYWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rp
bWVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGltZVNvdXJjZS5oCmluZGV4IGRjY2I0NzBhNjM4M2UzMDRkYjExNmE1YjlkZjkxZGU1NjA2
OGUwODUuLmMzNjRkOTJiZDAyOGEyMmZmYThhMmE4N2ZjMTkzMGI1OGRlZjhlNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZVNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGltZVNvdXJjZS5oCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0Q2xpZW50KENDVGltZVNvdXJjZUNsaWVudCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0QWN0aXZlKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgYWN0aXZlKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgZG91YmxlIG5leHRUaWNrVGltZSgpIGNvbnN0ID0gMDsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRl
c3QuY3BwCmluZGV4IGI2YjBjNjA2MmZlYTlmYTEyOTE0ZTVhMjBlMTVjYTZkNTdkNjIxODUuLjEy
ODhlNjdjYjQyM2Y1OWYzMTY1MjE5OTdhZTcxN2MwOWM3NjMxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMTQx
Nyw5ICsxNDE3LDkgQEAgcHVibGljOgogICAgICAgICBtX2lkbGVQYWludENvbnRlbnRzQ291bnQr
KzsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKKyAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhDQ1RleHR1cmVVcGRhdGVy
JiB1cGRhdGVyKQogICAgIHsKLSAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7CisgICAgICAgIENvbnRlbnRMYXll
ckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgICAgICBt
X3VwZGF0ZUNvdW50Kys7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKaW5kZXggZTRh
NWQ3Yzk1OTQ0Yjk0ZDY1M2MxNDExOTU2YjljMjljY2VkNDZiZi4uZWNmNDViMzM0ZjQyMzEyOTFk
OGIyODI0OTYwMWJlZDE2NWQzMzRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcApAQCAtMTk4
LDYgKzE5OCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29tbWl0
QWZ0ZXJGYWlsZWREcmF3QWxsb3dzRHJhd0luU2FtZUZyYW1lCiAKICAgICAvLyBGaW5pc2ggdGhl
IGNvbW1pdC4KICAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBzdGF0ZS5zZXRD
YW5VcGRhdGVNb3JlUmVzb3VyY2VzKHRydWUpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4
dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CiAgICAgc3RhdGUuYmVnaW5V
cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwpAQCAtMjQ4LDYgKzI0OSw3IEBAIFRF
U1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29tbWl0QWZ0ZXJGYWlsZWRBbmRT
dWNjZXNzZnVsRHJhd0RvZXNOb3RBCiAKICAgICAvLyBGaW5pc2ggdGhlIGNvbW1pdC4KICAgICBz
dGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBzdGF0ZS5zZXRDYW5VcGRhdGVNb3JlUmVz
b3VyY2VzKHRydWUpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKICAg
ICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lO
X1VQREFURV9NT1JFX1JFU09VUkNFUyk7CiAgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3Vy
Y2VzQ29tcGxldGUoZmFsc2UpOwpAQCAtNDYxLDYgKzQ2Myw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykK
ICAgICBzdGF0ZS5zZXRDb21taXRTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlU
X1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUyk7CiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoZmFs
c2UpOwogICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKKyAg
ICBzdGF0ZS5zZXRDYW5VcGRhdGVNb3JlUmVzb3VyY2VzKHRydWUpOwogICAgIHN0YXRlLnNldFZp
c2libGUodHJ1ZSk7CiAKICAgICAvLyBWZXJpZnkgd2UgYmVnaW4gdXBkYXRlLCBib3RoIGZvciB2
c3luYyBhbmQgbm90IHZzeW5jLgpAQCAtNDg5LDYgKzQ5Miw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19Ud29Sb3VuZHNPZlVwZGF0ZXMp
CiAgICAgc3RhdGUuc2V0Q29tbWl0U3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1J
VF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMpOwogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KGZh
bHNlKTsKICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7Cisg
ICAgc3RhdGUuc2V0Q2FuVXBkYXRlTW9yZVJlc291cmNlcyh0cnVlKTsKICAgICBzdGF0ZS5zZXRW
aXNpYmxlKHRydWUpOwogCiAgICAgLy8gVmVyaWZ5IHRoZSB1cGRhdGUgYmVnaW5zLCBib3RoIGZv
ciB2c3luYyBhbmQgbm90IHZzeW5jLgpAQCAtNTQ1LDYgKzU0OSw3IEBAIFRFU1QoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19XaXRoUmVkcmF3X09uZVJvdW5kT2ZVcGRh
dGVzKQogICAgIHN0YXRlLnNldENvbW1pdFN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpD
T01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTKTsKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJh
dyh0cnVlKTsKICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7
CisgICAgc3RhdGUuc2V0Q2FuVXBkYXRlTW9yZVJlc291cmNlcyh0cnVlKTsKICAgICBzdGF0ZS5z
ZXRWaXNpYmxlKHRydWUpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsK
IApAQCAtNjA0LDYgKzYwOSw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBU
ZXN0U2V0TmVlZHNDb21taXRJc05vdExvc3QpCiAKICAgICAvLyBMZXQgdGhlIGZyYW1lIGZpbmlz
aC4KICAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBzdGF0ZS5zZXRDYW5VcGRh
dGVNb3JlUmVzb3VyY2VzKHRydWUpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUo
KSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5f
VVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLnVw
ZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01P
UkVfUkVTT1VSQ0VTKTsKQEAgLTY0Niw2ICs2NTIsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZSkKIAogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0
aGUgZnJhbWUgZmluaXNoZWQuCiAgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAg
c3RhdGUuc2V0Q2FuVXBkYXRlTW9yZVJlc291cmNlcyh0cnVlKTsKICAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0
YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigp
KTsKIApAQCAtNjk3LDYgKzcwNCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0RnVsbEN5Y2xlV2l0aENvbW1pdFJlcXVlc3RJbmJldHdlZW4pCiAKICAgICAvLyBUZWxs
IHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZpbmlzaGVkLgogICAgIHN0YXRlLmJlZ2luRnJhbWVD
b21wbGV0ZSgpOworICAgIHN0YXRlLnNldENhblVwZGF0ZU1vcmVSZXNvdXJjZXModHJ1ZSk7CiAg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJ
TkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0
YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAgLTc1NCw2ICs3NjIsNyBAQCBURVNUKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lVGVzdCwgVGVzdEdvZXNJbnZpc2libGVNaWRDb21taXQpCiAKICAgICAvLyBU
ZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZpbmlzaGVkCiAgICAgc3RhdGUuYmVnaW5GcmFt
ZUNvbXBsZXRlKCk7CisgICAgc3RhdGUuc2V0Q2FuVXBkYXRlTW9yZVJlc291cmNlcyh0cnVlKTsK
ICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERB
VElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywg
c3RhdGUubmV4dEFjdGlvbigpKTsKIApAQCAtODYxLDYgKzg3MCw3IEBAIFRFU1QoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Q29udGV4dExvc3RXaGlsZUNvbW1pdEluUHJvZ3Jlc3Mp
CiAKICAgICAvLyBGaW5pc2ggdGhlIGZyYW1lLCB1cGRhdGUgcmVzb3VyY2VzLCBhbmQgY29tbWl0
LgogICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOworICAgIHN0YXRlLnNldENhblVwZGF0
ZU1vcmVSZXNvdXJjZXModHJ1ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFj
dGlvbigpKTsKQEAgLTkwNSw2ICs5MTUsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
VGVzdCwgVGVzdENvbnRleHRMb3N0V2hpbGVDb21taXRJblByb2dyZXNzQW5kQW5vdGhlcgogCiAg
ICAgLy8gRmluaXNoIHRoZSBmcmFtZSwgdXBkYXRlIHJlc291cmNlcywgYW5kIGNvbW1pdC4KICAg
ICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBzdGF0ZS5zZXRDYW5VcGRhdGVNb3Jl
UmVzb3VyY2VzKHRydWUpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsK
ICAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24o
KSk7CkBAIC05NzEsNiArOTgyLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3RCZWdpbkZyYW1lV2hlbkNvbW1pdEluUHJvZ3Jlc3MpCiAgICAgc3RhdGUuc2V0TmVlZHNG
b3JjZWRDb21taXQodHJ1ZSk7CiAKICAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAg
ICBzdGF0ZS5zZXRDYW5VcGRhdGVNb3JlUmVzb3VyY2VzKHRydWUpOwogICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNF
Uywgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0
QWN0aW9uKCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CkBAIC05OTMsNCArMTAwNSw1MiBAQCBURVNUKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEJlZ2luRnJhbWVXaGVuQ29udGV4dExvc3Qp
CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJB
TUUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiB9CiAKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmVUZXN0LCBUZXN0Q2FuVXBkYXRlTW9yZVJlc291cmNlcykKK3sKKyAgICBTdGF0ZU1hY2hpbmUg
c3RhdGU7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXROZWVkc1Jl
ZHJhdyh0cnVlKTsKKworICAgIC8vIFN0YXJ0IGNsZWFuIGFuZCBzZXQgY29tbWl0LgorICAgIHN0
YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAg
Ly8gQmVnaW4gdGhlIGZyYW1lLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21t
aXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUubmVlZHNDb21taXQoKSk7CisgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4
dEFjdGlvbigpKTsKKworICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgZnJhbWUgZmluaXNo
ZWQuCisgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgc3RhdGUuc2V0Q2FuVXBk
YXRlTW9yZVJlc291cmNlcyh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRl
KCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lO
X1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIFRl
bGwgdGhlIHNjaGVkdWxlciB0aGUgdXBkYXRlIGJlZ2FuIGFuZCBmaW5pc2hlZC4KKyAgICBzdGF0
ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFU
RV9NT1JFX1JFU09VUkNFUyk7CisgICAgc3RhdGUuc2V0Q2FuVXBkYXRlTW9yZVJlc291cmNlcyhm
YWxzZSk7CisgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUodHJ1ZSk7
CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBE
QVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwor
CisgICAgLy8gQXQgdnN5bmMsIGRyYXcuCisgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOworICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVdfSUZfUE9TU0lC
TEUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXX0lGX1BPU1NJQkxFKTsKKyAgICBzdGF0ZS5kaWRE
cmF3SWZQb3NzaWJsZUNvbXBsZXRlZCh0cnVlKTsKKyAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7
CisKKyAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhhdCB3ZSBjYW4gdXBkYXRlIG1vcmUgcmVz
b3VyY2VzLgorICAgIHN0YXRlLnNldENhblVwZGF0ZU1vcmVSZXNvdXJjZXModHJ1ZSk7CisgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdf
UkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHNlY29uZCB1
cGRhdGUgYmVnYW4gYW5kIGZpbmlzaGVkCisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOworICAg
IHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01N
SVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKK30KKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCmluZGV4
IGM4Njc3ZjExOGFlMGM2MDhmOWQ3MTc0MzllNTc1ZGRhYWYyODUwZjcuLjlmN2ZmMTNmOTA1NGZk
MTI3NjZmMWY3MjI2YjliNDBjNDhkMDQyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKQEAgLTQ4LDEwICs0OCwxMiBAQCBwdWJsaWM6
CiAgICAgICAgIG1fZHJhd1dpbGxIYXBwZW4gPSB0cnVlOwogICAgICAgICBtX3N3YXBXaWxsSGFw
cGVuSWZEcmF3SGFwcGVucyA9IHRydWU7CiAgICAgICAgIG1fbnVtRHJhd3MgPSAwOworICAgICAg
ICBtX21heFJlc291cmNlVXBkYXRlVGltZSA9IDA7CiAgICAgfQogCiAgICAgdm9pZCBzZXRIYXNN
b3JlUmVzb3VyY2VVcGRhdGVzKGJvb2wgYikgeyBtX2hhc01vcmVSZXNvdXJjZVVwZGF0ZXMgPSBi
OyB9CiAgICAgdm9pZCBzZXRDYW5EcmF3KGJvb2wgYikgeyBtX2NhbkRyYXcgPSBiOyB9CisgICAg
dm9pZCBzZXRNYXhSZXNvdXJjZVVwZGF0ZVRpbWUoZG91YmxlIHQpIHsgbV9tYXhSZXNvdXJjZVVw
ZGF0ZVRpbWUgPSB0OyB9CiAKICAgICBpbnQgbnVtRHJhd3MoKSBjb25zdCB7IHJldHVybiBtX251
bURyYXdzOyB9CiAgICAgaW50IG51bUFjdGlvbnMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQ+KG1fYWN0aW9ucy5zaXplKCkpOyB9CkBAIC02Nyw2ICs2OSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3KCkgeyByZXR1cm4gbV9jYW5EcmF3OyB9CiAgICAgdmly
dHVhbCBib29sIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVybiBtX2hhc01v
cmVSZXNvdXJjZVVwZGF0ZXM7IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSBtYXhSZXNvdXJjZVVwZGF0
ZVRpbWUoKSBjb25zdCB7IHJldHVybiBtX21heFJlc291cmNlVXBkYXRlVGltZTsgfQogICAgIHZp
cnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCkgeyBtX2FjdGlvbnMucHVzaF9i
YWNrKCJzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lIik7IH0KICAgICB2aXJ0dWFsIENDU2NoZWR1
bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJZlBv
c3NpYmxlKCkKICAgICB7CkBAIC05Myw2ICs5Niw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1f
Y2FuRHJhdzsKICAgICBib29sIG1fZHJhd1dpbGxIYXBwZW47CiAgICAgYm9vbCBtX3N3YXBXaWxs
SGFwcGVuSWZEcmF3SGFwcGVuczsKKyAgICBkb3VibGUgbV9tYXhSZXNvdXJjZVVwZGF0ZVRpbWU7
CiAgICAgaW50IG1fbnVtRHJhd3M7CiAgICAgc3RkOjp2ZWN0b3I8Y29uc3QgY2hhcio+IG1fYWN0
aW9uczsKIH07CkBAIC0xMTIsMTIgKzExNiwxMCBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVx
dWVzdENvbW1pdCkKICAgICBjbGllbnQucmVzZXQoKTsKIAogICAgIC8vIFNpbmNlLCBoYXNNb3Jl
UmVzb3VyY2VVcGRhdGVzIGlzIHNldCB0byBmYWxzZSwKLSAgICAvLyBiZWdpbkZyYW1lQ29tcGxl
dGUgc2hvdWxkIHVwZGF0ZU1vcmVSZXNvdXJjZXMsIHRoZW4KLSAgICAvLyBjb21taXQKKyAgICAv
LyBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIGp1c3QgY29tbWl0CiAgICAgc2NoZWR1bGVyLT5i
ZWdpbkZyYW1lQ29tcGxldGUoKTsKLSAgICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm51bUFjdGlvbnMo
KSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2Vz
IiwgY2xpZW50LmFjdGlvbigwKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25D
b21taXQiLCBjbGllbnQuYWN0aW9uKDEpKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFj
dGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGll
bnQuYWN0aW9uKDApKTsKICAgICBFWFBFQ1RfVFJVRSh0aW1lU291cmNlLT5hY3RpdmUoKSk7CiAg
ICAgY2xpZW50LnJlc2V0KCk7CiAKQEAgLTE0OSwxMiArMTUxLDEwIEBAIFRFU1QoQ0NTY2hlZHVs
ZXJUZXN0LCBSZXF1ZXN0Q29tbWl0QWZ0ZXJCZWdpbkZyYW1lKQogICAgIHNjaGVkdWxlci0+c2V0
TmVlZHNDb21taXQoKTsKIAogICAgIC8vIFNpbmNlLCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzIGlz
IHNldCB0byBmYWxzZSwgYW5kIGFub3RoZXIgY29tbWl0IGlzCi0gICAgLy8gbmVlZGVkLCBiZWdp
bkZyYW1lQ29tcGxldGUgc2hvdWxkIHVwZGF0ZU1vcmVSZXNvdXJjZXMsIHRoZW4gY29tbWl0LCB0
aGVuCi0gICAgLy8gYmVnaW4gYW5vdGhlciBmcmFtZS4KKyAgICAvLyBuZWVkZWQsIGJlZ2luRnJh
bWVDb21wbGV0ZSBzaG91bGQgY29tbWl0LCB0aGVuIGJlZ2luIGFub3RoZXIgZnJhbWUuCiAgICAg
c2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29tcGxldGUoKTsKLSAgICBFWFBFQ1RfRVEoMiwgY2xpZW50
Lm51bUFjdGlvbnMoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVN
b3JlUmVzb3VyY2VzIiwgY2xpZW50LmFjdGlvbigwKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hl
ZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9uKDEpKTsKKyAgICBFWFBFQ1RfRVEoMSwg
Y2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25D
b21taXQiLCBjbGllbnQuYWN0aW9uKDApKTsKICAgICBjbGllbnQucmVzZXQoKTsKIAogICAgIC8v
IFRpY2sgc2hvdWxkIGRyYXcgYnV0IHRoZW4gYmVnaW4gYW5vdGhlciBmcmFtZS4KQEAgLTQzMCw0
ICs0MzAsNjggQEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIE5vQmVnaW5GcmFtZVdoZW5Td2FwRmFp
bHNEdXJpbmdGb3JjZWRDb21taXQpCiAgICAgRVhQRUNUX0VRKDAsIGNvbnRyb2xsZXJQdHItPm51
bUZyYW1lc1BlbmRpbmcoKSk7CiB9CiAKK1RFU1QoQ0NTY2hlZHVsZXJUZXN0LCBVcGRhdGVNb3Jl
UmVzb3VyY2VzKQoreworICAgIEZha2VDQ1NjaGVkdWxlckNsaWVudCBjbGllbnQ7CisgICAgUmVm
UHRyPEZha2VDQ1RpbWVTb3VyY2U+IHRpbWVTb3VyY2UgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlt
ZVNvdXJjZSgpKTsKKyAgICBPd25QdHI8Q0NTY2hlZHVsZXI+IHNjaGVkdWxlciA9IENDU2NoZWR1
bGVyOjpjcmVhdGUoJmNsaWVudCwgYWRvcHRQdHIobmV3IENDRnJhbWVSYXRlQ29udHJvbGxlcih0
aW1lU291cmNlKSkpOworICAgIHNjaGVkdWxlci0+c2V0VmlzaWJsZSh0cnVlKTsKKworICAgIC8v
IFNldE5lZWRzQ29tbWl0IHNob3VsZCBiZWdpbiB0aGUgZnJhbWUuCisgICAgc2NoZWR1bGVyLT5z
ZXROZWVkc0NvbW1pdCgpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsK
KyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUiLCBjbGllbnQuYWN0
aW9uKDApKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIC8vIFNpbmNlLCBoYXNNb3JlUmVz
b3VyY2VVcGRhdGVzIGlzIHNldCB0byB0cnVlLCBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkCisg
ICAgLy8gdXBkYXRlTW9yZVJlc291cmNlcy4KKyAgICBjbGllbnQuc2V0SGFzTW9yZVJlc291cmNl
VXBkYXRlcyh0cnVlKTsKKyAgICBzY2hlZHVsZXItPmJlZ2luRnJhbWVDb21wbGV0ZSgpOworICAg
IEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNj
aGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAg
ICBjbGllbnQucmVzZXQoKTsKKworICAgIGNsaWVudC5zZXRIYXNNb3JlUmVzb3VyY2VVcGRhdGVz
KHRydWUpOworICAgIHNjaGVkdWxlci0+ZGlkVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKCk7
CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJF
USgic2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIGNsaWVudC5hY3Rpb24oMCkp
OworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8gU2luY2UsIFNldE5lZWRSZWRyYXcgaXMg
c2V0IHRvIHRydWUsIHJlc291cmNlIHVwZGF0ZXMgc2hvdWxkIGJlCisgICAgLy8gYXZvaWRlZCBh
cyB3ZSBnZXQgY2xvc2UgdG8gdGhlIG5leHQgdGljayB0aW1lLgorICAgIHNjaGVkdWxlci0+c2V0
TmVlZHNSZWRyYXcoKTsKKyAgICBFWFBFQ1RfVFJVRShzY2hlZHVsZXItPnJlZHJhd1BlbmRpbmco
KSk7CisgICAgRVhQRUNUX1RSVUUodGltZVNvdXJjZS0+YWN0aXZlKCkpOworICAgIEVYUEVDVF9F
USgwLCBjbGllbnQubnVtRHJhd3MoKSk7CisKKyAgICAvLyBTaW5jZSwgbWF4UmVzb3VyY2VVcGRh
dGVUaW1lIGlzIDUgc2Vjb25kcyBhbmQgbmV4dFRpY2tUaW1lIGlzIDEKKyAgICAvLyBzZWNvbmQg
YXdheSwgZGlkVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlIHNob3VsZCBub3QgYmVnaW4gYW5v
dGhlcgorICAgIC8vIHVwZGF0ZS4KKyAgICBjbGllbnQuc2V0SGFzTW9yZVJlc291cmNlVXBkYXRl
cyh0cnVlKTsKKyAgICBjbGllbnQuc2V0TWF4UmVzb3VyY2VVcGRhdGVUaW1lKDUpOworICAgIHRp
bWVTb3VyY2UtPnNldE5leHRUaWNrVGltZShtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAr
IDEpOworICAgIHNjaGVkdWxlci0+ZGlkVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKCk7Cisg
ICAgRVhQRUNUX0VRKDAsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIGNsaWVudC5yZXNldCgp
OworCisgICAgLy8gU2luY2UsIG1heFJlc291cmNlVXBkYXRlVGltZSBpcyA1IHNlY29uZHMgYW5k
IG5leHRUaWNrVGltZSBpcyAxMAorICAgIC8vIHNlY29uZHMgYXdheSwgZGlkVXBkYXRlTW9yZVJl
c291cmNlc0NvbXBsZXRlIHNob3VsZCBiZWdpbiBhbm90aGVyCisgICAgLy8gdXBkYXRlLgorICAg
IGNsaWVudC5zZXRIYXNNb3JlUmVzb3VyY2VVcGRhdGVzKHRydWUpOworICAgIGNsaWVudC5zZXRN
YXhSZXNvdXJjZVVwZGF0ZVRpbWUoNSk7CisgICAgdGltZVNvdXJjZS0+c2V0TmV4dFRpY2tUaW1l
KG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpICsgMTApOworICAgIHNjaGVkdWxlci0+ZGlk
VXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5u
dW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9y
ZVJlc291cmNlcyIsIGNsaWVudC5hY3Rpb24oMCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisg
ICAgLy8gU2luY2UsIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMgaXMgc2V0IHRvIGZhbHNlLAorICAg
IC8vIGRpZFVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSBzaG91bGQgY29tbWl0LgorICAgIGNs
aWVudC5zZXRIYXNNb3JlUmVzb3VyY2VVcGRhdGVzKGZhbHNlKTsKKyAgICBzY2hlZHVsZXItPmRp
ZFVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSgpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQu
bnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIs
IGNsaWVudC5hY3Rpb24oMCkpOworICAgIGNsaWVudC5yZXNldCgpOworfQorCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdENvbW1vbi5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3RDb21tb24uaApp
bmRleCAwYzEwNTU4OGIxNDJmNzYxOTM3MjJlNjI4OGUxOTg5NjUzYTk0OTg0Li4xN2U5YWRiMWIz
ZTFkNzlkYjA0NzU1NWI2Zjc0MDU1MTA1ZTczOGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0Q29tbW9uLmgKQEAgLTg2LDYgKzg2LDcg
QEAgY2xhc3MgRmFrZUNDVGltZVNvdXJjZSA6IHB1YmxpYyBXZWJDb3JlOjpDQ1RpbWVTb3VyY2Ug
ewogcHVibGljOgogICAgIEZha2VDQ1RpbWVTb3VyY2UoKQogICAgICAgICA6IG1fYWN0aXZlKGZh
bHNlKQorICAgICAgICAsIG1fbmV4dFRpY2tUaW1lKDApCiAgICAgICAgICwgbV9jbGllbnQoMCkg
eyB9CiAKICAgICB2aXJ0dWFsIH5GYWtlQ0NUaW1lU291cmNlKCkgeyB9CkBAIC05Myw2ICs5NCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFdlYkNvcmU6OkNDVGltZVNv
dXJjZUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldEFjdGl2ZShib29sIGIpIHsgbV9hY3RpdmUgPSBiOyB9CiAgICAgdmlydHVhbCBib29s
IGFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlOyB9CisgICAgdmlydHVhbCBkb3VibGUg
bmV4dFRpY2tUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0VGlja1RpbWU7IH0KIAogICAgIHZv
aWQgdGljaygpCiAgICAgewpAQCAtMTAxLDggKzEwMywxMSBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBtX2NsaWVudC0+b25UaW1lclRpY2soKTsKICAgICB9CiAKKyAgICB2b2lkIHNldE5leHRUaWNr
VGltZShkb3VibGUgbmV4dFRpY2tUaW1lKSB7IG1fbmV4dFRpY2tUaW1lID0gbmV4dFRpY2tUaW1l
OyB9CisKIHByb3RlY3RlZDoKICAgICBib29sIG1fYWN0aXZlOworICAgIGRvdWJsZSBtX25leHRU
aWNrVGltZTsKICAgICBXZWJDb3JlOjpDQ1RpbWVTb3VyY2VDbGllbnQqIG1fY2xpZW50OwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJU
ZXN0Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVy
VGVzdENvbW1vbi5jcHAKaW5kZXggNjAzZDQyMTYwMDA2Y2JjYzBjMGZkNjg1ZGU0OGU1OTllNjM4
YTE0Yy4uYzQ0NWJhNmYxZWExNTk0OGFlNGM0YzVlYTUzNDY4NTM5MDBmYjVjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21t
b24uY3BwCkBAIC0xMjYsOCArMTI2LDggQEAgRmFrZVRpbGVkTGF5ZXJXaXRoU2NhbGVkQm91bmRz
OjpGYWtlVGlsZWRMYXllcldpdGhTY2FsZWRCb3VuZHMoVGV4dHVyZU1hbmFnZXIqIHQKIHsKIH0K
IAotRmFrZUNDVGV4dHVyZVVwZGF0ZXI6OkZha2VDQ1RleHR1cmVVcGRhdGVyKCkKLSAgICA6IEND
VGV4dHVyZVVwZGF0ZXIoJm1fdGV4dHVyZUFsbG9jYXRvciwgJm1fdGV4dHVyZUNvcGllcikKK0Zh
a2VDQ1RleHR1cmVVcGRhdGVyOjpGYWtlQ0NUZXh0dXJlVXBkYXRlcihXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCkKKyAgICA6IENDVGV4dHVyZVVwZGF0ZXIoY29udGV4dCwgJm1f
dGV4dHVyZUFsbG9jYXRvciwgJm1fdGV4dHVyZUNvcGllcikKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaAppbmRl
eCBlZmI4YWU4NWNhYzZlZWUxZDU3YjViMDhjZjRiOWNjNjBjNGIxZDZjLi5kNzMzMzdiZjYzYjg4
NjI0OWU1NjdhNmRjZmE4ZGVlZGQ4NTk2YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaApAQCAtMjUsNiArMjUsNyBA
QAogI2lmbmRlZiBDQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uX2gKICNkZWZpbmUgQ0NUaWxlZExheWVy
VGVzdENvbW1vbl9oCiAKKyNpbmNsdWRlICJGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNs
dWRlICJJbnRTaXplLmgiCkBAIC0xNjAsNyArMTYxLDcgQEAgcHVibGljOgogCiBjbGFzcyBGYWtl
Q0NUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyIHsKIHB1
YmxpYzoKLSAgICBleHBsaWNpdCBGYWtlQ0NUZXh0dXJlVXBkYXRlcigpOworICAgIGV4cGxpY2l0
IEZha2VDQ1RleHR1cmVVcGRhdGVyKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEKik7CiAKICAg
ICBGYWtlVGV4dHVyZUFsbG9jYXRvciYgdGV4dHVyZUFsbG9jYXRvcigpIHsgcmV0dXJuIG1fdGV4
dHVyZUFsbG9jYXRvcjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCAyNjQ3NWNlMzY5ZTVl
MjMzNzIwMjEyMWM4NjdiMDJjNDJkMWI2Mzk4Li5lMjFmZGM3YmZhMGU1NWNkOTBhZDM4ZDZlZmZm
MjdiOWZmNmZhMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Nh
bnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBw
cm90ZWN0ZWQ6CiAKICAgICAgICAgTW9ja1RleHR1cmVBbGxvY2F0b3IgYWxsb2NhdG9yTW9jazsK
ICAgICAgICAgTW9ja1RleHR1cmVDb3BpZXIgY29waWVyTW9jazsKLSAgICAgICAgQ0NUZXh0dXJl
VXBkYXRlciB1cGRhdGVyKCZhbGxvY2F0b3JNb2NrLCAmY29waWVyTW9jayk7CisgICAgICAgIEND
VGV4dHVyZVVwZGF0ZXIgdXBkYXRlcihpbXBsQ29udGV4dC5nZXQoKSwgJmFsbG9jYXRvck1vY2ss
ICZjb3BpZXJNb2NrKTsKIAogICAgICAgICBjb25zdCBJbnRTaXplIHNpemUoMzAwLCAxNTApOwog
CkBAIC0xNTMsNyArMTUzLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgT3duUHRyPENDTGF5
ZXJJbXBsPiBsYXllckltcGwgPSBjYW52YXMtPmNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAgICAgICAg
ICAgICBFWFBFQ1RfRVEoMHUsIHN0YXRpY19jYXN0PENDVGV4dHVyZUxheWVySW1wbCo+KGxheWVy
SW1wbC5nZXQoKSktPnRleHR1cmVJZCgpKTsKIAotICAgICAgICAgICAgY2FudmFzLT51cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKGltcGxDb250ZXh0LmdldCgpLCB1cGRhdGVyKTsKKyAgICAgICAg
ICAgIGNhbnZhcy0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKICAgICAgICAg
ICAgIGNhbnZhcy0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgICAg
ICAgICBpZiAodGhyZWFkZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCAxNTBkNjVkNTk4ZjgzMWI0ZjNh
YzgxZDBiZDg3ZTE3ZDY4NTQ0NjJhLi4wNWE5Mzc2ZDRlZmRlODFlYzNiNGY3NTU4YTA5NjhiZThk
ODFhNDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGls
ZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTcyLDEzICs3MiwxMyBAQCBURVNUKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRo
cmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJ
bXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSkpOwogCi0gICAgRmFrZUND
VGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKKyAgICBGYWtlQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVy
KDApOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRh
dGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRT
aXplKDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwg
MTAwLCAyMDApKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAw
LCAyMDApLCAwKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRh
dGVyKTsKKyAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKICAg
ICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ug
c2hvdWxkIGhhdmUgYm90aCB0aWxlcyBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtOTEsNyArOTEsNyBA
QCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIGxheWVy
LT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgLy8gLi4uLmJ1
dCB0aGVuIG9ubHkgdXBkYXRlIG9uZSBvZiB0aGVtLgogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRh
dGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOwotICAgIGxheWVyLT51cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5n
ZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgb25seSBoYXZlIHRoZSBmaXJzdCB0aWxlIHNpbmNl
IHRoZSBvdGhlciB0aWxlIHdhcyBpbnZhbGlkYXRlZCBidXQgbm90IHBhaW50ZWQuCkBAIC0xMDcs
NyArMTA3LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoT2NjbHVkZWREaXJ0
eVRpbGVzKQogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0
UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSkpOwogICAgIFRlc3RDQ09jY2x1c2lvblRy
YWNrZXIgb2NjbHVkZWQ7CiAKLSAgICBGYWtlQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOworICAg
IEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoMCk7CiAKICAgICAvLyBUaGUgdGlsZSBzaXpl
IGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxl
cy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKQEAgLTExNSw3ICsx
MTUsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hPY2NsdWRlZERpcnR5VGls
ZXMpCiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7
CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgJm9j
Y2x1ZGVkKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVy
KTsKKyAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKICAgICBs
YXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgRVhQRUNUX05F
QVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgMCwgMSk7
CkBAIC0xMzMsNyArMTMzLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoT2Nj
bHVkZWREaXJ0eVRpbGVzKQogICAgIC8vIC4uLi5idXQgdGhlIGFyZWEgaXMgb2NjbHVkZWQuCiAg
ICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMCwgMCwgNTAsIDUwKSk7CiAgICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgJm9jY2x1ZGVkKTsK
LSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBs
YXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKICAgICBsYXllci0+cHVz
aFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVk
ZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgMCwgMSk7CkBAIC0xNTIs
MTMgKzE1MiwxMyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEZWxldGVkVGls
ZXMpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRy
PEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVk
TGF5ZXJJbXBsKDApKSk7CiAKLSAgICBGYWtlQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOworICAg
IEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoMCk7CiAKICAgICAvLyBUaGUgdGlsZSBzaXpl
IGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxl
cy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllci0+
aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwotICAgIGxheWVyLT51cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxh
eWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgaGF2ZSBib3RoIHRpbGVzIG9uIHRo
ZSBpbXBsIHNpZGUuCkBAIC0xNzgsNyArMTc4LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBwdXNoRGVsZXRlZFRpbGVzKQogCiAgICAgLy8gVGhpcyBzaG91bGQgcmVjcmVhdGUgYW5k
IHVwZGF0ZSB0aGUgZGVsZXRlZCB0ZXh0dXJlcy4KICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
KEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyh1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0
KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgaGF2ZSB0aGUgZmlyc3QgdGlsZSBzaW5jZSB0
aGUgb3RoZXIgdGlsZSB3YXMgaW52YWxpZGF0ZWQgYnV0IG5vdCBwYWludGVkLgpAQCAtMTkzLDcg
KzE5Myw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVz
KQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxG
YWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExh
eWVySW1wbCgwKSkpOwogCi0gICAgRmFrZUNDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKKyAgICBG
YWtlQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKDApOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBp
cyAxMDB4MTAwLiBTZXR1cCA1eDUgdGlsZXMgd2l0aCBvbmUgdmlzaWJsZSB0aWxlIGluIHRoZSBj
ZW50ZXIuCiAgICAgSW50U2l6ZSBjb250ZW50Qm91bmRzKDUwMCwgNTAwKTsKQEAgLTIwOSw3ICsy
MDksNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRUaWxlcykK
ICAgICAvLyBXZSBzaG91bGQgbmVlZCBpZGxlLXBhaW50aW5nIGZvciAzeDMgdGlsZXMgaW4gdGhl
IGNlbnRlci4KICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJl
Y3QpKTsKIAotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIp
OworICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgIGxh
eWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91
bGQgaGF2ZSBvbmUgdGlsZSBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtMjIyLDcgKzIyMiw3IEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQogICAgICAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0LCAwKTsKICAgICAgICAgRVhQRUNUX1RS
VUUobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CiAgICAgICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGVJZGxlKHZpc2libGVSZWN0LCAwKTsKLSAgICAgICAgbGF5ZXItPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgICAgIGxheWVyLT51cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgICAgICBsYXllci0+cHVzaFByb3BlcnRp
ZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgICAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0
QWxsVGV4dHVyZXMoKTsKICAgICB9CkBAIC0yNTEsNyArMjUxLDcgQEAgVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBwdXNoVGlsZXNBZnRlcklkbGVQYWludEZhaWxlZCkKICAgICBSZWZQdHI8
RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExh
eWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBPd25QdHI8RmFrZUNDVGls
ZWRMYXllckltcGw+IGxheWVySW1wbDIoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBs
KDApKSk7CiAKLSAgICBGYWtlQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOworICAgIEZha2VDQ1Rl
eHR1cmVVcGRhdGVyIHVwZGF0ZXIoMCk7CiAKICAgICAvLyBGb3IgdGhpcyB0ZXN0IHdlIGhhdmUg
dHdvIGxheWVycy4gbGF5ZXIxIGV4aGF1c3RzIG1vc3QgdGV4dHVyZSBtZW1vcnksIGxlYXZpbmcg
cm9vbSBmb3IgMiBtb3JlIHRpbGVzIGZyb20KICAgICAvLyBsYXllcjIsIGJ1dCBub3QgYWxsIHRo
cmVlIHRpbGVzLiBGaXJzdCB3ZSBwYWludCBsYXllcjEsIGFuZCBvbmUgdGlsZSBmcm9tIGxheWVy
Mi4gVGhlbiB3aGVuIHdlIGlkbGUgcGFpbnQKQEAgLTI3Nyw5ICsyNzcsOSBAQCBURVNUKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFpbGVkKQogICAgIEVY
UEVDVF9UUlVFKGxheWVyMi0+bmVlZHNJZGxlUGFpbnQobGF5ZXIyUmVjdCkpOwogCiAgICAgLy8g
Q29tbWl0IHRoZSBmcmFtZSBvdmVyIHRvIGltcGwuCi0gICAgbGF5ZXIxLT51cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwotICAgIGxheWVyMi0+dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcygwLCB1cGRhdGVyKTsKLSAgICB1cGRhdGVyLnVwZGF0ZSgwLCA1MDAwKTsKKyAgICBs
YXllcjEtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7CisgICAgbGF5ZXIyLT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOworICAgIHVwZGF0ZXIudXBkYXRlQWxs
KCk7CiAgICAgbGF5ZXIxLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbDEuZ2V0KCkpOwogICAg
IGxheWVyMi0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwyLmdldCgpKTsKIApAQCAtMjg4LDkg
KzI4OCw5IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzQWZ0ZXJJZGxl
UGFpbnRGYWlsZWQpCiAgICAgbGF5ZXIyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKGxheWVyMlJlY3Qs
IDApOwogCiAgICAgLy8gT2ggd2VsbCwgY29tbWl0IHRoZSBmcmFtZSBhbmQgcHVzaC4KLSAgICBs
YXllcjEtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7Ci0gICAgbGF5ZXIy
LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwotICAgIHVwZGF0ZXIudXBk
YXRlKDAsIDUwMDApOworICAgIGxheWVyMS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRh
dGVyKTsKKyAgICBsYXllcjItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7Cisg
ICAgdXBkYXRlci51cGRhdGVBbGwoKTsKICAgICBsYXllcjEtPnB1c2hQcm9wZXJ0aWVzVG8obGF5
ZXJJbXBsMS5nZXQoKSk7CiAgICAgbGF5ZXIyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbDIu
Z2V0KCkpOwogCkBAIC0zMDksOSArMzA5LDkgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBwdXNoVGlsZXNBZnRlcklkbGVQYWludEZhaWxlZCkKICAgICBsYXllcjItPnByZXBhcmVUb1Vw
ZGF0ZShsYXllcjJSZWN0LCAwKTsKICAgICBsYXllcjEtPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0
KCksIDApOwogCi0gICAgbGF5ZXIxLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0
ZXIpOwotICAgIGxheWVyMi0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsK
LSAgICB1cGRhdGVyLnVwZGF0ZSgwLCA1MDAwKTsKKyAgICBsYXllcjEtPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXModXBkYXRlcik7CisgICAgbGF5ZXIyLT51cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKHVwZGF0ZXIpOworICAgIHVwZGF0ZXIudXBkYXRlQWxsKCk7CiAgICAgbGF5ZXIxLT5wdXNo
UHJvcGVydGllc1RvKGxheWVySW1wbDEuZ2V0KCkpOwogICAgIGxheWVyMi0+cHVzaFByb3BlcnRp
ZXNUbyhsYXllckltcGwyLmdldCgpKTsKIApAQCAtMzMxLDcgKzMzMSw3IEBAIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludGVkT2NjbHVkZWRUaWxlcykKICAgICBPd25Q
dHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGls
ZWRMYXllckltcGwoMCkpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1ZGVkOwog
Ci0gICAgRmFrZUNDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKKyAgICBGYWtlQ0NUZXh0dXJlVXBk
YXRlciB1cGRhdGVyKDApOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0
aGlzIGludmFsaWRhdGVzIG9uZSBvY2NsdWRlZCB0aWxlLCBjdWxscyBpdCBkdXJpbmcgcGFpbnQs
IGJ1dCBwcmVwYWludHMgaXQuCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMCwg
MCwgMTAwLCAxMDApKTsKQEAgLTM0Miw3ICszNDIsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHB1c2hJZGxlUGFpbnRlZE9jY2x1ZGVkVGlsZXMpCiAgICAgbGF5ZXItPmludmFsaWRh
dGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAmb2NjbHVkZWQpOwogICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGVJZGxlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAmb2NjbHVkZWQpOwotICAg
IGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVy
LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJv
cGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgaGF2ZSB0aGUg
cHJlcGFpbnRlZCB0aWxlIG9uIHRoZSBpbXBsIHNpZGUuCkBAIC0zNTYsNyArMzU2LDcgQEAgVEVT
VChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNNYXJrZWREaXJ0eUR1cmluZ1BhaW50
KQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxG
YWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExh
eWVySW1wbCgwKSkpOwogCi0gICAgRmFrZUNDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKKyAgICBG
YWtlQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKDApOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBp
cyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMu
CiAgICAgLy8gSG93ZXZlciwgZHVyaW5nIHRoZSBwYWludCwgd2UgaW52YWxpZGF0ZSBvbmUgb2Yg
dGhlIHRpbGVzLiBUaGlzIHNob3VsZApAQCAtMzY1LDcgKzM2NSw3IEBAIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTWFya2VkRGlydHlEdXJpbmdQYWludCkKICAgICBsYXll
ci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMCwg
NTAsIDEwMCwgNTApLCBsYXllci5nZXQoKSk7CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXModXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgp
KTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIGJvdGggdGlsZXMgb24gdGhlIGltcGwgc2lkZS4K
QEAgLTM4Miw3ICszODIsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxl
c0xheWVyTWFya2VkRGlydHlEdXJpbmdQYWludE9uTmV4dExheWVyKQogICAgIE93blB0cjxGYWtl
Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIxSW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXll
ckltcGwoMCkpKTsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVyMkltcGwo
YWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKSk7CiAKLSAgICBGYWtlQ0NUZXh0
dXJlVXBkYXRlciB1cGRhdGVyOworICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoMCk7
CiAKICAgICBsYXllcjEtPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAgICAgbGF5ZXIx
LT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CkBAIC0zOTUsOCArMzk1
LDggQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtlZERp
cnR5RHVyaW5nUGFpbnRPbk5leHRMYXllcikKICAgICBsYXllcjItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVjdCgwLCA1MCwgMTAwLCA1MCksIGxh
eWVyMS5nZXQoKSk7CiAgICAgbGF5ZXIyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAx
MDAsIDIwMCksIDApOwogCi0gICAgbGF5ZXIxLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAs
IHVwZGF0ZXIpOwotICAgIGxheWVyMi0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRh
dGVyKTsKKyAgICBsYXllcjEtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7Cisg
ICAgbGF5ZXIyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogCiAgICAgbGF5
ZXIxLT5wdXNoUHJvcGVydGllc1RvKGxheWVyMUltcGwuZ2V0KCkpOwogICAgIGxheWVyMi0+cHVz
aFByb3BlcnRpZXNUbyhsYXllcjJJbXBsLmdldCgpKTsKQEAgLTQxNyw3ICs0MTcsNyBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0xheWVyTWFya2VkRGlydHlEdXJpbmdQ
YWludE9uUHJldmlvdXNMYXllcgogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5
ZXIxSW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpKTsKICAgICBPd25Q
dHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVyMkltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1Rp
bGVkTGF5ZXJJbXBsKDApKSk7CiAKLSAgICBGYWtlQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOwor
ICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoMCk7CiAKICAgICBsYXllcjEtPnNldEJv
dW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAgICAgbGF5ZXIxLT5pbnZhbGlkYXRlUmVjdChJbnRS
ZWN0KDAsIDAsIDEwMCwgMjAwKSk7CkBAIC00MzAsOCArNDMwLDggQEAgVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtlZERpcnR5RHVyaW5nUGFpbnRPblByZXZp
b3VzTGF5ZXIKIAogICAgIGxheWVyMi0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAw
LCAyMDApLCAwKTsKIAotICAgIGxheWVyMS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1
cGRhdGVyKTsKLSAgICBsYXllcjItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRl
cik7CisgICAgbGF5ZXIxLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOworICAg
IGxheWVyMi0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKIAogICAgIGxheWVy
MS0+cHVzaFByb3BlcnRpZXNUbyhsYXllcjFJbXBsLmdldCgpKTsKICAgICBsYXllcjItPnB1c2hQ
cm9wZXJ0aWVzVG8obGF5ZXIySW1wbC5nZXQoKSk7CkBAIC00NTgsNyArNDU4LDcgQEAgVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXll
ckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpKTsK
IAotICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAgRmFrZUNDVGV4dHVyZVVw
ZGF0ZXIgdXBkYXRlcigwKTsKIAogICAgIC8vIFRoaXMgaW52YWxpZGF0ZXMgOSB0aWxlcyBhbmQg
dGhlbiBwYWludHMgb25lIHZpc2libGUgdGlsZS4KICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRl
bnRCb3VuZHMpOwpAQCAtNDY5LDcgKzQ2OSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWlu
dGluZyBmb3IgM3gzIHRpbGVzIHN1cm91bmRpbmcgdmlzaWJsZSB0aWxlLgogICAgIEVYUEVDVF9U
UlVFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5ZXItPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8o
bGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIG9uZSB0aWxlIG9uIHRo
ZSBpbXBsIHNpZGUuCkBAIC00ODIsNyArNDgyLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICAvLyBXZSBzaG91bGRuJ3Qgc2lnbmFsIHdl
IG5lZWQgYW5vdGhlciBpZGxlIHBhaW50IGFmdGVyIHdlIHJ1biBvdXQgb2YgbWVtb3J5LgogICAg
IEVYUEVDVF9GQUxTRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKIAotICAg
IGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVy
LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJv
cGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiB9CiAKQEAgLTQ5Myw3ICs0OTMsNyBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludFplcm9TaXplZExheWVyKQogICAgIERl
YnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxl
ZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgw
KSkpOwogCi0gICAgRmFrZUNDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKKyAgICBGYWtlQ0NUZXh0
dXJlVXBkYXRlciB1cGRhdGVyKDApOwogCiAgICAgLy8gVGhlIGxheWVyJ3MgYm91bmRzIGFyZSBl
bXB0eS4KICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0OwpAQCAtNTA5LDcgKzUwOSw3IEBAIFRFU1Qo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50WmVyb1NpemVkTGF5ZXIpCiAgICAgLy8g
RW1wdHkgbGF5ZXJzIGRvbid0IG5lZWQgcHJlcGFpbnQuCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVy
LT5uZWVkc0lkbGVQYWludChjb250ZW50UmVjdCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXModXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBs
LmdldCgpKTsKIAogICAgIC8vIEVtcHR5IGxheWVycyBkb24ndCBoYXZlIHRpbGVzLgpAQCAtNTIx
LDcgKzUyMSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50WmVyb1Np
emVkTGF5ZXIpCiAgICAgLy8gRW1wdHkgbGF5ZXJzIGRvbid0IGhhdmUgdGlsZXMuCiAgICAgRVhQ
RUNUX0VRKDB1LCBsYXllci0+bnVtUGFpbnRlZFRpbGVzKCkpOwogCi0gICAgbGF5ZXItPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXModXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5
ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIEVtcHR5IGxheWVycyBkb24ndCBoYXZlIHRpbGVzLgpA
QCAtNTM1LDcgKzUzNSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50
WmVyb1NpemVkQW5pbWF0aW5nTGF5ZXIpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGlt
cGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRv
cHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKSk7CiAKLSAgICBGYWtlQ0NUZXh0dXJl
VXBkYXRlciB1cGRhdGVyOworICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoMCk7CiAK
ICAgICAvLyBQcmV0ZW5kIHRoZSBsYXllciBpcyBhbmltYXRpbmcuCiAgICAgbGF5ZXItPnNldERy
YXdUcmFuc2Zvcm1Jc0FuaW1hdGluZyh0cnVlKTsKQEAgLTU1NCw3ICs1NTQsNyBAQCBURVNUKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludFplcm9TaXplZEFuaW1hdGluZ0xheWVyKQog
ICAgIC8vIEVtcHR5IGxheWVycyBkb24ndCBuZWVkIHByZXBhaW50LgogICAgIEVYUEVDVF9GQUxT
RShsYXllci0+bmVlZHNJZGxlUGFpbnQoY29udGVudFJlY3QpKTsKIAotICAgIGxheWVyLT51cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxh
eWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBFbXB0eSBsYXllcnMgZG9uJ3QgaGF2ZSB0aWxlcy4K
QEAgLTU2Niw3ICs1NjYsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWlu
dFplcm9TaXplZEFuaW1hdGluZ0xheWVyKQogICAgIC8vIEVtcHR5IGxheWVycyBkb24ndCBoYXZl
IHRpbGVzLgogICAgIEVYUEVDVF9FUSgwdSwgbGF5ZXItPm51bVBhaW50ZWRUaWxlcygpKTsKIAot
ICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxh
eWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNo
UHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBFbXB0eSBsYXllcnMgZG9u
J3QgaGF2ZSB0aWxlcy4KQEAgLTU4Myw3ICs1ODMsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVMYXllcnMpCiAgICAgRGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXll
ckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKSk7CiAKLSAgICBGYWtl
Q0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOworICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0
ZXIoMCk7CiAKICAgICAvLyBJbnZhbGlkYXRlIHRoZSBsYXllciBidXQgbWFrZSBub25lIG9mIGl0
IHZpc2libGUsIHNvIG5vdGhpbmcgcGFpbnRzLgogICAgIEludFJlY3QgdmlzaWJsZVJlY3Q7CkBA
IC01OTYsNyArNTk2LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRO
b25WaXNpYmxlTGF5ZXJzKQogICAgIC8vIE5vbi12aXNpYmxlIGxheWVycyBkb24ndCBuZWVkIGlk
bGUgcGFpbnQuCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxl
UmVjdCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRl
cik7CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7CiAgICAg
bGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNo
b3VsZCBub3QgaGF2ZSBhbnkgdGlsZXMgcHVzaGVkIHNpbmNlIHRoZSBsYXllciBpcyBub3Qgdmlz
aWJsZS4KQEAgLTYwNSw3ICs2MDUsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlk
bGVQYWludE5vblZpc2libGVMYXllcnMpCiAgICAgLy8gTm9uLXZpc2libGUgbGF5ZXJzIGRvbid0
IGlkbGUgcGFpbnQuCiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3Qs
IDApOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7
CisgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7CiAgICAgbGF5
ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3Vs
ZCBub3QgaGF2ZSBhbnkgdGlsZXMgcHVzaGVkIHNpbmNlIHRoZSBsYXllciBpcyBub3QgdmlzaWJs
ZS4KQEAgLTYxNyw3ICs2MTcsNyBAQCBzdGF0aWMgdm9pZCBpZGxlUGFpbnRSZXBlYXQoaW50IHJl
cGVhdFRpbWVzLCBGYWtlVGlsZWRMYXllckNocm9taXVtKiBsYXllciwgRmFrZQogICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgcmVwZWF0VGltZXM7ICsraSkgewogICAgICAgICBsYXllci0+cHJlcGFy
ZVRvVXBkYXRlKHZpc2libGVSZWN0LCAwKTsKICAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0
ZUlkbGUodmlzaWJsZVJlY3QsIDApOwotICAgICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcygwLCB1cGRhdGVyKTsKKyAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXModXBkYXRlcik7CiAgICAgICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1w
bCk7CiAgICAgfQogfQpAQCAtNjM3LDcgKzYzNyw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgaWRsZVBhaW50Tm9uVmlzaWJsZUFuaW1hdGluZ0xheWVycykKICAgICBPd25QdHI8VGV4
dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg4MDAw
KjgwMDAqOCwgODAwMCo4MDAwKjQsIDEwMjQpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVh
ZCBpbXBsVGhyZWFkOwogCi0gICAgRmFrZUNDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKKyAgICBG
YWtlQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKDApOwogCiAgICAgaW50IHRpbGVXaWR0aCA9IEZh
a2VUaWxlZExheWVyQ2hyb21pdW06OnRpbGVTaXplKCkud2lkdGgoKTsKICAgICBpbnQgdGlsZUhl
aWdodCA9IEZha2VUaWxlZExheWVyQ2hyb21pdW06OnRpbGVTaXplKCkuaGVpZ2h0KCk7CkBAIC02
NjYsNyArNjY2LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnROb25W
aXNpYmxlQW5pbWF0aW5nTGF5ZXJzKQogCiAgICAgICAgICAgICAvLyBUaGlzIHBhaW50cyB0aGUg
bGF5ZXIgYnV0IHRoZXJlJ3Mgbm90aGluZyB2aXNpYmxlIHNvIGl0J3MgYSBuby1vcC4KICAgICAg
ICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QsIDApOwotICAgICAgICAg
ICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgICAg
ICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKICAgICAgICAg
ICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAgICAg
ICAgIC8vIFdlIHNob3VsZCBub3QgaGF2ZSBhbnkgdGlsZXMgcHVzaGVkIHlldCBzaW5jZSB0aGUg
bGF5ZXIgaXMgbm90IHZpc2libGUgYW5kIHdlJ3ZlIG5vdCBwcmVwYWludGVkLgpAQCAtNjk0LDEz
ICs2OTQsMTMgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVBy
ZXBhcmUpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3du
UHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1Rp
bGVkTGF5ZXJJbXBsKDApKSk7CiAKLSAgICBGYWtlQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOwor
ICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoMCk7CiAKICAgICAvLyBUaGUgdGlsZSBz
aXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0
aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXll
ci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwotICAgIGxheWVyLT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1Rv
KGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgaGF2ZSBib3RoIHRpbGVzIG9u
IHRoZSBpbXBsIHNpZGUuCkBAIC03MzUsNyArNzM1LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCB2ZXJpZnlVcGRhdGVSZWN0V2hlbkNvbnRlbnRCb3VuZHNBcmVTY2FsZWQpCiAgICAg
T3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpj
cmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRp
bGVkTGF5ZXJXaXRoU2NhbGVkQm91bmRzPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRM
YXllcldpdGhTY2FsZWRCb3VuZHModGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKIAotICAgIEZha2VD
Q1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAgRmFrZUNDVGV4dHVyZVVwZGF0ZXIgdXBkYXRl
cigwKTsKIAogICAgIEludFJlY3QgbGF5ZXJCb3VuZHMoMCwgMCwgMzAwLCAyMDApOwogICAgIElu
dFJlY3QgY29udGVudEJvdW5kcygwLCAwLCAyMDAsIDI1MCk7CkBAIC03NDgsMjAgKzc0OCwyMCBA
QCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeVVwZGF0ZVJlY3RXaGVuQ29udGVu
dEJvdW5kc0FyZVNjYWxlZCkKICAgICAvLyBIb3dldmVyLCBpdCBzaG91bGQgc3RpbGwgYmUgaW4g
bGF5ZXIgc3BhY2UsIG5vdCBjb250ZW50IHNwYWNlLgogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVj
dChjb250ZW50Qm91bmRzKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3Vu
ZHMsIDApOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIp
OworICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgIEVY
UEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCgwLCAwLCAzMDAsIDMwMCAqIDAuOCksIGxheWVy
LT51cGRhdGVSZWN0KCkpOwogCiAgICAgLy8gQWZ0ZXIgdGhlIHRpbGVzIGFyZSB1cGRhdGVkIG9u
Y2UsIGFub3RoZXIgaW52YWxpZGF0ZSBvbmx5IG5lZWRzIHRvIHVwZGF0ZSB0aGUgYm91bmRzIG9m
IHRoZSBsYXllci4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7CiAg
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCAwKTsKLSAgICBsYXllci0+
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShG
bG9hdFJlY3QobGF5ZXJCb3VuZHMpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsKIAogICAgIC8vIFBh
cnRpYWwgcmUtcGFpbnQgc2hvdWxkIGFsc28gYmUgcmVwcmVzZW50ZWQgYnkgdGhlIHVwZGF0ZVJl
Y3QgaW4gbGF5ZXIgc3BhY2UsIG5vdCBjb250ZW50IHNwYWNlLgogICAgIEludFJlY3QgcGFydGlh
bERhbWFnZSgzMCwgMTAwLCAxMCwgMTApOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChwYXJ0
aWFsRGFtYWdlKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIDAp
OwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAg
IGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgIEVYUEVDVF9G
TE9BVF9SRUNUX0VRKEZsb2F0UmVjdCg0NSwgODAsIDE1LCA4KSwgbGF5ZXItPnVwZGF0ZVJlY3Qo
KSk7CiB9CiAKQEAgLTc3Miw3ICs3NzIsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hhbmdlcykKICAgICBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXll
ckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpKTsK
IAotICAgIEZha2VDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAgRmFrZUNDVGV4dHVyZVVw
ZGF0ZXIgdXBkYXRlcigwKTsKIAogICAgIC8vIENyZWF0ZSBhIGxheWVyIHdpdGggb25lIHRpbGUu
CiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMTAwKSk7CkBAIC03ODMsNyArNzgz
LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlJbnZhbGlkYXRpb25XaGVu
Q29udGVudHNTY2FsZUNoYW5nZXMpCiAKICAgICAvLyBQdXNoIHRoZSB0aWxlcyB0byB0aGUgaW1w
bCBzaWRlIGFuZCBjaGVjayB0aGF0IHRoZXJlIGlzIGV4YWN0bHkgb25lLgogICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOwotICAgIGxheWVyLT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1Rv
KGxheWVySW1wbC5nZXQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBsLT5oYXNUaWxlQXQo
MCwgMCkpOwogICAgIEVYUEVDVF9GQUxTRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAxKSk7CkBA
IC03OTcsNyArNzk3LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlJbnZh
bGlkYXRpb25XaGVuQ29udGVudHNTY2FsZUNoYW5nZXMpCiAKICAgICAvLyBUaGUgaW1wbCBzaWRl
IHNob3VsZCBnZXQgMngyIHRpbGVzIG5vdy4KICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKElu
dFJlY3QoMCwgMCwgMjAwLCAyMDApLCAwKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyh1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkp
OwogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDApKTsKICAgICBFWFBF
Q1RfVFJVRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAxKSk7CkBAIC04MDgsNyArODA4LDcgQEAg
VEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlJbnZhbGlkYXRpb25XaGVuQ29udGVu
dHNTY2FsZUNoYW5nZXMpCiAgICAgLy8gaW1wbCBzaWRlLgogICAgIGxheWVyLT5zZXROZWVkc0Rp
c3BsYXkoKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMSwgMCwgMCwgMSks
IDApOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwor
ICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwogICAgIGxheWVy
LT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGxh
eWVySW1wbC0+aGFzVGlsZUF0KDAsIDApKTsKICAgICBFWFBFQ1RfRkFMU0UobGF5ZXJJbXBsLT5o
YXNUaWxlQXQoMCwgMSkpOwpAQCAtODQyLDEzICs4NDIsMTMgQEAgVEVTVChUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBza2lwc0RyYXdHZXRzUmVzZXQpCiAgICAgcm9vdExheWVyLT5pbnZhbGlkYXRl
UmVjdChjb250ZW50UmVjdCk7CiAgICAgY2hpbGRMYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVu
dFJlY3QpOwogCi0gICAgRmFrZUNDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKKyAgICBGYWtlQ0NU
ZXh0dXJlVXBkYXRlciB1cGRhdGVyKGNjTGF5ZXJUcmVlSG9zdC0+Y29udGV4dCgpKTsKIAogICAg
IGNjTGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgY2NMYXllclRy
ZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgzMDAsIDMwMCkpOwogICAgIHRleHR1cmVN
YW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKG1lbW9yeUxpbWl0KTsKICAgICBjY0xheWVy
VHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhjY0xheWVyVHJlZUhvc3QtPmNvbnRleHQoKSwgdXBkYXRlcik7Cisg
ICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHVwZGF0ZXIpOwog
CiAgICAgLy8gV2UnbGwgc2tpcCB0aGUgcm9vdCBsYXllci4KICAgICBFWFBFQ1RfVFJVRShyb290
TGF5ZXItPnNraXBzRHJhdygpKTsKQEAgLTkxMyw1MiArOTEzLDUzIEBAIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAgICAgbGF5ZXItPnNldFBvc2l0aW9uKEZs
b2F0UG9pbnQoMTUwLCAxNTApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudFJl
Y3QpOwogCi0gICAgRmFrZUNDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKKyAgICBPd25QdHI8RmFr
ZUNDVGV4dHVyZVVwZGF0ZXI+IHVwZGF0ZXIgPSBhZG9wdFB0cihuZXcgRmFrZUNDVGV4dHVyZVVw
ZGF0ZXIoY2NMYXllclRyZWVIb3N0LT5jb250ZXh0KCkpKTsKIAogICAgIGNjTGF5ZXJUcmVlSG9z
dC0+c2V0Um9vdExheWVyKGxheWVyKTsKICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0
U2l6ZShJbnRTaXplKDMwMCwgMjAwKSk7CiAKICAgICAvLyBGdWxsIHVwZGF0ZSBvZiBhbGwgNiB0
aWxlcy4KICAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwotICAgIGNjTGF5ZXJU
cmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjY0xheWVyVHJlZUhvc3QtPmNvbnRl
eHQoKSwgdXBkYXRlcik7Ci0gICAgdXBkYXRlci51cGRhdGUoMCwgNCk7CisgICAgY2NMYXllclRy
ZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCp1cGRhdGVyLmdldCgpKTsKKyAgICB1
cGRhdGVyLT51cGRhdGVBdE1vc3QoNCk7CiAgICAgRVhQRUNUX0VRKDQsIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKLSAgICBFWFBFQ1RfVFJVRSh1cGRh
dGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgIEVYUEVDVF9UUlVFKHVwZGF0ZXItPmhhc01vcmVV
cGRhdGVzKCkpOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVw
ZGF0ZUNvdW50KCk7Ci0gICAgdXBkYXRlci51cGRhdGUoMCwgNCk7CisgICAgdXBkYXRlci0+dXBk
YXRlQXRNb3N0KDQpOwogICAgIEVYUEVDVF9FUSgyLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVwZGF0ZXIuaGFzTW9y
ZVVwZGF0ZXMoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVwZGF0ZXItPmhhc01vcmVVcGRhdGVzKCkp
OwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50
KCk7CiAgICAgY2NMYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAgLy8gRnVs
bCB1cGRhdGUgb2YgMyB0aWxlcyBhbmQgcGFydGlhbCB1cGRhdGUgb2YgMyB0aWxlcy4KICAgICBs
YXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAzMDAsIDE1MCkpOwogICAgIGNjTGF5
ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKGNjTGF5ZXJUcmVlSG9zdC0+Y29udGV4dCgpLCB1cGRhdGVyKTsK
LSAgICB1cGRhdGVyLnVwZGF0ZSgwLCA0KTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoKnVwZGF0ZXIuZ2V0KCkpOworICAgIHVwZGF0ZXItPnVwZGF0ZUF0
TW9zdCg0KTsKICAgICBFWFBFQ1RfRVEoMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnVwZGF0ZUNvdW50KCkpOwotICAgIEVYUEVDVF9UUlVFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0
ZXMoKSk7CisgICAgRVhQRUNUX1RSVUUodXBkYXRlci0+aGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAg
bGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKLSAg
ICB1cGRhdGVyLnVwZGF0ZSgwLCA0KTsKKyAgICB1cGRhdGVyLT51cGRhdGVBdE1vc3QoNCk7CiAg
ICAgRVhQRUNUX0VRKDMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVD
b3VudCgpKTsKLSAgICBFWFBFQ1RfRkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UodXBkYXRlci0+aGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgbGF5ZXItPmZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKICAgICBjY0xheWVy
VHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKICAgICAvLyBQYXJ0aWFsIHVwZGF0ZSBvZiA2
IHRpbGVzLgogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDUwLCA1MCwgMjAwLCAx
MDApKTsKICAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwotICAgIGNjTGF5ZXJU
cmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjY0xheWVyVHJlZUhvc3QtPmNvbnRl
eHQoKSwgdXBkYXRlcik7Ci0gICAgdXBkYXRlci51cGRhdGUoMCwgNCk7CisgICAgY2NMYXllclRy
ZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCp1cGRhdGVyLmdldCgpKTsKKyAgICB1
cGRhdGVyLT51cGRhdGVBdE1vc3QoNCk7CiAgICAgRVhQRUNUX0VRKDIsIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKLSAgICBFWFBFQ1RfVFJVRSh1cGRh
dGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgIEVYUEVDVF9UUlVFKHVwZGF0ZXItPmhhc01vcmVV
cGRhdGVzKCkpOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVw
ZGF0ZUNvdW50KCk7Ci0gICAgdXBkYXRlci51cGRhdGUoMCwgNCk7CisgICAgdXBkYXRlci0+dXBk
YXRlQXRNb3N0KDQpOwogICAgIEVYUEVDVF9FUSg0LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVwZGF0ZXIuaGFzTW9y
ZVVwZGF0ZXMoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHVwZGF0ZXItPmhhc01vcmVVcGRhdGVzKCkp
OwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50
KCk7CiAgICAgY2NMYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCisgICAgdXBkYXRl
ci5jbGVhcigpOwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKDApOwogICAgIGNj
TGF5ZXJUcmVlSG9zdC5jbGVhcigpOwogICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6c2h1dGRv
d24oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137767</attachid>
            <date>2012-04-18 14:14:31 -0700</date>
            <delta_ts>2012-04-27 18:42:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81004-20120418171430.patch</filename>
            <type>text/plain</type>
            <size>30750</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0NTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDBiYzlhZDY2ZDI5ODQ3
ZjczNDQwOWQwNjQ1MWYyODdhNzVkOTEyOC4uNDJjMmJiZjYzMTkxOTkwMDdhNDg1ZDc2OGZjYzFm
M2YxOGRiMDZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTA0LTE4ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBV
c2UgR0xfQ0hST01JVU1fY29tbWFuZF9idWZmZXJfcXVlcnkgdG8gdGhyb3R0bGUgdGV4dHVyZSB1
cGxvYWRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODEwMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyIGNsYXNzIHRoYXQgdXNlcyBHTF9DSFJPTUlVTV9j
b21tYW5kX2J1ZmZlcl9xdWVyeQorICAgICAgICB0byB0aHJvdHRsZSB0ZXh0dXJlIHVwbG9hZHMg
YmFzZWQgb24gbnVtYmVyIG9mIGN1cnJlbnRseSBwZW5kaW5nIHF1ZXJpZXMuCisKKyAgICAgICAg
VW5pdCB0ZXN0OiBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXJUZXN0LklzQnVzeQorCisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExheWVy
UmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGV4dHVyZVVwbG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vbkJsb2NraW5nVGV4dHVy
ZVVwbG9hZGVyOjpOb25CbG9ja2luZ1RleHR1cmVVcGxvYWRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpOb25CbG9ja2luZ1RleHR1cmVVcGxvYWRlcjo6fk5vbkJsb2NraW5nVGV4dHVyZVVwbG9hZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vbkJsb2NraW5nVGV4dHVyZVVwbG9hZGVyOjppc0J1c3kp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOb25CbG9ja2luZ1RleHR1
cmVVcGxvYWRlcjo6YmVnaW5VcGxvYWRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vbkJsb2NraW5n
VGV4dHVyZVVwbG9hZGVyOjplbmRVcGxvYWRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vbkJsb2Nr
aW5nVGV4dHVyZVVwbG9hZGVyOjp1cGxvYWRUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaDoKKyAgICAgICAgKFRleHR1cmVVcGxv
YWRlcik6CisgICAgICAgIChOb25CbG9ja2luZ1RleHR1cmVVcGxvYWRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpOb25CbG9ja2luZ1RleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4
dHVyZVVwbG9hZGVyOjpRdWVyeTo6UXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6flF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlRocm90
dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVlcnk6OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlRo
cm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVlcnk6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpU
aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlF1ZXJ5Ojppc1BlbmRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6d2FpdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlRocm90dGxlZFRleHR1cmVVcGxvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6On5UaHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVw
bG9hZGVyOjppc0J1c3kpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyOjpiZWdpblVwbG9hZHMpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVw
bG9hZGVyOjplbmRVcGxvYWRzKToKKyAgICAgICAgKFdlYkNvcmU6OlRocm90dGxlZFRleHR1cmVV
cGxvYWRlcjo6dXBsb2FkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJvdHRsZWRUZXh0
dXJlVXBsb2FkZXI6OnByb2Nlc3NRdWVyaWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmguCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRocm90dGxlZFRleHR1cmVVcGxvYWRlcik6Cisg
ICAgICAgIChRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJvdHRsZWRUZXh0dXJlVXBsb2Fk
ZXI6OlF1ZXJ5OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVw
bG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJl
YWRQcm94eTo6ZG9Db21taXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBk
YXRlcjo6dXBkYXRlKToKKwogMjAxMi0wNC0xOCAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBEYXRhR3JpZCBzaG91bGQgdXNl
IGV4cGxpY2l0IHJvb3Qgbm9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4YmE0NGYy
NDE5ZDA4NDdlMGQ4MjhhYmE0NDE4N2YyYmEzMzQ2OGJjLi44MDk1YTE0MWIwYTc0NWNlOGNmZGY1
NjlhNmFiMTM0M2ExYTgyZjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI0IEBACisyMDEyLTA0LTE4ICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW0Nocm9taXVtXSBVc2UgR0xfQ0hST01JVU1fY29tbWFuZF9idWZmZXJfcXVl
cnkgdG8gdGhyb3R0bGUgaW5jcmVtZW50YWwgdGV4dHVyZSB1cGRhdGVzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEwMDQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAg
ICAqIHRlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaDoKKyAgICAgICAgKFdlYktpdFRlc3Rz
OjpGYWtlVGV4dHVyZVVwbG9hZGVyOjppc0J1c3kpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZh
a2VUZXh0dXJlVXBsb2FkZXI6OmJlZ2luVXBsb2Fkcyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6
RmFrZVRleHR1cmVVcGxvYWRlcjo6ZW5kVXBsb2Fkcyk6CisgICAgICAgICogdGVzdHMvQ2FudmFz
MkRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvVGhyb3R0bGVkVGV4dHVy
ZVVwbG9hZGVyVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEZh
a2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhRdWVyeVRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0
OjpGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoUXVlcnlUZXN0aW5nOjpGYWtlV2ViR3JhcGhp
Y3NDb250ZXh0M0RXaXRoUXVlcnlUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6RmFrZVdlYkdy
YXBoaWNzQ29udGV4dDNEV2l0aFF1ZXJ5VGVzdGluZzo6Z2V0UXVlcnlPYmplY3R1aXZFWFQpOgor
ICAgICAgICAoV2ViS2l0OjpGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoUXVlcnlUZXN0aW5n
OjpzZXRSZXN1bHRBdmFpbGFibGUpOgorICAgICAgICAoV2ViS2l0OjpURVNUKToKKwogMjAxMi0w
NC0xNyAgUmFmYWVsIFdlaW5zdGVpbiAgPHJhZmFlbHdAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtNdXRhdGlvbk9ic2VydmVyc10gZW5hYmxlIFY4UmVjdXJzaW9uU2NvcGUgZGVidWcgQVNTRVJU
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCAyZmY5OWE3OWFjNTFjZjI2ZDBmM2EyMTc1MTIxZThkNThh
N2Y2Y2NkLi4xZmJmNmU5NWUzYWZiMTJhODVmOGUwYjM1MjU4MTM5NDRkNjkzODJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCkBAIC0zNTc4LDYgKzM1NzgsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5oJywKKyAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY3Bw
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0
dXJlVXBsb2FkZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGlsZWRMYXllckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RyYW5zcGFyZW5jeVdpbi5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggYjQzN2NlOGU1NmQ5NjQ1NTFhZjY5YjVhYWNkZDU4Zjk2
NmRjZjEwMC4uNjg2OTQ2NTBhZDg4ZDEwNzE0ZTU0ZjFiMjU3Mjc3ZDNhMmQzMWFlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5j
bHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgIlRleHR1cmVDb3BpZXIuaCIKICNpbmNsdWRl
ICJUZXh0dXJlTWFuYWdlci5oIgorI2luY2x1ZGUgIlRocm90dGxlZFRleHR1cmVVcGxvYWRlci5o
IgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJUcmFja2luZ1RleHR1cmVBbGxv
Y2F0b3IuaCIKICNpbmNsdWRlICJUcmVlU3luY2hyb25pemVyLmgiCkBAIC0xNDA4LDcgKzE0MDks
MTEgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3Rz
KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9jYXBhYmlsaXRpZXMubWF4VGV4dHVyZVNpemUpOwogICAgIG1fdGV4dHVyZUNvcGllciA9
IEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7Ci0gICAg
bV90ZXh0dXJlVXBsb2FkZXIgPSBBY2NlbGVyYXRlZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKG1f
Y29udGV4dC5nZXQoKSk7CisgICAgLy8gVXNlIHRoZSB0aHJvdHRsZWQgdXBsb2FkZXIgb25seSB3
aXRoIHRoZSB0aHJlYWRlZCBwcm94eS4KKyAgICBpZiAoQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgp
KQorICAgICAgICBtX3RleHR1cmVVcGxvYWRlciA9IFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6
Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7CisgICAgZWxzZQorICAgICAgICBtX3RleHR1cmVVcGxv
YWRlciA9IE5vbkJsb2NraW5nVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgp
KTsKICAgICBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvciA9IFRyYWNraW5nVGV4dHVyZUFsbG9j
YXRvcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7CiAgICAgbV9yZW5kZXJTdXJmYWNlVGV4dHVy
ZUFsbG9jYXRvciA9IFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlKG1fY29udGV4dC5n
ZXQoKSk7CiAgICAgaWYgKG1fY2FwYWJpbGl0aWVzLnVzaW5nVGV4dHVyZVVzYWdlSGludCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggNTI3ZmNkZDJiNDA5YmRkMjEzZTQy
YTg5NTU4N2U0ZTZkMDcxZmJiNy4uNmIyOGU1NWM4NmRhY2U1NjNjYmNmMzNjNjM2OThjN2M3MzAy
OWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTM5LDcgKzM5LDcg
QEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgIlRleHR1cmVDb3BpZXIuaCIKLSNpbmNsdWRlICJUZXh0dXJlVXBsb2FkZXIuaCIKKyNp
bmNsdWRlICJUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaCIKICNpbmNsdWRlICJUcmFja2luZ1Rl
eHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NIZWFkc1VwRGlzcGxheS5oIgpAQCAtMjQ5LDcgKzI0OSw3IEBAIHByaXZhdGU6CiAKICAg
ICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyOwog
ICAgIE93blB0cjxBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI+IG1fdGV4dHVyZUNvcGllcjsKLSAg
ICBPd25QdHI8QWNjZWxlcmF0ZWRUZXh0dXJlVXBsb2FkZXI+IG1fdGV4dHVyZVVwbG9hZGVyOwor
ICAgIE93blB0cjxUZXh0dXJlVXBsb2FkZXI+IG1fdGV4dHVyZVVwbG9hZGVyOwogICAgIE93blB0
cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yOwog
ICAgIE93blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IG1fcmVuZGVyU3VyZmFjZVRleHR1
cmVBbGxvY2F0b3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuY3BwCmluZGV4IDU1NmZlMGUwY2Iy
MDZmMDNhMDQzZTNkNjhlMmU1NjFlMjFjMDFkZmMuLjNjNDUzYzg0YzlkYzIzZDQzZTg4NTFiNjFi
MjE3NmE5NGQ5YjMwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmNwcApAQCAtMjgsMTYgKzI4
LDI4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQWNjZWxlcmF0ZWRUZXh0dXJlVXBsb2Fk
ZXI6OkFjY2VsZXJhdGVkVGV4dHVyZVVwbG9hZGVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKK05vbkJsb2NraW5nVGV4dHVy
ZVVwbG9hZGVyOjpOb25CbG9ja2luZ1RleHR1cmVVcGxvYWRlcihQYXNzUmVmUHRyPEdyYXBoaWNz
Q29udGV4dDNEPiBjb250ZXh0KSA6IG1fY29udGV4dChjb250ZXh0KQogewogfQogCi1BY2NlbGVy
YXRlZFRleHR1cmVVcGxvYWRlcjo6fkFjY2VsZXJhdGVkVGV4dHVyZVVwbG9hZGVyKCkKK05vbkJs
b2NraW5nVGV4dHVyZVVwbG9hZGVyOjp+Tm9uQmxvY2tpbmdUZXh0dXJlVXBsb2FkZXIoKQogewog
fQogCi12b2lkIEFjY2VsZXJhdGVkVGV4dHVyZVVwbG9hZGVyOjp1cGxvYWRUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0
dXJlLCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3Qgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkKK2Jvb2wgTm9uQmxvY2tpbmdUZXh0dXJlVXBsb2Fk
ZXI6OmlzQnVzeSgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE5vbkJsb2NraW5n
VGV4dHVyZVVwbG9hZGVyOjpiZWdpblVwbG9hZHMoKQoreworfQorCit2b2lkIE5vbkJsb2NraW5n
VGV4dHVyZVVwbG9hZGVyOjplbmRVcGxvYWRzKCkKK3sKK30KKwordm9pZCBOb25CbG9ja2luZ1Rl
eHR1cmVVcGxvYWRlcjo6dXBsb2FkVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgVGV4dHVyZUFsbG9jYXRvciog
YWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJl
Y3QpCiB7CiAgICAgdGV4dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmgKaW5kZXggYWZlZDU0YTRh
ZWNjMDM0ZmZhZTM2MmI5ZWIxYzNlMTlkYzg4YjBhYi4uYWIwOGFhYTQzODFiMjY0NGQ1ZTg4OGY2
Y2UwM2UzN2JmMmJmMWQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmgKQEAgLTMxLDI1ICszMSwz
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRleHR1cmVVcGxvYWRlciB7CiBwdWJs
aWM6Ci0gICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IElu
dFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkgPSAwOwotCi1wcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB+VGV4dHVyZVVwbG9hZGVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJv
b2wgaXNCdXN5KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBiZWdpblVwbG9hZHMoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwbG9h
ZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
KiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCBkZXN0UmVjdCkgPSAwOwogfTsKIAotY2xhc3MgQWNjZWxlcmF0ZWRUZXh0dXJlVXBsb2Fk
ZXIgOiBwdWJsaWMgVGV4dHVyZVVwbG9hZGVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShB
Y2NlbGVyYXRlZFRleHR1cmVVcGxvYWRlcik7CitjbGFzcyBOb25CbG9ja2luZ1RleHR1cmVVcGxv
YWRlciA6IHB1YmxpYyBUZXh0dXJlVXBsb2FkZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KE5vbkJsb2NraW5nVGV4dHVyZVVwbG9hZGVyKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093
blB0cjxBY2NlbGVyYXRlZFRleHR1cmVVcGxvYWRlcj4gY3JlYXRlKFBhc3NSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+IGNvbnRleHQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8Tm9uQmxvY2tpbmdU
ZXh0dXJlVXBsb2FkZXI+IGNyZWF0ZShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250
ZXh0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBY2NlbGVyYXRlZFRleHR1
cmVVcGxvYWRlcihjb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTm9uQmxv
Y2tpbmdUZXh0dXJlVXBsb2FkZXIoY29udGV4dCkpOwogICAgIH0KLSAgICB2aXJ0dWFsIH5BY2Nl
bGVyYXRlZFRleHR1cmVVcGxvYWRlcigpOworICAgIHZpcnR1YWwgfk5vbkJsb2NraW5nVGV4dHVy
ZVVwbG9hZGVyKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRCosIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBUZXh0dXJlQWxsb2NhdG9y
KiwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNCdXN5KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGJlZ2lu
VXBsb2FkcygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IElu
dFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkgT1ZFUlJJREU7CiAKIHBy
b3RlY3RlZDoKLSAgICBleHBsaWNpdCBBY2NlbGVyYXRlZFRleHR1cmVVcGxvYWRlcihQYXNzUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPik7CisgICAgZXhwbGljaXQgTm9uQmxvY2tpbmdUZXh0dXJl
VXBsb2FkZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pOwogCiAgICAgUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRl
eHR1cmVVcGxvYWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdiM2E3NWE0Mzc2OTg1ZThiMjM0MjI0MzFl
YWI1MWZjYWI1ODBkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5jcHAKQEAgLTAsMCAr
MSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
ICJUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaCIKKworI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENo
cm9taXVtLmgiCisKK25hbWVzcGFjZSB7CisKKy8vIE51bWJlciBvZiBwZW5kaW5nIHRleHR1cmUg
dXBkYXRlIHF1ZXJpZXMgdG8gYWxsb3cuCitzdGF0aWMgY29uc3Qgc2l6ZV90IG1heFBlbmRpbmdR
dWVyaWVzID0gMjsKKworfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6UXVlcnkoUGFzc1JlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQor
ICAgICwgbV9xdWVyeUlkKDApCit7CisgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lv
bnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpKTsKKyAgICBtX3F1ZXJ5SWQgPSBleHRlbnNpb25zLT5jcmVhdGVRdWVyeUVYVCgp
OworfQorCitUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlF1ZXJ5Ojp+UXVlcnkoKQoreworICAg
IEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9u
czNEQ2hyb21pdW0qPihtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgZXh0ZW5zaW9u
cy0+ZGVsZXRlUXVlcnlFWFQobV9xdWVyeUlkKTsKK30KKwordm9pZCBUaHJvdHRsZWRUZXh0dXJl
VXBsb2FkZXI6OlF1ZXJ5OjpiZWdpbigpCit7CisgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4
dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICBleHRlbnNpb25zLT5iZWdpblF1ZXJ5RVhUKEV4dGVuc2lv
bnMzRENocm9taXVtOjpDT01NQU5EU19JU1NVRURfQ0hST01JVU0sIG1fcXVlcnlJZCk7Cit9CisK
K3ZvaWQgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6ZW5kKCkKK3sKKyAgICBFeHRl
bnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENo
cm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAgIGV4dGVuc2lvbnMtPmVu
ZFF1ZXJ5RVhUKEV4dGVuc2lvbnMzRENocm9taXVtOjpDT01NQU5EU19JU1NVRURfQ0hST01JVU0p
OworfQorCitib29sIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVlcnk6OmlzUGVuZGluZygp
Cit7CisgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxF
eHRlbnNpb25zM0RDaHJvbWl1bSo+KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICB1
bnNpZ25lZCBhdmFpbGFibGUgPSAxOworICAgIGV4dGVuc2lvbnMtPmdldFF1ZXJ5T2JqZWN0dWl2
RVhUKG1fcXVlcnlJZCwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OlFVRVJZX1JFU1VMVF9BVkFJTEFC
TEVfRVhULCAmYXZhaWxhYmxlKTsKKyAgICByZXR1cm4gIWF2YWlsYWJsZTsKK30KKwordm9pZCBU
aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlF1ZXJ5Ojp3YWl0KCkKK3sKKyAgICBFeHRlbnNpb25z
M0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVt
Kj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAgIHVuc2lnbmVkIHJlc3VsdDsKKyAg
ICBleHRlbnNpb25zLT5nZXRRdWVyeU9iamVjdHVpdkVYVChtX3F1ZXJ5SWQsIEV4dGVuc2lvbnMz
RENocm9taXVtOjpRVUVSWV9SRVNVTFRfRVhULCAmcmVzdWx0KTsKK30KKworVGhyb3R0bGVkVGV4
dHVyZVVwbG9hZGVyOjpUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoUGFzc1JlZlB0cjxHcmFwaGlj
c0NvbnRleHQzRD4gY29udGV4dCwgc2l6ZV90IG1heFBlbmRpbmdVcGxvYWRzKQorICAgIDogbV9j
b250ZXh0KGNvbnRleHQpCisgICAgLCBtX21heFBlbmRpbmdRdWVyaWVzKG1heFBlbmRpbmdRdWVy
aWVzKQoreworICAgIGlmIChtYXhQZW5kaW5nVXBsb2FkcykKKyAgICAgICAgbV9tYXhQZW5kaW5n
UXVlcmllcyA9IG1heFBlbmRpbmdVcGxvYWRzOworfQorCitUaHJvdHRsZWRUZXh0dXJlVXBsb2Fk
ZXI6On5UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoKQoreworfQorCitib29sIFRocm90dGxlZFRl
eHR1cmVVcGxvYWRlcjo6aXNCdXN5KCkKK3sKKyAgICBwcm9jZXNzUXVlcmllcygpOworCisgICAg
aWYgKCFtX2F2YWlsYWJsZVF1ZXJpZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAobV9wZW5kaW5nUXVlcmllcy5zaXplKCkgPT0gbV9tYXhQZW5kaW5nUXVlcmll
cykKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBtX2F2YWlsYWJsZVF1ZXJpZXMuYXBwZW5k
KFF1ZXJ5OjpjcmVhdGUobV9jb250ZXh0KSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6YmVnaW5VcGxvYWRzKCkKK3sKKyAgICAvLyBXYWl0
IGZvciBxdWVyeSB0byBiZWNvbWUgYXZhaWxhYmxlLgorICAgIHdoaWxlIChpc0J1c3koKSkKKyAg
ICAgICAgbV9wZW5kaW5nUXVlcmllcy5maXJzdCgpLT53YWl0KCk7CisKKyAgICBBU1NFUlQoIW1f
YXZhaWxhYmxlUXVlcmllcy5pc0VtcHR5KCkpOworICAgIG1fYXZhaWxhYmxlUXVlcmllcy5maXJz
dCgpLT5iZWdpbigpOworfQorCit2b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6ZW5kVXBs
b2FkcygpCit7CisgICAgbV9hdmFpbGFibGVRdWVyaWVzLmZpcnN0KCktPmVuZCgpOworICAgIG1f
cGVuZGluZ1F1ZXJpZXMuYXBwZW5kKG1fYXZhaWxhYmxlUXVlcmllcy50YWtlRmlyc3QoKSk7Cit9
CisKK3ZvaWQgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjp1cGxvYWRUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJl
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCBkZXN0UmVjdCkKK3sKKyAgICB0ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRl
eHQsIGFsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworfQorCit2b2lkIFRocm90dGxl
ZFRleHR1cmVVcGxvYWRlcjo6cHJvY2Vzc1F1ZXJpZXMoKQoreworICAgIHdoaWxlICghbV9wZW5k
aW5nUXVlcmllcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKG1fcGVuZGluZ1F1ZXJpZXMuZmly
c3QoKS0+aXNQZW5kaW5nKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBtX2F2YWls
YWJsZVF1ZXJpZXMuYXBwZW5kKG1fcGVuZGluZ1F1ZXJpZXMudGFrZUZpcnN0KCkpOworICAgIH0K
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lYmZkOTFjOTc5OTFlNmU1MjA3OGNkYjIxMDUzZDMyNGEwYjBmNWM5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyX2gKKyNkZWZpbmUgVGhyb3R0bGVkVGV4dHVyZVVw
bG9hZGVyX2gKKworI2luY2x1ZGUgIlRleHR1cmVVcGxvYWRlci5oIgorCisjaW5jbHVkZSA8d3Rm
L0RlcXVlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGhyb3R0bGVkVGV4dHVy
ZVVwbG9hZGVyIDogcHVibGljIFRleHR1cmVVcGxvYWRlciB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKTsKK3B1YmxpYzoKKyAgICBjbGFzcyBRdWVy
eSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc093blB0cjxRdWVyeT4gY3JlYXRl
KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UHRy
KG5ldyBRdWVyeShjb250ZXh0KSk7IH0KKworICAgICAgICB2aXJ0dWFsIH5RdWVyeSgpOworCisg
ICAgICAgIHZvaWQgYmVnaW4oKTsKKyAgICAgICAgdm9pZCBlbmQoKTsKKyAgICAgICAgYm9vbCBp
c1BlbmRpbmcoKTsKKyAgICAgICAgdm9pZCB3YWl0KCk7CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBleHBsaWNpdCBRdWVyeShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPik7CisKKyAgICAg
ICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CisgICAgICAgIHVuc2lnbmVk
IG1fcXVlcnlJZDsKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NPd25QdHI8VGhyb3R0bGVkVGV4
dHVyZVVwbG9hZGVyPiBjcmVhdGUoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4
dCwgc2l6ZV90IG1heFBlbmRpbmdVcGxvYWRzID0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKGNvbnRleHQsIG1heFBlbmRpbmdV
cGxvYWRzKSk7CisgICAgfQorICAgIHZpcnR1YWwgflRocm90dGxlZFRleHR1cmVVcGxvYWRlcigp
OworCisgICAgdmlydHVhbCBib29sIGlzQnVzeSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBiZWdpblVwbG9hZHMoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2Fkcygp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEKiwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIFRleHR1cmVBbGxvY2F0b3IqLCBj
b25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpIE9WRVJSSURF
OworCitwcm90ZWN0ZWQ6CisgICAgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKFBhc3NSZWZQdHI8
R3JhcGhpY3NDb250ZXh0M0Q+LCBzaXplX3QgcGVuZGluZ1VwbG9hZExpbWl0KTsKKworICAgIHZv
aWQgcHJvY2Vzc1F1ZXJpZXMoKTsKKworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9j
b250ZXh0OworICAgIHNpemVfdCBtX21heFBlbmRpbmdRdWVyaWVzOworICAgIERlcXVlPE93blB0
cjxRdWVyeT4gPiBtX3BlbmRpbmdRdWVyaWVzOworICAgIERlcXVlPE93blB0cjxRdWVyeT4gPiBt
X2F2YWlsYWJsZVF1ZXJpZXM7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmNwcAppbmRleCAxNjE0ZDkzZTZiODY5YmQ2YWExNDIxZjhjMWI3YTA3
OGRlY2EzMzNmLi4wMzU5NjdkODBkMDIyZmNmMDNkNTQyNzVlMTRmZTljYmUyOGI0NTMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMzMsNyArMzMsNiBAQAog
I2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE5Nyw4ICsxOTYsMTQgQEAgdm9pZCBDQ1NpbmdsZVRocmVh
ZFByb3h5Ojpkb0NvbW1pdChDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQogICAgICAgICBtX2xh
eWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7Ci0g
ICAgICAgIHVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9s
YXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCksIG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZUNvcGllcigpLCBtX2xheWVyVHJlZUhv
c3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVVcGxvYWRlcigpLCBudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKSk7Ci0gICAgICAgIEFTU0VSVCghdXBkYXRlci5oYXNNb3JlVXBkYXRl
cygpKTsKKworICAgICAgICAvLyBDQ1RleHR1cmVVcGRhdGVyIGlzIG5vbi1ibG9ja2luZyBhbmQg
d2lsbCByZXR1cm4gd2l0aG91dCB1cGRhdGluZworICAgICAgICAvLyBhbnkgdGV4dHVyZXMgaWYg
dGhlIHVwbG9hZGVyIGlzIGJ1c3kuIFRoaXMgc2hvdWxkbid0IGJlIGEgcHJvYmxlbQorICAgICAg
ICAvLyBoZXJlIGFzIHRoZSB0aHJvdHRsZWQgdXBsb2FkZXIgaXNuJ3QgdXNlZCBpbiBzaW5nbGUg
dGhyZWFkIG1vZGUuCisgICAgICAgIC8vIEZvciBjb3JyZWN0bmVzcywgbG9vcCB1bnRpbCBubyBt
b3JlIHVwZGF0ZXMgYXJlIHBlbmRpbmcuCisgICAgICAgIHdoaWxlICh1cGRhdGVyLmhhc01vcmVV
cGRhdGVzKCkpCisgICAgICAgICAgICB1cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBs
LT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRv
cigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVDb3BpZXIo
KSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJlVXBsb2FkZXIo
KSwgMSk7CisKICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c2V0VmlzaWJsZShtX2xheWVy
VHJlZUhvc3QtPnZpc2libGUoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZmluaXNoQ29t
bWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGUxNzQzYThjOWZkOWI0NzM5NTNjYmNkNTJjOWRj
MjU3NDYzZGExYjcuLjRkOWIxZjFjZDkxMmRmNGY4ZWQwNTU4NDc0NGJlZWFkMzVjMDA5M2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC05NSwyOCArOTUsMzkgQEAgYm9v
bCBDQ1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0CiBib29sIENDVGV4dHVy
ZVVwZGF0ZXI6OnVwZGF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9j
YXRvciogYWxsb2NhdG9yLCBUZXh0dXJlQ29waWVyKiBjb3BpZXIsIFRleHR1cmVVcGxvYWRlciog
dXBsb2FkZXIsIHNpemVfdCBjb3VudCkKIHsKICAgICBzaXplX3QgaW5kZXg7Ci0gICAgc2l6ZV90
IG1heEluZGV4ID0gbWluKG1fZW50cnlJbmRleCArIGNvdW50LCBtX2VudHJpZXMuc2l6ZSgpKTsK
LSAgICBmb3IgKGluZGV4ID0gbV9lbnRyeUluZGV4OyBpbmRleCA8IG1heEluZGV4OyArK2luZGV4
KSB7Ci0gICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fZW50cmllc1tpbmRleF07Ci0gICAg
ICAgIHVwbG9hZGVyLT51cGxvYWRUZXh0dXJlKGNvbnRleHQsIGVudHJ5LnRleHR1cmUsIGFsbG9j
YXRvciwgZW50cnkuc291cmNlUmVjdCwgZW50cnkuZGVzdFJlY3QpOwotICAgIH0KIAotICAgIGJv
b2wgbW9yZVVwZGF0ZXMgPSBtYXhJbmRleCA8IG1fZW50cmllcy5zaXplKCk7CisgICAgaWYgKG1f
ZW50cmllcy5zaXplKCkgfHwgbV9wYXJ0aWFsRW50cmllcy5zaXplKCkpIHsKKyAgICAgICAgaWYg
KHVwbG9hZGVyLT5pc0J1c3koKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgQVNT
RVJUKG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpIDw9IGNvdW50KTsKLSAgICAvLyBNYWtlIHN1cmUg
dGhlIG51bWJlciBvZiB1cGRhdGVzIGluY2x1ZGluZyBwYXJ0aWFsIHVwZGF0ZXMgYXJlIG5vdCBt
b3JlCi0gICAgLy8gdGhhbiB8Y291bnR8LgotICAgIGlmICgoY291bnQgLSAoaW5kZXggLSBtX2Vu
dHJ5SW5kZXgpKSA8IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpKQotICAgICAgICBtb3JlVXBkYXRl
cyA9IHRydWU7CisgICAgICAgIHVwbG9hZGVyLT5iZWdpblVwbG9hZHMoKTsKIAotICAgIGlmICht
b3JlVXBkYXRlcykgewotICAgICAgICBtX2VudHJ5SW5kZXggPSBpbmRleDsKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQorICAgICAgICBzaXplX3QgbWF4SW5kZXggPSBtaW4obV9lbnRyeUlu
ZGV4ICsgY291bnQsIG1fZW50cmllcy5zaXplKCkpOworICAgICAgICBmb3IgKGluZGV4ID0gbV9l
bnRyeUluZGV4OyBpbmRleCA8IG1heEluZGV4OyArK2luZGV4KSB7CisgICAgICAgICAgICBVcGRh
dGVFbnRyeSYgZW50cnkgPSBtX2VudHJpZXNbaW5kZXhdOworICAgICAgICAgICAgdXBsb2FkZXIt
PnVwbG9hZFRleHR1cmUoY29udGV4dCwgZW50cnkudGV4dHVyZSwgYWxsb2NhdG9yLCBlbnRyeS5z
b3VyY2VSZWN0LCBlbnRyeS5kZXN0UmVjdCk7CisgICAgICAgIH0KKworICAgICAgICBib29sIG1v
cmVVcGxvYWRzID0gbWF4SW5kZXggPCBtX2VudHJpZXMuc2l6ZSgpOworCisgICAgICAgIEFTU0VS
VChtX3BhcnRpYWxFbnRyaWVzLnNpemUoKSA8PSBjb3VudCk7CisgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB0aGUgbnVtYmVyIG9mIHVwZGF0ZXMgaW5jbHVkaW5nIHBhcnRpYWwgdXBkYXRlcyBhcmUgbm90
IG1vcmUKKyAgICAgICAgLy8gdGhhbiB8Y291bnR8LgorICAgICAgICBpZiAoKGNvdW50IC0gKGlu
ZGV4IC0gbV9lbnRyeUluZGV4KSkgPCBtX3BhcnRpYWxFbnRyaWVzLnNpemUoKSkKKyAgICAgICAg
ICAgIG1vcmVVcGxvYWRzID0gdHJ1ZTsKKworICAgICAgICBpZiAobW9yZVVwbG9hZHMpIHsKKyAg
ICAgICAgICAgIG1fZW50cnlJbmRleCA9IGluZGV4OworICAgICAgICAgICAgdXBsb2FkZXItPmVu
ZFVwbG9hZHMoKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAg
ICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbV9wYXJ0aWFsRW50cmllcy5zaXplKCk7ICsraW5k
ZXgpIHsKKyAgICAgICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fcGFydGlhbEVudHJpZXNb
aW5kZXhdOworICAgICAgICAgICAgdXBsb2FkZXItPnVwbG9hZFRleHR1cmUoY29udGV4dCwgZW50
cnkudGV4dHVyZSwgYWxsb2NhdG9yLCBlbnRyeS5zb3VyY2VSZWN0LCBlbnRyeS5kZXN0UmVjdCk7
CisgICAgICAgIH0KIAotICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IG1fcGFydGlhbEVudHJp
ZXMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fcGFy
dGlhbEVudHJpZXNbaW5kZXhdOwotICAgICAgICB1cGxvYWRlci0+dXBsb2FkVGV4dHVyZShjb250
ZXh0LCBlbnRyeS50ZXh0dXJlLCBhbGxvY2F0b3IsIGVudHJ5LnNvdXJjZVJlY3QsIGVudHJ5LmRl
c3RSZWN0KTsKKyAgICAgICAgdXBsb2FkZXItPmVuZFVwbG9hZHMoKTsKICAgICB9CiAKICAgICBm
b3IgKGluZGV4ID0gMDsgaW5kZXggPCBtX2NvcHlFbnRyaWVzLnNpemUoKTsgKytpbmRleCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggOWFiYzFmOGU0YTRkYjdmZTYwMDQzYWQx
OGU3MDBkNWQ3MTdmZjJiOS4uNjcyYzg3MmZiOWM3YWVmNDU1ZDkxYzVkMWI2MjIyZDhkMzMwYjA5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC0xMjQsNiArMTI0LDcgQEAKICAg
ICAgICAgICAgICd0ZXN0cy9TY3JvbGxiYXJMYXllckNocm9taXVtVGVzdC5jcHAnLAogICAgICAg
ICAgICAgJ3Rlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMv
VGV4dHVyZU1hbmFnZXJUZXN0LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvVGhyb3R0bGVkVGV4
dHVyZVVwbG9hZGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1RpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9UaWxpbmdEYXRhVGVzdC5jcHAnLAog
ICAgICAgICAgICAgJ3Rlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCmlu
ZGV4IDg4NjNkYWI1ZGM4ZTVkYjBkYzVlY2JiODU4NDMxMTAxOTQ3OTlkZWUuLmY3N2Y0MDAzYzY2
NzVmNGY2ZTI0MTBlNTA4ZGQ1NmRmOWFkOTQ4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCkBAIC0xNjEsNiArMTYx
LDkgQEAgcHVibGljOgogCiBjbGFzcyBGYWtlVGV4dHVyZVVwbG9hZGVyIDogcHVibGljIFdlYkNv
cmU6OlRleHR1cmVVcGxvYWRlciB7CiBwdWJsaWM6CisgICAgdmlydHVhbCBib29sIGlzQnVzeSgp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGJlZ2luVXBsb2FkcygpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVwbG9h
ZFRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFdlYkNvcmU6Okxh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIFdlYkNvcmU6OlRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCBzb3VyY2VSZWN0LCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0IGRlc3RSZWN0KSB7IHRleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4
dCwgYWxsb2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7IH0KIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRl
c3QuY3BwCmluZGV4IDBiYWUyMjNkMGUxYjM5ODljMmU1MzQxMTIxZGY4M2M0ZTgzYjczZTguLmFi
ODBhMDU4OTgzMzJkMzhkZTY2MmZjYWI2Zjk2YmZlMzI4NGYxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0
LmNwcApAQCAtOTAsNiArOTAsOSBAQCBwdWJsaWM6CiAKIGNsYXNzIE1vY2tUZXh0dXJlVXBsb2Fk
ZXIgOiBwdWJsaWMgVGV4dHVyZVVwbG9hZGVyIHsKIHB1YmxpYzoKKyAgICBNT0NLX01FVEhPRDAo
aXNCdXN5LCBib29sKCkpOworICAgIE1PQ0tfTUVUSE9EMChiZWdpblVwbG9hZHMsIHZvaWQoKSk7
CisgICAgTU9DS19NRVRIT0QwKGVuZFVwbG9hZHMsIHZvaWQoKSk7CiAgICAgTU9DS19NRVRIT0Q1
KHVwbG9hZFRleHR1cmUsIHZvaWQoR3JhcGhpY3NDb250ZXh0M0QqLCBMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QsIGNvbnN0IElu
dFJlY3QpKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlclRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiMGRm
ZDA1OTIxNjljN2RiYjIxMDNkYTE4MDljNWIzZDA1OTU4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlclRlc3Qu
Y3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2luY2x1ZGUgIlRocm90dGxlZFRleHR1cmVVcGxvYWRlci5oIgorCisjaW5jbHVkZSAiRmFr
ZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlLmgiCisKKyNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIEZha2VXZWJH
cmFwaGljc0NvbnRleHQzRFdpdGhRdWVyeVRlc3RpbmcgOiBwdWJsaWMgRmFrZVdlYkdyYXBoaWNz
Q29udGV4dDNEIHsKK3B1YmxpYzoKKyAgICBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoUXVl
cnlUZXN0aW5nKCkgOiBtX3Jlc3VsdEF2YWlsYWJsZSgwKQorICAgIHsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0UXVlcnlPYmplY3R1aXZFWFQoV2ViR0xJZCwgR0MzRGVudW0gdHlwZSwg
R0MzRHVpbnQqIHZhbHVlKQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAg
IGNhc2UgRXh0ZW5zaW9uczNEQ2hyb21pdW06OlFVRVJZX1JFU1VMVF9BVkFJTEFCTEVfRVhUOgor
ICAgICAgICAgICAgKnZhbHVlID0gbV9yZXN1bHRBdmFpbGFibGU7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICp2YWx1ZSA9IDA7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgc2V0UmVzdWx0QXZhaWxhYmxl
KHVuc2lnbmVkIHJlc3VsdEF2YWlsYWJsZSkgeyBtX3Jlc3VsdEF2YWlsYWJsZSA9IHJlc3VsdEF2
YWlsYWJsZTsgfQorCitwcml2YXRlOgorICAgIHVuc2lnbmVkIG1fcmVzdWx0QXZhaWxhYmxlOwor
fTsKKworVEVTVChUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXJUZXN0LCBJc0J1c3kpCit7CisgICAg
R3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7CisgICAgUmVmUHRyPEdyYXBoaWNz
Q29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFw
aGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgRmFrZVdlYkdyYXBoaWNzQ29u
dGV4dDNEV2l0aFF1ZXJ5VGVzdGluZygpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVj
dGx5VG9Ib3N0V2luZG93KTsKKyAgICBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoUXVlcnlU
ZXN0aW5nJiBmYWtlQ29udGV4dCA9ICpzdGF0aWNfY2FzdDxGYWtlV2ViR3JhcGhpY3NDb250ZXh0
M0RXaXRoUXVlcnlUZXN0aW5nKj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2Vi
R3JhcGhpY3NDb250ZXh0M0QoY29udGV4dC5nZXQoKSkpOworICAgIE93blB0cjxUaHJvdHRsZWRU
ZXh0dXJlVXBsb2FkZXI+IHVwbG9hZGVyID0gVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVh
dGUoY29udGV4dCwgMik7CisKKyAgICBmYWtlQ29udGV4dC5zZXRSZXN1bHRBdmFpbGFibGUoMCk7
CisgICAgRVhQRUNUX0ZBTFNFKHVwbG9hZGVyLT5pc0J1c3koKSk7CisgICAgdXBsb2FkZXItPmJl
Z2luVXBsb2FkcygpOworICAgIHVwbG9hZGVyLT5lbmRVcGxvYWRzKCk7CisgICAgRVhQRUNUX0ZB
TFNFKHVwbG9hZGVyLT5pc0J1c3koKSk7CisgICAgdXBsb2FkZXItPmJlZ2luVXBsb2FkcygpOwor
ICAgIHVwbG9hZGVyLT5lbmRVcGxvYWRzKCk7CisgICAgRVhQRUNUX1RSVUUodXBsb2FkZXItPmlz
QnVzeSgpKTsKKworICAgIGZha2VDb250ZXh0LnNldFJlc3VsdEF2YWlsYWJsZSgxKTsKKyAgICBF
WFBFQ1RfRkFMU0UodXBsb2FkZXItPmlzQnVzeSgpKTsKKyAgICB1cGxvYWRlci0+YmVnaW5VcGxv
YWRzKCk7CisgICAgdXBsb2FkZXItPmVuZFVwbG9hZHMoKTsKKyAgICBFWFBFQ1RfRkFMU0UodXBs
b2FkZXItPmlzQnVzeSgpKTsKKyAgICB1cGxvYWRlci0+YmVnaW5VcGxvYWRzKCk7CisgICAgdXBs
b2FkZXItPmVuZFVwbG9hZHMoKTsKKyAgICBFWFBFQ1RfRkFMU0UodXBsb2FkZXItPmlzQnVzeSgp
KTsKKyAgICB1cGxvYWRlci0+YmVnaW5VcGxvYWRzKCk7CisgICAgdXBsb2FkZXItPmVuZFVwbG9h
ZHMoKTsKK30KKworfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139314</attachid>
            <date>2012-04-27 18:42:17 -0700</date>
            <delta_ts>2012-05-07 10:35:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81004-20120427214215.patch</filename>
            <type>text/plain</type>
            <size>53705</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmIxMDBmY2VmYzE4Yzg4
NmNhOTc5ZDg1OTk4M2FlYjhhNWQ0YjJjYy4uZGNmOGNlMjQ2NjFlNzQzNzdlMGMzNjc4ZDIyZmY0
YzQ0MmM3NGY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTA0LTI3ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBV
c2UgR0xfQ0hST01JVU1fY29tbWFuZF9idWZmZXJfcXVlcnkgdG8gdGhyb3R0bGUgdGV4dHVyZSB1
cGxvYWRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODEwMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyIGNsYXNzIHRoYXQgdXNlcworICAgICAgICBHTF9D
SFJPTUlVTV9jb21tYW5kX2J1ZmZlcl9xdWVyeSB0byB0aHJvdHRsZSB0ZXh0dXJlIHVwbG9hZHMg
YmFzZWQKKyAgICAgICAgb24gbnVtYmVyIG9mIGN1cnJlbnRseSBwZW5kaW5nIHF1ZXJpZXMuCisK
KyAgICAgICAgVW5pdCB0ZXN0OiBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXJUZXN0LklzQnVzeQor
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAg
ICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaDoKKyAgICAgICAgKFRleHR1
cmVVcGxvYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0
bGVkVGV4dHVyZVVwbG9hZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVlcnk6OlF1ZXJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVlcnk6On5RdWVyeSk6
CisgICAgICAgIChXZWJDb3JlOjpUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlF1ZXJ5OjpiZWdp
bik6CisgICAgICAgIChXZWJDb3JlOjpUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlF1ZXJ5Ojpl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6
aXNQZW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6
UXVlcnk6OndhaXQpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
OjpUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyOjp+VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6aXNCdXN5KToKKyAgICAgICAgKFdlYkNv
cmU6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6YmVnaW5VcGxvYWRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6ZW5kVXBsb2Fkcyk6CisgICAgICAgIChX
ZWJDb3JlOjpUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OnVwbG9hZFRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpwcm9jZXNzUXVlcmllcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RleHR1cmVVcGxvYWRlci5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChUaHJv
dHRsZWRUZXh0dXJlVXBsb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVy
ZVVwbG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAoUXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6
VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxpemVMYXllclJlbmRlcmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJbXBsKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAg
ICAgKFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlVudGhy
b3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VW50aHJv
dHRsZWRUZXh0dXJlVXBsb2FkZXI6On5VbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6aXNCdXN5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpiZWdpblVwbG9hZHMpOgor
ICAgICAgICAoV2ViQ29yZTo6VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmVuZFVwbG9hZHMp
OgorICAgICAgICAoV2ViQ29yZTo6VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OnVwbG9hZFRl
eHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlVu
dGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oOgorICAgICAg
ICAoQ0NUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5
Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQpOgorCiAyMDEyLTA0
LTI3ICBZaSBTaGVuICA8eWkuNC5zaGVuQG5va2lhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
KDExMzcyMyk6IFByZXNzaW5nIGVudGVyIGluIHRoaXMgbGlzdCBleGFtcGxlIGRlbGV0ZXMgdGhl
IHdob2xlIGxpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOTg5ZTVlOGU4OGVmMWU5
YzY0YWZkYzA0MWI4YmUwNGM1OWZiZDU4Yy4uMDc1ODQ1N2JjOTEyOTBiNTRkM2VlYmE3OWNiOWE2
NjQ0MWE1NDU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAor
MjAxMi0wNC0yNyAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtDaHJvbWl1bV0gVXNlIEdMX0NIUk9NSVVNX2NvbW1hbmRfYnVmZmVyX3F1ZXJ5IHRvIHRo
cm90dGxlIHRleHR1cmUgdXBsb2Fkcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgxMDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChGYWtlVGV4dHVyZVVwbG9hZGVyKToKKyAgICAg
ICAgKFdlYktpdFRlc3RzOjpGYWtlVGV4dHVyZVVwbG9hZGVyOjppc0J1c3kpOgorICAgICAgICAo
V2ViS2l0VGVzdHM6OkZha2VUZXh0dXJlVXBsb2FkZXI6OmJlZ2luVXBsb2Fkcyk6CisgICAgICAg
IChXZWJLaXRUZXN0czo6RmFrZVRleHR1cmVVcGxvYWRlcjo6ZW5kVXBsb2Fkcyk6CisgICAgICAg
IChXZWJLaXRUZXN0czo6RmFrZVRleHR1cmVVcGxvYWRlcjo6dXBsb2FkVGV4dHVyZSk6CisgICAg
ICAgIChXZWJLaXRUZXN0cyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NMYXllclRyZWVIb3N0
SW1wbFRlc3Q6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKToKKyAgICAgICAgKENDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJBbmREcmF3RnJhbWUpOgorICAgICAgICAoV2Vi
S2l0VGVzdHM6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1v
bi5oOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZha2VUZXh0dXJlVXBsb2FkZXI6OmlzQnVzeSk6
CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZVRleHR1cmVVcGxvYWRlcjo6YmVnaW5VcGxvYWRz
KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlVGV4dHVyZVVwbG9hZGVyOjplbmRVcGxvYWRz
KToKKyAgICAgICAgKiB0ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAg
ICAgKiB0ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKEZha2VM
YXllclJlbmRlcmVyQ2hyb21pdW06OkZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAg
ICAoRmFrZVRleHR1cmVVcGxvYWRlcik6CisgICAgICAgIChGYWtlVGV4dHVyZVVwbG9hZGVyOjpp
c0J1c3kpOgorICAgICAgICAoRmFrZVRleHR1cmVVcGxvYWRlcjo6YmVnaW5VcGxvYWRzKToKKyAg
ICAgICAgKEZha2VUZXh0dXJlVXBsb2FkZXI6OmVuZFVwbG9hZHMpOgorICAgICAgICAoRmFrZVRl
eHR1cmVVcGxvYWRlcjo6dXBsb2FkVGV4dHVyZSk6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hy
b21pdW1UZXN0OjpMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0KToKKyAgICAgICAgKFRFU1QpOgor
ICAgICAgICAqIHRlc3RzL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlclRlc3QuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRo
UXVlcnlUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6RmFrZVdlYkdyYXBoaWNzQ29udGV4dDNE
V2l0aFF1ZXJ5VGVzdGluZzo6RmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFF1ZXJ5VGVzdGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OkZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhRdWVyeVRl
c3Rpbmc6OmdldFF1ZXJ5T2JqZWN0dWl2RVhUKToKKyAgICAgICAgKFdlYktpdDo6RmFrZVdlYkdy
YXBoaWNzQ29udGV4dDNEV2l0aFF1ZXJ5VGVzdGluZzo6c2V0UmVzdWx0QXZhaWxhYmxlKToKKyAg
ICAgICAgKFdlYktpdDo6VEVTVCk6CisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHA6CisgICAgICAgIChXVEY6OlRFU1QpOgorCiAyMDEyLTA0LTI3ICBJYW4gVm9sbGlj
ayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWRkIHBhdXNl
IGFuZCByZXN1bWUgc3VwcG9ydCBmb3IgYWNjZWxlcmF0ZWQgY3NzIGFuaW1hdGlvbnMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggYzE0ZmFkZmExOTMxNGExNmVmY2U4ODIxMmZmN2M4OWM3MTc2MmM2NC4u
N2RhNTY2OTMwYjBlZGZhZDA3MmQ1OGIwNzk3OWU5MTE1NmJkNjk2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtMzU5NSw4ICszNTk1LDkgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlTGF5ZXJDaHJvbWl1bS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgnLAotICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5oJywKKyAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2Fk
ZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHAnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggOGEyYWZkMWMxMjUzOTlkNTNj
YTFlZGY3MjRlNjgyYjhkYmExZmFkOS4uZTBiNTUyZGIzNzNlNDRiMjFkY2RiOTMxYmY4YjYzMTMy
N2RlMmE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC00OCw2
ICs0OCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU3VyZmFjZUNocm9taXVtLmgiCiAjaW5jbHVkZSAi
VGV4dHVyZUNvcGllci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCisjaW5jbHVkZSAi
VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2lu
Y2x1ZGUgIlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgImNjL0NDQ2hlY2tl
cmJvYXJkRHJhd1F1YWQuaCIKQEAgLTE5Miw5ICsxOTMsOSBAQCBwcml2YXRlOgogfTsKIAogCi1Q
YXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpj
cmVhdGUoTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCitQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1
bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xp
ZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsIFBhc3NP
d25QdHI8VGV4dHVyZVVwbG9hZGVyPiB1cGxvYWRlcikKIHsKLSAgICBPd25QdHI8TGF5ZXJSZW5k
ZXJlckNocm9taXVtPiBsYXllclJlbmRlcmVyKGFkb3B0UHRyKG5ldyBMYXllclJlbmRlcmVyQ2hy
b21pdW0oY2xpZW50LCBjb250ZXh0KSkpOworICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21p
dW0+IGxheWVyUmVuZGVyZXIoYWRvcHRQdHIobmV3IExheWVyUmVuZGVyZXJDaHJvbWl1bShjbGll
bnQsIGNvbnRleHQsIHVwbG9hZGVyKSkpOwogICAgIGlmICghbGF5ZXJSZW5kZXJlci0+aW5pdGlh
bGl6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjAyLDExICsyMDMsMTMgQEAg
UGFzc093blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
Y3JlYXRlKExheWVyUmVuZGVyZXJDaHIKIH0KIAogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXll
clJlbmRlcmVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiBjbGllbnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NPd25QdHI8VGV4
dHVyZVVwbG9hZGVyPiB1cGxvYWRlcikKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1f
Y3VycmVudFJlbmRlclN1cmZhY2UoMCkKICAgICAsIG1fY3VycmVudE1hbmFnZWRUZXh0dXJlKDAp
CiAgICAgLCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQoMCkKKyAgICAsIG1fdGV4dHVyZVVwbG9h
ZGVyKHVwbG9hZGVyKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2RlZmF1bHRS
ZW5kZXJTdXJmYWNlKDApCiAgICAgLCBtX3NoYXJlZEdlb21ldHJ5UXVhZChGbG9hdFJlY3QoLTAu
NWYsIC0wLjVmLCAxLjBmLCAxLjBmKSkKQEAgLTEzNzgsNyArMTM4MSw2IEBAIGJvb2wgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0cygpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVNYW5h
Z2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY2FwYWJpbGl0aWVz
Lm1heFRleHR1cmVTaXplKTsKICAgICBtX3RleHR1cmVDb3BpZXIgPSBBY2NlbGVyYXRlZFRleHR1
cmVDb3BpZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOwotICAgIG1fdGV4dHVyZVVwbG9hZGVy
ID0gQWNjZWxlcmF0ZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOwog
ICAgIG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yID0gVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9y
OjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKICAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxs
b2NhdG9yID0gVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9jb250ZXh0LmdldCgp
KTsKICAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdUZXh0dXJlVXNhZ2VIaW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCA0NGJmMjhkOTQ4MjhiN2ZjMWZhZmRkOGI5
Y2Y5ZmRmOTRmOGExMjllLi5jYmRkNTgzNDhhM2M5NDEwOTlhZmRjODQ0ZTcwMWMxZTUxNTc5MGUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtMzcsNyArMzcsNyBAQAog
I2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJU
ZXh0dXJlQ29waWVyLmgiCi0jaW5jbHVkZSAiVGV4dHVyZVVwbG9hZGVyLmgiCisjaW5jbHVkZSAi
VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmgiCiAjaW5jbHVkZSAiVHJhY2tpbmdUZXh0dXJlQWxs
b2NhdG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogY2xhc3MgTGF5ZXJSZW5kZXJl
ckNocm9taXVtIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMYXllclJlbmRlcmVyQ2hyb21p
dW0pOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1
bT4gY3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCosIFBhc3NSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+KTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxMYXllclJlbmRlcmVyQ2hyb21p
dW0+IGNyZWF0ZShMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqLCBQYXNzUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiwgUGFzc093blB0cjxUZXh0dXJlVXBsb2FkZXI+KTsKIAogICAgIH5MYXll
clJlbmRlcmVyQ2hyb21pdW0oKTsKIApAQCAtMTQzLDcgKzE0Myw3IEBAIHByb3RlY3RlZDoKICAg
ICB2b2lkIGVuc3VyZUZyYW1lYnVmZmVyKCk7CiAgICAgYm9vbCBpc0ZyYW1lYnVmZmVyRGlzY2Fy
ZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkOyB9CiAKLSAgICBM
YXllclJlbmRlcmVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiwgUGFzc1Jl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pOworICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bShMYXll
clJlbmRlcmVyQ2hyb21pdW1DbGllbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwg
UGFzc093blB0cjxUZXh0dXJlVXBsb2FkZXI+KTsKICAgICBib29sIGluaXRpYWxpemUoKTsKIAog
cHJpdmF0ZToKQEAgLTI4NSw3ICsyODUsNyBAQCBwcml2YXRlOgogCiAgICAgT3duUHRyPFRleHR1
cmVNYW5hZ2VyPiBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcjsKICAgICBPd25QdHI8QWNj
ZWxlcmF0ZWRUZXh0dXJlQ29waWVyPiBtX3RleHR1cmVDb3BpZXI7Ci0gICAgT3duUHRyPEFjY2Vs
ZXJhdGVkVGV4dHVyZVVwbG9hZGVyPiBtX3RleHR1cmVVcGxvYWRlcjsKKyAgICBPd25QdHI8VGV4
dHVyZVVwbG9hZGVyPiBtX3RleHR1cmVVcGxvYWRlcjsKICAgICBPd25QdHI8VHJhY2tpbmdUZXh0
dXJlQWxsb2NhdG9yPiBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcjsKICAgICBPd25QdHI8VHJh
Y2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
ZXh0dXJlVXBsb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGV4dHVyZVVwbG9hZGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NTU2ZmUwZTBjYjIwNmYwM2EwNDNlM2Q2OGUyZTU2MWUyMWMwMWRmYy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwot
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1
ZGUgIlRleHR1cmVVcGxvYWRlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUFjY2VsZXJh
dGVkVGV4dHVyZVVwbG9hZGVyOjpBY2NlbGVyYXRlZFRleHR1cmVVcGxvYWRlcihQYXNzUmVmUHRy
PEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi17
Ci19Ci0KLUFjY2VsZXJhdGVkVGV4dHVyZVVwbG9hZGVyOjp+QWNjZWxlcmF0ZWRUZXh0dXJlVXBs
b2FkZXIoKQotewotfQotCi12b2lkIEFjY2VsZXJhdGVkVGV4dHVyZVVwbG9hZGVyOjp1cGxvYWRU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlKiB0ZXh0dXJlLCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJl
Y3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkKLXsKLSAgICB0ZXh0dXJlLT51
cGRhdGVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwotfQot
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UZXh0dXJlVXBsb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RleHR1cmVVcGxvYWRlci5oCmluZGV4IGFmZWQ1NGE0YWVjYzAzNGZmYWUzNjJiOWVi
MWMzZTE5ZGM4OGIwYWIuLmUzYjQ0ZmQ2YjE3ZjNmMmY5NDFhODZmMmYyYjc0MGYyNjQ1MTE0OWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rl
eHR1cmVVcGxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RleHR1cmVVcGxvYWRlci5oCkBAIC0zMSwyNyArMzEsMTIgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBUZXh0dXJlVXBsb2FkZXIgewogcHVibGljOgotICAgIHZpcnR1YWwg
dm9pZCB1cGxvYWRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QgZGVzdFJlY3QpID0gMDsKLQotcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
flRleHR1cmVVcGxvYWRlcigpIHsgfQotfTsKLQotY2xhc3MgQWNjZWxlcmF0ZWRUZXh0dXJlVXBs
b2FkZXIgOiBwdWJsaWMgVGV4dHVyZVVwbG9hZGVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShBY2NlbGVyYXRlZFRleHR1cmVVcGxvYWRlcik7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NP
d25QdHI8QWNjZWxlcmF0ZWRUZXh0dXJlVXBsb2FkZXI+IGNyZWF0ZShQYXNzUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiBjb250ZXh0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBBY2NlbGVyYXRlZFRleHR1cmVVcGxvYWRlcihjb250ZXh0KSk7Ci0gICAgfQotICAgIHZpcnR1
YWwgfkFjY2VsZXJhdGVkVGV4dHVyZVVwbG9hZGVyKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdXBs
b2FkVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0IGRlc3RSZWN0KTsKIAotcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IEFjY2VsZXJhdGVk
VGV4dHVyZVVwbG9hZGVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+KTsKLQotICAgIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OworICAgIHZpcnR1YWwgYm9vbCBpc0J1
c3koKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGJlZ2luVXBsb2FkcygpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZW5kVXBsb2FkcygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRCosIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBUZXh0
dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRl
c3RSZWN0KSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41MTgxM2M1Y2I1NTYxZjkwNTdjMTI5MmM4YTVkM2FhZWMyYzFl
MjJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcApAQCAtMCwwICsxLDE0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
KyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlRocm90dGxl
ZFRleHR1cmVVcGxvYWRlci5oIgorCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIK
KworbmFtZXNwYWNlIHsKKworLy8gTnVtYmVyIG9mIHBlbmRpbmcgdGV4dHVyZSB1cGRhdGUgcXVl
cmllcyB0byBhbGxvdy4KK3N0YXRpYyBjb25zdCBzaXplX3QgbWF4UGVuZGluZ1F1ZXJpZXMgPSAy
OworCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitU
aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlF1ZXJ5OjpRdWVyeShQYXNzUmVmUHRyPEdyYXBoaWNz
Q29udGV4dDNEPiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3F1
ZXJ5SWQoMCkKK3sKKyAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRp
Y19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkp
OworICAgIG1fcXVlcnlJZCA9IGV4dGVuc2lvbnMtPmNyZWF0ZVF1ZXJ5RVhUKCk7Cit9CisKK1Ro
cm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVlcnk6On5RdWVyeSgpCit7CisgICAgRXh0ZW5zaW9u
czNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1
bSo+KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICBleHRlbnNpb25zLT5kZWxldGVR
dWVyeUVYVChtX3F1ZXJ5SWQpOworfQorCit2b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6
UXVlcnk6OmJlZ2luKCkKK3sKKyAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9
IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkpOworICAgIGV4dGVuc2lvbnMtPmJlZ2luUXVlcnlFWFQoRXh0ZW5zaW9uczNEQ2hyb21p
dW06OkNPTU1BTkRTX0lTU1VFRF9DSFJPTUlVTSwgbV9xdWVyeUlkKTsKK30KKwordm9pZCBUaHJv
dHRsZWRUZXh0dXJlVXBsb2FkZXI6OlF1ZXJ5OjplbmQoKQoreworICAgIEV4dGVuc2lvbnMzRENo
cm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPiht
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgZXh0ZW5zaW9ucy0+ZW5kUXVlcnlFWFQo
RXh0ZW5zaW9uczNEQ2hyb21pdW06OkNPTU1BTkRTX0lTU1VFRF9DSFJPTUlVTSk7Cit9CisKK2Jv
b2wgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6aXNQZW5kaW5nKCkKK3sKKyAgICBF
eHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMz
RENocm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAgIHVuc2lnbmVkIGF2
YWlsYWJsZSA9IDE7CisgICAgZXh0ZW5zaW9ucy0+Z2V0UXVlcnlPYmplY3R1aXZFWFQobV9xdWVy
eUlkLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6UVVFUllfUkVTVUxUX0FWQUlMQUJMRV9FWFQsICZh
dmFpbGFibGUpOworICAgIHJldHVybiAhYXZhaWxhYmxlOworfQorCit2b2lkIFRocm90dGxlZFRl
eHR1cmVVcGxvYWRlcjo6UXVlcnk6OndhaXQoKQoreworICAgIEV4dGVuc2lvbnMzRENocm9taXVt
KiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgdW5zaWduZWQgcmVzdWx0OworICAgIGV4dGVuc2lv
bnMtPmdldFF1ZXJ5T2JqZWN0dWl2RVhUKG1fcXVlcnlJZCwgRXh0ZW5zaW9uczNEQ2hyb21pdW06
OlFVRVJZX1JFU1VMVF9FWFQsICZyZXN1bHQpOworfQorCitUaHJvdHRsZWRUZXh0dXJlVXBsb2Fk
ZXI6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX21heFBlbmRpbmdR
dWVyaWVzKG1heFBlbmRpbmdRdWVyaWVzKQoreworfQorCitUaHJvdHRsZWRUZXh0dXJlVXBsb2Fk
ZXI6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBjb250ZXh0LCBzaXplX3QgcGVuZGluZ1VwbG9hZExpbWl0KQorICAgIDogbV9jb250ZXh0KGNv
bnRleHQpCisgICAgLCBtX21heFBlbmRpbmdRdWVyaWVzKHBlbmRpbmdVcGxvYWRMaW1pdCkKK3sK
K30KKworVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjp+VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
KCkKK3sKK30KKworYm9vbCBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmlzQnVzeSgpCit7Cisg
ICAgcHJvY2Vzc1F1ZXJpZXMoKTsKKworICAgIGlmICghbV9hdmFpbGFibGVRdWVyaWVzLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fcGVuZGluZ1F1ZXJpZXMu
c2l6ZSgpID09IG1fbWF4UGVuZGluZ1F1ZXJpZXMpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgbV9hdmFpbGFibGVRdWVyaWVzLmFwcGVuZChRdWVyeTo6Y3JlYXRlKG1fY29udGV4dCkpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmJl
Z2luVXBsb2FkcygpCit7CisgICAgLy8gV2FpdCBmb3IgcXVlcnkgdG8gYmVjb21lIGF2YWlsYWJs
ZS4KKyAgICB3aGlsZSAoaXNCdXN5KCkpCisgICAgICAgIG1fcGVuZGluZ1F1ZXJpZXMuZmlyc3Qo
KS0+d2FpdCgpOworCisgICAgQVNTRVJUKCFtX2F2YWlsYWJsZVF1ZXJpZXMuaXNFbXB0eSgpKTsK
KyAgICBtX2F2YWlsYWJsZVF1ZXJpZXMuZmlyc3QoKS0+YmVnaW4oKTsKK30KKwordm9pZCBUaHJv
dHRsZWRUZXh0dXJlVXBsb2FkZXI6OmVuZFVwbG9hZHMoKQoreworICAgIG1fYXZhaWxhYmxlUXVl
cmllcy5maXJzdCgpLT5lbmQoKTsKKyAgICBtX3BlbmRpbmdRdWVyaWVzLmFwcGVuZChtX2F2YWls
YWJsZVF1ZXJpZXMudGFrZUZpcnN0KCkpOworfQorCit2b2lkIFRocm90dGxlZFRleHR1cmVVcGxv
YWRlcjo6dXBsb2FkVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9y
LCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpCit7Cisg
ICAgdGV4dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRl
c3RSZWN0KTsKK30KKwordm9pZCBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OnByb2Nlc3NRdWVy
aWVzKCkKK3sKKyAgICB3aGlsZSAoIW1fcGVuZGluZ1F1ZXJpZXMuaXNFbXB0eSgpKSB7CisgICAg
ICAgIGlmIChtX3BlbmRpbmdRdWVyaWVzLmZpcnN0KCktPmlzUGVuZGluZygpKQorICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgbV9hdmFpbGFibGVRdWVyaWVzLmFwcGVuZChtX3BlbmRpbmdR
dWVyaWVzLnRha2VGaXJzdCgpKTsKKyAgICB9Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTcyMDU4NjQ5YWExMWViNmU3NWNhZTg5OWFm
YWRjOTcyYmI3MmMyZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5oCkBAIC0wLDAgKzEs
ODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcl9o
CisjZGVmaW5lIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcl9oCisKKyNpbmNsdWRlICJUZXh0dXJl
VXBsb2FkZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFRocm90dGxlZFRleHR1cmVVcGxvYWRlciA6IHB1YmxpYyBUZXh0dXJlVXBs
b2FkZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRocm90dGxlZFRleHR1cmVVcGxvYWRl
cik7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8VGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyPiBjcmVhdGUoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKGNv
bnRleHQpKTsKKyAgICB9CisgICAgc3RhdGljIFBhc3NPd25QdHI8VGhyb3R0bGVkVGV4dHVyZVVw
bG9hZGVyPiBjcmVhdGUoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwgc2l6
ZV90IHBlbmRpbmdVcGxvYWRMaW1pdCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKGNvbnRleHQsIHBlbmRpbmdVcGxvYWRMaW1pdCkp
OworICAgIH0KKyAgICB2aXJ0dWFsIH5UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoKTsKKworICAg
IHZpcnR1YWwgYm9vbCBpc0J1c3koKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5V
cGxvYWRzKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50
UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KSBPVkVSUklERTsKKworcHJp
dmF0ZToKKyAgICBjbGFzcyBRdWVyeSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFz
c093blB0cjxRdWVyeT4gY3JlYXRlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRl
eHQpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBRdWVyeShjb250ZXh0KSk7IH0KKworICAgICAgICB2
aXJ0dWFsIH5RdWVyeSgpOworCisgICAgICAgIHZvaWQgYmVnaW4oKTsKKyAgICAgICAgdm9pZCBl
bmQoKTsKKyAgICAgICAgYm9vbCBpc1BlbmRpbmcoKTsKKyAgICAgICAgdm9pZCB3YWl0KCk7CisK
KyAgICBwcml2YXRlOgorICAgICAgICBleHBsaWNpdCBRdWVyeShQYXNzUmVmUHRyPEdyYXBoaWNz
Q29udGV4dDNEPik7CisKKyAgICAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRl
eHQ7CisgICAgICAgIHVuc2lnbmVkIG1fcXVlcnlJZDsKKyAgICB9OworCisgICAgVGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+KTsKKyAgICBUaHJv
dHRsZWRUZXh0dXJlVXBsb2FkZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIHNpemVf
dCBwZW5kaW5nVXBsb2FkTGltaXQpOworCisgICAgdm9pZCBwcm9jZXNzUXVlcmllcygpOworCisg
ICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CisgICAgc2l6ZV90IG1fbWF4
UGVuZGluZ1F1ZXJpZXM7CisgICAgRGVxdWU8T3duUHRyPFF1ZXJ5PiA+IG1fcGVuZGluZ1F1ZXJp
ZXM7CisgICAgRGVxdWU8T3duUHRyPFF1ZXJ5PiA+IG1fYXZhaWxhYmxlUXVlcmllczsKK307CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4
IDE0N2IyYzRmODMyZmFiYmI0NTY3ZDNhMWNmYTJkZGFjN2U4NTk4MDguLmU0OTgzYTE4OWU0MDY1
MTVjN2JmNGZiNmU4NmRhOTZlMWUyMDhhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuY3BwCkBAIC01NTksMTAgKzU1OSwxMCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdElt
cGw6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgIG1fdGltZVNvdXJjZUNsaWVudEFkYXB0
ZXItPnNldEFjdGl2ZShzaG91bGRUaWNrSW5CYWNrZ3JvdW5kKTsKIH0KIAotYm9vbCBDQ0xheWVy
VHJlZUhvc3RJbXBsOjppbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPEdyYXBoaWNz
Q29udGV4dDNEPiBjb250ZXh0KQorYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjppbml0aWFsaXpl
TGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LCBQYXNz
T3duUHRyPFRleHR1cmVVcGxvYWRlcj4gdXBsb2FkZXIpCiB7CiAgICAgT3duUHRyPExheWVyUmVu
ZGVyZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJlcjsKLSAgICBsYXllclJlbmRlcmVyID0gTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpjcmVhdGUodGhpcywgY29udGV4dCk7CisgICAgbGF5ZXJSZW5kZXJl
ciA9IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKHRoaXMsIGNvbnRleHQsIHVwbG9hZGVy
KTsKIAogICAgIC8vIFNpbmNlIHdlIG5vdyBoYXZlIGEgbmV3IGNvbnRleHQvbGF5ZXJSZW5kZXJl
ciwgd2UgY2Fubm90IGNvbnRpbnVlIHRvIHVzZSB0aGUgb2xkCiAgICAgLy8gcmVzb3VyY2VzIChp
LmUuIHJlbmRlclN1cmZhY2VzIGFuZCB0ZXh0dXJlIElEcykuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmgKaW5kZXggNDQyMWU0OWMwODYzMjU4MzYyNTljZWE3OTEyYzYwZDI2OTk5
ZGMzYy4uNTliOGQ3MzUwZDcwZGYzNTRkM2YwYjM1MTY2N2Y2ZTBiNDRjYTQ1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZygpOwogICAgIGludCBmcmFtZU51bWJlcigpIGNv
bnN0IHsgcmV0dXJuIG1fZnJhbWVOdW1iZXI7IH0KIAotICAgIGJvb2wgaW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pOworICAgIGJvb2wgaW5pdGlh
bGl6ZUxheWVyUmVuZGVyZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIFBhc3NPd25Q
dHI8VGV4dHVyZVVwbG9hZGVyPik7CiAgICAgYm9vbCBpc0NvbnRleHRMb3N0KCk7CiAgICAgTGF5
ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKCkgeyByZXR1cm4gbV9sYXllclJlbmRl
cmVyLmdldCgpOyB9CiAgICAgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJS
ZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmNwcAppbmRleCA1NjFiMTQyYzZhMjFkOGM3NTkxYTYyMGM0NGZkYmJjNzIxZDE2MDYz
Li40MWYwYTBiNjEwNzIxZjQ5YjAyMzcwY2MxYWNlZTcwZTNiYzQ1ZDcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMzQsMTEgKzM0LDI4IEBACiAjaW5jbHVk
ZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgog
Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlciA6IHB1YmxpYyBU
ZXh0dXJlVXBsb2FkZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVudGhyb3R0bGVkVGV4
dHVyZVVwbG9hZGVyKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxVbnRocm90dGxl
ZFRleHR1cmVVcGxvYWRlcj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoKSk7CisgICAgfQorICAgIHZpcnR1YWwg
flVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNC
dXN5KCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5VcGxvYWRzKCkg
eyB9CisgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
dXBsb2FkVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25z
dCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpIHsgdGV4dHVyZS0+
dXBkYXRlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsgfQor
Citwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoKSB7
IH0KK307CisKIFBhc3NPd25QdHI8Q0NQcm94eT4gQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y3JlYXRl
KENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IENDU2luZ2xlVGhyZWFkUHJveHkobGF5ZXJUcmVlSG9zdCkpOwpAQCAtMTM4LDcgKzE1NSw3
IEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKQog
ICAgIEFTU0VSVChtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbik7CiAgICAgewogICAgICAg
ICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKLSAgICAgICAgYm9vbCBvayA9IG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKG1fY29udGV4dEJlZm9yZUlu
aXRpYWxpemF0aW9uLnJlbGVhc2UoKSk7CisgICAgICAgIGJvb2wgb2sgPSBtX2xheWVyVHJlZUhv
c3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihtX2NvbnRleHRCZWZvcmVJbml0aWFsaXph
dGlvbi5yZWxlYXNlKCksIFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUoKSk7CiAg
ICAgICAgIGlmIChvaykgewogICAgICAgICAgICAgbV9sYXllclJlbmRlcmVySW5pdGlhbGl6ZWQg
PSB0cnVlOwogICAgICAgICAgICAgbV9sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzRm9yTWFpblRo
cmVhZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsK
QEAgLTE2Miw3ICsxNzksNyBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29u
dGV4dCgpCiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFk
KG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKLSAgICAg
ICAgaW5pdGlhbGl6ZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5k
ZXJlcihjb250ZXh0KTsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBs
LT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LCBVbnRocm90dGxlZFRleHR1cmVVcGxv
YWRlcjo6Y3JlYXRlKCkpOwogICAgICAgICBpZiAoaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgICAg
IG1fbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllc0Zvck1haW5UaHJlYWQgPSBtX2xheWVyVHJlZUhv
c3RJbXBsLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CiAgICAgICAgIH0KQEAgLTIwMyw4
ICsyMjAsMTQgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdChDQ1RleHR1cmVV
cGRhdGVyJiB1cGRhdGVyKQogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1p
dCgpOwogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQo
bV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7Ci0gICAgICAgIHVwZGF0ZXIudXBkYXRlKG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNU
ZXh0dXJlQWxsb2NhdG9yKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+
dGV4dHVyZUNvcGllcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRl
eHR1cmVVcGxvYWRlcigpLCBudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7Ci0gICAgICAg
IEFTU0VSVCghdXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKKworICAgICAgICAvLyBDQ1RleHR1
cmVVcGRhdGVyIGlzIG5vbi1ibG9ja2luZyBhbmQgd2lsbCByZXR1cm4gd2l0aG91dCB1cGRhdGlu
ZworICAgICAgICAvLyBhbnkgdGV4dHVyZXMgaWYgdGhlIHVwbG9hZGVyIGlzIGJ1c3kuIFRoaXMg
c2hvdWxkbid0IGJlIGEgcHJvYmxlbQorICAgICAgICAvLyBoZXJlIGFzIHRoZSB0aHJvdHRsZWQg
dXBsb2FkZXIgaXNuJ3QgdXNlZCBpbiBzaW5nbGUgdGhyZWFkIG1vZGUuCisgICAgICAgIC8vIEZv
ciBjb3JyZWN0bmVzcywgbG9vcCB1bnRpbCBubyBtb3JlIHVwZGF0ZXMgYXJlIHBlbmRpbmcuCisg
ICAgICAgIHdoaWxlICh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpCisgICAgICAgICAgICB1cGRh
dGVyLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5s
YXllclJlbmRlcmVyKCktPnRleHR1cmVDb3BpZXIoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5
ZXJSZW5kZXJlcigpLT50ZXh0dXJlVXBsb2FkZXIoKSwgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVz
KCkpOworCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpc2libGUobV9sYXllclRy
ZWVIb3N0LT52aXNpYmxlKCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmZpbmlzaENvbW1p
dE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBk
YXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCBlMTc0M2E4YzlmZDliNDczOTUzY2JjZDUyYzlkYzI1
NzQ2M2RhMWI3Li5hYjU2ZDFmMzc3YTJjNmY4Y2U1YjcyM2NjZDY1MWFhZWUxNGJlOWExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApAQCAtOTIsMzEgKzkyLDQyIEBAIGJvb2wg
Q0NUZXh0dXJlVXBkYXRlcjo6aGFzTW9yZVVwZGF0ZXMoKSBjb25zdAogICAgIHJldHVybiBtX2Vu
dHJpZXMuc2l6ZSgpIHx8IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpIHx8IG1fY29weUVudHJpZXMu
c2l6ZSgpIHx8IG1fbWFuYWdlZENvcHlFbnRyaWVzLnNpemUoKTsKIH0KIAotYm9vbCBDQ1RleHR1
cmVVcGRhdGVyOjp1cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvciwgVGV4dHVyZUNvcGllciogY29waWVyLCBUZXh0dXJlVXBsb2FkZXIq
IHVwbG9hZGVyLCBzaXplX3QgY291bnQpCit2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBU
ZXh0dXJlQ29waWVyKiBjb3BpZXIsIFRleHR1cmVVcGxvYWRlciogdXBsb2FkZXIsIHNpemVfdCBj
b3VudCkKIHsKICAgICBzaXplX3QgaW5kZXg7Ci0gICAgc2l6ZV90IG1heEluZGV4ID0gbWluKG1f
ZW50cnlJbmRleCArIGNvdW50LCBtX2VudHJpZXMuc2l6ZSgpKTsKLSAgICBmb3IgKGluZGV4ID0g
bV9lbnRyeUluZGV4OyBpbmRleCA8IG1heEluZGV4OyArK2luZGV4KSB7Ci0gICAgICAgIFVwZGF0
ZUVudHJ5JiBlbnRyeSA9IG1fZW50cmllc1tpbmRleF07Ci0gICAgICAgIHVwbG9hZGVyLT51cGxv
YWRUZXh0dXJlKGNvbnRleHQsIGVudHJ5LnRleHR1cmUsIGFsbG9jYXRvciwgZW50cnkuc291cmNl
UmVjdCwgZW50cnkuZGVzdFJlY3QpOwotICAgIH0KIAotICAgIGJvb2wgbW9yZVVwZGF0ZXMgPSBt
YXhJbmRleCA8IG1fZW50cmllcy5zaXplKCk7CisgICAgaWYgKG1fZW50cmllcy5zaXplKCkgfHwg
bV9wYXJ0aWFsRW50cmllcy5zaXplKCkpIHsKKyAgICAgICAgaWYgKHVwbG9hZGVyLT5pc0J1c3ko
KSkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX3BhcnRpYWxFbnRyaWVzLnNp
emUoKSA8PSBjb3VudCk7Ci0gICAgLy8gTWFrZSBzdXJlIHRoZSBudW1iZXIgb2YgdXBkYXRlcyBp
bmNsdWRpbmcgcGFydGlhbCB1cGRhdGVzIGFyZSBub3QgbW9yZQotICAgIC8vIHRoYW4gfGNvdW50
fC4KLSAgICBpZiAoKGNvdW50IC0gKGluZGV4IC0gbV9lbnRyeUluZGV4KSkgPCBtX3BhcnRpYWxF
bnRyaWVzLnNpemUoKSkKLSAgICAgICAgbW9yZVVwZGF0ZXMgPSB0cnVlOworICAgICAgICB1cGxv
YWRlci0+YmVnaW5VcGxvYWRzKCk7CiAKLSAgICBpZiAobW9yZVVwZGF0ZXMpIHsKLSAgICAgICAg
bV9lbnRyeUluZGV4ID0gaW5kZXg7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KKyAgICAg
ICAgc2l6ZV90IG1heEluZGV4ID0gbWluKG1fZW50cnlJbmRleCArIGNvdW50LCBtX2VudHJpZXMu
c2l6ZSgpKTsKKyAgICAgICAgZm9yIChpbmRleCA9IG1fZW50cnlJbmRleDsgaW5kZXggPCBtYXhJ
bmRleDsgKytpbmRleCkgeworICAgICAgICAgICAgVXBkYXRlRW50cnkmIGVudHJ5ID0gbV9lbnRy
aWVzW2luZGV4XTsKKyAgICAgICAgICAgIHVwbG9hZGVyLT51cGxvYWRUZXh0dXJlKGNvbnRleHQs
IGVudHJ5LnRleHR1cmUsIGFsbG9jYXRvciwgZW50cnkuc291cmNlUmVjdCwgZW50cnkuZGVzdFJl
Y3QpOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBtb3JlVXBsb2FkcyA9IG1heEluZGV4IDwg
bV9lbnRyaWVzLnNpemUoKTsKKworICAgICAgICBBU1NFUlQobV9wYXJ0aWFsRW50cmllcy5zaXpl
KCkgPD0gY291bnQpOworICAgICAgICAvLyBXZSBuZWVkIGFub3RoZXIgdXBkYXRlIGJhdGNoIGlm
IHRoZSBudW1iZXIgb2YgdXBkYXRlcyByZW1haW5pbmcKKyAgICAgICAgLy8gaW4gfGNvdW50fCBp
cyBncmVhdGVyIHRoYW4gdGhlIHJlbWFpbmluZyBwYXJ0aWFsIGVudHJpZXMuCisgICAgICAgIGlm
ICgoY291bnQgLSAoaW5kZXggLSBtX2VudHJ5SW5kZXgpKSA8IG1fcGFydGlhbEVudHJpZXMuc2l6
ZSgpKQorICAgICAgICAgICAgbW9yZVVwbG9hZHMgPSB0cnVlOworCisgICAgICAgIGlmIChtb3Jl
VXBsb2FkcykgeworICAgICAgICAgICAgbV9lbnRyeUluZGV4ID0gaW5kZXg7CisgICAgICAgICAg
ICB1cGxvYWRlci0+ZW5kVXBsb2FkcygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbV9wYXJ0aWFsRW50cmllcy5zaXpl
KCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fcGFydGlh
bEVudHJpZXNbaW5kZXhdOworICAgICAgICAgICAgdXBsb2FkZXItPnVwbG9hZFRleHR1cmUoY29u
dGV4dCwgZW50cnkudGV4dHVyZSwgYWxsb2NhdG9yLCBlbnRyeS5zb3VyY2VSZWN0LCBlbnRyeS5k
ZXN0UmVjdCk7CisgICAgICAgIH0KIAotICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IG1fcGFy
dGlhbEVudHJpZXMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRy
eSA9IG1fcGFydGlhbEVudHJpZXNbaW5kZXhdOwotICAgICAgICB1cGxvYWRlci0+dXBsb2FkVGV4
dHVyZShjb250ZXh0LCBlbnRyeS50ZXh0dXJlLCBhbGxvY2F0b3IsIGVudHJ5LnNvdXJjZVJlY3Qs
IGVudHJ5LmRlc3RSZWN0KTsKKyAgICAgICAgdXBsb2FkZXItPmVuZFVwbG9hZHMoKTsKICAgICB9
CiAKICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBtX2NvcHlFbnRyaWVzLnNpemUoKTsgKytp
bmRleCkgewpAQCAtMTM2LDcgKzE0Nyw2IEBAIGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRl
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvCiAKICAg
ICAvLyBJZiBubyBlbnRyaWVzIGxlZnQgdG8gcHJvY2VzcywgYXV0by1jbGVhci4KICAgICBjbGVh
cigpOwotICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBDQ1RleHR1cmVVcGRhdGVyOjpjbGVh
cigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKaW5kZXggMDE1MDhiZmEyMjQ1ZWIzZThk
OTJjMTAxZTE2MTExYWEwNzNkZWZjYS4uMjRkODk2ZjJiNTkxMjA5MDA0MWE0MzNmMTY2NTFkNjIz
YzBkYjYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDksOCArNDksOCBA
QCBwdWJsaWM6CiAKICAgICBib29sIGhhc01vcmVVcGRhdGVzKCkgY29uc3Q7CiAKLSAgICAvLyBV
cGRhdGUgc29tZSB0ZXh0dXJlcy4gUmV0dXJucyB0cnVlIGlmIG1vcmUgdGV4dHVyZXMgbGVmdCB0
byBwcm9jZXNzLgotICAgIGJvb2wgdXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFs
bG9jYXRvciosIFRleHR1cmVDb3BpZXIqLCBUZXh0dXJlVXBsb2FkZXIqLCBzaXplX3QgY291bnQp
OworICAgIC8vIFVwZGF0ZSBzb21lIHRleHR1cmVzLgorICAgIHZvaWQgdXBkYXRlKEdyYXBoaWNz
Q29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIFRleHR1cmVDb3BpZXIqLCBUZXh0dXJlVXBs
b2FkZXIqLCBzaXplX3QgY291bnQpOwogCiAgICAgdm9pZCBjbGVhcigpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwCmluZGV4IGFjYmZhNTNlYTJkZjNjNDVjYzhiZjNjNDgxNTIxMWZhZWMy
NWFmN2EuLjkzMmE4ZjY3Y2NjZDdlOThlYmM0NjExMjNkMTNjZTU4MThmYTllZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC03ODcsNyArNzg3LDggQEAgdm9pZCBDQ1RocmVhZFBy
b3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVu
dCogY29tcGwKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXJPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFk
KCkpOwogICAgIEFTU0VSVChtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbk9uSW1wbFRocmVh
ZCk7Ci0gICAgKmluaXRpYWxpemVTdWNjZWVkZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0
aWFsaXplTGF5ZXJSZW5kZXJlcihtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbk9uSW1wbFRo
cmVhZC5yZWxlYXNlKCkpOworICAgIE93blB0cjxUZXh0dXJlVXBsb2FkZXI+IHVwbG9hZGVyID0g
VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUobV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6
YXRpb25PbkltcGxUaHJlYWQuZ2V0KCkpOworICAgICppbml0aWFsaXplU3VjY2VlZGVkID0gbV9s
YXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIobV9jb250ZXh0QmVmb3Jl
SW5pdGlhbGl6YXRpb25PbkltcGxUaHJlYWQucmVsZWFzZSgpLCB1cGxvYWRlci5yZWxlYXNlKCkp
OwogICAgIGlmICgqaW5pdGlhbGl6ZVN1Y2NlZWRlZCkgewogICAgICAgICAqY2FwYWJpbGl0aWVz
ID0gbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpOwogICAg
ICAgICBpZiAoY2FwYWJpbGl0aWVzLT51c2luZ1N3YXBDb21wbGV0ZUNhbGxiYWNrKQpAQCAtODM3
LDcgKzgzOCw4IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhy
ZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBHCiAgICAgVFJBQ0VfRVZFTlQwKCJj
YyIsICJDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQiKTsKICAgICBB
U1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRlQ29udGVu
dHNUZXh0dXJlc09uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1
cmVBbGxvY2F0b3IoKSk7Ci0gICAgKnJlY3JlYXRlU3VjY2VlZGVkID0gbV9sYXllclRyZWVIb3N0
SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoYWRvcHRSZWYoY29udGV4dFB0cikpOworICAg
IE93blB0cjxUZXh0dXJlVXBsb2FkZXI+IHVwbG9hZGVyID0gVGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyOjpjcmVhdGUoY29udGV4dFB0cik7CisgICAgKnJlY3JlYXRlU3VjY2VlZGVkID0gbV9sYXll
clRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoYWRvcHRSZWYoY29udGV4dFB0
ciksIHVwbG9hZGVyLnJlbGVhc2UoKSk7CiAgICAgaWYgKCpyZWNyZWF0ZVN1Y2NlZWRlZCkgewog
ICAgICAgICAqY2FwYWJpbGl0aWVzID0gbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllcygpOwogICAgICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+ZGlkUmVj
cmVhdGVDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCAwZTgyMjhh
NmU4OTBkNWYzNzQwNDdmYzNhODE3MWI4OWQxMzg5YWE5Li5jMTg4ODM0ZTM2MzYxMGQ5YTBiOGUz
MjJlY2Y0YTk1ZDQ0OTdjNjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTEy
Niw2ICsxMjYsNyBAQAogICAgICAgICAgICAgJ3Rlc3RzL1Njcm9sbGJhckxheWVyQ2hyb21pdW1U
ZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvVGV4dHVyZUNvcGllclRlc3QuY3BwJywKICAg
ICAgICAgICAgICd0ZXN0cy9UZXh0dXJlTWFuYWdlclRlc3QuY3BwJywKKyAgICAgICAgICAgICd0
ZXN0cy9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVz
dHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1RpbGlu
Z0RhdGFUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvVHJlZVN5bmNocm9uaXplclRlc3Qu
Y3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggMTAxOGUxNWEwNThlMTg4MmIyYjU5MTkyNDU0ZGUz
NTI3NGU5MDk4Ni4uZmZjZDRjYjRkYTUxMzY5ZjQ2YzNlNmE0NGFhMzg4NDI5Y2ZmNzQ3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdC5jcHAKQEAgLTUxLDYgKzUxLDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXRU
ZXN0czsKIAogbmFtZXNwYWNlIHsKIAorY2xhc3MgRmFrZVRleHR1cmVVcGxvYWRlciA6IHB1Ymxp
YyBXZWJDb3JlOjpUZXh0dXJlVXBsb2FkZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBp
c0J1c3koKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBiZWdpblVwbG9hZHMo
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2FkcygpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCB1cGxvYWRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNv
bnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkgeyB0ZXh0dXJl
LT51cGRhdGVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOyB9
Cit9OworCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0LCBwdWJsaWMgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCB7CiBwdWJsaWM6CiAgICAgQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QoKQpAQCAtMTE0LDkgKzEyMiwxNCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBsYXllci5yZWxlYXNlKCk7CiAgICAgfQogCisgICAgdm9pZCBpbml0aWFsaXpl
TGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KQorICAg
IHsKKyAgICAgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCwg
YWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIoKSkpOworICAgIH0KKwogICAgIHZvaWQg
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJBbmREcmF3RnJhbWUoKQogICAgIHsKLSAgICAgICAgbV9o
b3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpKTsKKyAgICAg
ICAgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpKTsKICAgICAgICAgQ0NM
YXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOwogICAgICAgICBFWFBFQ1RfVFJVRSht
X2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CiAgICAgICAgIG1faG9zdEltcGwtPmRy
YXdMYXllcnMoZnJhbWUpOwpAQCAtNTA3LDcgKzUyMCw3IEBAIHByaXZhdGU6CiAKIFRFU1RfRihD
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgZGlkRHJhd05vdENhbGxlZE9uSGlkZGVuTGF5ZXIpCiB7
Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgp
KTsKKyAgICBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCkpOwogCiAgICAg
Ly8gRW5zdXJlIHZpc2libGVMYXllclJlY3QgZm9yIHJvb3QgbGF5ZXIgaXMgZW1wdHkKICAgICBt
X2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgwLCAwKSk7CkBAIC01NDcsNyArNTYw
LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkaWREcmF3Tm90Q2FsbGVkT25I
aWRkZW5MYXllcikKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkaWREcmF3Q2Fs
bGVkT25BbGxMYXllcnMpCiB7Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIoY3JlYXRlQ29udGV4dCgpKTsKKyAgICBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVD
b250ZXh0KCkpOwogICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAx
MCkpOwogCiAgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKERpZERyYXdDaGVja0xheWVyOjpj
cmVhdGUoMCkpOwpAQCAtNjAwLDcgKzYxMyw3IEBAIHByaXZhdGU6CiAKIFRFU1RfRihDQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdCwgcHJlcGFyZVRvRHJhd0ZhaWxzV2hlbkFuaW1hdGlvblVzZXNDaGVj
a2VyYm9hcmQpCiB7Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3Jl
YXRlQ29udGV4dCgpKTsKKyAgICBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0
KCkpOwogICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwog
CiAgICAgLy8gV2hlbiB0aGUgdGV4dHVyZSBpcyBub3QgbWlzc2luZywgd2UgZHJhdyBhcyB1c3Vh
bC4KQEAgLTk5MSw3ICsxMDA0LDcgQEAgcHJpdmF0ZToKIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NTc4MwogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogewotICAgIG1faG9zdEltcGwt
PmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSk7CisgICAgaW5pdGlhbGl6
ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpKTsKICAgICBtX2hvc3RJbXBsLT5zZXRWaWV3
cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKIAogICAgIHsKQEAgLTEyMDksNyArMTIyMiw3IEBA
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09w
YXF1ZUxheWVycykKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB2aWV3cG9ydENv
dmVyZWQpCiB7Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRl
Q29udGV4dCgpKTsKKyAgICBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCkp
OwogICAgIG1faG9zdEltcGwtPnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6Z3JheSk7CiAKICAg
ICBJbnRTaXplIHZpZXdwb3J0U2l6ZSgxMDAsIDEwMCk7CkBAIC0xMzIwLDcgKzEzMzMsNyBAQCBU
RVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHJlc2hhcGVOb3RDYWxsZWRVbnRpbERyYXcp
CiB7CiAgICAgUmVzaGFwZVRyYWNrZXJDb250ZXh0KiByZXNoYXBlVHJhY2tlciA9IG5ldyBSZXNo
YXBlVHJhY2tlckNvbnRleHQoKTsKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRl
eHQgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21X
ZWJDb250ZXh0KGFkb3B0UHRyKHJlc2hhcGVUcmFja2VyKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJl
bmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5
ZXJSZW5kZXJlcihjb250ZXh0KTsKKyAgICBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0
KTsKICAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKIAog
ICAgIENDTGF5ZXJJbXBsKiByb290ID0gbmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDEpOwpA
QCAtMTM3MCw3ICsxMzgzLDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYXJ0
aWFsU3dhcFJlY2VpdmVzRGFtYWdlUmVjdCkKICAgICBDQ1NldHRpbmdzIHNldHRpbmdzOwogICAg
IHNldHRpbmdzLnBhcnRpYWxTd2FwRW5hYmxlZCA9IHRydWU7CiAgICAgT3duUHRyPENDTGF5ZXJU
cmVlSG9zdEltcGw+IGxheWVyVHJlZUhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3Jl
YXRlKHNldHRpbmdzLCB0aGlzKTsKLSAgICBsYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXIoY29udGV4dCk7CisgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVM
YXllclJlbmRlcmVyKGNvbnRleHQsIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKCkp
KTsKICAgICBsYXllclRyZWVIb3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoNTAwLCA1
MDApKTsKIAogICAgIENDTGF5ZXJJbXBsKiByb290ID0gbmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJ
bXBsKDEpOwpAQCAtMTQ1Niw3ICsxNDY5LDcgQEAgcHJpdmF0ZToKIAogVEVTVF9GKENDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LCBjb250ZXh0TG9zdEFuZFJlc3RvcmVkTm90aWZpY2F0aW9uU2VudFRv
QWxsTGF5ZXJzKQogewotICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNy
ZWF0ZUNvbnRleHQoKSk7CisgICAgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4
dCgpKTsKICAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsK
IAogICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihDb250ZXh0TG9zdE5vdGlmaWNhdGlvbkNo
ZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7CkBAIC0xNDcyLDcgKzE0ODUsNyBAQCBURVNUX0YoQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QsIGNvbnRleHRMb3N0QW5kUmVzdG9yZWROb3RpZmljYXRpb25TZW50
VG9BbGxMYXllcgogICAgIEVYUEVDVF9GQUxTRShsYXllcjEtPmRpZExvc2VDb250ZXh0Q2FsbGVk
KCkpOwogICAgIEVYUEVDVF9GQUxTRShsYXllcjItPmRpZExvc2VDb250ZXh0Q2FsbGVkKCkpOwog
Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgp
KTsKKyAgICBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCkpOwogCiAgICAg
RVhQRUNUX1RSVUUocm9vdC0+ZGlkTG9zZUNvbnRleHRDYWxsZWQoKSk7CiAgICAgRVhQRUNUX1RS
VUUobGF5ZXIxLT5kaWRMb3NlQ29udGV4dENhbGxlZCgpKTsKQEAgLTE0ODcsNyArMTUwMCw3IEBA
IHB1YmxpYzoKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgZmluaXNoQWxsUmVuZGVy
aW5nQWZ0ZXJDb250ZXh0TG9zdCkKIHsKICAgICAvLyBUaGUgY29udGV4dCBpbml0aWFsaXphdGlv
biB3aWxsIGZhaWwsIGJ1dCB3ZSBzaG91bGQgc3RpbGwgYmUgYWJsZSB0byBjYWxsIGZpbmlzaEFs
bFJlbmRlcmluZygpIHdpdGhvdXQgYW55IGlsbCBlZmZlY3RzLgotICAgIG1faG9zdEltcGwtPmlu
aXRpYWxpemVMYXllclJlbmRlcmVyKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZha2VXZWJHcmFwaGljc0Nv
bnRleHQzRE1ha2VDdXJyZW50RmFpbHMpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0
bHlUb0hvc3RXaW5kb3cpKTsKKyAgICBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcihHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0
UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RNYWtlQ3VycmVudEZhaWxzKSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSk7CiAgICAgbV9ob3N0SW1w
bC0+ZmluaXNoQWxsUmVuZGVyaW5nKCk7CiB9CiAKQEAgLTE1MDMsNyArMTUxNiw3IEBAIHByaXZh
dGU6CiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsYmFyTGF5ZXJMb3N0
Q29udGV4dCkKIHsKLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVh
dGVDb250ZXh0KCkpOworICAgIGluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQo
KSk7CiAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7CiAK
ICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoU2Nyb2xsYmFyTGF5ZXJGYWtlUGFpbnQ6OmNy
ZWF0ZSgwKSk7CkBAIC0xNTIwLDcgKzE1MzMsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QsIHNjcm9sbGJhckxheWVyTG9zdENvbnRleHQpCiAgICAgICAgIC8vIFNjcm9sbGJhciBs
YXllciBzaG91bGQgYWx3YXlzIGdlbmVyYXRlIHF1YWRzLCBldmVuIGFmdGVyIGxvc3QgY29udGV4
dAogICAgICAgICBFWFBFQ1RfR1QocmVuZGVyUGFzcy0+cXVhZExpc3QoKS5zaXplKCksIDB1KTsK
ICAgICAgICAgbV9ob3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7Ci0gICAgICAgIG1f
aG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSk7CisgICAg
ICAgIGluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSk7CiAgICAgfQogfQog
CkBAIC0xNjUzLDcgKzE2NjYsNyBAQCBwcml2YXRlOgogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QsIGRvbnRVc2VPbGRSZXNvdXJjZXNBZnRlckxvc3RDb250ZXh0KQogewotICAgIG1f
aG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSk7CisgICAg
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpKTsKICAgICBtX2hvc3RJbXBs
LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKIAogICAgIE93blB0cjxDQ0xheWVy
SW1wbD4gcm9vdExheWVyKENDTGF5ZXJJbXBsOjpjcmVhdGUoMCkpOwpAQCAtMTY5OCw3ICsxNzEx
LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkb250VXNlT2xkUmVzb3VyY2Vz
QWZ0ZXJMb3N0Q29udGV4dCkKIAogICAgIC8vIExvc2UgdGhlIGNvbnRleHQsIHJlcGxhY2luZyBp
dCB3aXRoIGEgU3RyaWN0V2ViR3JhcGhpY3NDb250ZXh0M0QsIHRoYXQKICAgICAvLyB3aWxsIHdh
cm4gaWYgYW55IHJlc291cmNlIGZyb20gdGhlIHByZXZpb3VzIGNvbnRleHQgZ2V0cyB1c2VkLgot
ICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKFN0cmljdFdlYkdyYXBoaWNz
Q29udGV4dDNEOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKSk7CisgICAgaW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIoU3RyaWN0V2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUdyYXBoaWNzQ29udGV4
dCgpKTsKICAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7
CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgbV9ob3N0SW1wbC0+ZGlk
RHJhd0FsbExheWVycyhmcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCmluZGV4IGMwMjhlYTcyNWE2MmE2NWIzMDVl
ZjEyMTcwOWIyMWQ0ZDQzZGQ0ZjYuLjRlYjg3NWIxZWMzNzg5MWM1ODY3ODEyM2E0MWNjMzIyYzVk
ZGQ5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExh
eWVyVGVzdENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxl
ZExheWVyVGVzdENvbW1vbi5oCkBAIC0xNjEsNiArMTYxLDkgQEAgcHVibGljOgogCiBjbGFzcyBG
YWtlVGV4dHVyZVVwbG9hZGVyIDogcHVibGljIFdlYkNvcmU6OlRleHR1cmVVcGxvYWRlciB7CiBw
dWJsaWM6CisgICAgdmlydHVhbCBib29sIGlzQnVzeSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCB2b2lkIGJlZ2luVXBsb2FkcygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxv
YWRzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUqIHRleHR1cmUsIFdlYkNvcmU6OlRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0IGRlc3RS
ZWN0KSB7IHRleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCBzb3VyY2VSZWN0
LCBkZXN0UmVjdCk7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDZjYzczZjIyZTA0
NmQ5NmFiNzliZjI5OTRkMmQyNGNjZDYzYzQ2NTcuLmNiZDdhMzhhN2ZmNjViYzI1MTUxNGE4ZGRh
OGQwOWQyNDY4YTVlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtOTAsNiArOTAsOSBAQCBw
dWJsaWM6CiAKIGNsYXNzIE1vY2tUZXh0dXJlVXBsb2FkZXIgOiBwdWJsaWMgVGV4dHVyZVVwbG9h
ZGVyIHsKIHB1YmxpYzoKKyAgICBNT0NLX01FVEhPRDAoaXNCdXN5LCBib29sKCkpOworICAgIE1P
Q0tfTUVUSE9EMChiZWdpblVwbG9hZHMsIHZvaWQoKSk7CisgICAgTU9DS19NRVRIT0QwKGVuZFVw
bG9hZHMsIHZvaWQoKSk7CiAgICAgTU9DS19NRVRIT0Q1KHVwbG9hZFRleHR1cmUsIHZvaWQoR3Jh
cGhpY3NDb250ZXh0M0QqLCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgVGV4dHVyZUFs
bG9jYXRvciosIGNvbnN0IEludFJlY3QsIGNvbnN0IEludFJlY3QpKTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1
bVRlc3QuY3BwCmluZGV4IDk5M2JhOTUzMDhiNWEzN2RmYTMzOTRlNmZhMzgwYmI5OTg4ZTgyMGEu
LmM4OTU3MTQ5Y2U2MDZmOWRjNzQxMmI1OTk1ZWFiMDYxMWU5Yzc0YjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1U
ZXN0LmNwcApAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBGYWtlTGF5ZXJSZW5k
ZXJlckNocm9taXVtIDogcHVibGljIExheWVyUmVuZGVyZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0g
ICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bShMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQq
IGNsaWVudCwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkgOiBMYXllclJl
bmRlcmVyQ2hyb21pdW0oY2xpZW50LCBjb250ZXh0KSB7IH0KKyAgICBGYWtlTGF5ZXJSZW5kZXJl
ckNocm9taXVtKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRy
PEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LCBQYXNzT3duUHRyPFRleHR1cmVVcGxvYWRlcj4g
dXBsb2FkZXIpIDogTGF5ZXJSZW5kZXJlckNocm9taXVtKGNsaWVudCwgY29udGV4dCwgdXBsb2Fk
ZXIpIHsgfQogCiAgICAgLy8gTGF5ZXJSZW5kZXJlckNocm9taXVtIG1ldGhvZHMuCiAKQEAgLTk5
LDYgKzk5LDE0IEBAIHB1YmxpYzoKICAgICB1c2luZyBMYXllclJlbmRlcmVyQ2hyb21pdW06Omlz
RnJhbWVidWZmZXJEaXNjYXJkZWQ7CiB9OwogCitjbGFzcyBGYWtlVGV4dHVyZVVwbG9hZGVyIDog
cHVibGljIFRleHR1cmVVcGxvYWRlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCBib29sIGlzQnVz
eSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGJlZ2luVXBsb2FkcygpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHVw
bG9hZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUqIHRleHR1cmUsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3Qg
SW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KSB7IHRleHR1cmUtPnVw
ZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7IH0KK307
CisKIGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CiBwcm90ZWN0ZWQ6CiAgICAgTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCgpCkBAIC0xMDYs
NyArMTE0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAsIG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVy
Tm8oMSwgZmFsc2UpCiAgICAgICAgICwgbV9jb250ZXh0KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZyYW1l
Q291bnRpbmdNZW1vcnlBbGxvY2F0aW9uU2V0dGluZ0NvbnRleHQoKSksIEdyYXBoaWNzQ29udGV4
dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykpCiAgICAgICAgICwgbV9tb2NrQ29udGV4
dCgqc3RhdGljX2Nhc3Q8RnJhbWVDb3VudGluZ01lbW9yeUFsbG9jYXRpb25TZXR0aW5nQ29udGV4
dCo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNE
KG1fY29udGV4dC5nZXQoKSkpKQotICAgICAgICAsIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtKCZt
X21vY2tDbGllbnQsIG1fY29udGV4dC5yZWxlYXNlKCkpCisgICAgICAgICwgbV9sYXllclJlbmRl
cmVyQ2hyb21pdW0oJm1fbW9ja0NsaWVudCwgbV9jb250ZXh0LnJlbGVhc2UoKSwgYWRvcHRQdHIo
bmV3IEZha2VUZXh0dXJlVXBsb2FkZXIoKSkpCiAgICAgewogICAgIH0KIApAQCAtMjcwLDcgKzI3
OCw3IEBAIHB1YmxpYzoKIFRFU1QoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDIsIGluaXRpYWxp
emF0aW9uRG9lc05vdE1ha2VTeW5jaHJvbm91c0NhbGxzKQogewogICAgIEZha2VMYXllclJlbmRl
cmVyQ2hyb21pdW1DbGllbnQgbW9ja0NsaWVudDsKLSAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9t
aXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcg
Rm9yYmlkU3luY2hyb25vdXNDYWxsQ29udGV4dCksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJE
aXJlY3RseVRvSG9zdFdpbmRvdykpOworICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5
ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGb3JiaWRT
eW5jaHJvbm91c0NhbGxDb250ZXh0KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5
VG9Ib3N0V2luZG93KSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIoKSkpOwogCiAg
ICAgRVhQRUNUX1RSVUUobGF5ZXJSZW5kZXJlckNocm9taXVtLmluaXRpYWxpemUoKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rocm90dGxlZFRleHR1cmVV
cGxvYWRlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaHJvdHRsZWRU
ZXh0dXJlVXBsb2FkZXJUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjBkZmQwNTkyMTY5YzdkYmIyMTAz
ZGExODA5YzViM2QwNTk1ODkxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXJUZXN0LmNwcApAQCAtMCwwICsxLDkz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJUaHJv
dHRsZWRUZXh0dXJlVXBsb2FkZXIuaCIKKworI2luY2x1ZGUgIkZha2VXZWJHcmFwaGljc0NvbnRl
eHQzRC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgorCisjaW5jbHVk
ZSA8Z21vY2svZ21vY2suaD4KKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OworCituYW1lc3BhY2UgeworCitjbGFzcyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RX
aXRoUXVlcnlUZXN0aW5nIDogcHVibGljIEZha2VXZWJHcmFwaGljc0NvbnRleHQzRCB7CitwdWJs
aWM6CisgICAgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFF1ZXJ5VGVzdGluZygpIDogbV9y
ZXN1bHRBdmFpbGFibGUoMCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGdldFF1
ZXJ5T2JqZWN0dWl2RVhUKFdlYkdMSWQsIEdDM0RlbnVtIHR5cGUsIEdDM0R1aW50KiB2YWx1ZSkK
KyAgICB7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIEV4dGVuc2lvbnMz
RENocm9taXVtOjpRVUVSWV9SRVNVTFRfQVZBSUxBQkxFX0VYVDoKKyAgICAgICAgICAgICp2YWx1
ZSA9IG1fcmVzdWx0QXZhaWxhYmxlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAqdmFsdWUgPSAwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICB2b2lkIHNldFJlc3VsdEF2YWlsYWJsZSh1bnNpZ25lZCByZXN1bHRB
dmFpbGFibGUpIHsgbV9yZXN1bHRBdmFpbGFibGUgPSByZXN1bHRBdmFpbGFibGU7IH0KKworcHJp
dmF0ZToKKyAgICB1bnNpZ25lZCBtX3Jlc3VsdEF2YWlsYWJsZTsKK307CisKK1RFU1QoVGhyb3R0
bGVkVGV4dHVyZVVwbG9hZGVyVGVzdCwgSXNCdXN5KQoreworICAgIEdyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaWJ1dGVzIGF0dHJzOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4
dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdl
YkNvbnRleHQoYWRvcHRQdHIobmV3IEZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhRdWVyeVRl
c3RpbmcoKSksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7
CisgICAgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFF1ZXJ5VGVzdGluZyYgZmFrZUNvbnRl
eHQgPSAqc3RhdGljX2Nhc3Q8RmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFF1ZXJ5VGVzdGlu
Zyo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNE
KGNvbnRleHQuZ2V0KCkpKTsKKyAgICBPd25QdHI8VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyPiB1
cGxvYWRlciA9IFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKGNvbnRleHQsIDIpOwor
CisgICAgZmFrZUNvbnRleHQuc2V0UmVzdWx0QXZhaWxhYmxlKDApOworICAgIEVYUEVDVF9GQUxT
RSh1cGxvYWRlci0+aXNCdXN5KCkpOworICAgIHVwbG9hZGVyLT5iZWdpblVwbG9hZHMoKTsKKyAg
ICB1cGxvYWRlci0+ZW5kVXBsb2FkcygpOworICAgIEVYUEVDVF9GQUxTRSh1cGxvYWRlci0+aXNC
dXN5KCkpOworICAgIHVwbG9hZGVyLT5iZWdpblVwbG9hZHMoKTsKKyAgICB1cGxvYWRlci0+ZW5k
VXBsb2FkcygpOworICAgIEVYUEVDVF9UUlVFKHVwbG9hZGVyLT5pc0J1c3koKSk7CisKKyAgICBm
YWtlQ29udGV4dC5zZXRSZXN1bHRBdmFpbGFibGUoMSk7CisgICAgRVhQRUNUX0ZBTFNFKHVwbG9h
ZGVyLT5pc0J1c3koKSk7CisgICAgdXBsb2FkZXItPmJlZ2luVXBsb2FkcygpOworICAgIHVwbG9h
ZGVyLT5lbmRVcGxvYWRzKCk7CisgICAgRVhQRUNUX0ZBTFNFKHVwbG9hZGVyLT5pc0J1c3koKSk7
CisgICAgdXBsb2FkZXItPmJlZ2luVXBsb2FkcygpOworICAgIHVwbG9hZGVyLT5lbmRVcGxvYWRz
KCk7CisgICAgRVhQRUNUX0ZBTFNFKHVwbG9hZGVyLT5pc0J1c3koKSk7CisgICAgdXBsb2FkZXIt
PmJlZ2luVXBsb2FkcygpOworICAgIHVwbG9hZGVyLT5lbmRVcGxvYWRzKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxl
ZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCA1YjdjYjBkZjc1Yzk3MjQ4OWNiYzFjZTI0Nzc1
YmI0ZTljOGYxYmQ0Li5mNjFkNzU2MTM2OGZiOWQ0MjQ1NWNkMTUxNzhkZjFmYjlmYjI2NmY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNo
cm9taXVtVGVzdC5jcHAKQEAgLTk3NSw2ICs5NzUsMjAgQEAgVEVTVChUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBwYXJ0aWFsVXBkYXRlcykKICAgICB9CiAgICAgY2NMYXllclRyZWVIb3N0LT5jb21t
aXRDb21wbGV0ZSgpOwogCisgICAgLy8gUGFydGFpbCB1cGRhdGUgb2YgNCB0aWxlcy4KKyAgICBs
YXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCg1MCwgNTAsIDEwMCwgMTAwKSk7CisgICAgewor
ICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICAgICAgT3du
UHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1Rp
bGVkTGF5ZXJJbXBsKDApKSk7CisgICAgICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJz
KHVwZGF0ZXIpOworICAgICAgICB1cGRhdGVyLnVwZGF0ZSgwLCAmYWxsb2NhdG9yLCAmY29waWVy
LCAmdXBsb2FkZXIsIDQpOworICAgICAgICBFWFBFQ1RfRVEoNCwgbGF5ZXItPmZha2VMYXllclRl
eHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOworICAgICAgICBFWFBFQ1RfRkFMU0UodXBk
YXRlci5oYXNNb3JlVXBkYXRlcygpKTsKKyAgICAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKKyAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0
aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKKyAgICB9CisgICAgY2NMYXllclRyZWVIb3N0LT5jb21t
aXRDb21wbGV0ZSgpOworCiAgICAgY2NMYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIoMCk7CiAg
ICAgY2NMYXllclRyZWVIb3N0LmNsZWFyKCk7CiAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpz
aHV0ZG93bigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140549</attachid>
            <date>2012-05-07 10:35:14 -0700</date>
            <delta_ts>2012-05-07 12:18:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81004-20120507133512.patch</filename>
            <type>text/plain</type>
            <size>53992</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzY2ZjBmMmQ3N2E2OTlm
MzAxZGU3NzM1MGEzZWMyZjM0Njc0NGJlMy4uODRhYjc4Y2ZiY2U0YmI2MzZiMjM1NzMwYTk4ZmZm
YmFlZGJkNDRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTA1LTA3ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBV
c2UgR0xfQ0hST01JVU1fY29tbWFuZF9idWZmZXJfcXVlcnkgdG8gdGhyb3R0bGUgdGV4dHVyZSB1
cGxvYWRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODEwMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyIGNsYXNzIHRoYXQgdXNlcyBHTF9DSFJPTUlVTV9j
b21tYW5kX2J1ZmZlcl9xdWVyeQorICAgICAgICB0byB0aHJvdHRsZSB0ZXh0dXJlIHVwbG9hZHMg
YmFzZWQgb24gbnVtYmVyIG9mIGN1cnJlbnRseSBwZW5kaW5nIHF1ZXJpZXMuCisKKyAgICAgICAg
VW5pdCB0ZXN0OiBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXJUZXN0LklzQnVzeQorCisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExh
eWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGV4dHVyZVVwbG9hZGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaDoKKyAgICAgICAgKFRleHR1cmVVcGxvYWRl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVy
ZVVwbG9hZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVlcnk6OlF1ZXJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVlcnk6On5RdWVyeSk6CisgICAgICAg
IChXZWJDb3JlOjpUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlF1ZXJ5OjpiZWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlF1ZXJ5OjplbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6aXNQZW5kaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVlcnk6Ondh
aXQpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpUaHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVw
bG9hZGVyOjp+VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRo
cm90dGxlZFRleHR1cmVVcGxvYWRlcjo6aXNCdXN5KToKKyAgICAgICAgKFdlYkNvcmU6OlRocm90
dGxlZFRleHR1cmVVcGxvYWRlcjo6YmVnaW5VcGxvYWRzKToKKyAgICAgICAgKFdlYkNvcmU6OlRo
cm90dGxlZFRleHR1cmVVcGxvYWRlcjo6ZW5kVXBsb2Fkcyk6CisgICAgICAgIChXZWJDb3JlOjpU
aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OnVwbG9hZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpwcm9jZXNzUXVlcmllcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1
cmVVcGxvYWRlci5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChUaHJvdHRsZWRUZXh0
dXJlVXBsb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
OjpjcmVhdGUpOgorICAgICAgICAoUXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6
CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFVudGhy
b3R0bGVkVGV4dHVyZVVwbG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlVudGhyb3R0bGVkVGV4
dHVyZVVwbG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VW50aHJvdHRsZWRUZXh0
dXJlVXBsb2FkZXI6On5VbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcik6CisgICAgICAgIChXZWJD
b3JlOjpVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6aXNCdXN5KToKKyAgICAgICAgKFdlYkNv
cmU6OlVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpiZWdpblVwbG9hZHMpOgorICAgICAgICAo
V2ViQ29yZTo6VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmVuZFVwbG9hZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OnVwbG9hZFRleHR1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlVudGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NTaW5nbGVUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoQ0NUZXh0
dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojppbml0aWFs
aXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQpOgorCiAyMDEyLTA1LTA3ICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VG
TF0gbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1zbmFwLXRvLWxpbmVzLW5vdC1zZXQu
aHRtbCBmYWlscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3NzMxNjVmMzQyOGE5ODM4
MTBhYzllNzlmYjAyNGYzMTI1YmNmZWNhLi45YTU1OGNlN2YyZmU2YTYyZDQxZjhkNWVjMmI3ZTcz
Yjk2YjAzMmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisy
MDEyLTA1LTA3ICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW0Nocm9taXVtXSBVc2UgR0xfQ0hST01JVU1fY29tbWFuZF9idWZmZXJfcXVlcnkgdG8gdGhy
b3R0bGUgdGV4dHVyZSB1cGxvYWRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODEwMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKEZha2VUZXh0dXJlVXBsb2FkZXIpOgorICAgICAg
ICAoV2ViS2l0VGVzdHM6OkZha2VUZXh0dXJlVXBsb2FkZXI6OmlzQnVzeSk6CisgICAgICAgIChX
ZWJLaXRUZXN0czo6RmFrZVRleHR1cmVVcGxvYWRlcjo6YmVnaW5VcGxvYWRzKToKKyAgICAgICAg
KFdlYktpdFRlc3RzOjpGYWtlVGV4dHVyZVVwbG9hZGVyOjplbmRVcGxvYWRzKToKKyAgICAgICAg
KFdlYktpdFRlc3RzOjpGYWtlVGV4dHVyZVVwbG9hZGVyOjp1cGxvYWRUZXh0dXJlKToKKyAgICAg
ICAgKFdlYktpdFRlc3RzKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUX0YpOgorICAgICAg
ICAqIHRlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaDoKKyAgICAgICAgKFdlYktpdFRlc3Rz
OjpGYWtlVGV4dHVyZVVwbG9hZGVyOjppc0J1c3kpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZh
a2VUZXh0dXJlVXBsb2FkZXI6OmJlZ2luVXBsb2Fkcyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6
RmFrZVRleHR1cmVVcGxvYWRlcjo6ZW5kVXBsb2Fkcyk6CisgICAgICAgICogdGVzdHMvQ2FudmFz
MkRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvTGF5ZXJSZW5kZXJlckNo
cm9taXVtVGVzdC5jcHA6CisgICAgICAgIChGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtOjpGYWtl
TGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAgICAgKEZha2VUZXh0dXJlVXBsb2FkZXIpOgor
ICAgICAgICAoRmFrZVRleHR1cmVVcGxvYWRlcjo6aXNCdXN5KToKKyAgICAgICAgKEZha2VUZXh0
dXJlVXBsb2FkZXI6OmJlZ2luVXBsb2Fkcyk6CisgICAgICAgIChGYWtlVGV4dHVyZVVwbG9hZGVy
OjplbmRVcGxvYWRzKToKKyAgICAgICAgKEZha2VUZXh0dXJlVXBsb2FkZXI6OnVwbG9hZFRleHR1
cmUpOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtVGVzdCk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiB0ZXN0cy9UaHJvdHRsZWRU
ZXh0dXJlVXBsb2FkZXJUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFF1ZXJ5VGVzdGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OkZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhRdWVyeVRlc3Rpbmc6OkZha2VXZWJH
cmFwaGljc0NvbnRleHQzRFdpdGhRdWVyeVRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpGYWtl
V2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoUXVlcnlUZXN0aW5nOjpnZXRRdWVyeU9iamVjdHVpdkVY
VCk6CisgICAgICAgIChXZWJLaXQ6OkZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhRdWVyeVRl
c3Rpbmc6OnNldFJlc3VsdEF2YWlsYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlRFU1QpOgorICAg
ICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoV1RGOjpU
RVNUKToKKwogMjAxMi0wNS0wNyAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZDogdGhlIHNhbWUgZml4IGluIGFub3RoZXIgZmlsZSBmb3Ig
Y2hyb21pdW0gd2luIGJ1aWxkLiAgQWRkaW5nIFdlYkNvcmUgbmFtZXNwYWNlIHRvIEZpbGVTeXN0
ZW1UeXBlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA2NmQ4MTM0ZjI0NTQ3MDk4ZTIwODZmNGJlODM5
ZjVkNmJmNTY0NTI2Li41MWM2ZGQ3YzJlNjA5NDBlNTI4YTgwNTMzZDM4NWY4Mjk3NDYxYzE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCkBAIC0zNjAzLDggKzM2MDMsOSBAQAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVMYXllckNocm9taXVtLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaCcsCi0g
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9h
ZGVyLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxl
ZFRleHR1cmVVcGxvYWRlci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2Nh
dG9yLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCAyOGY1
NzIwOTg2N2YxYTg0YjQ3YzU3ODY2ZjQ1YzRiM2Y5OGI1MTUyLi45ZjNlZGQwYWVmYTYzYWY4Mjhi
MTcxNTEzNmQ5ZDg2YTJlYWZhMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJSZW5kZXJTdXJmYWNlQ2hyb21pdW0u
aCIKICNpbmNsdWRlICJUZXh0dXJlQ29waWVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIu
aCIKKyNpbmNsdWRlICJUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaCIKICNpbmNsdWRlICJUcmFj
ZUV2ZW50LmgiCiAjaW5jbHVkZSAiVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oIgpAQCAtMTkzLDkgKzE5NCw5IEBAIHByaXZh
dGU6CiB9OwogCiAKLVBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmNyZWF0ZShMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqIGNsaWVudCwg
UGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKK1Bhc3NPd25QdHI8TGF5ZXJS
ZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZShMYXllclJlbmRl
cmVyQ2hyb21pdW1DbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4g
Y29udGV4dCwgUGFzc093blB0cjxUZXh0dXJlVXBsb2FkZXI+IHVwbG9hZGVyKQogewotICAgIE93
blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVyUmVuZGVyZXIoYWRvcHRQdHIobmV3IExh
eWVyUmVuZGVyZXJDaHJvbWl1bShjbGllbnQsIGNvbnRleHQpKSk7CisgICAgT3duUHRyPExheWVy
UmVuZGVyZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJlcihhZG9wdFB0cihuZXcgTGF5ZXJSZW5kZXJl
ckNocm9taXVtKGNsaWVudCwgY29udGV4dCwgdXBsb2FkZXIpKSk7CiAgICAgaWYgKCFsYXllclJl
bmRlcmVyLT5pbml0aWFsaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yMDMs
MTEgKzIwNCwxMyBAQCBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpjcmVhdGUoTGF5ZXJSZW5kZXJlckNocgogfQogCiBMYXllclJlbmRlcmVy
Q2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bShMYXllclJlbmRlcmVyQ2hyb21pdW1DbGll
bnQqIGNsaWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UGFzc093blB0cjxUZXh0dXJlVXBsb2FkZXI+IHVwbG9hZGVyKQogICAgIDogbV9jbGllbnQoY2xp
ZW50KQogICAgICwgbV9jdXJyZW50UmVuZGVyU3VyZmFjZSgwKQogICAgICwgbV9jdXJyZW50TWFu
YWdlZFRleHR1cmUoMCkKICAgICAsIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCgwKQorICAgICwg
bV90ZXh0dXJlVXBsb2FkZXIodXBsb2FkZXIpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAg
ICAsIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UoMCkKICAgICAsIG1fc2hhcmVkR2VvbWV0cnlRdWFk
KEZsb2F0UmVjdCgtMC41ZiwgLTAuNWYsIDEuMGYsIDEuMGYpKQpAQCAtMTM3OSw3ICsxMzgyLDYg
QEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9jYXBhYmlsaXRpZXMubWF4VGV4dHVyZVNpemUpOwogICAgIG1fdGV4dHVyZUNvcGllciA9IEFj
Y2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7Ci0gICAgbV90
ZXh0dXJlVXBsb2FkZXIgPSBBY2NlbGVyYXRlZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKG1fY29u
dGV4dC5nZXQoKSk7CiAgICAgbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3IgPSBUcmFja2luZ1Rl
eHR1cmVBbGxvY2F0b3I6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIG1fcmVuZGVyU3Vy
ZmFjZVRleHR1cmVBbGxvY2F0b3IgPSBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZSht
X2NvbnRleHQuZ2V0KCkpOwogICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2luZ1RleHR1cmVVc2Fn
ZUhpbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDUzMGJhODQ4ZTk0
NTQ2MmRmY2EyMjYzYmNmMDliNTNhZTkyNjJjODEuLmQ3M2Y3MWFlN2QwMTcwNWY0OTAwNjI2ZDg2
N2IzNDU3OTA3NzU1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0z
Nyw3ICszNyw3IEBACiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5o
IgogI2luY2x1ZGUgIlRleHR1cmVDb3BpZXIuaCIKLSNpbmNsdWRlICJUZXh0dXJlVXBsb2FkZXIu
aCIKKyNpbmNsdWRlICJUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaCIKICNpbmNsdWRlICJUcmFj
a2luZ1RleHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiBjbGFz
cyBMYXllclJlbmRlcmVyQ2hyb21pdW0gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExheWVy
UmVuZGVyZXJDaHJvbWl1bSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TGF5ZXJS
ZW5kZXJlckNocm9taXVtPiBjcmVhdGUoTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiwgUGFz
c1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pOworICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVy
UmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCosIFBh
c3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBQYXNzT3duUHRyPFRleHR1cmVVcGxvYWRlcj4p
OwogCiAgICAgfkxheWVyUmVuZGVyZXJDaHJvbWl1bSgpOwogCkBAIC0xNDQsNyArMTQ0LDcgQEAg
cHJvdGVjdGVkOgogICAgIHZvaWQgZW5zdXJlRnJhbWVidWZmZXIoKTsKICAgICBib29sIGlzRnJh
bWVidWZmZXJEaXNjYXJkZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnJhbWVidWZmZXJEaXNjYXJk
ZWQ7IH0KIAotICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bShMYXllclJlbmRlcmVyQ2hyb21pdW1D
bGllbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPik7CisgICAgTGF5ZXJSZW5kZXJl
ckNocm9taXVtKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCosIFBhc3NSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+LCBQYXNzT3duUHRyPFRleHR1cmVVcGxvYWRlcj4pOwogICAgIGJvb2wgaW5p
dGlhbGl6ZSgpOwogCiBwcml2YXRlOgpAQCAtMjg2LDcgKzI4Niw3IEBAIHByaXZhdGU6CiAKICAg
ICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyOwog
ICAgIE93blB0cjxBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI+IG1fdGV4dHVyZUNvcGllcjsKLSAg
ICBPd25QdHI8QWNjZWxlcmF0ZWRUZXh0dXJlVXBsb2FkZXI+IG1fdGV4dHVyZVVwbG9hZGVyOwor
ICAgIE93blB0cjxUZXh0dXJlVXBsb2FkZXI+IG1fdGV4dHVyZVVwbG9hZGVyOwogICAgIE93blB0
cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yOwog
ICAgIE93blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IG1fcmVuZGVyU3VyZmFjZVRleHR1
cmVBbGxvY2F0b3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA1NTZmZTBlMGNiMjA2ZjAzYTA0M2UzZDY4ZTJlNTYxZTIxYzAxZGZjLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotCi0jaW5jbHVkZSAiVGV4dHVyZVVwbG9hZGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotQWNjZWxlcmF0ZWRUZXh0dXJlVXBsb2FkZXI6OkFjY2VsZXJhdGVkVGV4dHVyZVVwbG9h
ZGVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCi0gICAgOiBtX2NvbnRl
eHQoY29udGV4dCkKLXsKLX0KLQotQWNjZWxlcmF0ZWRUZXh0dXJlVXBsb2FkZXI6On5BY2NlbGVy
YXRlZFRleHR1cmVVcGxvYWRlcigpCi17Ci19Ci0KLXZvaWQgQWNjZWxlcmF0ZWRUZXh0dXJlVXBs
b2FkZXI6OnVwbG9hZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRv
ciwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KQotewot
ICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCBzb3VyY2VSZWN0LCBk
ZXN0UmVjdCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmgKaW5kZXggYWZlZDU0YTRhZWNj
MDM0ZmZhZTM2MmI5ZWIxYzNlMTlkYzg4YjBhYi4uZTNiNDRmZDZiMTdmM2YyZjk0MWE4NmYyZjJi
NzQwZjI2NDUxMTQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmgKQEAgLTMxLDI3ICszMSwxMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRleHR1cmVVcGxvYWRlciB7CiBwdWJsaWM6
Ci0gICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJl
Y3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkgPSAwOwotCi1wcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB+VGV4dHVyZVVwbG9hZGVyKCkgeyB9Ci19OwotCi1jbGFzcyBBY2NlbGVy
YXRlZFRleHR1cmVVcGxvYWRlciA6IHB1YmxpYyBUZXh0dXJlVXBsb2FkZXIgewotICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEFjY2VsZXJhdGVkVGV4dHVyZVVwbG9hZGVyKTsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxBY2NlbGVyYXRlZFRleHR1cmVVcGxvYWRlcj4gY3JlYXRlKFBh
c3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCi0gICAgewotICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IEFjY2VsZXJhdGVkVGV4dHVyZVVwbG9hZGVyKGNvbnRleHQpKTsKLSAg
ICB9Ci0gICAgdmlydHVhbCB+QWNjZWxlcmF0ZWRUZXh0dXJlVXBsb2FkZXIoKTsKLQotICAgIHZp
cnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZSosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0IHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpOwogCi1wcm90ZWN0ZWQ6Ci0gICAgZXhwbGlj
aXQgQWNjZWxlcmF0ZWRUZXh0dXJlVXBsb2FkZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4pOwotCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CisgICAgdmly
dHVhbCBib29sIGlzQnVzeSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5VcGxvYWRzKCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCB1cGxvYWRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QgZGVzdFJlY3QpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxODEzYzVjYjU1NjFmOTA1N2MxMjky
YzhhNWQzYWFlYzJjMWUyMmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwCkBAIC0w
LDAgKzEsMTQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5j
bHVkZSAiVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmgiCisKKyNpbmNsdWRlICJFeHRlbnNpb25z
M0RDaHJvbWl1bS5oIgorCituYW1lc3BhY2UgeworCisvLyBOdW1iZXIgb2YgcGVuZGluZyB0ZXh0
dXJlIHVwZGF0ZSBxdWVyaWVzIHRvIGFsbG93Lgorc3RhdGljIGNvbnN0IHNpemVfdCBtYXhQZW5k
aW5nUXVlcmllcyA9IDI7CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1Rocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVlcnk6OlF1ZXJ5KFBhc3NS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoY29udGV4
dCkKKyAgICAsIG1fcXVlcnlJZCgwKQoreworICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRl
bnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKSk7CisgICAgbV9xdWVyeUlkID0gZXh0ZW5zaW9ucy0+Y3JlYXRlUXVlcnlF
WFQoKTsKK30KKworVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6flF1ZXJ5KCkKK3sK
KyAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVu
c2lvbnMzRENocm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAgIGV4dGVu
c2lvbnMtPmRlbGV0ZVF1ZXJ5RVhUKG1fcXVlcnlJZCk7Cit9CisKK3ZvaWQgVGhyb3R0bGVkVGV4
dHVyZVVwbG9hZGVyOjpRdWVyeTo6YmVnaW4oKQoreworICAgIEV4dGVuc2lvbnMzRENocm9taXVt
KiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgZXh0ZW5zaW9ucy0+YmVnaW5RdWVyeUVYVChFeHRl
bnNpb25zM0RDaHJvbWl1bTo6Q09NTUFORFNfSVNTVUVEX0NIUk9NSVVNLCBtX3F1ZXJ5SWQpOwor
fQorCit2b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVlcnk6OmVuZCgpCit7CisgICAg
RXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25z
M0RDaHJvbWl1bSo+KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICBleHRlbnNpb25z
LT5lbmRRdWVyeUVYVChFeHRlbnNpb25zM0RDaHJvbWl1bTo6Q09NTUFORFNfSVNTVUVEX0NIUk9N
SVVNKTsKK30KKworYm9vbCBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlF1ZXJ5Ojppc1BlbmRp
bmcoKQoreworICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nh
c3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7Cisg
ICAgdW5zaWduZWQgYXZhaWxhYmxlID0gMTsKKyAgICBleHRlbnNpb25zLT5nZXRRdWVyeU9iamVj
dHVpdkVYVChtX3F1ZXJ5SWQsIEV4dGVuc2lvbnMzRENocm9taXVtOjpRVUVSWV9SRVNVTFRfQVZB
SUxBQkxFX0VYVCwgJmF2YWlsYWJsZSk7CisgICAgcmV0dXJuICFhdmFpbGFibGU7Cit9CisKK3Zv
aWQgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6d2FpdCgpCit7CisgICAgRXh0ZW5z
aW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJv
bWl1bSo+KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICB1bnNpZ25lZCByZXN1bHQ7
CisgICAgZXh0ZW5zaW9ucy0+Z2V0UXVlcnlPYmplY3R1aXZFWFQobV9xdWVyeUlkLCBFeHRlbnNp
b25zM0RDaHJvbWl1bTo6UVVFUllfUkVTVUxUX0VYVCwgJnJlc3VsdCk7Cit9CisKK1Rocm90dGxl
ZFRleHR1cmVVcGxvYWRlcjo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAs
IG1fbWF4UGVuZGluZ1F1ZXJpZXMobWF4UGVuZGluZ1F1ZXJpZXMpCit7Cit9CisKK1Rocm90dGxl
ZFRleHR1cmVVcGxvYWRlcjo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsIHNpemVfdCBwZW5kaW5nVXBsb2FkTGltaXQpCisgICAg
OiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fbWF4UGVuZGluZ1F1ZXJpZXMocGVuZGluZ1Vw
bG9hZExpbWl0KQoreworfQorCitUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6On5UaHJvdHRsZWRU
ZXh0dXJlVXBsb2FkZXIoKQoreworfQorCitib29sIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6
aXNCdXN5KCkKK3sKKyAgICBwcm9jZXNzUXVlcmllcygpOworCisgICAgaWYgKCFtX2F2YWlsYWJs
ZVF1ZXJpZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9w
ZW5kaW5nUXVlcmllcy5zaXplKCkgPT0gbV9tYXhQZW5kaW5nUXVlcmllcykKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICBtX2F2YWlsYWJsZVF1ZXJpZXMuYXBwZW5kKFF1ZXJ5OjpjcmVhdGUo
bV9jb250ZXh0KSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFRocm90dGxlZFRleHR1
cmVVcGxvYWRlcjo6YmVnaW5VcGxvYWRzKCkKK3sKKyAgICAvLyBXYWl0IGZvciBxdWVyeSB0byBi
ZWNvbWUgYXZhaWxhYmxlLgorICAgIHdoaWxlIChpc0J1c3koKSkKKyAgICAgICAgbV9wZW5kaW5n
UXVlcmllcy5maXJzdCgpLT53YWl0KCk7CisKKyAgICBBU1NFUlQoIW1fYXZhaWxhYmxlUXVlcmll
cy5pc0VtcHR5KCkpOworICAgIG1fYXZhaWxhYmxlUXVlcmllcy5maXJzdCgpLT5iZWdpbigpOwor
fQorCit2b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6ZW5kVXBsb2FkcygpCit7CisgICAg
bV9hdmFpbGFibGVRdWVyaWVzLmZpcnN0KCktPmVuZCgpOworICAgIG1fcGVuZGluZ1F1ZXJpZXMu
YXBwZW5kKG1fYXZhaWxhYmxlUXVlcmllcy50YWtlRmlyc3QoKSk7Cit9CisKK3ZvaWQgVGhyb3R0
bGVkVGV4dHVyZVVwbG9hZGVyOjp1cGxvYWRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBUZXh0dXJlQWxsb2Nh
dG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBk
ZXN0UmVjdCkKK3sKKyAgICB0ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwg
c291cmNlUmVjdCwgZGVzdFJlY3QpOworfQorCit2b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRl
cjo6cHJvY2Vzc1F1ZXJpZXMoKQoreworICAgIHdoaWxlICghbV9wZW5kaW5nUXVlcmllcy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgaWYgKG1fcGVuZGluZ1F1ZXJpZXMuZmlyc3QoKS0+aXNQZW5kaW5n
KCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBtX2F2YWlsYWJsZVF1ZXJpZXMuYXBw
ZW5kKG1fcGVuZGluZ1F1ZXJpZXMudGFrZUZpcnN0KCkpOworICAgIH0KK30KKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzIwNTg2NDlhYTEx
ZWI2ZTc1Y2FlODk5YWZhZGM5NzJiYjcyYzJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
LmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVGhyb3R0bGVkVGV4
dHVyZVVwbG9hZGVyX2gKKyNkZWZpbmUgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyX2gKKworI2lu
Y2x1ZGUgIlRleHR1cmVVcGxvYWRlci5oIgorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyIDogcHVi
bGljIFRleHR1cmVVcGxvYWRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxUaHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXI+IGNyZWF0ZShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBj
b250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUaHJvdHRsZWRUZXh0
dXJlVXBsb2FkZXIoY29udGV4dCkpOworICAgIH0KKyAgICBzdGF0aWMgUGFzc093blB0cjxUaHJv
dHRsZWRUZXh0dXJlVXBsb2FkZXI+IGNyZWF0ZShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBjb250ZXh0LCBzaXplX3QgcGVuZGluZ1VwbG9hZExpbWl0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoY29udGV4dCwgcGVuZGlu
Z1VwbG9hZExpbWl0KSk7CisgICAgfQorICAgIHZpcnR1YWwgflRocm90dGxlZFRleHR1cmVVcGxv
YWRlcigpOworCisgICAgdmlydHVhbCBib29sIGlzQnVzeSgpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBiZWdpblVwbG9hZHMoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kVXBs
b2FkcygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEKiwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIFRleHR1cmVBbGxvY2F0
b3IqLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpIE9W
RVJSSURFOworCitwcml2YXRlOgorICAgIGNsYXNzIFF1ZXJ5IHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFF1ZXJ5PiBjcmVhdGUoUGFzc1JlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gY29udGV4dCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IFF1ZXJ5KGNvbnRleHQpKTsg
fQorCisgICAgICAgIHZpcnR1YWwgflF1ZXJ5KCk7CisKKyAgICAgICAgdm9pZCBiZWdpbigpOwor
ICAgICAgICB2b2lkIGVuZCgpOworICAgICAgICBib29sIGlzUGVuZGluZygpOworICAgICAgICB2
b2lkIHdhaXQoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IFF1ZXJ5KFBhc3NS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+KTsKKworICAgICAgICBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IG1fY29udGV4dDsKKyAgICAgICAgdW5zaWduZWQgbV9xdWVyeUlkOworICAgIH07CisK
KyAgICBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4pOworICAgIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiwgc2l6ZV90IHBlbmRpbmdVcGxvYWRMaW1pdCk7CisKKyAgICB2b2lkIHByb2Nlc3NR
dWVyaWVzKCk7CisKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKKyAg
ICBzaXplX3QgbV9tYXhQZW5kaW5nUXVlcmllczsKKyAgICBEZXF1ZTxPd25QdHI8UXVlcnk+ID4g
bV9wZW5kaW5nUXVlcmllczsKKyAgICBEZXF1ZTxPd25QdHI8UXVlcnk+ID4gbV9hdmFpbGFibGVR
dWVyaWVzOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHAKaW5kZXggM2VhNWZiMTlhYzdiZGNkYjRkZDZmYzFlYzExNTk1MWVjYTQ1ZmNmZC4u
MzFiZGJjMmU1ZmYxZWI5MjUyMjBmOGUzZDU1MDNmMjg0NzEyMjgwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTUzMSwxMCArNTMxLDEwIEBAIHZvaWQgQ0NM
YXllclRyZWVIb3N0SW1wbDo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiAgICAgbV90aW1lU291
cmNlQ2xpZW50QWRhcHRlci0+c2V0QWN0aXZlKHNob3VsZFRpY2tJbkJhY2tncm91bmQpOwogfQog
Ci1ib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKFBhc3NS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCitib29sIENDTGF5ZXJUcmVlSG9zdElt
cGw6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IGNvbnRleHQsIFBhc3NPd25QdHI8VGV4dHVyZVVwbG9hZGVyPiB1cGxvYWRlcikKIHsKICAgICBP
d25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBsYXllclJlbmRlcmVyOwotICAgIGxheWVyUmVu
ZGVyZXIgPSBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzLCBjb250ZXh0KTsKKyAg
ICBsYXllclJlbmRlcmVyID0gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUodGhpcywgY29u
dGV4dCwgdXBsb2FkZXIpOwogCiAgICAgLy8gU2luY2Ugd2Ugbm93IGhhdmUgYSBuZXcgY29udGV4
dC9sYXllclJlbmRlcmVyLCB3ZSBjYW5ub3QgY29udGludWUgdG8gdXNlIHRoZSBvbGQKICAgICAv
LyByZXNvdXJjZXMgKGkuZS4gcmVuZGVyU3VyZmFjZXMgYW5kIHRleHR1cmUgSURzKS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCBkZGUyN2Y2OGJhMThmNGUxOWIxZDNh
NjMxOWIxMDU2N2UxYTZiNzExLi44ZjE2ZjlmZDQwNjQ3ZTlhNTNjYTgxZWY2YmFhZTY3OTcyY2M0
MjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0xMjIsNyArMTIy
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCk7CiAgICAgaW50IGZy
YW1lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZU51bWJlcjsgfQogCi0gICAgYm9vbCBp
bml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPik7Cisg
ICAgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiwgUGFzc093blB0cjxUZXh0dXJlVXBsb2FkZXI+KTsKICAgICBib29sIGlzQ29udGV4dExv
c3QoKTsKICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIoKSB7IHJldHVy
biBtX2xheWVyUmVuZGVyZXIuZ2V0KCk7IH0KICAgICBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IGIzOTczNmRkMGI0ZTEwZGQyZDViZjUwODE4
OTExNWJjM2UzYjg3OWIuLjBjMzNmMmEzOTA1ZjZjYzA5ZWE3MTRkODRjYWRmOTlmNjBmNzk3ZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0zNCwxMSArMzQs
MjggQEAKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1
cnJlbnRUaW1lLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiB1c2luZyBuYW1lc3BhY2UgV1RG
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFVudGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyIDogcHVibGljIFRleHR1cmVVcGxvYWRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIpOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3du
UHRyPFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcigpKTsKKyAgICB9
CisgICAgdmlydHVhbCB+VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoKSB7IH0KKworICAgIHZp
cnR1YWwgYm9vbCBpc0J1c3koKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBi
ZWdpblVwbG9hZHMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2FkcygpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBUZXh0dXJlQWxsb2NhdG9yKiBh
bGxvY2F0b3IsIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVj
dCkgeyB0ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgc291cmNlUmVjdCwg
ZGVzdFJlY3QpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBVbnRocm90dGxlZFRleHR1
cmVVcGxvYWRlcigpIHsgfQorfTsKKwogUGFzc093blB0cjxDQ1Byb3h5PiBDQ1NpbmdsZVRocmVh
ZFByb3h5OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQogewogICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgQ0NTaW5nbGVUaHJlYWRQcm94eShsYXllclRyZWVIb3N0KSk7CkBA
IC0xMzgsNyArMTU1LDcgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojppbml0aWFsaXplTGF5
ZXJSZW5kZXJlcigpCiAgICAgQVNTRVJUKG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0aW9uKTsK
ICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwotICAgICAgICBi
b29sIG9rID0gbV9sYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIobV9j
b250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb24ucmVsZWFzZSgpKTsKKyAgICAgICAgYm9vbCBvayA9
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKG1fY29udGV4dEJl
Zm9yZUluaXRpYWxpemF0aW9uLnJlbGVhc2UoKSwgVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6
OmNyZWF0ZSgpKTsKICAgICAgICAgaWYgKG9rKSB7CiAgICAgICAgICAgICBtX2xheWVyUmVuZGVy
ZXJJbml0aWFsaXplZCA9IHRydWU7CiAgICAgICAgICAgICBtX2xheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXNGb3JNYWluVGhyZWFkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlckNh
cGFiaWxpdGllcygpOwpAQCAtMTYyLDcgKzE3OSw3IEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94
eTo6cmVjcmVhdGVDb250ZXh0KCkKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRo
cmVhZCBpbXBsOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVy
ZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2Nh
dG9yKCkpOwotICAgICAgICBpbml0aWFsaXplZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRp
YWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQpOworICAgICAgICBpbml0aWFsaXplZCA9IG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQsIFVudGhyb3R0
bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUoKSk7CiAgICAgICAgIGlmIChpbml0aWFsaXplZCkg
ewogICAgICAgICAgICAgbV9sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzRm9yTWFpblRocmVhZCA9
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsKICAgICAg
ICAgfQpAQCAtMjAzLDggKzIyMCwxNCBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29t
bWl0KENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdElt
cGwtPmJlZ2luQ29tbWl0KCk7CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5iZWdpbkNvbW1p
dE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKLSAgICAgICAgdXBkYXRl
ci51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBtX2xheWVyVHJlZUhvc3RJ
bXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5
ZXJSZW5kZXJlcigpLT50ZXh0dXJlQ29waWVyKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVy
UmVuZGVyZXIoKS0+dGV4dHVyZVVwbG9hZGVyKCksIG51bWVyaWNfbGltaXRzPHNpemVfdD46Om1h
eCgpKTsKLSAgICAgICAgQVNTRVJUKCF1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOworCisgICAg
ICAgIC8vIENDVGV4dHVyZVVwZGF0ZXIgaXMgbm9uLWJsb2NraW5nIGFuZCB3aWxsIHJldHVybiB3
aXRob3V0IHVwZGF0aW5nCisgICAgICAgIC8vIGFueSB0ZXh0dXJlcyBpZiB0aGUgdXBsb2FkZXIg
aXMgYnVzeS4gVGhpcyBzaG91bGRuJ3QgYmUgYSBwcm9ibGVtCisgICAgICAgIC8vIGhlcmUgYXMg
dGhlIHRocm90dGxlZCB1cGxvYWRlciBpc24ndCB1c2VkIGluIHNpbmdsZSB0aHJlYWQgbW9kZS4K
KyAgICAgICAgLy8gRm9yIGNvcnJlY3RuZXNzLCBsb29wIHVudGlsIG5vIG1vcmUgdXBkYXRlcyBh
cmUgcGVuZGluZy4KKyAgICAgICAgd2hpbGUgKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSkKKyAg
ICAgICAgICAgIHVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwg
bV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCksIG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZUNvcGllcigpLCBtX2xheWVyVHJl
ZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVVcGxvYWRlcigpLCBtYXhQYXJ0aWFs
VGV4dHVyZVVwZGF0ZXMoKSk7CisKICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c2V0Vmlz
aWJsZShtX2xheWVyVHJlZUhvc3QtPnZpc2libGUoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGUxNzQzYThjOWZkOWI0NzM5
NTNjYmNkNTJjOWRjMjU3NDYzZGExYjcuLmFiNTZkMWYzNzdhMmM2ZjhjZTViNzIzY2NkNjUxYWFl
ZTE0YmU5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC05MiwzMSAr
OTIsNDIgQEAgYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fZW50cmllcy5zaXplKCkgfHwgbV9wYXJ0aWFsRW50cmllcy5zaXplKCkgfHwg
bV9jb3B5RW50cmllcy5zaXplKCkgfHwgbV9tYW5hZ2VkQ29weUVudHJpZXMuc2l6ZSgpOwogfQog
Ci1ib29sIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBUZXh0dXJlQ29waWVyKiBjb3BpZXIsIFRl
eHR1cmVVcGxvYWRlciogdXBsb2FkZXIsIHNpemVfdCBjb3VudCkKK3ZvaWQgQ0NUZXh0dXJlVXBk
YXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9y
KiBhbGxvY2F0b3IsIFRleHR1cmVDb3BpZXIqIGNvcGllciwgVGV4dHVyZVVwbG9hZGVyKiB1cGxv
YWRlciwgc2l6ZV90IGNvdW50KQogewogICAgIHNpemVfdCBpbmRleDsKLSAgICBzaXplX3QgbWF4
SW5kZXggPSBtaW4obV9lbnRyeUluZGV4ICsgY291bnQsIG1fZW50cmllcy5zaXplKCkpOwotICAg
IGZvciAoaW5kZXggPSBtX2VudHJ5SW5kZXg7IGluZGV4IDwgbWF4SW5kZXg7ICsraW5kZXgpIHsK
LSAgICAgICAgVXBkYXRlRW50cnkmIGVudHJ5ID0gbV9lbnRyaWVzW2luZGV4XTsKLSAgICAgICAg
dXBsb2FkZXItPnVwbG9hZFRleHR1cmUoY29udGV4dCwgZW50cnkudGV4dHVyZSwgYWxsb2NhdG9y
LCBlbnRyeS5zb3VyY2VSZWN0LCBlbnRyeS5kZXN0UmVjdCk7Ci0gICAgfQogCi0gICAgYm9vbCBt
b3JlVXBkYXRlcyA9IG1heEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKTsKKyAgICBpZiAobV9lbnRy
aWVzLnNpemUoKSB8fCBtX3BhcnRpYWxFbnRyaWVzLnNpemUoKSkgeworICAgICAgICBpZiAodXBs
b2FkZXItPmlzQnVzeSgpKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKG1fcGFy
dGlhbEVudHJpZXMuc2l6ZSgpIDw9IGNvdW50KTsKLSAgICAvLyBNYWtlIHN1cmUgdGhlIG51bWJl
ciBvZiB1cGRhdGVzIGluY2x1ZGluZyBwYXJ0aWFsIHVwZGF0ZXMgYXJlIG5vdCBtb3JlCi0gICAg
Ly8gdGhhbiB8Y291bnR8LgotICAgIGlmICgoY291bnQgLSAoaW5kZXggLSBtX2VudHJ5SW5kZXgp
KSA8IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpKQotICAgICAgICBtb3JlVXBkYXRlcyA9IHRydWU7
CisgICAgICAgIHVwbG9hZGVyLT5iZWdpblVwbG9hZHMoKTsKIAotICAgIGlmIChtb3JlVXBkYXRl
cykgewotICAgICAgICBtX2VudHJ5SW5kZXggPSBpbmRleDsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQorICAgICAgICBzaXplX3QgbWF4SW5kZXggPSBtaW4obV9lbnRyeUluZGV4ICsgY291
bnQsIG1fZW50cmllcy5zaXplKCkpOworICAgICAgICBmb3IgKGluZGV4ID0gbV9lbnRyeUluZGV4
OyBpbmRleCA8IG1heEluZGV4OyArK2luZGV4KSB7CisgICAgICAgICAgICBVcGRhdGVFbnRyeSYg
ZW50cnkgPSBtX2VudHJpZXNbaW5kZXhdOworICAgICAgICAgICAgdXBsb2FkZXItPnVwbG9hZFRl
eHR1cmUoY29udGV4dCwgZW50cnkudGV4dHVyZSwgYWxsb2NhdG9yLCBlbnRyeS5zb3VyY2VSZWN0
LCBlbnRyeS5kZXN0UmVjdCk7CisgICAgICAgIH0KKworICAgICAgICBib29sIG1vcmVVcGxvYWRz
ID0gbWF4SW5kZXggPCBtX2VudHJpZXMuc2l6ZSgpOworCisgICAgICAgIEFTU0VSVChtX3BhcnRp
YWxFbnRyaWVzLnNpemUoKSA8PSBjb3VudCk7CisgICAgICAgIC8vIFdlIG5lZWQgYW5vdGhlciB1
cGRhdGUgYmF0Y2ggaWYgdGhlIG51bWJlciBvZiB1cGRhdGVzIHJlbWFpbmluZworICAgICAgICAv
LyBpbiB8Y291bnR8IGlzIGdyZWF0ZXIgdGhhbiB0aGUgcmVtYWluaW5nIHBhcnRpYWwgZW50cmll
cy4KKyAgICAgICAgaWYgKChjb3VudCAtIChpbmRleCAtIG1fZW50cnlJbmRleCkpIDwgbV9wYXJ0
aWFsRW50cmllcy5zaXplKCkpCisgICAgICAgICAgICBtb3JlVXBsb2FkcyA9IHRydWU7CisKKyAg
ICAgICAgaWYgKG1vcmVVcGxvYWRzKSB7CisgICAgICAgICAgICBtX2VudHJ5SW5kZXggPSBpbmRl
eDsKKyAgICAgICAgICAgIHVwbG9hZGVyLT5lbmRVcGxvYWRzKCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBtX3BhcnRp
YWxFbnRyaWVzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICAgICAgVXBkYXRlRW50cnkmIGVu
dHJ5ID0gbV9wYXJ0aWFsRW50cmllc1tpbmRleF07CisgICAgICAgICAgICB1cGxvYWRlci0+dXBs
b2FkVGV4dHVyZShjb250ZXh0LCBlbnRyeS50ZXh0dXJlLCBhbGxvY2F0b3IsIGVudHJ5LnNvdXJj
ZVJlY3QsIGVudHJ5LmRlc3RSZWN0KTsKKyAgICAgICAgfQogCi0gICAgZm9yIChpbmRleCA9IDA7
IGluZGV4IDwgbV9wYXJ0aWFsRW50cmllcy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgVXBk
YXRlRW50cnkmIGVudHJ5ID0gbV9wYXJ0aWFsRW50cmllc1tpbmRleF07Ci0gICAgICAgIHVwbG9h
ZGVyLT51cGxvYWRUZXh0dXJlKGNvbnRleHQsIGVudHJ5LnRleHR1cmUsIGFsbG9jYXRvciwgZW50
cnkuc291cmNlUmVjdCwgZW50cnkuZGVzdFJlY3QpOworICAgICAgICB1cGxvYWRlci0+ZW5kVXBs
b2FkcygpOwogICAgIH0KIAogICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IG1fY29weUVudHJp
ZXMuc2l6ZSgpOyArK2luZGV4KSB7CkBAIC0xMzYsNyArMTQ3LDYgQEAgYm9vbCBDQ1RleHR1cmVV
cGRhdGVyOjp1cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0
b3IqIGFsbG8KIAogICAgIC8vIElmIG5vIGVudHJpZXMgbGVmdCB0byBwcm9jZXNzLCBhdXRvLWNs
ZWFyLgogICAgIGNsZWFyKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIENDVGV4dHVy
ZVVwZGF0ZXI6OmNsZWFyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAppbmRleCAwMTUw
OGJmYTIyNDVlYjNlOGQ5MmMxMDFlMTYxMTFhYTA3M2RlZmNhLi4yNGQ4OTZmMmI1OTEyMDkwMDQx
YTQzM2YxNjY1MWQ2MjNjMGRiNjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCkBA
IC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzTW9yZVVwZGF0ZXMoKSBjb25z
dDsKIAotICAgIC8vIFVwZGF0ZSBzb21lIHRleHR1cmVzLiBSZXR1cm5zIHRydWUgaWYgbW9yZSB0
ZXh0dXJlcyBsZWZ0IHRvIHByb2Nlc3MuCi0gICAgYm9vbCB1cGRhdGUoR3JhcGhpY3NDb250ZXh0
M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgVGV4dHVyZUNvcGllciosIFRleHR1cmVVcGxvYWRlcios
IHNpemVfdCBjb3VudCk7CisgICAgLy8gVXBkYXRlIHNvbWUgdGV4dHVyZXMuCisgICAgdm9pZCB1
cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgVGV4dHVyZUNvcGll
ciosIFRleHR1cmVVcGxvYWRlciosIHNpemVfdCBjb3VudCk7CiAKICAgICB2b2lkIGNsZWFyKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggZWFmMmY4OWE5ZWQwYWQ4NjhlOWQ4
MjZlNWY4ZmEyYjQxYjBmY2ZhMi4uNGIyNThhOTI0NmI3NDUzNzhiZmQyZGIxYjg4MDljMjg2ZTA5
NjRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTgwNSw3ICs4MDUsOCBAQCB2
b2lkIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVMYXllclJlbmRlcmVyT25JbXBsVGhyZWFkKEND
Q29tcGxldGlvbkV2ZW50KiBjb21wbAogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojpp
bml0aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VS
VChpc0ltcGxUaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0
aW9uT25JbXBsVGhyZWFkKTsKLSAgICAqaW5pdGlhbGl6ZVN1Y2NlZWRlZCA9IG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKG1fY29udGV4dEJlZm9yZUluaXRpYWxp
emF0aW9uT25JbXBsVGhyZWFkLnJlbGVhc2UoKSk7CisgICAgT3duUHRyPFRleHR1cmVVcGxvYWRl
cj4gdXBsb2FkZXIgPSBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZShtX2NvbnRleHRC
ZWZvcmVJbml0aWFsaXphdGlvbk9uSW1wbFRocmVhZC5nZXQoKSk7CisgICAgKmluaXRpYWxpemVT
dWNjZWVkZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlciht
X2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbk9uSW1wbFRocmVhZC5yZWxlYXNlKCksIHVwbG9h
ZGVyLnJlbGVhc2UoKSk7CiAgICAgaWYgKCppbml0aWFsaXplU3VjY2VlZGVkKSB7CiAgICAgICAg
ICpjYXBhYmlsaXRpZXMgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzKCk7CiAgICAgICAgIGlmIChjYXBhYmlsaXRpZXMtPnVzaW5nU3dhcENvbXBsZXRlQ2Fs
bGJhY2spCkBAIC04NTUsNyArODU2LDggQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNv
bnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIEcKICAgICBU
UkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRo
cmVhZCIpOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgbV9sYXllclRyZWVIb3N0
LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKLSAgICAqcmVjcmVhdGVTdWNjZWVkZWQgPSBt
X2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihhZG9wdFJlZihjb250
ZXh0UHRyKSk7CisgICAgT3duUHRyPFRleHR1cmVVcGxvYWRlcj4gdXBsb2FkZXIgPSBUaHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZShjb250ZXh0UHRyKTsKKyAgICAqcmVjcmVhdGVTdWNj
ZWVkZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihhZG9w
dFJlZihjb250ZXh0UHRyKSwgdXBsb2FkZXIucmVsZWFzZSgpKTsKICAgICBpZiAoKnJlY3JlYXRl
U3VjY2VlZGVkKSB7CiAgICAgICAgICpjYXBhYmlsaXRpZXMgPSBtX2xheWVyVHJlZUhvc3RJbXBs
LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CiAgICAgICAgIG1fc2NoZWR1bGVyT25JbXBs
VGhyZWFkLT5kaWRSZWNyZWF0ZUNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBp
CmluZGV4IGY4NWQ5NzkyMDQyMmI0NzQ0MTIzZmY0N2NmNzM5Y2I1YThlZGM1YzMuLmNmMGE0NjAw
YmRkNzk4MmI5N2I5NWY2NDQzZTJlYzQzNGJlNjIxZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwaQpAQCAtMTI3LDYgKzEyNyw3IEBACiAgICAgICAgICAgICAndGVzdHMvU2Nyb2xsYmFy
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9UZXh0dXJlQ29waWVy
VGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1RleHR1cmVNYW5hZ2VyVGVzdC5jcHAnLAor
ICAgICAgICAgICAgJ3Rlc3RzL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlclRlc3QuY3BwJywKICAg
ICAgICAgICAgICd0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCcsCiAgICAgICAgICAg
ICAndGVzdHMvVGlsaW5nRGF0YVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9UcmVlU3lu
Y2hyb25pemVyVGVzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBmZjI0OTcwODUwZDU0ZThl
YmY2Yzc4YWUyMzFkZDE2ZmU4MDJiYmJjLi5hMDM5ZjRiOWQ2NDc0Mzc1MzAyNWI2M2Q2NWI3Mzhk
ZmMxYjE0ODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtNTEsNiArNTEsMTQgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYktpdFRlc3RzOwogCiBuYW1lc3BhY2UgewogCitjbGFzcyBGYWtlVGV4dHVyZVVw
bG9hZGVyIDogcHVibGljIFdlYkNvcmU6OlRleHR1cmVVcGxvYWRlciB7CitwdWJsaWM6CisgICAg
dmlydHVhbCBib29sIGlzQnVzeSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lk
IGJlZ2luVXBsb2FkcygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RS
ZWN0KSB7IHRleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCBzb3VyY2VSZWN0
LCBkZXN0UmVjdCk7IH0KK307CisKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QsIHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IHsKIHB1
YmxpYzoKICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCgpCkBAIC0yNTQsNyArMjYyLDcgQEAg
VEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbkJh
c2ljKQogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIG5vbkZhc3RTY3JvbGxhYmxl
UmVnaW9uV2l0aE9mZnNldCkKIHsKLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5k
ZXJlcihjcmVhdGVDb250ZXh0KCkpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJl
bmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIp
KTsKIAogICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUo
MCk7CiAgICAgcm9vdC0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsKQEAgLTQ0MCw3ICs0NDgsNyBAQCBw
cml2YXRlOgogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGRpZERyYXdOb3RDYWxs
ZWRPbkhpZGRlbkxheWVyKQogewotICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRl
cmVyKGNyZWF0ZUNvbnRleHQoKSk7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVu
ZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikp
OwogCiAgICAgLy8gRW5zdXJlIHZpc2libGVMYXllclJlY3QgZm9yIHJvb3QgbGF5ZXIgaXMgZW1w
dHkKICAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgwLCAwKSk7CkBAIC00
ODAsNyArNDg4LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkaWREcmF3Tm90
Q2FsbGVkT25IaWRkZW5MYXllcikKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBk
aWREcmF3Q2FsbGVkT25BbGxMYXllcnMpCiB7Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpKTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXpl
TGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVw
bG9hZGVyKSk7CiAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEw
KSk7CiAKICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNrTGF5ZXI6OmNy
ZWF0ZSgwKSk7CkBAIC01MzMsNyArNTQxLDcgQEAgcHJpdmF0ZToKIAogVEVTVF9GKENDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LCBwcmVwYXJlVG9EcmF3RmFpbHNXaGVuQW5pbWF0aW9uVXNlc0NoZWNr
ZXJib2FyZCkKIHsKLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVh
dGVDb250ZXh0KCkpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNy
ZWF0ZUNvbnRleHQoKSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIpKTsKICAgICBt
X2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKIAogICAgIC8vIFdo
ZW4gdGhlIHRleHR1cmUgaXMgbm90IG1pc3NpbmcsIHdlIGRyYXcgYXMgdXN1YWwuCkBAIC02NjAs
NyArNjY4LDcgQEAgcHJpdmF0ZToKIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NTc4MwogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09m
ZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogewotICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVM
YXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSk7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6
ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVV
cGxvYWRlcikpOwogICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAx
MCkpOwogCiAgICAgewpAQCAtODc4LDcgKzg4Niw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKIAogVEVTVF9GKEND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB2aWV3cG9ydENvdmVyZWQpCiB7Ci0gICAgbV9ob3N0SW1w
bC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpKTsKKyAgICBtX2hvc3RJ
bXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCksIGFkb3B0UHRyKG5l
dyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7CiAgICAgbV9ob3N0SW1wbC0+c2V0QmFja2dyb3VuZENv
bG9yKENvbG9yOjpncmF5KTsKIAogICAgIEludFNpemUgdmlld3BvcnRTaXplKDEwMDAsIDEwMDAp
OwpAQCAtOTg5LDcgKzk5Nyw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcmVz
aGFwZU5vdENhbGxlZFVudGlsRHJhdykKIHsKICAgICBSZXNoYXBlVHJhY2tlckNvbnRleHQqIHJl
c2hhcGVUcmFja2VyID0gbmV3IFJlc2hhcGVUcmFja2VyQ29udGV4dCgpOwogICAgIFJlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIocmVzaGFwZVRyYWNrZXIp
LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwotICAgIG1f
aG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQpOworICAgIG1faG9zdElt
cGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQsIGFkb3B0UHRyKG5ldyBGYWtlVGV4
dHVyZVVwbG9hZGVyKSk7CiAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUo
MTAsIDEwKSk7CiAKICAgICBDQ0xheWVySW1wbCogcm9vdCA9IG5ldyBGYWtlRHJhd2FibGVDQ0xh
eWVySW1wbCgxKTsKQEAgLTEwMzksNyArMTA0Nyw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdCwgcGFydGlhbFN3YXBSZWNlaXZlc0RhbWFnZVJlY3QpCiAgICAgQ0NTZXR0aW5ncyBz
ZXR0aW5nczsKICAgICBzZXR0aW5ncy5wYXJ0aWFsU3dhcEVuYWJsZWQgPSB0cnVlOwogICAgIE93
blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBsYXllclRyZWVIb3N0SW1wbCA9IENDTGF5ZXJUcmVl
SG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgdGhpcyk7Ci0gICAgbGF5ZXJUcmVlSG9zdEltcGwt
PmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQpOworICAgIGxheWVyVHJlZUhvc3RJbXBs
LT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LCBhZG9wdFB0cihuZXcgRmFrZVRleHR1
cmVVcGxvYWRlcigpKSk7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJ
bnRTaXplKDUwMCwgNTAwKSk7CiAKICAgICBDQ0xheWVySW1wbCogcm9vdCA9IG5ldyBGYWtlRHJh
d2FibGVDQ0xheWVySW1wbCgxKTsKQEAgLTExMjUsNyArMTEzMyw3IEBAIHByaXZhdGU6CiAKIFRF
U1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgY29udGV4dExvc3RBbmRSZXN0b3JlZE5vdGlm
aWNhdGlvblNlbnRUb0FsbExheWVycykKIHsKLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5
ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCkpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVM
YXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBs
b2FkZXIpKTsKICAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTAp
KTsKIAogICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihDb250ZXh0TG9zdE5vdGlmaWNhdGlv
bkNoZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7CkBAIC0xMTQxLDcgKzExNDksNyBAQCBURVNUX0YoQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QsIGNvbnRleHRMb3N0QW5kUmVzdG9yZWROb3RpZmljYXRpb25T
ZW50VG9BbGxMYXllcgogICAgIEVYUEVDVF9GQUxTRShsYXllcjEtPmRpZExvc2VDb250ZXh0Q2Fs
bGVkKCkpOwogICAgIEVYUEVDVF9GQUxTRShsYXllcjItPmRpZExvc2VDb250ZXh0Q2FsbGVkKCkp
OwogCi0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4
dCgpKTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250
ZXh0KCksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7CiAKICAgICBFWFBFQ1Rf
VFJVRShyb290LT5kaWRMb3NlQ29udGV4dENhbGxlZCgpKTsKICAgICBFWFBFQ1RfVFJVRShsYXll
cjEtPmRpZExvc2VDb250ZXh0Q2FsbGVkKCkpOwpAQCAtMTE1Niw3ICsxMTY0LDcgQEAgcHVibGlj
OgogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBmaW5pc2hBbGxSZW5kZXJpbmdBZnRl
ckNvbnRleHRMb3N0KQogewogICAgIC8vIFRoZSBjb250ZXh0IGluaXRpYWxpemF0aW9uIHdpbGwg
ZmFpbCwgYnV0IHdlIHNob3VsZCBzdGlsbCBiZSBhYmxlIHRvIGNhbGwgZmluaXNoQWxsUmVuZGVy
aW5nKCkgd2l0aG91dCBhbnkgaWxsIGVmZmVjdHMuCi0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6
ZUxheWVyUmVuZGVyZXIoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNE
TWFrZUN1cnJlbnRGYWlscyksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9z
dFdpbmRvdykpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQo
YWRvcHRQdHIobmV3IEZha2VXZWJHcmFwaGljc0NvbnRleHQzRE1ha2VDdXJyZW50RmFpbHMpLCBH
cmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpLCBhZG9wdFB0cihu
ZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOwogICAgIG1faG9zdEltcGwtPmZpbmlzaEFsbFJlbmRl
cmluZygpOwogfQogCkBAIC0xMTcyLDcgKzExODAsNyBAQCBwcml2YXRlOgogCiBURVNUX0YoQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbGJhckxheWVyTG9zdENvbnRleHQpCiB7Ci0gICAg
bV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpKTsKKyAg
ICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCksIGFk
b3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7CiAgICAgbV9ob3N0SW1wbC0+c2V0Vmll
d3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7CiAKICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5
ZXIoU2Nyb2xsYmFyTGF5ZXJGYWtlUGFpbnQ6OmNyZWF0ZSgwKSk7CkBAIC0xMTg5LDcgKzExOTcs
NyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbGJhckxheWVyTG9zdENv
bnRleHQpCiAgICAgICAgIC8vIFNjcm9sbGJhciBsYXllciBzaG91bGQgYWx3YXlzIGdlbmVyYXRl
IHF1YWRzLCBldmVuIGFmdGVyIGxvc3QgY29udGV4dAogICAgICAgICBFWFBFQ1RfR1QocmVuZGVy
UGFzcy0+cXVhZExpc3QoKS5zaXplKCksIDB1KTsKICAgICAgICAgbV9ob3N0SW1wbC0+ZGlkRHJh
d0FsbExheWVycyhmcmFtZSk7Ci0gICAgICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJl
bmRlcmVyKGNyZWF0ZUNvbnRleHQoKSk7CisgICAgICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVM
YXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBs
b2FkZXIpKTsKICAgICB9CiB9CiAKQEAgLTEzMjIsNyArMTMzMCw3IEBAIHByaXZhdGU6CiAKIFRF
U1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgZG9udFVzZU9sZFJlc291cmNlc0FmdGVyTG9z
dENvbnRleHQpCiB7Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3Jl
YXRlQ29udGV4dCgpKTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihj
cmVhdGVDb250ZXh0KCksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7CiAgICAg
bV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7CiAKICAgICBPd25Q
dHI8Q0NMYXllckltcGw+IHJvb3RMYXllcihDQ0xheWVySW1wbDo6Y3JlYXRlKDApKTsKQEAgLTEz
NjcsNyArMTM3NSw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgZG9udFVzZU9s
ZFJlc291cmNlc0FmdGVyTG9zdENvbnRleHQpCiAKICAgICAvLyBMb3NlIHRoZSBjb250ZXh0LCBy
ZXBsYWNpbmcgaXQgd2l0aCBhIFN0cmljdFdlYkdyYXBoaWNzQ29udGV4dDNELCB0aGF0CiAgICAg
Ly8gd2lsbCB3YXJuIGlmIGFueSByZXNvdXJjZSBmcm9tIHRoZSBwcmV2aW91cyBjb250ZXh0IGdl
dHMgdXNlZC4KLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihTdHJpY3RX
ZWJHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkpOworICAgIG1faG9z
dEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKFN0cmljdFdlYkdyYXBoaWNzQ29udGV4dDNE
OjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2Fk
ZXIpKTsKICAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7
CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgbV9ob3N0SW1wbC0+ZGlk
RHJhd0FsbExheWVycyhmcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCmluZGV4IGMwMjhlYTcyNWE2MmE2NWIzMDVl
ZjEyMTcwOWIyMWQ0ZDQzZGQ0ZjYuLjRlYjg3NWIxZWMzNzg5MWM1ODY3ODEyM2E0MWNjMzIyYzVk
ZGQ5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExh
eWVyVGVzdENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxl
ZExheWVyVGVzdENvbW1vbi5oCkBAIC0xNjEsNiArMTYxLDkgQEAgcHVibGljOgogCiBjbGFzcyBG
YWtlVGV4dHVyZVVwbG9hZGVyIDogcHVibGljIFdlYkNvcmU6OlRleHR1cmVVcGxvYWRlciB7CiBw
dWJsaWM6CisgICAgdmlydHVhbCBib29sIGlzQnVzeSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCB2b2lkIGJlZ2luVXBsb2FkcygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxv
YWRzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUqIHRleHR1cmUsIFdlYkNvcmU6OlRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0IGRlc3RS
ZWN0KSB7IHRleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCBzb3VyY2VSZWN0
LCBkZXN0UmVjdCk7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGY0NjRkY2JiY2Nl
MmUxYjQ1YzZkMDQ3ZjE2OTY1OWZmZGE4NjQ3ZjIuLmI0MjQ4NWI3MThmMDhhNTY5ZjBmMTI2ZDQ5
Y2ZmNjAwYjViY2Q3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtOTAsNiArOTAsOSBAQCBw
dWJsaWM6CiAKIGNsYXNzIE1vY2tUZXh0dXJlVXBsb2FkZXIgOiBwdWJsaWMgVGV4dHVyZVVwbG9h
ZGVyIHsKIHB1YmxpYzoKKyAgICBNT0NLX01FVEhPRDAoaXNCdXN5LCBib29sKCkpOworICAgIE1P
Q0tfTUVUSE9EMChiZWdpblVwbG9hZHMsIHZvaWQoKSk7CisgICAgTU9DS19NRVRIT0QwKGVuZFVw
bG9hZHMsIHZvaWQoKSk7CiAgICAgTU9DS19NRVRIT0Q1KHVwbG9hZFRleHR1cmUsIHZvaWQoR3Jh
cGhpY3NDb250ZXh0M0QqLCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgVGV4dHVyZUFs
bG9jYXRvciosIGNvbnN0IEludFJlY3QsIGNvbnN0IEludFJlY3QpKTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1
bVRlc3QuY3BwCmluZGV4IGRkYWIxNzU2NGM3MTVjNWE2YzQ0NDM4Mjk4MDgwZDdiYTc5YTBhZTcu
Ljc3YTk0NzA5ZGUyY2M1Njk3ZTJiNWU0NTQ3NzQ0MTk1ZWU2YmRmM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1U
ZXN0LmNwcApAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBGYWtlTGF5ZXJSZW5k
ZXJlckNocm9taXVtIDogcHVibGljIExheWVyUmVuZGVyZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0g
ICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bShMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQq
IGNsaWVudCwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkgOiBMYXllclJl
bmRlcmVyQ2hyb21pdW0oY2xpZW50LCBjb250ZXh0KSB7IH0KKyAgICBGYWtlTGF5ZXJSZW5kZXJl
ckNocm9taXVtKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRy
PEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LCBQYXNzT3duUHRyPFRleHR1cmVVcGxvYWRlcj4g
dXBsb2FkZXIpIDogTGF5ZXJSZW5kZXJlckNocm9taXVtKGNsaWVudCwgY29udGV4dCwgdXBsb2Fk
ZXIpIHsgfQogCiAgICAgLy8gTGF5ZXJSZW5kZXJlckNocm9taXVtIG1ldGhvZHMuCiAKQEAgLTEw
MCw2ICsxMDAsMTQgQEAgcHVibGljOgogICAgIHVzaW5nIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
aXNGcmFtZWJ1ZmZlckRpc2NhcmRlZDsKIH07CiAKK2NsYXNzIEZha2VUZXh0dXJlVXBsb2FkZXIg
OiBwdWJsaWMgVGV4dHVyZVVwbG9hZGVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgaXNC
dXN5KCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5VcGxvYWRzKCkg
eyB9CisgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
dXBsb2FkVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25z
dCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpIHsgdGV4dHVyZS0+
dXBkYXRlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsgfQor
fTsKKwogY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKIHByb3RlY3RlZDoKICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0KCkKQEAgLTEw
Nyw3ICsxMTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICwgbV9zdWdnZXN0SGF2ZUJhY2tidWZm
ZXJObygxLCBmYWxzZSkKICAgICAgICAgLCBtX2NvbnRleHQoR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgRnJh
bWVDb3VudGluZ01lbW9yeUFsbG9jYXRpb25TZXR0aW5nQ29udGV4dCgpKSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSkKICAgICAgICAgLCBtX21vY2tDb250
ZXh0KCpzdGF0aWNfY2FzdDxGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250
ZXh0Kj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0
M0QobV9jb250ZXh0LmdldCgpKSkpCi0gICAgICAgICwgbV9sYXllclJlbmRlcmVyQ2hyb21pdW0o
Jm1fbW9ja0NsaWVudCwgbV9jb250ZXh0LnJlbGVhc2UoKSkKKyAgICAgICAgLCBtX2xheWVyUmVu
ZGVyZXJDaHJvbWl1bSgmbV9tb2NrQ2xpZW50LCBtX2NvbnRleHQucmVsZWFzZSgpLCBhZG9wdFB0
cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcigpKSkKICAgICB7CiAgICAgfQogCkBAIC0yNzEsNyAr
Mjc5LDcgQEAgcHVibGljOgogVEVTVChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0MiwgaW5pdGlh
bGl6YXRpb25Eb2VzTm90TWFrZVN5bmNocm9ub3VzQ2FsbHMpCiB7CiAgICAgRmFrZUxheWVyUmVu
ZGVyZXJDaHJvbWl1bUNsaWVudCBtb2NrQ2xpZW50OwotICAgIEZha2VMYXllclJlbmRlcmVyQ2hy
b21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5l
dyBGb3JiaWRTeW5jaHJvbm91c0NhbGxDb250ZXh0KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRl
ckRpcmVjdGx5VG9Ib3N0V2luZG93KSk7CisgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBs
YXllclJlbmRlcmVyQ2hyb21pdW0oJm1vY2tDbGllbnQsIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZvcmJp
ZFN5bmNocm9ub3VzQ2FsbENvbnRleHQpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0
bHlUb0hvc3RXaW5kb3cpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcigpKSk7CiAK
ICAgICBFWFBFQ1RfVFJVRShsYXllclJlbmRlcmVyQ2hyb21pdW0uaW5pdGlhbGl6ZSgpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGhyb3R0bGVkVGV4dHVy
ZVVwbG9hZGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rocm90dGxl
ZFRleHR1cmVVcGxvYWRlclRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiMGRmZDA1OTIxNjljN2RiYjIx
MDNkYTE4MDljNWIzZDA1OTU4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlclRlc3QuY3BwCkBAIC0wLDAgKzEs
OTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlRo
cm90dGxlZFRleHR1cmVVcGxvYWRlci5oIgorCisjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29u
dGV4dDNELmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCisKKyNpbmNs
dWRlIDxnbW9jay9nbW9jay5oPgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIEZha2VXZWJHcmFwaGljc0NvbnRleHQz
RFdpdGhRdWVyeVRlc3RpbmcgOiBwdWJsaWMgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEIHsKK3B1
YmxpYzoKKyAgICBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoUXVlcnlUZXN0aW5nKCkgOiBt
X3Jlc3VsdEF2YWlsYWJsZSgwKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
UXVlcnlPYmplY3R1aXZFWFQoV2ViR0xJZCwgR0MzRGVudW0gdHlwZSwgR0MzRHVpbnQqIHZhbHVl
KQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgRXh0ZW5zaW9u
czNEQ2hyb21pdW06OlFVRVJZX1JFU1VMVF9BVkFJTEFCTEVfRVhUOgorICAgICAgICAgICAgKnZh
bHVlID0gbV9yZXN1bHRBdmFpbGFibGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICp2YWx1ZSA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHZvaWQgc2V0UmVzdWx0QXZhaWxhYmxlKHVuc2lnbmVkIHJlc3Vs
dEF2YWlsYWJsZSkgeyBtX3Jlc3VsdEF2YWlsYWJsZSA9IHJlc3VsdEF2YWlsYWJsZTsgfQorCitw
cml2YXRlOgorICAgIHVuc2lnbmVkIG1fcmVzdWx0QXZhaWxhYmxlOworfTsKKworVEVTVChUaHJv
dHRsZWRUZXh0dXJlVXBsb2FkZXJUZXN0LCBJc0J1c3kpCit7CisgICAgR3JhcGhpY3NDb250ZXh0
M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250
ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9t
V2ViQ29udGV4dChhZG9wdFB0cihuZXcgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFF1ZXJ5
VGVzdGluZygpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93
KTsKKyAgICBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoUXVlcnlUZXN0aW5nJiBmYWtlQ29u
dGV4dCA9ICpzdGF0aWNfY2FzdDxGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoUXVlcnlUZXN0
aW5nKj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0
M0QoY29udGV4dC5nZXQoKSkpOworICAgIE93blB0cjxUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI+
IHVwbG9hZGVyID0gVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUoY29udGV4dCwgMik7
CisKKyAgICBmYWtlQ29udGV4dC5zZXRSZXN1bHRBdmFpbGFibGUoMCk7CisgICAgRVhQRUNUX0ZB
TFNFKHVwbG9hZGVyLT5pc0J1c3koKSk7CisgICAgdXBsb2FkZXItPmJlZ2luVXBsb2FkcygpOwor
ICAgIHVwbG9hZGVyLT5lbmRVcGxvYWRzKCk7CisgICAgRVhQRUNUX0ZBTFNFKHVwbG9hZGVyLT5p
c0J1c3koKSk7CisgICAgdXBsb2FkZXItPmJlZ2luVXBsb2FkcygpOworICAgIHVwbG9hZGVyLT5l
bmRVcGxvYWRzKCk7CisgICAgRVhQRUNUX1RSVUUodXBsb2FkZXItPmlzQnVzeSgpKTsKKworICAg
IGZha2VDb250ZXh0LnNldFJlc3VsdEF2YWlsYWJsZSgxKTsKKyAgICBFWFBFQ1RfRkFMU0UodXBs
b2FkZXItPmlzQnVzeSgpKTsKKyAgICB1cGxvYWRlci0+YmVnaW5VcGxvYWRzKCk7CisgICAgdXBs
b2FkZXItPmVuZFVwbG9hZHMoKTsKKyAgICBFWFBFQ1RfRkFMU0UodXBsb2FkZXItPmlzQnVzeSgp
KTsKKyAgICB1cGxvYWRlci0+YmVnaW5VcGxvYWRzKCk7CisgICAgdXBsb2FkZXItPmVuZFVwbG9h
ZHMoKTsKKyAgICBFWFBFQ1RfRkFMU0UodXBsb2FkZXItPmlzQnVzeSgpKTsKKyAgICB1cGxvYWRl
ci0+YmVnaW5VcGxvYWRzKCk7CisgICAgdXBsb2FkZXItPmVuZFVwbG9hZHMoKTsKK30KKworfSAv
LyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGls
ZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDViN2NiMGRmNzVjOTcyNDg5Y2JjMWNlMjQ3
NzViYjRlOWM4ZjFiZDQuLmY2MWQ3NTYxMzY4ZmI5ZDQyNDU1Y2QxNTE3OGRmMWZiOWZiMjY2Zjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9t
aXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVy
Q2hyb21pdW1UZXN0LmNwcApAQCAtOTc1LDYgKzk3NSwyMCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQogICAgIH0KICAgICBjY0xheWVyVHJlZUhvc3QtPmNv
bW1pdENvbXBsZXRlKCk7CiAKKyAgICAvLyBQYXJ0YWlsIHVwZGF0ZSBvZiA0IHRpbGVzLgorICAg
IGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDUwLCA1MCwgMTAwLCAxMDApKTsKKyAgICB7
CisgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgICAgICBP
d25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUND
VGlsZWRMYXllckltcGwoMCkpKTsKKyAgICAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXll
cnModXBkYXRlcik7CisgICAgICAgIHVwZGF0ZXIudXBkYXRlKDAsICZhbGxvY2F0b3IsICZjb3Bp
ZXIsICZ1cGxvYWRlciwgNCk7CisgICAgICAgIEVYUEVDVF9FUSg0LCBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRSh1
cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOworICAgICAgICBsYXllci0+cHVzaFByb3Bl
cnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOworICAgIH0KKyAgICBjY0xheWVyVHJlZUhvc3QtPmNv
bW1pdENvbXBsZXRlKCk7CisKICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcigwKTsK
ICAgICBjY0xheWVyVHJlZUhvc3QuY2xlYXIoKTsKICAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6
OnNodXRkb3duKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140569</attachid>
            <date>2012-05-07 12:18:15 -0700</date>
            <delta_ts>2012-05-07 13:40:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81004-20120507151813.patch</filename>
            <type>text/plain</type>
            <size>54831</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzY2ZjBmMmQ3N2E2OTlm
MzAxZGU3NzM1MGEzZWMyZjM0Njc0NGJlMy4uOWNkYmM1ZDc2NjZkNjNmODViYjZjYmRjZjQzODYy
NDVhZGFkODY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEyLTA1LTA3ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBV
c2UgR0xfQ0hST01JVU1fY29tbWFuZF9idWZmZXJfcXVlcnkgdG8gdGhyb3R0bGUgdGV4dHVyZSB1
cGxvYWRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODEwMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyIGNsYXNzIHRoYXQgdXNlcyBHTF9DSFJPTUlVTV9j
b21tYW5kX2J1ZmZlcl9xdWVyeQorICAgICAgICB0byB0aHJvdHRsZSB0ZXh0dXJlIHVwbG9hZHMg
YmFzZWQgb24gbnVtYmVyIG9mIGN1cnJlbnRseSBwZW5kaW5nIHF1ZXJpZXMuCisKKyAgICAgICAg
VW5pdCB0ZXN0OiBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXJUZXN0LklzQnVzeQorCisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExh
eWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGV4dHVyZVVwbG9hZGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaDoKKyAgICAgICAgKFRleHR1cmVVcGxvYWRl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVy
ZVVwbG9hZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVlcnk6OlF1ZXJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVlcnk6On5RdWVyeSk6CisgICAgICAg
IChXZWJDb3JlOjpUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlF1ZXJ5OjpiZWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlF1ZXJ5OjplbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6aXNQZW5kaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVlcnk6Ondh
aXQpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpUaHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVw
bG9hZGVyOjp+VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRo
cm90dGxlZFRleHR1cmVVcGxvYWRlcjo6aXNCdXN5KToKKyAgICAgICAgKFdlYkNvcmU6OlRocm90
dGxlZFRleHR1cmVVcGxvYWRlcjo6YmVnaW5VcGxvYWRzKToKKyAgICAgICAgKFdlYkNvcmU6OlRo
cm90dGxlZFRleHR1cmVVcGxvYWRlcjo6ZW5kVXBsb2Fkcyk6CisgICAgICAgIChXZWJDb3JlOjpU
aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OnVwbG9hZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpwcm9jZXNzUXVlcmllcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1
cmVVcGxvYWRlci5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChUaHJvdHRsZWRUZXh0
dXJlVXBsb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
OjpjcmVhdGUpOgorICAgICAgICAoUXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6
CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFVudGhy
b3R0bGVkVGV4dHVyZVVwbG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlVudGhyb3R0bGVkVGV4
dHVyZVVwbG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VW50aHJvdHRsZWRUZXh0
dXJlVXBsb2FkZXI6On5VbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcik6CisgICAgICAgIChXZWJD
b3JlOjpVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6aXNCdXN5KToKKyAgICAgICAgKFdlYkNv
cmU6OlVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpiZWdpblVwbG9hZHMpOgorICAgICAgICAo
V2ViQ29yZTo6VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmVuZFVwbG9hZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OnVwbG9hZFRleHR1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlVudGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NTaW5nbGVUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoQ0NUZXh0
dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFVudGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlVudGhyb3R0bGVkVGV4dHVyZVVw
bG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VW50aHJvdHRsZWRUZXh0dXJlVXBs
b2FkZXI6On5VbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpV
bnRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6aXNCdXN5KToKKyAgICAgICAgKFdlYkNvcmU6OlVu
dGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpiZWdpblVwbG9hZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmVuZFVwbG9hZHMpOgorICAgICAgICAoV2Vi
Q29yZTo6VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OnVwbG9hZFRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OlVudGhyb3R0bGVkVGV4dHVy
ZVVwbG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVM
YXllclJlbmRlcmVyT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJv
eHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZCk6CisKIDIwMTItMDUtMDcgIENocmlzdG9w
aGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBt
ZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLXNuYXAtdG8tbGluZXMtbm90LXNldC5odG1s
IGZhaWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDc3MzE2NWYzNDI4YTk4MzgxMGFj
OWU3OWZiMDI0ZjMxMjViY2ZlY2EuLjljZTViMGNjOTMxODQ0ZTdhYTM2MTUxMjE5NzQ4NDgwODE3
NjUyZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTIt
MDUtMDcgIERhdmlkIFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBb
Q2hyb21pdW1dIFVzZSBHTF9DSFJPTUlVTV9jb21tYW5kX2J1ZmZlcl9xdWVyeSB0byB0aHJvdHRs
ZSB0ZXh0dXJlIHVwbG9hZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04MTAwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1RfRik6CisgICAgICAgICog
dGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZh
a2VUZXh0dXJlVXBsb2FkZXI6OmlzQnVzeSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZVRl
eHR1cmVVcGxvYWRlcjo6YmVnaW5VcGxvYWRzKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtl
VGV4dHVyZVVwbG9hZGVyOjplbmRVcGxvYWRzKToKKyAgICAgICAgKiB0ZXN0cy9DYW52YXMyRExh
eWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21p
dW1UZXN0LmNwcDoKKyAgICAgICAgKEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW06OkZha2VMYXll
clJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDo6
TGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiB0
ZXN0cy9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXJUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFF1ZXJ5VGVzdGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OkZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhRdWVyeVRl
c3Rpbmc6OkZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhRdWVyeVRlc3RpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoUXVlcnlUZXN0aW5nOjpnZXRR
dWVyeU9iamVjdHVpdkVYVCk6CisgICAgICAgIChXZWJLaXQ6OkZha2VXZWJHcmFwaGljc0NvbnRl
eHQzRFdpdGhRdWVyeVRlc3Rpbmc6OnNldFJlc3VsdEF2YWlsYWJsZSk6CisgICAgICAgIChXZWJL
aXQ6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgor
ICAgICAgICAoV1RGOjpURVNUKToKKwogMjAxMi0wNS0wNyAgS2ludWtvIFlhc3VkYSAgPGtpbnVr
b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZDogdGhlIHNhbWUgZml4IGluIGFu
b3RoZXIgZmlsZSBmb3IgY2hyb21pdW0gd2luIGJ1aWxkLiAgQWRkaW5nIFdlYkNvcmUgbmFtZXNw
YWNlIHRvIEZpbGVTeXN0ZW1UeXBlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA2NmQ4MTM0ZjI0NTQ3
MDk4ZTIwODZmNGJlODM5ZjVkNmJmNTY0NTI2Li41MWM2ZGQ3YzJlNjA5NDBlNTI4YTgwNTMzZDM4
NWY4Mjk3NDYxYzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNjAzLDggKzM2MDMsOSBAQAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVMYXllckNocm9taXVt
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5h
Z2VyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVy
ZU1hbmFnZXIuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4
dHVyZVVwbG9hZGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGV4dHVyZVVwbG9hZGVyLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tp
bmdUZXh0dXJlQWxsb2NhdG9yLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcAppbmRleCAyOGY1NzIwOTg2N2YxYTg0YjQ3YzU3ODY2ZjQ1YzRiM2Y5OGI1MTUyLi45ZjNl
ZGQwYWVmYTYzYWY4MjhiMTcxNTEzNmQ5ZDg2YTJlYWZhMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJSZW5kZXJT
dXJmYWNlQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUZXh0dXJlQ29waWVyLmgiCiAjaW5jbHVkZSAi
VGV4dHVyZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaCIK
ICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiVHJhY2tpbmdUZXh0dXJlQWxsb2Nh
dG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oIgpAQCAtMTkzLDkg
KzE5NCw5IEBAIHByaXZhdGU6CiB9OwogCiAKLVBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9t
aXVtPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZShMYXllclJlbmRlcmVyQ2hyb21pdW1D
bGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkKK1Bh
c3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNy
ZWF0ZShMYXllclJlbmRlcmVyQ2hyb21pdW1DbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4gY29udGV4dCwgUGFzc093blB0cjxUZXh0dXJlVXBsb2FkZXI+IHVwbG9h
ZGVyKQogewotICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVyUmVuZGVyZXIo
YWRvcHRQdHIobmV3IExheWVyUmVuZGVyZXJDaHJvbWl1bShjbGllbnQsIGNvbnRleHQpKSk7Cisg
ICAgT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJlcihhZG9wdFB0cihu
ZXcgTGF5ZXJSZW5kZXJlckNocm9taXVtKGNsaWVudCwgY29udGV4dCwgdXBsb2FkZXIpKSk7CiAg
ICAgaWYgKCFsYXllclJlbmRlcmVyLT5pbml0aWFsaXplKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCkBAIC0yMDMsMTEgKzIwNCwxMyBAQCBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJv
bWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoTGF5ZXJSZW5kZXJlckNocgogfQog
CiBMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bShMYXllclJlbmRl
cmVyQ2hyb21pdW1DbGllbnQqIGNsaWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUGFzc093blB0cjxUZXh0dXJlVXBsb2FkZXI+IHVwbG9hZGVyKQogICAg
IDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9jdXJyZW50UmVuZGVyU3VyZmFjZSgwKQogICAg
ICwgbV9jdXJyZW50TWFuYWdlZFRleHR1cmUoMCkKICAgICAsIG1fb2Zmc2NyZWVuRnJhbWVidWZm
ZXJJZCgwKQorICAgICwgbV90ZXh0dXJlVXBsb2FkZXIodXBsb2FkZXIpCiAgICAgLCBtX2NvbnRl
eHQoY29udGV4dCkKICAgICAsIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UoMCkKICAgICAsIG1fc2hh
cmVkR2VvbWV0cnlRdWFkKEZsb2F0UmVjdCgtMC41ZiwgLTAuNWYsIDEuMGYsIDEuMGYpKQpAQCAt
MTM3OSw3ICsxMzgyLDYgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVT
aGFyZWRPYmplY3RzKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdw
b3J0U2l6ZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9jYXBhYmlsaXRpZXMubWF4VGV4dHVyZVNpemUpOwogICAgIG1fdGV4
dHVyZUNvcGllciA9IEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKG1fY29udGV4dC5n
ZXQoKSk7Ci0gICAgbV90ZXh0dXJlVXBsb2FkZXIgPSBBY2NlbGVyYXRlZFRleHR1cmVVcGxvYWRl
cjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7CiAgICAgbV9jb250ZW50c1RleHR1cmVBbGxvY2F0
b3IgPSBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOwog
ICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IgPSBUcmFja2luZ1RleHR1cmVBbGxv
Y2F0b3I6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIGlmIChtX2NhcGFiaWxpdGllcy51
c2luZ1RleHR1cmVVc2FnZUhpbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmlu
ZGV4IDUzMGJhODQ4ZTk0NTQ2MmRmY2EyMjYzYmNmMDliNTNhZTkyNjJjODEuLmQ3M2Y3MWFlN2Qw
MTcwNWY0OTAwNjI2ZDg2N2IzNDU3OTA3NzU1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5oCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5j
bHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlRleHR1cmVDb3BpZXIuaCIKLSNpbmNsdWRlICJU
ZXh0dXJlVXBsb2FkZXIuaCIKKyNpbmNsdWRlICJUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaCIK
ICNpbmNsdWRlICJUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJjYy9DQ0xh
eWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNzgsNyArNzgsNyBA
QCBwdWJsaWM6CiBjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW0gewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKExheWVyUmVuZGVyZXJDaHJvbWl1bSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBjcmVhdGUoTGF5ZXJSZW5kZXJlckNocm9t
aXVtQ2xpZW50KiwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pOworICAgIHN0YXRpYyBQ
YXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRlKExheWVyUmVuZGVyZXJDaHJv
bWl1bUNsaWVudCosIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBQYXNzT3duUHRyPFRl
eHR1cmVVcGxvYWRlcj4pOwogCiAgICAgfkxheWVyUmVuZGVyZXJDaHJvbWl1bSgpOwogCkBAIC0x
NDQsNyArMTQ0LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZW5zdXJlRnJhbWVidWZmZXIoKTsK
ICAgICBib29sIGlzRnJhbWVidWZmZXJEaXNjYXJkZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnJh
bWVidWZmZXJEaXNjYXJkZWQ7IH0KIAotICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bShMYXllclJl
bmRlcmVyQ2hyb21pdW1DbGllbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPik7Cisg
ICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKExheWVyUmVuZGVyZXJDaHJvbWl1bUNsaWVudCosIFBh
c3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBQYXNzT3duUHRyPFRleHR1cmVVcGxvYWRlcj4p
OwogICAgIGJvb2wgaW5pdGlhbGl6ZSgpOwogCiBwcml2YXRlOgpAQCAtMjg2LDcgKzI4Niw3IEBA
IHByaXZhdGU6CiAKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fcmVuZGVyU3VyZmFjZVRl
eHR1cmVNYW5hZ2VyOwogICAgIE93blB0cjxBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI+IG1fdGV4
dHVyZUNvcGllcjsKLSAgICBPd25QdHI8QWNjZWxlcmF0ZWRUZXh0dXJlVXBsb2FkZXI+IG1fdGV4
dHVyZVVwbG9hZGVyOworICAgIE93blB0cjxUZXh0dXJlVXBsb2FkZXI+IG1fdGV4dHVyZVVwbG9h
ZGVyOwogICAgIE93blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IG1fY29udGVudHNUZXh0
dXJlQWxsb2NhdG9yOwogICAgIE93blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IG1fcmVu
ZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTZmZTBlMGNiMjA2ZjAzYTA0M2UzZDY4ZTJl
NTYxZTIxYzAxZGZjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVVcGxv
YWRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiVGV4dHVyZVVwbG9hZGVyLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotQWNjZWxlcmF0ZWRUZXh0dXJlVXBsb2FkZXI6OkFjY2VsZXJh
dGVkVGV4dHVyZVVwbG9hZGVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQp
Ci0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKLXsKLX0KLQotQWNjZWxlcmF0ZWRUZXh0dXJlVXBs
b2FkZXI6On5BY2NlbGVyYXRlZFRleHR1cmVVcGxvYWRlcigpCi17Ci19Ci0KLXZvaWQgQWNjZWxl
cmF0ZWRUZXh0dXJlVXBsb2FkZXI6OnVwbG9hZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
IGRlc3RSZWN0KQotewotICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9y
LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmgKaW5k
ZXggYWZlZDU0YTRhZWNjMDM0ZmZhZTM2MmI5ZWIxYzNlMTlkYzg4YjBhYi4uZTNiNDRmZDZiMTdm
M2YyZjk0MWE4NmYyZjJiNzQwZjI2NDUxMTQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmgKQEAg
LTMxLDI3ICszMSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRleHR1cmVVcGxv
YWRlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0QqLCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgVGV4dHVyZUFsbG9jYXRv
ciosIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkgPSAw
OwotCi1wcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+VGV4dHVyZVVwbG9hZGVyKCkgeyB9Ci19Owot
Ci1jbGFzcyBBY2NlbGVyYXRlZFRleHR1cmVVcGxvYWRlciA6IHB1YmxpYyBUZXh0dXJlVXBsb2Fk
ZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFjY2VsZXJhdGVkVGV4dHVyZVVwbG9hZGVy
KTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxBY2NlbGVyYXRlZFRleHR1cmVVcGxv
YWRlcj4gY3JlYXRlKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCi0gICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEFjY2VsZXJhdGVkVGV4dHVyZVVwbG9hZGVy
KGNvbnRleHQpKTsKLSAgICB9Ci0gICAgdmlydHVhbCB+QWNjZWxlcmF0ZWRUZXh0dXJlVXBsb2Fk
ZXIoKTsKLQotICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
KiwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25z
dCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpOwogCi1wcm90ZWN0
ZWQ6Ci0gICAgZXhwbGljaXQgQWNjZWxlcmF0ZWRUZXh0dXJlVXBsb2FkZXIoUGFzc1JlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4pOwotCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2Nv
bnRleHQ7CisgICAgdmlydHVhbCBib29sIGlzQnVzeSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
YmVnaW5VcGxvYWRzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpID0gMDsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxl
ZFRleHR1cmVVcGxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxODEzYzVj
YjU1NjFmOTA1N2MxMjkyYzhhNWQzYWFlYzJjMWUyMmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBs
b2FkZXIuY3BwCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAiVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmgiCisKKyNpbmNs
dWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgorCituYW1lc3BhY2UgeworCisvLyBOdW1iZXIg
b2YgcGVuZGluZyB0ZXh0dXJlIHVwZGF0ZSBxdWVyaWVzIHRvIGFsbG93Lgorc3RhdGljIGNvbnN0
IHNpemVfdCBtYXhQZW5kaW5nUXVlcmllcyA9IDI7CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFj
ZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Rocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVl
cnk6OlF1ZXJ5KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCisgICAgOiBt
X2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fcXVlcnlJZCgwKQoreworICAgIEV4dGVuc2lvbnMz
RENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0q
PihtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgbV9xdWVyeUlkID0gZXh0ZW5zaW9u
cy0+Y3JlYXRlUXVlcnlFWFQoKTsKK30KKworVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVy
eTo6flF1ZXJ5KCkKK3sKKyAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0
YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkpOworICAgIGV4dGVuc2lvbnMtPmRlbGV0ZVF1ZXJ5RVhUKG1fcXVlcnlJZCk7Cit9CisKK3Zv
aWQgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6YmVnaW4oKQoreworICAgIEV4dGVu
c2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hy
b21pdW0qPihtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgZXh0ZW5zaW9ucy0+YmVn
aW5RdWVyeUVYVChFeHRlbnNpb25zM0RDaHJvbWl1bTo6Q09NTUFORFNfSVNTVUVEX0NIUk9NSVVN
LCBtX3F1ZXJ5SWQpOworfQorCit2b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6UXVlcnk6
OmVuZCgpCit7CisgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNf
Y2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsK
KyAgICBleHRlbnNpb25zLT5lbmRRdWVyeUVYVChFeHRlbnNpb25zM0RDaHJvbWl1bTo6Q09NTUFO
RFNfSVNTVUVEX0NIUk9NSVVNKTsKK30KKworYm9vbCBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6
OlF1ZXJ5Ojppc1BlbmRpbmcoKQoreworICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNp
b25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKSk7CisgICAgdW5zaWduZWQgYXZhaWxhYmxlID0gMTsKKyAgICBleHRlbnNpb25z
LT5nZXRRdWVyeU9iamVjdHVpdkVYVChtX3F1ZXJ5SWQsIEV4dGVuc2lvbnMzRENocm9taXVtOjpR
VUVSWV9SRVNVTFRfQVZBSUxBQkxFX0VYVCwgJmF2YWlsYWJsZSk7CisgICAgcmV0dXJuICFhdmFp
bGFibGU7Cit9CisKK3ZvaWQgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpRdWVyeTo6d2FpdCgp
Cit7CisgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxF
eHRlbnNpb25zM0RDaHJvbWl1bSo+KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICB1
bnNpZ25lZCByZXN1bHQ7CisgICAgZXh0ZW5zaW9ucy0+Z2V0UXVlcnlPYmplY3R1aXZFWFQobV9x
dWVyeUlkLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6UVVFUllfUkVTVUxUX0VYVCwgJnJlc3VsdCk7
Cit9CisKK1Rocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQo
Y29udGV4dCkKKyAgICAsIG1fbWF4UGVuZGluZ1F1ZXJpZXMobWF4UGVuZGluZ1F1ZXJpZXMpCit7
Cit9CisKK1Rocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsIHNpemVfdCBwZW5kaW5nVXBs
b2FkTGltaXQpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fbWF4UGVuZGluZ1F1
ZXJpZXMocGVuZGluZ1VwbG9hZExpbWl0KQoreworfQorCitUaHJvdHRsZWRUZXh0dXJlVXBsb2Fk
ZXI6On5UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoKQoreworfQorCitib29sIFRocm90dGxlZFRl
eHR1cmVVcGxvYWRlcjo6aXNCdXN5KCkKK3sKKyAgICBwcm9jZXNzUXVlcmllcygpOworCisgICAg
aWYgKCFtX2F2YWlsYWJsZVF1ZXJpZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAobV9wZW5kaW5nUXVlcmllcy5zaXplKCkgPT0gbV9tYXhQZW5kaW5nUXVlcmll
cykKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBtX2F2YWlsYWJsZVF1ZXJpZXMuYXBwZW5k
KFF1ZXJ5OjpjcmVhdGUobV9jb250ZXh0KSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6YmVnaW5VcGxvYWRzKCkKK3sKKyAgICAvLyBXYWl0
IGZvciBxdWVyeSB0byBiZWNvbWUgYXZhaWxhYmxlLgorICAgIHdoaWxlIChpc0J1c3koKSkKKyAg
ICAgICAgbV9wZW5kaW5nUXVlcmllcy5maXJzdCgpLT53YWl0KCk7CisKKyAgICBBU1NFUlQoIW1f
YXZhaWxhYmxlUXVlcmllcy5pc0VtcHR5KCkpOworICAgIG1fYXZhaWxhYmxlUXVlcmllcy5maXJz
dCgpLT5iZWdpbigpOworfQorCit2b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6ZW5kVXBs
b2FkcygpCit7CisgICAgbV9hdmFpbGFibGVRdWVyaWVzLmZpcnN0KCktPmVuZCgpOworICAgIG1f
cGVuZGluZ1F1ZXJpZXMuYXBwZW5kKG1fYXZhaWxhYmxlUXVlcmllcy50YWtlRmlyc3QoKSk7Cit9
CisKK3ZvaWQgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjp1cGxvYWRUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJl
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCBkZXN0UmVjdCkKK3sKKyAgICB0ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRl
eHQsIGFsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworfQorCit2b2lkIFRocm90dGxl
ZFRleHR1cmVVcGxvYWRlcjo6cHJvY2Vzc1F1ZXJpZXMoKQoreworICAgIHdoaWxlICghbV9wZW5k
aW5nUXVlcmllcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKG1fcGVuZGluZ1F1ZXJpZXMuZmly
c3QoKS0+aXNQZW5kaW5nKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBtX2F2YWls
YWJsZVF1ZXJpZXMuYXBwZW5kKG1fcGVuZGluZ1F1ZXJpZXMudGFrZUZpcnN0KCkpOworICAgIH0K
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hNzIwNTg2NDlhYTExZWI2ZTc1Y2FlODk5YWZhZGM5NzJiYjcyYzJkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyX2gKKyNkZWZpbmUgVGhyb3R0bGVkVGV4dHVyZVVw
bG9hZGVyX2gKKworI2luY2x1ZGUgIlRleHR1cmVVcGxvYWRlci5oIgorCisjaW5jbHVkZSA8d3Rm
L0RlcXVlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGhyb3R0bGVkVGV4dHVy
ZVVwbG9hZGVyIDogcHVibGljIFRleHR1cmVVcGxvYWRlciB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c093blB0cjxUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI+IGNyZWF0ZShQYXNzUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoY29udGV4dCkpOworICAgIH0KKyAgICBzdGF0aWMg
UGFzc093blB0cjxUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI+IGNyZWF0ZShQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LCBzaXplX3QgcGVuZGluZ1VwbG9hZExpbWl0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIo
Y29udGV4dCwgcGVuZGluZ1VwbG9hZExpbWl0KSk7CisgICAgfQorICAgIHZpcnR1YWwgflRocm90
dGxlZFRleHR1cmVVcGxvYWRlcigpOworCisgICAgdmlydHVhbCBib29sIGlzQnVzeSgpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBiZWdpblVwbG9hZHMoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgZW5kVXBsb2FkcygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSos
IFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QgZGVzdFJlY3QpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIGNsYXNzIFF1ZXJ5IHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFF1ZXJ5PiBjcmVhdGUoUGFzc1Jl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IFF1
ZXJ5KGNvbnRleHQpKTsgfQorCisgICAgICAgIHZpcnR1YWwgflF1ZXJ5KCk7CisKKyAgICAgICAg
dm9pZCBiZWdpbigpOworICAgICAgICB2b2lkIGVuZCgpOworICAgICAgICBib29sIGlzUGVuZGlu
ZygpOworICAgICAgICB2b2lkIHdhaXQoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxp
Y2l0IFF1ZXJ5KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+KTsKKworICAgICAgICBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKKyAgICAgICAgdW5zaWduZWQgbV9xdWVy
eUlkOworICAgIH07CisKKyAgICBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoUGFzc1JlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4pOworICAgIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcihQYXNzUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgc2l6ZV90IHBlbmRpbmdVcGxvYWRMaW1pdCk7CisKKyAg
ICB2b2lkIHByb2Nlc3NRdWVyaWVzKCk7CisKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IG1fY29udGV4dDsKKyAgICBzaXplX3QgbV9tYXhQZW5kaW5nUXVlcmllczsKKyAgICBEZXF1ZTxP
d25QdHI8UXVlcnk+ID4gbV9wZW5kaW5nUXVlcmllczsKKyAgICBEZXF1ZTxPd25QdHI8UXVlcnk+
ID4gbV9hdmFpbGFibGVRdWVyaWVzOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggM2VhNWZiMTlhYzdiZGNkYjRkZDZmYzFlYzEx
NTk1MWVjYTQ1ZmNmZC4uMzFiZGJjMmU1ZmYxZWI5MjUyMjBmOGUzZDU1MDNmMjg0NzEyMjgwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTUzMSwxMCArNTMx
LDEwIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0VmlzaWJsZShib29sIHZpc2libGUp
CiAgICAgbV90aW1lU291cmNlQ2xpZW50QWRhcHRlci0+c2V0QWN0aXZlKHNob3VsZFRpY2tJbkJh
Y2tncm91bmQpOwogfQogCi1ib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxpemVMYXll
clJlbmRlcmVyKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCitib29sIEND
TGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsIFBhc3NPd25QdHI8VGV4dHVyZVVwbG9hZGVyPiB1cGxv
YWRlcikKIHsKICAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBsYXllclJlbmRlcmVy
OwotICAgIGxheWVyUmVuZGVyZXIgPSBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZSh0aGlz
LCBjb250ZXh0KTsKKyAgICBsYXllclJlbmRlcmVyID0gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpj
cmVhdGUodGhpcywgY29udGV4dCwgdXBsb2FkZXIpOwogCiAgICAgLy8gU2luY2Ugd2Ugbm93IGhh
dmUgYSBuZXcgY29udGV4dC9sYXllclJlbmRlcmVyLCB3ZSBjYW5ub3QgY29udGludWUgdG8gdXNl
IHRoZSBvbGQKICAgICAvLyByZXNvdXJjZXMgKGkuZS4gcmVuZGVyU3VyZmFjZXMgYW5kIHRleHR1
cmUgSURzKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCBkZGUyN2Y2
OGJhMThmNGUxOWIxZDNhNjMxOWIxMDU2N2UxYTZiNzExLi44ZjE2ZjlmZDQwNjQ3ZTlhNTNjYTgx
ZWY2YmFhZTY3OTcyY2M0MjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
CkBAIC0xMjIsNyArMTIyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5n
KCk7CiAgICAgaW50IGZyYW1lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZU51bWJlcjsg
fQogCi0gICAgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRyPEdyYXBoaWNz
Q29udGV4dDNEPik7CisgICAgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzUmVmUHRy
PEdyYXBoaWNzQ29udGV4dDNEPiwgUGFzc093blB0cjxUZXh0dXJlVXBsb2FkZXI+KTsKICAgICBi
b29sIGlzQ29udGV4dExvc3QoKTsKICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVu
ZGVyZXIoKSB7IHJldHVybiBtX2xheWVyUmVuZGVyZXIuZ2V0KCk7IH0KICAgICBjb25zdCBMYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IGIzOTczNmRkMGI0
ZTEwZGQyZDViZjUwODE4OTExNWJjM2UzYjg3OWIuLjJjNDE3ZGYxNzEzYjY4MGQ1Y2Q1ZDk0MjIw
NTdhYjM3NjIzNzI5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
CkBAIC0zNCwxMSArMzQsMjggQEAKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiB1c2lu
ZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFVudGhyb3R0
bGVkVGV4dHVyZVVwbG9hZGVyIDogcHVibGljIFRleHR1cmVVcGxvYWRlciB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIpOworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzT3duUHRyPFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyPiBjcmVhdGUoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBVbnRocm90dGxlZFRleHR1cmVVcGxv
YWRlcigpKTsKKyAgICB9CisgICAgdmlydHVhbCB+VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIo
KSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBpc0J1c3koKSB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgdm9pZCBiZWdpblVwbG9hZHMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZW5kVXBs
b2FkcygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBUZXh0
dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCBkZXN0UmVjdCkgeyB0ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIGFsbG9jYXRv
ciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBVbnRocm90dGxl
ZFRleHR1cmVVcGxvYWRlcigpIHsgfQorfTsKKwogUGFzc093blB0cjxDQ1Byb3h5PiBDQ1Npbmds
ZVRocmVhZFByb3h5OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQogewog
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NTaW5nbGVUaHJlYWRQcm94eShsYXllclRyZWVIb3N0
KSk7CkBAIC0xMzgsNyArMTU1LDcgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojppbml0aWFs
aXplTGF5ZXJSZW5kZXJlcigpCiAgICAgQVNTRVJUKG1fY29udGV4dEJlZm9yZUluaXRpYWxpemF0
aW9uKTsKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwotICAg
ICAgICBib29sIG9rID0gbV9sYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIobV9jb250ZXh0QmVmb3JlSW5pdGlhbGl6YXRpb24ucmVsZWFzZSgpKTsKKyAgICAgICAgYm9v
bCBvayA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKG1fY29u
dGV4dEJlZm9yZUluaXRpYWxpemF0aW9uLnJlbGVhc2UoKSwgVW50aHJvdHRsZWRUZXh0dXJlVXBs
b2FkZXI6OmNyZWF0ZSgpKTsKICAgICAgICAgaWYgKG9rKSB7CiAgICAgICAgICAgICBtX2xheWVy
UmVuZGVyZXJJbml0aWFsaXplZCA9IHRydWU7CiAgICAgICAgICAgICBtX2xheWVyUmVuZGVyZXJD
YXBhYmlsaXRpZXNGb3JNYWluVGhyZWFkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5k
ZXJlckNhcGFiaWxpdGllcygpOwpAQCAtMTYyLDcgKzE3OSw3IEBAIGJvb2wgQ0NTaW5nbGVUaHJl
YWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KCkKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0
SW1wbFRocmVhZCBpbXBsOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRz
VGV4dHVyZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJl
QWxsb2NhdG9yKCkpOwotICAgICAgICBpbml0aWFsaXplZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQpOworICAgICAgICBpbml0aWFsaXplZCA9
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQsIFVu
dGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUoKSk7CiAgICAgICAgIGlmIChpbml0aWFs
aXplZCkgewogICAgICAgICAgICAgbV9sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzRm9yTWFpblRo
cmVhZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsK
ICAgICAgICAgfQpAQCAtMjAzLDggKzIyMCwxNCBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6
OmRvQ29tbWl0KENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5iZWdp
bkNvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKLSAgICAgICAg
dXBkYXRlci51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBtX2xheWVyVHJl
ZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSwgbV9sYXllclRyZWVIb3N0SW1w
bC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJlQ29waWVyKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZVVwbG9hZGVyKCksIG51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpKTsKLSAgICAgICAgQVNTRVJUKCF1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwor
CisgICAgICAgIC8vIENDVGV4dHVyZVVwZGF0ZXIgaXMgbm9uLWJsb2NraW5nIGFuZCB3aWxsIHJl
dHVybiB3aXRob3V0IHVwZGF0aW5nCisgICAgICAgIC8vIGFueSB0ZXh0dXJlcyBpZiB0aGUgdXBs
b2FkZXIgaXMgYnVzeS4gVGhpcyBzaG91bGRuJ3QgYmUgYSBwcm9ibGVtCisgICAgICAgIC8vIGhl
cmUgYXMgdGhlIHRocm90dGxlZCB1cGxvYWRlciBpc24ndCB1c2VkIGluIHNpbmdsZSB0aHJlYWQg
bW9kZS4KKyAgICAgICAgLy8gRm9yIGNvcnJlY3RuZXNzLCBsb29wIHVudGlsIG5vIG1vcmUgdXBk
YXRlcyBhcmUgcGVuZGluZy4KKyAgICAgICAgd2hpbGUgKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMo
KSkKKyAgICAgICAgICAgIHVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRl
eHQoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCksIG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZUNvcGllcigpLCBtX2xh
eWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVVcGxvYWRlcigpLCBtYXhQ
YXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSk7CisKICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+
c2V0VmlzaWJsZShtX2xheWVyVHJlZUhvc3QtPnZpc2libGUoKSk7CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGUxNzQzYThjOWZk
OWI0NzM5NTNjYmNkNTJjOWRjMjU3NDYzZGExYjcuLmFiNTZkMWYzNzdhMmM2ZjhjZTViNzIzY2Nk
NjUxYWFlZTE0YmU5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC05
MiwzMSArOTIsNDIgQEAgYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcygpIGNv
bnN0CiAgICAgcmV0dXJuIG1fZW50cmllcy5zaXplKCkgfHwgbV9wYXJ0aWFsRW50cmllcy5zaXpl
KCkgfHwgbV9jb3B5RW50cmllcy5zaXplKCkgfHwgbV9tYW5hZ2VkQ29weUVudHJpZXMuc2l6ZSgp
OwogfQogCi1ib29sIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBUZXh0dXJlQ29waWVyKiBjb3Bp
ZXIsIFRleHR1cmVVcGxvYWRlciogdXBsb2FkZXIsIHNpemVfdCBjb3VudCkKK3ZvaWQgQ0NUZXh0
dXJlVXBkYXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxs
b2NhdG9yKiBhbGxvY2F0b3IsIFRleHR1cmVDb3BpZXIqIGNvcGllciwgVGV4dHVyZVVwbG9hZGVy
KiB1cGxvYWRlciwgc2l6ZV90IGNvdW50KQogewogICAgIHNpemVfdCBpbmRleDsKLSAgICBzaXpl
X3QgbWF4SW5kZXggPSBtaW4obV9lbnRyeUluZGV4ICsgY291bnQsIG1fZW50cmllcy5zaXplKCkp
OwotICAgIGZvciAoaW5kZXggPSBtX2VudHJ5SW5kZXg7IGluZGV4IDwgbWF4SW5kZXg7ICsraW5k
ZXgpIHsKLSAgICAgICAgVXBkYXRlRW50cnkmIGVudHJ5ID0gbV9lbnRyaWVzW2luZGV4XTsKLSAg
ICAgICAgdXBsb2FkZXItPnVwbG9hZFRleHR1cmUoY29udGV4dCwgZW50cnkudGV4dHVyZSwgYWxs
b2NhdG9yLCBlbnRyeS5zb3VyY2VSZWN0LCBlbnRyeS5kZXN0UmVjdCk7Ci0gICAgfQogCi0gICAg
Ym9vbCBtb3JlVXBkYXRlcyA9IG1heEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKTsKKyAgICBpZiAo
bV9lbnRyaWVzLnNpemUoKSB8fCBtX3BhcnRpYWxFbnRyaWVzLnNpemUoKSkgeworICAgICAgICBp
ZiAodXBsb2FkZXItPmlzQnVzeSgpKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJU
KG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpIDw9IGNvdW50KTsKLSAgICAvLyBNYWtlIHN1cmUgdGhl
IG51bWJlciBvZiB1cGRhdGVzIGluY2x1ZGluZyBwYXJ0aWFsIHVwZGF0ZXMgYXJlIG5vdCBtb3Jl
Ci0gICAgLy8gdGhhbiB8Y291bnR8LgotICAgIGlmICgoY291bnQgLSAoaW5kZXggLSBtX2VudHJ5
SW5kZXgpKSA8IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpKQotICAgICAgICBtb3JlVXBkYXRlcyA9
IHRydWU7CisgICAgICAgIHVwbG9hZGVyLT5iZWdpblVwbG9hZHMoKTsKIAotICAgIGlmIChtb3Jl
VXBkYXRlcykgewotICAgICAgICBtX2VudHJ5SW5kZXggPSBpbmRleDsKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQorICAgICAgICBzaXplX3QgbWF4SW5kZXggPSBtaW4obV9lbnRyeUluZGV4
ICsgY291bnQsIG1fZW50cmllcy5zaXplKCkpOworICAgICAgICBmb3IgKGluZGV4ID0gbV9lbnRy
eUluZGV4OyBpbmRleCA8IG1heEluZGV4OyArK2luZGV4KSB7CisgICAgICAgICAgICBVcGRhdGVF
bnRyeSYgZW50cnkgPSBtX2VudHJpZXNbaW5kZXhdOworICAgICAgICAgICAgdXBsb2FkZXItPnVw
bG9hZFRleHR1cmUoY29udGV4dCwgZW50cnkudGV4dHVyZSwgYWxsb2NhdG9yLCBlbnRyeS5zb3Vy
Y2VSZWN0LCBlbnRyeS5kZXN0UmVjdCk7CisgICAgICAgIH0KKworICAgICAgICBib29sIG1vcmVV
cGxvYWRzID0gbWF4SW5kZXggPCBtX2VudHJpZXMuc2l6ZSgpOworCisgICAgICAgIEFTU0VSVCht
X3BhcnRpYWxFbnRyaWVzLnNpemUoKSA8PSBjb3VudCk7CisgICAgICAgIC8vIFdlIG5lZWQgYW5v
dGhlciB1cGRhdGUgYmF0Y2ggaWYgdGhlIG51bWJlciBvZiB1cGRhdGVzIHJlbWFpbmluZworICAg
ICAgICAvLyBpbiB8Y291bnR8IGlzIGdyZWF0ZXIgdGhhbiB0aGUgcmVtYWluaW5nIHBhcnRpYWwg
ZW50cmllcy4KKyAgICAgICAgaWYgKChjb3VudCAtIChpbmRleCAtIG1fZW50cnlJbmRleCkpIDwg
bV9wYXJ0aWFsRW50cmllcy5zaXplKCkpCisgICAgICAgICAgICBtb3JlVXBsb2FkcyA9IHRydWU7
CisKKyAgICAgICAgaWYgKG1vcmVVcGxvYWRzKSB7CisgICAgICAgICAgICBtX2VudHJ5SW5kZXgg
PSBpbmRleDsKKyAgICAgICAgICAgIHVwbG9hZGVyLT5lbmRVcGxvYWRzKCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBt
X3BhcnRpYWxFbnRyaWVzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICAgICAgVXBkYXRlRW50
cnkmIGVudHJ5ID0gbV9wYXJ0aWFsRW50cmllc1tpbmRleF07CisgICAgICAgICAgICB1cGxvYWRl
ci0+dXBsb2FkVGV4dHVyZShjb250ZXh0LCBlbnRyeS50ZXh0dXJlLCBhbGxvY2F0b3IsIGVudHJ5
LnNvdXJjZVJlY3QsIGVudHJ5LmRlc3RSZWN0KTsKKyAgICAgICAgfQogCi0gICAgZm9yIChpbmRl
eCA9IDA7IGluZGV4IDwgbV9wYXJ0aWFsRW50cmllcy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAg
ICAgVXBkYXRlRW50cnkmIGVudHJ5ID0gbV9wYXJ0aWFsRW50cmllc1tpbmRleF07Ci0gICAgICAg
IHVwbG9hZGVyLT51cGxvYWRUZXh0dXJlKGNvbnRleHQsIGVudHJ5LnRleHR1cmUsIGFsbG9jYXRv
ciwgZW50cnkuc291cmNlUmVjdCwgZW50cnkuZGVzdFJlY3QpOworICAgICAgICB1cGxvYWRlci0+
ZW5kVXBsb2FkcygpOwogICAgIH0KIAogICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IG1fY29w
eUVudHJpZXMuc2l6ZSgpOyArK2luZGV4KSB7CkBAIC0xMzYsNyArMTQ3LDYgQEAgYm9vbCBDQ1Rl
eHR1cmVVcGRhdGVyOjp1cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVB
bGxvY2F0b3IqIGFsbG8KIAogICAgIC8vIElmIG5vIGVudHJpZXMgbGVmdCB0byBwcm9jZXNzLCBh
dXRvLWNsZWFyLgogICAgIGNsZWFyKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIEND
VGV4dHVyZVVwZGF0ZXI6OmNsZWFyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAppbmRl
eCAwMTUwOGJmYTIyNDVlYjNlOGQ5MmMxMDFlMTYxMTFhYTA3M2RlZmNhLi4yNGQ4OTZmMmI1OTEy
MDkwMDQxYTQzM2YxNjY1MWQ2MjNjMGRiNjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRl
ci5oCkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzTW9yZVVwZGF0ZXMo
KSBjb25zdDsKIAotICAgIC8vIFVwZGF0ZSBzb21lIHRleHR1cmVzLiBSZXR1cm5zIHRydWUgaWYg
bW9yZSB0ZXh0dXJlcyBsZWZ0IHRvIHByb2Nlc3MuCi0gICAgYm9vbCB1cGRhdGUoR3JhcGhpY3ND
b250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgVGV4dHVyZUNvcGllciosIFRleHR1cmVVcGxv
YWRlciosIHNpemVfdCBjb3VudCk7CisgICAgLy8gVXBkYXRlIHNvbWUgdGV4dHVyZXMuCisgICAg
dm9pZCB1cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgVGV4dHVy
ZUNvcGllciosIFRleHR1cmVVcGxvYWRlciosIHNpemVfdCBjb3VudCk7CiAKICAgICB2b2lkIGNs
ZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggZWFmMmY4OWE5ZWQwYWQ4
NjhlOWQ4MjZlNWY4ZmEyYjQxYjBmY2ZhMi4uMTU3ZmMxZGYwODYzYjdiZGI5N2RiZDQzZDVkMzIw
OGQzNWYzZjVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTU3LDYgKzU3LDI1
IEBAIHN0YXRpYyBjb25zdCBkb3VibGUgY29udGV4dFJlY3JlYXRpb25UaWNrUmF0ZSA9IDAuMDM7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gRklYTUU6IHJlbW92ZSB3aGVuIFRocm90dGxl
ZFRleHR1cmVVcGxvYWRlciBpcyByZWFkeSB0byBiZSB1c2VkLgorY2xhc3MgVW50aHJvdHRsZWRU
ZXh0dXJlVXBsb2FkZXIgOiBwdWJsaWMgVGV4dHVyZVVwbG9hZGVyIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcik7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI+IGNyZWF0ZShQYXNzUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcihjb250ZXh0KSk7CisgICAgfQor
ICAgIHZpcnR1YWwgflVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKCkgeyB9CisKKyAgICB2aXJ0
dWFsIGJvb2wgaXNCdXN5KCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYmVn
aW5VcGxvYWRzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3Qp
IHsgdGV4dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRl
c3RSZWN0KTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgVW50aHJvdHRsZWRUZXh0dXJl
VXBsb2FkZXIoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pIHsgfQorfTsKKwogUGFzc093
blB0cjxDQ1Byb3h5PiBDQ1RocmVhZFByb3h5OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0KiBsYXll
clRyZWVIb3N0KQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NUaHJlYWRQcm94eShsYXll
clRyZWVIb3N0KSk7CkBAIC04MDUsNyArODI0LDggQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojppbml0
aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGwK
ICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJP
bkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAg
IEFTU0VSVChtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbk9uSW1wbFRocmVhZCk7Ci0gICAg
KmluaXRpYWxpemVTdWNjZWVkZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5
ZXJSZW5kZXJlcihtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbk9uSW1wbFRocmVhZC5yZWxl
YXNlKCkpOworICAgIE93blB0cjxUZXh0dXJlVXBsb2FkZXI+IHVwbG9hZGVyID0gVW50aHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZShtX2NvbnRleHRCZWZvcmVJbml0aWFsaXphdGlvbk9u
SW1wbFRocmVhZC5nZXQoKSk7CisgICAgKmluaXRpYWxpemVTdWNjZWVkZWQgPSBtX2xheWVyVHJl
ZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihtX2NvbnRleHRCZWZvcmVJbml0aWFs
aXphdGlvbk9uSW1wbFRocmVhZC5yZWxlYXNlKCksIHVwbG9hZGVyLnJlbGVhc2UoKSk7CiAgICAg
aWYgKCppbml0aWFsaXplU3VjY2VlZGVkKSB7CiAgICAgICAgICpjYXBhYmlsaXRpZXMgPSBtX2xh
eWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CiAgICAgICAgIGlm
IChjYXBhYmlsaXRpZXMtPnVzaW5nU3dhcENvbXBsZXRlQ2FsbGJhY2spCkBAIC04NTUsNyArODc1
LDggQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIEcKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkND
VGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZCIpOwogICAgIEFTU0VSVChp
c0ltcGxUaHJlYWQoKSk7CiAgICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1
cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9j
YXRvcigpKTsKLSAgICAqcmVjcmVhdGVTdWNjZWVkZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5p
bml0aWFsaXplTGF5ZXJSZW5kZXJlcihhZG9wdFJlZihjb250ZXh0UHRyKSk7CisgICAgT3duUHRy
PFRleHR1cmVVcGxvYWRlcj4gdXBsb2FkZXIgPSBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6
Y3JlYXRlKGNvbnRleHRQdHIpOworICAgICpyZWNyZWF0ZVN1Y2NlZWRlZCA9IG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGFkb3B0UmVmKGNvbnRleHRQdHIpLCB1
cGxvYWRlci5yZWxlYXNlKCkpOwogICAgIGlmICgqcmVjcmVhdGVTdWNjZWVkZWQpIHsKICAgICAg
ICAgKmNhcGFiaWxpdGllcyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXMoKTsKICAgICAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmRpZFJlY3JlYXRl
Q29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
aSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggZjg1ZDk3OTIwNDIy
YjQ3NDQxMjNmZjQ3Y2Y3MzljYjVhOGVkYzVjMy4uY2YwYTQ2MDBiZGQ3OTgyYjk3Yjk1ZjY0NDNl
MmVjNDM0YmU2MjFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC0xMjcsNiAr
MTI3LDcgQEAKICAgICAgICAgICAgICd0ZXN0cy9TY3JvbGxiYXJMYXllckNocm9taXVtVGVzdC5j
cHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcCcsCiAgICAgICAg
ICAgICAndGVzdHMvVGV4dHVyZU1hbmFnZXJUZXN0LmNwcCcsCisgICAgICAgICAgICAndGVzdHMv
VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1Rp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9UaWxpbmdEYXRh
VGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QuY3BwCmluZGV4IGZmMjQ5NzA4NTBkNTRlOGViZjZjNzhhZTIzMWRkMTZmZTgw
MmJiYmMuLmIyYTRhNGFjOTRmNzUzZDE0MzllMTFjNTQ1YTViM2M2ZmFmYjg0NzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDQ0FuaW1hdGlvblRlc3RD
b21tb24uaCIKICNpbmNsdWRlICJDQ0xheWVyVGVzdENvbW1vbi5oIgorI2luY2x1ZGUgIkNDVGls
ZWRMYXllclRlc3RDb21tb24uaCIKICNpbmNsdWRlICJGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0Qu
aCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKICNpbmNsdWRlICJMYXll
clJlbmRlcmVyQ2hyb21pdW0uaCIKQEAgLTI1NCw3ICsyNTUsNyBAQCBURVNUX0YoQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QsIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uQmFzaWMpCiAKIFRFU1RfRihD
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgbm9uRmFzdFNjcm9sbGFibGVSZWdpb25XaXRoT2Zmc2V0
KQogewotICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRl
eHQoKSk7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29u
dGV4dCgpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOwogCiAgICAgT3duUHRy
PENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgwKTsKICAgICByb290LT5z
ZXRTY3JvbGxhYmxlKHRydWUpOwpAQCAtNDQwLDcgKzQ0MSw3IEBAIHByaXZhdGU6CiAKIFRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgZGlkRHJhd05vdENhbGxlZE9uSGlkZGVuTGF5ZXIp
CiB7Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4
dCgpKTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250
ZXh0KCksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7CiAKICAgICAvLyBFbnN1
cmUgdmlzaWJsZUxheWVyUmVjdCBmb3Igcm9vdCBsYXllciBpcyBlbXB0eQogICAgIG1faG9zdElt
cGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDAsIDApKTsKQEAgLTQ4MCw3ICs0ODEsNyBAQCBU
RVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGRpZERyYXdOb3RDYWxsZWRPbkhpZGRlbkxh
eWVyKQogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGRpZERyYXdDYWxsZWRPbkFs
bExheWVycykKIHsKLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVh
dGVDb250ZXh0KCkpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNy
ZWF0ZUNvbnRleHQoKSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIpKTsKICAgICBt
X2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKIAogICAgIG1faG9z
dEltcGwtPnNldFJvb3RMYXllcihEaWREcmF3Q2hlY2tMYXllcjo6Y3JlYXRlKDApKTsKQEAgLTUz
Myw3ICs1MzQsNyBAQCBwcml2YXRlOgogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Qs
IHByZXBhcmVUb0RyYXdGYWlsc1doZW5BbmltYXRpb25Vc2VzQ2hlY2tlcmJvYXJkKQogewotICAg
IG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSk7Cisg
ICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBh
ZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOwogICAgIG1faG9zdEltcGwtPnNldFZp
ZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwogCiAgICAgLy8gV2hlbiB0aGUgdGV4dHVyZSBp
cyBub3QgbWlzc2luZywgd2UgZHJhdyBhcyB1c3VhbC4KQEAgLTY2MCw3ICs2NjEsNyBAQCBwcml2
YXRlOgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzgzCiBU
RVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGJsZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFx
dWVMYXllcnMpCiB7Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3Jl
YXRlQ29udGV4dCgpKTsKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihj
cmVhdGVDb250ZXh0KCksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7CiAgICAg
bV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7CiAKICAgICB7CkBA
IC04NzgsNyArODc5LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGlu
Z09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QsIHZpZXdwb3J0Q292ZXJlZCkKIHsKLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5
ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCkpOworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVM
YXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBs
b2FkZXIpKTsKICAgICBtX2hvc3RJbXBsLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmdyYXkp
OwogCiAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUoMTAwMCwgMTAwMCk7CkBAIC05ODksNyArOTkw
LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCByZXNoYXBlTm90Q2FsbGVkVW50
aWxEcmF3KQogewogICAgIFJlc2hhcGVUcmFja2VyQ29udGV4dCogcmVzaGFwZVRyYWNrZXIgPSBu
ZXcgUmVzaGFwZVRyYWNrZXJDb250ZXh0KCk7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRl
eHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihyZXNoYXBlVHJhY2tlciksIEdyYXBoaWNzQ29udGV4
dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlh
bGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCk7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXIoY29udGV4dCwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIpKTsK
ICAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKIAogICAg
IENDTGF5ZXJJbXBsKiByb290ID0gbmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKDEpOwpAQCAt
MTAzOSw3ICsxMDQwLDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYXJ0aWFs
U3dhcFJlY2VpdmVzRGFtYWdlUmVjdCkKICAgICBDQ1NldHRpbmdzIHNldHRpbmdzOwogICAgIHNl
dHRpbmdzLnBhcnRpYWxTd2FwRW5hYmxlZCA9IHRydWU7CiAgICAgT3duUHRyPENDTGF5ZXJUcmVl
SG9zdEltcGw+IGxheWVyVHJlZUhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRl
KHNldHRpbmdzLCB0aGlzKTsKLSAgICBsYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIoY29udGV4dCk7CisgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXll
clJlbmRlcmVyKGNvbnRleHQsIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKCkpKTsK
ICAgICBsYXllclRyZWVIb3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoNTAwLCA1MDAp
KTsKIAogICAgIENDTGF5ZXJJbXBsKiByb290ID0gbmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBs
KDEpOwpAQCAtMTEyNSw3ICsxMTI2LDcgQEAgcHJpdmF0ZToKIAogVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LCBjb250ZXh0TG9zdEFuZFJlc3RvcmVkTm90aWZpY2F0aW9uU2VudFRvQWxs
TGF5ZXJzKQogewotICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0
ZUNvbnRleHQoKSk7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3Jl
YXRlQ29udGV4dCgpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOwogICAgIG1f
aG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwogCiAgICAgbV9ob3N0
SW1wbC0+c2V0Um9vdExheWVyKENvbnRleHRMb3N0Tm90aWZpY2F0aW9uQ2hlY2tMYXllcjo6Y3Jl
YXRlKDApKTsKQEAgLTExNDEsNyArMTE0Miw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdCwgY29udGV4dExvc3RBbmRSZXN0b3JlZE5vdGlmaWNhdGlvblNlbnRUb0FsbExheWVyCiAg
ICAgRVhQRUNUX0ZBTFNFKGxheWVyMS0+ZGlkTG9zZUNvbnRleHRDYWxsZWQoKSk7CiAgICAgRVhQ
RUNUX0ZBTFNFKGxheWVyMi0+ZGlkTG9zZUNvbnRleHRDYWxsZWQoKSk7CiAKLSAgICBtX2hvc3RJ
bXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCkpOworICAgIG1faG9z
dEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgYWRvcHRQdHIo
bmV3IEZha2VUZXh0dXJlVXBsb2FkZXIpKTsKIAogICAgIEVYUEVDVF9UUlVFKHJvb3QtPmRpZExv
c2VDb250ZXh0Q2FsbGVkKCkpOwogICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+ZGlkTG9zZUNvbnRl
eHRDYWxsZWQoKSk7CkBAIC0xMTU2LDcgKzExNTcsNyBAQCBwdWJsaWM6CiBURVNUX0YoQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QsIGZpbmlzaEFsbFJlbmRlcmluZ0FmdGVyQ29udGV4dExvc3QpCiB7
CiAgICAgLy8gVGhlIGNvbnRleHQgaW5pdGlhbGl6YXRpb24gd2lsbCBmYWlsLCBidXQgd2Ugc2hv
dWxkIHN0aWxsIGJlIGFibGUgdG8gY2FsbCBmaW5pc2hBbGxSZW5kZXJpbmcoKSB3aXRob3V0IGFu
eSBpbGwgZWZmZWN0cy4KLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250
ZXh0KGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RNYWtlQ3VycmVudEZhaWxz
KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSk7CisgICAg
bV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgRmFr
ZVdlYkdyYXBoaWNzQ29udGV4dDNETWFrZUN1cnJlbnRGYWlscyksIEdyYXBoaWNzQ29udGV4dDNE
OjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVw
bG9hZGVyKSk7CiAgICAgbV9ob3N0SW1wbC0+ZmluaXNoQWxsUmVuZGVyaW5nKCk7CiB9CiAKQEAg
LTExNzIsNyArMTE3Myw3IEBAIHByaXZhdGU6CiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdCwgc2Nyb2xsYmFyTGF5ZXJMb3N0Q29udGV4dCkKIHsKLSAgICBtX2hvc3RJbXBsLT5pbml0
aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCkpOworICAgIG1faG9zdEltcGwtPmlu
aXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgYWRvcHRQdHIobmV3IEZha2VU
ZXh0dXJlVXBsb2FkZXIpKTsKICAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6
ZSgxMCwgMTApKTsKIAogICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihTY3JvbGxiYXJMYXll
ckZha2VQYWludDo6Y3JlYXRlKDApKTsKQEAgLTExODksNyArMTE5MCw3IEBAIFRFU1RfRihDQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsYmFyTGF5ZXJMb3N0Q29udGV4dCkKICAgICAgICAg
Ly8gU2Nyb2xsYmFyIGxheWVyIHNob3VsZCBhbHdheXMgZ2VuZXJhdGUgcXVhZHMsIGV2ZW4gYWZ0
ZXIgbG9zdCBjb250ZXh0CiAgICAgICAgIEVYUEVDVF9HVChyZW5kZXJQYXNzLT5xdWFkTGlzdCgp
LnNpemUoKSwgMHUpOwogICAgICAgICBtX2hvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1l
KTsKLSAgICAgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29u
dGV4dCgpKTsKKyAgICAgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3Jl
YXRlQ29udGV4dCgpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOwogICAgIH0K
IH0KIApAQCAtMTMyMiw3ICsxMzIzLDcgQEAgcHJpdmF0ZToKIAogVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LCBkb250VXNlT2xkUmVzb3VyY2VzQWZ0ZXJMb3N0Q29udGV4dCkKIHsKLSAg
ICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCkpOwor
ICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwg
YWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIpKTsKICAgICBtX2hvc3RJbXBsLT5zZXRW
aWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKIAogICAgIE93blB0cjxDQ0xheWVySW1wbD4g
cm9vdExheWVyKENDTGF5ZXJJbXBsOjpjcmVhdGUoMCkpOwpAQCAtMTM2Nyw3ICsxMzY4LDcgQEAg
VEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkb250VXNlT2xkUmVzb3VyY2VzQWZ0ZXJM
b3N0Q29udGV4dCkKIAogICAgIC8vIExvc2UgdGhlIGNvbnRleHQsIHJlcGxhY2luZyBpdCB3aXRo
IGEgU3RyaWN0V2ViR3JhcGhpY3NDb250ZXh0M0QsIHRoYXQKICAgICAvLyB3aWxsIHdhcm4gaWYg
YW55IHJlc291cmNlIGZyb20gdGhlIHByZXZpb3VzIGNvbnRleHQgZ2V0cyB1c2VkLgotICAgIG1f
aG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKFN0cmljdFdlYkdyYXBoaWNzQ29udGV4
dDNEOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKSk7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6
ZUxheWVyUmVuZGVyZXIoU3RyaWN0V2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dCgpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOwogICAgIEVYUEVD
VF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKICAgICBtX2hvc3RJbXBs
LT5kcmF3TGF5ZXJzKGZyYW1lKTsKICAgICBtX2hvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZy
YW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExh
eWVyVGVzdENvbW1vbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5
ZXJUZXN0Q29tbW9uLmgKaW5kZXggYzAyOGVhNzI1YTYyYTY1YjMwNWVmMTIxNzA5YjIxZDRkNDNk
ZDRmNi4uNGViODc1YjFlYzM3ODkxYzU4Njc4MTIzYTQxY2MzMjJjNWRkZDlmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9u
LmgKQEAgLTE2MSw2ICsxNjEsOSBAQCBwdWJsaWM6CiAKIGNsYXNzIEZha2VUZXh0dXJlVXBsb2Fk
ZXIgOiBwdWJsaWMgV2ViQ29yZTo6VGV4dHVyZVVwbG9hZGVyIHsKIHB1YmxpYzoKKyAgICB2aXJ0
dWFsIGJvb2wgaXNCdXN5KCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYmVn
aW5VcGxvYWRzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgV2Vi
Q29yZTo6VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
IHNvdXJjZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QgZGVzdFJlY3QpIHsgdGV4dHVyZS0+
dXBkYXRlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsgfQog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExh
eWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFz
MkRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggZjQ2NGRjYmJjY2UyZTFiNDVjNmQwNDdmMTY5
NjU5ZmZkYTg2NDdmMi4uYjQyNDg1YjcxOGYwOGE1NjlmMGYxMjZkNDljZmY2MDBiNWJjZDc1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hy
b21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJE
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC05MCw2ICs5MCw5IEBAIHB1YmxpYzoKIAogY2xhc3Mg
TW9ja1RleHR1cmVVcGxvYWRlciA6IHB1YmxpYyBUZXh0dXJlVXBsb2FkZXIgewogcHVibGljOgor
ICAgIE1PQ0tfTUVUSE9EMChpc0J1c3ksIGJvb2woKSk7CisgICAgTU9DS19NRVRIT0QwKGJlZ2lu
VXBsb2Fkcywgdm9pZCgpKTsKKyAgICBNT0NLX01FVEhPRDAoZW5kVXBsb2Fkcywgdm9pZCgpKTsK
ICAgICBNT0NLX01FVEhPRDUodXBsb2FkVGV4dHVyZSwgdm9pZChHcmFwaGljc0NvbnRleHQzRCos
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3Qg
SW50UmVjdCwgY29uc3QgSW50UmVjdCkpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAKaW5kZXgg
ZGRhYjE3NTY0YzcxNWM1YTZjNDQ0MzgyOTgwODBkN2JhNzlhMGFlNy4uNjlkMGZmNWZmNTAwYjE2
ZjAyYzE2NGY5ODAxZTNkZjUzMjc2OTRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0yNSw2
ICsyNSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmgiCiAKKyNpbmNsdWRlICJDQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgiCiAjaW5jbHVk
ZSAiRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKQEAgLTM1LDYgKzM2
LDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwordXNpbmcgbmFtZXNwYWNlIFdlYktpdFRlc3RzOwogCiBjbGFzcyBGcmFtZUNvdW50aW5nTWVt
b3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0IDogcHVibGljIEZha2VXZWJHcmFwaGljc0NvbnRl
eHQzRCB7CiBwdWJsaWM6CkBAIC05MSw3ICs5Myw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEZha2VM
YXllclJlbmRlcmVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJSZW5kZXJlckNocm9taXVtIHsKIHB1
YmxpYzoKLSAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtKExheWVyUmVuZGVyZXJDaHJvbWl1
bUNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KSA6
IExheWVyUmVuZGVyZXJDaHJvbWl1bShjbGllbnQsIGNvbnRleHQpIHsgfQorICAgIEZha2VMYXll
clJlbmRlcmVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50KiBjbGllbnQsIFBh
c3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsIFBhc3NPd25QdHI8VGV4dHVyZVVw
bG9hZGVyPiB1cGxvYWRlcikgOiBMYXllclJlbmRlcmVyQ2hyb21pdW0oY2xpZW50LCBjb250ZXh0
LCB1cGxvYWRlcikgeyB9CiAKICAgICAvLyBMYXllclJlbmRlcmVyQ2hyb21pdW0gbWV0aG9kcy4K
IApAQCAtMTA3LDcgKzEwOSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgLCBtX3N1Z2dlc3RIYXZl
QmFja2J1ZmZlck5vKDEsIGZhbHNlKQogICAgICAgICAsIG1fY29udGV4dChHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRy
KG5ldyBGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0KCkpLCBHcmFw
aGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpKQogICAgICAgICAsIG1f
bW9ja0NvbnRleHQoKnN0YXRpY19jYXN0PEZyYW1lQ291bnRpbmdNZW1vcnlBbGxvY2F0aW9uU2V0
dGluZ0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGlj
c0NvbnRleHQzRChtX2NvbnRleHQuZ2V0KCkpKSkKLSAgICAgICAgLCBtX2xheWVyUmVuZGVyZXJD
aHJvbWl1bSgmbV9tb2NrQ2xpZW50LCBtX2NvbnRleHQucmVsZWFzZSgpKQorICAgICAgICAsIG1f
bGF5ZXJSZW5kZXJlckNocm9taXVtKCZtX21vY2tDbGllbnQsIG1fY29udGV4dC5yZWxlYXNlKCks
IGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKCkpKQogICAgIHsKICAgICB9CiAKQEAg
LTI3MSw3ICsyNzMsNyBAQCBwdWJsaWM6CiBURVNUKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3Qy
LCBpbml0aWFsaXphdGlvbkRvZXNOb3RNYWtlU3luY2hyb25vdXNDYWxscykKIHsKICAgICBGYWtl
TGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50IG1vY2tDbGllbnQ7Ci0gICAgRmFrZUxheWVyUmVu
ZGVyZXJDaHJvbWl1bSBsYXllclJlbmRlcmVyQ2hyb21pdW0oJm1vY2tDbGllbnQsIEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRv
cHRQdHIobmV3IEZvcmJpZFN5bmNocm9ub3VzQ2FsbENvbnRleHQpLCBHcmFwaGljc0NvbnRleHQz
RDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpKTsKKyAgICBGYWtlTGF5ZXJSZW5kZXJlckNo
cm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihu
ZXcgRm9yYmlkU3luY2hyb25vdXNDYWxsQ29udGV4dCksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5k
ZXJEaXJlY3RseVRvSG9zdFdpbmRvdyksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVy
KCkpKTsKIAogICAgIEVYUEVDVF9UUlVFKGxheWVyUmVuZGVyZXJDaHJvbWl1bS5pbml0aWFsaXpl
KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGIwZGZkMDU5MjE2
OWM3ZGJiMjEwM2RhMTgwOWM1YjNkMDU5NTg5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyVGVzdC5jcHAKQEAg
LTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5j
bHVkZSAiVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmgiCisKKyNpbmNsdWRlICJGYWtlV2ViR3Jh
cGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIK
KworI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgRmFrZVdlYkdyYXBoaWNz
Q29udGV4dDNEV2l0aFF1ZXJ5VGVzdGluZyA6IHB1YmxpYyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0
M0QgeworcHVibGljOgorICAgIEZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhRdWVyeVRlc3Rp
bmcoKSA6IG1fcmVzdWx0QXZhaWxhYmxlKDApCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCBnZXRRdWVyeU9iamVjdHVpdkVYVChXZWJHTElkLCBHQzNEZW51bSB0eXBlLCBHQzNEdWlu
dCogdmFsdWUpCisgICAgeworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBF
eHRlbnNpb25zM0RDaHJvbWl1bTo6UVVFUllfUkVTVUxUX0FWQUlMQUJMRV9FWFQ6CisgICAgICAg
ICAgICAqdmFsdWUgPSBtX3Jlc3VsdEF2YWlsYWJsZTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgKnZhbHVlID0gMDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzZXRSZXN1bHRBdmFpbGFibGUodW5zaWdu
ZWQgcmVzdWx0QXZhaWxhYmxlKSB7IG1fcmVzdWx0QXZhaWxhYmxlID0gcmVzdWx0QXZhaWxhYmxl
OyB9CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgbV9yZXN1bHRBdmFpbGFibGU7Cit9OworCitU
RVNUKFRocm90dGxlZFRleHR1cmVVcGxvYWRlclRlc3QsIElzQnVzeSkKK3sKKyAgICBHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyczsKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RX
aXRoUXVlcnlUZXN0aW5nKCkpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hv
c3RXaW5kb3cpOworICAgIEZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhRdWVyeVRlc3Rpbmcm
IGZha2VDb250ZXh0ID0gKnN0YXRpY19jYXN0PEZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhR
dWVyeVRlc3RpbmcqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGlj
c0NvbnRleHQzRChjb250ZXh0LmdldCgpKSk7CisgICAgT3duUHRyPFRocm90dGxlZFRleHR1cmVV
cGxvYWRlcj4gdXBsb2FkZXIgPSBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZShjb250
ZXh0LCAyKTsKKworICAgIGZha2VDb250ZXh0LnNldFJlc3VsdEF2YWlsYWJsZSgwKTsKKyAgICBF
WFBFQ1RfRkFMU0UodXBsb2FkZXItPmlzQnVzeSgpKTsKKyAgICB1cGxvYWRlci0+YmVnaW5VcGxv
YWRzKCk7CisgICAgdXBsb2FkZXItPmVuZFVwbG9hZHMoKTsKKyAgICBFWFBFQ1RfRkFMU0UodXBs
b2FkZXItPmlzQnVzeSgpKTsKKyAgICB1cGxvYWRlci0+YmVnaW5VcGxvYWRzKCk7CisgICAgdXBs
b2FkZXItPmVuZFVwbG9hZHMoKTsKKyAgICBFWFBFQ1RfVFJVRSh1cGxvYWRlci0+aXNCdXN5KCkp
OworCisgICAgZmFrZUNvbnRleHQuc2V0UmVzdWx0QXZhaWxhYmxlKDEpOworICAgIEVYUEVDVF9G
QUxTRSh1cGxvYWRlci0+aXNCdXN5KCkpOworICAgIHVwbG9hZGVyLT5iZWdpblVwbG9hZHMoKTsK
KyAgICB1cGxvYWRlci0+ZW5kVXBsb2FkcygpOworICAgIEVYUEVDVF9GQUxTRSh1cGxvYWRlci0+
aXNCdXN5KCkpOworICAgIHVwbG9hZGVyLT5iZWdpblVwbG9hZHMoKTsKKyAgICB1cGxvYWRlci0+
ZW5kVXBsb2FkcygpOworICAgIEVYUEVDVF9GQUxTRSh1cGxvYWRlci0+aXNCdXN5KCkpOworICAg
IHVwbG9hZGVyLT5iZWdpblVwbG9hZHMoKTsKKyAgICB1cGxvYWRlci0+ZW5kVXBsb2FkcygpOwor
fQorCit9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggNWI3Y2IwZGY3NWM5NzI0ODlj
YmMxY2UyNDc3NWJiNGU5YzhmMWJkNC4uYzkxMjVhODUyOWIxMTE4ZDhmYWYzMjUyZDIxZDczMDNi
Mjk5MzYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExh
eWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC05NTcsNyArOTU3LDcgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFsVXBkYXRlcykKICAgICB9CiAgICAgY2NMYXllclRyZWVI
b3N0LT5jb21taXRDb21wbGV0ZSgpOwogCi0gICAgLy8gUGFydGFpbCB1cGRhdGUgb2YgNiBjaGVj
a2VyYm9hcmQgdGlsZXMuCisgICAgLy8gUGFydGlhbCB1cGRhdGUgb2YgNiBjaGVja2VyYm9hcmQg
dGlsZXMuCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoNTAsIDUwLCAyMDAsIDEw
MCkpOwogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7
CkBAIC05NzUsNiArOTc1LDIwIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlh
bFVwZGF0ZXMpCiAgICAgfQogICAgIGNjTGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsK
IAorICAgIC8vIFBhcnRpYWwgdXBkYXRlIG9mIDQgdGlsZXMuCisgICAgbGF5ZXItPmludmFsaWRh
dGVSZWN0KEludFJlY3QoNTAsIDUwLCAxMDAsIDEwMCkpOworICAgIHsKKyAgICAgICAgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgICAgIE93blB0cjxGYWtlQ0NUaWxl
ZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgw
KSkpOworICAgICAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyKTsKKyAg
ICAgICAgdXBkYXRlci51cGRhdGUoMCwgJmFsbG9jYXRvciwgJmNvcGllciwgJnVwbG9hZGVyLCA0
KTsKKyAgICAgICAgRVhQRUNUX0VRKDQsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT51cGRhdGVDb3VudCgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHVwZGF0ZXIuaGFzTW9yZVVw
ZGF0ZXMoKSk7CisgICAgICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVh
clVwZGF0ZUNvdW50KCk7CisgICAgICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1w
bC5nZXQoKSk7CisgICAgfQorICAgIGNjTGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsK
KwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKDApOwogICAgIGNjTGF5ZXJUcmVl
SG9zdC5jbGVhcigpOwogICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>